UNPKG

@graphql-hive/laboratory

Version:

23,065 lines 1.32 MB
import { Ju as __toESM, Ku as __commonJSMin, a as MarkerSeverity, c as Range, d as Token, f as Uri, h as languages, i as KeyMod, l as Selection, m as editor_api_exports, n as Emitter, o as MarkerTag, p as editor, qu as __export, r as KeyCode, s as Position, t as CancellationTokenSource, u as SelectionDirection } from "./editor.api-erJ7GEVs.js";
import { A as assertInterfaceType, C as GraphQLInputObjectType, D as GraphQLObjectType, E as GraphQLNonNull, K as isOutputType, M as assertObjectType, O as GraphQLScalarType, Q as print, S as GraphQLEnumType, T as GraphQLList, a as TypeKind, at as keyValMap, c as introspectionTypes, ct as parse$1, et as visit, ft as Kind, j as assertNullableType, k as GraphQLUnionType, lt as parseValue, mt as OperationTypeNode, n as valueFromAST, p as GraphQLDirective, r as GraphQLSchema, t as registerLanguage, ut as inspect, vt as isObjectLike, w as GraphQLInterfaceType, x as specifiedScalarTypes, yt as devAssert, z as isInputType } from "./monaco-editor-PHzrpXpJ.js";
import "./monaco.contribution-fOs10zIq.js";
import "./monaco.contribution-CoVlf0Jr.js";
import ReactDOM from "react-dom/client";
import * as React$1 from "react";
import React, { Fragment, cloneElement, createContext, createElement, forwardRef, memo, useCallback, useContext, useDeferredValue, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useReducer, useRef, useState } from "react";
import * as ReactDOM$2 from "react-dom";
import ReactDOM$1, { createPortal, unstable_batchedUpdates } from "react-dom";
import { BookmarkIcon, BoxIcon, CheckIcon, ChevronDownIcon, ChevronUpIcon, CircleCheckIcon, CirclePlus, CircleXIcon, ClockIcon, CopyMinusIcon, CuboidIcon, FileIcon, FilePlus2Icon, FileTextIcon, FlaskConicalIcon, FolderClockIcon, FolderIcon, FolderOpenIcon, FolderPlusIcon, FoldersIcon, GlobeIcon, GripVerticalIcon, HistoryIcon, InfoIcon, ListTreeIcon, Loader2Icon, LockIcon, MaximizeIcon, MinimizeIcon, MoreHorizontalIcon, OctagonXIcon, PlayIcon, PowerIcon, PowerOffIcon, RefreshCcwIcon, RotateCcwIcon, ScrollTextIcon, SearchIcon, ServerIcon, SettingsIcon, SquarePenIcon, TextAlignStartIcon, TrashIcon, TriangleAlertIcon, XIcon } from "lucide-react";
import * as z$1 from "zod";
import { z } from "zod";
import { useForm } from "@tanstack/react-form";
import { format } from "date-fns";
import { createClient } from "graphql-ws";
import { compressToEncodedURIComponent, decompressFromEncodedURIComponent } from "lz-string";
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
import { __assign, __rest, __spreadArray } from "tslib";
var src_default = "/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-duration:initial;--tw-content:\"\";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-red-400:#ff6568;--color-red-500:#fb2c36;--color-orange-400:#ff8b1a;--color-amber-400:#fcbb00;--color-yellow-400:#fac800;--color-yellow-500:#edb200;--color-lime-400:#9de500;--color-green-400:#05df72;--color-green-500:#00c758;--color-teal-400:#00d3bd;--color-blue-400:#54a2ff;--color-indigo-400:#7d87ff;--color-pink-500:#f6339a;--color-rose-400:#ff667f;--color-gray-400:#99a1af;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-xs:.125rem;--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-accent:hsl(var(--accent));--color-ring:hsl(var(--ring))}@supports (color:lab(0% 0 0)){:root,:host{--color-red-400:lab(63.7053% 60.745 31.3109);--color-red-500:lab(55.4814% 75.0732 48.8528);--color-orange-400:lab(70.0429% 42.5156 75.8207);--color-amber-400:lab(80.1641% 16.6016 99.2089);--color-yellow-400:lab(83.2664% 8.65132 106.895);--color-yellow-500:lab(76.3898% 14.5258 98.4589);--color-lime-400:lab(83.7876% -45.0447 88.4738);--color-green-400:lab(78.503% -64.9264 39.7492);--color-green-500:lab(70.5521% -66.5147 45.8073);--color-teal-400:lab(76.0109% -53.3483 -2.27906);--color-blue-400:lab(65.0361% -1.42065 -56.9802);--color-indigo-400:lab(59.866% 22.4834 -64.4485);--color-pink-500:lab(56.9303% 76.8162 -8.07021);--color-rose-400:lab(64.4124% 63.0291 19.2068);--color-gray-400:lab(65.9269% -.832677 -8.17474)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components{*{--tw-border-style:solid;--tw-translate-x:0;--tw-translate-y:0;outline-color:hsl(var(--ring))}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab,hsl(var(--ring))50%,transparent)}}*,:after,:before,::backdrop{border:0 solid hsl(var(--border))}}@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1\\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.top-\\[50\\%\\]{top:50%}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.right-5{right:calc(var(--spacing)*5)}.bottom-0{bottom:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.left-2{left:calc(var(--spacing)*2)}.left-5{left:calc(var(--spacing)*5)}.left-\\[50\\%\\]{left:50%}.-z-10{z-index:calc(10*-1)}.-z-20{z-index:calc(20*-1)}.z-0{z-index:0}.z-10{z-index:10}.z-50{z-index:50}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0\\!{margin:calc(var(--spacing)*0)!important}.-mx-0\\.5{margin-inline:calc(var(--spacing)*-.5)}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-auto{margin-inline:auto}.-my-2{margin-block:calc(var(--spacing)*-2)}.my-1{margin-block:calc(var(--spacing)*1)}.mt-auto{margin-top:auto}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-px{margin-bottom:1px}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-2\\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-full{width:100%;height:100%}.h-2\\.5{height:calc(var(--spacing)*2.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-96{height:calc(var(--spacing)*96)}.h-\\[1\\.15rem\\]{height:1.15rem}.h-\\[49\\.5px\\]{height:49.5px}.h-\\[calc\\(100\\%-1px\\)\\]{height:calc(100% - 1px)}.h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-\\(--radix-context-menu-content-available-height\\){max-height:var(--radix-context-menu-content-available-height)}.max-h-\\[300px\\]{max-height:300px}.max-h-\\[var\\(--radix-select-content-available-height\\)\\]{max-height:var(--radix-select-content-available-height)}.min-h-16{min-height:calc(var(--spacing)*16)}.w-2\\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-8{width:calc(var(--spacing)*8)}.w-12{width:calc(var(--spacing)*12)}.w-56{width:calc(var(--spacing)*56)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\\[calc\\(100\\%-2rem\\)\\]{max-width:calc(100% - 2rem)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-8{min-width:calc(var(--spacing)*8)}.min-w-9{min-width:calc(var(--spacing)*9)}.min-w-10{min-width:calc(var(--spacing)*10)}.min-w-\\[8rem\\]{min-width:8rem}.min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow-0{flex-grow:0}.origin-\\(--radix-context-menu-content-transform-origin\\){transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\\[var\\(--radix-dropdown-menu-content-transform-origin\\)\\]{transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\\[var\\(--radix-select-content-transform-origin\\)\\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\\[var\\(--radix-tooltip-content-transform-origin\\)\\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.translate-x-\\[-50\\%\\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[-50\\%\\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[calc\\(-50\\%_-_2px\\)\\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing)*1)}.list-disc{list-style-type:disc}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.grid-rows-\\[auto_1fr\\]{grid-template-rows:auto 1fr}.grid-rows-\\[auto_auto\\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.place-content-center{place-content:center}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing)*0)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-7{gap:calc(var(--spacing)*7)}.gap-\\[--spacing\\(var\\(--gap\\)\\)\\]{gap:calc(var(--spacing)*var(--gap))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-\\[2px\\]{border-radius:2px}.rounded-\\[4px\\]{border-radius:4px}.rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\]{border-radius:calc(var(--radius) - 5px)}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.\\!rounded-l-none{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.\\!rounded-l-sm{border-top-left-radius:calc(var(--radius) - 4px)!important;border-bottom-left-radius:calc(var(--radius) - 4px)!important}.\\!rounded-r-none{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.\\!rounded-r-sm{border-top-right-radius:calc(var(--radius) - 4px)!important;border-bottom-right-radius:calc(var(--radius) - 4px)!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-border{border-color:hsl(var(--border))}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-accent\\/50{background-color:hsl(var(--accent))}@supports (color:color-mix(in lab, red, red)){.bg-accent\\/50{background-color:color-mix(in oklab,hsl(var(--accent))50%,transparent)}}.bg-background{background-color:hsl(var(--background))}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive\\/60{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.bg-destructive\\/60{background-color:color-mix(in oklab,hsl(var(--destructive))60%,transparent)}}.bg-foreground{background-color:hsl(var(--foreground))}.bg-green-400\\/10{background-color:#05df721a}@supports (color:color-mix(in lab, red, red)){.bg-green-400\\/10{background-color:color-mix(in oklab,var(--color-green-400)10%,transparent)}}.bg-input,.bg-input\\/30{background-color:hsl(var(--input))}@supports (color:color-mix(in lab, red, red)){.bg-input\\/30{background-color:color-mix(in oklab,hsl(var(--input))30%,transparent)}}.bg-muted{background-color:hsl(var(--muted))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-red-400\\/10{background-color:#ff65681a}@supports (color:color-mix(in lab, red, red)){.bg-red-400\\/10{background-color:color-mix(in oklab,var(--color-red-400)10%,transparent)}}.bg-secondary{background-color:hsl(var(--secondary))}.bg-transparent{background-color:#0000}.fill-current{fill:currentColor}.fill-foreground{fill:hsl(var(--foreground))}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-1\\!{padding:calc(var(--spacing)*1)!important}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-6{padding:calc(var(--spacing)*6)}.p-\\[3px\\]{padding:3px}.p-px{padding:1px}.px-0\\!{padding-inline:calc(var(--spacing)*0)!important}.px-0\\.5{padding-inline:calc(var(--spacing)*.5)}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-7{padding-inline:calc(var(--spacing)*7)}.py-0{padding-block:calc(var(--spacing)*0)}.py-0\\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-6{padding-block:calc(var(--spacing)*6)}.pt-3{padding-top:calc(var(--spacing)*3)}.pr-0{padding-right:calc(var(--spacing)*0)}.pr-0\\!{padding-right:calc(var(--spacing)*0)!important}.pr-1\\.5{padding-right:calc(var(--spacing)*1.5)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-0{padding-bottom:calc(var(--spacing)*0)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pl-1{padding-left:calc(var(--spacing)*1)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\\/relaxed{font-size:var(--text-sm);line-height:var(--leading-relaxed)}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.\\!text-white{color:var(--color-white)!important}.text-amber-400{color:var(--color-amber-400)}.text-background{color:hsl(var(--background))}.text-blue-400{color:var(--color-blue-400)}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-destructive{color:hsl(var(--destructive))}.text-foreground{color:hsl(var(--foreground))}.text-gray-400{color:var(--color-gray-400)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-indigo-400{color:var(--color-indigo-400)}.text-lime-400{color:var(--color-lime-400)}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\\!{color:hsl(var(--muted-foreground))!important}.text-orange-400{color:var(--color-orange-400)}.text-pink-500{color:var(--color-pink-500)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-rose-400{color:var(--color-rose-400)}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-teal-400{color:var(--color-teal-400)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.capitalize{text-transform:capitalize}.italic{font-style:italic}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-\\[color\\,box-shadow\\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.running{animation-play-state:running}@media (hover:hover){.group-hover\\:bg-accent\\/50:is(:where(.group):hover *){background-color:hsl(var(--accent))}@supports (color:color-mix(in lab, red, red)){.group-hover\\:bg-accent\\/50:is(:where(.group):hover *){background-color:color-mix(in oklab,hsl(var(--accent))50%,transparent)}}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-has-\\[\\[data-orientation\\=horizontal\\]\\]\\/field\\:text-balance:is(:where(.group\\/field):has([data-orientation=horizontal]) *){text-wrap:balance}.group-has-\\[\\>input\\]\\/input-group\\:pt-2\\.5:is(:where(.group\\/input-group):has(>input) *){padding-top:calc(var(--spacing)*2.5)}.group-has-\\[\\>input\\]\\/input-group\\:pb-2\\.5:is(:where(.group\\/input-group):has(>input) *){padding-bottom:calc(var(--spacing)*2.5)}.group-data-\\[disabled\\=true\\]\\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\\[disabled\\=true\\]\\:opacity-50:is(:where(.group)[data-disabled=true] *),.group-data-\\[disabled\\=true\\]\\/field\\:opacity-50:is(:where(.group\\/field)[data-disabled=true] *),.group-data-\\[disabled\\=true\\]\\/input-group\\:opacity-50:is(:where(.group\\/input-group)[data-disabled=true] *){opacity:.5}.group-data-\\[variant\\=outline\\]\\/field-group\\:-mb-2:is(:where(.group\\/field-group)[data-variant=outline] *){margin-bottom:calc(var(--spacing)*-2)}.peer-disabled\\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.selection\\:bg-primary ::selection,.selection\\:bg-primary::selection{background-color:hsl(var(--primary))}.selection\\:text-primary-foreground ::selection,.selection\\:text-primary-foreground::selection{color:hsl(var(--primary-foreground))}.file\\:inline-flex::file-selector-button{display:inline-flex}.file\\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\\:bg-transparent::file-selector-button{background-color:#0000}.file\\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\\:left-1\\/2:after{content:var(--tw-content);left:50%}.after\\:w-1:after{content:var(--tw-content);width:calc(var(--spacing)*1)}.after\\:-translate-x-1\\/2:after{content:var(--tw-content);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.last\\:mt-0:last-child{margin-top:calc(var(--spacing)*0)}@media (hover:hover){.hover\\:bg-accent:hover,.hover\\:bg-accent\\/50:hover{background-color:hsl(var(--accent))}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/50:hover{background-color:color-mix(in oklab,hsl(var(--accent))50%,transparent)}}.hover\\:bg-destructive\\/90:hover{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/90:hover{background-color:color-mix(in oklab,hsl(var(--destructive))90%,transparent)}}.hover\\:bg-input\\/50:hover{background-color:hsl(var(--input))}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-input\\/50:hover{background-color:color-mix(in oklab,hsl(var(--input))50%,transparent)}}.hover\\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\\:bg-primary\\/90:hover{background-color:hsl(var(--primary))}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab,hsl(var(--primary))90%,transparent)}}.hover\\:bg-secondary\\/80:hover{background-color:hsl(var(--secondary))}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-secondary\\/80:hover{background-color:color-mix(in oklab,hsl(var(--secondary))80%,transparent)}}.hover\\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\\:text-destructive:hover{color:hsl(var(--destructive))}.hover\\:text-foreground:hover{color:hsl(var(--foreground))}.hover\\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\\:text-primary:hover{color:hsl(var(--primary))}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-100:hover{opacity:1}}.focus\\:z-10:focus{z-index:10}.focus\\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\\:z-10:focus-visible{z-index:10}.focus-visible\\:border-ring:focus-visible{border-color:hsl(var(--ring))}.focus-visible\\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-\\[3px\\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-destructive\\/40:focus-visible{--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-destructive\\/40:focus-visible{--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))40%,transparent)}}.focus-visible\\:ring-ring:focus-visible,.focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:hsl(var(--ring))}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:color-mix(in oklab,hsl(var(--ring))50%,transparent)}}.focus-visible\\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-visible\\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.focus-visible\\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-ring:focus-visible{outline-color:hsl(var(--ring))}:is(.\\*\\:focus-visible\\:relative>*):focus-visible{position:relative}:is(.\\*\\:focus-visible\\:z-10>*):focus-visible{z-index:10}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:hsl(var(--ring))}.has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-\\[3px\\]:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:hsl(var(--ring))}@supports (color:color-mix(in lab, red, red)){.has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab,hsl(var(--ring))50%,transparent)}}.has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:border-destructive:has([data-slot][aria-invalid=true]){border-color:hsl(var(--destructive))}.has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))20%,transparent)}}.has-\\[\\>\\[data-align\\=block-end\\]\\]\\:h-auto:has(>[data-align=block-end]){height:auto}.has-\\[\\>\\[data-align\\=block-end\\]\\]\\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\\[\\>\\[data-align\\=block-start\\]\\]\\:h-auto:has(>[data-align=block-start]){height:auto}.has-\\[\\>\\[data-align\\=block-start\\]\\]\\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\\[\\>\\[data-slot\\=button-group\\]\\]\\:gap-2:has(>[data-slot=button-group]){gap:calc(var(--spacing)*2)}.has-\\[\\>\\[data-slot\\=card-action\\]\\]\\:grid-cols-\\[1fr_auto\\]:has(>[data-slot=card-action]){grid-template-columns:1fr auto}.has-\\[\\>\\[data-slot\\=checkbox-group\\]\\]\\:gap-3:has(>[data-slot=checkbox-group]){gap:calc(var(--spacing)*3)}.has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:items-start:has(>[data-slot=field-content]){align-items:flex-start}.has-\\[\\>\\[data-slot\\=field\\]\\]\\:w-full:has(>[data-slot=field]){width:100%}.has-\\[\\>\\[data-slot\\=field\\]\\]\\:flex-col:has(>[data-slot=field]){flex-direction:column}.has-\\[\\>\\[data-slot\\=field\\]\\]\\:rounded-md:has(>[data-slot=field]){border-radius:calc(var(--radius) - 2px)}.has-\\[\\>\\[data-slot\\=field\\]\\]\\:border:has(>[data-slot=field]){border-style:var(--tw-border-style);border-width:1px}.has-\\[\\>\\[data-slot\\=radio-group\\]\\]\\:gap-3:has(>[data-slot=radio-group]){gap:calc(var(--spacing)*3)}.has-\\[\\>\\[data-state\\=checked\\]\\]\\:border-primary:has(>[data-state=checked]){border-color:hsl(var(--primary))}.has-\\[\\>\\[data-state\\=checked\\]\\]\\:bg-primary\\/10:has(>[data-state=checked]){background-color:hsl(var(--primary))}@supports (color:color-mix(in lab, red, red)){.has-\\[\\>\\[data-state\\=checked\\]\\]\\:bg-primary\\/10:has(>[data-state=checked]){background-color:color-mix(in oklab,hsl(var(--primary))10%,transparent)}}.has-\\[\\>button\\]\\:mr-\\[-0\\.45rem\\]:has(>button){margin-right:-.45rem}.has-\\[\\>button\\]\\:ml-\\[-0\\.45rem\\]:has(>button){margin-left:-.45rem}.has-\\[\\>kbd\\]\\:mr-\\[-0\\.35rem\\]:has(>kbd){margin-right:-.35rem}.has-\\[\\>kbd\\]\\:ml-\\[-0\\.35rem\\]:has(>kbd){margin-left:-.35rem}.has-\\[\\>svg\\]\\:p-0:has(>svg){padding:calc(var(--spacing)*0)}.has-\\[\\>svg\\]\\:px-2:has(>svg){padding-inline:calc(var(--spacing)*2)}.has-\\[\\>svg\\]\\:px-2\\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\\[\\>svg\\]\\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\\[\\>svg\\]\\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.has-\\[\\>textarea\\]\\:h-auto:has(>textarea){height:auto}.aria-invalid\\:border-destructive[aria-invalid=true]{border-color:hsl(var(--destructive))}.aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))20%,transparent)}}.aria-invalid\\:ring-destructive\\/40[aria-invalid=true]{--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.aria-invalid\\:ring-destructive\\/40[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))40%,transparent)}}.data-disabled\\:pointer-events-none[data-disabled]{pointer-events:none}.data-disabled\\:opacity-50[data-disabled]{opacity:.5}.data-dragging\\:cursor-grabbing[data-dragging]{cursor:grabbing}.data-dragging\\:opacity-0[data-dragging]{opacity:0}.data-inset\\:pl-8[data-inset]{padding-left:calc(var(--spacing)*8)}.data-placeholder\\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\\[disabled\\=true\\]\\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\\[disabled\\=true\\]\\:opacity-50[data-disabled=true]{opacity:.5}.data-\\[invalid\\=true\\]\\:text-destructive[data-invalid=true]{color:hsl(var(--destructive))}.data-\\[orientation\\=horizontal\\]\\:h-px[data-orientation=horizontal]{height:1px}.data-\\[orientation\\=horizontal\\]\\:w-full[data-orientation=horizontal]{width:100%}.data-\\[orientation\\=vertical\\]\\:h-auto[data-orientation=vertical]{height:auto}.data-\\[orientation\\=vertical\\]\\:h-full[data-orientation=vertical]{height:100%}.data-\\[orientation\\=vertical\\]\\:w-px[data-orientation=vertical]{width:1px}.data-\\[panel-group-direction\\=vertical\\]\\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\\[panel-group-direction\\=vertical\\]\\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\\[panel-group-direction\\=vertical\\]\\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\\[panel-group-direction\\=vertical\\]\\:after\\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:calc(var(--spacing)*0)}.data-\\[panel-group-direction\\=vertical\\]\\:after\\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:calc(var(--spacing)*1)}.data-\\[panel-group-direction\\=vertical\\]\\:after\\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\\[panel-group-direction\\=vertical\\]\\:after\\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[panel-group-direction\\=vertical\\]\\:after\\:-translate-y-1\\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[selected\\=true\\]\\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\\[selected\\=true\\]\\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\\[size\\=default\\]\\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\\[size\\=sm\\]\\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}.data-\\[slot\\=checkbox-group\\]\\:gap-3[data-slot=checkbox-group]{gap:calc(var(--spacing)*3)}:is(.\\*\\*\\:data-\\[slot\\=command-input-wrapper\\]\\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing)*12)}:is(.\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\\*\\:data-\\[slot\\=select-value\\]\\:flex>*)[data-slot=select-value]{display:flex}:is(.\\*\\:data-\\[slot\\=select-value\\]\\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\\*\\:data-\\[slot\\=select-value\\]\\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\\[spacing\\=0\\]\\:rounded-none[data-spacing=\"0\"]{border-radius:0}.data-\\[spacing\\=0\\]\\:shadow-none[data-spacing=\"0\"]{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\\[spacing\\=0\\]\\:first\\:rounded-l-md[data-spacing=\"0\"]:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\\[spacing\\=0\\]\\:last\\:rounded-r-md[data-spacing=\"0\"]:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\\[state\\=active\\]\\:border-input[data-state=active]{border-color:hsl(var(--input))}.data-\\[state\\=active\\]\\:bg-input\\/30[data-state=active]{background-color:hsl(var(--input))}@supports (color:color-mix(in lab, red, red)){.data-\\[state\\=active\\]\\:bg-input\\/30[data-state=active]{background-color:color-mix(in oklab,hsl(var(--input))30%,transparent)}}.data-\\[state\\=active\\]\\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\\[state\\=active\\]\\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\\[state\\=checked\\]\\:translate-x-\\[calc\\(100\\%-2px\\)\\][data-state=checked]{--tw-translate-x:calc(100% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[state\\=checked\\]\\:border-primary[data-state=checked]{border-color:hsl(var(--primary))}.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\\[state\\=checked\\]\\:bg-primary-foreground[data-state=checked]{background-color:hsl(var(--primary-foreground))}.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\\[state\\=closed\\]\\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=on\\]\\:bg-accent[data-state=on]{background-color:hsl(var(--accent))}.data-\\[state\\=on\\]\\:bg-transparent[data-state=on]{background-color:#0000}.data-\\[state\\=on\\]\\:text-accent-foreground[data-state=on]{color:hsl(var(--accent-foreground))}.data-\\[state\\=open\\]\\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\\[state\\=open\\]\\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\\[state\\=open\\]\\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\\[state\\=open\\]\\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\\[state\\=unchecked\\]\\:bg-foreground[data-state=unchecked]{background-color:hsl(var(--foreground))}.data-\\[state\\=unchecked\\]\\:bg-input\\/80[data-state=unchecked]{background-color:hsl(var(--input))}@supports (color:color-mix(in lab, red, red)){.data-\\[state\\=unchecked\\]\\:bg-input\\/80[data-state=unchecked]{background-color:color-mix(in oklab,hsl(var(--input))80%,transparent)}}.data-\\[variant\\=destructive\\]\\:text-destructive[data-variant=destructive]{color:hsl(var(--destructive))}.data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20[data-variant=destructive]:focus{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20[data-variant=destructive]:focus{background-color:color-mix(in oklab,hsl(var(--destructive))20%,transparent)}}.data-\\[variant\\=destructive\\]\\:focus\\:text-destructive[data-variant=destructive]:focus{color:hsl(var(--destructive))}.data-\\[variant\\=label\\]\\:text-sm[data-variant=label]{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.data-\\[variant\\=legend\\]\\:text-base[data-variant=legend]{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:border-l-0[data-spacing=\"0\"][data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:first\\:border-l[data-spacing=\"0\"][data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\\[spacing\\=default\\]\\:data-\\[variant\\=outline\\]\\:shadow-xs[data-spacing=default][data-variant=outline]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.nth-last-2\\:-mt-1:nth-last-child(2){margin-top:calc(var(--spacing)*-1)}@media (min-width:40rem){.sm\\:max-w-\\[425px\\]{max-width:425px}.sm\\:max-w-lg{max-width:var(--container-lg)}.sm\\:flex-row{flex-direction:row}.sm\\:justify-end{justify-content:flex-end}.sm\\:text-left{text-align:left}}@media (min-width:48rem){.md\\:p-12{padding:calc(var(--spacing)*12)}.md\\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@container field-group (width>=28rem){.\\@md\\/field-group\\:flex-row{flex-direction:row}.\\@md\\/field-group\\:items-center{align-items:center}.\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:items-start:has(>[data-slot=field-content]){align-items:flex-start}}@media (prefers-color-scheme:dark){.dark\\:bg-input\\/30{background-color:hsl(var(--input))}@supports (color:color-mix(in lab, red, red)){.dark\\:bg-input\\/30{background-color:color-mix(in oklab,hsl(var(--input))30%,transparent)}}.dark\\:bg-transparent{background-color:#0000}.dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40:has([data-slot][aria-invalid=true]){--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))40%,transparent)}}.dark\\:aria-invalid\\:ring-destructive\\/40[aria-invalid=true]{--tw-ring-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){.dark\\:aria-invalid\\:ring-destructive\\/40[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,hsl(var(--destructive))40%,transparent)}}}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing)*2)}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing)*1.5)}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing)*2)}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing)*0)}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:size-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input]{height:calc(var(--spacing)*12)}.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing)*2)}.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item]{padding-block:calc(var(--spacing)*3)}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:size-5 [cmdk-item] svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-6 svg:not([class*=size-]){width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'text-\\'\\]\\)\\]\\:text-muted-foreground svg:not([class*=text-]){color:hsl(var(--muted-foreground))}.\\[\\.border-b\\]\\:pb-3.border-b{padding-bottom:calc(var(--spacing)*3)}.\\[\\.border-b\\]\\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\\[\\.border-t\\]\\:pt-3.border-t{padding-top:calc(var(--spacing)*3)}.\\[\\.border-t\\]\\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\\*\\:\\[span\\]\\:last\\:flex>*):is(span):last-child{display:flex}:is(.\\*\\:\\[span\\]\\:last\\:items-center>*):is(span):last-child{align-items:center}:is(.\\*\\:\\[span\\]\\:last\\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}:is(.data-\\[state\\=on\\]\\:\\*\\:\\[svg\\]\\:fill-yellow-500[data-state=on]>*):is(svg){fill:var(--color-yellow-500)}:is(.data-\\[state\\=on\\]\\:\\*\\:\\[svg\\]\\:stroke-yellow-500[data-state=on]>*):is(svg){stroke:var(--color-yellow-500)}:is(.data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:text-destructive\\![data-variant=destructive]>*):is(svg){color:hsl(var(--destructive))!important}.\\[\\&\\>\\*\\]\\:w-full>*{width:100%}.\\[\\&\\>\\*\\]\\:data-\\[slot\\=field\\]\\:p-4>[data-slot=field]{padding:calc(var(--spacing)*4)}@container field-group (width>=28rem){.\\@md\\/field-group\\:\\[\\&\\>\\*\\]\\:w-auto>*{width:auto}}.\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-t-none>:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-l-none>:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-t-0>:not(:first-child){border-top-style:var(--tw-border-style);border-top-width:0}.\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-l-0>:not(:first-child){border-left-style:var(--tw-border-style);border-left-width:0}.\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-r-none>:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-b-none>:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.\\[\\&\\>\\.sr-only\\]\\:w-auto>.sr-only{width:auto}.\\[\\&\\>\\[data-slot\\=field-group\\]\\]\\:gap-4>[data-slot=field-group]{gap:calc(var(--spacing)*4)}.\\[\\&\\>\\[data-slot\\=field-label\\]\\]\\:flex-auto>[data-slot=field-label]{flex:auto}@container field-group (width>=28rem){.\\@md\\/field-group\\:\\[\\&\\>\\[data-slot\\=field-label\\]\\]\\:flex-auto>[data-slot=field-label]{flex:auto}}.has-\\[select\\[aria-hidden\\=true\\]\\:last-child\\]\\:\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:last-of-type\\]\\:rounded-r-md:has(:is(select[aria-hidden=true]:last-child))>[data-slot=select-trigger]:last-of-type{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:not\\(\\[class\\*\\=\\'w-\\'\\]\\)\\]\\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:fit-content}:is(.has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px:has(>[data-slot=field-content])>[role=checkbox],.has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px:has(>[data-slot=field-content]) [role=radio]){margin-top:1px}@container field-group (width>=28rem){:is(.\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px:has(>[data-slot=field-content])>[role=checkbox],.\\@md\\/field-group\\:has-\\[\\>\\[data-slot\\=field-content\\]\\]\\:\\[\\&\\>\\[role\\=checkbox\\]\\,\\[role\\=radio\\]\\]\\:mt-px:has(>[data-slot=field-content]) [role=radio]){margin-top:1px}}.\\[\\&\\>a\\]\\:underline>a{text-decoration-line:underline}.\\[\\&\\>a\\]\\:underline-offset-4>a{text-underline-offset:4px}.\\[\\&\\>a\\:hover\\]\\:text-primary>a:hover{color:hsl(var(--primary))}.\\[\\&\\>input\\]\\:flex-1>input{flex:1}.has-\\[\\>\\[data-align\\=block-end\\]\\]\\:\\[\\&\\>input\\]\\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(var(--spacing)*3)}.has-\\[\\>\\[data-align\\=block-start\\]\\]\\:\\[\\&\\>input\\]\\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(var(--spacing)*3)}.has-\\[\\>\\[data-align\\=inline-end\\]\\]\\:\\[\\&\\>input\\]\\:pr-2:has(>[data-align=inline-end])>input{padding-right:calc(var(--spacing)*2)}.has-\\[\\>\\[data-align\\=inline-start\\]\\]\\:\\[\\&\\>input\\]\\:pl-2:has(>[data-align=inline-start])>input{padding-left:calc(var(--spacing)*2)}.\\[\\&\\>kbd\\]\\:rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\]>kbd{border-radius:calc(var(--radius) - 5px)}.\\[\\&\\>svg\\]\\:pointer-events-none>svg{pointer-events:none}.\\[\\&\\>svg\\]\\:size-3>svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-3\\.5>svg:not([class*=size-]){width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4>svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\\[\\&\\[data-panel-group-direction\\=vertical\\]\\>div\\]\\:rotate-90[data-panel-group-direction=vertical]>div{rotate:90deg}[data-variant=legend]+.\\[\\[data-variant\\=legend\\]\\+\\&\\]\\:-mt-1\\.5{margin-top:calc(var(--spacing)*-1.5)}@media (hover:hover){a.\\[a\\&\\]\\:hover\\:bg-accent:hover{background-color:hsl(var(--accent))}a.\\[a\\&\\]\\:hover\\:bg-destructive\\/90:hover{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab, red, red)){a.\\[a\\&\\]\\:hover\\:bg-destructive\\/90:hover{background-color:color-mix(in oklab,hsl(var(--destructive))90%,transparent)}}a.\\[a\\&\\]\\:hover\\:bg-primary\\/90:hover{background-color:hsl(var(--primary))}@supports (color:color-mix(in lab, red, red)){a.\\[a\\&\\]\\:hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab,hsl(var(--primary))90%,transparent)}}a.\\[a\\&\\]\\:hover\\:bg-secondary\\/90:hover{background-color:hsl(var(--secondary))}@supports (color:color-mix(in lab, red, red)){a.\\[a\\&\\]\\:hover\\:bg-secondary\\/90:hover{background-color:color-mix(in oklab,hsl(var(--secondary))90%,transparent)}}a.\\[a\\&\\]\\:hover\\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}}}@property --tw-animation-delay{syntax:\"*\";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:\"*\";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:\"*\";inherits:false}@property --tw-animation-fill-mode{syntax:\"*\";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:\"*\";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:\"*\";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:\"*\";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:\"*\";inherits:false;initial-value:0}:host,.hive-laboratory{width:100%;height:100%;display:block}.hive-laboratory{--color-neutral-1:0 0% 99%;--color-neutral-2:180 9% 97%;--color-neutral-3:210 7% 95%;--color-neutral-4:200 6% 92%;--color-neutral-5:210 6% 89%;--color-neutral-6:204 5% 79%;--color-neutral-7:197 4% 67%;--color-neutral-8:196 4% 51%;--color-neutral-9:193 9% 32%;--color-neutral-10:188 15% 21%;--color-neutral-11:188 19% 15%;--color-neutral-12:175 23% 10%;--color-accent:206 96% 35%;--color-ring:216 58% 49%;--radius:var(--hive-laboratory-radius,.5rem);--background:var(--hive-laboratory-background,var(--color-neutral-2));--foreground:var(--hive-laboratory-foreground,var(--color-neutral-11));--muted:var(--hive-laboratory-muted,24 9.8% 10%);--muted-foreground:var(--hive-laboratory-muted-foreground,var(--color-neutral-11));--popover:var(--hive-laboratory-popover,var(--color-neutral-3));--popover-foreground:var(--hive-laboratory-popover-foreground,var(--color-neutral-11));--card:var(--hive-laboratory-card,var(--color-neutral-1));--card-foreground:var(--hive-laboratory-card-foreground,var(--color-neutral-11));--border:var(--hive-laboratory-border,var(--color-neutral-5));--input:var(--hive-laboratory-input,var(--color-neutral-5));--primary:var(--hive-laboratory-primary,var(--color-accent));--primary-foreground:var(--hive-laboratory-primary-foreground,var(--color-neutral-1));--secondary:var(--hive-laboratory-secondary,var(--color-neutral-3));--secondary-foreground:var(--hive-laboratory-secondary-foreground,var(--color-neutral-11));--accent:var(--hive-laboratory-accent,var(--color-neutral-4));--accent-foreground:var(--hive-laboratory-accent-foreground,var(--color-neutral-11));--destructive:var(--hive-laboratory-destructive,var(--red-500));--destructive-foreground:var(--hive-laboratory-destructive-foreground,var(--color-neutral-1));--ring:var(--hive-laboratory-ring,var(--color-ring))}.hive-laboratory.dark{--color-neutral-1:210 21% 5%;--color-neutral-2:210 16% 7%;--color-neutral-3:214 14% 10%;--color-neutral-4:210 13% 13%;--color-neutral-5:210 12% 16%;--color-neutral-6:210 11% 21%;--color-neutral-7:210 12% 27%;--color-neutral-8:210 11% 34%;--color-neutral-9:210 10% 43%;--color-neutral-10:213 9% 58%;--color-neutral-11:210 11% 75%;--color-neutral-12:204 14% 93%;--color-accent:48 100% 83%;--radius:var(--hive-laboratory-radius,.5rem);--background:var(--hive-laboratory-background,var(--color-neutral-1));--foreground:var(--hive-laboratory-foreground,var(--color-neutral-11));--muted:var(--hive-laboratory-muted,var(--color-neutral-3));--muted-foreground:var(--hive-laboratory-muted-foreground,var(--color-neutral-11));--popover:var(--hive-laboratory-popover,var(--color-neutral-3));--popover-foreground:var(--hive-laboratory-popover-foreground,var(--color-neutral-11));--card:var(--hive-laboratory-card,var(--color-neutral-2));--card-foreground:var(--hive-laboratory-card-foreground,var(--color-neutral-11));--border:var(--hive-laboratory-border,var(--color-neutral-5));--input:var(--hive-laboratory-input,var(--color-neutral-5));--primary:var(--hive-laboratory-primary,var(--color-accent));--primary-foreground:var(--hive-laboratory-primary-foreground,var(--color-neutral-1));--secondary:var(--hive-laboratory-secondary,var(--color-neutral-3));--secondary-foreground:var(--hive-laboratory-secondary-foreground,var(--color-neutral-11));--accent:var(--hive-laboratory-accent,var(--color-neutral-6));--accent-foreground:var(--hive-laboratory-accent-foreground,var(--color-neutral-11));--destructive:var(--hive-laboratory-destructive,var(--red-500));--destructive-foreground:var(--hive-laboratory-destructive-foreground,var(--color-neutral-1));--ring:var(--hive-laboratory-ring,var(--color-ring))}@layer color{.hive-laboratory{background-color:hsl(var(--background));color:hsl(var(--foreground))}}@property --tw-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-z{syntax:\"*\";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-tracking{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-content{syntax:\"*\";inherits:false;initial-value:\"\"}@keyframes spin{to{transform:rotate(360deg)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}", editor_main_default = "/*!-----------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)\n * Released under the MIT license\n * https://github.com/microsoft/vscode/blob/main/LICENSE.txt\n *-----------------------------------------------------------*/\n.monaco-action-bar{white-space:nowrap;height:100%}.monaco-action-bar .actions-container{align-items:center;width:100%;height:100%;margin:0 auto;padding:0;display:flex}.monaco-action-bar.vertical .actions-container{display:inline-block}.monaco-action-bar .action-item{cursor:pointer;justify-content:center;align-items:center;display:block;position:relative}.monaco-action-bar .action-item.disabled{cursor:default}.monaco-action-bar .action-item .codicon,.monaco-action-bar .action-item .icon{display:block}.monaco-action-bar .action-item .codicon{align-items:center;width:16px;height:16px;display:flex}.monaco-action-bar .action-label{border-radius:5px;padding:3px;font-size:11px;display:flex}.monaco-action-bar .action-item.disabled .action-label,.monaco-action-bar .action-item.disabled .action-label:before,.monaco-action-bar .action-item.disabled .action-label:hover{color:var(--vscode-disabledForeground)}.monaco-action-bar.vertical{text-align:left}.monaco-action-bar.vertical .action-item{display:block}.monaco-action-bar.vertical .action-label.separator{border-bottom:1px solid #bbb;margin-left:.8em;margin-right:.8em;padding-top:1px;display:block}.monaco-action-bar .action-item .action-label.separator{cursor:default;background-color:#bbb;width:1px;min-width:1px;height:16px;padding:0;margin:5px 4px!important}.secondary-actions .monaco-action-bar .action-label{margin-left:6px}.monaco-action-bar .action-item.select-container{flex:1;justify-content:center;align-items:center;min-width:60px;max-width:170px;margin-right:10px;display:flex;overflow:hidden}.monaco-action-bar .action-item.action-dropdown-item{display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator{cursor:default;align-items:center;display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator>div{width:1px}.monaco-aria-container{position:absolute;left:-999em}.monaco-text-button{border:1px solid var(--vscode-button-border,transparent);box-sizing:border-box;cursor:pointer;text-align:center;border-radius:2px;justify-content:center;align-items:center;width:100%;padding:4px;line-height:18px;display:flex}.monaco-text-button:focus{outline-offset:2px!important}.monaco-text-button:hover{text-decoration:none!important}.monaco-button.disabled,.monaco-button.disabled:focus{cursor:default;opacity:.4!important}.monaco-text-button .codicon{margin:0 .2em;color:inherit!important}.monaco-text-button.monaco-text-button-with-short-label{flex-flow:wrap;height:28px;padding:0 4px;overflow:hidden}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label{flex-basis:100%}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{flex-grow:1;width:0;overflow:hidden}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label,.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{font-style:inherit;justify-content:center;align-items:center;padding:4px 0;font-weight:400;display:flex}.monaco-button-dropdown{cursor:pointer;display:flex}.monaco-button-dropdown.disabled{cursor:default}.monaco-button-dropdown>.monaco-button:focus{outline-offset:-1px!important}.monaco-button-dropdown.disabled>.monaco-button-dropdown-separator,.monaco-button-dropdown.disabled>.monaco-button.disabled,.monaco-button-dropdown.disabled>.monaco-button.disabled:focus{opacity:.4!important}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-right-width:0!important}.monaco-button-dropdown .monaco-button-dropdown-separator{cursor:default;padding:4px 0}.monaco-button-dropdown .monaco-button-dropdown-separator>div{width:1px;height:100%}.monaco-button-dropdown>.monaco-button.monaco-dropdown-button{border:1px solid var(--vscode-button-border,transparent);border-radius:0 2px 2px 0;align-items:center;display:flex;border-left-width:0!important}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-radius:2px 0 0 2px}.monaco-description-button{flex-direction:column;align-items:center;margin:4px 5px;display:flex}.monaco-description-button .monaco-button-description{padding:4px 20px;font-size:11px;font-style:italic}.monaco-description-button .monaco-button-description,.monaco-description-button .monaco-button-label{justify-content:center;align-items:center;display:flex}.monaco-description-button .monaco-button-description>.codicon,.monaco-description-button .monaco-button-label>.codicon{margin:0 .2em;color:inherit!important}.monaco-button-dropdown.default-colors>.monaco-button,.monaco-button.default-colors{background-color:var(--vscode-button-background);color:var(--vscode-button-foreground)}.monaco-button-dropdown.default-colors>.monaco-button:hover,.monaco-button.default-colors:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary,.monaco-button.default-colors.secondary{background-color:var(--vscode-button-secondaryBackground);color:var(--vscode-button-secondaryForeground)}.monaco-button-dropdown.default-colors>.monaco-button.secondary:hover,.monaco-button.default-colors.secondary:hover{background-color:var(--vscode-button-secondaryHoverBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator{background-color:var(--vscode-button-background);border-bottom:1px solid var(--vscode-button-border);border-top:1px solid var(--vscode-button-border)}.monaco-button-dropdown.default-colors .monaco-button.secondary+.monaco-button-dropdown-separator{background-color:var(--vscode-button-secondaryBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator>div{background-color:var(--vscode-button-separator)}@font-face{font-display:block;font-family:codicon;src:url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQiCLJXoAAAE4AAAAVE9TLzI3T0tHAAABjAAAAGBjbWFwQ5s/ewAACSQAABreZ2x5ZvJtKHkAACekAAD3FGhlYWRYl6BTAAAA4AAAADZoaGVhAlsC+QAAALwAAAAkaG10eBxB//oAAAHsAAAHOGxvY2EFi8dWAAAkBAAAA55tYXhwAu8BgQAAARgAAAAgbmFtZZP3uUsAAR64AAAB+HBvc3RjGEbCAAEgsAAAGSQAAQAAASwAAAAAASz////+AS4AAQAAAAAAAAAAAAAAAAAAAc4AAQAAAAEAAFT7+XFfDzz1AAsBLAAAAAB8JbCAAAAAAHwlsID////9AS4BLQAAAAgAAgAAAAAAAAABAAABzgF1ABcAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAQBKwGQAAUAAADLANIAAAAqAMsA0gAAAJAADgBNAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAwOpg8QEBLAAAABsBRwADAAAAAQAAAAAAAAAAAAAAAAACAAAAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEs//8BLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLP//ASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEs//8BLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASz//wEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASz//wEsAAABLAAAASwAAAEs//8BLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAAAAABQAAAAMAAAAsAAAABAAABSYAAQAAAAAEIAADAAEAAAAsAAMACgAABSYABAP0AAAAEgAQAAMAAuqI6ozqx+rJ6wnrTuw08QH//wAA6mDqiuqP6snqzOsL61DxAf//AAAAAAAAAAAAAAAAAAAAAAABABIAYgBmANYA1gFQAdYDngAAAAMA8QFKAUcAtAE3AZUBJQFuAQ4BdABOAcMBYAFqAWkAkQA2ATAAhgDPAP4AQQGTAHkAFwG+AJsAiAFDAR0BFAEVAagAyQCmALwBoAGAAIsBkQF5AYgBhgF6AYkBkAGLAYQAvgF/AY0AAgAEAAUACgALAAwADQAOAA8AEAASABsAHQAeAB8AXABdAF4AXwBiAGMAIgAjACQAJQAmACkAKwAsAC0ALgAvADAAMgAzADQANQA8ADkAPQA+AD8AQABCAEMARgBIAEkASwBVAFYAVwBYAGcAaQBrAG4AcgB0AHUAdgB3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AKIAAOr2AADq9gAAAKMAAOr3AADq9wAAAKUAAOr4AADq+AAAAKgAAOr5AADq+QAAAKkAAOr6AADq+gAAAKoAAOr7AADq+wAAAJQAAOr8AADq/AAAAKsAAOr9AADq/QAAAKwAAOr+AADq/gAAAK4AAOr/AADq/wAAALgAAOsAAADrAAAAALkAAOsBAADrAQAAAL0AAOsCAADrAgAAAMAAAOsDAADrAwAAAMQAAOsEAADrBAAAAMUAAOsFAADrBQAAAMgAAOsGAADrBgAAAMoAAOsHAADrBwAAAMsAAOsIAADrCAAAAMwAAOsJAADrCQAAAM0AAOsLAADrCwAAANMAAOsMAADrDAAAANQAAOsNAADrDQAAANUAAOsOAADrDgAAANYAAOsPAADrDwAAANcAAOsQAADrEAAAANgAAOsRAADrEQAAANkAAOsSAADrEgAAANoAAOsTAADrEwAAAO8AAOsUAADrFAAAAPIAAOsVAADrFQAAAPMAAOsWAADrFgAAAPYAAOsXAADrFwAAAPkAAOsYAADrGAAAAPoAAOsZAADrGQAAAPsAAOsaAADrGgAAAPwAAOsbAADrGwAAAQAAAOscAADrHAAAAQEAAOsdAADrHQAAAQYAAOseAADrHgAAAQcAAOsfAADrHwAAAQgAAOsgAADrIAAAAQ0AAOshAADrIQAAAQ8AAOsiAADrIgAAARAAAOsjAADrIwAAAREAAOskAADrJAAAARMAAOslAADrJQAAARcAAOsmAADrJgAAARgAAOsnAADrJwAAARsAAOsoAADrKAAAARwAAOspAADrKQAAAR8AAOsqAADrKgAAASAAAOsrAADrKwAAASgAAOssAADrLAAAASwAAOstAADrLQAAAS0AAOsuAADrLgAAAS4AAOsvAADrLwAAAS8AAOswAADrMAAAATEAAOsxAADrMQAAATIAAOsyAADrMgAAATMAAOszAADrMwAAATQAAOs0AADrNAAAATUAAOs1AADrNQAAATYAAOs2AADrNgAAATsAAOs3AADrNwAAATwAAOs4AADrOAAAAT0AAOs5AADrOQAAAT4AAOs6AADrOgAAAT8AAOs7AADrOwAAAUAAAOs8AADrPAAAAUEAAOs9AADrPQAAAUIAAOs+AADrPgAAAUQAAOs/AADrPwAAAUYAAOtAAADrQAAAAUgAAOtBAADrQQAAAUkAAOtCAADrQgAAAUsAAOtDAADrQwAAAUwAAOtEAADrRAAAAU4AAOtFAADrRQAAAU8AAOtGAADrRgAAAVAAAOtHAADrRwAAAVEAAOtIAADrSAAAAVIAAOtJAADrSQAAAVkAAOtKAADrSgAAAVoAAOtLAADrSwAAAVsAAOtMAADrTAAAAVwAAOtNAADrTQAAAV0AAOtOAADrTgAAAV8AAOtQAADrUAAAAWQAAOtRAADrUQAAAWUAAOtSAADrUgAAAWYAAOtTAADrUwAAAWgAAOtUAADrVAAAAWsAAOtVAADrVQAAAW0AAOtWAADrVgAAAXEAAOtXAADrVwAAAXIAAOtYAADrWAAAAXMAAOtZAADrWQAAAXUAAOtaAADrWgAAAXYAAOtbAADrWwAAAXsAAOtcAADrXAAAAXwAAOtdAADrXQAAAX0AAOteAADrXgAAAX4AAOtfAADrXwAAAYEAAOtgAADrYAAAAYIAAOthAADrYQAAAYMAAOtiAADrYgAAAYUAAOtjAADrYwAAAYcAAOtkAADrZAAAAYoAAOtlAADrZQAAAYwAAOtmAADrZgAAAY4AAOtnAADrZwAAAZcAAOtoAADraAAAAZgAAOtpAADraQAAAaEAAOtqAADragAAAaIAAOtrAADrawAAAaQAAOtsAADrbAAAAaYAAOttAADrbQAAAacAAOtuAADrbgAAAakAAOtvAADrbwAAAaoAAOtwAADrcAAAAasAAOtxAADrcQAAAawAAOtyAADrcgAAAa0AAOtzAADrcwAAAbEAAOt0AADrdAAAAbMAAOt1AADrdQAAAbQAAOt2AADrdgAAAbUAAOt3AADrdwAAAbgAAOt4AADreAAAAbkAAOt5AADreQAAAboAAOt6AADregAAAbwAAOt7AADrewAAAb0AAOt8AADrfAAAAcQAAOt9AADrfQAAAcUAAOt+AADrfgAAAcYAAOt/AADrfwAAAccAAOuAAADrgAAAAcgAAOuBAADrgQAAAcwAAOuCAADrggAAAc0AAOuDAADrgwAAAPQAAOuEAADrhAAAAPUAAOuFAADrhQAAAPcAAOuGAADrhgAAAPgAAOuHAADrhwAAAGAAAOuIAADriAAAAGEAAOuJAADriQAAAHAAAOuKAADrigAAADoAAOuLAADriwAAAHEAAOuMAADrjAAAAGQAAOuNAADrjQAAAY8AAOuOAADrjgAAAG8AAOuPAADrjwAAAHMAAOuQAADrkAAAAG0AAOuRAADrkQAAAFsAAOuSAADrkgAAACcAAOuTAADrkwAAACgAAOuUAADrlAAAAQkAAOuVAADrlQAAAI0AAOuWAADrlgAAAJIAAOuXAADrlwAAAMYAAOuYAADrmAAAAbIAAOuZAADrmQAAAAEAAOuaAADrmgAAABgAAOubAADrmwAAAGUAAOucAADrnAAAAO4AAOudAADrnQAAAR4AAOueAADrngAAAVUAAOufAADrnwAAAZIAAOugAADroAAAASoAAOuhAADroQAAALoAAOuiAADrogAAAWMAAOujAADrowAAAWIAAOukAADrpAAAASIAAOulAADrpQAAAXcAAOumAADrpgAAASsAAOunAADrpwAAATkAAOuoAADrqAAAAFoAAOupAADrqQAAAbsAAOuqAADrqgAAAEQAAOurAADrqwAAAQoAAOusAADrrAAAAI4AAOutAADrrQAAAMEAAOuuAADrrgAAAP8AAOuvAADrrwAAARoAAOuwAADrsAAAAToAAOuxAADrsQAAACoAAOuyAADrsgAAASkAAOuzAADrswAAASEAAOu0AADrtAAAADcAAOu1AADrtQAAADgAAOu2AADrtgAAAEoAAOu3AADrtwAAAZQAAOu4AADruAAAAbYAAOu5AADruQAAAbAAAOu6AADrugAAAa4AAOu7AADruwAAAa8AAOu8AADrvAAAALAAAOu9AADrvQAAAVMAAOu+AADrvgAAAVYAAOu/AADrvwAAARkAAOvAAADrwAAAAGwAAOvBAADrwQAAAckAAOvCAADrwgAAAcsAAOvDAADrwwAAAcoAAOvEAADrxAAAAZoAAOvFAADrxQAAAZsAAOvGAADrxgAAAZwAAOvHAADrxwAAAZ0AAOvIAADryAAAAZ4AAOvJAADryQAAAZ8AAOvKAADrygAAAZkAAOvLAADrywAAABEAAOvMAADrzAAAAFMAAOvNAADrzQAAASQAAOvOAADrzgAAAJ0AAOvPAADrzwAAAcIAAOvQAADr0AAAAGoAAOvRAADr0QAAANEAAOvSAADr0gAAAN0AAOvTAADr0wAAANwAAOvUAADr1AAAANsAAOvVAADr1QAAAFEAAOvWAADr1gAAAFAAAOvXAADr1wAAAE8AAOvYAADr2AAAABUAAOvZAADr2QAAANIAAOvaAADr2gAAAK8AAOvbAADr2wAAALEAAOvcAADr3AAAAFkAAOvdAADr3QAAAGgAAOveAADr3gAAAVgAAOvfAADr3wAAAKQAAOvgAADr4AAAAGYAAOvhAADr4QAAABYAAOviAADr4gAAAMIAAOvjAADr4wAAAMMAAOvkAADr5AAAAScAAOvlAADr5QAAACAAAOvmAADr5gAAACEAAOvnAADr5wAAAP0AAOvoAADr6AAAABQAAOvpAADr6QAAAbcAAOvqAADr6gAAARYAAOvrAADr6wAAAO0AAOvsAADr7AAAAN4AAOvtAADr7QAAAN8AAOvuAADr7gAAAOQAAOvvAADr7wAAAOIAAOvwAADr8AAAAOMAAOvxAADr8QAAAOYAAOvyAADr8gAAAOcAAOvzAADr8wAAAOkAAOv0AADr9AAAAOsAAOv1AADr9QAAAOwAAOv2AADr9gAAAOEAAOv3AADr9wAAAOAAAOv4AADr+AAAAZYAAOv5AADr+QAAAM4AAOv6AADr+gAAATgAAOv7AADr+wAAAIoAAOv8AADr/AAAAAYAAOv9AADr/QAAAAcAAOv+AADr/gAAAAgAAOv/AADr/wAAAAkAAOwAAADsAAAAAOoAAOwBAADsAQAAAOUAAOwCAADsAgAAAOgAAOwDAADsAwAAABwAAOwEAADsBAAAAMcAAOwFAADsBQAAAQUAAOwGAADsBgAAAQIAAOwHAADsBwAAADsAAOwIAADsCAAAABoAAOwJAADsCQAAABkAAOwKAADsCgAAAE0AAOwLAADsCwAAALIAAOwMAADsDAAAALMAAOwNAADsDQAAAV4AAOwOAADsDgAAAEwAAOwPAADsDwAAAWEAAOwQAADsEAAAAXAAAOwRAADsEQAAANAAAOwSAADsEgAAAQwAAOwTAADsEwAAAaMAAOwUAADsFAAAAaUAAOwVAADsFQAAAEcAAOwWAADsFgAAAWwAAOwXAADsFwAAAKcAAOwYAADsGAAAAb8AAOwZAADsGQAAADEAAOwaAADsGgAAASYAAOwbAADsGwAAARIAAOwcAADsHAAAAQsAAOwdAADsHQAAAUUAAOweAADsHgAAAFIAAOwfAADsHwAAAPAAAOwgAADsIAAAAU0AAOwhAADsIQAAAW8AAOwiAADsIgAAAIMAAOwjAADsIwAAAIAAAOwkAADsJAAAAXgAAOwlAADsJQAAAWcAAOwmAADsJgAAALcAAOwnAADsJwAAALUAAOwoAADsKAAAALYAAOwpAADsKQAAAcEAAOwqAADsKgAAAcAAAOwrAADsKwAAAEUAAOwsAADsLAAAAVcAAOwtAADsLQAAAVQAAOwuAADsLgAAAFQAAOwvAADsLwAAALsAAOwwAADsMAAAAQQAAOwxAADsMQAAAQMAAOwyAADsMgAAAL8AAOwzAADsMwAAASMAAOw0AADsNAAAABMAAPEBAADxAQAAAK0AAAAAAAAAlADUAOgBFAEyAWwBpgHgAhoCLgJCAlYCagJ+ApICpgLIAt4DGgM4A4oD5AQQBGYEzAUcBWoFagWYBeoGBgamB1oHmggkCEIIqgkcCdQKiArOCvYLCAtQC2ILdAuGC5gL4Av6DAwMGAw2DGIMkAz0DSoNPg1mDY4N/A4uDnwOtg7QDyYPgA/IEAIQJhCyEN4RBBFiEZwR8BImEkoSuBMWE2AUFBQ4FI4UuBTEFTYVihX0FlQWthbsFxAXKBc4F0gXVBdoF3YXmhgYGDIYTBiaGQoZNhlIGYIZzBn8GhYaPhpaGnAaohrEGugbHBs0G7Qb5BwKHFgcdhycHLwc4B0aHTYdWB2IHbod5h4IHjAeXB6EHrwfFB+WH8gf4iAaIHgguiEeIXohsiIEImwitCL6IzojoCPCI/AkAiQeJKIkwCTcJPglRiWEJbgl5iZYJsonQieOJ7goOCheKOQpeCn0KnwqxisKK54r3iwULEosiC0qLaQtyC5iLuQvIi9sL4Avxi/qMBYwVjB8MNoxCjFsMagx1jIcMnwyrDLKMxgzTDNwM940NDRwNKA07jWmNdg2PjamNvo3PDdqN4I3mje4N+A4BDgmOEQ4YjiAOJg4tjjOOOw5BDkcOVY5kjnkOn46vjriO0Q7XDt4PA48JjxGPHg83Dz6PUw9eD2mPew+Ej4yPko+ZD6QPrw+4j8SP3I/jD/iQBhAZECOQMpBAkFCQXZBxkH4QiZCYEJ+QsJC6kNwQ6pEJERuRVJFikW8RiJGRkaURtRHNkeOR8pIEEhkSNxJMEmCSZhJyEoOSkZKXkqGSqZLBks6S8RMIkyETLZNBk0yTZhNyE3uTkZOYk5wTypPkE+0UC5QqlDwUWBRmFHQUihSVlKGUxZTcFPMVCZUTlRyVJZU7lUOVTJVhlXiVhxWXFaCVrZW8Fc6V5hXylfoWCRYsFkaWZRZ+lpaWtBbCFtCW5xcEFxWXMJdSl4QXi5eTF86X2xfgl+oX/JgOGBYYIpgzmFeYYBhumH6Yh5iSmJsYqJjOGNsY5hj3mSWZMBlQGV8ZeZmDmZIZr5m+mc+Z4BnvGgCaE5opmjKaRRprGoEbARtum3mbgpudm6ebspu4m8Qb2JvkG/icIBwunDKcNpw6nD6cVpxmnHaciRyanLacwRzUnPYdHR0pHT2dSh1ZHW6dfx2SHZodtp3Hndgd7p32ngYeER4nni8eYB58HqSewp7TnuKAAAABAAA//8BLAEsABEAIgA0AGQAACU0LgEiDgEVFBYfARYyPwE+AQciJzc+BDMyHgEXFhcGJyY0PgIyHgIUDgEHBicuARcwPQEuAScmJzY3Njc2JzYuAiIOAhUUHgEXFhcGBw4BBxUuATU0PgEyHgEVFAYBLChFUkUoHBkNJlwmDhgclikiAQMKDhAVCg8dFQYDAiJYBAgNEhYRDggIDgkTFAgOhwQRDAkLBQQHBQoBAQsUGh0aEwsGCAgEBQoJDBEFEhQjPEg8IxOWKUUoKEUpITwVChoaChU8YhgHChEOCgULFQ4ICRiLCRQSDQkIDhIVEQ4ECAgEDlsBAQ4YCQcFAwQHCBAUDhoUCgoUGg4KEw4IBAQEBwkYDwESMBokPCMjPCQaMAAAAAACAAAAAAEaARoAGgAoAAAlFg4BBzQnPgE3LgMOAQcmIz4CMzIeAgciDgEUHgEyPgE0LgEjARkBFCIWAxkiAQEQHSMeEwIJCgMYJRURHxgMshcnFhYnLicXFycXxRYlGAIKCQMlGhEeEgEPHBEDFSIUDBgfGhcnLicWFicuJxYAAAEAAAAAAQcBGgALAAAlFSMVIzUjNTM1MxUBB3ETcHATqRNwcBNwcAAEAAAAAAEaARoADQASABYAGgAAASMHFRczFRczNzUzNzUHIzUzFQc1MxUnIxUzARD0CQkKCc4KCQkc1+HPvCZwcAEZCTgKnwkJnwo4LyYmqZaWcRMAAAAAAQAAAAABEgDMAA8AADcXByc1NxcHMyc3FxUHJzc4KA04OA0ovCgNODgNKIMoDTgNOQ4oKA45DTgNKAAAAwAAAAABBwEHAAkAFgAjAAA3FzUzFTcXByMnNzQuASIOARQeATI+AScUDgEiLgE0PgEyHgFlKBMmDjgNOLAfMz4zHh4zPjMfExksMiwZGSwyLBmUKGxqJg03Nw8fMx8fMz4zHh4zHxksGRksMiwZGSwAAAADAAAAAAEHAQcACQAXACQAADcnMzUjNycHFRc3Mh4BFA4CLgI+ARcVIg4BFB4BMj4BNC4BlChsaiYNNzcPHzMfHzM+Mx4BHzMfGSwZGSwyLBkZLGUoEyYOOA04sB8zPjMeAR8zPjMfARIZLDIsGRksMiwZAAMAAAAAAQcBBwAJABYAIwAANxcjFTMHFzc1JwcGLgI+ATIeARQOAScyPgE0LgEiDgEUHgGYKGxqJg03Nw8fMx4BHzM+Mx8fMx8ZLBkZLDIsGRksxygTJg44DTivAR8zPjMfHzM+Mx4SGSwyLBkZLDIsGQAAAwAAAAABBwEHAAkAFgAjAAA/ARUzNRc3JyMHFxQOAi4CPgEyHgEHNC4BIg4BFB4BMj4BZSgTJg44DTiwHzM+Mx4BHzM+Mx8TGSwyLBkZLDIsGZgobGomDTc3Dx8zHgEfMz4zHx8zHxksGRksMiwZGSwAAAABAAAAAAEEAQcACQAANxczNycHNSMVJzteDV4NThNOg11dDk7ExE4AAQAAAAABBwDzAAkAADcHFRc3JzM1IzeDXV0OTsTETvJeDV4OTRNOAAEAAAAAAQcA8QAJAAA/ATUnBxcjFTMHqV5eDk7Dw04oXQ5dDU4STgABAAAAAADJAOEACQAANwcjJzcXNTMVN8kvDS8NHxMfii8vDR5oaB8AAQAAAAAA0QDPAAkAADcnNTcXBzMVIxd6Ly8NH2lpH2MvDS8NHxMeAAEAAAAAANEAzwAJAAA3FxUHJzcjNTMnoi8vDR5oaB7OLw0vDh4THwABAAAAAADJAOEACQAAPwEzFwcnFSM1B14vDS8NHxMfsi8vDR9paR8AAgAAAAABGgEbAAkAEwAANyc1NxcHMxUjFz8BNScHFyMVMwdPPDwNLOnpLIE8PA0s6eksEjwNPA0sEyx2PA08DSwTLAABAAAAAAEEAQcACQAAJScjBxc3FTM1FwEEXg1eDU4TTaleXg5Ow8NOAAAAAAEAAAAAARwBHAAlAAA/ATYyFhQPAQYiJjQ/ATY0JiIPAQYUFjI/AT4BLgIGDwEOARYyNm0RMCIRgggYEQh0AwUIA3QOHCgOgg4LCx0oKA9tAgEGCI9oECAuEHwIEBcIbwIIBQJvDSYbDXwOJiYcCgoOaAMIBQAAAAIAAAAAARoBGgAHAA8AACUVBycVJxc1FycVDwEVFzUBGUFmOqgBXlYaJeigNSUlSw2QATklGiFLEWEAAAMAAAAAASIBGgAbACcANgAAJScuAQcjIgYPAQYeAjsBMjY/ARcWOwEyPgIHIi8BMzcXHAEOASMzIzYvATMeARUXFg4CIwEgSwIKB1gGCgJMAgIFCQU3BQoCDDgFBlgECQUCawICbDkUKgIEAVdFAgJMRQIETAEBAgICLOEFCAEHBeEFCQgDBwYhKwMEBwkIAVA0fQEDAwEGB+EBAgLhAQMCAgAABAAAAAABGgEaAB0ALAA1AD0AADczJicjNzM0NyM3NTMVFzY3JzUzNSMVMxUHBh4CNzYzMh4CFRQOAS4CNhcWFzI3JwYVFDcXNjU0JiMiOF4LCEsdGwITJCYBCQkBE3ASSQIBBQhyEhcPHBULGSotIAkSFBEXEg9PChhOCyEYEhMICjkJCUhOTwMEAgFLExJLjgUJCQSJDQwVGw8XJhEJICwqWRABC04OEhhGTw8SFyEAAAAAAwAAAAABCgEaAA8AFgAaAAAlJzUzNSMVMxUHBhY7ATI2Jzc1MxUXIwc3MxcBBEgScBNKBAsKvAoLiAImJG4nHYIdLo1LExJLjgoREZAETk9HSzk5AAAAAAMAAAAAARoBGwAqADEAOgAANwYjFRQfASM3Nj0BND4CFzM2NyYnJg4CHQEUDwEXMxQWMjY1MzcnJjUHMjYnIxQWNzI2NCYiBhQW9AkKCAe1BwkNFx8PAwUHBgcUJh0QBwsIQhYfFkIJCwdeBwwBJQtTFyEhLiEhmAIEGhkUFRkZKRAeFQoCCQcCAQINGyQUKRYWIQ0PFhYPDSEWFm0LCAgLhCEuISEuIQAAAAAGAAAAAAEqASYAFQAnAC4AMwA4AEEAABMGByIHDgIdARQPATc2PQE0PgIfAQYHFh8BIwczFBYyNjUzNycmBwYiJjUzFjcmJzcXDwEXNyYXMjY0JiIGFBaiCgcJCg8XDQQcBgcQHSYUVQkKAgYHehIMFh8WQgkLBlIGDwslAXUGBwsNgpQNlQczFyEhLiEhARgICgMFFR4QKRERHRMWFikUJBsNApEDARMSFBMPFhYPDSERTAYLCAjdBwcKDWeVDZUGASEuISEuIQAAAAAEAAAAAAEqASYAFQAnAC4AMgAAEyYnJg4CHQEUBzc2PQE0PgIXFhcHMycmPQE3FRQfAQcjFAYiJicXMjYnIxQWBwEXAc8VGxQmHRAHGQENFx8PFBA9bAcIEwcLCUIWHxUBJgcMASULewEJDf73AQUQBAINGyQUKRYVGQkJKRAeFQoCAwysFBkaFhMpFhYhDQ8WFQ8SCwgICwkBCQ3+9wAAAwAAAAABBgEbABoAIQA0AAA3Jj0BNC4CJyYOAh0BFA8BFzMUFjI2NTM3BwYiJjUzFic3Nj0BND4CFxYXHgEdARQfAfsHDBgfEhQmHRAHCwhCFh8WQgljBg8LJQFuBwkNFx8PHhMJCggHZhUXJhIhGxECAg0bJBQpFxUhDQ8WFg8NGgYLCAgbFRgaKRAeFQoCBBYLGw4mGhkUAAAAAwAAAAAA4QD0AA4AFgAeAAA3NTMyFhUUBgceARUUBiMnFTMyNjU0IyczMjY0JisBXj8fIBANEBIiHioqEhQlKycQFBITJji8GhgNFQUEGBEZHVhEEhAiFBAdDgAJAAAAAAEaAQcAEAAXAB4AIgAmACoALgAyADYAAAEjDwEvASMHFRczFzM3Mzc1By8BIzUzHwEjDwE1NzMHIxUzFSMVMyczFSM3IxUzBzMVIxUzFSMBEGcHDAwHZwkJYxAOEGMJjAQGXVkOel4HAg1aljk5OTk5OTm8ODg4ODg4OAEHAwwMAwq7ChAQCru4AwOpDpsDAqENJhI5EjgTOBITExMSAAIAAAAAAPQBGgAIAA4AABMjBxUXNxc3NQcnIwc1M+qoChFNTRETRA5ElgEZCfQGVlYG9NtLS9IAAwAAAAABGgEHAEcAcQB9AAA3MSMiDgIdARQOAgceAx0BFB4COwEVIyIuAScxJic1Jjc1NCcxJic1JicxJisBNTMyPgE3MTY9ASY3MTY3MT4COwEXMzUjIicxJic1JicxJj0BNic1JicxLgIrARUzMh4CHQEUHgIXIxYHIg4BHgI+ATU0JnECBgoHBAIEBwUFBwQCBAcKBgICCRANAwMBAQECAgQDBQUGAQEGCgcCAgEBAQMDDRAJApQCAgYFBQMEAgIBAQEDAw0QCQEBBgoHBAIEBwUBDxcRHA0GGCIfEyH0BAgKBhkGDAsIBAQICwwGGQYKCAQSBg0ICAcBCAgQBgUFAwEDAgMSBQcFBQYQCAgICAgNB3oSAwIDAQMFBQYQCAgBBwgIDQcTBAgKBhkGDAsIBAIREx8iGAYNHBEXIQAEAAAAAAEaAQcARwBxAH4AigAANzEjIg4CHQEUDgIHHgMdARQeAjsBFSMiLgEnMSYnNSY3NTQnMSYnNSYnMSYrATUzMj4BNzE2PQEmNzE2NzE+AjsBFzM1IyInMSYnNSYnMSY9ATYnNSYnMS4CKwEVMzIeAh0BFB4CFyMWBzYzMhYVFA4BLgI2FwcnBxcHFzcXNyc3cQIGCgcEAgQHBQUHBAIEBwoGAgIJEA0DAwEBAQICBAMFBQYBAQYKBwICAQEBAwMNEAkClAICBgUFAwQCAgEBAQMDDRAJAQEGCgcEAgQHBQEPNg4RFyETHyIYBg1CFRUOFhYOFRUOFhb0BAgKBhkGDAsIBAQICwwGGQYKCAQSBg0ICAcBCAgQBgUFAwEDAgMSBQcFBQYQCAgICAgNB3oSAwIDAQMFBQYQCAgBBwgIDQcTBAgKBhkGDAsIBAIaCSEXERwNBhgiHwIWFg4VFQ4WFg4VFQAFAAAAAAEaAQcADQARABsAHwApAAAlIzUnIwcVIwcVFzM3NSczFSMXFQc1JyMHFSc1FxUjNQc1FxUXMzc1NxUBEEIJXglCCQn0CahLS5ZLCjgJS4MmXUsJOApL4RwKChwJlgoKlhwTEw4qCQoKCSsNOBMTS2ArBgkJBipfAAAAAAQAAAAAAQcBGgAiAD8AWwBkAAATNjMyHgEXDgEHNTE2PQE+AiYnLgEOAhYXFRQXFS4CNhcGIxUUBisBMCMxLgE9ASImPQE0NjsBMhYdARQHNxQHFh0BPgImJy4BDgIWFzU0NyY+Ah4BByMUBiImNDYyFlgcIh8zHgEBKSEJERcJBwoRNjkoCRoZCR4oCBtyAgQFBBQBBAQEBQsIEggLAxkJBgkLAQsJDSQjGgkLDQYJARQeHhMBHgsQCwsQCwEGEx40HiQ6DAEJCwMJICYnEBkVDCs6NQ4DDAgBCzFAOqcDLwQFAQQELwUEJggLCwgmBAJbDw0JCgIJGRwZCQ4KChokIw0CCwkNHxoJCxkQCAsLEAsLAAMAAAAAARoBGgAHAAsADwAAEzMXFQcjJzUXFTM1JzM1Ixz0CQn0CRPh4eHhARkJ4QkJ4UKWlhMmAAAAAAMAAAAAARgBGgAxADkASQAANzU0JiIGHQEjJwcXBwYdASMVOwEWHwEHFzcXHgEyNj8BFzcnNTY3MTM1IzU2LwE3JwcjNTQ2MhYdARcVFhUUDgIiLgI1NDc1zCAtIBAfCx4BCSYoAQQNASULIwIMHyIfDAEkCyUOBSknAQoBHgsfbRcgFx0JDRYbHRwWDAjYCxYgIBYLHwseARobDBAbFQElCyMBDhAPDgEkCyYBFhsQDBsaAR4LHwsQFxcQCxABFhkXJxwPDxwnFxkWAQAAAAARAAAAAAEaARoADwATABcAGwAfACMAJwArAC8AMwA3ADsAPwBDAEcASwBPAAABIzUjFSM1IxUjBxUXMzc1ByM1MzUjNTMHIxUzBzMVIxcjFTM3MxUjFyMVMwczFSM3IxUzFzMVIxcjFTMHMxUjNyMVMxczFSMXIxUzJzMVIwEQHBOWExwJCfQJEuHh4eG8ExMTExMTExMmEhISEhISEhISEhImExMTExMTExMTExMlExMTExMTExMBBxISEhIK4QkJ4deoExNeExITExNeExITExOEExMTEhMTE4QTExMSE14TAAADAAAAAAEaARoAPQB5AIIAADcuAQ4BDwIGJi8BJicuAj8CPgI1NCcuAyMiDwEOAhUUHgYzMj4BPwE2NTQmLwEmLwEmBwYnIiYnJicuAzUmPgE/ATYzMh8BFh8BFhQPAQ4CFBYfARYzMjc2PwE+ATIfAhYfARYVFA8BDgE3BzMVIzUzFTfrBQsKBwMGBQMIAikLCwQGAQMEBwMGAwgFCwwNCAwIDgUJAwoRGBwgIiEQChENBg4IAwMHBAQPBA0HCA4eDh8aDRYQCQEEBgULAwQCBAcKBwYDAgsEBQQEBUUJDAUFCQYGAgYFBAcJBQMGAwQKBQovVz5eE1d9AgEFBQQGBAMBAycLDAUIBQMFBgMHCQYMCQUMCwgIDgYNEQoPIiEgHBkRCgQIBQ4IDAUKBAgEBA4EVAIBCQcSGg0cHh4PBw4JBQoEAwYICQcEBQMLAwcKCwoFRQkCBAcGAwQDBggEBQgDAgQDCwQH41cTXj5XAAMAAAAAARoBGgAIAEQAgAAAPwEjNTMVIzUHFzIfAx4BFRQPAQ4CIyIuBjU0PgE/ATYzMh4CFxYVFA4BDwIGFBYXFh8BHgE/Aj4CBzI+AT8BNic2LwEmLwImIgYPAQ4CIyIvAS4BND4CPwE2NC8EJiMiDwEOAgceAxcWFx4Bolc9XRJYMQwJDwgHAwMIDgUOEQoQIiEgHBgRCgMIBg4IDAcODQoFCAMGAwcEAgYECwspAggDBQYDCAkGCQwKBQoEAQEDBgMFCQcEBQYCBgMHCgUMCUUFBAQFBwMFAgMGCAkHBAIEAwsEBwMBAQkQFg0aHw4er1gSXT1XIwgOCAgECgUMCA4FCAQKEhgcICEhEAsQDQYOCAgLDQQJDAUJCAMGBQMFCAUMCycDAQMEBgQFBVoDBgULAwQCAwgFBAgGAwQDBgQFBAlFBAsMCQcGAwUDBQQHCQgGAwQKBAsNBw4fHhwNGhEICQAAAAQAAAAAAQIA4QAHAA8AJAAvAAA3IycjByM3MxcnJicjBg8BFyM1MQYjIiY1ND8BNCMiBzU2MzIVDwEOARUUFjMyNjWmEw89DxI3ERAWAQEBAQEXthELFQ8SIh8VEg8PFCQRGAwMCwkMEFEoKJBZPgMGBgM+NxATEA4dBQQaDBAKJg8EAQgLBwoRDQAABAAAAAABJQD0AAYACgAMABMAACUHIyc3FzcHNycPARcHFwcjJzcXASWSDjoONIuQUg1QEgopCw8OOg406a1TCkmkbWILXhYPFQ8RUwpJAAABAAAAAAEPAPoABgAAJQcvATcXNwEPnw8/DziX7rwBWQtPsgAIAAAAAAEaAQcABgAKAA4AEgAWAB0AJAArAAA3Iyc3FzcfATMVIxUzFSMXIxUzBzMVIyczNycHJwcXIyc3FzcXBzM3JwcnB0YNEw0NGg4blpaWlpaWlpaWlkoNIg4aDQ0gDRMNDRoOLw0iDhoNDdgUDQ0bDgUTJRMmEiYTaCENGg0OTBQNDRsNWiENGg0NAAABAAAAAADzAMEABgAAPwEXByMnN5ZRDFgLWAxvUgxXVwwAAAABAAAAAADBAPQABgAANxcHJzU3F29SDFdXDJZRDFgLWAwAAAABAAAAAADPAPMABgAANyc3FxUHJ71SDFdXDJZRDFgLWAwAAAABAAAAAAD0AM8ABgAANwcnNzMXB5ZRDFgLWAy9UgxXVwwAAAACAAAAAAEHARoANwA7AAATMxUzNTMVMzUzFTMXFTMVIxUzFSMVMxUjFQcjFSM1IxUjNSMVIzUjJzUjNTM1IzUzNSM1MzU3MwczNSNeExITExMSEyYmJiYmJhMSExMTEhMTEyUlJSUlJRMTE4ODARklJSUlJRMTEhMTExITEyUlJSUlJRMTEhMTExITE5aDAAABAAAAAAD9AP0ACwAANwcXNxc3JzcnBycHhVURVVURVVURVVURllURVVURVVURVVURAAAAAgAAAAAA9AD0AAMABwAANxUzNQcjNTM4vBOWlvS8vKmWAAAAAQAAAAABBwCWAAMAACUVIzUBB8+WExMAAwAAAAABBwD0AAMABwARAAA3FTM1ByM1MyczNTMVIxUzNSM4qRODg3ATgxMmqc6oqJaEEhODE6kAAAAAAQAAAAAA4gDiABkAADcyFx4BFxYUBw4BBwYiJy4BJyY0Njc2Nz4BlgoKExwFAwMFHBMKFAoTHAUDBQUKEQkT4QMFHBMKFAoTHAUDAwUcEwoUEwkRCgUFAAEAAAAAARoBGgAaAAATMhceARcWFAYHBgcOASIuBDQ2NzY3PgGWEhEhMQoECQkRHg8hJCEeGBEJCQkRHg8hARkECjEhESQhDx4RCQkJERgeISQhDx4RCQkAAAAAAgAAAAABGgEaACoARAAAEyYiBzEGBwYHMQ4BFhcWFx4CPgE3MTY3NjcxNiYnMSYnMSYnMSYnMSYnFwYHDgEiLgQ0Njc2Nz4BMhceARcWFAa0Dx4PDg0ZDwgIAQMIFQsZHR8cDRkPCAMFAQQDCAcLCgwNDlMRHg8hJCEeGBEJCQkRHg8hJBEhMQoECQECBQUDCA8ZDR0fDhwWCg8IAQcIDxkNDg8fDg4NDAoLBwgDrh4RCQkJERgeISQhDx4RCQkECjEhESQhAAADAAAAAAEaARoADAAWAB8AABMyHgEUDgEiLgE0PgEHFBYXNy4BDgEVMzQmJwceAT4BliQ8IyM8SDwjIzxMDQ2fGUI7JOIODZ8ZQjskARkjPEg8IyM8SDwjgxQlEJ8VCRw3IRQlEJ8VCRw3AAABAAAAAAC8ALwACAAANxQGLgE0NjIWvBYgFRUgFpYQFgEVIBYWAAAAAgAAAAAAvAC8AAoAFwAANw4BLgI+ATIWFBc2NTQmIyIOAR4CNqYECgsIAgQJDgsMBxYQCxMJBBEWFYwFBAIICwoHCw4PCgsQFg0VFhEECQADAAAAAADhAOIADAAVABYAADcyPgE0LgEiDgEUHgE3FAYiJjQ2MhYnlhQjFBQjKCMUFCNFHSgdHSgdMUsUIygjFBQjKCMUSxQdHSgdHSAAAAUAAAAAARoBGgAHADQAPQBGAE8AAAEjBxUXMzc1ByM1Mx4BMzI2NCYiBhUjFSM1MxUOARUUFjI2NTMUFjI2NCYjIgYHIy4BIzUzBzQ2MhYUBiImJzIWFAYiJjQ2MzIWFAYiJjQ2ARD0CQn0CRKpKwQSCg8WFh8WOCUlCAsWHxYmFh8WFhAKEQUwBREKqXEKEQsLEQo4CAsLEQoKeQkKChEKCgEZCfQJCfTqJQgLFh8WFg844SwEEgkQFhYQEBYWHxYKCQkKJqkICwsRCgp5ChEKChEKChEKChEKAAAFAAAAAAEaAPQACwAPABMAGAAcAAA3FzcXNyc3JwcnBxcnITUhFSE1IRc1IxUzFTUjFbwNHh4PICAPHh4NHscBBv76AQb++paWlpZADR4eDR4eDyAgDx6DE0sTQgkSORMTAAAABAAAAAABFgEaABYAIgAsADYAADcjNTMVMzUnIzUjNCYiBhUjFSMHFRczNT4CHgEUDgEuAhcHNSMVJwcXMzcnMxcHJxUjNQcngziWEwocEhYgFRQbCgpBAQkLCgcFCgsIBYYUExQOJQ0kfA0lDhQTFA0mqCUvCRMPFhYPEwm8CeUFCQIECgoKBQEGCqwUZGQUDSQkWyQNFGRkFA0ABAAAAAABBwEHAAsAGQAgACQAADcnBycHFwcXNxc3LwE3MxcVByMVByMnNTc7AhcVMzUjFyMVM6IOGhsNGxsNGxoOGykTgxMTJhKEEhImE0sSJoNLhISUDhsbDhobDRsbDRt6ExODEyYSEoQSEkuDOIQAAAABAAAAAADoAOgACwAANxc3JzcnBycHFwcXlkQORUUOREQORUUOiUUOREQORUUOREQOAAAAAgAAAAABGgD2AC8AOQAANzMeARQGIzUyNjQmJyMnLgIGDwEnJiciBw4BHgE7ARUjIiYnLgE+ATc2Fz4BHgEHFzUzFTcXByMn4AEXISEXDxUVDxECAhcfGwYGEAUFFA0KBgsYDgkJDhoJDAcLGxEODgkmKx9fGBMYDSgNKLwBIC8hExYeFgEQDxYFEA4OAwEBDgocGhATCwsNIyIXAwMEFBYGH3YYZmUXDSgoAAIAAAAAARoA9gAyADwAADczHgEUBisBNTMyNjQmJyMnLgIGDwEnJicGBw4BHgE7ARUjIiYnLgE3PgIXPgEeARcHJxUjNQcnNzMX4AEXISEXJSUPFRUPEQICFx8bBgYQBQUUDQoGCxgOLy8OGgkPBAsHFxwOCSYrHwMfGRIYDSgNKLwBIC8hExYeFgEQDxYFEA4OAwEBAQ0KHBoQEwsLECsSDBEFBBQWBh8WSBlmZRgOKCgAAAIAAAAAARoA9gAVAC4AADczHgEUBisBIiYnLgE+ATc2Fz4BHgEHMzI2NCYrAScuAgYPAScmJyIHDgEeATPgARchIReMDhoJDAcLGxEODgkmKx9/gxAWFhARAgIXHxsGBhAFBRQNCgYLGA68ASAvIQsLDSMiFwMDBBQWBh9zFh8WEA8WBRAODgMBAQ4KHBoQAAcAAAAAARoBGgADAAcACwAPABMAFwAnAAATMxUjNzMVIxczFSMVMxUjFTMVIwczFSMnBxUzNTMVIzUjFRczNzUnXhMTJUtLJktLS0tLSyZLS10TE+HhExPhEhIBB8+8ExMSExMTEhMTzhJeXs9xcRISzxIAAwAAAAABFAD0AAYADQARAAA3BxcHJzU3MwcXBxc3NQcXNydYMTENODiRDjIyDji4EV4RwzEyDTgNOQ4xMg04DWAIuwkAAAAABgAAAAABLAEaABUAKwBBAFMAXQBlAAATFRQWFzMWFxYdASM1NCYvASYnJj0BMxUGFhczFhcWHQEjNTQmJzUmJyY9ATMVFBYXMRYXFh0BIzU0Ji8BJicmPQEHNzMyFhQGKwEOASsBIi4BPQEXNSMVFBY7ATI2NxUzFjY0JiM4BwgBCgQIEwcIAQoECEwBBwgBCgQIEwYJCgUHSwYJCgUHEgcIAQoECHASxRQbGxQMBigaOBUiFbypIRc5FyETCQwQEAwBGQkGCAcIBQoMCgoGCAYBBwYKDAkJBggHCAUKDAoKBggGAQcGCgwJCQYIBwgFCgwKCgYIBgEHBgoMCXATHCcbGR8UIhQ5ODg4GCEhUDgBERcRAAAAAAQAAAAAAQcBBwADABEAGAAcAAA3IxUzJzczFxUHIxUHIyc1NzsCFxUzNSMXIxUzqV5eSxODExMmEoQSEiYTSxImg0uEhIMSgxMTgxMmEhKEEhJLgziEAAACAAAAAAEaARoADAAUAAATIg4BFB4BMj4BNC4BBzUyHgEUDgGWJDwjIzxIPCMjPCQfMx8fMwEZIzxIPCMjPEg8I/PhHzM+Mx4AAAAACgAAAAABLAEaAAcACwATABcAHwAjACsALwAzAD0AABMHFRczNzUnBzUzFQ8BFRczNzUnBzUzFQc3MxcVByMnNxUzNTcHFRczNzUnByM1MxUjNTMnIxUzBxc3NScHHAkJOAoKLiUvCQk4CgouJTgJOAoKOAkTJZ8JCTkJCQolJSUlbjo6Ew0iIg0BGQk4Cgo4CTgmJiUKOAkJOAo5JiYvCgo4CQkvJSWDCXEJCXEJOCZeJRMTEgwiDSINAAADAAAAAAEaARoAEgAeACcAAD8BFQcnNSMnNTczFxUjNSMVMx8CNzUzNzUnIwcVFzcjNTMVIwcVJ0sTFhAcCQnhChPOHAl2IxAcCQmWCQlLQoQdCRZYExsVBy8JlgkJVEuECUIiBhwKXQoKXQoTS0sJDxUAAAoAAAAAARoBBwAGAAoADgAUABgAIwAnAC0AMQA4AAABIxUzFTM1JzMVIyczFSMXHQEzNzUHNSMVJyMPATUnIxUXNzM3NSMVBzUjFRczPQEjFTcVIzU3MxUBEBwTEnAlJUslJakJCTglJgkHKAoJEDYFgxLhEwkKExMTCRwBBhITHAkSEhKEEhMJHCUTExMDKCEKQgc2SyUlOBIcCUslJV4THAkSAAAAAAIAAAAAARoBBwAXACMAABMzFxUmJzUjFTMXFT8BMwYVIwcnNSMnNRciDgEeAj4BNTQmHPQJCArhLgooBwsCBTYQLwnOERwNBhgiHxMhAQcKgAkGaJYKISgDCQo2By8JqXoTHyIYBg0cERchAAIAAAAAARoBBwALABQAAAEjBxUXMxUXNzM3NQcjDwE1JyM1MwEQ9AkJLxA2fwkSegcoCi7hAQcKqQkvBzYJqZ8DKCEKlgAAAAUAAP/9AS0BGgAsADIANgBDAEoAADcGIzUjFS4CJzM1Iz4CNxUzNR4CFyMVMwcWFzY1NC4BIg4BFB4BMzI3JjcvAR8BBi8CHwE2FzIWFRQOAS4CNhc3JwcnBxerBgYSGy4cAhISAh0tGxIbLhwCEhIBCQgDIzxIPCMjPCQODQQNNyZMGwYNEiQSRw8RFyETHyIYBw0uIg8cEAwYJwESEgIdLRsTGy0cAhISAhwuGxIMAgQNDiQ8IyM8SDwjAwhKG0wmNwQNJBIkJgoBIBgRHA0GGSEgPy0LJQ4PEwAEAAAAAAEsARoALAAyADYAPwAANwYjNSMVLgInMzUjPgI3FTM1HgIXIxUzBxYXNjU0LgEiDgEUHgEzMjcmNy8BHwEGLwIfARQWMjY0JiIGqwYGEhsuHAISEgIdLRsSGy4cAhISAQkIAyM8SDwjIzwkDg0EDTcmTBsGDRIkEi8gLyEhLyAnARISAh0tGxMbLRwCEhICHC4bEgwCBA0OJDwjIzxIPCMDCEobTCY3BA0kEiRVFyEhLyEhAAAAAAQAAAAAARoBGgADAAcAIwAwAAA3Fy8BFy8BFzMOAgc1IxUuAiczNSM+AjcVMzUeAhcjFQcyPgE0LgEiDgEUHgGpJkwmVBIkEnkCHC4bEhsuHAISEgIdLRsSGy4cAhJeJDwjIzxIPCMjPKlMJkxUJBIkGy4cAhISAh0tGxMbLRwCEhICHC4bEnojPEg8IyM8SDwjAAAG//8AAAEsAQsADAAYAE4AZwBxAHsAADcyFh0BFAYiJj0BNDYXNCYiBh0BFBYyNjUnFhc3NhcWFxYVFAcXMx4BHQEUBw4BDwEGBwYHBiInJicmLwEuAScmPQE0NjczNyY1NDc2NzYPARUXFhcWMjc2PwE1JwYjIicmJwYHBiMiNyYOARQWMjY3NjcGFx4BMjY0LgF1BggIDAgIVggMCAgMCDICAQMRJiMQDQUDAQ4PAwIHBwsGBwwNKVIpDQwHBgsHBwIDDw4BAwUNECMmSQEBCgwkRiQMCgEBDBQhEgYEBAYSIRQ6CDAPDCoTAgMnBwMCEyoMDzBxCQYcBggIBhwGCQ8GCQkGHAYICAayAQIDEwUEExEeEwwQBxkOGAUGAwkFCAUEBwUSEgUHBAUIBQkDBgUYDhkHEAwTHhETBAWCAlABBgUPDwUGAVACBhMGCAgGE2IIBRMoDhQUFggIFhQUDigTBQAAAAADAAAAAAEHARoABwAMABMAAD8BMxcVByMnNycjFTMnBxUXNTMnSxNlRBOWE6k4Xpa8EhJ5E+ETQ4sTE4M4u/MSvBPPEgAAAAAEAAAAAAEHAPQABgAbACgANgAANw8BJzcXNxc+ATU0LgEjIgcmIzYzMh4BFAYHNgciLgE0PgIeAg4BBzI+ATQuASIOARQeARenLw4cDRUoSQkKEh4SDQwNDxceFycXGRQFZRIeEhIeJB4RARIeEhcnFhYnLicWFicXkDgBHA4VMCsJGA0SHhIFBRMXJy4oCw4rEh4kHhEBEh4kHhISFicuJxYWJy4nFgEAAAAABAAAAAABGgDiAAMABwAXABsAACUVIzUVMxUjNyMiBh0BFBY7ATI2PQE0JgczFSMBB+Hh4eHhCAsLCOEHCwtAJibOEhIlXpYLCIMICwsIgwgLcBMAAQAAAAAAzwCWAAMAADczFSNecHCWEwAABgAAAAABCQEcAAwAHAAoADAAOgBIAAATPgEeAg4CLgI2FxYzMj4BNTQuAg4CHgE3FwcWDgEuAj4BFwcWNjQmDgEWNwcWFRQHFz4BLwEmIyIOARQXByY+AhdJG0E7JAQdNkE6JQQcJhogHC8cFiUwLiQTAxiCDSgEBREUDwIMFAoSBQoHCAQBVA8FCQ4MAwo0CwwSHhIJDRADJjgaAQUSBB02QTskBBw3QTqoEhwvHBkqHgkMIC0vKooNKQkUDAIOFREFBCEDBAsFAQcHKw4LDRIPDhMuFBcFEh4kDw4YOSsMDQAAAwAAAAAA9AEaABMAJAA1AAA3NC4BIg4BFRcjFRceATI2PwE1IycyFx4BFAYHBiInLgE0Njc2FwcOAQcGIicuAS8BNRY3Fjf0GSwyLBkBAQEENUg1BAEBXRUTEBMTEBMqExATExATYAEBEw8SKhIPEwEBIygoI+oNFgwMFg0CpgcRFxcRB6YeBQQOCg0EBQUEDQoOBAXEAwUMBAUFBAwFA4wUAQEVAAAABQAAAAABKAEHACUALAA1AD8ARgAANwcuASIGBycHFwcVIxUzFRYXBxc3HgEyNjcXNyc2NzUzNSM1JzcnMhYVIzQ2Fw4BBy4BJzUzJwcVMzUXBxU3NQc1Nyc1FxWJEQQZIBkEEQ0WAxMTAQQYDRUHFhgWBxUNGAQBExMDFksMEDgQMgIVDw8VAUsqDxOOMEdHaY+lgxAPFBQPEA0WAhMTAQkJGA0VCgsLChUNGAkKARITAhYNEAwMEEsPFQEBFQ8cswhWRF8gFy8QZBZGXxduEAAAAAAEAAAAAAEWAQcAJQAsADUAPwAANwcuASIGBycHFwcVIxUzFRYXBxc3HgEyNjcXNyc2NzUzNSM1JzcnMhYVIzQ2Fw4BBy4BJzUzJzcXFQc1NycVI4kRBBkgGQQRDRYDExMBBBgNFQcWGBYHFQ0YBAETEwMWSwwQOBAyAhUPDxUBSxMOqWxWjhODEA8UFA8QDRYCExMBCQkYDRUKCwsKFQ0YCQoBEhMCFg0QDAwQSw8VAQEVDxyrCHEQSBc5X0QAAAAEAAAAAAEpASwAJQAsADUAQAAANwcuASIGBycHFwcVIxUzFRYXBxc3HgEyNjcXNyc2NzUzNSM1JzcnMhYVIzQ2Fw4BBy4BJzUzNxUHNTcnFSYnNTeJEQQZIBkEEQ0WAxMTAQQYDRUHFhgWBxUNGAQBExMCFUsMEDgQMgIVDw8VAUu4gGqiCQoOgxAPFBQPEA0VAxMTAQkJGA0VCgsLChUNGQgKARITAxUNEAwMEEsPFQEBFQ8cYBBRFkNndgYDfggAAAAABAAAAAAA4wDjAAwAGAAcACAAADc+AR4CDgIuAjYXHgE+AiYnJg4BFjcjFTMVIxUzbBEoJBcCEiEoJBYDEh0MHBkPAg0LEikYCEo4ODg41AwCESIoJBcCEiEoJF4IAgwXHBkICwgjKjsTEhMAAwAAAAAA4QDiAAwAEAAUAAA3Ig4BFB4BMj4BNC4BFxUjNTcVIzWWFCMUFCMoIxQUIxJLS0vhFCMoIxQUIygjFF4SEjkTEwAAAgAAAAAA5gDhAAUACwAANyMHFzM3ByMnNzMXulYsLFYsOjoeHjod4UtLSzMzMzMAAQAAAAAA5gDhAAUAADcHIyc3M+UrViwsVpZLS0sAAAACAAAAAADhAOEAAgAFAAA3MycHMydLlksjRiNeg2w9AAEAAAAAAOEA4QACAAA3FyOWS5bhgQAAAAIAAAAAAPQA9AADAAcAAD8BFwc1NycHOV1dXTQ0NJZeXl0pNDU1AAABAAAAAAD0APQAAwAANxcHJ5ZeXl70Xl5eAAAAAwAAAAAA4wDjAAwAEAAUAAA3PgEuAg4CHgI2JyMVMyc1MxXUDAIRIigkFwIRIigkJxcXFxdsESgkFwIRIigkFwIRFhMlS0sABQAAAAABHAEcABUAHgBEAEwAVgAAEzczHwIVDwErATU0JzM1IxUmIz0BFwcmLwE3JzcXBzcXBxcVMxUjFQYHFwcnDgEiJicHJzcmJzUjNTM1Nyc3Fz4BMhYHLgEOARUzNAc2NzUjFR4BFzZYArEBDwEBDwFcB2CsCQqGIwICBhwtCjRXEQ0VAhMTAQQYDRUHFhgWBxUNGAQBExMDFg0RBBkgGRUGERAJOAIKAUoBFQ8PARsBAQ8BsQIPAgoHrFsCXAFnIwMDBRwuCjM7EA0VAxMSAQoJGA0VCgsLChUNGQgJARMTAxUNEA8UFAcGAwYOCQxUCg8cHA8VAQEAAwAAAAABDAEHAAMACQAMAAATIxUzNwcVFzc1DwE1SxMTPg8PgxZpAQfh1Qe8B10QCEyYAAMAAAAAAQ8BBwADAAkADAAAEzMVIzcHFRc3NQ8BNS8cHFwWFoQhXQEH4dkLvAteFgtChAADAAAAAAEWAQcACQAuADgAAD8BFxUHNTcnFSMXDgEdARQOAisBIi4CPQE0LgI1ND4EMh4EFRQGByMVFBY7ATI2NV4OqWxWjhMVBQYCAwUDEAMFAwIGCwcDBggKDAwMCggGBAccFgIBEAEC/whxEEgXOV9EYAUNBxADBQMCAgMFAxAHDQsQCgYLCwgGAwMGCAsLBgoQGRYBAgIBAAAEAAAAAAERARoAEQAfADcARAAANyYnNycHJicmBwYPARc3Njc2BwYPASc3Njc2Fx4BFxYHNycHJzcnBycHDgEUFhcHFzceATI2PwEHBiIuAjU0PwEXBwb/AwUZCxoHCRQUCwgdUR0JBAgXAwYSOhIGBxAQBwsEBmEcDBsjHAwcCx0JCAUGGQsaBxIVFQgdNggQDwwGDBI6EgbkCQcaCxkGAgcIBAkdUR0ICxQOBwYSOhIGAwYGBAsHEG4dDB0jHQwdCx0IFRURCBkMGQUGCQgdGgQHCw8IEQwSOhIFAAAAAAYAAAAAARoBAAADAAcACwAPABUAGAAANzUzFSczFSM3FSM1HQEzNSU3FxUHJzcVN3GoXV1dXaio/voOZWUOE0pxEhJLE0sTE6kTE60HQw9ECHVjMQAAAAACAAAAAADYAPQAAwAHAAA3MxUjNxUjNVQdHYQc9Ly8vLwAAAACAAD//QEWAQcAGgAkAAA3FA4BJicHHgE+Ai4BBgc1IxUXMzUjPgEeASc3FxUHNTcnFSOGGScjCBIKLTIjBxovMQ8TCSwYCiMlFygOqVlDjhNLFB8IEhIHFxkHJTIsEw0UFzIKExEOCh6hCHEQOxYtX0QAAAUAAAAAARwA9AAEAAkADgASAC0AADc1MwYHNzY3IxUXJicjFSUVITUXMj4BLgEGBzMVIyc1MxU+AR4BDgImJzceARNhAgEXCQuJaQUDYQEG/vrHEhoGESEgCRQlCBANKicWBh4qJQkPBhdxEgkJOAoIEnEJChO8ExO8FiIeDAwPEAgqExELESQrHgcVFAYNDwAAAAABAAAAAAEMAQ0AHQAANxQOASYnBx4CPgI1NC4BBgc1IxUXMzUjPgEeAe8mOjUMGgooMjMpFypERRYcDkEjDjU3I5YeLg0bHAsYIQ0KIC8aJDsXFRwiSw4cGRYPLQAAAAADAAAAAAD+AQcAAwAJAAwAABMjFTMnFxUHJzUfATX9HBxcFhaEIV0BB+HZC7wLXhYLQoQAAwAAAAABEAEHAAgAEgAXAAA3FAYuATQ2MhYzLwEjBxUXMz8BByM1Mxe8FiAVFSAWVFARXxgYXxFQYV9fT5YQFgEVIBYWWQgYshcIWUqyWQACAAAAAAEQAQcACQAOAAAlLwEjBxUXMz8BByM1MxcBEFARXxgYXxFQYV9fT6ZZCBiyFwhZSrJZAAIAAAAAAPwBAAAFAAgAAD8BFxUHJzcVN1AWlpYWHG70C2QXZAytk0oAAAAAAgAAAAABDAEMABcAIAAANzUzFT4BMzIeAR8BIzUuAiIGBzMVIycXIiY0NjIWFAYhHBAwGx00IAIBHQIYJy4pCzVOEnUQFRUgFhbASy8TFhsuHAUEFCIUFhMcEpAVIBYWIBUAAAIAAAAAAOoBGgAKABMAADczNycHNSMVJwcfARQGIiY0NjIWlgpJFDEcMRRJLxYfFhYfFnlJFDF0dDEUSUEQFRUgFhYAAgAAAAAA6gEaAAoAEwAAEyMHFzcVMzUXNycXFAYiJjQ2MhaWCkkUMRwxFEkbFh8WFh8WARlJFDF0dDEUSeEQFRUgFhYAAAAAAgAAAAABDAEMABcAIQAAJTUjFS4BIyIOAQ8BMzU+AjIWFyMVMzcHMjY0LgEGFBYzAQscEDAbHTQgAgEdAhgnLikLNU4SdRAWFiAVFRDASy8TFhsuHAUEFCIUFhMcEpAVIBUBFiAWAAACAAAAAAEHAQcABwALAAATFxUHIyc1NxcjFTP0ExO8EhK3srIBBxO8EhK8ExiyAAAFAAAAAAErASwAAQANAEEASQBZAAA3NRcnNxc3FwcXBycHJzcVMzcXBxUWFQczFSMxBg8BFwcnBw4BIiYvAQcnNycmJysBNTM1NDc1JzcXMzU0PgEyHgEHFTM1NCYiBhc1IwcGFRQeAjI+AjU0K1smDSgnDSYmDSgnDXQQJA0iDAEsLgYPASsNKQEOJCYkDgEpDCoBDwUBLiwLIw0kEhAdIh0Ra1kaJRp6mwEJDhkfIh8ZD4sBCSYMKCgNJiYNKSgNkAwkDSIBHh8OEh8ZASsMKQIPEhIQAigMKgEZHhIOIBwBIw0kDBEdEREdEQwMExoaMgEBGhwZLSERESEtGR0AAgAAAAABGgEHABQAHgAANzUyNjc2NSMnNTczFxUnNSMVMwcXMzcnBzUjFScHF0sREQICVQkJ9AkS4WsJLigvDR8THg4vExMFBQMFCrsKCq0TkakJLy8NH3l5Hw0vAAAAAwAAAAABGgDhAA0AEQAVAAAlBzUnIwcVFzM3NRc3NQcjNTMXJzU3AQs9CakJCakJPQ5dlpZLOTnTIygJCYQJCSYjCWttcF0fCiIAAAUAAAAAARoBBwANABcAIAApADIAADczFxUHIyc1NzM/ATMXBzM1Iy8BIw8BIxciBhQWPgE0JhcyFhQGLgE0NjciBhQWMjY0JslHCQn0CQlHEAc4B5PhQgcQMBAHQRwEBgYIBQVQEBYWIBUVEBchIS4hIfQKqAoKqAoQAwO5lgMQEAMTBQgGAQUIBRIWIBYBFSAWEiEuISEuIQAAAAMAAAAAAPQBGgAHAAsADwAAEzMXFQcjJzUXMzUjFzMVI1SWCgqWCRODgy8lJQEZCfQJCfTq4bwTAAAAAAMAAAAAAQcBGgAHAAsAFwAAEzMXFQcjJzUXMzUjFyMVIxUzFTM1MzUjHOEKCuEJE87OcBM4OBM4OAEZCeEJCeHYzyY4Ezg4EwAAAAADAAAAAAEaARoABwALABEAABMzFxUHIyc1FzM1IxczFQcjNRz0CQn0CRPh4ZYlcCYBGQn0CQn06uEmJXEmAAAAAwAAAAABGgEaAAcACwAUAAATMxcVByMnNRcVMzUHMjY0JiIGFBYc9AkJ9AkT4XEXISEuISEBGQn0CQn0CeHhqSEuISEuIQAABQAAAAABGgEaAAkADgAaAB4AJQAAEx8BFQcjJzU3MwczNScjFyMVMxUzNTM1IzUjBzMVIzcfARUHLwG2OAYTqRMTcXGpOHFLJSUTJiYTJV5eiysFEgE4ARQ4DqgTE+ES86g5SxMmJhMlgxPOKw27E844AAADAAAAAAEHARoAAwALAA8AADcVIzUnMxcVByMnNRczNSO8XkLhCgrhCRPOzqkTE3AJ4QkJ4djPAAMAAAAAARoBGgAHAAsAEgAAEzMXFQcjJzUXMzUjFzMVNycVIxz0CQn0CRPh4SU4Xl44ARkJ9AkJ9OrhhDhLSzgAAAAABAAAAAABBwEaAAkADgAaAB4AABMfARUHIyc1NzMHMzUnIxcjFTMVMzUzNSM1IwczFSPJOAUSqRMTcHCpOXBLJSUTJSUTJV1dARQ4DqgTE+ES86g5SxMmJhMlgxMAAAAABgAAAAABGgD0AAcACwAPABcAGwAfAAA/ATMXFQcjJzczNSM1MzUjNzMXFQcjJzUXMzUjNTM1IyYJXgkJXgkSS0tLS3peCQleCRNLS0tL6goKqAoKCXESExMKqAoKqJ8mJUsAAAEAAAAAAPcBCgAZAAATFRczNSM3PgEeAgYPARc3PgEuAgYPATVCCUIwEg0iIxkKCg1hDWIQDAwhLCwQDgEHQgkSEg0JCRkjIwxiDWERLCwhCwsRDScAAAADAAAAAAEaARoACQAMABAAABMjDwIXPwI1BzcXNyc3F/gbmwMsGk0FmuwdGxAhliEBGZoFTRosA5sbyzgbCiGWIQAAAAMAAAAAARoBGgANABEAGAAAJScjNScjBxUXMxUXMzcnNTMVFyM1Mzc1MwEZCY0JXgkJLwm8CfNLlqkcCYSyClQJCZcIVQkJZ3FxXUsIHQAAAwAAAAABBwCpAAgAEQAaAAA3FAYiJjQ2MhYXFAYiJjQ2MhYXFAYiJjQ2MhZLCxAKChALXgsQCwsQC14LEAsLEAuWCAsLEAsLCAgLCxALCwgICwsQCwsAAAIAAAAAARoBGgALABwAADczFSMVIzUjNTM1Mwc1MxUzNSM1MzUjNTMXFQcjSzg4Ezg4EzgT4XFxcXoJCfThEzg4Ezj9Z12DEyUTCs4JAAAAAwAAAAAA4gDhAAsAGAAhAAA3JwcnNyc3FzcXBxc3FA4BIi4BND4BMh4BBzQmIgYUFjI2rBYWERYWERYWERYWJBQjKCMUFCMoIxQTIS4hIS4hbxYWERYWERYWERYWFhQjFBQjKCMUFCMUFyEhLiEhAAMAAAAAARYBGwAVACgANAAAEx4BFxYVFAcOAQcGJy4DNzY3PgEXNjc2JzQmJyYnJgYHDgEWFx4BJzcXBxcHJwcnNyc3oRYpECYeDyYWMCcUHhADBw8mEishJhkZAhEPHSYTJg8gFyEiECYELQ0tLQ0tLQ0tLQ0BGQEUECk3KycSFwQJFgsiKi4VLhkMDPQJHyIlFyoQHQMBCQsYTkgTCgZ8Lw0vLw0vLw0vLw0AAAAABAAAAAABHQEaAC8AQwBQAFQAABMjBycHFwcVFwcXNxczJicjLwEHJzcvATU/ASc3Fz8BMx8BNxcHHwEVFhc1JzcnDwEyFhcGBy4BDgIWFwYHLgE+AR8BPgEeAg4CLgI2FxUzNbA0CiYmGi0tGiYmCicKCAYJDiYPGQYsLAYZDyYOCRYJDiYPGQYsCwgtGiYmJAwTBAkIAQsOCgEIBwYDDQ0EFQ4YDiMhFwUNHCIgFgYMCF4BGS0aJiYKNAomJhotCAssBhkPJg4JFgkOJg8ZBiwsBhkPJg4JBggKJwomJhowDgsDBgcIAQoOCwEICQUXGxIBNAwGDBwjIRYFDBsiIR4TEwAFAAAAAAEHAQcAAwAHABUAHAAgAAA3IxUzBzUjFSc3MxcVByMVByMnNTc7AhcVMzUjFyMVM6leXiYSExODExMmEoQSEiYTSxImg0uEhIMSJl5eqRMTgxMmEhKEEhJLgziEAAAAAgAAAAABGgDjAAgADAAANyc3FwcnNyM1JzMVI/UsDUNDDSy9JRMTqS0NREMNLRM4gwAAAAYAAAAAASwBLAAHAAsAFwAbAB8AIwAAEzczFxUHIyc3FTM1BTU3MxcVMxcVByMnNzUjFRcjFTsCNSOpE10TE10TE13+5xNeEl4TE84TcV5eXl4SXl4BGRMTXRMTXV1dqHATE14SXhMTcF5eEl5eAAAEAAAAAAEUARQAIAAmADcAOwAAEwYUHwEOAQcGHgE2Nz4BNxcGFBYyNxcWMjY0LwExJyYiHwEGIiY0NyIHFzYzMhYXHgE+AScuAgcXLgEcAwIzEhoFAQQHBwEFFxEWDh0pD0oDCAUCgGgDCGIsCRoSHxMRDwsKJTkJAQcHBAEHIzMaMAEbARACBwMzDSUWBAcCBAQUIAsXDikeD0oDBQcDgGgDdCwJExlRBRADLiMEBAIHBBsrGCwvExsAAAMAAAAAAREA6AAIABEAKAAANzIWFAYiJjQ2FyIGFBYyNjQmJzIeARcWDgEmJy4BIgYHDgEuATc+ApYVHR0qHR0VDRISGhISDRwzIwcBBAcHAQk5SjkJAQcHBAEHIzO7HSkeHikdEhMaEhIaEz4YKxsEBwIEBCMtLSMEBAIHBBsrGAAAAAP//wAAARoBGgAVADsARAAAEwcVNxc1MxUjBzUjFwczFRc3Mzc1Jwc+ATQuASIOARQWFw4BBwYPATM1ND4COwEyHgIdATMnJicuASciJjQ2MhYUBlQJCQqpIRgmAQEUECIiCQmYDhASHiMfERANDRYHBAEBEwoSGA0BDRgSChMBAQUGFjITGxsnGxsBGQkdAQEUXhgYCgkcByMJcQmxCR0jHhISHiMdCQYWEAsMEgoNFxMKChMXDQoTCwsQFg8bJxsbJxsAAAAACAAAAAABBwEaAAkADgAYAB0AJwAxADsAQAAAEx8BFQcjJzU3MwcVMzUnBxQzMjY1NCMiBhc0MhQiFzM1IzUHFTcVIwcjNTM1BzU3FTM3FDMyNjU0IyIGFzQyFCLGPgMKzgkJkYi8OGgZDQ4ZDQ4QFBQ8LQ8fEA8aLQ8QIA4UGg0NGQ0OEBQUARc+B7YJCfQJEuGoOUwlFBIlFBIaMgsMPQYNAy1qDC0DDQY9GCQTEyUUExoyAAAAAAUAAAAAAQcBGgAJAAwAEwAaACEAABMfARUHIyc1NzMHMycjFTM1Iyc1BzcnBxUXPwIXFQcnN8Y+AwrOCQmRBDg4hLxCCUoiDSkpDSQNKSkNIgEXPge2CQn0CUs54ZYJQo4jDSkNKQ1EDikNKQ0iAAAHAAAAAAEaARoAEQAUABwAJQApAC0ANgAAEzMVFzMVMzUvAiMHFRczNSM3FyMXIwcVFzM3NQcVJyMHJyMHNRc3FysBNTcXNzI2NCYiBhQWJnAJQhMDPgaRCQlCOIM4OGeWCQmWCRIfDRYoDQ1PDx0eXRMvJQQGBggFBQEHQgkTKQc+Agn0CRPhOTgJcQkJcQpLHhYoDCdQDxwbEy5BBgcGBgcGAAkAAAAAAQcBGgAOABEAGQAeACgALgA3AD8ASQAAJS8BIwcVMzUzFRczFTM1BzUXDwEVFzM3NScHFSM1MwcjFSM1MzIVFAYnIxUzMjQXNic0ByMVMzInNTM2FhQGJzcjFSM1MxUjFTMBBD4GkQkScQlCE0s4xQkJzgoKCby8lgYNFBUNCgUFCkIJAR4UFA0UBgcLCghNEg0hFBLZPgIJZ15CCRMpBDk5OAlxCQlxCV4SXTgTORMICxsRESYJDBwBOAsjAQsPCwELFjkLDgAAAAAEAAAAAAEaAQcAAwAhACsAMgAANzM1Izc1NzMfATMXFQcjJzUjJzU3Mx8BMxcVIzUjLwEjFRcnIxUzPwEzNSMHIxUzNSMHJhISEgpTCAhrCQnOChwJCVMICGsKE2cICERxCEQ7CAhxaBNBvGsIXksTCQkEDgqWCQkvCakKBQ4KLiUFDjgPDzkOBRM4S10OAAAEAAAAAAEaAQcACgASABwALAAANzMXFQcjJzU3Mx8BNTcjDwEjFTczNyMvASMVMzcXJzcXFQcnNyMOARcjNDY3kX8JCfQJCV4HhQF3EAZUZnoBegcQUFAQMRkOKSsNGxoPFQETHhf0CrsJCc4KA8wdZxADcZYTAxA5EEkaDSoNKg4ZARUOFiABAAAAAAUAAAAAAQcBGgARABQAHAAgACoAABMfARUHIzUzNSMnNSMVIzU3MwczJwcjBxUXMzc1ByM1MwcVIzUHJzcjNTPGPgMKQThCCXESCZEEODgdgwkJgwoTcHATEjINMSE4ARc+B7YJE5YJQktUCUs5XgqDCQmDeXAcOCExDTISAAAACwAAAAABBwEaAAoADgAjACcAKwAvADMANwA7AD8ASQAAEzMXFQ8BFQcjJzUXIxUzFTM1LwE1IxUHIxUjNSMnNSMVMzUzNRUzNScVIzU3MxUjNRUjNTczFSM1FSM1OwE1Ixc3NSMVHwEVMzUvzgoDEAq7CUsTE0sQAyYJCRMKCRMmExISExMSEhMTEhITExIScxA4DwMTARkJXgYRfwkJ9Akmu3YQB1QvChISCi/hEhMTExMTExMTJRISExMmExMTFhBRUQ8HenkAAAAAAwAAAAABBwEaAAkADwASAAAlLwEjBxUXMzc1ByM1MxUzJzUXAQE4DXETE6kTE6leSzg43DgFEuETE6io4UsSOTkAAAAEAAAAAAETASwADQAQABcAHQAAEyMHFSMHFRczNzUzNzUnFyMHIzUzFRczNyM1MxUz23ESORISlxI7EDgeHiaWORJLS5ZeOAEsEzgTvBISORKXHh7hu3ESE7s4AAEAAAAAARoBBwAHAAABFQcVIzUnNQEZXUteAQcgWWhoWSAAAAIAAAAAARoBBwAHAA8AAAEVBxUjNSc1FxUzNTc1IxUBGV1LXnAmXuEBByBZaGhZIHFeXlkFBQAAAgAAAAAA+wEaAC0AUwAANyc2JicmJwYHBhcWFwcuAjc1Njc2NzY/ATY3Njc2JzceAQc2PwEVFhcWBw4BJxcGFhceAQc+ATc2JicOAS8BNiYnBgcGDwEGBwYVMQYWFyY3NjerCgkDCxIEDgIDBgMKCxQfEQEBAwQJChAICQcKAwQGDR8bCQYEEQoGCwsJJTsQAQkJDQoEDBIFBQQIBhMKBgwJFAIRCQ8CFwkEARAPCgUGHBMOCxwJDxYTEQ4NCA4OBBglFAcJCQ0NDw4ICgsPDBEMDBZHJQcIAgEQEyUbFBp/Bw0ZCQkcDwQRCxEjEAkJAg0bOxYWGg0PAhQXDAoSHwoXFRwfAAAAAgAAAAABCwEaAAYADQAAAScHJwcXMzcnBycHFzMBCg1wcQ13DXcNcHENdw0BDA1wcA13Bg5xcQ53AAAAAgAAAAABDgEaAAYADQAANxc3FzcnIwcXNxc3JyMTDXBxDXYNeA1wcQ12DaENcXENeOgNcHANeAACAAAAAADuAQAABgANAAA3BycHFzM3BzcXNycjB+BKSwxRC1GjTUwMUwtS/0pKC1FRzkxMC1JSAAQAAP//AS4BBwAUAB4AKwAyAAA3MxcVJic1Iw8BIxUzFhcjJzU3Mx8BMzcjLwEjFTM3Fz4BHgIOAi4CNhc3JwcnBxeRfwkIC3YQBlVgAgRvCQleBwt6AXoHEFBQEDERKCQXAhIhKCQWAxI4LQ8nGAwg9ApUBwQbEANxCQkJzgoDNhMDEDkQQgwCESIoJBcCEiEoJFI7DDQTDhoAAAUAAAAAARoBBwASABwAIAAkACgAADczFxUjNSMPASMVMxUjJzU3Mx8BMzcjLwEjFTM3FzMVIzczFSM/ARcHkX8JEncQB1ReZwkJXgcLegF6BxBQUBAQExMmEhIlEiYR9ApBExADcRIJzgoDNhMDEDkQNXBwcGkHagYAAAADAAAAAAElAQcADQAZACAAADczPwEnIzUnIy8BIwcVNzMfATMVIw8BIw8BFyM3Mz8BMxzOCTIJFQpsEQZeCRNQEAdnVQYQRwkTvbofRQYQbSYGhAwuChADCs7FEAMlAxAHOTFeAxAAAAMAAAAAARoBBwAKABIAHAAAJSMvASMHFRczNzUHFSM1Mz8BMycjDwEjNTMfATMBEH8QB14JCfQJE+FVBhB3AXoGEFBQEAd69BADCs4JCbuVHXEDEBIDEDkQAwAABQAAAAABLAD0ABMAIwBAAEkAUwAANzMyHgEdARQOASsBIi4BPQE0PgEXIgYdARQWOwEyNj0BNCYjByIGHQEjIgYUFjsBFRQWMjY9ATMyNjQmKwE1NCYXFAYiJjQ2HgEHFAYiJj4BMhYVS5YUIxQUIxSWFCMUFCMUFyEhF5YXISEXegQFHAQGBgQcBQgGHAQFBQQcBokLEAsLEAsTCxALAQoQC/QUIxQ4FSIUFCIUORQjFBMhFzgYISEYOBchJQYEHAUIBhwEBQUEHAYIBRwEBhMICwsQCwEKQAgLCw8LCwgAAAAABAAAAAABGgEaAB8ANwBAAEkAADcnIw8BJwcXDwEVHwEHFzcfATM/ARc3Jz8BNS8BNycHJxc3FwcXFQcXBycHIycHJzcnNTcnNxc3FxQGIiY0NjIWBzI2NCYiBhQWqwoWCg0lERgDLS0FGA8lDwgWCg8lDxgFLC0GGA8lCAonJhstLRsmJwo0CiclGi0tGSYnCEAXHhYWHhcmCAsLEAsL2i0tBhgPJQ0KFgoPJQ8YBSstBRgPJQ8IFgoPJQ8YQy0ZJicINAonJRotLRkmJwg0CicmGy2DDxYWHhcXIgsQCwsQCwAABQAAAAABBwEaACIAJgA5AEwAUAAANyM2NSYnJi8BJiIGBwYHJicmIyIHBgcGDwEUFyMHFRczNzUHIzUzNSM1JjU3Njc2NzYyFxYXFhcWFTM0NzY3Njc2MhYXFh8BFAcVByMXIzUz/R4CBAMGCAUICQgDEQ0NEQwFCQgHBgMEAQIeCQnhCoRdXTgCAQIDAgcCDwQJBgQBAhMCAgQFCgMPCAUBAQICAjZeXl7hCA8LBQkDAgMBAgUUFAUDBQMJAwsDDggJqQkJqaCWEwQFCgMFAQQEAgIECAUDBQUFBQMFCAQCBAYBAwUKBQICqZYAAAAABQAAAAABGgEaABMAFgAmADAANAAANzMVFyMnNTczHwIVJic1Iyc1IxcnFRcVMxcVByMnNTczNTQ2MhYHBh0BMzU0LgEGBxUzNThLAlYJCZEGPgMIC0IJcbw4QRMJCXEJCRMWHxYzBSUGCgwlXiYSAQn0CQI+BzALBwgJQjk5OUsSCksJCUsKEhAWFgIGCBISBgkFAjc4OAACAAAAAADhASwADwAYAAATMxUeARQGBxUjNS4BNDY3FzI2NCYiBhQWjRIcJiYcEhwmJhwJFB0dKB0dASxMAyo6KgNMTAMqOioDex0oHR0oHQAAAAAEAAD//gEcARoAHwAqAEkAVQAANyc3FxUHJzcjBiY9AS4CPgEzMhcWFxYVFAYHFRQWMycWPgIuAQ4CFhcWFx4BBw4BLgI2NzY3NTQmKwEXByc1NxcHMzIWDwE+Ai4CDgIeAYsYDCgoDRgjExwOFAULFw8JCRIIAxUQEAw1CBQOAgoQEA0DB8gOCgwDCQgaHBQGCwwICRELIxgOKCgOGCMTHAEGBwwHAQkQEQwDBxA4GA0oDSgOGAEcE2gDFBwaEAMIEgkJERoDZwwRmwUCDhQPBwMNEBB7AwoMIQ4MCwYUHBoIBQJoDBAYDSgNKA0YGxSyAQgODg4GAwwREAoAAAAABAAAAAABBAEHAAMADQARABUAABMjFTMHJzcXNTMVNxcHJzMVIxcjFTOpExMQXg1OE00OXhATExMTEwEHE85dDk4bG04OXagSJhMAAAQAAAAAAQgBLQA0AD8ASgBXAAA3LgEHBgcGBy4BJzI3PgE1NCcmJyYjIg4BHgEXFQYHDgEeAj4BNTYuASc1FhcWFx4BPgE0Bx4BDgIuAT4CJyIuAT4CHgEOARcOAS4CPgIeAgb5DCEODAYBAR4qAwQEDRAEBxIJCg4XCwUUDgkICwsFFBwbDwEJEgsPFhMUBB0kGKgICgIOFA8HAw0QAwgOBwMNEBEKBA+NBQ4OCwYEDBEOCQMEmwwDCQgNBAQDKh4CBhcOCgkSBwQQGhwUA18CBQgbGxQGCxcPCRQPAi0VCwoBEhUDGyUyBA8UDgIKEBANA4IKDxEMAwcRFA17BQQDCQ4RDAMGCw0OAAAGAAD//gEaARoAIQAtADkASgBVAGEAADcGDwEVFhceARUUDgIjIi4BPgE3NS4CPgEzMh4CFRQHLgEiDgEeAj4CJxYyPgEuAg4CFhcWFxYVFA4BLgI2NzY3NTMXPgEuAQ4CHgE2JwcXNxc3JzcnBycHaQgNCAQEDRAHDRIJDxcLBRQODhQFCxcPCRINBxYEDRAOBwMNEBAJASwHEA0IAQkQEQwDB8gOCg4QGhwUBgsMBwoSCwcCChARDAMGEBQdHw0fIA0fHw0gHw3QDAYCXgECBRgOChEOBxAaHBQDXwMUHBoQBw0SCQ+fBwgKDxEMAwYOD54FCA4QDQcEDBAQewMKDhMOGAsGFBwaCAUCQ4UHFBAGAwwRDwsC2B8OICAOHyANHx8NAAAAAAUAAAAAASwBGgAdACoANgBKAFYAADcGDwEVFhcWFRQHDgEiLgE+ATc1LgI+ATM2FgcUBy4BIyIGFx4CPgInFjI+AS4CDgIWFyM1NCYrARcHJzU3FwczMhYXFgcVIzUjNTM1MxUzFSNpCA0IEwoIAwYYHRcLBRQODhQFCxcPEx0BFgQNCA0RAwENEBAJASwHEA0IAQkQEQwDB8gSEQsjGA4oKA4YIw4YBQQBEzg4Ezg40AwGAl4EEAwOCgkNEBAaHBQDXwMUHBoQARwUD58HCBUNCAwDBg4PngUIDhANBwQMEBAvHAwQGA0oDSgNGBANCQnFOBM4OBMABwAAAAABGwEaACAALAA4AEEASgBTAFwAADc+ATU0LgIjIg4BHgEXFQ4CHgEzMj4CNTQmJyYnNRceAQ4CLgI+ATInIi4BPgIeAg4BFxQGIiY0NjIWBzI2NCYiBhQWJxQWMjY0JiIGNRQWMjY0JiIGVA0QBw0SCQ8XCwUUDg4UBQsXDwkSDQcQDQQEBQYIAQkQEA0DBw4QCAgOBwMMERAJAQgN0BsnGxsnGy8MEREXEREHCw8LCw8LCw8LCw8LvgYXDwkSDQcQGhwUA18DFBwaEAcOEQoOGAUCAV51BA4PDgYDDBEPCoMKEBAMBAcNEA4InxQbGyccHC8QGBAQGBCICAsLDwsLSAcLCw8LCwAAAAAE//8AAAEHARoADwAbAB8ANQAANxUXMzc1LwIjFTMXFSM1NyM1IxUjFTMVMzUzBzMVIzcHJzcjIgYUFjsBFSMiJjQ2OwEnNxc4E6kSBTgOJSU5qYMlEyUlEyVdXV0TKA0YOAwQEAwJCRQbGxQ4GA0ocUsTE6gOOAUSOahLSyUlEyYmSxOZKA0YEBgQExsnHBgNKAAABAAAAAABGgEaABEAFgAiAC4AACUvASMHFRczJicjNTMXFRYXNQcjFTM0JzM1MxUzFSMVIzUjFyIOAR4CPgE1NCYBATgOcBMTZAkGVXA5CghuJyUlJRMlJRMlcBEcDQYYIh8TIdw4BRLhEwgK4jk6AwVCcBMKZyUlEyYmJhMfIhgGDRwRFyEAAAUAAP/+ARoBGgAdACoANgBXAGMAADcGDwEVFhcWFRQHDgEiLgE+ATc1LgI+ATM2FgcUBy4BIyIGFx4CPgInFjI+AS4CDgIWFxYXFhUUDgEuAjY3Njc1NCYrARcHJzU3FwczMhYXFgcXPgEuAQ4CHgI2aQgNCBMKCAMGGB0XCwUUDg4UBQsXDxMdARYEDQgNEQMBDRAQCQEsBxANCAEJEBEMAwfIDgoOEBocFAYLDAgJEQsjGA4oKA4YIw4YBQQBCwcCChARDAMGCw0O0AwGAl4EEAwOCgkNEBAaHBQDXwMUHBoQARwUD58HCBUNCAwDBg4PngUIDhANBwQMEBB7AwoOEw4YCwYUHBoIBQJoDBAYDSgNKA0YEA0JCaoHFBAGAwwRDgkDBAAABQAAAAABBwEOAAkAFwAhACUAKQAANxUzNRc3JyMHFw8BFRczNzUnIw4BIiYnFzMVIzUzHgEyNiczFSMVMxUjgxMyDUINQg42CQnhCgpCBBohGgNpLM4rCCAnID0TExMT8CIiMg5BQQ47CV4JCV4JEBUVEBJLSxEVFVwTExMAAAADAAAAAAEHAQ4ACQAXACEAADcVMzUXNycjBxcPARUXMzc1JyMOASImJxczFSM1Mx4BMjaDEzINQg1CDjYJCeEKCkIEGiEaA2kszisIICcg8G1tMg5BQQ47CV4JCV4JEBUVEBJLSxEVFQAAAAADAAAAAAEHARoACQAXACEAADc1MxU3FwcjJzcPARUXMzc1JyMOASImJxczFSM1Mx4BMjaDEzINQg1CDjYJCeEKCkIEGiEaA2kszisIICcgrWxsMQ1CQg1bCV4JCV4JEBUVEBJLSxEVFQAAAAAFAAAAAAEaARoADAAYAB8AIwAnAAA3MxcjJzU3MxcVJzUjFwczNycjNycjDwEXNzMHMwc3IycjNTMHIzUzOTANRgoK4QkTzmgbKmkNHw8PNhErESs2I0JsHzMKNj8aJS5xEwmpCQlaITCpQWwgGx0LXhpwOG1IOBM5EwAAAQAAAAABGAEhAGwAACUWFRQHBgcWHQEUBiImPQE2Jic3Njc2NzY1NC8BNicGDwEmBycmIwYXBw4BFRQXFhcWHwEGFxUWBiImPQEGJyYnJi8BLgEnLgE+ARcWFxYfARYXFjc1JjcmJyY1NDcmPwE2FxYXNhc2NzYfARYBBxEXEiAGBQcFAQUFBRYNEQkLEAIHBhETBykpBxoLBgcDCAkLCBINFgULAQEGBwYRDQsJBQgBBQcDAgMCBgMHBwMHAQoIDRUCByARGREFCQYEChAVKSoUEAsEBgnqFBstGBEFChEuBAUFBC4IDQYOAwYHDxIdFhEKEBIEDQILCwIQExAJCBUKHREPCAYDDwoPLwQGBgQaBAQDCAQLAQYGAQEGBgQCAQUDCAINBAcFBA4NBhEYKxwUGhUEAgEDDQoKDQQCAgUZAAAAAf//AAABLQEsAFQAABMiDgEVFB4BFzI2PQEGJyYnJi8BLgEvASY3NjMxHgEfARYXFjc2NyYnJjU0NzEmNzMyFxYXNjMyFzY3NhcxFg8BFhUUBwYHHgEdARQWMz4CNTQuAZYpRSgaLh4FBQ4LCQcEAwMCCAMDCQQCBAYLAwMJDgoKAQgeEBYQBwkEBggKDQ8XERQSDQcDCAUBEBYPHwQGBQUeLxkpRQEsKEUpIDoqCgQEGQMDAgUEBQQICgMBBgMBAQcEBA8BAQQMCAQNEycXERMUAwQJBQUMAwIBExQBERcnEg0EAw4KKQQECis6HylFKAAAAAMAAAAAAQcBBwALABMAFwAANzM1MzUjNSMVIxUzJzMXFQcjJzUXMzUjcRJxcRI5OULOCgrOCRK8vDhxEjk5El4KzgkJzsW8AAIAAAAAAS0BLAAMAGoAABMiDgEUHgEyPgE0LgEDIyImPQE0Jic+Ajc2NTQmJz4BNCYnIyIGDwImBy8BLgErAQ4BFBYXDgEVFBceAhcOAQcOASYvAi4BIwcGFB8BFh8BHgE3MzcVFAYrAS4CPgIyHgIOAQeWKUUoKEVSRSgoRQECAgQEBQ0XEAMEBwYBAQICAgUIBAkHICAHCQQJBAMBAgEBBgcEAxAWDQMEAQcPCwQEBAMGAwUBAggCAgYDEQoGBwQDAR0sEwokNz43JAoTLB0BLChFUkUoKEVSRSj+8AMDIwcNBAEJEAsNDgkSBwQHCQkFAgIFBAkJBAUCAgUJCQcEBxIJDg0LEAkBAwkFAwEIBwQFAQMBAQICBgICCwkKAQEWAwMJLDo+MhwcMj46LAkAAAAACgAAAAABGgEaAAwAEgAeACoAMQA3AEEASABNAFMAABMyHgEUDgEiLgE0PgEXLgEnFh8BNjUmJyMWFRQHMzYnNTY0JyMGFRQXMzYnJicrAQYHIzY3DgEPAQYUFzMmNTQ3IxcjHgEXJicXNjcjFjcGBz4BN58hOCEhOEI4ISE4fQkeEgwGMgEBAywBBC8CQQECSAEEQwIDBxAKCREGFAUNEx0JCAQELwQBLDQsCiYXEgkvEgo3CUIJEhclCwEZIThCOCAgOEI4IUsSGgYXGzgFBA8NCggTEwkKAQkSCQkJExMKQR4aGh4bGAcaEhIOHQ4TEwgKShYcBRkdMRYbGxweGQUcFgADAAAAAAEsARoAFgAnACoAAD8BNScHFyMiBhQWOwE1IyIuATY7AQcXNyMnMx8CFQcjJzUXFTM1IzcVM3EmKA0YOBQbGxQJCQwQAREMOBgNXzITWA05BROoExOoSxM4vScNKA0YHCcbExAYEBgNSxIFOA6oExOMEHyWSzkAAwAAAAABDwEaAAMAGgAwAAA3Bxc3Jx4BMj4BNC4BIyIHFzMyHgEUDgEiJic3Byc3IyIGFBY7ARUjIiY0NjsBJzcXWkcORx0NMTovHBwvHAwMEQcXJxYWJy0lCzYoDRg4DBAQDAkJFBsbFDgYDShuRQ1FIhkfHC84MBsCERYnLicWFBFhKA0YEBgQExsnHBgNKAAAAAIAAAAAARoAvAADAAcAACUhFSEVIRUhARn++gEG/voBBrwTJhIAAAAHAAAAAAEaAQ8ACQARABUAHQAhACkALQAANxcHJzU3FwczFQc1NzMXFQcjNzUjFTc1NzMXFQcjNzUjFTcVFzM3NScjFxUjNSgQCyAgCw/wzgkmCQkmHRM4CSYJCSYdEzgJJgkJJh0T4RELHwwfDA8TxqsICKsIEZmZHYUICIUJEXV1fWAICGAIEFBQAAIAAAAAASABLAAGABMAACUVIyc1MxU3ByMnByc3Mxc3MxcHARn9CRPOYQ0fRA5LDh9gDSYNOBIJ/fS4YR9EDUsfYSYNAAAAAAYAAAAAARoBLAAGAAoADgASABYAGgAAJRUjJzUzFTczFSM3MxUjBzMVIwczFSM3MxUjARn9CRM4JSWDJiZLJiY4JSWDJiY4Egn99M8mOCUmJSYlOCUAAAAHAAAAAAEaASwABgAOABIAGgAeACYAKgAANzM1IzUjFTc1NzMXFQcjNzUjFTcVFzM3NScjFxUjNQc1NzMXFQcjNzUjFRz98xMlCiUKCiUcE4MKJQoKJRwTXgolCgolHBMmEvT9JZYKCpYJE4ODsrwJCbwJEqmps3EJCXEJE15eAAYAAAAAAM8A9AADAAcACwAPABMAFwAANzMVIxUzFSMVMxUjNzMVIxUzFSMVMxUjXiUlJSUlJUslJSUlJSX0JiUmJSa8JiUmJSYAAAALAAAAAAEHARoACQARABUAHQAhACkALQA1ADkAPQBBAAATMxUjFTMVIyc1FyMnNTczFxUnMzUjFyMnNTczFxUnMzUjByMnNTczFxUnMzUjFyMnNTczFxUnMzUrAhUzNSMVMxwmHBwmCXomCQkmCSUSEow4CQk4CjkmJkEmCQkmCSUSEow4CQk4CjkmJhImJiYmARkS4RMJ9GcJJgkJJgoSJQk4Cgo4CiWWCSYJCSYKEzkKOAkJOAkmE3ASAAEAAAAAARoBBwAcAAAlLgEnLgEiBg8BJy4BIgYHDgIUHgEfATc+AjQBFwIJBwoaGxkKDQ0KGRsaCgcJBAQJB29vBwkE0gkRBgoKCgkNDQkKCgoHEBISEhAHbm4HEBISAAIAAAAAARoBBwAdAD0AACUuAScuASIGDwEnLgEiBgcGBwYUHgEfATc2NzY1NAcGDwEnLgI0PgE3Njc2FxYfATc2NzYXFhcWFxYVFAcBFwIJBwoaGxkKDQ0KGRsaCg0FAgQJB29vBwQJFQMKYWIFBwMDBwUHChMUCQcaGQcKExQJBwUDBwHSCREGCgsLCQ0NCQsLCg0TCRISEAZvbwYIEBMJFQ0KYWEFDAwODQsFBwQICAMIGRkHBAgIBAcFBgsOBwYAAAACAAAAAAEdARsAHgAlAAA3PgEmJy4BDgEHNSMVFzM1Iz4BHgEOAiYnBx4CNic3JzUjFRf9Eg0MEhM8QTgQEwlCKRNISi4CMUtGEhAPOEI+Kw42EwNFFzk5FxocBCEcLUIJEiIdFT5NPBIhIgkdJgYbLA02R0sHAAACAAAAAAEUARMAEQAcAAATFwcnFQcjJzUjFQcjJzUHJzcHFTM1NzMXFTM1J513DRMKOAkmCTgKEg53RCYJOAolSwESbA4RegkJQkIJCXoRDmxYgkIJCUKCRAAAAAQAAAAAAPQA4gALACAALAAwAAA3MzUjFSM1IxUzNTMXMyc2NzY3NjQuAScmJyYrARUzNTM3BisBNTMyFhUUBwYXIxUzeQ8PMRAQMWoRGAMECAMCAwUEBgcEAy4PHAkDAiAgBgoBAxe8vHFwMTFwMDAxAQMGCQULCgcDBQIBcC4QASQKCAUDB2YTAAAABQAAAAABBwEaACQALgA7AD8AQwAANzMXFTMXFQcjFQcjByc1Iyc1Iyc1NzM1NzM1LgE1NDYyFhUGBxc1IxUXMxU/ATMnBgcxBiYnBx4BMjY3JyMVMzczFSOfSwkKCgoKCTovEC8KCQkJCQpLBAYLEAsBCUKWLwkiBzUoCw4NGAkNChkcGQlMExM4ExPhCSYKEgk5CTQHLQw2CRIKKAcVAwgGBwsLBwsFYThuAikmAy4KAwMICQ4JCwsJMxMTEwAAAwAAAAABGgEaAAkAEwAdAAA3Mzc1LwEjDwEVNyM1Mx8BMz8BMycjDwEjLwEjNzMc9Ak0CI0JNPThLw4IVggNMQE1CQxLDgg1MX8mCVSQBgaLWQk4FwUFFxMFFxcFhAAAAQAAAAAA9ADPABEAADcVFBY7ASc3FxUHJzcjIiY9AUsFBIEeDTAwDR6BCxHOJQQFHg4wCy8NHhAMJQAABAAAAAABGQEbABMAJwArAC8AABMeARceAQYHDgEmJy4DPgMXPgE3PgEmJy4BBgcOAR4BFx4BNyczNSMXFSM1oRYpDxgSDBUTNzwbFB4RAg0aJisgEiEMEgsQFBIxMxUZGgMfGhEmEh8YGBgYARkDExAYPkAaGBkCDgsiKi0sJBoL8wQUDxY3NRUSEQcOETU7Mg4JBgSUEiVLSwAABQAAAAABGgEaAAcACwATABcAHQAAARcVByMnNTcXIxUzFRcVByMnNTcXIxUzJxcHFzcnAQcSEpYTE5aWlhISlhMTlpaW9B4eDSsrARkSSxMTSxISSzkSSxMTSxISS44eHg0rKwAAAAADAAAAAAEnAQcADAAQABQAAD8BMxcVIzUjFTMVIycFJxU3BzUXIxMT4RIS4V1dEwEUfjMgPSX0ExNxcZYTEyB+sTMGVj4AAAAJAAAAAAEHARoABwANABUAGwAkACoAMgA4AEEAADcXNjQnBxYUJzcmJwcWJzcmIgcXNjIHJwYHFzYHNDcXBhYXByYXBxYXNyYXBx4BNycGIjcXNjcnBicyNjQmIgYUFu8SBgYSBQsQEiMJHiwFEicSBg8hPwkjEhEPLQYSBgEFEgYeERIjCR4tBhInEgUQIT8JIxIQEEwHCwsPCwt/BRInEgYPIT8JIxIRDxUSBgYSBgwREiMJHk0UEgYPIRAFEhsJIxIQEBYSBQEGEgULEBIjCR46Cw8LCw8LAAAAAwAAAAABIwEbABUAMAA5AAA3By8BNxc+Ax4DFyMuAgYHNx8BBycOAy4DJzM1FB4DPgI3Byc3JxQWMjY0JiIGYz0NGREPCBskKCklHBABEgQySD4MLK0ZEQ8IGyQpKSQcEAITDBgfJCMgFwcrBz1/CxALCxALwhkFPAckEx8UCAYUHiYUJDQJJyISQz0IJRMfFAgHFB4mFQkSIhwSBgYSHBESEhkKCAsLDwsLAAMAAAAAAQcBGgANABsAJAAAEyIOAR4CPgEnNi4CByIuAT4CHgEVFA4CJxQWMjY0JiIGjSU+HA41SEQqAQETIi0YIDQYDSw9OiMQHSYnCw8LCw8LARkpREk0Dhw9JRksIxLhIzo9LA0YNCAUJh0QZwcLCw8LCwAAAAEAAAAAAOABBwAcAAA3ByM3Mjc2NzY/ATY1NC4BIzczByYOAQ8BBhQeAakCXAIOBQcDBgYmBQQJDAJWAgoNCAYmBgQJLQYGAgMFCBSHEAkEBwIHBwEGDBWHEwkGAwAAAAIAAAAAARoBBwAbADEAADcjJzUjLwE/ARceARcWFxY3Nj8DHwEPASMVJzM1NzM3JwcGBw4BIiYnJi8BBxczF9+TCRsJDAZQDAEFAgUGDg0GBQUEDFAGDAkbk4AJHQg/AwMDCBQVEwcEAwNACRwKIQp9BzILGwYFBwIFAwUGAgUFCQYbCzIHfQl9CSMVBAUDCAgICAMFBBUjCQAAAAIAAAAAAQcBBwBGAI0AADc1IyIOAQcxBgcxBhcVFAcxBgcGKwEVMzIXFRYXFRYXMRYdAQYXFRYXMR4CFzM1IyIuAj0BNCYnJic2Nz4BPQE0Njc2MxcVMzI+ATcxNjcxNic1NDcxNjc2OwE1IyInNSYnNSYnMSY9ATYnNSYnMS4CByMVMzIeAh0BFBYXFhcGBw4BHQEUBgcGI3ECCREMAwMBAQECBAoFBgEBBgUFAwQCAgEBAQMDDRAJAgIGCgcEAgIFCQkFAgIJBwUGTQEJEA0DAwEBAQIECgUGAgIGBQUDBAICAQEBAwMNEAkBAQYKBwQCAgUJCQUCAgkHBQb0EwcNCAgICAgQBgUKBQISAgECAwEDBQUGEAgIAQcICA0GARMECAoGGQYMBQsHBwsFDAYZCQ0EArwSBg0IBwkICBAGBQoFAhICAQIDAQMFBQYQCAgBBwgIDQcBEgQICgYZBgwFCwcHCwUMBhkJDQQCAAAAAwAAAAAAqgEHAAsAFAAdAAA3HgE+AiYnJg4BFjciJjQ2MhYUBiciJjQ2MhYUBowECgkFAQQFBg8IAhEICwsQCwsICAsLEAsLKQMBBQgKCQMEAw0PVgsQCwsQC14LEAsLEAsAAAMAAAAAARwBHAAcADkARQAAEx4CBw4BIyInDwEjFQcjFQcjJzU/ASY1ND4CFzY3MTYuAgcOARUGFw8BFTM1NzM1NzM/ARYzMjc+AS4CBgcGHgE21RcjDAQGLx4NCw8HEwkcCjgJAl4EER0lLBIFAwkYIBEWHgEFAl4lCR0JFxEKDAwXAwMBBQgLCQIEAw0OARgFICsWHSYEEgMcChwJCSsHXQ0OEiMXCYoOFxEgGAkDBSQXDQwKXx4dCRwJEwMEQgQKCQYBBQQHDwgDAAYAAAAAARoBGgAvADYAOQA9AEAARwAAJSczNSM1IxUjFTMHIxUzHgEyNjczNSMnMxUjDwEXMzcvASM1MwcjFTMeATI2NzM1BwYiJiczBicjNx8BIz8BFyMXBiImJzMGARIeE14TXhMeBwIFGB4ZBQIIHzolCCUHqQclCCU6HwgCBRgfGAUCtwYPDAQvBAEmE3YXgxd2EyYgBg8MBC8EqUsTEhITSxMOEhIOE0uWBC8PDy8ElksTDhISDhMdAwcGBhktixwcii0cBAgGBgAAAAAGAAD//QEtARgABwALABcAHwAsADMAABMjBxUXMzc1BzcXDwEnMxc3MwcjIgYPARcHJyMXMzcmNzYXMhYVFA4BLgI2FzcnBycHF5kKb28Kc9ZeYWEFbSFRVCIPBxknCBMQFVEhbQoUBCsPERchEx8iGAcNLiIPHBAMGAEYTBBKShAIQUE/Qko3NwodFg0ODjdKDQk9CgEgGBEcDQYZISA/LQslDg8TAAAFAAAAAAEsARgABwALABcAHwAoAAATIwcVFzM3NQc3Fw8BJzMXNzMHIyIGDwEXBycjFzM3JjcUFjI2NCYiBpkKb28Kc9ZeYWEFbSFRVCIPBxknCBMQFVEhbQoUBBMgLyEhLyABGEwQSkoQCEFBP0JKNzcKHRYNDg43Sg0JDhchIS8hIQAEAAAAAAEMARgABwALABIAGQAAEzMXFQcjJzU3Bxc3BxczNyMHJxcnMxc3MwePCnNzCm90Xl5h020KcSJUUUxtIVFUInEBGEwQSkoQOUE/PzdKSjc3eUo3N0oAAAIAAAAAARoBGgAHAAsAABMHFRczNzUnFSM1MyYTE+ESEry8ARkS4RMT4RLz4QAAAAIAAAAAARoBGgAHAAsAABMHFRczNzUnBzUzFSYTE+ESEuG7ARkS4RMT4RLz4eEAAAMAAAAAARoBGgAHAAsADwAAEwcVFzM3NScHNTMVMzUzFSYTE+ESEuFLS0sBGRLhExPhEvPh4eHhAAAAAAUAAAAAARoBGgAHAAsADwATABcAABM3MxcVByMnNxUzNQczFSM3MxUjNyMVMxMT4RIS4RMT4c8mJjklJV0lJQEGExPhEhLh4eESExMTExMABAAAAAABGgEaAAcACwAPABMAABMHFRczNzUnBzUzFTc1MxU3MxUjJhMT4RIS4SUTcBMmJgEZEuETE+ES8+HhS5aWluEAAAAABAAAAAABGgEaAAcACwAPABMAABMHFRczNzUnBzUzFTM1MxUzNTMVJhMT4RIS4SUTcBMmARkS4RMT4RKolpaWlpaWAAADAAAAAAEaARoABwALAA8AABM3MxcVByMnNxUzNTMVMzUTE+ESEuETE5YSOQEHEhLhExPhlpbh4QAAAAADAAAAAAEaARoABwALAA8AABMHFRczNzUnBzUzFQczFSMmExPhEhLh4eHh4QEZE+ESEuETqZaWEjkAAAADAAAAAAEaARoABwALAA8AABM3MxcVByMnNxUzNTMVMzUTE+ESEuETEzgTlgEHEhLhExPh4eGWlgAAAAACAAAAAAEaARoABwALAAATBxUXMzc1Jwc1MxUmExPhEhLh4QEZEuETE+ESqJaWAAADAAAAAAEaARoABwALAA8AABMHFRczNzUnBzUzFTM1MxUmExPhEhLhSxKEARkT4RIS4RP04eHh4QAAAAACAAAAAAEaARoABwALAAATBxUXMzc1JxUjNTMmExPhEhKEhAEZEuETE+ES8+EAAAADAAAAAAEaARoABwALAA8AABMHFRczNzUnBzUzFTM1MxUmExPhEhLhgxNLARkT4RIS4RP04eHh4QAAAAACAAAAAAEaARoABwALAAATBxUXMzc1Jwc1MxUmExPhEhLhgwEZEuETE+ES8+HhAAACAAAAAAEaARoABwALAAATBxUXMzc1Jwc1MxUmExPhEhLh4QEZE+ESEuET4c7OAAAGAAAAAAEaAQcABwALABMAFwAfACMAABMHFRczNzUnBzUzFT8BMxcVByMnNxUzNQc3MxcVByMnNxUzNTgSEksTE0tLORI5EhI5EhI5SxI5EhI5EhI5AQcTvBISvBPPvLy8ExM4ExM4ODiDEhI5EhI5OTkAAAYAAAAAASgBBwAHAAsAEwAXAB8AIwAAPwEzFxUHIyc3FTM1Fz8BHwEPAS8BFzcvATczFxUHIyc3FTM1XgkmCQkmCRMSKQYjDEYFIwwyQBJBvwkmCQkmCRMS/QoKzgkJxby8BwwNBcIMDQXAsAawDAoKzgkJxby8AAMAAAAAARoBGgAIABIANwAANyIGFBYyNjQmFycHNyczNxczBycOAQcjFRQWOwEWFyMGJj0BNCYnLgE1NDc+AzMyHgEVFAcG4RchIS4hIQIZGAkWGwoKHBcfEh0HIwMDGgMFIgoPCgkMDgwFEBMVDBcnFwcEgyEuISEuIV0SEhwQHx8QUgMYEikCBAoIAQ8KHg0YCQsfERcTCg8LBhYnFxIOCQAAAwAAAAABHQEaADsAWABsAAA3Njc2PwE2NzY1NC4EIg4EBx4BFx4BHQEUHgI7ATI+AjUnIyYnFRQGKwEiJj0BMz4BMzcyFzY3Njc2MzAxJyYnJicmJwYHBgcGDwEXFhcWFxYXNjc2MhcWFxYUBwYHBiInJicmNKgFCAYEAgIHBQYLEBMVGBUTDwsGAQENDAoKAwcJBR4FCQcEAQIJBwMDHgIEJQMLBwIEMwYOCw0HBQcICAsICgQFCggLBwkHBwkHCwgKHwkGAgcCBgkCAgkGAgcCBgkCeAoIBQYHCAUNDwwVEw8LBgYLDxMVDBIdDAoXDR4FCQcDAwcJBQgBBg8CBAQCKQYIAVAYDwoFAgEBBQYKDhMTDgoGBQEBAQIEBgsNBQYJAgIJBgIGAgYJAwMJBgIGAAACAAAAAAD1ARoAIQArAAA3DgEdARQGBwYnIwYmPQE0JicuATU0Nz4DMzIeARUUBgcjFRQWOwEyNjXbCQsIBwQFHgsOCgkMDgwFDxMWDBcnFg0zKQMDHgIDigkYDR4HDQMCAQEPCh4NGAkLHxEXEwoPCwYWJxcSHi4pAgQDAwAAAAIAAAAAARoBGgAMABYAABMzFSMVMzUzFQcjJzUhFSM1Byc3IzUzHFVL4RIJ9AkBBhJ/DX5jegEZEuFLVQkJ9Hpjfg1/EgAAAAIAAAAAARoA9AAkAEkAADczMh4BHQEUDgErATUzMjY9ATQmKwEiBh0BHgEXFS4BPQE0PgEXNR4BHQEUDgErASIuAT0BND4BOwEVIyIGHQEUFjsBMjY3NS4BUzkSHRERHRIJCRMaGhM5ExsBFRAYIBEdoBggER0ROhIdEREdEgkJExoaEzoSGgEBFfQRHhEEER0SExsSBBMaGhMEEBkDEwMkGAQRHhFMEwMkGAQRHhERHhEEER0REhsSBBMaGhMEEBkAAAADAAAAAAEHAPQAAwAHAAsAADc1MxUnMxUjNxUjNXFLcZaWvOFLExNeE14TEwAAAAAEAAAAAAEHAPQAAwAHAAsADwAANzMVIxUzFSM1MxUjNTMVIyaoqJaW4eHOzoMSJhOEE0sTAAAAAAYAAAAAARoBBwAGAAoADgASADMAawAAEzczFSM1BzczFSMVMxUjFyMVMyc/ATY0JyYnJiIHBgcGBxUzNTQ/ATIzFxUWDwIVMzUjFzIXFhUUBwYHBiIuAS8BJicxMxUXFjM/Ai8BKwE1NzM/ASc0Jg8BBh0BIzU0Nz4CMh4CFAcrBw0NBzO7u7u7u7u70wEBAwECBwUIBQYCAQEQAQEBAgEBAQITJRELAgEDAQIHBQgFBAICAQEQAQIBAQEBAQEBBAQBAQEBAwEBAQ8DAQQGBwYGBAMBAAc5KgYCEzgTOBNSAQEFCAQHAgICAgcDAwEBAQIBAgEDAwMVCw06AgQGAwMHAgICAwIEAwQCAgEBAgIDAgwBAQMCAQEBAQECAQEGBQIDAgIDBwkEAAAAAAMAAAAAARoA9AADAAcACwAANzUzFSchFSE3FSM1E6mpAQb++s7OSxMTXhNeExMAAAUAAAAAAQcA9AADAAcACwAPABMAADczFSMVMxUjNTMVIyczFSM7ARUjS6mpg4O8vDjOzjgTE4MSJhOEE0sTqQAIAAAAAAEaAPQAAwAHAAsADwATABcAGwAfAAA3IxUzFSMVMwczFSMXIxUzNzMVIxcjFTMHMxUjFyMVMyYTExMTExMTExMTJc7Ozs7Ozs7Ozs7O9BMlEyYSJhO8EyUTJhImEwAABAAAAAABIwEgABYAJwAzAD8AABM3FxUHJzUjIgcGBwYHJyY3PgMXMxcVNycVIyYGBwYHNjc2NzYzBz4BHgIGBwYuATYXHgE+AiYnJg4BFqwSZGQSCB8PFhQVFxMBBAQZKDAaDRZHRiQYLhEVCRQUEhYPHEIMHRoQAg0MEysZCR4HERAJAggHDBoPBgEXCVARTAkjAwQNDx4GDg4ZLCARAUEjNjghARERFh0TCggDAkoJAg0YHRsHDAkkLDsFAggPERAECAYWGgABAAAAAAEYARoADwAAJS4CIg4BByM+AjIeARcBBQUfMDYwHwUTBSU4QDglBakaKxgYKxogMx0dMyAAAAAEAAAAAADiARAAEAAeACcAMwAANy4BIzEiDgIfATM3Nic0Jic7AR4BFxQPAScmNT4BFyYOAR4BPgEmJz4BHgIGBwYuATbLChwPFSIUAQw7CjsMAQtBAQIWIAEJMDAJASAiBhAIAw0PCQMmCBUSCwEJCQweEQX6CgwVIioSd3cSFg8bDgEhFxANYWENEBchKAUDDQ8JAw0PFAYCCREVEgUIBhkeAAMAAAAAAPQBBwAHAAsAGwAAPwEzFxUHIyc3FTM1JzU0JiIGHQEzNTQ2MhYdATgTlhMTlhMTlhMhLiETFSAVlhMTXhISXl5eEyUYISEYJSUQFhYQJQAAAAADAAAAAAEHARoAEQAZAB0AADcjNTQuASIOAR0BIwcVFzM3NSc0PgEWHQEjFyM1M/QTFCMoIxQTEhK8E6khLiFwlry8qSUVIhQUIhUlE3ATE3A4GCABIRglg3AAAAQAAAAAARoBEAAWABoAHgAwAAATIg4BHQEXMzc1NDYyFh0BFzM3NTQuAQcjNTMXIzUzJzU0JiIGBxUjNTQ+ATIeAR0BliQ8IxM4ExYeFxI5EiM8XDg4qTk5OSAuIQE4HjQ8NB8BECM8JF4TE14PFhYPXhMTXiQ8I+E4ODgTExggHxYWEx40Hh40HhMAAwAAAAABGgEPAAcADAAUAAATIwcVFzM3NScXByMnFyM1HwEzPwGbCn4J9AmDahqgGNnhFAioCBUBD0uVCQmVOD8dHYVyGgMDGgAAAAMAAAAAARoA9AAHAA0AEAAAPwEzFxUHIyc3FTM1ByM3IxcTCfQJCfQJE+FrDGS8XuoKCqgKCpWMjFJcSQAAAAADAAAAAAEHAPQAAwAHAAsAADcVNzUXNScVFzU3FSZBSzhLQsWNKY2wjSONI40pjQADAAAAAAD0AQcAAwAHAAsAABMzByMXIyczFyMHM2eNKY2wjSONI40pjQEHQks4S0EAAAAABAAAAAAA/AEQAAMABwAVABkAADczByMVMxcjPwEnIw8BFRcHFzM/ATUHMwcjbHcjd3cjd2QsCI0ILywsCI0IL5B3I3f9OBM4QkYOBUsJRkcOBUsJDjgAAAQAAAAAARAA/AADAAcAFQAZAAA3FTc1MxUXNQ8BJzU/ATMXNxcVDwEjNxU3NS84EzhBRw4FSwlHRg4FSwkOOMB3I3d3I3dkLAiNCC8sLAiNCC+QdyN3AAACAAAAAAEaAM8AEAAXAAA3MxUjNwcjJxQVFyM1MxcWFzc1IxUjFzd3JxsBIRchARkoDw4BnCUkNzbOemNjYwcvLXorKwQWQkI2NgAAAwAAAAABGgDuAA8AFwAbAAA/ARcVBycOAi4CNy8BNRcGFRQeATY3Jxc1BybnDAxyAw8VFg8GAyYIQAELEA4CWNfXrUAKoQoeCw8GBRAVCwoKJD0CAgkMAggILDmKPQAAAgAAAAAA7gD1ADgAQgAANwYnBi4CNzQ+AjMyFxYVFAYjIjUOASMiJjQ+ATM2Fhc3MwcGFjMyNjU0JiMiDgEVBh4CNxY3JxQzMjY3NiMiBsQaHxEhGQwBDh0mFCQWGR8XFQYRCg4RDRcNCQ8DBBEPAwMGDhUlHxglFQEJFBsOHBlMEQsQBAkZDhJEDwEBDBkgEhQnHRATFSMeJxIJCRMiHRIBCggPPA0KHxYdIBgpGA8aFAoBAQ04FxIRJB4AAAAAAwAAAAABLADhAAMABwALAAAlITUhFSE1ITUhNSEBLP7UASz+1AEs/tQBLM4TqRM4EwAAAAIAAAAAAOsA/gAmADsAADcnIwcXNxUxFTEVFB8BFhceAR8BHgIdATM1NC4CLwEuAjcnFwc2NyYvAQYPAQ4DHQEzNTQ+ATfFKA4oDRUBAgICBA0HDgcMBxoFCwwHDQYLBgEBFTQDAwcEAgUGDQcMCwUaBwwH1SgoDRQTCQYFBQsGBgsRCA8HERMNERENGBIQBw4GEBQLHRRTBAMKDAUHBg4HDxMYDRERDRMRBwADAAAAAAD+ARAACwAPACMAADc0NjIWHQEUBiImNRc1MxUnBi4BNTMUHgE7ATI+ATUzFA4BI14hLiEhLiEvEhIaKxkTFCIVEhUiFBMZKxrYFyEhF0sYISEYjSYmJgEaKxkUIxQUIxQZKxkAAAAEAAAAAAD+ARoACwAcACAANAAANzU0NjIWHQEUBiImNyIOAR0BFB4BMj4BPQE0LgEDNTMVJwYuATUzFB4BOwEyPgE1MxQOASNnHCYcHCYcLxIeEhIeJB4SEh4bEhIaKxkTFCIVEhUiFBMZKxqNSxMcHBNLFBsboBEfEUsSHhISHhJLER8R/ucmJiYBGisZFCMUFCMUGSsZAAMAAAAAARoBGgARABYAGgAAEyMVIwcVFzMVMzUzPwE1LwEjFyM1MxcnMxUjlhNnCQlnE1QHKCgHVFDAwB+nXl4BGSUKSwmDgwImDiUDSzgcCRIAAAMAAAAAARoBGgAKABUAJQAAEx8BFQcnByc1PwEfATUnFSM1BxU3MT8BFxUHJzcjFwcnNTcXBzOhdAQOdXUOBHQVZ2cTZ2cjDi4uDR5xHg0uLg0fcgEZSwesCEtLCKwHS6tClkI2NkKWQloNLw0uDR4eDS4NLw0fAAMAAAAAARoA9AATAB4AIgAAJScjBxUzNRcGHQEfATM/ATU0JzcHFQcnNTY3FzM3Fi8BNxcBGYAGgBMrDwVLCEkGDz9CQUIBDTEHMA1BZ2dnwjIyd14RFRoIByIiCAgZFRlHAR4eARYSExMSESgoKAAEAAAAAAEQARoACQATAB0AJwAANwc1IxUnBxczNycXNxUzNRc3JyMPATMVIxcHJzU3FzMnNxcVByc3I8AhEiENMA4wbg0hEiENMA41IUFBIQ0xMWVBIQ0xMQ0hQWMgQEAgDTAwkw0gQEAgDTBQIBMgDjENMC0gDTANMQ4gAAAAAAUAAAAAARoBGgAMABAAGAAcACAAABM3MxcVByM1MzUjFSM3FTM1DwEVFzM3NScHNTMVBzMVI3EJlgkJLyaEEhKE6wkJlgoKjIODg4MBEAkJgwoTSxM5ExNeCoMJCYMKJhMTEksAAAAABQAAAAABBwEHAAwAFQAnACsANAAAJSMVJiMiBhQWPgE9AQcyFhQGIiY+ATcPARUmIw4BFBYyNj0BNxUzNQcVBzUHMhYUBiImNDYBBxMNDxQbGycbLgsRERcRARAxlgkNDxQbGycbhBMTgy8LEREXEBCpLwkbJxwBGxNVOBEXEREXEZUJCY0KARsnGxsUcQgSVAolCSaNERcQEBcRAAAAAAMAAAAAARkBFwAJABEAHQAANzM3FxUHJyMnNR8BNQ8BIxUzNxcHFwcnByc3JzcXHDRJEBBJNAlIOzsHLi63DSAgDSEgDSAgDSDOSAb0BkgJXlg7xzsCS0kNICENICANISANIAADAAAAAAEsARoAEAATAB8AABMfARUjNSM1IxUzFSMnNTczBxUzFyM1IzUzNTMVMxUjskACE0teS1QJCX4ENhUTODgTODgBF0EIJRNLzxIJ4QkSOc44Ezg4EwAAAAMAAAAAASwBGgASABwAKAAAASMvASMHFRczNSM1Mz8BMwczNQcjDwEjNTMfATMHIzUjNTM1MxUzFSMBEH8QB14JCWdeVQYQdwETE3oGEFBQEAd6ExM4OBM4OAEHDwMJzgoTcQIQJVQcAxA4EAL0OBM4OBMAAQAAAAAA9ADFABEAADcVFAYrATcnBxUXNyczMjY9AeEFBIEeDTAwDR6BCxHFJQQGHw0wCjANHxAMJQAABAAAAAABGgDSAAgADwAWACgAADc2HgEOAS4BNhcuAQ4BFh8BHgE+ASYnNxUUBisBNycHFRc3JzMyNj0BLBMuGgknLhoJRgkUEgoBBQ0JFBIKAQWcBgRNHg0wMA0eTQwQxQ0JJy4aCScuAgUBChIUCQ0FAQoSFAklJQQFHg4wCy8NHhAMJQAAAAUAAAAAARoBBwAHAAsADwATABcAABMzFxUHIyc1FxUzNQczFSMXIxUzBzMVIxz0CQn0CRPhvJaWcXFxcUtLAQcKuwoKuwmpqSYSExMTEgAAFwAAAAABLAEsAAMABwALAA8AEwAXABsAHwAjACcAKwAvADMANwA7AD8AQwBLAE8AUwBXAFsAXwAANyM1MxUjNTMVIzUzFSM1MxUjNTMdASM1FzMVIzczFSMDIzUzFyM1OwIVIzMjNTMXIzUzFyM1MxU1Mx0BIzUzKwE1Mxc3MxcVByMnNxUzNRczFSMVMxUjFTMVIyczFSMTExMTExMTExMTExMTExMlExMlExMlEhITExM4EhImExMlEhITExPOExNLE4MTE4MTE4MlExMTExMTll5ezhM4EzkTOBM5EyUTExMTExMBGRMTExMTExMTEyUSEiYTE0sSEqkTE6mpqRMmEiYTJYMTAAAAAAcAAAAAARoBGgAHAAsAEwAXABsAHwAjAAATNzMXFQcjJzcVMzUHNzMXFQcjJzcVMzUXIxUzBzMVIxcjFTMmEqkTE6kSEqmWE14SEl4TE15dEhISEhISEhIBBxIS4RMT4eHhJhMTExISExMTEyUTJRMmAAAABAAAAAABGgD6ACUAQABJAFIAACU2NzYnIyYHBgcGByYiByYnJgcxBhcWFwYVFBcWFxYyNzY3NjU0ByInJicmNTQ3NjcyFxYyNzYzFhcWFRQHBgcGJyIGFBYyNjQmMyIGFBYyNjQmAQQDAQEHBAQGCAkMDhJCEhkSCQUHAQEDFREPHxpTGx8PEYMhEBgMDREIDwoWERISFQoPCBENDBgQSggMDBAMDEoIDAwQDAzCCAoSEgECAQUFCQUFEAQCARISCggXICkYFQoICAoVGCkgeAMECwwZEw8IAgEBAQECCA8TGA0LBANSERgRERgRERgRERgRAAQAAAAAAS0BGgAMABAAIgAuAAATMxcVJic1IxUHIyc1FzM1IxciByMOARcHFzceAT4CLgIHBi4BPgIeAg4BOM8SCQpdFVwSEl5ewwwKAREJCywNLAkXFQ8HBA0VCAoPBwQMEBAJAQYMARkSZAQCXswVEs/Pz3EHCicRLA0sBgMIEBUWEgpLAQsPEQwDBg0PDggAAAAKAAAAAAEaARwACwAXACQALQBIAGIAdwCSAJ4ApwAANw4BLgI2NzYeAQYnLgEOAhYXFj4BJjc2FhceAQ4CJicmNhcWMjY0JiIGFAczFSMiJj0BIiY9ATQ2OwEGByMiBh0BMxUUFjcmKwEiBh0BFBYzFQYXFhczPgE9ATI2PQE0ByMVFAYrASImPQEjNSY2OwEyHgEVFyM1MzI2PQEzNTQmKwEmJzMyFh0BFAYjFRQGJyIOAR4CPgE1NCYHIiY0NjIWFAarCRQSCwIKCA0eEgYYBAoJBgEFBQYPCAMrCRQHBQQDCQ4RBgkCFAMIBQUIBZwiIgkOBwsTDiIHAxgGCRMCiwoOLg4TCwgBBwUHJggLBwsSEwICHgICEgEJBi4FBwM0IiIBAxMJBhgDByIOEwsHDq4JDgYDDBEQCRAMBAUFCAUF1QYCCREUEgYIBhkfJgMBBAkKCQMEBAwPBAUCBwUNDgsGAwYKGhYDBQgGBgilEw0KIgwIKQ0UCAsJBSo1AgJ6ChQOOwgMLAkHBQECDAgsDAg8DUo/AQICAT89BQkFBwJ2EwICNSoFCQsIFA0pCAwiCg3ZChARDAMGDwgMESYFCAYGCAUAAAAFAAAAAAEHASwAFQAZAB0AIQAlAAATFRcVByMnNTc1MxUzNTMVMzUzFTM1AzM1IxczFSMXIxUzBzMVI/QTE7wSEhMmEiYTJam8vCZwcHBwcHBwcAEsExL0ExP0EhMTExMTExP+5/QmEzgTOBMAAAAABAAAAAABGgD0AAoAEAAUABwAADcfARUPAS8BNT8BFwcfAT8BBxc1JxcVNzUHFQc1oWwMB3NzBgtrBEsKQDkRsV5ecV4mE/QdCX4JICAJfgkdExMDEQ8FdxpsGRlsGmsKMAUwAAMAAAAAARIBGgAjAC0AQgAAJSc1JzU0JyYnJiMiBh0BBwYUHwEWFxY3Nj8BBxQeAjI+AicmPgIeAR0BBxcOASYvASY0PwEVBhQeAT4BJic1FwERFlwCBAsGBQwQOQkJRAQFCwoFBF0NAQYHCggGApYBAQMEBgQSEwEFBgFEAwNSBQYKCQQDBEhPOgFcFwYFCwQCEAw9OAgXCUQEAgQEAgRdKgQJBwQEBwizAgQDAQEFBBcTqgICAgJEAggDUTUECwkDBQkKAzVJAAAAAAIAAAAAARoBGgAMABMAADcyPgE0LgEiDgEUHgE3Iyc3FzcXliQ8IyM8SDwjIzwRDSsNJE8NEyM8SDwjIzxIPCNNKw0kTw0AAAMAAAAAARYBGwAGABwALwAANzM3JwcnBzceARcWFRQHDgEHBicuAzc2Nz4BFzY3Nic0JicmJyYGBw4BFhceAXYNVQ1PJA1WFikQJh4PJhYwJxQeEAMHDyYSKyEmGRkCEQ8dJhMmDyAXISIQJmBWDU8kDY4BFBApNysnEhcECRYLIiouFS4ZDAz0CR8iJRcqEB0DAQkLGE5IEwoGAAUAAAAAAQcA/gADAAwAFQAeACcAAD8BFwc3IiY0NjIWFAYHMjY0JiIGFBYXIiY+ATIWFAYHMjY0JiIGFBZElg6WAgsRERcREQwUGxsnGxuXDBEBEBcREQsTHBwnGxs+vAy8gBEXEBAXERMcJxsbJxxdEBcRERcQExsnHBwnGwAABAAAAAABGgEbAAsAFwAjAEUAADcjFSMVMxUzNTM1IycuAQ4CFhcWPgEmJz4BHgIGBwYuATYXMzIWHQEjNTQmKwEiBh0BMxUUFjsBFSMiJjc1IiY3NTQ29BMlJRMlJVQECgkFAQQFBg8JAyYJFBILAgoIDR4RBgouDhMSCQYuBgkTAgIPDwkOAQkLARNxJhMlJRO4AwEFCAoJAwQDDQ8UBgEJERQSBQkHGR5FEw4ODgYICAYzPwECEw0JLAwIMg4TAAAAAAQAAAAAAM8BGgAIABEAKQA9AAATMhYUBiImNDY3IgYeATI2NCYXIyIGHQEGFjMVBhY7ATI2PQEyNic1NCYHNSY2OwEyFgcVIxUUBisBIiY9AZYICwsQCwsIEBYBFSAWFgcuDhMBCwkBDgkeCg0ICwETSgEJBi4GCQESAgIeAgIBBwsQCwsQCxIWHxYWHxZUEw4yCAwsCQ0NCisMCDIOE1QzBggIBjM/AQICAT8AAAAAAQAAAAABLAEHAC0AABMHFTM1MxUXMzc1MxUXMzc1MxUXMzc1MxUjNSMVIzUjFSM1IxUjNSMVFyE3NScTExMlChIKJQoSCiUKEgolOBMvEi8TOBMTAQYTEwEHE3FxZwoKZ2cKCmdnCgpnvDk5OTk5OUtLEhK8EwAABAAAAAABGgEaAAUADgAbAC0AADczLgEnFTceARcWFSM1MgcXMw4BIyIuATU0NjcXMj4BNzY1IzUiBw4CFxQeAbxJBigcASMzBgFwCS8TXAczIhksGSsgExswIAQCcQkKGisZAR4zvBsoBklcBjMjCglwgxMgKxksGSIzB8wYKxoKCXECBCAwGx8zHgACAAAAAAEHAOEAHAA3AAAlFSMiJicjDgMrATUjJzczNTMyFhcWFzM+ATMHBgcGDwEjJyYnLgEnFT4BNzY/ATMXFh8BFhcBBwYLEwc2BAwPEgoJPBMTPAkKEQgQCDYHEwsJAwMFAwRNAgQJBA8GBg8ECQQCTQQBAgUCBM6DCgkJDgoFSwoJSwUFChIJChQBAgMGBQYMCAMHAYMBBwQICwcGAwIEAgEAAAACAAAAAAEtAQcANgBQAAATMxUUBgcVHgEXBgcxJi8BNTc2PwE2NyMWFxYfARUHBgcOAQczBgcjFQcnNSM1NDY3Njc1LgE1Fz4CFx4BFxYUBw4BBwYiJy4BJyY2NzY3NkuDCQoJDQQJCAkMBgUDAgQCAVsCAQQFBgcLCAQHAV4FBAoJCksGBAoSCQqMBw4PCA4VBAICBBUOCA8HDhYEAgEBBQwEAQcGCxMHNgQLBgMFCgQCTQQBAgUDAwQCBQMETQIECQQPBgcIPBMTPAkKEQgQCDYHEwuYBAMBAwMVDwcPCA4VBAICBBUOCA8HEAsEAAACAAAAAADhAQcAHAA3AAATMxUUBgcVHgMdASMVByc1IzU0Njc2NzUuATUXFhcWHwEVBwYHDgEHMy4BJyYvATU3Nj8BNjdLgwkKCQ4KBUsJCksGBAoSCQoUAgEEBQYHCwgEBwGDAQYECAwGBQMCBAIBAQcGCxMHNgQMDxIKCTwTEzwJChEIEAg2BxMLCQQCBQMETQIECQQPBgYPBAkEAk0EAQIFAwMAAAAEAAAAAAEWARsAFQAoAC4AMQAAEx4BFxYVFAcOAQcGJy4DNzY3PgEXNjc2JzQmJyYnJgYHDgEWFx4BJzcXFQcnNxU3oRYpECYeDyYWMCcUHhADBw8mEishJhkZAhEPHSYTJg8gFyEiECYnDlRUDhI6ARkBFBApNysnEhcECRYLIiouFS4ZDAz0CR8iJRcqEB0DAQkLGE5IEwoGqwg4EDgIX04nAAIAAAAAAPABBwAFAAgAABMHFRc3NQc1F0cPD6mljwEHCOEIcBBnvl8AAAAAAgAAAAAA4gEaABUAHwAAEyMVIwcVFBYXFTM1PgE9AScjNSMVIxcOAS4BPQEzFRSDEh0JJR0SHSUJHBMmOwwiHxNwARk4CUIcKwM5OQMrHEIJODhzDAYNHBE4OBcAAAAABQAAAAABDQDvAAcADwAfACcALwAANyMnIwcjNzMXJyYnMQYPARc1MzIWFRQGBxUeARUUBiMnFTMyNjU0IwcVMzI2NTQjoBMPPg4TOBEQFwEBAQIWbikTFg4LDhIbFBkRDhAcExcPECNeKCiQWT4DBwcDPjeQEg8MEgQBARMPEheBLw4MFT40DgwaAAAIAAAAAAEaAQcABwALAA8AEwAXABsAHwAjAAATMxcVByMnNRczNSMXIxUzJyM1MwczNSMXMxUjJyMVMwczFSMm4RIS4RMT4eHOvLwTlpY4S0sTJSU5S0tLS0sBBxO8EhK8vLwTOBMSg0sTJTgTJRMAAgAAAAAA6wDrAAcACwAAPwEzFxUHIyc3FTM1QgmWCQmWCRKE4QkJlgkJjYSEAAAABQAAAAABGgEaAAcACwAPABMAFwAAEzMXFQcjJzUXMzUjFzMVIzcjFTM3MxUjHPQJCfQJE+HhEiYmcSYmJSYmARkJ9AkJ9OrhE7y8cXGWAAABAAAAAAEaAPQAEgAANycjBycjByMVMz8BFzM3HwEzNd0hEyMWEhY1PAoNFhMjGwlDg3F9XVESBzJfhFgGEgAABAAAAAABBwEaAAwAGQA8AEAAABMiDgEUHgEyPgE0LgEHIi4BPgIyHgEUDgE3LgEiDgIHMzQ+ATIeAhQGDwEOARcVMzU0Nj8BPgI0JgczFSONITghIThCOCEhOCEcMBwBGzA4LxwcLwEFDxEPCgQBFwUHBgUEAgQDDgMEARYEAwcEBgQELhUVARkhOEI4ICA4Qjgh4RwvODAcHDA4LxyeBQYGCw0HBQcDAQMFCAkEEAQJBQwJBAgECAQKCw0MXhYAAgAAAAABCgENABAAIgAANw4BFTIzMhYUBiMiJjU0NjcXDgEVMjMyFhQGIyImNTQ2NxeGIyADBRMcGhUbHS8vmSQgAwUTHBoVGx0wLhbqFjMkGCsbKiY1ThsjFjMkGCsbKiY1ThsjAAAIAAAAAAEZARoADAAZACUAMQBDAE4AUgBWAAA3NDY3Jw4BFBYXNy4BNxQWFzcuATQ2NycOARcnPgE0Jic3HgEUBjcHHgEUBgcXPgE0JgcWDwEXBycjByc3LgE+Ah4BBw4CHgEyNjQuARcjBzMXJyMHOBAPDhETExEODxAUDQwNCQoKCQ0MDZAOCgoKCg4LDQ0ODQ4QEA4NERMTSwEFBUARDmgPEUAFBAcNDw0JHgIEAQIFBgYEBQIFESYZETYQwxUmDg0RLDEsEQ0OJhQQHwwNCRgaGAkODB9NDgkYGhgJDQwfIR+GDQ4mKSYODREsMSxCCggEkQghIQiRBhAQCQEGDAEBBAUFAwUHBAInJDglJQAAAAAFAAAAAAEaAQsAFQAeACoAMwA/AAA3FAczNi4BDgIeATc1Bi4BPgIeAQcyNjQmIgYUFhcyNxcOASImJzceATcyNjQmIgYUFhczFTMVIxUjNSM1M+EBEwMgO0AuDBw5IBouGAYjMzEeeggLCxALCy4UDg0JGRsZCQ0HEi8ICwsQCws3EyUlEyUlnwQFIDkcDC5AOyADEwMYLzQnDRMrEQsPCwsPCy8ODQkLCwoNBwgvCw8LCw8LOCYTJSUTAA4AAAAAARoA9AAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMAACUjIgYdARQWOwEyNj0BNCYHIzUzByMVMwcjFTM3MxUjFyMVMyczFSM3IxUzJzMVIxUjFTMHMxUjNTMVIzcjFTMHMxUjAQfPCAoKCM8HCwsHz885EhISExMlExMTExODXV2DJiZeExMTE0sTExMTOBISOCYm9AsIgwgLCwiDCAuWgxMSExM4EjkSEhI4EzgSExMTEl0SEhITEwAAAAADAAAAAADiAOEACAAVAB4AADcyNjQmIgYUFjcUDgEiLgE0PgEyHgEHNCYiBhQWMjaWCAsLEAsLUxQjKCMUFCMoIxQTIS4hIS4hgwsQCwsQCxMUIxQUIygjFBQjFBchIS4hIQAAAwAAAAABFgEbAAgAHgAxAAA3MjY0JiIGHgE3HgEXFhUUBw4BBwYnLgM3Njc+ARc2NzYnNCYnJicmBgcOARYXHgGWEBYWIBYBFRsWKRAmHg8mFjAnFB4QAwcPJhIrISYZGQIRDx0mEyYPIBchIhAmcRUgFhYgFagBFBApNysnEhcECRYLIiouFS4ZDAz0CR8iJRcqEB0DAQkLGE5IEwoGAAEAAAAAAOsBCgAZAAATFQcjNTMnLgEOAhYfAQcnLgE+AhYfATXqCUIwEg0iIxkKCg1hDWIQDAwhLCwRDQEHQgkSEg0JCRkjIwxiDWERLCwhCwsRDScAAAAKAAAAAAEqASwAFQAdACEALgAyADYAOgA+AEIARwAANwcnNyMiBhQWOwEVIy4BNDY3Myc3FxMjJzU3MxcVJzM1IzczFxUHIzUzNSMVIzUXIxUzBzMVIxcjFTM3MxUjFyMVMycxMxUjiysOGjwNERENCwsUHBwUPBoOK0V4Cgp4CnhkZEZ4CgoyKGQUFDw8PDw8PDw8FDw8PBQUKioW8ysOGhEZEhQBHSgdARoOK/7/CqAKCqAKjHgKoAoUjDxGghQUFBQUyBQ8FDwUAAABAAAAAAEJAQcAHQAANyM1MxcVIzUOAR4BPgImJzceAg4DLgI+AVgyQQoTGhEaOUArBSQfBRklEgQaKzMxJRIEGvQTCkElEz88HwswQTUKEggjMDMsHQcQIzAzLAAAAAACAAAAAAEIAQcAEQAVAAATMxU3FwcXBycVIzUHJzcnNxcHMxUjvBIwCTAwCTASMAkwMAkwlktLAQc7HRAdHhAdOjodEB4dEB1bSwAABQAAAAABLQESABIAHwAsADIAOAAAEzMXFSYnNSMVMxQXIzUzNSMnNRciDgEUHgEyPgE0LgEHIi4BND4BMh4BFA4BNyc3FwcXJxcHFzcnEf4JCQrqYRROOmsK1xUkFRUkKiQVFSQVEBsQEBsgGw8PGxAaGgkTE0sSEggbGwERCWwHBVawIBoTFAnEbBUkKiQVFSQqJBWIDxsgGxAQGyAbDycbGwkSExESEwgbGwAAAAACAAAAAADyARoABgANAAA3JzcnBxUXJxcHFzc1J/JLSwxQUK5NTQxSUnlKSwtQDFBWTUwMUwtSAAEAAAAAARoAqQADAAAlITUhARn++gEGlhMAAAALAAAAAAEaARoACwAVACYAOgBEAFgAYQBzAHsAfwCGAAA3NjIWFAYiJwcjNTMVFBYyNjQmIgYVByc3FzU0NjsBFSMiBh0BNxc3MzU0IyIGBxU2Mg8BBhUUFjMyPwEVFAYiJjU0PwEHIzUGIyImNTQ/ATQiBzU+ATcyFQc1BwYVFBYyNhcyNzUGIiY0NjIXNSYnIgYUFic3MxcVByMnNxUzNSc3MxcVBzXaBA4ICQ4DAQsLBAcEAwcFjCcMEw8LLCwEBRIMOw0SBAkDBw8BCw4HBggEAQUGAwYHLAwECAYHDgsOBwMJBBEMBwYDBgQ3CQUFDAcICwQDCAwODX0SqRMTqRISqXAShBIS+gkOGA8HBko0BAcIDgcIBU4oDBMdChARBgMdEgwNIBcDAgwFCQEDEAcJCRIEBAcEAgcBAa8HCQkHEAMBCQUMAgIBFwsEAQEHAgQGEgMOBAgOCQQOAgEQGg9LExNdExNdXV0mExNeE3EAAAAGAAAAAADiARoAEAAdACcAOgBCAEYAADcXNycHNTQ2OwE1IyIGHQEnFzMWPgE0JiIHJyMVMz0BNDYyFhQGIiYHBiMiJjUmNjMyFxUmIgYUFjI3JwcVFzM3NScHMxUjPCspDRMGAx0cDBAUbwEFFQ0LFgYBEBAGCwYGCwYQBw4QEwEWEQwGBxELChEIXhMTgxMTg4OD5isqDRMeBAYSEAweFC8JARIeEQsnXBsHBwgJEQoJlgUUEBIVAxMFCxMLBVsTcBMTcBMTcAAAAAABAAAAAAEHAQQAFQAAEwcVFzcnMzIWFxYdATM1NC4CKwE3dktLDj0kJzQQHhMRJjwpIjsBBEwNSw08EBAfRwYGJzkmEzoAAAAJAAAAAAEaARoAKAAsADAANAA7AEsAUwBXAFsAADcjNTM1IyIOAh0BBhYXFhczNSMiJyYnND0BNDU2NzY7ARUjFTM3NSMnIxUzBzMVIxUzFSMXIzUzFSMnNzMXFQcjFSM1IyImPQE0NhczNSMiBh4BOwE1IyczNSP0qUtQBg0JBAELCgYGBQUDAgYCAgYCA65LVAoTgxMTExMTExMFBTgFF0JUCQkvExIICwsRCQkEBgEFICYmEzk5cZYSBQoMBrIKEAQCARMBAwUDAgoCAwUDASYTClRxExMSExODODgc6glxCRMTCwheBwtwEwYIBRMSOQAABwAAAAABGgEsAA8AHwAvAD8ARwBXAGAAADcxMhYVMRQGIzEiJjUxNDYXMTIWFTEUBiMxIiY1MTQ2NzEyFhUxFAYjMSImNTE0NjcxMhYVMRQGIzEiJjUxNDYHMzcXByMnNxcjFTMeATI2NzM1Iy4BIgYXFAYiLgE+ARafBAYGBAQFBQQEBgYEBAUFBAQGBgQEBQUEBAYGBAQFBQUTRA1UDVUODDg4BCUxJQM5OQMlMSVsGycbARwnG+EFBAQGBgQEBSUGBAQFBQQEBksGBAQFBQQEBiUFBAQGBgQEBXlFDlRUDq0TGCAgGBMYICAhFBsbJxsBHAAAAAAEAAAAAAEaARoACQATACMALAAANxUzNRc3JyMHFzcVMzUXNycjBx8BIxUzHgEyNjczNSMuASIGFxQGIi4BPgEWlhNEDVQNVQ5EE0QNVA1VDgw4OAQlMSUDOTkDJTElbBsnGwEcJxv8EhJEDVRUDQwuLkUOVFQONBMYICAYExggICEUGxsnGwEcAAAAAAQAAAAAAQcBCAAvADgAQQBKAAAlNC4BDgEWFxUUDwEnJj0BPgEuASIOARYXFRQWHwEVDgEeATI+ASYnNTc+AT0BPgEnNDYyFhQGIiYXFAYiJjQ2MhY3IiY0NjIWFAYBBxQeFwQQDgU0NAUOEAQVHBUEEA4IBzMOEAQVHRUDEA0yCAgMD7sLEAoKEAtnCxALCxALLwgLCxALC+EPFQMTHBkDFAYDGhoDBhQDGBwSEhwYAxQIDgMbGAQXHBMTHBcEGBoEDggUAxQNCAsLEAsLoQgKChALC44LEAsLEAsAAAAAAwAAAAABGgEsAA8AGAAiAAA3IxUzHgEyNjczNSMuASIGFxQGIi4BPgEWJzUzFTcXByMnN144OAQlMSUDOTkDJTElbBsnGwEcJxs4E0QNVA1VDksTGCAgGBMYICAhFBsbJxsBHF55eUUOVFQOAAAAAAMAAAAAARoBGgAJABkAIgAANxUzNRc3JyMHHwEjFTMeATI2NzM1Iy4BIgYXFAYiLgE+ARaWE0QNVA1VDgw4OAQlMSUDOTkDJTElbBsnGwEcJxv8ZmZEDVRUDW0TGCAgGBMYICAhFBsbJxsBHAAAAAAGAAAAAAEHARoAJgAqAC4AMgA2AD0AACU1JyMiBwYHBgcVFBcWFxY7ATUjIicmJyY9ATQ3Njc2OwEVIxUzNyc1MxUnMxUjFTMVIxcjFTMXByM1MxUjAQcKtwYGDQUCAQMFDQYGBQUDAgYCAQECBgIDrktUCryplhMTExMTExMJFwU4BXGfCQIGDQYGsgYGDQUCEgEDBQMCCgIDBQMBJhIJQpaWgxMTEhMTZxw4OAAAAAQAAAAAARoBGgALABQAGAAcAAATMxcVByMHJzUjJzUXMzUjFTMXFT8BMxUjFTM1Ixz0CQl/NhAvCXp64S4KKAcSEhISARkJvAk2By8JvLKpqQohKJleJRIAAAAABAAAAAABBwEaAAkADgAaAB4AABMfARUHIyc1NzMHMzUnIxcjFTMVMzUzNSM1IwczFSPJOAUSqRMTcHCpOXBLJSUTJSUTJV1dARQ4DqgTE+ES86g5SxMmJhMlgxMAAAAABwAAAAABGgEsAAgAEQAaACMAMABWAGYAADcUBiImNDYyFgcUFjI2NCYiBhcUFjI2NCYiBhcUBiImNDYyFgc2NxcOASImJzceAT8BFAYHFTMyFh0BFxUHFRQGKwEiJj0BJzU3NTQ2OwE1LgE1NDYyFgciBh0BFBY7AT4BPQE0JiOWFh8WFh8WOAsPCwsPCzgWHxYWHxY4Cw8LCw8LLg4LDQkZHBkKDQkYDRIKCS8YIBMSIRhwGCATEyAYLwkKEBgQVBAWFhBwEBYWEJYQFRUgFRUQCAsLEAsLCBAVFSAVFRAICwsQCwtFAwsNCgoKCg0JBwK3CQ8DASEXExMlExMXISEXExMlExMXIQEDDwkMEBA7Fg9xEBYBFRBxDxYAAAAABgAAAAABGgEaABEAFgAbACgALgA3AAABIgcGByMHFR8CMzc1Njc2NQczBgcnFyc2NxUvATY3Njc2NwYHBgcGBzUjNSMVNzYuAQ4BHgE2ARAvLiUkTgkDcAc4CSETF/MxFxMHagcbF0BAEBUjJDAvAx4XJBdIJRO3BgUTFw0FExcBGRcTIQk4B3ECCU4kJS4vVBgbB2oHExcxFUAYFyQXHgMvMCQjFTgTJTiQCRcNBRMXDQUABAAAAAABJQEHAB4AKAA1AD4AADc1NzMfATMXFTMXDwEjNjczNyMmJz8BMzUjLwEjFQYXFAYiJjQ2MhYVMxQOASIuATQ+ATIeAQcyNjQmIgYUFhMJXgYRbAoVCTIJRgcFMy1sBggDBlVnBxBQClURFxERFxAmEh4jHxERHyMeEkIUGxsnGxu3RgoDEAouDIQGCApxBwYDAyUDEDEFVwwQEBgQEAwSHhERHiQeEhIeQRwnGxsnHAAAAAQAAAAAARoBBwAcACYAMwA8AAA3MxcVByM2NzM3IxUmJz8BMzcjLwEjFQYHNTczFwcUBiImNDYyFhUzFA4BIi4BND4BMh4BBzI2NCYiBhQWkX8JCWwHBVYBdwgJBwZ6AXoHEFAKCQleBxARFxERFxAmEh4jHxERHyMeEkIUGxsnGxv0CrsJCAqEAQYEBgMTAxAxBQdGCgOdDBAQGBAQDBIeEREeJB4SEh5BHCcbGyccAAAAAAMAAAAAAPQA9AAEAA4AGAAANyM1MhYnFTIeARUzNC4BBxUyHgEVMzQuAV4mEBYmLk4tEzNWMxorGRMfMzgmFqwTLU4uM1YzSxMZKxofMx8AAwAAAAABGgD0AAkADgASAAA3FzM3NS8BIw8BFyc3MxcnMxcHE3wOfD4HfAc+g281dDVvMiJUpXx8Dj4DAz52bzU1IiJTAAAAAwAAAAABIAEaAAUACAASAAATBxUXNzUHNR8BMxcHJxUjNQcnIQ4OqaSOMA0vDR8THw0BGQjhB3AQZ75fCy8NH2ZmHw0AAAAABQAAAAABFwD4AAYAEAAgADIAOQAAPwE1JxUXByc3FxUHNTcnFSMXJg4BHgE2NzE2NTQnMS4BBzYXMRYXHgEVMRYOAS4BNzE2FwcjJzcXN593moZjag6fQy6GEiEYJg4RKS4QDxMIFS0NExENBggBFiMeDwYFSiMNEQwMHS9QDmcVWUKsB2oOLRUfWUAOARktLBcIExQWGxUIChgKAQINBhMLEB0IEiASERMjEQ0MHQADAAAAAAEWAQcABQAIAA8AABMHFRc3NQc1Fwc3NScVFwc0Dg6ppY9WpKSOjgEHCOEIcBBnvl91bRBuF19fAAAAAwAAAAABIAEaAAUACAASAAATBxUXNzUHNR8BIyc3FzUzFTcXIg8PqaWOPQ0vDR8THw0BGQjhB3AQZ75fji8NH2ZmHw4AAAAABAAAAAABFgEHAAkAHAAuADUAAD8BFxUHNTcnFSMHJgYHBhYXHgE2NzE2NTQnNS4BBzYXMRYXHgEVMRYOAS4BNzE2FwcjJzcXN14OqWxWjhMDGSgIBAIECSsxERAUCRYwDhQSDgcIARgkIBAGBU8lDhINDB//CHEQSBc5X0QPARoZDBgMFhkKExUXHhUBCAsZCgECDQgUCxEfCBMhExMVJRMNDB8AAAAABAAAAAABFgEHAAkAHAAuADoAAD8BFxUHNTcnFSMHJgYHBhYXHgE2NzE2NTQnNS4BBzYXMRYXHgEVMRYOAS4BNzE2FycHFwcXNxc3JzcnXg6pbFaOEwMZKAgEAgQJKzEREBQJFjAOFBIOBwgBGCQgEAYFLBYMFxcMFhcMFxcM/whxEEgXOV9EDwEaGQwYDBYZChMVFx4VAQgLGQoBAg0IFAsRHwgTIRMTFxcMGBcMFxcMFxgMAAAAAAQAAAAAARoBGgAPABgAHAAmAAAlLwEjBxUjBxUXMzc1Mzc1ByM1MxUzNTMXBzUzFRcjNS8CIzUzFwEWHAagCS8JCbwJLwlLqBJxDxZdJXEmAxwGXpIX+hwDCS8JvAkJLwmgzqg5ORYPJSVLXgYcAyYXAAAABQAAAAABGgEZABQAGAAgACMAJwAAEx8BFSMHNScjFSM1IxUzByMnNTczBzM1Ix8BFQ8BJz8BDwE/ARc3J88fBgoJHwZxJTgKLhMTnD8mJnoccjkMHHJnChMDD2EPARMfDgYJDyBLS7wSErwTSzk5HA1yHA04cocTCR0PYQ4AAAADAAAAAAEaARoACQASABYAABMfARUHIyc1NzMHFTM1JyMVIzUzFTM1+hwDCfQJCdjO4Rcig0smARcdBtgJCfQJEuHKF0tLOTkAAAAABgAAAAABGgEHAAMABwAOABUAHAAjAAA3MzUjFzMVIycjNTczFSM3FSM1IzUzBzMVByM1MyMzFSMnNTM4vLwmcHA4EwlCOPMSOUIJEglCOeE4QgkTS5YlS0tBChMJQTgTlkIJEhIJQgAGAAAAAAEaARoABgANABQAGwAjACcAADcjNTM1MxU3NSMVFzM1BxUzNTM1KwEVMxUzNSc3ByMnNTczFwcjFTNCLyUTqRMJLzgTJS/XJRMJnwmECQmECSVLS+ETJS8KJS8JE7IvJRMTJS8JHAkJXgkJHCYAAAMAAP//ASwBEAASAB8ALwAAEyIOARUUFhcHFzcWMzI+ATQuAQc0PgEyHgEUDgEiLgEXByMnNxc3Mxc3MxcVJwcjlhcnFgwLRQ1GFRoXJxYWJ1kSHiQeEhIeJB4SVSgOHA0WKA0pKA0fJSkNARAXJxYRHgxFDUYOFyctJxdUER4SEh4jHhISHoIoHA0VKCgoHxolKAAEAAAAAAEbAR8AHAApADIAOgAANw4BFxYXBhcVJwcnNy4BPgEeARUUByYnNTQuAQYXPgEeAg4CLgI2FxY3FjcnBhUUNxc2JzYmIyJsEwkLCA8CAQlHDkcXBSRBQikBCAkdLzInECkkFgMSIigkFgIREhEXEg9PChhOCwEBIRgS7hM1GBIMCQkDBkUNRRlFOhkTNyMHCAcGAhoqFApkCwMSISgkFwIRIigkWxEBAQtODhIYRk8PEhchAAAAAAIAAAAAASwBLQAPAB0AABMiDgEWFwcXNx4BPgEuASMVIi4BND4BMh4BFA4BI78fMxkJFGQOZBtDOBYUNyEXJxcXJy4mFxcmFwEsITg8FnMMchUCJkBBKLsWJy4nFhYnLicXAAACAAAAAAEaARAABgANAAATNxcVByc3Fwc3Jx8BFRMO+PgOHRQY0dEYZQEICHARcAhvCVdiX1YCEgAAAAAGAAAAAAEcARoAAwAHAAsAHQAhACkAADczFSMVMxUjFTMVIxchNzM1ND4COwEyHgIdATMHMzUjFycjFSM1IwdxS0tLS0tLq/70GCMDBQcEcAQHBQMjpnBwpg4VlhUO9BNeEhMTS16pAwcFAwMFBwSoJs/0OCUlOAAGAAAAAAEaAQcADAAQAC4ANwBVAF4AABMzFxUjNSMVMxUjJzUXMzUjFzUmJwcnNyY3JzcXNjc1MxUWFzcXBxYHFwcnBgcVJxQWMjY0JiIGFzUmJwcnNyY3JzcXNjc1MxUWFzcXBxYHFwcnBgcVJxQWMjY0JiIGHPQJEuGDjQkT4eFdBQQRChIBARIKEQUEEwUEEgkSAQESCRIEBRcICwkJCwllBQQSCREBAREJEgQFEgUEEgkRAQERCRIEBRcIDAgIDAgBBwp6OYQSCc4vJqkVAQMKEQoFBQoQCgQBFRUBBAoQCgUFChELBAEVLwYICAwICG0UAgMKEAsFBQoQCgMCFRUCAwoQCgUFCxAKAwIULwYJCQsJCQAABgAAAAABBwEaAAcAGwAjADcAPwBTAAA3JzU3MxcVBycjFSM1IxUjNSMVIzUjFTM1IxUjByc1NzMXFQcnIxUjNSMVMzUjFSM1IxUjNSMVIxc3NScjBxUXNzUzFTM1MxUzNTMVMzUzFTM1MxUvCQnOCgpBExMTEhMTE7wmEo0JCc4KCowTExO8JhITExMSjAoKzgkJCRMTExITExMSJs4KOAkJOAo5ExMTExMTJiYTgwk4Cgo4CTgTEyYmExMTExODCTgKCjgJEyUTExMTExMTEyUAAAAEAAAAAAEsASwAFwA3AEMATgAANxcVBxcHJwcjJwcnNyc1Nyc3FzczFzcXBzc1LwE3JwcvASMPAScHFw8BFR8BBxc3HwEzPwEXNy8BNjMyFhUUDgEuATYXFjMyNjQuAQ4BFvg0NB4rLAs8CywqHTQ0HSosCzwLLCsxMjIHHBErEQoZChArEh0HMjIHHRIrEAoZChErERxgCw0SGRQeGwsIGQYGCQwJDw4GBb8LPAssKh00NB4rLAs8CywrHjQ0HitsChkLECsSHQcyMgcdEisQCxkKECsSHQcyMgcdEitLBxkSDxgGDh0dLQMMEQsDBw4PAAAABAAAAAABBwD+ABkAIwA8AEYAADcyFhczMhYUBgcjDgEiJicjIiY+ATczPgEzFyIGFBYyNjQmIzcyFhczMhYUBgcjDgEiJicjIiY0NjczPgEXIgYUFjI2NCYjcQwVA2gEBgUDagMVGRUDHQQGAQQDHwMVDAEICwsPCwsITAwVAx0EBgUDHwMVGRUDaAQFBANqAxUNCAsLDwsLCHoQDAYHBQEMEBAMBQgFAQwQEwsPCwsPC5YQDAUIBQEMEBAMBgcFAQwQEwsPCwsPCwAABQAAAAABGQEaAAwAJQA9AEAAQgAANyMHFRczNzUjFSM1MxcjNTQ2NzU0NjIfARUHBiImPQEGBwYPASM3Ig4BDwEzNjc2NzYzFxQWMj8BJy4BBhUHMjAjMV5CCQnOChO7OBMTKiEPFQdFRQcVDxUKBAIBE0wUIRUBAQQFCg8XCQkBAwYCREQCBgM5AQHhCbwJCTgvqXAvITQGGAoPCEkZSQgPChQFEQcKBnoTIBMhDwsPBAEoAwMCSUgCAQQDogAAAwAAAAABGgEcACQARQBRAAA3LgU3NTcyPgI3Njc2FxYXFhceAzMXFRQOBAcnFRQeAx8BNjc+BD0BIyYnJi8BJicmBw4DBxc+AS4BIg4BFhcHM5sPHBoWEQoBCQoQEQ8HCwwSEwwLBgUIDxEQCgkJERcZHA9sCA8VGA0WDAsNGBUOCQsJChQRCQgKDg8JERMTCmgJCgQQFA8ECQoIJRgJExYZHiMSPAkCAwYFBwQFAwEGAwMFBgMCCTwSIx4ZFhMJ0TMQHRsXFQgPBwgJFBcbHRAzAQIECwUEAgIEAwsIBAFRBBITDQ0TEgQxAAADAAAAAAEbAQcAFQAZACMAADc1FzUnIwcVHwE3NTM3NQcVIzUvATMHJzUfATMVIxcHJzU3F88SCakJBl4MQgkSOQZEg0xLSzpdXB4OLi8N5QETKgoKygkgCRMJKhMOnAgY1BmtGS4THg0uDS8NAAAAAwAAAAABGwEHABcAGwAlAAA3FTc1JyMHFTEVHwE3NTM3NScVIzUvATMHJzUfASM1Myc3FxUHJ88SCakJBl4MQgkSOQZEg0xLS3teXR4NLi4N5R0TIgoKCcEJIAkTCSITLJwIGNQZrRlAEx4NLg4uDQAAAAAFAAAAAAEdAR0ADAAZACIAKwA4AAATPgEeAg4CLgI2Fx4BPgIuAg4CFjcUBiImNDYyFhcUBiImNDYyFgciJicHHgE+ATcnDgFNHUc/KAQgO0U/KAQeKRk8NiIEGzM7NiIEGjwLEAsLEAteCxALCxALQhAaCBAKJSojCRAHHAEDFAUfO0ZAJwQePEU/txAFGzI9NiEEGzI8NV8ICwsQCwsICAsLEAsLUxANCRIVARYTCA4RAAADAAAAAAEaARoACAAxAFgAADcUBiImNDYyFiciBhUUFwcjFTMVMzU3FhczFSMiBhUiBh4BOwE+ATQmIzQmIzU0LgEjBzQ2OwEyFh0BFzMyFh0BMzIWFAYrASImNDY7ATU0NjsBNzUnIyImlgUIBgYIBS8THAgVIh0SFQwOHBIQFhAWARUQqQ8WFg8WEBEfEUIQDCYTGwoJCAsTCAsLCKkICwsIEwsIHAkJJgwQ6gQFBQgGBisbFA4LFRMcIRUHASUWDxYgFgEVIBYPFkIRHxEvDBEcE0sKCwgSCxALCxALEwcLCjgJEQAABwAAAAABGgEHAAoADgASABoAHgAiACwAABMHFTM1MxU3FzUnBzMVIwcjFTMnBxUXMzc1Jwc1MxUnIxUzNyMVJwcXMzcnB4MSEoQDDxJxJiY4JiY4ExODExODgxMlJV4TFg0mDSYNFgEHEzg4LgMPOhMmJTklSxNeEhJeE3FeXjkmlkgWDiYmDhYAAAAEAAD//wEHASwALAA1AD4ARwAAJTQuAQ4CHgEXDgErASIHNT4BLgEiDgEWFxUOAR4CPgEmJz4BOwEyNjc+ASc0NjIWFAYiJhcUBiImNDYyFjciJjQ2MhYUBgEHDhgaFgkEEg0FEgslFhASFQMbJBsDFRISFgMZJBwGEhIFEgslEh0GERjOEBgQEBgQOBAYEBAYEGcMEBAXERHFDRcMAhAZGhMECgsPWwMdJBgYJB0DcgQcJBkCFiQeBQoLFRECG0kMEBAXERHCDBAQFxERbhEXEBAXEQAAAAACAAAAAAEaARoALABXAAA3FjI2PwE+AT8BPgIuAS8BLgEvAS4CDgEPAQ4BDwEOAh4BHwEWFxYfARYXFjI2PwE+AT8BPgIuAS8BLgEvAS4CDgEPAQ4BDwEOARQWHwEeAR8BFmUFDQoCCAQOChoFBgMCBgcZCg8DCQIJCQkGAggDDwkaBQYDAgYGGgwJBAMIAngECggBBQEHBQ4FBQEDBQMPBAcBBQIGCAYFAgQCBgUOBQUFBQ4FBwEFAWEDBwYaCg4ECAIGCQkJAgkDDgoaBgYCAwcEGgoOAwkBBwkJCQIIBAsGBxoGTwMFBQ4FBwEFAQcHBwUBBQEHBQ4FBQEDBQMOBQcBBQEICggBBQEHBQ4FAAQAAAAAARoBGgAsAEAAawB/AAA3FjI2PwE+AT8BPgIuAS8BLgEvAS4CDgEPAQ4BDwEOAh4BHwEWFxYfARY/ARceAR8BBw4BDwEnLgEvATc+ARcWMjY/AT4BPwE+Ai4BLwEuAS8BLgIOAQ8BDgEPAQ4BFBYfAR4BHwEWLwE3PgE/ARceAR8BBw4BDwEnLgFlBQ0KAggEDgoaBQYDAgYHGQoPAwkCCQkJBgIIAw8JGgUGAwIGBhoMCQQDCAIHCggFFQ4aGg4VBQkJBBUOGhoOFHYECggBBQEHBQ4FBQEDBQMPBAcBBQIGCAYFAgQCBgUOBQUFBQ4FBwEFAQ0DAwkNAwEBAw0JAwMJDQMBAQMNYQMHBhoKDgQIAgYJCQkCCQMOChoGBgIDBwQaCg4DCQEHCQkJAggECwYHGgaHGhoOFQQKCQQVDhoaDhUFCQkFFMgDBQUOBQcBBQEHBwcFAQUBBwUOBQUBAwUDDgUGAgUBCAoIAQUBBwUOBTIBAQMNCQMDCQ0DAQEDDQkDAwkNAAMAAAAAARoBGgAHAAsADwAAASMHFRczNzUHIzUzFyM1MwEHzxISzxKDXl5xXl4BGRLPEhLPz8/PzwAAAAMAAAAAARoBGgAHAAsADwAAASMHFRczNzUHIzUzNSM1MwEHzxISzxISz8/PzwEZEs8SEs/PXhNeAAAAAAMAAAAAARoBEgBNAJwApgAANyYjLgEjFQ4BBxUWFxYXMjEGBwYHBh0BFBYyNzMGByMOARUGFjsBFj4CJyYvAS4BNj8BMzIXFhcWNjc2NTQnJicmBwYHBgcmJzU0JicXFgcGBwYrATQ2OwE1JjY3JwYHIyIHBiY+ATsBMjY/AQYmJz4BNzMyFxYXFh8BMzUmNjc+ATc2Fx4BFxUUDgEmJyYHDgEHBhYfAR4BByYvASIGFBY+ATQmI2gBAQIPChYeBAURCAoBEAoIBAMLDwcnBQIGERcBBAR9EBwWCQEBDQIHBQMDAgMDAwYHChIFAg0MERgaEg0KBQUHDwxkAgIDDggJbgoIGAESDgwIAzwDAgUFBAoHEwQFAQYPHAoEIRUCCAcKEAgGAQMBAgEEEw4TEA0RAgUHCAQKCwcJAgMHCAIKAQYBB4MEBgYHBgYE+gEJDBkJIxcICgYEAgIHBggGBwYHCgMJCgIbEgQFAQsXHRAWEQMICwkCAQEEAgEJCQYHERYSCw0FAw4LDgcHAwsQAbkPCQ4IAwcLCg0UAREDAgECAwsIBQMYAgkKFRwBAwUVCwoBAQcXBgwTAgQJCBsMAgcFAgICBgMCCgcLFwgDDB4NDQxwBQgGAQUIBQAABQAAAAABGgEaAAkADQAPABEAGwAANycHIxcHNxcnNwczNw8CNyMHMzcXMwcXJwc3tB4eZVIfUFAfUu1SGBgQGKpSUiwODiwkDiQkDrdiYkBkPj5kQAlPTzRQhBEtLRwtHBwtAAEAAAAAARoBGgAJAAA3JwcjFwc3Fyc3tB4eZVIfUFAfUrdiYkBkPj5kQAAABAAAAAABGgEaAAkADwAQABIAAD8BFzMHFycHNycfASc3Iyc1FyN4Hh5lUh9QUB9SgyQOJCwOalK3YmJAZD4+ZEBHHC0cLTNPAAAAAAMAAAAAARYBGwADABkALAAANzMVIzceARcWFRQHDgEHBicuAzc2Nz4BFzY3Nic0JicmJyYGBw4BFhceAXFLSzAWKRAmHg8mFjAnFB4QAwcPJhIrISYZGQIRDx0mEyYPIBchIhAmvEuoARQQKTcrJxIXBAkWCyIqLhUuGQwM9AkfIiUXKhAdAwEJCxhOSBMKBgAAAAAFAAAAAAEaAPQACQATABwAJQAuAAA3MzUjBxUXMzUjNyMVMxUjFTM3NQcyNjQmIgYUFjcUBiImNDYyFhcyNjQmIgYeASYSHAkJHBLqHBMTHAm7CAsLEAsLUwsQCwsQCyUICwsQCwEK4RMKqAoTqROWEwqoZwsQCwsQCxMICwsQCwsbCxALCxALAAAAAAIAAAAAARoBBwAJABMAABMHFRczNSM1MzUXNzUnIxUzFSMVHAkJLyUlxQkJLyYmAQcKzgkSvBPhCc4KE7wSAAACAAAAAAEaAPQABwAfAAA/ATMXFQcjJzcjFSM3JwcVFzcnMzUzJzcXFQcnNyMVMxMJ9AkJ9An0cUwnDTg4DShNSScNNzcNJ0lx6goKqAoKn0EnDTcONw0oEigNNw43DSdBAAAABAAAAAABFAEaACAAJAAoACwAADczNzUnIwcjNTc1JyMHFRczNxUXMxUXMzc1JyMHIzUzFTcXBycfAQcvAjcX1Q0yGQ0iXiMmDUslDhUJWBgOMhkNI15POAwlDCUMJQyQGD0ZdjINGSIYIg4lSw0mFm0JChkyDhkjSwkqCyYMOAwmDHgZPRgAAAcAAAAAARoBGgAZADUAPgBHAFAAWQBiAAATIg4CHQEeAT4BHgIOARYXMzI+ATQuASMHIy4BNSY3NjQmIgcGJyImPQE0PgEyHgEUDgEjNxQGIiY0NjIWFxQGIiY+ATIWJzI2LgEiBhQWNxQGIiY+ATIWFxQGIiY0NjIWlhowJRQBExoUHBQBFAMODwsjPSMjPSMBCgQFAggPHywQBwoCBB8zPTQeHjQeEgsQCwsQCzgLEAsBChALgwgLAQoQCwuLCxALAQoQCxMLEAsLEAsBGRQlMBoIDg0EEwEUGxUcFQEkPEc8JPUBBAQMCBArIBAIAgQDBx8zHx8zPTQevAgLCxALC4sICwsPCwtWCxALCxALEwgLCxALC0AICwsQCwsAAAQAAAAAARoA9AADAAcADwATAAA3MxUjFyMVMyc3MxcVByMnNxUzNUuWlpaWls4T4RIS4RMT4bwTJhJwExOWExOWlpYABgAAAAABGgEHAAwAFQAZAB4AIgAmAAA/ATMXFQcjNTM1IxUjFzUnIwcVFzM3JxUjNTcnNTMVJzMVIwcjFTODE3ESEktLcRMmE3ATE3ATE3CLCEtLS0smS0v0ExNeExNeODkTExNeEhJeXl4TCAsTOBNdEwAHAAAAAAEaAQcADAARABoAHgAiACYAKgAAASMHFTM1MxUjFTM3NQczFSMnByMHFRczNzUnFSM1MwczFSMVMxUjNzMVIwEHcRMTcUtLEnBLRAcmXRMTcBMTcHBeS0tLS3FLSwEHEzg4XhMTXjgTBwcTXhISXhNxXhMSExOWEwAAAAIAAAAAAO8BGgALABIAABM3MxcHMxcHJzcjJxcHNyM3IweLET4PKSEOhh4oFxFHNoVFPj5AAQ8KHUAgiRZIGwljiV6EAAAAAAQAAAAAARoBBwALAA8AEwAXAAAlJyMPARUfATM/ATUHJzUXNyc3HwEHNTcBD14RgwoKXhGDCqBUVAlXfVcHenrYL0IRVBEvQhFUkSpGJhAnPyxXPUk5AAADAAAAAAEHARoACQAMABMAACUvASMHFRczNzUHIzUHNTMVFzMVAQQ+BpEJCc4KEziEcQlC2T4CCfQJCbYEOeHhQgmWAAIAAAAAARsA4gAXACEAADciBgcjLgEOARQeATY3Mx4CPgIuAgciJjQ2MhYUBiPYGSUDOgQXHRISHRcEOgIVHyIcDwISHREUGxsnGxsT4SAYDRADFR0VBBAOERsOBBMeIxwRcBsnGxsnHAAAAAUAAAAAARoA6wASACUAPwBKAGUAADcWPgE3Nic2Jy4BIyIHNSMVMzU3Nhc2FxYVFgcOAScGJjc1Jjc2Jw4BDwEVNzY3MhYVBw4BFBYzMj8BFTM1NiYXFAYjIiY0NzY/ARcWNxY/ATUHBiImNDYXMh8BNScmIgYHBhQXFocKFBIGDQEBDAYQCRAMExMQBQYLBgcBCQMJBgsPAQEIBFAJEQcCCAsPBwkXDhUTDgsJBhEBEwEPCwYJBAgKE5wICg4MAwkJFxASDQoICAMKFhMHDw4GXwYBCAgRFhQPBwcLNI8GTAMBAQkKDQ8NBAYBARELCwwKBBYBBQUBFwcKAQwIBAESGhIGBQk/EBc5DREIDAQFAQMvBAEBCAEWBgcUHBYBBQUWAQUIBxEqEAcAAAgAAAAAARoBBwADAAcACwAPABMAFwAbAB8AACUjNTMHIxUzJyMVMxcjFTMnIxUzNyMVMycVIzUXIxUzARldXRImJkupqSXOzl5wcJZdXYODcF1d4RNLExMTXhJLExMTqTk5ExMAAAAABAAAAAABBwEaAAsADwATABcAADcnIw8BFR8BMz8BNQcnNRcnNxcHFwc1N/1dE14JCV4TXQp6VVVQWVlZXlRU4Tg4EHEQODgQcaMyYS5BNTUxQzJlLgAAAAUAAAAAARwBGgAIAAwAEAAdACkAABMzFRYXNSMVNxcnBzMnPwEXNz4BHgIOAi4CNhceAT4CJicmDgEWS5YKCbwTKBVLlnYgCysqDyMgFAIQHiIfFAIPGQoZFw4CDAoQJhYIAQdLAQRinyEqJYMTOBNLeAoCDx4jIBMCEB0iIFQHAgsVGhYHCwggJgAAAgAAAAABBwEHAEYAjQAANzUjIg4BBzEGBzEGFxUUBzEGBwYrARUzMhcVFhcVFhcxFh0BBhcVFhcxHgIXMzUjIi4CPQE0JicmJzY3PgE9ATQ2NzYzFxUzMj4BNzE2NzE2JzU0NzE2NzY7ATUjIic1Jic1JicxJj0BNic1JicxLgIHIxUzMh4CHQEUFhcWFwYHDgEdARQHDgEjcQIJEQwDAwEBAQIECgUGAQEGBQUDBAICAQEBAwMNEAkCAgYKBwQCAgUJCQUCAgkHBQZNAQkQDQMDAQEBAgQKBQYCAgYFBQMEAgIBAQEDAwwRCQEBBgoHBAICBQkJBQICCAMKBvQTBw0ICAgICBAGBQoFAhICAQIDAQMFBQYQCAgBBwgIDQYBEwQICgYZBgwFCwcHCwUMBhkJDQQCvBIGDQgHCQgIEAYFCgUCEgIBAgMBAwUFBhAICAEHCAgNBwESBAgKBhkGDAULBwcLBQwGGQwIBAQAAAACAAAAAAEaARoAGwAfAAATFTMVIxUzFSMVIzUjFSM1IzUzNSM1MzUzFTM1BxUzNc5LS0tLEksTS0tLSxNLS0sBGUsSSxNLS0tLE0sSS0tLXUtLAAAIAAAAAAEaARwADgAZAB0AKQA1AEIATwBTAAATFhcWFA4BIyImNTQ2NzYXNjc0LgEOARQeATcHFzcXMxUzFSMVIzUjNTMnFwcXBycHJzcnNxc3LgEiDgEeAz4CBwYHBicuAT4CFhcWNyMVMzYKBAIGDAgKDwgHCgQGAQUGBgQFBkxkDWNTEi8vEi8vbA0hIQ0hIQ0hIQ0hOgMMEA0FAQcLDQwHAREBBAYFAgIBBQYFAQWNS0sBFwQJBQwLCA8LBw0DBCUDBwMGAgMFBwUCImQMY4cvEi8vEiUNISENISENISENIXAHCQkNDQoGAQcKDQgEAQMFAQUGBQECAgU0EwAAAwAAAAABGQDhABsAIgApAAA3IzU0JisBFRQWOwEVIzUzMjY9ASMiBgcVIzUzFyc3FxUHJyMnNycHFRfOEgYEEwUECjkKBAUSBAUBEnA3HA4iIQ6nHBsOISK8CQQFZwQFExMFBGcFBAklTBwNIg4hDhsbDSEOIgAAAgAAAAABGgEbAB8AQwAANyIuATc2NyY0NzY3PgEfAQcXNxcWFAYHBgcOAScGBwY3IgcGBw4BHwEHBgcGHgIyNzY/ARcWNjc2Nz4BNTQnByc3JjUOEwIII0AFBgoVESkSDDYXOAUGDAsGCBAlEkQgCYkSEAYFDgcIAwREIwMBBwYIAx5JBQUPIA4GBQkJATEwMAYTExkKJj4OHg4YDQsECAU4FzYMDyAeCwYFCwQHRR4I9QsDBQ4mEgYEQiUFCwcCAxtLBAIHAwkDBQkXDQYGMDAxAQACAAAAAAD0ARoABwAbAAATBxUXMzc1Jwc1MxUjNTM1IzUzNSM1MzUjNTM1SxMTlhMTlpaWJiZLSyYmSwEZEuETE+ESJRPhEhMmEiYTJRMAAAgAAAAAARoBGgAJAA0AEQAVABkAHQAhACUAABMHFTM1MxUzNScDNTMVNyMVMzczFSM3IxUzNzMVIzM1IxUnMxUjLwkSzxIJ6hImExMTEhI4ExMTEhJdEiYTEwEZCdjPz9gJ/voTExMTExMTExMTExMTEwAABwAAAAABGgEHAAcACwAfACkANgBAAFIAABMHFRczNzUnBzUzFSczNTQjIgYHFTYyFQcGFRQWMzI/ARUUBiImNTQ/ARcjFSM1Mxc2MhYUBiInFRQWMjY0JiIGFzI3NQYiJjQ2Mhc1JgcmBhQWJhMT4RIS4eGjDRIECQMHDwwOBwYIBAEFBgMGBysBCwsBBA4ICQ4EBAcEAwcFRQkFBQsHBwwEBAgLDg0BBxOpExOpE7ypqTogFwMCDAUJAQMQBwkJEgQEBwQCBwEBFAZKHwkOGA8cBQQHCA4HCCEDDgQIDgkEDgMBARAaDwAAAAAGAAAAAAEaAQcABwALABMAGAAgACUAABMHFRczNzUnBzMVIwc3MxcVByMnNyMVMzUzNzMXFQcjJzcjFTM1JhMT4RIS4eHhExM4ExM4EyUSOF4SORISORIlEzkBBxM4ExM4ExM4SxISORISOTk5EhI5EhI5OTkAAAAGAAAAAAEaAOEACQATAB8AIwAnACsAADczNSMHFRczNSM3IxUzFSMVMzc1BxcVDwEjLwE1PwEzBxc1JzcXNycHNzUHJiUvCQkvJeovJiYvCTwEBlQJLgUGVAlQHBwLGz8bG0JCzhMJlgoTlhODEwqWJwgvCSUcCC8IJlcRGREPEBwQVx0aHQAAAwAAAAABKwEIABEAIwAnAAA3Jz4BHgEXNxcHIyc3Fy4CBh8BBi4CJwcnNzMXByceAyc3FwdnDxo9NiABFw4nDycPFwEaLDFADxo6Mh4BFw8nDigPFgIYJy6SDd8N5w0RAxwzHxYOJygOFxgqGAGzDQ4BHTEdFw4nKA4WFycXA74N0A4AAgAAAAABKwENABEAIwAANwcnNzMXByceAjY3Fw4BLgE3JwcXMzcnBy4CBgcXPgEeASYXDycOKA8WAyk9OQ8PE0VJMM0XDycPJw4XAS5IRRQPEDo8J5EXDicoDhYfLw0aHAshHhE6LxcOKCcOFiU6ExsgCxsYEDAACwAAAAABBwEHAAcACwAPABMAFwAbAB8AIwAnACsALwAAEyMHFRczNzUHMxUjFyM1Mx0BIzUnMxUjFTMVIxU1MxUzNTMVMyM1MzUjNTMnNTMV/eEJCeEK4c7Ogzg4OEs4ODg4OBM4Szg4ODg4OAEHCs4JCc4JEzglOCUlOCUTJTkmJiYmJhMlEyUlAAADAAAAAAEnAQcAEQAjADAAABMjDwEVFzM3FjI+AT8BNCYnNQcmIyIGFBYzMhcVBwYPASc3MxceARUGFQ4DJz8B+GIGfWENKhIqJRcCARQREw4OBAUFBA8NSQMCJVRzVBMJCgECERseDkUDAQcDfQ1iKgoUIhUKFSUMKiEFBQgGBihKAQMmVHQ5ChcNBQUPGQ8CBkUHAAAAAAUAAAAAARoBGgAIABUAHgArADgAADcyNjQmIgYUFjcUDgEiLgE0PgEyHgEHMjY0JiIGFBY3FA4BIi4BND4BMh4BBzI+ATQuASIOARQeAZYICwsQCwtTFCMoIxQUIygjFEsXISEuISGaIzxIPCMjPEg8I4MfMx8fMz4zHh4zgwsQCwsQCxMUIxQUIygjFBQjTCEuISEuITgkPCMjPEg8IyM8lB4zPjMfHzM+Mx4AAAAABAAAAAABGgEaAAYACgAOABIAAD8BJwcnBxc3IzczBzMVIxcjFTNDaw1kHA4i5JkrbqioqKioqK5dDlYiDCofJksmJSYAAAAABQAAAAABBgEaABMAFwAbACAAKgAAEx8BDwEvAQcvAQcvAT8BJz8BJzcHFzcnNxc3JzcXNycPARcjJxUjNQcjN9MLJwQ+CwNDCgMwCw4FLwMEQwMFZwYqBwoVOBQKIyshLgU5FiMTIxUgARkEXQsaBAgcBAcUBR8LFAgKHQgLYhAREBcuGC0YTRNNE3NbOEthTkkAAAQAAAAAARIBIwAXAEcAUQBuAAAlJyYiDwEOAR0BFBYfARYyPwE+AT0BNCYHFRQPAQY9AQYnIjU3NDczFjc2NCImNTQ3NTQ/ATIdATYXMg8BFAcxJgYVFBYzMhQ3FCMHIzU0PwExNwcOAR0BFBcjIi8BLgE9ATQ2PwE2Mh8BFhcuAQcBAFkIEghZCAkJCFkIEghZCAkJTQEFAQUFAQIBAQUEBw0GCgEFAQQEAgECAQUKBAQMJAEWAQEWEFQJCQgFBwdZBggIBlkHDwZZCwICCQbpNQUFNQUQCWoJEAU1BQU1BRAJagkQnwgBAQMBAggDAgEHAQEBAgMNBAcNCAgBAQMBCAIBAgYBAQEFBwICGgQBDgYBAQ18NAUMCWcLAwM1BA4HagcOBDUDAzUHDQQCAwAHAAAAAAEsARoAAwAgACQAKAAwADQAOAAANxcjJwciDgIUHgIyNxcGIwYiLgI0PgIyFhcHLgEXMxUjFTMVIzchBxUXITc1ByE1ITUhNSHMJg4lUwgMCgUFCQwSCQIEBQcQEAwHBwwSEgoCAgQJJRMTExON/uYJCQEaCRP++gEG/voBBqleXgsFCQ8QDQkFAwkCAgYMERQRDAcCAgkCAggTEhO7CfQJCfTqqBMmAAAAAA///wAAAPIBLQAEARcBGgEtATUBOwFKAVABUgFXAV4BYwFkAW4BdAAAEyIrATcXNjUHNj0BIy4BJy4BBz4BJw4BBwYHBjM3MAcjDgEHFDYxByYHBgczBgcxBhUHBhUUFwcXIx4DFyYnFBYXBxYfASYXFh8BNwYXMx4BMwcWFzMWFycXHgIXIyYnLgI3Jjc0JzU2NzUxFj8BNjczNjc2NzE2NxU2NzY/AQYzNwc2FzEyMwcGMRY3MTYXJxcWFzI3MTYXFRYXMicxHgEXJjEVFiMWFzUmJxQjMSYGFxY3MTQxFxYfASInMSYVHgEVMSIVFBY3MwcGFycUFTEWBzY0BxYHMQYVJwYWBzY1MTQ3Ig8BDgEnNCcmJyY3Njc2Nz4CFhcuAQ4BFzcyNRQeATcVNj8BBwY2PwE2NTEmPwEHMDkBFBYXFjcGLgEnMhcxFhcmJxYXNyIjMhYjMCcXNCIHFxQHBgc0JjY3FAcxBhQ/ATYHLgE3FjcnDwIXFhcnFh8BJyYnNwcGBzYnFTAzMTIUDwE1NgcUBzU0N4UEAwIOSAMCAgEBGxANIwkBBgEHCAMGBgEBBgMFBQgFBAIIDw0FAwIEBQECBAEDAQIEBQUEBAIFAwICAwEEAwIGAwIBCAUBCAMDBQIBAwYDBgUNDgUEFAccMhwCAQEBBwcCAwMDAQIBBQQHBwIHDAcNCAEBDwcFBAQFBQIFBQYGAQsKCgICBAUBCAEFDxoFAwEBBAIGBgMCAQIBAQIBAQEBAQIBAwECAQECAwEDAQIBAgEFBAMEAQMBAQEFBxAmFAISBgkDAgIDBQQSFhIFCRoYDgEBARUfDgUDCQEDBQ4DAQECBFQGAwsSCRsYBgEFCAQEBgkLAwEBBgICBDYCAQIDAgQEAQQCAgQBAxkFBgQHBRoBJwEDBAMFAgIBAQMBjAECBgfgAgEBBAIGAgMBKwGQCAYFCBAKEyYHBgIEAQEBAQICBAIBAQIBAwYBAgMBDwwJBQcJBAwRCA0FBwcJBAEFCQEEAgkFAgMCAQIGAwgEAgUJAwcEAQIDAgQFBgUCAgECCC1AIQYMDwICFg4BAgUFBwQEBgQHBgIDBgcDBgMBAgQBAQEBAQIBAgMEAwUBAQIBAwQFCB4RBAQFCwoBFAkCAQMFAgEBBAIGBQIDAQQGAQMFAwEECQcIAwQFBgYJAwcKCAMEBwUEAgEBAgUHDQUHAQIOCw8XAQYLAwcMAQoHCAQLGQ4BAhEbCwcBAQIIAgMBDQMCAgIDAykBBAIEAQQGEAoFCgEDCAoFuwEBegYEAwELBwYBAQQFAgIEAQIBBBMBAgEBAZkBnwQEBgMXBAIFAgYDGAIPDQ5XAQEDAwEDFQQEAgQEAAAFAAAAAAESAS0AWgCxAM8BGQE+AAA3HgEfARYfAR4BFA4BDwEOAgcOASMiJicmLwIiDwEiDwEOASImJyYvAS4CNDY1JzQ2NzY/Ayc0PgI3PgE1JzQ1ND4CMzIeAh0BFhcWHwEeAhUUJzIWHwEVDwEGDwEGFBcWHwEeATsBMj8DNC8CLgEvAT0BND4BMzIWFAYUFzMyNjUnLgIjIgYHFycmByMiPQEuAiIOARUHFB8BFjI2NSMiLwEmNgcyPgMmLwIuAgYPAQ4CFRcUBhQWHwIWFzcyNzY3Njc1PwE0PgE3NTQ/ATY/AS8BJi8BJjUnJi8CJiIPAQYiJi8BJiIdAQcGBxcUFwcOAR0CMh8BFh8BFh8BFAYHHgMXMj4BNzY/AjY9AS8CJiMiDwEGIiYvAQcGBwYVBwYPAhQW+QQFAQIBAwMCAwMGBAcGCQoGBAcECAsEAgEEHQcGDQEBBAMICwoFCQkZAwUDAwEHBwMCBQcBAQcKDAYICQEFCxINDhIJAwEDAwQOBwwIfgIDAQEBBAECBgICAwEEAQYGAQYFDgsBAQIFAwcDAQIDAgUEAgECAwMBAQMGBAgGAQEFAgICAgECBAYDAwECAQECAgEBAQIBBB0EBgYDAQICDQoCBAUGAwoDCAUBAgUEEAgDBUMEBQkJBAQCBQMGAwECAQIDBQICAgcBAQIDAwMCBQUUBQkHAwUDAggDAQEBBQYEAwMHBAQGBAECBQMCCAgKQAMHCAMICgoDAQUDBQMGAwIKAwUFAQQCAgECAgEDAQEJWwIHBQYEBQQCBgcFBAEEAwcKBAIDBggCAQEBAQICBQIEAgMEAgQBAwYICAUNBwcCAQIECQIHChQTEggKGA4LBgYMEg4HDBMXDA0KCQQGEgkUFg0KjwIBBAQCBQEBBQIDAQIEBgMFAwgIBAIBAgEBBAEBAgcCAwIHBQQCAQMDBwQIBAcICQEBAQEGAwYFAwQDBQQDBQECAQEFBAbkAgMGBwUCEhAEBgQBAgoDAwQEDAQHBwMBAwEBAw4BAgQCAwEIHwQGBQIBAQIDAQECFwYEAgoCAgQHBwcFAwMNAgUEBgMCBw0HCAQCAgcIEwkKBAIEAwQIAwQGBAUBBAYEAhUCBQQJBQUCAgICCAUPBAEGAQMCCgMCAgUFEQgIBQUHCgAAAAAEAAAAAAErARoABwALAA8AFQAAEx8BDwEvATcHFzcnFwcXNy8BBxcHFy/0CCIL9AgiDuEg4U0DXgI9RQ0yPQkBGQMJ8gkDCvHoA98CnRICEy83DycnDwAABAAAAAABBwEaAAcADAAQABQAABMjBxUXMzc1BxUjNTMXIzUzNSM1M/3hCQnhCoRdXXFeXl5eARkJ9AkJ9HFnz89eE14AAAAABv//AAABHAEaAAgAEQAeACcANABEAAA3FAYiJjQ2MhYHFAYiJjQ2MhYXLgEnBiceARcWMyY1NxQGIiY0NjIWFzY3NiYnBgcWBwYHFiciMT4BFwYPAQ4BByYnJiP2FyEXFyEXphghFxchGDIWIgoREg0xIA4OC2EXIRgYIRcQEwYGCg8GEBEIAwkO0gESRCYJAgEYKQ4ICgYG8xEWFiEWFmURFhYhFhZ0BBoTCAQeKAcCDhIBEBYWIRYWAhcdGTIWEQkfIhAOC3wgIwMKDQgBFRMFAgEAAAAABAAAAAABGgEaAAcACwASABYAABM3MxcVByMnNxUzNQ8BFwcXNzUVMxUjExPhEhLhExPhrw01NQ0+S0sBBxIS4RMT4eHhOQ01NQ09CjMTAAAEAAAAAAEaAOEABwAKABIAGAAANwczNzMXMycHNxc3IwczNzMXMyc3NjcfAT8sGQkrChksGw8OhR49Hg4/Dh1kFgIBAhepcRwccUIoKHqpKytCQwYFC0MAAwAAAAABBwD0AAMABwALAAAlIzUzFSM1MwczNSMBB+Hh4eHh4eHOJnEmcSYAAAAAAQAAAAABGgEHABsAADciLgE/ASMGLgI3Njc+ATczHgEdARQGKwEHBmYIDgUEEjQHDAcBAyMIAw0IpwsPDwsZbggjCxEJKQEGCw4GShcHCQEBDwtCCg9nBwAAAAACAAAAAAEaAQcAGwA2AAA3Ii4BPwEjBi4CNzY3PgE3Mx4BHQEUBisBBwYnIgcGBwYWNzMXFQcGHgEyPwIzMjY9ATQmI2YIDgUEEjQHDAcBAyMIAw0IpwsPDwsZbggYBQILIAIEBT4JFAEBBAUCcgkZAwUFAyMLEQkpAQYLDgZKFwcJAQEPC0IKD2cH0QUfQwQHAQwJLgIFAwJoAwQDQgMFAAAAAAEAAAAAARoBBwAbAAATHgIPATM2HgIHBgcOASsBLgE9ATQ2OwE3NsYIDgUEEjQHDAcBAyMIAw0IpwsPDwsabQgBBwEKEQkpAQcLDQZKFwcKAQ8LQgoPZwYAAAAAAgAAAAABGgEHABsANgAAEx4CDwEzNh4CBwYHDgErAS4BPQE0NjsBNzYXMjc2NzYmByMnNTc2LgEiDwIjIgYXFQYWM8YIDgUEEjQHDAcBAyMIAw0IpwsPDwsabQgYBQILIQEEBT0KFAEBBAUCcgkZAwUBAQUDAQcBChEJKQEHCw0GShcHCgEPC0IKD2cG0AUfQwQHAQwJLgIFAwJoAwQDQgMFAAAGAAAAAAEZARoAIAAvAEEATQBSAGgAACUnByc3JyYiDgIUFwYHBhYXHgEzMjc2NzY3FjI+AjQHBisBIi4CNzY3HgEXBjcWBiInLgE3PgI7AQcVFzM3BzMXNyc3LwEPAhcnFxUjJxc3FxYUBw4BJyYvATcXHgE+AjQmJwEVDycXJwMNGxoUCwU6OQYBCAQJBQkHFSQiGg0cGhQL4gECAgICAwIBKkYDBgRJqQEgLA8MBgYEDxQKBSIjDSLKHA4MDAEENgsPAiMKKxQcig06CAgGDwgFAzsNOgIFBQIBAQHrAycXKA8ECxQbHQ06OwgVBwQFBxMlIRsGCxUaHLcBAQQGAixGBAcDS4UXHw8MIA8KEAgjDSMiJw4NDR8IJAIPDDZAHRUsfQ08CBYIBgMDAgQ8DTwCAgIDAwQDAQAABgAAAAAA9AEaABMAFwAbAB8AIwAnAAA3MxUjFQcjJzUjNTM1NDY7ATIWFSsBFTMHMzUjFyMVMzczFSM3MxUjvDgTE4MTEjgLCDgICxM4OF6DgyYTExITEyYTE/QTqRISqRMTBwsLBxO8qRODg4ODgwAAAAABAAAAAAEHAM8ABQAAPwEzFwcjJgfSCGoQxAoKZgAAAAEAAAAAAM8BBwAFAAATFxUHJzXECgpmAQcI0ghqEAAAAQAAAAAAzwEHAAUAADcnNTcXFWgKCmYmB9IIahAAAAABAAAAAAEHAM8ABQAAJQcjJzczAQcI0gdpEGgKCmYAAAEAAAAAARoA/wA+AAAlDgEHFxQGBw4DIiYnFjY3IiYnJicXFjcuAScmNTEWMyYnJicmNzY3FhcWFxYXJzU0NzY3NjIWFzY3Bgc2ARkFDggBBwcJHSQrLSoSFSoQDBcHBQMFCgkJEAYMDA0LBwMCAwQBBAoNGR8QEAEECBUKFhQIEhAGEhDlCA4GBxAfDxUiGAwMDAILDgwKBwgBAQMCCQgOFAYHDAYGDg0HBgwKFQgEAQYGDAkVCAQJCAQJEwoBAAQAAAAAAQcBGgAeACIAJgAqAAA3IyczNzUnIwcVFzMHIwcVFzM3NScjNxcjBxUXMzc1JzUzFQcVIzUXIzUz/SA/FAoKSwkJFD4hCQk4CgoBOjkBCQk4CpY4XiXOJiZeXglLCQlLCV4KOAkJOApWVgo4CQk4ejk5gyUlJSUAAAAABAAAAAABBwEaAB4AIgAmACoAABMjBxUXMwcnMzc1JyMHFRczFyMHFRczNzUnIzczNzUHNTMVFxUjNTcjNTP9OAkJATk6AQoKOAkJIT4UCQlLCgoUPyAK4SVeOIMmJgEZCTgKVlYKOAkJOApdCksJCUsKXQo4LyYmgzg4gyYAAAAFAAAAAAEHARoAIwAnACsALwAzAAA3Iyc1JyM1Mzc1JyMHFRczFSMHFQcjBxUXMzc1NzMXFRczNzUnMxUjBzMVIwcjNTMXIzUz/SEgChwJCgolCQkJHAkgIgkJJgkgQyAKJQqEExMSODg5EhK8ExNLIEcKJQkmCQkmCSUKRyAJJgkJIiAgIgkJJsUTSzhLEhISAAAAAwAAAAABBwEaAAkAEwAtAAA3NQcnNzMXBycVBxUnBxczNycHNTcXBxcHIzUzJyMHMxUjJzcnNzMVIxczNyM1jRMNIg4iDRMSEw0iDiINE2IGRUUGTjg4ODo5TwVFRQVPOTg4OjiySxMOISINE0s4SxMNIiINE0tnEzc5ExMtLRMTNzkTEy0tEwAAAAAMAAAAAAEaARoACQATABsAHwAnACsAMwA3AD8AQwBHAEsAABMXBycVIzUHJzcXNSMVJwcXMzcnNyMnNTczFxUnMzUjFyMnNTczFxUnMzUjByMnNTczFxUnMzUjFyMnNTczFxUnMzUrAhUzNSMVMzYoDxcSFw0nDxIXDScNKA1OJQkJJQomExONOAoKOAk4JiZCJQkJJQomExONOAoKOAk4JiYTJSUlJQEZJw0WUlQYDSfoUlIWDScnDWIJJgkJJgoSJQk4Cgo4CiWWCSYJCSYKEzkKOAkJOAkmE3ASAAAAAAIAAAAAAQcBHQAVABoAADc1ND4BFhczLgEOAR0BIwcVFzM3NScHMxUjNV4aKSMHFAguOCYTEhK8ExMmJrypJRUfBxUTGyAHKh0lE3ATE3ATE3BwAAUAAAAAARoBGgAJABEAHgAnAC8AADczNxcVBycjJzUfATUPASMVMzcUBgcnPgEnNic3HgEHFAcnNjQnNxYHFAcnNic3Fhw0SRAQSTQJSDs7By4uxQ8ODgwNAQEZDg4PJRMNDQ0NEyYIDgcHDgjRSAb0BkgJXlc7xjoDSyUXKhINDyQTJx8NESsXHxkNFC8TDRkfEA0ODxANDQAAAAQAAAAAARUBFAAXAC8AWwBfAAA3MzczNzU3NSc1JyMnIwcjBxUHFRcVFzM3IzUvAT8BNTM/AR8BMxUfAQ8BFSMPASc3Bg8BIzU2Nz4DMzIeAhQOAQ8BDgEdASM1NDY/AT4BNCcxLgEnMSYiBhcjNTOQDSAtCiAgCS4gDR8vCh8fCi8DKQIdHAMpBhwdBigDHR0DKAccHBUCAQERAQMCBAcJBQgLCAMEBQMGAgQRBAMLAwMBAQMCAwYGDxAQGCAKLSAOIC4JICAKLSAOIC0KEygHHBwHKAMcHAMoBxwcBygDHBxxAwMGAQkHAwYEAwUICwwJCAQHAwYDCQoFCAMOAwgHAwIEAQIEXRAAAAAGAAAAAAEsARoAQgBOAFoAYgBmAGoAADc0Nh8BFjI2PwInLgIiBzU3Fh8BNz4DFhUUIyImIgYHBgcXFh8BFjI3Nj8BFw4DIi4BLwEmJw8BDgIiJhc+ATQmJzMWFRQGByMuATU0NzMOARUUFzchBxUXITc1ByE1ITUhNSFlBwQFAQMFAwsGBwEFBgcDGwYDBQUDCQkJBggDBQYGAwUECAEBAgEEAQUDAwMBBgcIBgUDAQQBAQkGAwgHCAZzBwkJBw0SCQmeCQkSDQgIEM/+5gkJARoJE/76AQb++gEGVAQFAgQBBQMQDRsDBQMBBAUGCBAIBgkGAQQECAMGBAYIIgQDAwEBBAUEAgMIBwYEBgMUBAMPCQUGBQUFChgaGAoVGg4XCgkZDRoVChkMGxTOCfQJCfTqqBMmAAACAAAAAAEVARQAFwAeAAA3IycjJzUnNTc1NzM3MxczFxUXFQcVByMnMzcnBycHnQ0fLwofHwovHw0gLgkgIAotPw5GDUAaDRggCi0gDiAtCiAgCS4gDiAtCjBGDkEaDQADAAAAAAEVARQAFwAvADYAADczNzM3NTc1JzUnIycjByMHFQcVFxUXMzcjNS8BPwE1Mz8BHwEzFR8BDwEVIw8BJzczNycHJweQDSAtCiAgCS4gDR8vCh8fCi8DKQIdHAMpBhwdBigDHR0DKAccHAQORg1AGg0YIAotIA4gLgkgIAotIA4gLQoTKAccHAcoAxwcAygHHBwHKAMcHCBGDkEaDQAAAAQAAAAAARoA9AAHAAsAFgAhAAA3BxUXMzc1JxUjNTMHNTM1IwcVFzM1Iyc1MzUjBxUXMzUjlhMTcRIScXGpEx0JCR0TOBIcCQkcEvQTlhMTlhOpll5LEwmECRM4JhIJXgkTAAADAAD//wEuAQcAEgAfACYAABMzFxUmJzUjFTMUFyM1MzUjJzUXPgEeAg4CLgI2FzcnBycHFxz0CQgL4F0TSzhnCaQRKCQXAhIhKCQWAxI4LQ8nGAwgAQcKZwcEU6kfGRMSCrt0DAIRIigkFwISISgkUjsMNBMOGgAFAAAAAAEsAQcAEgAfACsAMQA3AAATMxcVJic1IxUzFBcjNTM1Iyc1FyIOARQeATI+ATQuAQciLgE0PgEzMhYUBicXNyc3JwcnNxcHJxz0CQgL4F0TSzhnCc4UIxQUIygjFBQjFA8aDw8aDxchIRUbCRMTCTASCBsbCAEHCmcHBFOpHxkTEgq7ZxQjKCMUFCMoIxSDDxoeGg8hLiFDGwgTEgguEggaGwgAAAAAAwAAAAABLAEHABIAHwArAAATMxcVJic1IxUzFBcjNTM1Iyc1FyIOARQeATI+ATQuAQciLgE0PgEzMhYUBhz0CQgL4F0TSzhnCc4UIxQUIygjFBQjFA8aDw8aDxchIQEHCmcHBFOpHxkTEgq7ZxQjKCMUFCMoIxSDDxoeGg8hLiEAAAAAAwAA//4BLgEHABIALgAxAAATMxcVJic1IxUzFBcjNTM1Iyc1FzIeAhceAQcOAgcOAScuAicuATc+Ajc2FycVHPQJCAvgXRNLOGcJzgoTEQ4FBwQEAgoOCA0eDwkRDgUHBAQCCg4IEjo5AQcKZwcEU6kfGRMSCrtnBQoOCA0eDwkRDgUHBAQCCg4IDR4PCREOBQpLJksAAAACAAAAAAEaAQcADwATAAABIwcVFzMVIxUzNSM1Mzc1ByM1MwEQ9AkJZziWOGcJEuHhAQcKuwoSExMSCruyqQAABgAAAAABLAD0ABkAMwA3ADsARwBTAAA3MzIWHQEUBisBIi8BJiIPAQYrASImPQE0NhciBh0BHgE7ATI/ATYyHwEWOwEyNj0BNCYjBzMVIyUzFSMnMhYUBisBIiY0NjsBMhYUBisBIiY0NjNLlhchIRcHEQ8PChYKDw8RBxchIRcQFgEVEAcMCRAOIg4QCQwHEBYWEOETEwEZExOfBAUFBC8EBQUElgQFBQQvBAUFBPQhF0sYIQoKBgYKCiEYSxchExYPSxAWBgsJCQsGFhBLDxY4ODg4JQUIBgYIBQUIBgYIBQAABAAAAAABBwEZAAUAEQAfACkAABMHFzc1NBUnJiIPAQ4BHwE2NTcWHQEUBzc+AT0BNiYnBzcXBwYiLwEmNLdPKCyMAggDDQMBBKEFDgQENAQEAQUE6BYfGwIIAw0DARJIHyE7BppqAgMMAwkDlAUG4QkJzwkJGQIIBKUECAGBFRwVAgMMAwkAAAEAAAAAAQcBGgAqAAA3BicmLwEHBiIvASY0PwEnJjQ/ATYyHwE3PgEfAR4BHQEjNQcXNTMVFAYHzAYGAwNgKgIIAw0DAyQkAwMNAwgCKmIECAQyBAQ8SUk9BQQnAwMBAlggAgMMAwkDISIDCQMMAwIgWQMBAhkBCARcQTg3LkkECAIAAAYAAAAAARoBGgALABcAIwAwADgAQAAANzM1MzUjNSMVIxUzFyMVIxUzFTM1MzUjNzUjFSMVMxUzNTM1ByYiDwEGFBYyPwE2NAcGIiY0PwEXNwcnNzYyFhRSExMTExMTlhMSEhMTEx8TExMTEkoIFwmMCBAYCIwIogIIBgN5DhMGDQYCCAbOExMTExNeEhMTExOWEhITExMTLggIjQgXEQmMCBeeAwYHA3kNEwYOBgIFCAAAAAQAAAAAARkBGgAFAAgADAAQAAATMxcHIyc3BzMnNSMVPQEzFY4Qewj2CINr1l8YGAEZ5g0NzskTExMmS0sAAAADAAAAAAD0ARoABgAaACcAADczNSM1IxUnDgEUFhcVFzM3NT4BNCYnNScjBxcUDgEiLgE0PgEyHgGNJRwTHBYZGRYKSwkWGRkWCUsKehQjKCMUFCMoIxSDEy84WgwsMiwMKQkJKQwsMiwMKQkJehQjFBQjKCMUFCMAAAAAAwAAAAAA4QEaABEAGQAdAAATNSMiDgEUHgE7ARUjFTM1IzUHIyImNDY7ARcjNTPhZxIeEhIeEhwTXhM4HBQbGxQcJhMTAQcSER8jHhJeEhLPXhsnHM/PAAUAAAAAASwA9wAHABwAJwA3AEMAADUzFSE1MxUhNyM1IwYjIiY1ND8BNCMiBzU2MzIVDwEOARUUFjMyNjUXMRUjNTMVMTYzMhYVFAYiJxUUFjMyNjU0JiIGEwEGE/7UgBABChUQESIfFhIPDxQkEBkMCwoJDRA/EREMGBQWGSoLEA0PERAcEV4mJjg4EBMRDR0FBBoMEQkmDwQBCAsHChEOGw+YQxQbGBofOw4NEhcVERMUAAMAAAAAARoBBwAHAAsADwAAASMHFRczNzUHIzUzNSM1MwEQ9AkJ9AkS4eHh4QEHCs4JCc7FhBImAAAAAAYAAAAAARoBGgAfAC8ARQBaAHoAigAANyYnJgcGDwEVNz4BMhYXBw4CBwYWFxYzMjcVMzU0JgcVFAcOAScuAj0BND4BMzcuAiIHBgc1IxUzNRYXFjMyPgI0BxQOAQcGJy4CPQE+Axc2Fx4BBz4BMhYfATUnJg4DFB4CMjY/ATUPAQYnLgI0NjcjNTMXFQcjFwcnNTcXBzNJBAUJCwcGBgQECwsFARIHCQYBAwYJBQULBxMDDwECCgUCAgEDBANrAQYLDgUDAhISAwYCBAcLBwQSAgQCBgUCBAIBAgMFAwYEAQJeAwYIBgMHAggSDgoFBQkNDgoEAgYKBgYDBQME3EtUCQl8Jw42Ng4mcusFAgMCAQMDFAMDBQYGAgEFBwQKEgQCCQcxBwsfBQMDBgUCAQIDAgQBAwIWBgsHBAIDLnQFBQEBBgwQEAcHCgYBAwICBAYECgQIBQMBAQYCCWADAwICBRUBBQEGDA8RDgoGAwIBEQIEAQICBggLCU0SCXEJJw02DTcOJQAAAwAAAAABJQEtACQAPwBMAAATMh4CFxYXFhcWMxUUDgQPAScuBT0BMj4CNz4BFy4BJy4BIgYHDgEHFRQeBBc+BTUvAQ8BLwEPAR8CPwGXCA0NDAcKCxUXDAsLExkfIREEBREiHhoTCgsYFhUKDBqIFSkSCRYWFQkSKRYKERgaHg8QHRsXEgk0CAhRHAgIAiQECQRbASwCBAYEBgUIAgFKFiYjHhsXCgMDChcbHiMnFEwBBQkGCAg4AQwMBgYGBgwMATkSIiAbGBUJCRQZGyAiEhkHAWAnAgcHMwIBAmsAAAAEAAAAAAElAS0AJAA/AGkAcQAAEzIeAhcWFxYXMhcVFA4EDwEnLgU9ARY+Ajc+ARcuAScuASIGBw4BBxUUHgQXPgU1Jx4BFA4BDwEOAR0BByMnNTQ+AT8BPgE0JicmIgcOARUHIyc0PgE3NhcWBzczFxUHIyeXCA0NDAcKCxUWDQsLExkfIREFBBEiHhoTCgsYFhUKDBqIFSkSCRYWFQkSKRYKERgaHg8QHRsXEQpgBQYFBgQGAwMDDQMFBgQGAwMDAgUPBQIDAw0DBgoGDg8GHgMNAwMNAwEsAgQGBAYFCAIBShYmIx4bFwoDAwoXGx4jJxRMAQIFCQYICDgBDAwGBgYGDAwBORIiIBsYFQkJFBkbICISGQYMDgsIAwYDBgQGAwMGBwsHAwYEBgcGAwUFAwYEAgIIDQoCBgYDYQMDDQMDAAADAAAAAAElAS0AJAA/AFMAABMyHgIXFhcWFzIXFRQOBA8BJy4FPQEWPgI3PgEXLgEnLgEiBgcOAQcVFB4EFz4FNS8BIwcnIwcVFwcVFzM3FzM3NSc3lwgNDQwHCgsVFg0LCxMZHyERBQQRIh4aEwoLGBYVCgwaiBUpEgkWFhUJEikWChEYGh4PEB0bFxEKRwcEJSUECCUlCAQlJQQHJSUBLAIEBgQGBQgCAUoWJiMeGxcKAwMKFxseIycUTAECBQkGCAg4AQwMBgYGBgwMATkSIiAbGBUJCRQZGyAiEgsIJiYIBCUlBAgmJggEJSUAAAADAAAAAAEaAR4ADgAfACsAADcWBgcXBycOAS4BPgEeAQcyNjcHPgE1NC4BIg4BFB4BNzUjNSMVIxUzFTM14gENDFAOTxxIORMcP0cwZBEfDAEMDhcnLiYXFyZFJRMmJhO5FCYQTw5QFwIrRUIjDDWADQwBDB8RFycXFyctJxdLEyUlEyUlAAAAAwAAAAABGgEeAA4AHwAjAAA3FgYHFwcnDgEuAT4BHgEHMjY3Bz4BNTQuASIOARQeASczFSPiAQ0MUA5PHEg5Exw/RzBkER8MAQwOFycuJhcXJhhdXbkUJhBPDlAXAitFQiMMNYANDAEMHxEXJxcXJy0nF10SAAAAAAAQAMYAAQAAAAAAAQAHAAAAAQAAAAAAAgAHAAcAAQAAAAAAAwAHAA4AAQAAAAAABAAHABUAAQAAAAAABQAMABwAAQAAAAAABgAHACgAAQAAAAAACgAkAC8AAQAAAAAACwATAFMAAwABBAkAAQAOAGYAAwABBAkAAgAOAHQAAwABBAkAAwAOAIIAAwABBAkABAAOAJAAAwABBAkABQAYAJ4AAwABBAkABgAOALYAAwABBAkACgBIAMQAAwABBAkACwAmAQxjb2RpY29uUmVndWxhcmNvZGljb25jb2RpY29uVmVyc2lvbiAxLjExY29kaWNvblRoZSBpY29uIGZvbnQgZm9yIFZpc3VhbCBTdHVkaW8gQ29kZWh0dHA6Ly9mb250ZWxsby5jb20AYwBvAGQAaQBjAG8AbgBSAGUAZwB1AGwAYQByAGMAbwBkAGkAYwBvAG4AYwBvAGQAaQBjAG8AbgBWAGUAcgBzAGkAbwBuACAAMQAuADEAMQBjAG8AZABpAGMAbwBuAFQAaABlACAAaQBjAG8AbgAgAGYAbwBuAHQAIABmAG8AcgAgAFYAaQBzAHUAYQBsACAAUwB0AHUAZABpAG8AIABDAG8AZABlAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAgAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHOAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAAdhY2NvdW50FGFjdGl2YXRlLWJyZWFrcG9pbnRzA2FkZAdhcmNoaXZlCmFycm93LWJvdGgRYXJyb3ctY2lyY2xlLWRvd24RYXJyb3ctY2lyY2xlLWxlZnQSYXJyb3ctY2lyY2xlLXJpZ2h0D2Fycm93LWNpcmNsZS11cAphcnJvdy1kb3duCmFycm93LWxlZnQLYXJyb3ctcmlnaHQQYXJyb3ctc21hbGwtZG93bhBhcnJvdy1zbWFsbC1sZWZ0EWFycm93LXNtYWxsLXJpZ2h0DmFycm93LXNtYWxsLXVwCmFycm93LXN3YXAIYXJyb3ctdXAGYXR0YWNoDGF6dXJlLWRldm9wcwVhenVyZQtiZWFrZXItc3RvcAZiZWFrZXIIYmVsbC1kb3QOYmVsbC1zbGFzaC1kb3QKYmVsbC1zbGFzaARiZWxsBWJsYW5rBGJvbGQEYm9vawhib29rbWFyawticmFja2V0LWRvdA1icmFja2V0LWVycm9yCWJyaWVmY2FzZQlicm9hZGNhc3QHYnJvd3NlcgNidWcIY2FsZW5kYXINY2FsbC1pbmNvbWluZw1jYWxsLW91dGdvaW5nDmNhc2Utc2Vuc2l0aXZlCWNoZWNrLWFsbAVjaGVjawljaGVja2xpc3QMY2hldnJvbi1kb3duDGNoZXZyb24tbGVmdA1jaGV2cm9uLXJpZ2h0CmNoZXZyb24tdXAEY2hpcAxjaHJvbWUtY2xvc2UPY2hyb21lLW1heGltaXplD2Nocm9tZS1taW5pbWl6ZQ5jaHJvbWUtcmVzdG9yZQ1jaXJjbGUtZmlsbGVkE2NpcmNsZS1sYXJnZS1maWxsZWQMY2lyY2xlLWxhcmdlDGNpcmNsZS1zbGFzaBNjaXJjbGUtc21hbGwtZmlsbGVkDGNpcmNsZS1zbWFsbAZjaXJjbGUNY2lyY3VpdC1ib2FyZAljbGVhci1hbGwGY2xpcHB5CWNsb3NlLWFsbAVjbG9zZQ5jbG91ZC1kb3dubG9hZAxjbG91ZC11cGxvYWQFY2xvdWQIY29kZS1vc3MEY29kZQZjb2ZmZWUMY29sbGFwc2UtYWxsCmNvbG9yLW1vZGUHY29tYmluZRJjb21tZW50LWRpc2N1c3Npb24NY29tbWVudC1kcmFmdBJjb21tZW50LXVucmVzb2x2ZWQHY29tbWVudA5jb21wYXNzLWFjdGl2ZQtjb21wYXNzLWRvdAdjb21wYXNzB2NvcGlsb3QEY29weQhjb3ZlcmFnZQtjcmVkaXQtY2FyZARkYXNoCWRhc2hib2FyZAhkYXRhYmFzZQlkZWJ1Zy1hbGwPZGVidWctYWx0LXNtYWxsCWRlYnVnLWFsdCdkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsLXVudmVyaWZpZWQcZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbCBkZWJ1Zy1icmVha3BvaW50LWRhdGEtdW52ZXJpZmllZBVkZWJ1Zy1icmVha3BvaW50LWRhdGEkZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi11bnZlcmlmaWVkGWRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24fZGVidWctYnJlYWtwb2ludC1sb2ctdW52ZXJpZmllZBRkZWJ1Zy1icmVha3BvaW50LWxvZxxkZWJ1Zy1icmVha3BvaW50LXVuc3VwcG9ydGVkDWRlYnVnLWNvbnNvbGUUZGVidWctY29udGludWUtc21hbGwOZGVidWctY29udGludWUOZGVidWctY292ZXJhZ2UQZGVidWctZGlzY29ubmVjdBJkZWJ1Zy1saW5lLWJ5LWxpbmULZGVidWctcGF1c2ULZGVidWctcmVydW4TZGVidWctcmVzdGFydC1mcmFtZQ1kZWJ1Zy1yZXN0YXJ0FmRlYnVnLXJldmVyc2UtY29udGludWUXZGVidWctc3RhY2tmcmFtZS1hY3RpdmUQZGVidWctc3RhY2tmcmFtZQtkZWJ1Zy1zdGFydA9kZWJ1Zy1zdGVwLWJhY2sPZGVidWctc3RlcC1pbnRvDmRlYnVnLXN0ZXAtb3V0D2RlYnVnLXN0ZXAtb3ZlcgpkZWJ1Zy1zdG9wBWRlYnVnEGRlc2t0b3AtZG93bmxvYWQTZGV2aWNlLWNhbWVyYS12aWRlbw1kZXZpY2UtY2FtZXJhDWRldmljZS1tb2JpbGUKZGlmZi1hZGRlZAxkaWZmLWlnbm9yZWQNZGlmZi1tb2RpZmllZA1kaWZmLW11bHRpcGxlDGRpZmYtcmVtb3ZlZAxkaWZmLXJlbmFtZWQLZGlmZi1zaW5nbGUEZGlmZgdkaXNjYXJkBGVkaXQNZWRpdG9yLWxheW91dAhlbGxpcHNpcwxlbXB0eS13aW5kb3cLZXJyb3Itc21hbGwFZXJyb3IHZXhjbHVkZQpleHBhbmQtYWxsBmV4cG9ydApleHRlbnNpb25zCmV5ZS1jbG9zZWQDZXllCGZlZWRiYWNrC2ZpbGUtYmluYXJ5CWZpbGUtY29kZQpmaWxlLW1lZGlhCGZpbGUtcGRmDmZpbGUtc3VibW9kdWxlFmZpbGUtc3ltbGluay1kaXJlY3RvcnkRZmlsZS1zeW1saW5rLWZpbGUIZmlsZS16aXAEZmlsZQVmaWxlcw1maWx0ZXItZmlsbGVkBmZpbHRlcgVmbGFtZQlmb2xkLWRvd24HZm9sZC11cARmb2xkDWZvbGRlci1hY3RpdmUOZm9sZGVyLWxpYnJhcnkNZm9sZGVyLW9wZW5lZAZmb2xkZXIEZ2FtZQRnZWFyBGdpZnQLZ2lzdC1zZWNyZXQKZ2l0LWNvbW1pdAtnaXQtY29tcGFyZQlnaXQtZmV0Y2gJZ2l0LW1lcmdlF2dpdC1wdWxsLXJlcXVlc3QtY2xvc2VkF2dpdC1wdWxsLXJlcXVlc3QtY3JlYXRlFmdpdC1wdWxsLXJlcXVlc3QtZHJhZnQeZ2l0LXB1bGwtcmVxdWVzdC1nby10by1jaGFuZ2VzHGdpdC1wdWxsLXJlcXVlc3QtbmV3LWNoYW5nZXMQZ2l0LXB1bGwtcmVxdWVzdA9naXQtc3Rhc2gtYXBwbHkNZ2l0LXN0YXNoLXBvcAlnaXQtc3Rhc2gNZ2l0aHViLWFjdGlvbgpnaXRodWItYWx0D2dpdGh1Yi1pbnZlcnRlZA5naXRodWItcHJvamVjdAZnaXRodWIFZ2xvYmUKZ28tdG8tZmlsZQxnby10by1zZWFyY2gHZ3JhYmJlcgpncmFwaC1sZWZ0CmdyYXBoLWxpbmUNZ3JhcGgtc2NhdHRlcgVncmFwaAdncmlwcGVyEWdyb3VwLWJ5LXJlZi10eXBlDGhlYXJ0LWZpbGxlZAVoZWFydAdoaXN0b3J5BGhvbWUPaG9yaXpvbnRhbC1ydWxlBWh1Ym90BWluYm94BmluZGVudARpbmZvBmluc2VydAdpbnNwZWN0C2lzc3VlLWRyYWZ0Dmlzc3VlLXJlb3BlbmVkBmlzc3VlcwZpdGFsaWMGamVyc2V5BGpzb24Oa2ViYWItdmVydGljYWwDa2V5A2xhdw1sYXllcnMtYWN0aXZlCmxheWVycy1kb3QGbGF5ZXJzF2xheW91dC1hY3Rpdml0eWJhci1sZWZ0GGxheW91dC1hY3Rpdml0eWJhci1yaWdodA9sYXlvdXQtY2VudGVyZWQObGF5b3V0LW1lbnViYXITbGF5b3V0LXBhbmVsLWNlbnRlchRsYXlvdXQtcGFuZWwtanVzdGlmeRFsYXlvdXQtcGFuZWwtbGVmdBBsYXlvdXQtcGFuZWwtb2ZmEmxheW91dC1wYW5lbC1yaWdodAxsYXlvdXQtcGFuZWwXbGF5b3V0LXNpZGViYXItbGVmdC1vZmYTbGF5b3V0LXNpZGViYXItbGVmdBhsYXlvdXQtc2lkZWJhci1yaWdodC1vZmYUbGF5b3V0LXNpZGViYXItcmlnaHQQbGF5b3V0LXN0YXR1c2JhcgZsYXlvdXQHbGlicmFyeRFsaWdodGJ1bGItYXV0b2ZpeBFsaWdodGJ1bGItc3BhcmtsZQlsaWdodGJ1bGINbGluay1leHRlcm5hbARsaW5rC2xpc3QtZmlsdGVyCWxpc3QtZmxhdAxsaXN0LW9yZGVyZWQObGlzdC1zZWxlY3Rpb24JbGlzdC10cmVlDmxpc3QtdW5vcmRlcmVkCmxpdmUtc2hhcmUHbG9hZGluZwhsb2NhdGlvbgpsb2NrLXNtYWxsBGxvY2sGbWFnbmV0CW1haWwtcmVhZARtYWlsCm1hcC1maWxsZWQTbWFwLXZlcnRpY2FsLWZpbGxlZAxtYXAtdmVydGljYWwDbWFwCG1hcmtkb3duCW1lZ2FwaG9uZQdtZW50aW9uBG1lbnUFbWVyZ2UKbWljLWZpbGxlZANtaWMJbWlsZXN0b25lBm1pcnJvcgxtb3J0YXItYm9hcmQEbW92ZRBtdWx0aXBsZS13aW5kb3dzBW11c2ljBG11dGUIbmV3LWZpbGUKbmV3LWZvbGRlcgduZXdsaW5lCm5vLW5ld2xpbmUEbm90ZRFub3RlYm9vay10ZW1wbGF0ZQhub3RlYm9vawhvY3RvZmFjZQxvcGVuLXByZXZpZXcMb3JnYW5pemF0aW9uBm91dHB1dAdwYWNrYWdlCHBhaW50Y2FuC3Bhc3MtZmlsbGVkBHBhc3MKcGVyY2VudGFnZQpwZXJzb24tYWRkBnBlcnNvbgVwaWFubwlwaWUtY2hhcnQDcGluDHBpbm5lZC1kaXJ0eQZwaW5uZWQLcGxheS1jaXJjbGUEcGxheQRwbHVnDXByZXNlcnZlLWNhc2UHcHJldmlldxBwcmltaXRpdmUtc3F1YXJlB3Byb2plY3QFcHVsc2UIcXVlc3Rpb24FcXVvdGULcmFkaW8tdG93ZXIJcmVhY3Rpb25zC3JlY29yZC1rZXlzDHJlY29yZC1zbWFsbAZyZWNvcmQEcmVkbwpyZWZlcmVuY2VzB3JlZnJlc2gFcmVnZXgPcmVtb3RlLWV4cGxvcmVyBnJlbW90ZQZyZW1vdmULcmVwbGFjZS1hbGwHcmVwbGFjZQVyZXBseQpyZXBvLWNsb25lCnJlcG8tZmV0Y2gPcmVwby1mb3JjZS1wdXNoC3JlcG8tZm9ya2VkCXJlcG8tcHVsbAlyZXBvLXB1c2gEcmVwbwZyZXBvcnQPcmVxdWVzdC1jaGFuZ2VzBXJvYm90BnJvY2tldBJyb290LWZvbGRlci1vcGVuZWQLcm9vdC1mb2xkZXIDcnNzBHJ1YnkJcnVuLWFib3ZlEHJ1bi1hbGwtY292ZXJhZ2UHcnVuLWFsbAlydW4tYmVsb3cMcnVuLWNvdmVyYWdlCnJ1bi1lcnJvcnMIc2F2ZS1hbGwHc2F2ZS1hcwRzYXZlC3NjcmVlbi1mdWxsDXNjcmVlbi1ub3JtYWwMc2VhcmNoLWZ1enp5C3NlYXJjaC1zdG9wBnNlYXJjaARzZW5kEnNlcnZlci1lbnZpcm9ubWVudA5zZXJ2ZXItcHJvY2VzcwZzZXJ2ZXINc2V0dGluZ3MtZ2VhcghzZXR0aW5ncwVzaGFyZQZzaGllbGQHc2lnbi1pbghzaWduLW91dAZzbWlsZXkFc25ha2UPc29ydC1wcmVjZWRlbmNlDnNvdXJjZS1jb250cm9sDnNwYXJrbGUtZmlsbGVkB3NwYXJrbGUQc3BsaXQtaG9yaXpvbnRhbA5zcGxpdC12ZXJ0aWNhbAhzcXVpcnJlbApzdGFyLWVtcHR5CXN0YXItZnVsbAlzdGFyLWhhbGYLc3RvcC1jaXJjbGUNc3Vycm91bmQtd2l0aAxzeW1ib2wtYXJyYXkOc3ltYm9sLWJvb2xlYW4Mc3ltYm9sLWNsYXNzDHN5bWJvbC1jb2xvcg9zeW1ib2wtY29uc3RhbnQSc3ltYm9sLWVudW0tbWVtYmVyC3N5bWJvbC1lbnVtDHN5bWJvbC1ldmVudAxzeW1ib2wtZmllbGQLc3ltYm9sLWZpbGUQc3ltYm9sLWludGVyZmFjZQpzeW1ib2wta2V5DnN5bWJvbC1rZXl3b3JkDXN5bWJvbC1tZXRob2QLc3ltYm9sLW1pc2MQc3ltYm9sLW5hbWVzcGFjZQ5zeW1ib2wtbnVtZXJpYw9zeW1ib2wtb3BlcmF0b3IQc3ltYm9sLXBhcmFtZXRlcg9zeW1ib2wtcHJvcGVydHkMc3ltYm9sLXJ1bGVyDnN5bWJvbC1zbmlwcGV0DXN5bWJvbC1zdHJpbmcQc3ltYm9sLXN0cnVjdHVyZQ9zeW1ib2wtdmFyaWFibGUMc3luYy1pZ25vcmVkBHN5bmMFdGFibGUDdGFnBnRhcmdldAh0YXNrbGlzdAl0ZWxlc2NvcGUNdGVybWluYWwtYmFzaAx0ZXJtaW5hbC1jbWQPdGVybWluYWwtZGViaWFuDnRlcm1pbmFsLWxpbnV4E3Rlcm1pbmFsLXBvd2Vyc2hlbGwNdGVybWluYWwtdG11eA90ZXJtaW5hbC11YnVudHUIdGVybWluYWwJdGV4dC1zaXplCnRocmVlLWJhcnMRdGh1bWJzZG93bi1maWxsZWQKdGh1bWJzZG93bg90aHVtYnN1cC1maWxsZWQIdGh1bWJzdXAFdG9vbHMFdHJhc2gNdHJpYW5nbGUtZG93bg10cmlhbmdsZS1sZWZ0DnRyaWFuZ2xlLXJpZ2h0C3RyaWFuZ2xlLXVwB3R3aXR0ZXISdHlwZS1oaWVyYXJjaHktc3ViFHR5cGUtaGllcmFyY2h5LXN1cGVyDnR5cGUtaGllcmFyY2h5BnVuZm9sZBN1bmdyb3VwLWJ5LXJlZi10eXBlBnVubG9jawZ1bm11dGUKdW52ZXJpZmllZA52YXJpYWJsZS1ncm91cA92ZXJpZmllZC1maWxsZWQIdmVyaWZpZWQIdmVyc2lvbnMJdm0tYWN0aXZlCnZtLWNvbm5lY3QKdm0tb3V0bGluZQp2bS1ydW5uaW5nAnZtAnZyD3ZzY29kZS1pbnNpZGVycwZ2c2NvZGUEd2FuZAd3YXJuaW5nBXdhdGNoCndoaXRlc3BhY2UKd2hvbGUtd29yZAZ3aW5kb3cJd29yZC13cmFwEXdvcmtzcGFjZS10cnVzdGVkEXdvcmtzcGFjZS11bmtub3duE3dvcmtzcGFjZS11bnRydXN0ZWQHem9vbS1pbgh6b29tLW91dAAA)format(\"truetype\")}.codicon[class*=codicon-]{text-align:center;text-rendering:auto;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;user-select:none;font:16px/1 codicon;text-decoration:none;display:inline-block}.codicon-wrench-subaction{opacity:.5}@keyframes codicon-spin{to{transform:rotate(1turn)}}.codicon-gear.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-notebook-state-executing.codicon-modifier-spin,.codicon-sync.codicon-modifier-spin{animation:1.5s steps(30,end) infinite codicon-spin}.codicon-modifier-disabled{opacity:.4}.codicon-loading,.codicon-tree-item-loading:before{animation-duration:1s!important;animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important}.context-view{position:absolute}.context-view.fixed{all:initial;color:inherit;font-family:inherit;font-size:13px;position:fixed}.monaco-count-badge{box-sizing:border-box;text-align:center;border-radius:11px;min-width:18px;min-height:18px;padding:3px 6px;font-size:11px;font-weight:400;line-height:11px;display:inline-block}.monaco-count-badge.long{border-radius:2px;min-height:auto;padding:2px 3px;line-height:normal}.monaco-dropdown{height:100%;padding:0}.monaco-dropdown>.dropdown-label{cursor:pointer;justify-content:center;align-items:center;height:100%;display:flex}.monaco-dropdown>.dropdown-label>.action-label.disabled{cursor:default}.monaco-dropdown-with-primary{border-radius:5px;flex-direction:row;display:flex!important}.monaco-dropdown-with-primary>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{margin-left:-3px;padding-left:0;padding-right:0;font-size:12px;line-height:16px}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{background-position:50%;background-repeat:no-repeat;background-size:16px;display:block}.monaco-findInput{position:relative}.monaco-findInput .monaco-inputbox{width:100%;font-size:13px}.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.vs .monaco-findInput.disabled{background-color:#e1e1e1}.vs-dark .monaco-findInput.disabled{background-color:#333}.hc-light .monaco-findInput.highlight-0 .controls,.monaco-findInput.highlight-0 .controls{animation:.1s linear monaco-findInput-highlight-0}.hc-light .monaco-findInput.highlight-1 .controls,.monaco-findInput.highlight-1 .controls{animation:.1s linear monaco-findInput-highlight-1}.hc-black .monaco-findInput.highlight-0 .controls,.vs-dark .monaco-findInput.highlight-0 .controls{animation:.1s linear monaco-findInput-highlight-dark-0}.hc-black .monaco-findInput.highlight-1 .controls,.vs-dark .monaco-findInput.highlight-1 .controls{animation:.1s linear monaco-findInput-highlight-dark-1}@keyframes monaco-findInput-highlight-0{0%{background:#fdff00cc}to{background:0 0}}@keyframes monaco-findInput-highlight-1{0%{background:#fdff00cc}99%{background:0 0}}@keyframes monaco-findInput-highlight-dark-0{0%{background:#ffffff70}to{background:0 0}}@keyframes monaco-findInput-highlight-dark-1{0%{background:#ffffff70}99%{background:0 0}}.monaco-hover{box-sizing:border-box;cursor:default;-webkit-user-select:text;user-select:text;white-space:var(--vscode-hover-whiteSpace,normal);line-height:1.5em;animation:.1s linear fadein;position:absolute;overflow:hidden}.monaco-hover.hidden{display:none}.monaco-hover a:hover:not(.disabled){cursor:pointer}.monaco-hover .hover-contents:not(.html-hover-contents){padding:4px 8px}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents){max-width:var(--vscode-hover-maxWidth,500px);word-wrap:break-word}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents) hr{min-width:100%}.monaco-hover .code,.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6,.monaco-hover p,.monaco-hover ul{margin:8px 0}.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6{line-height:1.1}.monaco-hover code{font-family:var(--monaco-monospace-font)}.monaco-hover hr{box-sizing:border-box;border-left:0;border-right:0;height:1px;margin:4px -8px -4px}.monaco-hover .code:first-child,.monaco-hover p:first-child,.monaco-hover ul:first-child{margin-top:0}.monaco-hover .code:last-child,.monaco-hover p:last-child,.monaco-hover ul:last-child{margin-bottom:0}.monaco-hover ol,.monaco-hover ul{padding-left:20px}.monaco-hover li>p{margin-bottom:0}.monaco-hover li>ul{margin-top:0}.monaco-hover code{border-radius:3px;padding:0 .4em}.monaco-hover .monaco-tokenized-source{white-space:var(--vscode-hover-sourceWhiteSpace,pre-wrap)}.monaco-hover .hover-row.status-bar{font-size:12px;line-height:22px}.monaco-hover .hover-row.status-bar .info{padding:0 8px;font-style:italic}.monaco-hover .hover-row.status-bar .actions{width:100%;padding:0 8px;display:flex}.monaco-hover .hover-row.status-bar .actions .action-container{cursor:pointer;margin-right:16px}.monaco-hover .hover-row.status-bar .actions .action-container .action .icon{padding-right:4px}.monaco-hover .hover-row.status-bar .actions .action-container a{color:var(--vscode-textLink-foreground);-webkit-text-decoration:var(--text-link-decoration);text-decoration:var(--text-link-decoration)}.monaco-hover .markdown-hover .hover-contents .codicon{color:inherit;font-size:inherit;vertical-align:middle}.monaco-hover .hover-contents a.code-link,.monaco-hover .hover-contents a.code-link:hover{color:inherit}.monaco-hover .hover-contents a.code-link:before{content:\"(\"}.monaco-hover .hover-contents a.code-link:after{content:\")\"}.monaco-hover .hover-contents a.code-link>span{color:var(--vscode-textLink-foreground);text-underline-position:under;border-bottom:1px solid #0000;text-decoration:underline}.monaco-hover .hover-contents a.code-link>span:hover{color:var(--vscode-textLink-activeForeground)}.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents):not(.html-hover-contents) span{margin-bottom:4px;display:inline-block}.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents):not(.html-hover-contents) span.codicon{margin-bottom:2px}.monaco-hover-content .action-container a{-webkit-user-select:none;user-select:none}.monaco-hover-content .action-container.disabled{cursor:default;opacity:.4;pointer-events:none}.monaco-icon-label{text-overflow:ellipsis;display:flex;overflow:hidden}.monaco-icon-label:before{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top;background-position:0;background-repeat:no-repeat;background-size:16px;flex-shrink:0;width:16px;height:22px;padding-right:6px;display:inline-block;line-height:inherit!important}.monaco-icon-label-iconpath{width:16px;height:16px;margin-top:2px;padding-left:2px;display:flex}.monaco-icon-label-container.disabled{color:var(--vscode-disabledForeground)}.monaco-icon-label>.monaco-icon-label-container{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{color:inherit;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name>.label-separator{opacity:.5;margin:0 2px}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-suffix-container>.label-suffix{opacity:.7;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.7;white-space:pre;margin-left:.5em;font-size:.9em}.monaco-icon-label.nowrap>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{white-space:nowrap}.vs .monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.95}.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{font-style:italic}.monaco-icon-label.deprecated{opacity:.66;text-decoration:line-through}.monaco-icon-label.italic:after{font-style:italic}.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-description-container>.label-description,.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{text-decoration:line-through}.monaco-icon-label:after{opacity:.75;text-align:center;margin:auto 16px 0 5px;font-size:90%;font-weight:600}.monaco-list:focus .selected .monaco-icon-label,.monaco-list:focus .selected .monaco-icon-label:after{color:inherit!important}.monaco-list-row.focused.selected .label-description,.monaco-list-row.selected .label-description{opacity:.8}.monaco-inputbox{box-sizing:border-box;font-size:inherit;border-radius:2px;padding:0;display:block;position:relative}.monaco-inputbox>.ibwrapper>.input,.monaco-inputbox>.ibwrapper>.mirror{padding:4px 6px}.monaco-inputbox>.ibwrapper{width:100%;height:100%;position:relative}.monaco-inputbox>.ibwrapper>.input{box-sizing:border-box;color:inherit;font-family:inherit;font-size:inherit;height:100%;line-height:inherit;resize:none;border:none;width:100%;display:inline-block}.monaco-inputbox>.ibwrapper>input{text-overflow:ellipsis}.monaco-inputbox>.ibwrapper>textarea.input{scrollbar-width:none;outline:none;display:block}.monaco-inputbox>.ibwrapper>textarea.input::-webkit-scrollbar{display:none}.monaco-inputbox>.ibwrapper>textarea.input.empty{white-space:nowrap}.monaco-inputbox>.ibwrapper>.mirror{box-sizing:border-box;visibility:hidden;white-space:pre-wrap;word-wrap:break-word;width:100%;display:inline-block;position:absolute;top:0;left:0}.monaco-inputbox-container{text-align:right}.monaco-inputbox-container .monaco-inputbox-message{box-sizing:border-box;text-align:left;word-wrap:break-word;width:100%;margin-top:-1px;padding:.4em;font-size:12px;line-height:17px;display:inline-block;overflow:hidden}.monaco-inputbox .monaco-action-bar{position:absolute;top:4px;right:2px}.monaco-inputbox .monaco-action-bar .action-item{margin-left:2px}.monaco-inputbox .monaco-action-bar .action-item .codicon{background-repeat:no-repeat;width:16px;height:16px}.monaco-keybinding{align-items:center;line-height:10px;display:flex}.monaco-keybinding>.monaco-keybinding-key{vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px;margin:0 2px;padding:3px 5px;font-size:11px;display:inline-block}.monaco-keybinding>.monaco-keybinding-key:first-child{margin-left:0}.monaco-keybinding>.monaco-keybinding-key:last-child{margin-right:0}.monaco-keybinding>.monaco-keybinding-key-separator{display:inline-block}.monaco-keybinding>.monaco-keybinding-key-chord-separator{width:6px}.monaco-list{white-space:nowrap;width:100%;height:100%;position:relative}.monaco-list.mouse-support{-webkit-user-select:none;user-select:none}.monaco-list>.monaco-scrollable-element{height:100%}.monaco-list-rows{width:100%;height:100%;position:relative}.monaco-list.horizontal-scrolling .monaco-list-rows{width:auto;min-width:100%}.monaco-list-row{box-sizing:border-box;width:100%;position:absolute;overflow:hidden}.monaco-list.mouse-support .monaco-list-row{cursor:pointer;touch-action:none}.monaco-list .monaco-scrollable-element>.scrollbar.vertical,.monaco-pane-view>.monaco-split-view2.vertical>.monaco-scrollable-element>.scrollbar.vertical{z-index:14}.monaco-list-row.scrolling{display:none!important}.monaco-list.element-focused,.monaco-list.selection-multiple,.monaco-list.selection-single{outline:0!important}.monaco-drag-image{z-index:1000;border-radius:10px;padding:1px 7px;font-size:12px;display:inline-block;position:absolute}.monaco-list-type-filter-message{box-sizing:border-box;opacity:.7;pointer-events:none;text-align:center;white-space:normal;width:100%;height:100%;padding:40px 1em 1em;position:absolute;top:0;left:0}.monaco-list-type-filter-message:empty{display:none}.monaco-mouse-cursor-text{cursor:text}.monaco-progress-container{width:100%;height:2px;overflow:hidden}.monaco-progress-container .progress-bit{width:2%;height:2px;display:none;position:absolute;left:0}.monaco-progress-container.active .progress-bit{display:inherit}.monaco-progress-container.discrete .progress-bit{transition:width .1s linear;left:0}.monaco-progress-container.discrete.done .progress-bit{width:100%}.monaco-progress-container.infinite .progress-bit{animation-name:progress;animation-duration:4s;animation-timing-function:linear;animation-iteration-count:infinite;transform:translateZ(0)}.monaco-progress-container.infinite.infinite-long-running .progress-bit{animation-timing-function:steps(100,end)}@keyframes progress{0%{transform:translate(0)scaleX(1)}50%{transform:translate(2500%)scaleX(3)}to{transform:translate(4900%)scaleX(1)}}:root{--vscode-sash-size:4px;--vscode-sash-hover-size:4px}.monaco-sash{touch-action:none;z-index:35;position:absolute}.monaco-sash.disabled{pointer-events:none}.monaco-sash.mac.vertical{cursor:col-resize}.monaco-sash.vertical.minimum{cursor:e-resize}.monaco-sash.vertical.maximum{cursor:w-resize}.monaco-sash.mac.horizontal{cursor:row-resize}.monaco-sash.horizontal.minimum{cursor:s-resize}.monaco-sash.horizontal.maximum{cursor:n-resize}.monaco-sash.disabled{cursor:default!important;pointer-events:none!important}.monaco-sash.vertical{cursor:ew-resize;height:100%;width:var(--vscode-sash-size);top:0}.monaco-sash.horizontal{cursor:ns-resize;height:var(--vscode-sash-size);width:100%;left:0}.monaco-sash:not(.disabled)>.orthogonal-drag-handle{content:\" \";cursor:all-scroll;height:calc(var(--vscode-sash-size)*2);width:calc(var(--vscode-sash-size)*2);z-index:100;display:block;position:absolute}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.start,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.end{cursor:nwse-resize}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.end,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.start{cursor:nesw-resize}.monaco-sash.vertical>.orthogonal-drag-handle.start{left:calc(var(--vscode-sash-size)*-.5);top:calc(var(--vscode-sash-size)*-1)}.monaco-sash.vertical>.orthogonal-drag-handle.end{bottom:calc(var(--vscode-sash-size)*-1);left:calc(var(--vscode-sash-size)*-.5)}.monaco-sash.horizontal>.orthogonal-drag-handle.start{left:calc(var(--vscode-sash-size)*-1);top:calc(var(--vscode-sash-size)*-.5)}.monaco-sash.horizontal>.orthogonal-drag-handle.end{right:calc(var(--vscode-sash-size)*-1);top:calc(var(--vscode-sash-size)*-.5)}.monaco-sash:before{content:\"\";pointer-events:none;background:0 0;width:100%;height:100%;position:absolute}.monaco-workbench:not(.reduce-motion) .monaco-sash:before{transition:background-color .1s ease-out}.monaco-sash.active:before,.monaco-sash.hover:before{background:var(--vscode-sash-hoverBorder)}.monaco-sash.vertical:before{left:calc(50% - var(--vscode-sash-hover-size)/2);width:var(--vscode-sash-hover-size)}.monaco-sash.horizontal:before{height:var(--vscode-sash-hover-size);top:calc(50% - var(--vscode-sash-hover-size)/2)}.pointer-events-disabled{pointer-events:none!important}.monaco-sash.debug{background:#0ff}.monaco-sash.debug.disabled{background:#0ff3}.monaco-sash.debug:not(.disabled)>.orthogonal-drag-handle{background:red}.monaco-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.monaco-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.monaco-scrollable-element>.invisible{opacity:0;pointer-events:none}.monaco-scrollable-element>.invisible.fade{transition:opacity .8s linear}.monaco-scrollable-element>.shadow{display:none;position:absolute}.monaco-scrollable-element>.shadow.top{box-shadow:var(--vscode-scrollbar-shadow)0 6px 6px -6px inset;width:100%;height:3px;display:block;top:0;left:3px}.monaco-scrollable-element>.shadow.left{box-shadow:var(--vscode-scrollbar-shadow)6px 0 6px -6px inset;width:3px;height:100%;display:block;top:3px;left:0}.monaco-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.monaco-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow)6px 0 6px -6px inset}.monaco-scrollable-element>.scrollbar>.slider{background:var(--vscode-scrollbarSlider-background)}.monaco-scrollable-element>.scrollbar>.slider:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-scrollable-element>.scrollbar>.slider.active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-select-box{cursor:pointer;border-radius:2px;width:100%}.monaco-select-box-dropdown-container{text-transform:none;font-size:13px;font-weight:400}.monaco-action-bar .action-item.select-container{cursor:default}.monaco-action-bar .action-item .monaco-select-box{cursor:pointer;min-width:100px;min-height:18px;padding:2px 23px 2px 8px}.mac .monaco-action-bar .action-item .monaco-select-box{border-radius:5px;font-size:11px}.monaco-select-box-dropdown-padding{--dropdown-padding-top:1px;--dropdown-padding-bottom:1px}.hc-black .monaco-select-box-dropdown-padding,.hc-light .monaco-select-box-dropdown-padding{--dropdown-padding-top:3px;--dropdown-padding-bottom:4px}.monaco-select-box-dropdown-container{box-sizing:border-box;display:none}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown *{margin:0}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown a:focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown code{font-family:var(--monaco-monospace-font);line-height:15px}.monaco-select-box-dropdown-container.visible{text-align:left;border-bottom-right-radius:3px;border-bottom-left-radius:3px;flex-direction:column;width:1px;display:flex;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container{box-sizing:border-box;padding-bottom:var(--dropdown-padding-bottom);padding-left:1px;padding-right:1px;padding-top:var(--dropdown-padding-top);flex:none;align-self:flex-start;width:100%;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-details-pane{padding:5px}.hc-black .monaco-select-box-dropdown-container>.select-box-dropdown-list-container{padding-bottom:var(--dropdown-padding-bottom);padding-top:var(--dropdown-padding-top)}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row{cursor:pointer}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-text{float:left;text-overflow:ellipsis;white-space:nowrap;padding-left:3.5px;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-detail{float:left;opacity:.7;text-overflow:ellipsis;white-space:nowrap;padding-left:3.5px;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-decorator-right{float:right;text-overflow:ellipsis;white-space:nowrap;padding-right:10px;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.visually-hidden{width:1px;height:1px;position:absolute;top:auto;left:-10000px;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control{opacity:0;flex:auto;align-self:flex-start}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div{max-height:0;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div>.option-text-width-control{white-space:nowrap;padding-left:4px;padding-right:8px}.monaco-split-view2{width:100%;height:100%;position:relative}.monaco-split-view2>.sash-container{pointer-events:none;width:100%;height:100%;position:absolute}.monaco-split-view2>.sash-container>.monaco-sash{pointer-events:auto}.monaco-split-view2>.monaco-scrollable-element{width:100%;height:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container{white-space:nowrap;width:100%;height:100%;position:relative}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view{white-space:normal;position:absolute}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view:not(.visible){display:none}.monaco-split-view2.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view{width:100%}.monaco-split-view2.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view{height:100%}.monaco-split-view2.separator-border>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{background-color:var(--separator-border);content:\" \";pointer-events:none;z-index:5;position:absolute;top:0;left:0}.monaco-split-view2.separator-border.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{width:1px;height:100%}.monaco-split-view2.separator-border.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{width:100%;height:1px}.monaco-table{white-space:nowrap;flex-direction:column;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.monaco-table>.monaco-split-view2{border-bottom:1px solid #0000}.monaco-table>.monaco-list{flex:1}.monaco-table-tr{height:100%;display:flex}.monaco-table-th{text-overflow:ellipsis;width:100%;height:100%;font-weight:700;overflow:hidden}.monaco-table-td,.monaco-table-th{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;overflow:hidden}.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{content:\"\";left:calc(var(--vscode-sash-size)/2);border-left:1px solid #0000;width:0;position:absolute}.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2,.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{transition:border-color .2s ease-out}.monaco-custom-toggle{box-sizing:border-box;cursor:pointer;float:left;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:3px;width:20px;height:20px;margin-left:2px;padding:1px;overflow:hidden}.monaco-custom-toggle:hover{background-color:var(--vscode-inputOption-hoverBackground)}.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle:hover{border:1px dashed var(--vscode-focusBorder)}.hc-black .monaco-custom-toggle,.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle,.hc-light .monaco-custom-toggle:hover{background:0 0}.monaco-custom-toggle.monaco-checkbox{opacity:1;border:1px solid #0000;border-radius:3px;width:18px;height:18px;margin-left:0;margin-right:9px;padding:0;background-size:16px!important}.monaco-action-bar .checkbox-action-item{border-radius:2px;align-items:center;padding-right:2px;display:flex}.monaco-action-bar .checkbox-action-item:hover{background-color:var(--vscode-toolbar-hoverBackground)}.monaco-action-bar .checkbox-action-item>.monaco-custom-toggle.monaco-checkbox{margin-right:4px}.monaco-action-bar .checkbox-action-item>.checkbox-label{font-size:12px}.monaco-custom-toggle.monaco-checkbox:not(.checked):before{visibility:hidden}.monaco-toolbar{height:100%}.monaco-toolbar .toolbar-toggle-more{padding:0;display:inline-block}.monaco-tl-row{align-items:center;height:100%;display:flex;position:relative}.monaco-tl-row.disabled{cursor:default}.monaco-tl-indent{pointer-events:none;height:100%;position:absolute;top:0;left:16px}.hide-arrows .monaco-tl-indent{left:12px}.monaco-tl-indent>.indent-guide{box-sizing:border-box;border-left:1px solid #0000;height:100%;display:inline-block}.monaco-workbench:not(.reduce-motion) .monaco-tl-indent>.indent-guide{transition:border-color .1s linear}.monaco-tl-contents,.monaco-tl-twistie{height:100%}.monaco-tl-twistie{text-align:right;flex-shrink:0;justify-content:center;align-items:center;width:16px;padding-right:6px;font-size:10px;transform:translate(3px);display:flex!important}.monaco-tl-contents{flex:1;overflow:hidden}.monaco-tl-twistie:before{border-radius:20px}.monaco-tl-twistie.collapsed:before{transform:rotate(-90deg)}.monaco-tl-twistie.codicon-tree-item-loading:before{animation:1.25s steps(30,end) infinite codicon-spin}.monaco-tree-type-filter{border:1px solid var(--vscode-widget-border);z-index:100;border-bottom-right-radius:4px;border-bottom-left-radius:4px;max-width:200px;margin:0 6px;padding:3px;display:flex;position:absolute;top:0}.monaco-workbench:not(.reduce-motion) .monaco-tree-type-filter{transition:top .3s}.monaco-tree-type-filter.disabled{top:-40px!important}.monaco-tree-type-filter-grab{cursor:grab;justify-content:center;align-items:center;margin-right:2px;display:flex!important}.monaco-tree-type-filter-grab.grabbing{cursor:grabbing}.monaco-tree-type-filter-input{flex:1}.monaco-tree-type-filter-input .monaco-inputbox{height:23px}.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.input,.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.mirror{padding:2px 4px}.monaco-tree-type-filter-input .monaco-findInput>.controls{top:2px}.monaco-tree-type-filter-actionbar{margin-left:4px}.monaco-tree-type-filter-actionbar .monaco-action-bar .action-label{padding:2px}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container{background-color:var(--vscode-sideBar-background);z-index:13;width:100%;height:0;position:absolute;top:0;left:0}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row.monaco-list-row{background-color:var(--vscode-sideBar-background);width:100%;position:absolute;overflow:hidden;opacity:1!important}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row:hover{cursor:pointer;background-color:var(--vscode-list-hoverBackground)!important}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container.empty,.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container.empty .monaco-tree-sticky-container-shadow{display:none}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-container-shadow{width:100%;height:0;position:absolute;bottom:-3px;left:0}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container[tabindex=\"0\"]:focus{outline:none}.monaco-editor .inputarea{color:#0000;resize:none;z-index:-10;background-color:#0000;border:none;min-width:0;min-height:0;margin:0;padding:0;position:absolute;overflow:hidden;outline:none!important}.monaco-editor .inputarea.ime-input{caret-color:var(--vscode-editorCursor-foreground);color:var(--vscode-editor-foreground);z-index:10}.monaco-workbench .workbench-hover{background:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);box-shadow:0 2px 8px var(--vscode-widget-shadow);color:var(--vscode-editorHoverWidget-foreground);z-index:40;border-radius:3px;max-width:700px;font-size:13px;line-height:19px;position:relative;overflow:hidden}.monaco-workbench .workbench-hover hr{border-bottom:none}.monaco-workbench .workbench-hover:not(.skip-fade-in){animation:.1s linear fadein}.monaco-workbench .workbench-hover.compact{font-size:12px}.monaco-workbench .workbench-hover.compact .hover-contents{padding:2px 8px}.monaco-workbench .workbench-hover-container.locked .workbench-hover{outline:1px solid var(--vscode-editorHoverWidget-border)}.monaco-workbench .workbench-hover-container.locked .workbench-hover:focus,.monaco-workbench .workbench-hover-lock:focus{outline:1px solid var(--vscode-focusBorder)}.monaco-workbench .workbench-hover-container.locked .workbench-hover-lock:hover{background:var(--vscode-toolbar-hoverBackground)}.monaco-workbench .workbench-hover-pointer{pointer-events:none;z-index:41;position:absolute}.monaco-workbench .workbench-hover-pointer:after{background-color:var(--vscode-editorHoverWidget-background);border-bottom:1px solid var(--vscode-editorHoverWidget-border);border-right:1px solid var(--vscode-editorHoverWidget-border);content:\"\";width:5px;height:5px;position:absolute}.monaco-workbench .locked .workbench-hover-pointer:after{border-bottom-width:2px;border-right-width:2px;width:4px;height:4px}.monaco-workbench .workbench-hover-pointer.left{left:-3px}.monaco-workbench .workbench-hover-pointer.right{right:3px}.monaco-workbench .workbench-hover-pointer.top{top:-3px}.monaco-workbench .workbench-hover-pointer.bottom{bottom:3px}.monaco-workbench .workbench-hover-pointer.left:after{transform:rotate(135deg)}.monaco-workbench .workbench-hover-pointer.right:after{transform:rotate(315deg)}.monaco-workbench .workbench-hover-pointer.top:after{transform:rotate(225deg)}.monaco-workbench .workbench-hover-pointer.bottom:after{transform:rotate(45deg)}.monaco-workbench .workbench-hover a{color:var(--vscode-textLink-foreground)}.monaco-workbench .workbench-hover a:focus{outline:1px solid;outline-color:var(--vscode-focusBorder);outline-offset:-1px;text-decoration:underline}.monaco-workbench .workbench-hover a:active,.monaco-workbench .workbench-hover a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-workbench .workbench-hover code{background:var(--vscode-textCodeBlock-background)}.monaco-workbench .workbench-hover .hover-row .actions{background:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-workbench .workbench-hover.right-aligned{left:1px}.monaco-workbench .workbench-hover.right-aligned .hover-row.status-bar .actions{flex-direction:row-reverse}.monaco-workbench .workbench-hover.right-aligned .hover-row.status-bar .actions .action-container{margin-left:16px;margin-right:0}.monaco-editor .blockDecorations-container{pointer-events:none;position:absolute;top:0}.monaco-editor .blockDecorations-block{box-sizing:border-box;position:absolute}.monaco-editor .margin-view-overlays .current-line,.monaco-editor .view-overlays .current-line{box-sizing:border-box;height:100%;display:block;position:absolute;top:0;left:0}.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both{border-right:0}.monaco-editor .lines-content .cdr{height:100%;position:absolute}.monaco-editor .glyph-margin{position:absolute;top:0}.monaco-editor .glyph-margin-widgets .cgmr{justify-content:center;align-items:center;display:flex;position:absolute}.monaco-editor .glyph-margin-widgets .cgmr.codicon-modifier-spin:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.monaco-editor .lines-content .core-guide{box-sizing:border-box;height:100%;position:absolute}.monaco-editor .margin-view-overlays .line-numbers{box-sizing:border-box;cursor:default;font-variant-numeric:tabular-nums;text-align:right;vertical-align:middle;display:inline-block;position:absolute;bottom:0}.monaco-editor .relative-current-line-number{text-align:left;width:100%;display:inline-block}.monaco-editor .margin-view-overlays .line-numbers.lh-odd{margin-top:1px}.monaco-editor .line-numbers{color:var(--vscode-editorLineNumber-foreground)}.monaco-editor .line-numbers.active-line-number{color:var(--vscode-editorLineNumber-activeForeground)}.mtkcontrol{color:#fff!important;background:#960000!important}.mtkoverflow{background-color:var(--vscode-button-background,var(--vscode-editor-background));border-color:var(--vscode-contrastBorder);color:var(--vscode-button-foreground,var(--vscode-editor-foreground));cursor:pointer;border-style:solid;border-width:1px;border-radius:2px;padding:4px}.mtkoverflow:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-editor.no-user-select .lines-content,.monaco-editor.no-user-select .view-line,.monaco-editor.no-user-select .view-lines{-webkit-user-select:none;user-select:none}.monaco-editor.mac .lines-content:hover,.monaco-editor.mac .view-line:hover,.monaco-editor.mac .view-lines:hover{-webkit-user-select:text;user-select:text}.monaco-editor.enable-user-select{-webkit-user-select:auto;user-select:auto;-webkit-user-select:initial}.monaco-editor .view-lines{white-space:nowrap}.monaco-editor .view-line{width:100%;position:absolute}.monaco-editor .lines-content>.view-lines>.view-line>span{position:absolute;top:0;bottom:0}.monaco-editor .mtkw,.monaco-editor .mtkz{color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .mtkz{display:inline-block}.monaco-editor .lines-decorations{background:#fff;position:absolute;top:0}.monaco-editor .margin-view-overlays .cldr{height:100%;position:absolute}.monaco-editor .margin{background-color:var(--vscode-editorGutter-background)}.monaco-editor .margin-view-overlays .cmdr{width:100%;height:100%;position:absolute;left:0}.monaco-editor .minimap.slider-mouseover .minimap-slider{opacity:0;transition:opacity .1s linear}.monaco-editor .minimap.slider-mouseover .minimap-slider.active,.monaco-editor .minimap.slider-mouseover:hover .minimap-slider{opacity:1}.monaco-editor .minimap-slider .minimap-slider-horizontal{background:var(--vscode-minimapSlider-background)}.monaco-editor .minimap-slider:hover .minimap-slider-horizontal{background:var(--vscode-minimapSlider-hoverBackground)}.monaco-editor .minimap-slider.active .minimap-slider-horizontal{background:var(--vscode-minimapSlider-activeBackground)}.monaco-editor .minimap-shadow-visible{box-shadow:var(--vscode-scrollbar-shadow)-6px 0 6px -6px inset}.monaco-editor .minimap-shadow-hidden{width:0;position:absolute}.monaco-editor .minimap-shadow-visible{width:6px;position:absolute;left:-6px}.monaco-editor.no-minimap-shadow .minimap-shadow-visible{width:1px;position:absolute;left:-1px}.minimap.autohide{opacity:0;transition:opacity .5s}.minimap.autohide:hover{opacity:1}.monaco-editor .minimap{z-index:5}.monaco-editor .overlayWidgets{position:absolute;top:0;left:0}.monaco-editor .view-ruler{box-shadow:1px 0 0 0 var(--vscode-editorRuler-foreground)inset;position:absolute;top:0}.monaco-editor .scroll-decoration{box-shadow:var(--vscode-scrollbar-shadow)0 6px 6px -6px inset;height:6px;position:absolute;top:0;left:0}.monaco-editor .lines-content .cslr{position:absolute}.monaco-editor .focused .selected-text{background-color:var(--vscode-editor-selectionBackground)}.monaco-editor .selected-text{background-color:var(--vscode-editor-inactiveSelectionBackground)}.monaco-editor .top-left-radius{border-top-left-radius:3px}.monaco-editor .bottom-left-radius{border-bottom-left-radius:3px}.monaco-editor .top-right-radius{border-top-right-radius:3px}.monaco-editor .bottom-right-radius{border-bottom-right-radius:3px}.monaco-editor.hc-black .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-black .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-black .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-black .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor.hc-light .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-light .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-light .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-light .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor .cursors-layer{position:absolute;top:0}.monaco-editor .cursors-layer>.cursor{box-sizing:border-box;position:absolute;overflow:hidden}.monaco-editor .cursors-layer.cursor-smooth-caret-animation>.cursor{transition:all 80ms}.monaco-editor .cursors-layer.cursor-block-outline-style>.cursor{border-style:solid;border-width:1px;background:0 0!important}.monaco-editor .cursors-layer.cursor-underline-style>.cursor{border-bottom-style:solid;border-bottom-width:2px;background:0 0!important}.monaco-editor .cursors-layer.cursor-underline-thin-style>.cursor{border-bottom-style:solid;border-bottom-width:1px;background:0 0!important}@keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@keyframes monaco-cursor-expand{0%,20%{transform:scaleY(1)}80%,to{transform:scaleY(0)}}.cursor-smooth{animation:.5s ease-in-out 20 alternate monaco-cursor-smooth}.cursor-phase{animation:.5s ease-in-out 20 alternate monaco-cursor-phase}.cursor-expand>.cursor{animation:.5s ease-in-out 20 alternate monaco-cursor-expand}.monaco-editor .mwh{position:absolute;color:var(--vscode-editorWhitespace-foreground)!important}::-ms-clear{display:none}.monaco-editor .editor-widget input{color:inherit}.monaco-editor{-webkit-text-size-adjust:100%;color:var(--vscode-editor-foreground);overflow-wrap:normal;position:relative;overflow:visible}.monaco-editor,.monaco-editor-background{background-color:var(--vscode-editor-background)}.monaco-editor .rangeHighlight{background-color:var(--vscode-editor-rangeHighlightBackground);border:1px solid var(--vscode-editor-rangeHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .rangeHighlight,.monaco-editor.hc-light .rangeHighlight{border-style:dotted}.monaco-editor .symbolHighlight{background-color:var(--vscode-editor-symbolHighlightBackground);border:1px solid var(--vscode-editor-symbolHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .symbolHighlight,.monaco-editor.hc-light .symbolHighlight{border-style:dotted}.monaco-editor .overflow-guard{position:relative;overflow:hidden}.monaco-editor .view-overlays{position:absolute;top:0}.monaco-editor .margin-view-overlays>div,.monaco-editor .view-overlays>div{width:100%;position:absolute}.monaco-editor .squiggly-error{border-bottom:4px double var(--vscode-editorError-border)}.monaco-editor .squiggly-error:before{background:var(--vscode-editorError-background);content:\"\";width:100%;height:100%;display:block}.monaco-editor .squiggly-warning{border-bottom:4px double var(--vscode-editorWarning-border)}.monaco-editor .squiggly-warning:before{background:var(--vscode-editorWarning-background);content:\"\";width:100%;height:100%;display:block}.monaco-editor .squiggly-info{border-bottom:4px double var(--vscode-editorInfo-border)}.monaco-editor .squiggly-info:before{background:var(--vscode-editorInfo-background);content:\"\";width:100%;height:100%;display:block}.monaco-editor .squiggly-hint{border-bottom:2px dotted var(--vscode-editorHint-border)}.monaco-editor.showUnused .squiggly-unnecessary{border-bottom:2px dashed var(--vscode-editorUnnecessaryCode-border)}.monaco-editor.showDeprecated .squiggly-inline-deprecated{text-decoration:line-through;-webkit-text-decoration-color:var(--vscode-editor-foreground,inherit);text-decoration-color:var(--vscode-editor-foreground,inherit)}.monaco-component.diff-review{-webkit-user-select:none;user-select:none;z-index:99}.monaco-diff-editor .diff-review{position:absolute}.monaco-component.diff-review .diff-review-line-number{color:var(--vscode-editorLineNumber-foreground);text-align:right;display:inline-block}.monaco-component.diff-review .diff-review-summary{padding-left:10px}.monaco-component.diff-review .diff-review-shadow{box-shadow:var(--vscode-scrollbar-shadow)0 -6px 6px -6px inset;position:absolute}.monaco-component.diff-review .diff-review-row{white-space:pre}.monaco-component.diff-review .diff-review-table{min-width:100%;display:table}.monaco-component.diff-review .diff-review-row{width:100%;display:table-row}.monaco-component.diff-review .diff-review-spacer{vertical-align:middle;width:10px;display:inline-block}.monaco-component.diff-review .diff-review-spacer>.codicon{font-size:9px!important}.monaco-component.diff-review .diff-review-actions{z-index:100;display:inline-block;position:absolute;top:2px;right:10px}.monaco-component.diff-review .diff-review-actions .action-label{width:16px;height:16px;margin:2px 0}.monaco-component.diff-review .revertButton{cursor:pointer}.monaco-editor .diff-hidden-lines-widget{width:100%}.monaco-editor .diff-hidden-lines{height:0;font-size:13px;line-height:14px;transform:translateY(-10px)}.monaco-editor .diff-hidden-lines .bottom.dragging,.monaco-editor .diff-hidden-lines .top.dragging,.monaco-editor .diff-hidden-lines:not(.dragging) .bottom:hover,.monaco-editor .diff-hidden-lines:not(.dragging) .top:hover{background-color:var(--vscode-focusBorder)}.monaco-editor .diff-hidden-lines .bottom,.monaco-editor .diff-hidden-lines .top{background-color:#0000;background-clip:padding-box;border-top:4px solid #0000;border-bottom:2px solid #0000;height:4px;transition:background-color .1s ease-out}.monaco-editor .diff-hidden-lines .bottom.canMoveTop:not(.canMoveBottom),.monaco-editor .diff-hidden-lines .top.canMoveTop:not(.canMoveBottom),.monaco-editor.draggingUnchangedRegion.canMoveTop:not(.canMoveBottom) *{cursor:n-resize!important}.monaco-editor .diff-hidden-lines .bottom:not(.canMoveTop).canMoveBottom,.monaco-editor .diff-hidden-lines .top:not(.canMoveTop).canMoveBottom,.monaco-editor.draggingUnchangedRegion:not(.canMoveTop).canMoveBottom *{cursor:s-resize!important}.monaco-editor .diff-hidden-lines .bottom.canMoveTop.canMoveBottom,.monaco-editor .diff-hidden-lines .top.canMoveTop.canMoveBottom,.monaco-editor.draggingUnchangedRegion.canMoveTop.canMoveBottom *{cursor:ns-resize!important}.monaco-editor .diff-hidden-lines .top{transform:translateY(4px)}.monaco-editor .diff-hidden-lines .bottom{transform:translateY(-6px)}.monaco-editor .diff-unchanged-lines{background:var(--vscode-diffEditor-unchangedCodeBackground)}.monaco-editor .noModificationsOverlay{background:var(--vscode-editor-background);z-index:1;justify-content:center;align-items:center;display:flex}.monaco-editor .diff-hidden-lines .center{background:var(--vscode-diffEditor-unchangedRegionBackground);box-shadow:inset 0 -5px 5px -7px var(--vscode-diffEditor-unchangedRegionShadow),inset 0 5px 5px -7px var(--vscode-diffEditor-unchangedRegionShadow);color:var(--vscode-diffEditor-unchangedRegionForeground);text-overflow:ellipsis;white-space:nowrap;height:24px;display:block;overflow:hidden}.monaco-editor .diff-hidden-lines .center span.codicon{vertical-align:middle}.monaco-editor .diff-hidden-lines .center a:hover .codicon{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .diff-hidden-lines div.breadcrumb-item{cursor:pointer}.monaco-editor .diff-hidden-lines div.breadcrumb-item:hover{color:var(--vscode-editorLink-activeForeground)}.monaco-editor .movedModified,.monaco-editor .movedOriginal{border:2px solid var(--vscode-diffEditor-move-border)}.monaco-editor .movedModified.currentMove,.monaco-editor .movedOriginal.currentMove{border:2px solid var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path.currentMove{stroke:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path{pointer-events:visiblestroke}.monaco-diff-editor .moved-blocks-lines .arrow{fill:var(--vscode-diffEditor-move-border)}.monaco-diff-editor .moved-blocks-lines .arrow.currentMove{fill:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines .arrow-rectangle{fill:var(--vscode-editor-background)}.monaco-diff-editor .moved-blocks-lines{pointer-events:none;position:absolute}.monaco-diff-editor .moved-blocks-lines path{fill:none;stroke:var(--vscode-diffEditor-move-border);stroke-width:2px}.monaco-editor .char-delete.diff-range-empty{border-left:3px solid var(--vscode-diffEditor-removedTextBackground);margin-left:-1px}.monaco-editor .char-insert.diff-range-empty{border-left:3px solid var(--vscode-diffEditor-insertedTextBackground)}.monaco-editor .fold-unchanged{cursor:pointer}.monaco-diff-editor .diff-moved-code-block{justify-content:flex-end;margin-top:-4px;display:flex}.monaco-diff-editor .diff-moved-code-block .action-bar .action-label.codicon{width:12px;height:12px;font-size:12px}.monaco-diff-editor .diffOverview{z-index:9}.monaco-diff-editor .diffOverview .diffViewport{z-index:10}.monaco-diff-editor.vs .diffOverview{background:#00000008}.monaco-diff-editor.vs-dark .diffOverview{background:#ffffff03}.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-light .scrollbar{background:0 0}.monaco-scrollable-element.modified-in-monaco-diff-editor .slider{z-index:10}.modified-in-monaco-diff-editor .slider.active{background:#ababab66}.modified-in-monaco-diff-editor.hc-black .slider.active,.modified-in-monaco-diff-editor.hc-light .slider.active{background:0 0}.monaco-diff-editor .delete-sign,.monaco-diff-editor .insert-sign,.monaco-editor .delete-sign,.monaco-editor .insert-sign{align-items:center;opacity:.7!important;font-size:11px!important;display:flex!important}.monaco-diff-editor.hc-black .delete-sign,.monaco-diff-editor.hc-black .insert-sign,.monaco-diff-editor.hc-light .delete-sign,.monaco-diff-editor.hc-light .insert-sign,.monaco-editor.hc-black .delete-sign,.monaco-editor.hc-black .insert-sign,.monaco-editor.hc-light .delete-sign,.monaco-editor.hc-light .insert-sign{opacity:1}.monaco-editor .inline-added-margin-view-zone,.monaco-editor .inline-deleted-margin-view-zone{text-align:right}.monaco-editor .arrow-revert-change{z-index:10;position:absolute}.monaco-editor .arrow-revert-change:hover{cursor:pointer}.monaco-editor .view-zones .view-lines .view-line span{display:inline-block}.monaco-editor .margin-view-zones .lightbulb-glyph:hover{cursor:pointer}.monaco-diff-editor .char-insert,.monaco-editor .char-insert{background-color:var(--vscode-diffEditor-insertedTextBackground)}.monaco-diff-editor .line-insert,.monaco-editor .line-insert{background-color:var(--vscode-diffEditor-insertedLineBackground,var(--vscode-diffEditor-insertedTextBackground))}.monaco-editor .char-insert,.monaco-editor .line-insert{border:1px solid var(--vscode-diffEditor-insertedTextBorder);box-sizing:border-box}.monaco-editor.hc-black .char-insert,.monaco-editor.hc-black .line-insert,.monaco-editor.hc-light .char-insert,.monaco-editor.hc-light .line-insert{border-style:dashed}.monaco-editor .char-delete,.monaco-editor .line-delete{border:1px solid var(--vscode-diffEditor-removedTextBorder);box-sizing:border-box}.monaco-editor.hc-black .char-delete,.monaco-editor.hc-black .line-delete,.monaco-editor.hc-light .char-delete,.monaco-editor.hc-light .line-delete{border-style:dashed}.monaco-diff-editor .gutter-insert,.monaco-editor .gutter-insert,.monaco-editor .inline-added-margin-view-zone{background-color:var(--vscode-diffEditorGutter-insertedLineBackground,var(--vscode-diffEditor-insertedLineBackground),var(--vscode-diffEditor-insertedTextBackground))}.monaco-diff-editor .char-delete,.monaco-editor .char-delete,.monaco-editor .inline-deleted-text{background-color:var(--vscode-diffEditor-removedTextBackground)}.monaco-editor .inline-deleted-text{text-decoration:line-through}.monaco-diff-editor .line-delete,.monaco-editor .line-delete{background-color:var(--vscode-diffEditor-removedLineBackground,var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor .gutter-delete,.monaco-editor .gutter-delete,.monaco-editor .inline-deleted-margin-view-zone{background-color:var(--vscode-diffEditorGutter-removedLineBackground,var(--vscode-diffEditor-removedLineBackground),var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor.side-by-side .editor.modified{border-left:1px solid var(--vscode-diffEditor-border);box-shadow:-6px 0 5px -5px var(--vscode-scrollbar-shadow)}.monaco-diff-editor.side-by-side .editor.original{border-right:1px solid var(--vscode-diffEditor-border);box-shadow:6px 0 5px -5px var(--vscode-scrollbar-shadow)}.monaco-diff-editor .diffViewport{background:var(--vscode-scrollbarSlider-background)}.monaco-diff-editor .diffViewport:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-diff-editor .diffViewport:active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-editor .diagonal-fill{background-image:linear-gradient(-45deg,var(--vscode-diffEditor-diagonalFill)12.5%,#0000 12.5%,#0000 50%,var(--vscode-diffEditor-diagonalFill)50%,var(--vscode-diffEditor-diagonalFill)62.5%,#0000 62.5%,#0000 100%);background-size:8px 8px}.monaco-diff-editor .gutter{flex-grow:0;flex-shrink:0;position:relative;overflow:hidden}.monaco-diff-editor .gutter>div{position:absolute}.monaco-diff-editor .gutter .gutterItem{opacity:0;transition:opacity .7s}.monaco-diff-editor .gutter .gutterItem.showAlways{opacity:1;transition:none}.monaco-diff-editor .gutter .gutterItem.noTransition{transition:none}.monaco-diff-editor .gutter:hover .gutterItem{opacity:1;transition:opacity .1s ease-in-out}.monaco-diff-editor .gutter .gutterItem .background{border-left:2px solid var(--vscode-menu-border);width:1px;height:100%;position:absolute;left:50%}.monaco-diff-editor .gutter .gutterItem .buttons{justify-content:center;align-items:center;width:100%;display:flex;position:absolute}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar{height:fit-content}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar .monaco-action-bar{line-height:1}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar .monaco-action-bar .actions-container{background:var(--vscode-editorGutter-commentRangeForeground);border-radius:4px;width:fit-content}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar .monaco-action-bar .actions-container .action-item:hover{background:var(--vscode-toolbar-hoverBackground)}.monaco-diff-editor .gutter .gutterItem .buttons .monaco-toolbar .monaco-action-bar .actions-container .action-item .action-label{padding:1px 2px}.monaco-diff-editor .diff-hidden-lines-compact{height:11px;display:flex}.monaco-diff-editor .diff-hidden-lines-compact .line-left,.monaco-diff-editor .diff-hidden-lines-compact .line-right{border-top:1px solid;border-color:var(--vscode-editorCodeLens-foreground);opacity:.5;width:100%;height:1px;margin:auto}.monaco-diff-editor .diff-hidden-lines-compact .line-left{width:20px}.monaco-diff-editor .diff-hidden-lines-compact .text{color:var(--vscode-editorCodeLens-foreground);text-wrap:nowrap;margin:0 4px;font-size:11px;line-height:11px}.monaco-editor .rendered-markdown kbd{background-color:var(--vscode-keybindingLabel-background);border-color:var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow);color:var(--vscode-keybindingLabel-foreground);vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px;padding:1px 3px}.rendered-markdown li:has(input[type=checkbox]){list-style-type:none}.monaco-component.multiDiffEditor{background:var(--vscode-multiDiffEditor-background);width:100%;height:100%;position:relative;overflow-y:hidden}.monaco-component.multiDiffEditor>div{width:100%;height:100%;position:absolute;top:0;left:0}.monaco-component.multiDiffEditor>div.placeholder{visibility:hidden;place-content:center;place-items:center;display:grid}.monaco-component.multiDiffEditor>div.placeholder.visible{visibility:visible}.monaco-component.multiDiffEditor .active{--vscode-multiDiffEditor-border:var(--vscode-focusBorder)}.monaco-component.multiDiffEditor .multiDiffEntry{flex-direction:column;flex:1;display:flex;overflow:hidden}.monaco-component.multiDiffEditor .multiDiffEntry .collapse-button{cursor:pointer;margin:0 5px}.monaco-component.multiDiffEditor .multiDiffEntry .collapse-button a{display:block}.monaco-component.multiDiffEditor .multiDiffEntry .header{background:var(--vscode-editor-background);z-index:1000}.monaco-component.multiDiffEditor .multiDiffEntry .header:not(.collapsed) .header-content{border-bottom:1px solid var(--vscode-sideBarSectionHeader-border)}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content{background:var(--vscode-multiDiffEditor-headerBackground);border-top:1px solid var(--vscode-multiDiffEditor-border);color:var(--vscode-foreground);align-items:center;margin:8px 0 0;padding:4px 5px;display:flex}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content.shadow{box-shadow:var(--vscode-scrollbar-shadow)0 6px 6px -6px}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .file-path{flex:1;min-width:0;display:flex}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .file-path .title{font-size:14px;line-height:22px}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .file-path .title.original{text-overflow:ellipsis;flex:1;min-width:0}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .file-path .status{opacity:.75;margin:0 10px;font-weight:600;line-height:22px}.monaco-component.multiDiffEditor .multiDiffEntry .header .header-content .actions{padding:0 8px}.monaco-component.multiDiffEditor .multiDiffEntry .editorParent{border-bottom:1px solid var(--vscode-multiDiffEditor-border);flex-direction:column;flex:1;display:flex;overflow:hidden}.monaco-component.multiDiffEditor .multiDiffEntry .editorContainer{flex:1}.monaco-editor .selection-anchor{background-color:#007acc;width:2px!important}.monaco-editor .bracket-match{background-color:var(--vscode-editorBracketMatch-background);border:1px solid var(--vscode-editorBracketMatch-border);box-sizing:border-box}.monaco-editor .lightBulbWidget{justify-content:center;align-items:center;display:flex}.monaco-editor .lightBulbWidget:hover{cursor:pointer}.monaco-editor .lightBulbWidget.codicon-light-bulb,.monaco-editor .lightBulbWidget.codicon-lightbulb-sparkle{color:var(--vscode-editorLightBulb-foreground)}.monaco-editor .lightBulbWidget.codicon-lightbulb-autofix,.monaco-editor .lightBulbWidget.codicon-lightbulb-sparkle-autofix{color:var(--vscode-editorLightBulbAutoFix-foreground,var(--vscode-editorLightBulb-foreground))}.monaco-editor .lightBulbWidget.codicon-sparkle-filled{color:var(--vscode-editorLightBulbAi-foreground,var(--vscode-icon-foreground))}.monaco-editor .lightBulbWidget:before{z-index:2;position:relative}.monaco-editor .lightBulbWidget:after{content:\"\";opacity:.3;z-index:1;width:100%;height:100%;display:block;position:absolute;top:0;left:0}.monaco-editor .glyph-margin-widgets .cgmr[class*=codicon-gutter-lightbulb]{cursor:pointer;display:block}.monaco-editor .glyph-margin-widgets .cgmr.codicon-gutter-lightbulb,.monaco-editor .glyph-margin-widgets .cgmr.codicon-gutter-lightbulb-sparkle{color:var(--vscode-editorLightBulb-foreground)}.monaco-editor .glyph-margin-widgets .cgmr.codicon-gutter-lightbulb-aifix-auto-fix,.monaco-editor .glyph-margin-widgets .cgmr.codicon-gutter-lightbulb-auto-fix{color:var(--vscode-editorLightBulbAutoFix-foreground,var(--vscode-editorLightBulb-foreground))}.monaco-editor .glyph-margin-widgets .cgmr.codicon-gutter-lightbulb-sparkle-filled{color:var(--vscode-editorLightBulbAi-foreground,var(--vscode-icon-foreground))}.monaco-editor .codelens-decoration{color:var(--vscode-editorCodeLens-foreground);font-family:var(--vscode-editorCodeLens-fontFamily),var(--vscode-editorCodeLens-fontFamilyDefault);font-feature-settings:var(--vscode-editorCodeLens-fontFeatureSettings);font-size:var(--vscode-editorCodeLens-fontSize);line-height:var(--vscode-editorCodeLens-lineHeight);padding-right:calc(var(--vscode-editorCodeLens-fontSize)*.5);text-overflow:ellipsis;white-space:nowrap;display:inline-block;overflow:hidden}.monaco-editor .codelens-decoration>a,.monaco-editor .codelens-decoration>span{-webkit-user-select:none;user-select:none;vertical-align:sub;white-space:nowrap}.monaco-editor .codelens-decoration>a{text-decoration:none}.monaco-editor .codelens-decoration>a:hover{cursor:pointer}.monaco-editor .codelens-decoration>a:hover,.monaco-editor .codelens-decoration>a:hover .codicon{color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .codelens-decoration .codicon{color:var(--vscode-editorCodeLens-foreground);font-size:var(--vscode-editorCodeLens-fontSize);line-height:var(--vscode-editorCodeLens-lineHeight);vertical-align:middle;color:currentColor!important}.monaco-editor .codelens-decoration>a:hover .codicon:before{cursor:pointer}@keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}.monaco-editor .codelens-decoration.fadein{animation:.1s linear fadein}.colorpicker-widget{-webkit-user-select:none;user-select:none;height:190px}.colorpicker-color-decoration,.hc-light .colorpicker-color-decoration{box-sizing:border-box;cursor:pointer;border:.1em solid #000;width:.8em;height:.8em;margin:.1em .2em 0;line-height:.8em;display:inline-block}.hc-black .colorpicker-color-decoration,.vs-dark .colorpicker-color-decoration{border:.1em solid #eee}.colorpicker-header{height:24px;image-rendering:pixelated;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=) 0 0/9px 9px;display:flex;position:relative}.colorpicker-header .picked-color{color:#fff;cursor:pointer;white-space:nowrap;flex:1;justify-content:center;align-items:center;width:240px;line-height:24px;display:flex;overflow:hidden}.colorpicker-header .picked-color .picked-color-presentation{white-space:nowrap;margin-left:5px;margin-right:5px}.colorpicker-header .picked-color .codicon{color:inherit;font-size:14px}.colorpicker-header .picked-color.light{color:#000}.colorpicker-header .original-color{cursor:pointer;width:74px;z-index:inherit}.standalone-colorpicker{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground)}.colorpicker-header.standalone-colorpicker{border-bottom:none}.colorpicker-header .close-button{background-color:var(--vscode-editorHoverWidget-background);border-left:1px solid var(--vscode-editorHoverWidget-border);cursor:pointer}.colorpicker-header .close-button-inner-div{text-align:center;width:100%;height:100%}.colorpicker-header .close-button-inner-div:hover{background-color:var(--vscode-toolbar-hoverBackground)}.colorpicker-header .close-icon{padding:3px}.colorpicker-body{padding:8px;display:flex;position:relative}.colorpicker-body .saturation-wrap{flex:1;min-width:220px;height:150px;position:relative;overflow:hidden}.colorpicker-body .saturation-box{height:150px;position:absolute}.colorpicker-body .saturation-selection{border:1px solid #fff;border-radius:100%;width:9px;height:9px;margin:-5px 0 0 -5px;position:absolute;box-shadow:0 0 2px #000c}.colorpicker-body .strip{width:25px;height:150px}.colorpicker-body .standalone-strip{width:25px;height:122px}.colorpicker-body .hue-strip{cursor:grab;background:linear-gradient(red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);margin-left:8px;position:relative}.colorpicker-body .opacity-strip{cursor:grab;image-rendering:pixelated;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=) 0 0/9px 9px;margin-left:8px;position:relative}.colorpicker-body .strip.grabbing{cursor:grabbing}.colorpicker-body .slider{box-sizing:border-box;border:1px solid #ffffffb5;width:calc(100% + 4px);height:4px;position:absolute;top:0;left:-2px;box-shadow:0 0 1px #000000d9}.colorpicker-body .strip .overlay{pointer-events:none;height:150px}.colorpicker-body .standalone-strip .standalone-overlay{pointer-events:none;height:122px}.standalone-colorpicker-body{border:1px solid #0000;border-bottom:1px solid var(--vscode-editorHoverWidget-border);display:block;overflow:hidden}.colorpicker-body .insert-button{background:var(--vscode-button-background);color:var(--vscode-button-foreground);cursor:pointer;border:none;border-radius:2px;width:58px;height:20px;padding:0;position:absolute;bottom:8px;right:8px}.colorpicker-body .insert-button:hover{background:var(--vscode-button-hoverBackground)}.monaco-editor.hc-light .dnd-target,.monaco-editor.vs .dnd-target{color:#fff;border-right:2px dotted #000}.monaco-editor.vs-dark .dnd-target{color:#51504f;border-right:2px dotted #aeafad}.monaco-editor.hc-black .dnd-target{color:#000;border-right:2px dotted #fff}.monaco-editor.hc-black.mac.mouse-default .view-lines,.monaco-editor.hc-light.mac.mouse-default .view-lines,.monaco-editor.mouse-default .view-lines,.monaco-editor.vs-dark.mac.mouse-default .view-lines{cursor:default}.monaco-editor.hc-black.mac.mouse-copy .view-lines,.monaco-editor.hc-light.mac.mouse-copy .view-lines,.monaco-editor.mouse-copy .view-lines,.monaco-editor.vs-dark.mac.mouse-copy .view-lines{cursor:copy}.post-edit-widget{background-color:var(--vscode-editorWidget-background);border:1px solid var(--vscode-widget-border,transparent);box-shadow:0 0 8px 2px var(--vscode-widget-shadow);border-radius:4px;overflow:hidden}.post-edit-widget .monaco-button{border:none;border-radius:0;padding:2px}.post-edit-widget .monaco-button:hover{background-color:var(--vscode-button-secondaryHoverBackground)!important}.post-edit-widget .monaco-button .codicon{margin:0}.monaco-editor .findOptionsWidget{border:2px solid var(--vscode-contrastBorder)}.monaco-editor .find-widget,.monaco-editor .findOptionsWidget{background-color:var(--vscode-editorWidget-background);box-shadow:0 0 8px 2px var(--vscode-widget-shadow);color:var(--vscode-editorWidget-foreground)}.monaco-editor .find-widget{border-bottom:1px solid var(--vscode-widget-border);border-left:1px solid var(--vscode-widget-border);border-right:1px solid var(--vscode-widget-border);box-sizing:border-box;z-index:35;border-bottom-right-radius:4px;border-bottom-left-radius:4px;height:33px;padding:0 4px;line-height:19px;transition:transform .2s linear;position:absolute;overflow:hidden;transform:translateY(calc(-100% - 10px))}.monaco-workbench.reduce-motion .monaco-editor .find-widget{transition:transform linear}.monaco-editor .find-widget textarea{margin:0}.monaco-editor .find-widget.hiddenEditor{display:none}.monaco-editor .find-widget.replaceToggled>.replace-part{display:flex}.monaco-editor .find-widget.visible{transform:translateY(0)}.monaco-editor .find-widget .monaco-inputbox.synthetic-focus{outline:1px solid -webkit-focus-ring-color;outline-color:var(--vscode-focusBorder);outline-offset:-1px}.monaco-editor .find-widget .monaco-inputbox .input{background-color:#0000;min-height:0}.monaco-editor .find-widget .monaco-findInput .input{font-size:13px}.monaco-editor .find-widget>.find-part,.monaco-editor .find-widget>.replace-part{margin:3px 25px 0 17px;font-size:12px;display:flex}.monaco-editor .find-widget>.find-part .monaco-inputbox,.monaco-editor .find-widget>.replace-part .monaco-inputbox{min-height:25px}.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-right:22px}.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.mirror,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-top:2px;padding-bottom:2px}.monaco-editor .find-widget>.find-part .find-actions,.monaco-editor .find-widget>.replace-part .replace-actions{align-items:center;height:25px;display:flex}.monaco-editor .find-widget .monaco-findInput{vertical-align:middle;flex:1;display:flex}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element{width:100%}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical{opacity:0}.monaco-editor .find-widget .matchesCount{box-sizing:border-box;flex:initial;text-align:center;vertical-align:middle;height:25px;margin:0 0 0 3px;padding:2px 0 0 2px;line-height:23px;display:flex}.monaco-editor .find-widget .button{cursor:pointer;flex:initial;background-position:50%;background-repeat:no-repeat;border-radius:5px;justify-content:center;align-items:center;width:16px;height:16px;margin-left:3px;padding:3px;display:flex}.monaco-editor .find-widget .codicon-find-selection{border-radius:5px;width:22px;height:22px;padding:3px}.monaco-editor .find-widget .button.left{margin-left:0;margin-right:3px}.monaco-editor .find-widget .button.wide{width:auto;padding:1px 6px;top:-1px}.monaco-editor .find-widget .button.toggle{box-sizing:border-box;border-radius:0;width:18px;height:100%;position:absolute;top:0;left:3px}.monaco-editor .find-widget .button.toggle.disabled{display:none}.monaco-editor .find-widget .disabled{color:var(--vscode-disabledForeground);cursor:default}.monaco-editor .find-widget>.replace-part{display:none}.monaco-editor .find-widget>.replace-part>.monaco-findInput{vertical-align:middle;flex:none;display:flex;position:relative}.monaco-editor .find-widget>.replace-part>.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.monaco-editor .find-widget.reduced-find-widget .matchesCount{display:none}.monaco-editor .find-widget.narrow-find-widget{max-width:257px!important}.monaco-editor .find-widget.collapsed-find-widget{max-width:170px!important}.monaco-editor .find-widget.collapsed-find-widget .button.next,.monaco-editor .find-widget.collapsed-find-widget .button.previous,.monaco-editor .find-widget.collapsed-find-widget .button.replace,.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,.monaco-editor .find-widget.collapsed-find-widget>.find-part .monaco-findInput .controls{display:none}.monaco-editor .find-widget.no-results .matchesCount{color:var(--vscode-errorForeground)}.monaco-editor .findMatch{animation-duration:0;background-color:var(--vscode-editor-findMatchHighlightBackground);animation-name:inherit!important}.monaco-editor .currentFindMatch{background-color:var(--vscode-editor-findMatchBackground);border:2px solid var(--vscode-editor-findMatchBorder);box-sizing:border-box;padding:1px}.monaco-editor .findScope{background-color:var(--vscode-editor-findRangeHighlightBackground)}.monaco-editor .find-widget .monaco-sash{background-color:var(--vscode-editorWidget-resizeBorder,var(--vscode-editorWidget-border));left:0!important}.monaco-editor.hc-black .find-widget .button:before{position:relative;top:1px;left:2px}.monaco-editor .find-widget .button:not(.disabled):hover,.monaco-editor .find-widget .codicon-find-selection:hover{background-color:var(--vscode-toolbar-hoverBackground)!important}.monaco-editor.currentFindMatch{background-color:var(--vscode-editor-findMatchBackground)}.monaco-editor.findScope{background-color:var(--vscode-editor-findRangeHighlightBackground)}.monaco-editor.findMatch{background-color:var(--vscode-editorWidget-background)}.monaco-editor .find-widget>.button.codicon-widget-close{position:absolute;top:5px;right:4px}.monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{cursor:pointer;opacity:0;justify-content:center;align-items:center;margin-left:2px;font-size:140%;transition:opacity .5s;display:flex}.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-expanded{transition:initial}.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons,.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon.codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays:hover .codicon{opacity:1}.monaco-editor .inline-folded:after{color:var(--vscode-editor-foldPlaceholderForeground);content:\"⋯\";cursor:pointer;margin:.1em .2em 0;line-height:1em;display:inline}.monaco-editor .folded-background{background-color:var(--vscode-editor-foldBackground)}.monaco-editor .cldr.codicon.codicon-folding-collapsed,.monaco-editor .cldr.codicon.codicon-folding-expanded,.monaco-editor .cldr.codicon.codicon-folding-manual-collapsed,.monaco-editor .cldr.codicon.codicon-folding-manual-expanded{color:var(--vscode-editorGutter-foldingControlForeground)!important}.monaco-editor .peekview-widget .head .peekview-title .severity-icon{vertical-align:text-top;margin-right:4px;display:inline-block}.monaco-editor .marker-widget{text-overflow:ellipsis;white-space:nowrap}.monaco-editor .marker-widget>.stale{opacity:.6;font-style:italic}.monaco-editor .marker-widget .title{padding-right:5px;display:inline-block}.monaco-editor .marker-widget .descriptioncontainer{-webkit-user-select:text;user-select:text;white-space:pre;padding:8px 12px 0 20px;position:absolute}.monaco-editor .marker-widget .descriptioncontainer .message{flex-direction:column;display:flex}.monaco-editor .marker-widget .descriptioncontainer .message .details{padding-left:6px}.monaco-editor .marker-widget .descriptioncontainer .message .source,.monaco-editor .marker-widget .descriptioncontainer .message span.code{opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link{color:inherit;opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before{content:\"(\"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after{content:\")\"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link>span{color:var(--vscode-textLink-activeForeground);text-underline-position:under;border-bottom:1px solid #0000;text-decoration:underline}.monaco-editor .marker-widget .descriptioncontainer .filename{color:var(--vscode-textLink-activeForeground);cursor:pointer}.monaco-editor .goto-definition-link{cursor:pointer;text-decoration:underline;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget{border-top-width:1px;border-bottom-width:1px}.monaco-editor .reference-zone-widget .inline{vertical-align:top;display:inline-block}.monaco-editor .reference-zone-widget .messages{text-align:center;width:100%;height:100%;padding:3em 0}.monaco-editor .reference-zone-widget .ref-tree{background-color:var(--vscode-peekViewResult-background);color:var(--vscode-peekViewResult-lineForeground);line-height:23px}.monaco-editor .reference-zone-widget .ref-tree .reference{text-overflow:ellipsis;overflow:hidden}.monaco-editor .reference-zone-widget .ref-tree .reference-file{color:var(--vscode-peekViewResult-fileForeground);width:100%;height:100%;display:inline-flex}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file{color:inherit!important}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows>.monaco-list-row.selected:not(.highlighted){background-color:var(--vscode-peekViewResult-selectionBackground);color:var(--vscode-peekViewResult-selectionForeground)!important}.monaco-editor .reference-zone-widget .ref-tree .reference-file .count{margin-left:auto;margin-right:12px}.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight{background-color:var(--vscode-peekViewResult-matchHighlightBackground)}.monaco-editor .reference-zone-widget .preview .reference-decoration{background-color:var(--vscode-peekViewEditor-matchHighlightBackground);border:2px solid var(--vscode-peekViewEditor-matchHighlightBorder);box-sizing:border-box}.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input,.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background{background-color:var(--vscode-peekViewEditor-background)}.monaco-editor .reference-zone-widget .preview .monaco-editor .margin{background-color:var(--vscode-peekViewEditorGutter-background)}.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file,.monaco-editor.hc-light .reference-zone-widget .ref-tree .reference-file{font-weight:700}.monaco-editor.hc-black .reference-zone-widget .ref-tree .referenceMatch .highlight,.monaco-editor.hc-light .reference-zone-widget .ref-tree .referenceMatch .highlight{border:1px dotted var(--vscode-contrastActiveBorder,transparent);box-sizing:border-box}.monaco-editor .hoverHighlight{background-color:var(--vscode-editor-hoverHighlightBackground)}.monaco-editor .monaco-hover-content{box-sizing:border-box;padding-bottom:2px;padding-right:2px}.monaco-editor .monaco-hover{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);border-radius:3px}.monaco-editor .monaco-hover a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-hover a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .monaco-hover .hover-row{display:flex}.monaco-editor .monaco-hover .hover-row .hover-row-contents{flex-direction:column;min-width:0;display:flex}.monaco-editor .monaco-hover .hover-row .verbosity-actions{border-right:1px solid var(--vscode-editorHoverWidget-border);flex-direction:column;justify-content:end;padding-left:5px;padding-right:5px;display:flex}.monaco-editor .monaco-hover .hover-row .verbosity-actions .codicon{cursor:pointer;font-size:11px}.monaco-editor .monaco-hover .hover-row .verbosity-actions .codicon.enabled{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-hover .hover-row .verbosity-actions .codicon.disabled{opacity:.6}.monaco-editor .monaco-hover .hover-row .actions{background-color:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-editor .monaco-hover code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor.vs .valueSetReplacement{outline:solid 2px var(--vscode-editorBracketMatch-border)}.monaco-editor .inlineSuggestionsHints.withBorder{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);z-index:39}.monaco-editor .inlineSuggestionsHints a,.monaco-editor .inlineSuggestionsHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineSuggestionsHints .keybinding{opacity:.6;margin-left:4px;display:flex}.monaco-editor .inlineSuggestionsHints .keybinding .monaco-keybinding-key{padding:2px 3px;font-size:8px}.monaco-editor .inlineSuggestionsHints .availableSuggestionCount a{justify-content:center;min-width:19px;display:flex}.monaco-editor .inlineSuggestionStatusBarItemLabel{margin-right:2px}.monaco-editor .suggest-preview-additional-widget{white-space:nowrap}.monaco-editor .suggest-preview-additional-widget .content-spacer{color:#0000;white-space:pre}.monaco-editor .suggest-preview-additional-widget .button{cursor:pointer;text-underline-position:under;text-decoration:underline;display:inline-block}.monaco-editor .ghost-text-hidden{opacity:0;font-size:0}.monaco-editor .ghost-text-decoration,.monaco-editor .suggest-preview-text .ghost-text{font-style:italic}.monaco-editor .ghost-text-decoration,.monaco-editor .ghost-text-decoration-preview,.monaco-editor .suggest-preview-text .ghost-text{background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border);color:var(--vscode-editorGhostText-foreground)!important}.monaco-editor .inline-edit-remove{background-color:var(--vscode-editorGhostText-background);font-style:italic}.monaco-editor .inline-edit-hidden{opacity:0;font-size:0}.monaco-editor .inline-edit-decoration,.monaco-editor .suggest-preview-text .inline-edit{font-style:italic}.monaco-editor .inline-completion-text-to-replace{text-underline-position:under;text-decoration:underline}.monaco-editor .inline-edit-decoration,.monaco-editor .inline-edit-decoration-preview,.monaco-editor .suggest-preview-text .inline-edit{background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border);color:var(--vscode-editorGhostText-foreground)!important}.monaco-editor .inlineEditHints.withBorder{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);z-index:39}.monaco-editor .inlineEditHints a,.monaco-editor .inlineEditHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineEditHints .keybinding{opacity:.6;margin-left:4px;display:flex}.monaco-editor .inlineEditHints .keybinding .monaco-keybinding-key{padding:2px 3px;font-size:8px}.monaco-editor .inlineEditStatusBarItemLabel{margin-right:2px}.monaco-editor .inlineEditSideBySide{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);white-space:pre;z-index:39}.monaco-editor div.inline-edits-widget{--widget-color:var(--vscode-notifications-background)}.monaco-editor div.inline-edits-widget .promptEditor .monaco-editor{--vscode-editor-placeholder-foreground:var(--vscode-editorGhostText-foreground)}.monaco-editor div.inline-edits-widget .promptEditor,.monaco-editor div.inline-edits-widget .toolbar{opacity:0;transition:opacity .2s ease-in-out}.monaco-editor div.inline-edits-widget.focused .promptEditor,.monaco-editor div.inline-edits-widget.focused .toolbar,.monaco-editor div.inline-edits-widget:hover .promptEditor,.monaco-editor div.inline-edits-widget:hover .toolbar{opacity:1}.monaco-editor div.inline-edits-widget .preview .monaco-editor{--vscode-editor-background:var(--widget-color)}.monaco-editor div.inline-edits-widget .preview .monaco-editor .mtk1{color:var(--vscode-editorGhostText-foreground)}.monaco-editor div.inline-edits-widget .preview .monaco-editor .current-line-margin,.monaco-editor div.inline-edits-widget .preview .monaco-editor .view-overlays .current-line-exact{border:none}.monaco-editor div.inline-edits-widget svg .gradient-start{stop-color:var(--vscode-editor-background)}.monaco-editor div.inline-edits-widget svg .gradient-stop{stop-color:var(--widget-color)}.inline-editor-progress-decoration{width:1em;height:1em;display:inline-block}.inline-progress-widget{justify-content:center;align-items:center;display:flex!important}.inline-progress-widget .icon{font-size:80%!important}.inline-progress-widget:hover .icon{animation:none;font-size:90%!important}.inline-progress-widget:hover .icon:before{content:var(--vscode-icon-x-content);font-family:var(--vscode-icon-x-font-family)}.monaco-editor .linked-editing-decoration{background-color:var(--vscode-editor-linkedEditingBackground);min-width:1px}.monaco-editor .detected-link,.monaco-editor .detected-link-active{text-underline-position:under;text-decoration:underline}.monaco-editor .detected-link-active{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .monaco-editor-overlaymessage{z-index:10000;padding-bottom:8px}.monaco-editor .monaco-editor-overlaymessage.below{z-index:10000;padding-top:8px;padding-bottom:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.monaco-editor .monaco-editor-overlaymessage.fadeIn{animation:.15s ease-out fadeIn}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.monaco-editor .monaco-editor-overlaymessage.fadeOut{animation:.1s ease-out fadeOut}.monaco-editor .monaco-editor-overlaymessage .message{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-inputValidation-infoBorder);color:var(--vscode-editorHoverWidget-foreground);border-radius:3px;padding:2px 4px}.monaco-editor .monaco-editor-overlaymessage .message p{margin-block:0}.monaco-editor .monaco-editor-overlaymessage .message a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-editor-overlaymessage .message a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor.hc-black .monaco-editor-overlaymessage .message,.monaco-editor.hc-light .monaco-editor-overlaymessage .message{border-width:2px}.monaco-editor .monaco-editor-overlaymessage .anchor{z-index:1000;border:8px solid #0000;position:absolute;left:2px;width:0!important;height:0!important}.monaco-editor .monaco-editor-overlaymessage .anchor.top{border-bottom-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage .anchor.below{border-top-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage.below .anchor.below,.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top{display:none}.monaco-editor .monaco-editor-overlaymessage.below .anchor.top{display:inherit;top:-8px}.monaco-editor .parameter-hints-widget{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);cursor:default;z-index:39;flex-direction:column;line-height:1.5em;display:flex}.hc-black .monaco-editor .parameter-hints-widget,.hc-light .monaco-editor .parameter-hints-widget{border-width:2px}.monaco-editor .parameter-hints-widget>.phwrapper{flex-direction:row;max-width:440px;display:flex}.monaco-editor .parameter-hints-widget.multiple{min-height:3.3em;padding:0}.monaco-editor .parameter-hints-widget.multiple .body:before{border-left:1px solid var(--vscode-editorHoverWidget-border);content:\"\";opacity:.5;height:100%;display:block;position:absolute}.monaco-editor .parameter-hints-widget p,.monaco-editor .parameter-hints-widget ul{margin:8px 0}.monaco-editor .parameter-hints-widget .body,.monaco-editor .parameter-hints-widget .monaco-scrollable-element{flex-direction:column;flex:1;min-height:100%;display:flex}.monaco-editor .parameter-hints-widget .signature{padding:4px 5px;position:relative}.monaco-editor .parameter-hints-widget .signature.has-docs:after{border-bottom:1px solid var(--vscode-editorHoverWidget-border);content:\"\";opacity:.5;width:100%;padding-top:4px;display:block;position:absolute;left:0}.monaco-editor .parameter-hints-widget .code{font-family:var(--vscode-parameterHintsWidget-editorFontFamily),var(--vscode-parameterHintsWidget-editorFontFamilyDefault)}.monaco-editor .parameter-hints-widget .docs{white-space:pre-wrap;padding:0 10px 0 5px}.monaco-editor .parameter-hints-widget .docs.empty{display:none}.monaco-editor .parameter-hints-widget .docs a{color:var(--vscode-textLink-foreground)}.monaco-editor .parameter-hints-widget .docs a:hover{color:var(--vscode-textLink-activeForeground);cursor:pointer}.monaco-editor .parameter-hints-widget .docs .markdown-docs{white-space:normal}.monaco-editor .parameter-hints-widget .docs code{background-color:var(--vscode-textCodeBlock-background);font-family:var(--monaco-monospace-font);border-radius:3px;padding:0 .4em}.monaco-editor .parameter-hints-widget .docs .code,.monaco-editor .parameter-hints-widget .docs .monaco-tokenized-source{white-space:pre-wrap}.monaco-editor .parameter-hints-widget .controls{flex-direction:column;justify-content:flex-end;align-items:center;min-width:22px;display:none}.monaco-editor .parameter-hints-widget.multiple .controls{padding:0 2px;display:flex}.monaco-editor .parameter-hints-widget.multiple .button{cursor:pointer;background-repeat:no-repeat;width:16px;height:16px}.monaco-editor .parameter-hints-widget .button.previous{bottom:24px}.monaco-editor .parameter-hints-widget .overloads{font-family:var(--monaco-monospace-font);text-align:center;height:12px;line-height:12px}.monaco-editor .parameter-hints-widget .signature .parameter.active{color:var(--vscode-editorHoverWidget-highlightForeground);font-weight:700}.monaco-editor .parameter-hints-widget .documentation-parameter>.parameter{margin-right:.5em;font-weight:700}.monaco-editor .peekview-widget .head{box-sizing:border-box;flex-wrap:nowrap;justify-content:space-between;display:flex}.monaco-editor .peekview-widget .head .peekview-title{text-overflow:ellipsis;align-items:baseline;min-width:0;margin-left:20px;font-size:13px;display:flex;overflow:hidden}.monaco-editor .peekview-widget .head .peekview-title.clickable{cursor:pointer}.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty){margin-left:.5em;font-size:.9em}.monaco-editor .peekview-widget .head .peekview-title .dirname,.monaco-editor .peekview-widget .head .peekview-title .filename,.monaco-editor .peekview-widget .head .peekview-title .meta{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty):before{content:\"-\";padding:0 .3em}.monaco-editor .peekview-widget .head .peekview-actions{text-align:right;flex:1;padding-right:2px}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar{display:inline-block}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar,.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar>.actions-container{height:100%}.monaco-editor .peekview-widget>.body{border-top:1px solid;position:relative}.monaco-editor .peekview-widget .head .peekview-title .codicon{align-self:center;margin-right:4px}.monaco-editor .peekview-widget .monaco-list .monaco-list-row.focused .codicon{color:inherit!important}.monaco-editor{--vscode-editor-placeholder-foreground:var(--vscode-editorGhostText-foreground)}.monaco-editor .editorPlaceholder{text-overflow:ellipsis;text-wrap:nowrap;color:var(--vscode-editor-placeholder-foreground);pointer-events:none;position:absolute;top:0;overflow:hidden}.monaco-editor .rename-box{color:inherit;z-index:100;border-radius:4px}.monaco-editor .rename-box.preview{padding:4px 4px 0}.monaco-editor .rename-box .rename-input-with-button{border-radius:2px;width:calc(100% - 8px);padding:3px}.monaco-editor .rename-box .rename-input{width:calc(100% - 8px);padding:0}.monaco-editor .rename-box .rename-input:focus{outline:none}.monaco-editor .rename-box .rename-suggestions-button{cursor:pointer;background-color:#0000;border:none;border-radius:5px;align-items:center;padding:3px;display:flex}.monaco-editor .rename-box .rename-suggestions-button:hover{background-color:var(--vscode-toolbar-hoverBackground)}.monaco-editor .rename-box .rename-candidate-list-container .monaco-list-row{border-radius:2px}.monaco-editor .rename-box .rename-label{opacity:.8;display:none}.monaco-editor .rename-box.preview .rename-label{display:inherit}.monaco-editor .snippet-placeholder{background-color:var(--vscode-editor-snippetTabstopHighlightBackground,transparent);outline-color:var(--vscode-editor-snippetTabstopHighlightBorder,transparent);outline-width:1px;outline-style:solid;min-width:2px}.monaco-editor .finish-snippet-placeholder{background-color:var(--vscode-editor-snippetFinalTabstopHighlightBackground,transparent);outline-color:var(--vscode-editor-snippetFinalTabstopHighlightBorder,transparent);outline-width:1px;outline-style:solid}.monaco-editor .sticky-widget{overflow:hidden}.monaco-editor .sticky-widget-line-numbers{background-color:inherit;float:left}.monaco-editor .sticky-widget-lines-scrollable{background-color:inherit;width:var(--vscode-editorStickyScroll-scrollableWidth);display:inline-block;position:absolute;overflow:hidden}.monaco-editor .sticky-widget-lines{background-color:inherit;position:absolute}.monaco-editor .sticky-line-content,.monaco-editor .sticky-line-number{background-color:inherit;color:var(--vscode-editorLineNumber-foreground);white-space:nowrap;display:inline-block;position:absolute}.monaco-editor .sticky-line-number .codicon-folding-collapsed,.monaco-editor .sticky-line-number .codicon-folding-expanded{float:right;transition:var(--vscode-editorStickyScroll-foldingOpacityTransition)}.monaco-editor .sticky-line-content{background-color:inherit;white-space:nowrap;width:var(--vscode-editorStickyScroll-scrollableWidth)}.monaco-editor .sticky-line-number-inner{text-align:right;display:inline-block}.monaco-editor .sticky-widget{border-bottom:1px solid var(--vscode-editorStickyScroll-border)}.monaco-editor .sticky-line-content:hover{background-color:var(--vscode-editorStickyScrollHover-background);cursor:pointer}.monaco-editor .sticky-widget{background-color:var(--vscode-editorStickyScroll-background);box-shadow:var(--vscode-editorStickyScroll-shadow)0 4px 2px -2px;z-index:4;width:100%;right:auto!important}.monaco-editor .sticky-widget.peek{background-color:var(--vscode-peekViewEditorStickyScroll-background)}.monaco-editor .suggest-widget{z-index:40;border-radius:3px;flex-direction:column;width:430px;display:flex}.monaco-editor .suggest-widget.message{flex-direction:row;align-items:center}.monaco-editor .suggest-details,.monaco-editor .suggest-widget{background-color:var(--vscode-editorSuggestWidget-background);border-color:var(--vscode-editorSuggestWidget-border);border-style:solid;border-width:1px;flex:0 auto;width:100%}.monaco-editor.hc-black .suggest-details,.monaco-editor.hc-black .suggest-widget,.monaco-editor.hc-light .suggest-details,.monaco-editor.hc-light .suggest-widget{border-width:2px}.monaco-editor .suggest-widget .suggest-status-bar{border-top:1px solid var(--vscode-editorSuggestWidget-border);box-sizing:border-box;flex-flow:row;justify-content:space-between;width:100%;padding:0 4px;font-size:80%;display:none;overflow:hidden}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar{display:flex}.monaco-editor .suggest-widget .suggest-status-bar .left{padding-right:8px}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label{color:var(--vscode-editorSuggestWidgetStatus-foreground)}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label{margin-right:0}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label:after{content:\", \";margin-right:.3em}.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore,.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label{width:100%}.monaco-editor .suggest-widget>.message{padding-left:22px}.monaco-editor .suggest-widget>.tree{width:100%;height:100%}.monaco-editor .suggest-widget .monaco-list{-webkit-user-select:none;user-select:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row{-mox-box-sizing:border-box;box-sizing:border-box;cursor:pointer;touch-action:none;white-space:nowrap;background-position:2px 2px;background-repeat:no-repeat;padding-right:10px;display:flex}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused{color:var(--vscode-editorSuggestWidget-selectedForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused .codicon{color:var(--vscode-editorSuggestWidget-selectedIconForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents{flex:1;height:100%;padding-left:2px;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main{text-overflow:ellipsis;white-space:pre;justify-content:space-between;display:flex;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{display:flex}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.focused)>.contents>.main .monaco-icon-label{color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight{font-weight:700}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-highlightForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-focusHighlightForeground)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:before{color:inherit;cursor:pointer;opacity:1;font-size:14px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close{position:absolute;top:6px;right:2px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover{opacity:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{opacity:.7}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label{opacity:.6;text-overflow:ellipsis;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label{opacity:.4;text-overflow:ellipsis;align-self:center;margin-left:12px;font-size:85%;line-height:normal;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{text-overflow:ellipsis;white-space:nowrap;margin-left:1.1em;font-size:85%;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label{display:inline}.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right.can-expand-details>.details-label{width:calc(100% - 26px)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left{flex-grow:1;flex-shrink:1;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label{flex-shrink:0}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label{max-width:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label{flex-shrink:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{flex-shrink:4;max-width:70%;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{visibility:hidden;width:18px;height:18px;display:inline-block;position:absolute;right:10px}.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none!important}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore{display:inline-block}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right>.readMore{visibility:visible}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated{opacity:.66;-webkit-text-decoration:unset;text-decoration:unset}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container{text-decoration:line-through}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label:before{height:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon{background-position:50%;background-repeat:no-repeat;background-size:80%;width:16px;height:16px;margin-left:2px;display:block}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon{align-items:center;margin-right:4px;display:flex}.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon:before{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan{border:.1em solid #000;width:.7em;height:.7em;margin:0 0 0 .3em;display:inline-block}.monaco-editor .suggest-details-container{z-index:41}.monaco-editor .suggest-details{color:var(--vscode-editorSuggestWidget-foreground);cursor:default;flex-direction:column;display:flex}.monaco-editor .suggest-details.focused{border-color:var(--vscode-focusBorder)}.monaco-editor .suggest-details a{color:var(--vscode-textLink-foreground)}.monaco-editor .suggest-details a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .suggest-details code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .suggest-details.no-docs{display:none}.monaco-editor .suggest-details>.monaco-scrollable-element{flex:1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body{box-sizing:border-box;width:100%;height:100%}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type{opacity:.7;text-overflow:ellipsis;white-space:pre;flex:2;margin:0 24px 0 0;padding:4px 0 12px 5px;overflow:hidden}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap{white-space:normal;word-break:break-all}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs{white-space:pre-wrap;margin:0;padding:4px 5px}.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs{margin-right:24px;overflow:hidden}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs{white-space:normal;min-height:calc(1rem + 8px);padding:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty){padding:4px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child{margin-top:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child{margin-bottom:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .monaco-tokenized-source{white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code{white-space:pre-wrap;word-wrap:break-word}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon{vertical-align:sub}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty{display:none}.monaco-editor .suggest-details code{border-radius:3px;padding:0 .4em}.monaco-editor .suggest-details ol,.monaco-editor .suggest-details ul{padding-left:20px}.monaco-editor .suggest-details p code{font-family:var(--monaco-monospace-font)}.monaco-editor .codicon.codicon-symbol-array,.monaco-workbench .codicon.codicon-symbol-array{color:var(--vscode-symbolIcon-arrayForeground)}.monaco-editor .codicon.codicon-symbol-boolean,.monaco-workbench .codicon.codicon-symbol-boolean{color:var(--vscode-symbolIcon-booleanForeground)}.monaco-editor .codicon.codicon-symbol-class,.monaco-workbench .codicon.codicon-symbol-class{color:var(--vscode-symbolIcon-classForeground)}.monaco-editor .codicon.codicon-symbol-method,.monaco-workbench .codicon.codicon-symbol-method{color:var(--vscode-symbolIcon-methodForeground)}.monaco-editor .codicon.codicon-symbol-color,.monaco-workbench .codicon.codicon-symbol-color{color:var(--vscode-symbolIcon-colorForeground)}.monaco-editor .codicon.codicon-symbol-constant,.monaco-workbench .codicon.codicon-symbol-constant{color:var(--vscode-symbolIcon-constantForeground)}.monaco-editor .codicon.codicon-symbol-constructor,.monaco-workbench .codicon.codicon-symbol-constructor{color:var(--vscode-symbolIcon-constructorForeground)}.monaco-editor .codicon.codicon-symbol-enum,.monaco-editor .codicon.codicon-symbol-value,.monaco-workbench .codicon.codicon-symbol-enum,.monaco-workbench .codicon.codicon-symbol-value{color:var(--vscode-symbolIcon-enumeratorForeground)}.monaco-editor .codicon.codicon-symbol-enum-member,.monaco-workbench .codicon.codicon-symbol-enum-member{color:var(--vscode-symbolIcon-enumeratorMemberForeground)}.monaco-editor .codicon.codicon-symbol-event,.monaco-workbench .codicon.codicon-symbol-event{color:var(--vscode-symbolIcon-eventForeground)}.monaco-editor .codicon.codicon-symbol-field,.monaco-workbench .codicon.codicon-symbol-field{color:var(--vscode-symbolIcon-fieldForeground)}.monaco-editor .codicon.codicon-symbol-file,.monaco-workbench .codicon.codicon-symbol-file{color:var(--vscode-symbolIcon-fileForeground)}.monaco-editor .codicon.codicon-symbol-folder,.monaco-workbench .codicon.codicon-symbol-folder{color:var(--vscode-symbolIcon-folderForeground)}.monaco-editor .codicon.codicon-symbol-function,.monaco-workbench .codicon.codicon-symbol-function{color:var(--vscode-symbolIcon-functionForeground)}.monaco-editor .codicon.codicon-symbol-interface,.monaco-workbench .codicon.codicon-symbol-interface{color:var(--vscode-symbolIcon-interfaceForeground)}.monaco-editor .codicon.codicon-symbol-key,.monaco-workbench .codicon.codicon-symbol-key{color:var(--vscode-symbolIcon-keyForeground)}.monaco-editor .codicon.codicon-symbol-keyword,.monaco-workbench .codicon.codicon-symbol-keyword{color:var(--vscode-symbolIcon-keywordForeground)}.monaco-editor .codicon.codicon-symbol-module,.monaco-workbench .codicon.codicon-symbol-module{color:var(--vscode-symbolIcon-moduleForeground)}.monaco-editor .codicon.codicon-symbol-namespace,.monaco-workbench .codicon.codicon-symbol-namespace{color:var(--vscode-symbolIcon-namespaceForeground)}.monaco-editor .codicon.codicon-symbol-null,.monaco-workbench .codicon.codicon-symbol-null{color:var(--vscode-symbolIcon-nullForeground)}.monaco-editor .codicon.codicon-symbol-number,.monaco-workbench .codicon.codicon-symbol-number{color:var(--vscode-symbolIcon-numberForeground)}.monaco-editor .codicon.codicon-symbol-object,.monaco-workbench .codicon.codicon-symbol-object{color:var(--vscode-symbolIcon-objectForeground)}.monaco-editor .codicon.codicon-symbol-operator,.monaco-workbench .codicon.codicon-symbol-operator{color:var(--vscode-symbolIcon-operatorForeground)}.monaco-editor .codicon.codicon-symbol-package,.monaco-workbench .codicon.codicon-symbol-package{color:var(--vscode-symbolIcon-packageForeground)}.monaco-editor .codicon.codicon-symbol-property,.monaco-workbench .codicon.codicon-symbol-property{color:var(--vscode-symbolIcon-propertyForeground)}.monaco-editor .codicon.codicon-symbol-reference,.monaco-workbench .codicon.codicon-symbol-reference{color:var(--vscode-symbolIcon-referenceForeground)}.monaco-editor .codicon.codicon-symbol-snippet,.monaco-workbench .codicon.codicon-symbol-snippet{color:var(--vscode-symbolIcon-snippetForeground)}.monaco-editor .codicon.codicon-symbol-string,.monaco-workbench .codicon.codicon-symbol-string{color:var(--vscode-symbolIcon-stringForeground)}.monaco-editor .codicon.codicon-symbol-struct,.monaco-workbench .codicon.codicon-symbol-struct{color:var(--vscode-symbolIcon-structForeground)}.monaco-editor .codicon.codicon-symbol-text,.monaco-workbench .codicon.codicon-symbol-text{color:var(--vscode-symbolIcon-textForeground)}.monaco-editor .codicon.codicon-symbol-type-parameter,.monaco-workbench .codicon.codicon-symbol-type-parameter{color:var(--vscode-symbolIcon-typeParameterForeground)}.monaco-editor .codicon.codicon-symbol-unit,.monaco-workbench .codicon.codicon-symbol-unit{color:var(--vscode-symbolIcon-unitForeground)}.monaco-editor .codicon.codicon-symbol-variable,.monaco-workbench .codicon.codicon-symbol-variable{color:var(--vscode-symbolIcon-variableForeground)}.editor-banner{background:var(--vscode-banner-background);box-sizing:border-box;cursor:default;width:100%;height:26px;font-size:12px;display:flex;overflow:visible}.editor-banner .icon-container{flex-shrink:0;align-items:center;padding:0 6px 0 10px;display:flex}.editor-banner .icon-container.custom-icon{background-position:50%;background-repeat:no-repeat;background-size:16px;width:16px;margin:0 6px 0 10px;padding:0}.editor-banner .message-container{text-overflow:ellipsis;white-space:nowrap;align-items:center;line-height:26px;display:flex;overflow:hidden}.editor-banner .message-container p{margin-block:0}.editor-banner .message-actions-container{flex-grow:1;flex-shrink:0;margin:0 4px;line-height:26px}.editor-banner .message-actions-container a.monaco-button{width:inherit;margin:2px 8px;padding:0 12px}.editor-banner .message-actions-container a{margin-left:12px;padding:3px;text-decoration:underline}.editor-banner .action-container{padding:0 10px 0 6px}.editor-banner{background-color:var(--vscode-banner-background)}.editor-banner,.editor-banner .action-container .codicon,.editor-banner .message-actions-container .monaco-link{color:var(--vscode-banner-foreground)}.editor-banner .icon-container .codicon{color:var(--vscode-banner-iconForeground)}.monaco-editor .unicode-highlight{background-color:var(--vscode-editorUnicodeHighlight-background);border:1px solid var(--vscode-editorUnicodeHighlight-border);box-sizing:border-box}.monaco-editor .focused .selectionHighlight{background-color:var(--vscode-editor-selectionHighlightBackground);border:1px solid var(--vscode-editor-selectionHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .focused .selectionHighlight,.monaco-editor.hc-light .focused .selectionHighlight{border-style:dotted}.monaco-editor .wordHighlight{background-color:var(--vscode-editor-wordHighlightBackground);border:1px solid var(--vscode-editor-wordHighlightBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlight,.monaco-editor.hc-light .wordHighlight{border-style:dotted}.monaco-editor .wordHighlightStrong{background-color:var(--vscode-editor-wordHighlightStrongBackground);border:1px solid var(--vscode-editor-wordHighlightStrongBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlightStrong,.monaco-editor.hc-light .wordHighlightStrong{border-style:dotted}.monaco-editor .wordHighlightText{background-color:var(--vscode-editor-wordHighlightTextBackground);border:1px solid var(--vscode-editor-wordHighlightTextBorder);box-sizing:border-box}.monaco-editor.hc-black .wordHighlightText,.monaco-editor.hc-light .wordHighlightText{border-style:dotted}.monaco-editor .zone-widget{z-index:10;position:absolute}.monaco-editor .zone-widget .zone-widget-container{border-top-style:solid;border-top-width:0;border-bottom-style:solid;border-bottom-width:0;position:relative}.monaco-editor .iPadShowKeyboard{resize:none;background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MyIgaGVpZ2h0PSIzNiIgZmlsbD0ibm9uZSI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjNDI0MjQyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzYgNC4wMUg0LjAwOFYzMi4wM2g0NC4wMjh6TTQuMDA4LjAwOEE0LjAwMyA0LjAwMyAwIDAgMCAuMDA1IDQuMDFWMzIuMDNhNC4wMDMgNC4wMDMgMCAwIDAgNC4wMDMgNC4wMDJoNDQuMDI4YTQuMDAzIDQuMDAzIDAgMCAwIDQuMDAzLTQuMDAyVjQuMDFBNC4wMDMgNC4wMDMgMCAwIDAgNDguMDM2LjAwOHpNOC4wMSA4LjAxM2g0LjAwM3Y0LjAwM0g4LjAxem0xMi4wMDggMGgtNC4wMDJ2NC4wMDNoNC4wMDJ6bTQuMDAzIDBoNC4wMDJ2NC4wMDNoLTQuMDAyem0xMi4wMDggMGgtNC4wMDN2NC4wMDNoNC4wMDN6bTQuMDAyIDBoNC4wMDN2NC4wMDNINDAuMDN6bS0yNC4wMTUgOC4wMDVIOC4wMXY0LjAwM2g4LjAwNnptNC4wMDIgMGg0LjAwM3Y0LjAwM2gtNC4wMDN6bTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM3ptMTIuMDA4IDB2NC4wMDNoLTguMDA1di00LjAwM3ptLTMyLjAyMSA4LjAwNUg4LjAxdjQuMDAzaDQuMDAzem00LjAwMyAwaDIwLjAxM3Y0LjAwM0gxNi4wMTZ6bTI4LjAxOCAwSDQwLjAzdjQuMDAzaDQuMDAzeiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGg1M3YzNkgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg==) 50% no-repeat;border:4px solid #f6f6f6;border-radius:4px;width:58px;min-width:0;height:36px;min-height:0;margin:0;padding:0;position:absolute;overflow:hidden}.monaco-editor.vs-dark .iPadShowKeyboard{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MyIgaGVpZ2h0PSIzNiIgZmlsbD0ibm9uZSI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjQzVDNUM1IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzYgNC4wMUg0LjAwOFYzMi4wM2g0NC4wMjh6TTQuMDA4LjAwOEE0LjAwMyA0LjAwMyAwIDAgMCAuMDA1IDQuMDFWMzIuMDNhNC4wMDMgNC4wMDMgMCAwIDAgNC4wMDMgNC4wMDJoNDQuMDI4YTQuMDAzIDQuMDAzIDAgMCAwIDQuMDAzLTQuMDAyVjQuMDFBNC4wMDMgNC4wMDMgMCAwIDAgNDguMDM2LjAwOHpNOC4wMSA4LjAxM2g0LjAwM3Y0LjAwM0g4LjAxem0xMi4wMDggMGgtNC4wMDJ2NC4wMDNoNC4wMDJ6bTQuMDAzIDBoNC4wMDJ2NC4wMDNoLTQuMDAyem0xMi4wMDggMGgtNC4wMDN2NC4wMDNoNC4wMDN6bTQuMDAyIDBoNC4wMDN2NC4wMDNINDAuMDN6bS0yNC4wMTUgOC4wMDVIOC4wMXY0LjAwM2g4LjAwNnptNC4wMDIgMGg0LjAwM3Y0LjAwM2gtNC4wMDN6bTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM3ptMTIuMDA4IDB2NC4wMDNoLTguMDA1di00LjAwM3ptLTMyLjAyMSA4LjAwNUg4LjAxdjQuMDAzaDQuMDAzem00LjAwMyAwaDIwLjAxM3Y0LjAwM0gxNi4wMTZ6bTI4LjAxOCAwSDQwLjAzdjQuMDAzaDQuMDAzeiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGg1M3YzNkgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg==) 50% no-repeat;border:4px solid #252526}.monaco-editor .tokens-inspect-widget{background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);color:var(--vscode-editorHoverWidget-foreground);-webkit-user-select:text;user-select:text;z-index:50;padding:10px}.monaco-editor.hc-black .tokens-inspect-widget,.monaco-editor.hc-light .tokens-inspect-widget{border-width:2px}.monaco-editor .tokens-inspect-widget .tokens-inspect-separator{background-color:var(--vscode-editorHoverWidget-border);border:0;height:1px}.monaco-editor .tokens-inspect-widget .tm-token{font-family:var(--monaco-monospace-font)}.monaco-editor .tokens-inspect-widget .tm-token-length{float:right;font-size:60%;font-weight:400}.monaco-editor .tokens-inspect-widget .tm-metadata-table{width:100%}.monaco-editor .tokens-inspect-widget .tm-metadata-value{font-family:var(--monaco-monospace-font);text-align:right}.monaco-editor .tokens-inspect-widget .tm-token-type{font-family:var(--monaco-monospace-font)}.quick-input-widget{font-size:13px}.quick-input-widget .monaco-highlighted-label .highlight{color:#0066bf}.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight{color:#9dddff}.vs-dark .quick-input-widget .monaco-highlighted-label .highlight{color:#0097fb}.hc-black .quick-input-widget .monaco-highlighted-label .highlight{color:#f38518}.hc-light .quick-input-widget .monaco-highlighted-label .highlight{color:#0f4a85}.monaco-keybinding>.monaco-keybinding-key{color:#555;background-color:#dedede66;border:1px solid #ccc6;border-bottom-color:#bababa66;box-shadow:inset 0 -1px #bababa66}.hc-black .monaco-keybinding>.monaco-keybinding-key{box-shadow:none;color:#fff;background-color:#0000;border:1px solid #6fc3df}.hc-light .monaco-keybinding>.monaco-keybinding-key{box-shadow:none;color:#292929;background-color:#0000;border:1px solid #0f4a85}.vs-dark .monaco-keybinding>.monaco-keybinding-key{color:#ccc;background-color:#8080802b;border:1px solid #3339;border-bottom-color:#4449;box-shadow:inset 0 -1px #4449}.monaco-editor{--monaco-monospace-font:\"SF Mono\",Monaco,Menlo,Consolas,\"Ubuntu Mono\",\"Liberation Mono\",\"DejaVu Sans Mono\",\"Courier New\",monospace;font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,system-ui,Ubuntu,Droid Sans,sans-serif}.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.hc-light .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-hover p{margin:0}.monaco-aria-container{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);width:1px;height:1px;margin:-1px;padding:0;top:0;overflow:hidden;position:absolute!important}.monaco-diff-editor .synthetic-focus,.monaco-diff-editor [tabindex=\"-1\"]:focus,.monaco-diff-editor [tabindex=\"0\"]:focus,.monaco-diff-editor button:focus,.monaco-diff-editor input[type=button]:focus,.monaco-diff-editor input[type=checkbox]:focus,.monaco-diff-editor input[type=search]:focus,.monaco-diff-editor input[type=text]:focus,.monaco-diff-editor select:focus,.monaco-diff-editor textarea:focus,.monaco-editor{opacity:1;outline-color:var(--vscode-focusBorder);outline-offset:-1px;outline-width:1px;outline-style:solid}.action-widget{background-color:var(--vscode-editorActionList-background);box-shadow:0 2px 8px var(--vscode-widget-shadow);color:var(--vscode-editorActionList-foreground);z-index:40;border-radius:5px;width:100%;min-width:160px;max-width:80vw;padding:4px;font-size:13px;display:block;border:1px solid var(--vscode-editorWidget-border)!important}.context-view-block{z-index:-1}.context-view-block,.context-view-pointerBlock{cursor:auto;width:100%;height:100%;position:fixed;top:0;left:0}.context-view-pointerBlock{z-index:2}.action-widget .monaco-list{-webkit-user-select:none;user-select:none;border:0!important}.action-widget .monaco-list:focus:before{outline:0!important}.action-widget .monaco-list .monaco-scrollable-element{overflow:visible}.action-widget .monaco-list .monaco-list-row{cursor:pointer;touch-action:none;white-space:nowrap;border-radius:4px;width:100%;padding:0 10px}.action-widget .monaco-list .monaco-list-row.action.focused:not(.option-disabled){color:var(--vscode-editorActionList-focusForeground);outline:1px solid var(--vscode-menu-selectionBorder,transparent);outline-offset:-1px;background-color:var(--vscode-editorActionList-focusBackground)!important}.action-widget .monaco-list-row.group-header{font-size:12px;font-weight:600;color:var(--vscode-descriptionForeground)!important}.action-widget .monaco-list-row.group-header:not(:first-of-type){margin-top:2px}.action-widget .monaco-list .group-header,.action-widget .monaco-list .option-disabled,.action-widget .monaco-list .option-disabled .focused,.action-widget .monaco-list .option-disabled .focused:before,.action-widget .monaco-list .option-disabled:before{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;cursor:default!important;background-color:#0000!important;outline:0 solid!important}.action-widget .monaco-list-row.action{align-items:center;gap:8px;display:flex}.action-widget .monaco-list-row.action.option-disabled,.action-widget .monaco-list-row.action.option-disabled .codicon,.action-widget .monaco-list:focus .monaco-list-row.focused.action.option-disabled,.action-widget .monaco-list:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused).option-disabled{color:var(--vscode-disabledForeground)}.action-widget .monaco-list-row.action:not(.option-disabled) .codicon{color:inherit}.action-widget .monaco-list-row.action .title{text-overflow:ellipsis;flex:1;overflow:hidden}.action-widget .monaco-list-row.action .monaco-keybinding>.monaco-keybinding-key{background-color:var(--vscode-keybindingLabel-background);border-color:var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow);color:var(--vscode-keybindingLabel-foreground);border-style:solid;border-width:1px;border-radius:3px}.action-widget .action-widget-action-bar{background-color:var(--vscode-editorActionList-background);border-top:1px solid var(--vscode-editorHoverWidget-border);margin-top:2px}.action-widget .action-widget-action-bar:before{content:\"\";width:100%;display:block}.action-widget .action-widget-action-bar .actions-container{padding:3px 8px 0}.action-widget-action-bar .action-label{color:var(--vscode-textLink-activeForeground);pointer-events:all;padding:0;font-size:12px;line-height:22px}.action-widget-action-bar .action-item{pointer-events:none;margin-right:16px}.action-widget-action-bar .action-label:hover{background-color:#0000!important}.monaco-action-bar .actions-container.highlight-toggled .action-label.checked{background:var(--vscode-actionBar-toggledBackground)!important}.monaco-action-bar .action-item.menu-entry .action-label.icon{background-position:50%;background-repeat:no-repeat;background-size:16px;width:16px;height:16px}.monaco-action-bar .action-item.menu-entry.text-only .action-label{color:var(--vscode-descriptionForeground);border-radius:2px;overflow:hidden}.monaco-action-bar .action-item.menu-entry.text-only.use-comma:not(:last-of-type) .action-label:after{content:\", \"}.monaco-action-bar .action-item.menu-entry.text-only+.action-item:not(.text-only)>.monaco-dropdown .action-label{color:var(--vscode-descriptionForeground)}.monaco-dropdown-with-default{border-radius:5px;flex-direction:row;display:flex!important}.monaco-dropdown-with-default>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-default>.action-container.menu-entry>.action-label.icon{background-position:50%;background-repeat:no-repeat;background-size:16px;width:16px;height:16px}.monaco-dropdown-with-default:hover{background-color:var(--vscode-toolbar-hoverBackground)}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{margin-left:-3px;padding-left:0;padding-right:0;font-size:12px;line-height:16px}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{background-position:50%;background-repeat:no-repeat;background-size:16px;display:block}.monaco-link{color:var(--vscode-textLink-foreground)}.monaco-link:hover{color:var(--vscode-textLink-activeForeground)}.quick-input-widget{z-index:2550;-webkit-app-region:no-drag;border-radius:6px;width:600px;margin-left:-300px;position:absolute;left:50%}.quick-input-titlebar{border-top-left-radius:5px;border-top-right-radius:5px;align-items:center;display:flex}.quick-input-left-action-bar{flex:1;margin-left:4px;display:flex}.quick-input-inline-action-bar{margin:2px 0 0 5px}.quick-input-title{text-align:center;text-overflow:ellipsis;padding:3px 0;overflow:hidden}.quick-input-right-action-bar{flex:1;margin-right:4px;display:flex}.quick-input-right-action-bar>.actions-container{justify-content:flex-end}.quick-input-titlebar .monaco-action-bar .action-label.codicon{background-position:50%;background-repeat:no-repeat;padding:2px}.quick-input-description{margin:6px 6px 6px 11px}.quick-input-header .quick-input-description{flex:1;margin:4px 2px}.quick-input-header{padding:8px 6px 2px;display:flex}.quick-input-widget.hidden-input .quick-input-header{margin-bottom:0;padding:0}.quick-input-and-message{flex-direction:column;flex-grow:1;min-width:0;display:flex;position:relative}.quick-input-check-all{align-self:center;margin:0}.quick-input-filter{flex-grow:1;display:flex;position:relative}.quick-input-box{flex-grow:1}.quick-input-widget.show-checkboxes .quick-input-box,.quick-input-widget.show-checkboxes .quick-input-message{margin-left:5px}.quick-input-visible-count{position:absolute;left:-10000px}.quick-input-count{align-self:center;align-items:center;display:flex;position:absolute;right:4px}.quick-input-count .monaco-count-badge{vertical-align:middle;border-radius:2px;min-height:auto;padding:2px 4px;line-height:normal}.quick-input-action{margin-left:6px}.quick-input-action .monaco-text-button{align-items:center;height:25px;padding:0 6px;font-size:11px;display:flex}.quick-input-message{overflow-wrap:break-word;margin-top:-1px;padding:5px}.quick-input-message>.codicon{vertical-align:text-bottom;margin:0 .2em}.quick-input-message a{color:inherit}.quick-input-progress.monaco-progress-container{position:relative}.quick-input-list{line-height:22px}.quick-input-widget.hidden-input .quick-input-list{margin-top:4px;padding-bottom:4px}.quick-input-list .monaco-list{max-height:440px;padding-bottom:5px;overflow:hidden}.quick-input-list .monaco-scrollable-element{padding:0 5px}.quick-input-list .quick-input-list-entry{box-sizing:border-box;padding:0 6px;display:flex;overflow:hidden}.quick-input-list .quick-input-list-entry.quick-input-list-separator-border{border-top-style:solid;border-top-width:1px}.quick-input-list .monaco-list-row{border-radius:3px}.quick-input-list .monaco-list-row[data-index=\"0\"] .quick-input-list-entry.quick-input-list-separator-border{border-top-style:none}.quick-input-list .quick-input-list-label{flex:1;height:100%;display:flex;overflow:hidden}.quick-input-list .quick-input-list-checkbox{align-self:center;margin:0}.quick-input-list .quick-input-list-icon{background-position:0;background-repeat:no-repeat;background-size:16px;justify-content:center;align-items:center;width:16px;height:22px;padding-right:6px;display:flex}.quick-input-list .quick-input-list-rows{text-overflow:ellipsis;flex-direction:column;flex:1;height:100%;margin-left:5px;display:flex;overflow:hidden}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows{margin-left:10px}.quick-input-widget .quick-input-list .quick-input-list-checkbox{display:none}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox{display:inline}.quick-input-list .quick-input-list-rows>.quick-input-list-row{align-items:center;display:flex}.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label,.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label .monaco-icon-label-container>.monaco-icon-name-container{flex:1}.quick-input-list .quick-input-list-rows>.quick-input-list-row .codicon[class*=codicon-]{vertical-align:text-bottom}.quick-input-list .quick-input-list-rows .monaco-highlighted-label>span{opacity:1}.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding{margin-right:8px}.quick-input-list .quick-input-list-label-meta{opacity:.7;text-overflow:ellipsis;line-height:normal;overflow:hidden}.quick-input-list .monaco-list .monaco-list-row .monaco-highlighted-label .highlight{background-color:unset;font-weight:700;color:var(--vscode-list-highlightForeground)!important}.quick-input-list .monaco-list .monaco-list-row.focused .monaco-highlighted-label .highlight{color:var(--vscode-list-focusHighlightForeground)!important}.quick-input-list .quick-input-list-entry .quick-input-list-separator{margin-right:4px}.quick-input-list .quick-input-list-entry-action-bar{flex:0;display:flex;overflow:visible}.quick-input-list .quick-input-list-entry-action-bar .action-label{display:none}.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon{margin-right:4px;padding:2px}.quick-input-list .quick-input-list-entry-action-bar{margin-top:1px;margin-right:4px}.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .monaco-list-row.passive-focused .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,.quick-input-list .quick-input-list-entry.focus-inside .quick-input-list-entry-action-bar .action-label,.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label{display:flex}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator{color:inherit}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key{background:0 0}.quick-input-list .quick-input-list-separator-as-item{padding:4px 6px;font-size:12px}.quick-input-list .quick-input-list-separator-as-item .label-name{font-weight:600}.quick-input-list .quick-input-list-separator-as-item .label-description{opacity:1!important}.quick-input-list .monaco-tree-sticky-row .quick-input-list-entry.quick-input-list-separator-as-item.quick-input-list-separator-border{border-top-style:none}.quick-input-list .monaco-tree-sticky-row{padding:0 5px}.quick-input-list .monaco-tl-twistie{display:none!important}.extension-editor .codicon.codicon-error,.extensions-viewlet>.extensions .codicon.codicon-error,.markers-panel .marker-icon .codicon.codicon-error,.markers-panel .marker-icon.error,.monaco-editor .zone-widget .codicon.codicon-error,.preferences-editor .codicon.codicon-error,.text-search-provider-messages .providerMessage .codicon.codicon-error{color:var(--vscode-problemsErrorIcon-foreground)}.extension-editor .codicon.codicon-warning,.extensions-viewlet>.extensions .codicon.codicon-warning,.markers-panel .marker-icon .codicon.codicon-warning,.markers-panel .marker-icon.warning,.monaco-editor .zone-widget .codicon.codicon-warning,.preferences-editor .codicon.codicon-warning,.text-search-provider-messages .providerMessage .codicon.codicon-warning{color:var(--vscode-problemsWarningIcon-foreground)}.extension-editor .codicon.codicon-info,.extensions-viewlet>.extensions .codicon.codicon-info,.markers-panel .marker-icon .codicon.codicon-info,.markers-panel .marker-icon.info,.monaco-editor .zone-widget .codicon.codicon-info,.preferences-editor .codicon.codicon-info,.text-search-provider-messages .providerMessage .codicon.codicon-info{color:var(--vscode-problemsInfoIcon-foreground)}", byteToHex = [];
for (let e = 0; e < 256; ++e) byteToHex.push((e + 256).toString(16).slice(1));
function unsafeStringify(e, t = 0) {
	return (byteToHex[e[t + 0]] + byteToHex[e[t + 1]] + byteToHex[e[t + 2]] + byteToHex[e[t + 3]] + "-" + byteToHex[e[t + 4]] + byteToHex[e[t + 5]] + "-" + byteToHex[e[t + 6]] + byteToHex[e[t + 7]] + "-" + byteToHex[e[t + 8]] + byteToHex[e[t + 9]] + "-" + byteToHex[e[t + 10]] + byteToHex[e[t + 11]] + byteToHex[e[t + 12]] + byteToHex[e[t + 13]] + byteToHex[e[t + 14]] + byteToHex[e[t + 15]]).toLowerCase();
}
var getRandomValues, rnds8 = new Uint8Array(16);
function rng() {
	if (!getRandomValues) {
		if (typeof crypto > "u" || !crypto.getRandomValues) throw Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
		getRandomValues = crypto.getRandomValues.bind(crypto);
	}
	return getRandomValues(rnds8);
}
var native_default = { randomUUID: typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto) };
function _v4(e, t, n) {
	e ||= {};
	let i = e.random ?? e.rng?.() ?? rng();
	if (i.length < 16) throw Error("Random bytes length must be >= 16");
	if (i[6] = i[6] & 15 | 64, i[8] = i[8] & 63 | 128, t) {
		if (n ||= 0, n < 0 || n + 16 > t.length) throw RangeError(`UUID byte range ${n}:${n + 15} is out of buffer bounds`);
		for (let e = 0; e < 16; ++e) t[n + e] = i[e];
		return t;
	}
	return unsafeStringify(i);
}
function v4(e, t, n) {
	return native_default.randomUUID && !t && !e ? native_default.randomUUID() : _v4(e, t, n);
}
var v4_default = v4;
const useCollections = (e) => {
	let [t, n] = useState(e.defaultCollections ?? []), i = useCallback((i) => {
		let a = {
			...i,
			id: v4_default(),
			createdAt: (/* @__PURE__ */ new Date()).toISOString(),
			operations: []
		}, o = [...t, a];
		n(o), e.onCollectionsChange?.(o), e.onCollectionCreate?.(a);
	}, [t, e]), a = useCallback((i, a) => {
		let o = {
			...a,
			createdAt: (/* @__PURE__ */ new Date()).toISOString()
		}, s = t.map((e) => e.id === i ? {
			...e,
			operations: [...e.operations, o]
		} : e);
		n(s), e.onCollectionsChange?.(s);
		let c = s.find((e) => e.id === i);
		c && (e.onCollectionUpdate?.(c), e.onCollectionOperationCreate?.(c, o));
	}, [t, e]), o = useCallback((i) => {
		let a = t.find((e) => e.id === i), o = t.filter((e) => e.id !== i);
		n(o), e.onCollectionsChange?.(o), a && e.onCollectionDelete?.(a);
	}, [t, e]), s = useCallback((i, a) => {
		let o, s = t.map((e) => e.id === i ? {
			...e,
			operations: e.operations.filter((e) => e.id === a ? (o = e, !1) : !0)
		} : e);
		n(s), e.onCollectionsChange?.(s);
		let c = s.find((e) => e.id === i);
		c && (e.onCollectionUpdate?.(c), o && e.onCollectionOperationDelete?.(c, o));
	}, [t, e]), c = useCallback((i, a) => {
		let o = t.map((e) => e.id === i ? {
			...e,
			...a
		} : e);
		n(o), e.onCollectionsChange?.(o);
		let s = o.find((e) => e.id === i);
		s && e.onCollectionUpdate?.(s);
	}, [t, e]), d = useCallback((i, a, o) => {
		let s, c = t.map((e) => e.id === i ? {
			...e,
			operations: e.operations.map((e) => e.id === a ? (s = {
				...e,
				...o
			}, s) : e)
		} : e);
		n(c), e.onCollectionsChange?.(c);
		let d = c.find((e) => e.id === i);
		d && (e.onCollectionUpdate?.(d), s && e.onCollectionOperationUpdate?.(d, s));
	}, [t, e]);
	return {
		collections: t,
		addCollection: i,
		addOperationToCollection: a,
		deleteCollection: o,
		deleteOperationFromCollection: s,
		updateCollection: c,
		updateOperationInCollection: d
	};
};
function getIntrospectionQuery(e) {
	let t = {
		descriptions: !0,
		specifiedByUrl: !1,
		directiveIsRepeatable: !1,
		schemaDescription: !1,
		inputValueDeprecation: !1,
		oneOf: !1,
		...e
	}, n = t.descriptions ? "description" : "", i = t.specifiedByUrl ? "specifiedByURL" : "", a = t.directiveIsRepeatable ? "isRepeatable" : "", o = t.schemaDescription ? n : "";
	function s(e) {
		return t.inputValueDeprecation ? e : "";
	}
	let c = t.oneOf ? "isOneOf" : "";
	return `
    query IntrospectionQuery {
      __schema {
        ${o}
        queryType { name kind }
        mutationType { name kind }
        subscriptionType { name kind }
        types {
          ...FullType
        }
        directives {
          name
          ${n}
          ${a}
          locations
          args${s("(includeDeprecated: true)")} {
            ...InputValue
          }
        }
      }
    }

    fragment FullType on __Type {
      kind
      name
      ${n}
      ${i}
      ${c}
      fields(includeDeprecated: true) {
        name
        ${n}
        args${s("(includeDeprecated: true)")} {
          ...InputValue
        }
        type {
          ...TypeRef
        }
        isDeprecated
        deprecationReason
      }
      inputFields${s("(includeDeprecated: true)")} {
        ...InputValue
      }
      interfaces {
        ...TypeRef
      }
      enumValues(includeDeprecated: true) {
        name
        ${n}
        isDeprecated
        deprecationReason
      }
      possibleTypes {
        ...TypeRef
      }
    }

    fragment InputValue on __InputValue {
      name
      ${n}
      type { ...TypeRef }
      defaultValue
      ${s("isDeprecated")}
      ${s("deprecationReason")}
    }

    fragment TypeRef on __Type {
      kind
      name
      ofType {
        kind
        name
        ofType {
          kind
          name
          ofType {
            kind
            name
            ofType {
              kind
              name
              ofType {
                kind
                name
                ofType {
                  kind
                  name
                  ofType {
                    kind
                    name
                    ofType {
                      kind
                      name
                      ofType {
                        kind
                        name
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  `;
}
function buildClientSchema(e, t) {
	isObjectLike(e) && isObjectLike(e.__schema) || devAssert(!1, `Invalid or incomplete introspection result. Ensure that you are passing "data" property of introspection response and no "errors" was returned alongside: ${inspect(e)}.`);
	let n = e.__schema, i = keyValMap(n.types, (e) => e.name, (e) => b(e));
	for (let e of [...specifiedScalarTypes, ...introspectionTypes]) i[e.name] && (i[e.name] = e);
	let a = n.queryType ? g(n.queryType) : null, o = n.mutationType ? g(n.mutationType) : null, s = n.subscriptionType ? g(n.subscriptionType) : null, c = n.directives ? n.directives.map(oy) : [];
	return new GraphQLSchema({
		description: n.description,
		query: a,
		mutation: o,
		subscription: s,
		types: Object.values(i),
		directives: c,
		assumeValid: t?.assumeValid
	});
	function d(e) {
		if (e.kind === TypeKind.LIST) {
			let t = e.ofType;
			if (!t) throw Error("Decorated type deeper than introspection query.");
			return new GraphQLList(d(t));
		}
		if (e.kind === TypeKind.NON_NULL) {
			let t = e.ofType;
			if (!t) throw Error("Decorated type deeper than introspection query.");
			let n = d(t);
			return new GraphQLNonNull(assertNullableType(n));
		}
		return f(e);
	}
	function f(e) {
		let t = e.name;
		if (!t) throw Error(`Unknown type reference: ${inspect(e)}.`);
		let n = i[t];
		if (!n) throw Error(`Invalid or incomplete schema, unknown type: ${t}. Ensure that a full introspection query is used in order to build a client schema.`);
		return n;
	}
	function g(e) {
		return assertObjectType(f(e));
	}
	function y(e) {
		return assertInterfaceType(f(e));
	}
	function b(e) {
		if (e != null && e.name != null && e.kind != null) switch (e.kind) {
			case TypeKind.SCALAR: return x(e);
			case TypeKind.OBJECT: return C(e);
			case TypeKind.INTERFACE: return w(e);
			case TypeKind.UNION: return E(e);
			case TypeKind.ENUM: return zv(e);
			case TypeKind.INPUT_OBJECT: return Wv(e);
		}
		let t = inspect(e);
		throw Error(`Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${t}.`);
	}
	function x(e) {
		return new GraphQLScalarType({
			name: e.name,
			description: e.description,
			specifiedByURL: e.specifiedByURL
		});
	}
	function S(e) {
		if (e.interfaces === null && e.kind === TypeKind.INTERFACE) return [];
		if (!e.interfaces) {
			let t = inspect(e);
			throw Error(`Introspection result missing interfaces: ${t}.`);
		}
		return e.interfaces.map(y);
	}
	function C(e) {
		return new GraphQLObjectType({
			name: e.name,
			description: e.description,
			interfaces: () => S(e),
			fields: () => Gv(e)
		});
	}
	function w(e) {
		return new GraphQLInterfaceType({
			name: e.name,
			description: e.description,
			interfaces: () => S(e),
			fields: () => Gv(e)
		});
	}
	function E(e) {
		if (!e.possibleTypes) {
			let t = inspect(e);
			throw Error(`Introspection result missing possibleTypes: ${t}.`);
		}
		return new GraphQLUnionType({
			name: e.name,
			description: e.description,
			types: () => e.possibleTypes.map(g)
		});
	}
	function zv(e) {
		if (!e.enumValues) {
			let t = inspect(e);
			throw Error(`Introspection result missing enumValues: ${t}.`);
		}
		return new GraphQLEnumType({
			name: e.name,
			description: e.description,
			values: keyValMap(e.enumValues, (e) => e.name, (e) => ({
				description: e.description,
				deprecationReason: e.deprecationReason
			}))
		});
	}
	function Wv(e) {
		if (!e.inputFields) {
			let t = inspect(e);
			throw Error(`Introspection result missing inputFields: ${t}.`);
		}
		return new GraphQLInputObjectType({
			name: e.name,
			description: e.description,
			fields: () => Yv(e.inputFields),
			isOneOf: e.isOneOf
		});
	}
	function Gv(e) {
		if (!e.fields) throw Error(`Introspection result missing fields: ${inspect(e)}.`);
		return keyValMap(e.fields, (e) => e.name, Kv);
	}
	function Kv(e) {
		let t = d(e.type);
		if (!isOutputType(t)) {
			let e = inspect(t);
			throw Error(`Introspection must provide output type for fields, but received: ${e}.`);
		}
		if (!e.args) {
			let t = inspect(e);
			throw Error(`Introspection result missing field args: ${t}.`);
		}
		return {
			description: e.description,
			deprecationReason: e.deprecationReason,
			type: t,
			args: Yv(e.args)
		};
	}
	function Yv(e) {
		return keyValMap(e, (e) => e.name, $v);
	}
	function $v(e) {
		let t = d(e.type);
		if (!isInputType(t)) {
			let e = inspect(t);
			throw Error(`Introspection must provide input type for arguments, but received: ${e}.`);
		}
		let n = e.defaultValue == null ? void 0 : valueFromAST(parseValue(e.defaultValue), t);
		return {
			description: e.description,
			type: t,
			defaultValue: n,
			deprecationReason: e.deprecationReason
		};
	}
	function oy(e) {
		if (!e.args) {
			let t = inspect(e);
			throw Error(`Introspection result missing directive args: ${t}.`);
		}
		if (!e.locations) {
			let t = inspect(e);
			throw Error(`Introspection result missing directive locations: ${t}.`);
		}
		return new GraphQLDirective({
			name: e.name,
			description: e.description,
			isRepeatable: e.isRepeatable,
			locations: e.locations.slice(),
			args: Yv(e.args)
		});
	}
}
function __insertCSS(e) {
	if (!e || typeof document > "u") return;
	let t = document.head || document.getElementsByTagName("head")[0], n = document.createElement("style");
	n.type = "text/css", t.appendChild(n), n.styleSheet ? n.styleSheet.cssText = e : n.appendChild(document.createTextNode(e));
}
var getAsset = (e) => {
	switch (e) {
		case "success": return SuccessIcon;
		case "info": return InfoIcon$1;
		case "warning": return WarningIcon;
		case "error": return ErrorIcon;
		default: return null;
	}
}, bars = Array(12).fill(0), Loader = ({ visible: e, className: t }) => /* @__PURE__ */ React.createElement("div", {
	className: ["sonner-loading-wrapper", t].filter(Boolean).join(" "),
	"data-visible": e
}, /* @__PURE__ */ React.createElement("div", { className: "sonner-spinner" }, bars.map((e, t) => /* @__PURE__ */ React.createElement("div", {
	className: "sonner-loading-bar",
	key: `spinner-bar-${t}`
})))), SuccessIcon = /* @__PURE__ */ React.createElement("svg", {
	xmlns: "http://www.w3.org/2000/svg",
	viewBox: "0 0 20 20",
	fill: "currentColor",
	height: "20",
	width: "20"
}, /* @__PURE__ */ React.createElement("path", {
	fillRule: "evenodd",
	d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",
	clipRule: "evenodd"
})), WarningIcon = /* @__PURE__ */ React.createElement("svg", {
	xmlns: "http://www.w3.org/2000/svg",
	viewBox: "0 0 24 24",
	fill: "currentColor",
	height: "20",
	width: "20"
}, /* @__PURE__ */ React.createElement("path", {
	fillRule: "evenodd",
	d: "M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",
	clipRule: "evenodd"
})), InfoIcon$1 = /* @__PURE__ */ React.createElement("svg", {
	xmlns: "http://www.w3.org/2000/svg",
	viewBox: "0 0 20 20",
	fill: "currentColor",
	height: "20",
	width: "20"
}, /* @__PURE__ */ React.createElement("path", {
	fillRule: "evenodd",
	d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",
	clipRule: "evenodd"
})), ErrorIcon = /* @__PURE__ */ React.createElement("svg", {
	xmlns: "http://www.w3.org/2000/svg",
	viewBox: "0 0 20 20",
	fill: "currentColor",
	height: "20",
	width: "20"
}, /* @__PURE__ */ React.createElement("path", {
	fillRule: "evenodd",
	d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",
	clipRule: "evenodd"
})), CloseIcon = /* @__PURE__ */ React.createElement("svg", {
	xmlns: "http://www.w3.org/2000/svg",
	width: "12",
	height: "12",
	viewBox: "0 0 24 24",
	fill: "none",
	stroke: "currentColor",
	strokeWidth: "1.5",
	strokeLinecap: "round",
	strokeLinejoin: "round"
}, /* @__PURE__ */ React.createElement("line", {
	x1: "18",
	y1: "6",
	x2: "6",
	y2: "18"
}), /* @__PURE__ */ React.createElement("line", {
	x1: "6",
	y1: "6",
	x2: "18",
	y2: "18"
})), useIsDocumentHidden = () => {
	let [e, t] = React.useState(document.hidden);
	return React.useEffect(() => {
		let e = () => {
			t(document.hidden);
		};
		return document.addEventListener("visibilitychange", e), () => window.removeEventListener("visibilitychange", e);
	}, []), e;
}, toastsCounter = 1, ToastState = new class {
	constructor() {
		this.subscribe = (e) => (this.subscribers.push(e), () => {
			let t = this.subscribers.indexOf(e);
			this.subscribers.splice(t, 1);
		}), this.publish = (e) => {
			this.subscribers.forEach((t) => t(e));
		}, this.addToast = (e) => {
			this.publish(e), this.toasts = [...this.toasts, e];
		}, this.create = (e) => {
			let { message: t,...n } = e, i = typeof e?.id == "number" || e.id?.length > 0 ? e.id : toastsCounter++, a = this.toasts.find((e) => e.id === i), o = e.dismissible === void 0 ? !0 : e.dismissible;
			return this.dismissedToasts.has(i) && this.dismissedToasts.delete(i), a ? this.toasts = this.toasts.map((n) => n.id === i ? (this.publish({
				...n,
				...e,
				id: i,
				title: t
			}), {
				...n,
				...e,
				id: i,
				dismissible: o,
				title: t
			}) : n) : this.addToast({
				title: t,
				...n,
				dismissible: o,
				id: i
			}), i;
		}, this.dismiss = (e) => (e ? (this.dismissedToasts.add(e), requestAnimationFrame(() => this.subscribers.forEach((t) => t({
			id: e,
			dismiss: !0
		})))) : this.toasts.forEach((e) => {
			this.subscribers.forEach((t) => t({
				id: e.id,
				dismiss: !0
			}));
		}), e), this.message = (e, t) => this.create({
			...t,
			message: e
		}), this.error = (e, t) => this.create({
			...t,
			message: e,
			type: "error"
		}), this.success = (e, t) => this.create({
			...t,
			type: "success",
			message: e
		}), this.info = (e, t) => this.create({
			...t,
			type: "info",
			message: e
		}), this.warning = (e, t) => this.create({
			...t,
			type: "warning",
			message: e
		}), this.loading = (e, t) => this.create({
			...t,
			type: "loading",
			message: e
		}), this.promise = (e, t) => {
			if (!t) return;
			let n;
			t.loading !== void 0 && (n = this.create({
				...t,
				promise: e,
				type: "loading",
				message: t.loading,
				description: typeof t.description == "function" ? void 0 : t.description
			}));
			let i = Promise.resolve(e instanceof Function ? e() : e), a = n !== void 0, o, s = i.then(async (e) => {
				if (o = ["resolve", e], React.isValidElement(e)) a = !1, this.create({
					id: n,
					type: "default",
					message: e
				});
				else if (isHttpResponse(e) && !e.ok) {
					a = !1;
					let i = typeof t.error == "function" ? await t.error(`HTTP error! status: ${e.status}`) : t.error, o = typeof t.description == "function" ? await t.description(`HTTP error! status: ${e.status}`) : t.description, s = typeof i == "object" && !React.isValidElement(i) ? i : { message: i };
					this.create({
						id: n,
						type: "error",
						description: o,
						...s
					});
				} else if (e instanceof Error) {
					a = !1;
					let i = typeof t.error == "function" ? await t.error(e) : t.error, o = typeof t.description == "function" ? await t.description(e) : t.description, s = typeof i == "object" && !React.isValidElement(i) ? i : { message: i };
					this.create({
						id: n,
						type: "error",
						description: o,
						...s
					});
				} else if (t.success !== void 0) {
					a = !1;
					let i = typeof t.success == "function" ? await t.success(e) : t.success, o = typeof t.description == "function" ? await t.description(e) : t.description, s = typeof i == "object" && !React.isValidElement(i) ? i : { message: i };
					this.create({
						id: n,
						type: "success",
						description: o,
						...s
					});
				}
			}).catch(async (e) => {
				if (o = ["reject", e], t.error !== void 0) {
					a = !1;
					let i = typeof t.error == "function" ? await t.error(e) : t.error, o = typeof t.description == "function" ? await t.description(e) : t.description, s = typeof i == "object" && !React.isValidElement(i) ? i : { message: i };
					this.create({
						id: n,
						type: "error",
						description: o,
						...s
					});
				}
			}).finally(() => {
				a && (this.dismiss(n), n = void 0), t.finally == null || t.finally.call(t);
			}), c = () => new Promise((e, t) => s.then(() => o[0] === "reject" ? t(o[1]) : e(o[1])).catch(t));
			return typeof n != "string" && typeof n != "number" ? { unwrap: c } : Object.assign(n, { unwrap: c });
		}, this.custom = (e, t) => {
			let n = t?.id || toastsCounter++;
			return this.create({
				jsx: e(n),
				id: n,
				...t
			}), n;
		}, this.getActiveToasts = () => this.toasts.filter((e) => !this.dismissedToasts.has(e.id)), this.subscribers = [], this.toasts = [], this.dismissedToasts = /* @__PURE__ */ new Set();
	}
}(), toastFunction = (e, t) => {
	let n = t?.id || toastsCounter++;
	return ToastState.addToast({
		title: e,
		...t,
		id: n
	}), n;
}, isHttpResponse = (e) => e && typeof e == "object" && "ok" in e && typeof e.ok == "boolean" && "status" in e && typeof e.status == "number", basicToast = toastFunction, toast = Object.assign(basicToast, {
	success: ToastState.success,
	info: ToastState.info,
	warning: ToastState.warning,
	error: ToastState.error,
	custom: ToastState.custom,
	message: ToastState.message,
	promise: ToastState.promise,
	dismiss: ToastState.dismiss,
	loading: ToastState.loading
}, {
	getHistory: () => ToastState.toasts,
	getToasts: () => ToastState.getActiveToasts()
});
__insertCSS("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");
function isAction(e) {
	return e.label !== void 0;
}
var VISIBLE_TOASTS_AMOUNT = 3, VIEWPORT_OFFSET = "24px", MOBILE_VIEWPORT_OFFSET = "16px", TOAST_LIFETIME = 4e3, TOAST_WIDTH = 356, GAP = 14, SWIPE_THRESHOLD = 45, TIME_BEFORE_UNMOUNT = 200;
function cn$1(...e) {
	return e.filter(Boolean).join(" ");
}
function getDefaultSwipeDirections(e) {
	let [t, n] = e.split("-"), i = [];
	return t && i.push(t), n && i.push(n), i;
}
var Toast = (e) => {
	let { invert: t, toast: n, unstyled: i, interacting: a, setHeights: o, visibleToasts: s, heights: c, index: d, toasts: f, expanded: g, removeToast: y, defaultRichColors: b, closeButton: x, style: S, cancelButtonStyle: C, actionButtonStyle: w, className: E = "", descriptionClassName: O = "", duration: A, position: j, gap: M, expandByDefault: F, classNames: I, icons: R, closeButtonAriaLabel: zv = "Close toast" } = e, [V, Bv] = React.useState(null), [Vv, Hv] = React.useState(null), [Uv, Wv] = React.useState(!1), [Gv, Kv] = React.useState(!1), [q, qv] = React.useState(!1), [Jv, Yv] = React.useState(!1), [Xv, Zv] = React.useState(!1), [Qv, $v] = React.useState(0), [ey, ty] = React.useState(0), ny = React.useRef(n.duration || A || TOAST_LIFETIME), ry = React.useRef(null), iy = React.useRef(null), ay = d === 0, oy = d + 1 <= s, sy = n.type, ly = n.dismissible !== !1, uy = n.className || "", dy = n.descriptionClassName || "", fy = React.useMemo(() => c.findIndex((e) => e.toastId === n.id) || 0, [c, n.id]), py = React.useMemo(() => n.closeButton ?? x, [n.closeButton, x]), my = React.useMemo(() => n.duration || A || TOAST_LIFETIME, [n.duration, A]), hy = React.useRef(0), gy = React.useRef(0), _y = React.useRef(0), vy = React.useRef(null), [yy, by] = j.split("-"), xy = React.useMemo(() => c.reduce((e, t, n) => n >= fy ? e : e + t.height, 0), [c, fy]), Sy = useIsDocumentHidden(), Cy = n.invert || t, wy = sy === "loading";
	gy.current = React.useMemo(() => fy * M + xy, [fy, xy]), React.useEffect(() => {
		ny.current = my;
	}, [my]), React.useEffect(() => {
		Wv(!0);
	}, []), React.useEffect(() => {
		let e = iy.current;
		if (e) {
			let t = e.getBoundingClientRect().height;
			return ty(t), o((e) => [{
				toastId: n.id,
				height: t,
				position: n.position
			}, ...e]), () => o((e) => e.filter((e) => e.toastId !== n.id));
		}
	}, [o, n.id]), React.useLayoutEffect(() => {
		if (!Uv) return;
		let e = iy.current, t = e.style.height;
		e.style.height = "auto";
		let i = e.getBoundingClientRect().height;
		e.style.height = t, ty(i), o((e) => e.find((e) => e.toastId === n.id) ? e.map((e) => e.toastId === n.id ? {
			...e,
			height: i
		} : e) : [{
			toastId: n.id,
			height: i,
			position: n.position
		}, ...e]);
	}, [
		Uv,
		n.title,
		n.description,
		o,
		n.id,
		n.jsx,
		n.action,
		n.cancel
	]);
	let Ty = React.useCallback(() => {
		Kv(!0), $v(gy.current), o((e) => e.filter((e) => e.toastId !== n.id)), setTimeout(() => {
			y(n);
		}, TIME_BEFORE_UNMOUNT);
	}, [
		n,
		y,
		o,
		gy
	]);
	React.useEffect(() => {
		if (n.promise && sy === "loading" || n.duration === Infinity || n.type === "loading") return;
		let e;
		return g || a || Sy ? (() => {
			if (_y.current < hy.current) {
				let e = (/* @__PURE__ */ new Date()).getTime() - hy.current;
				ny.current -= e;
			}
			_y.current = (/* @__PURE__ */ new Date()).getTime();
		})() : ny.current !== Infinity && (hy.current = (/* @__PURE__ */ new Date()).getTime(), e = setTimeout(() => {
			n.onAutoClose == null || n.onAutoClose.call(n, n), Ty();
		}, ny.current)), () => clearTimeout(e);
	}, [
		g,
		a,
		n,
		sy,
		Sy,
		Ty
	]), React.useEffect(() => {
		n.delete && (Ty(), n.onDismiss == null || n.onDismiss.call(n, n));
	}, [Ty, n.delete]);
	function Ey() {
		return R?.loading ? /* @__PURE__ */ React.createElement("div", {
			className: cn$1(I?.loader, n?.classNames?.loader, "sonner-loader"),
			"data-visible": sy === "loading"
		}, R.loading) : /* @__PURE__ */ React.createElement(Loader, {
			className: cn$1(I?.loader, n?.classNames?.loader),
			visible: sy === "loading"
		});
	}
	let Dy = n.icon || R?.[sy] || getAsset(sy);
	return /* @__PURE__ */ React.createElement("li", {
		tabIndex: 0,
		ref: iy,
		className: cn$1(E, uy, I?.toast, n?.classNames?.toast, I?.default, I?.[sy], n?.classNames?.[sy]),
		"data-sonner-toast": "",
		"data-rich-colors": n.richColors ?? b,
		"data-styled": !(n.jsx || n.unstyled || i),
		"data-mounted": Uv,
		"data-promise": !!n.promise,
		"data-swiped": Xv,
		"data-removed": Gv,
		"data-visible": oy,
		"data-y-position": yy,
		"data-x-position": by,
		"data-index": d,
		"data-front": ay,
		"data-swiping": q,
		"data-dismissible": ly,
		"data-type": sy,
		"data-invert": Cy,
		"data-swipe-out": Jv,
		"data-swipe-direction": Vv,
		"data-expanded": !!(g || F && Uv),
		"data-testid": n.testId,
		style: {
			"--index": d,
			"--toasts-before": d,
			"--z-index": f.length - d,
			"--offset": `${Gv ? Qv : gy.current}px`,
			"--initial-height": F ? "auto" : `${ey}px`,
			...S,
			...n.style
		},
		onDragEnd: () => {
			qv(!1), Bv(null), vy.current = null;
		},
		onPointerDown: (e) => {
			e.button !== 2 && (wy || !ly || (ry.current = /* @__PURE__ */ new Date(), $v(gy.current), e.target.setPointerCapture(e.pointerId), e.target.tagName !== "BUTTON" && (qv(!0), vy.current = {
				x: e.clientX,
				y: e.clientY
			})));
		},
		onPointerUp: () => {
			if (Jv || !ly) return;
			vy.current = null;
			let e = Number(iy.current?.style.getPropertyValue("--swipe-amount-x").replace("px", "") || 0), t = Number(iy.current?.style.getPropertyValue("--swipe-amount-y").replace("px", "") || 0), i = (/* @__PURE__ */ new Date()).getTime() - ry.current?.getTime(), a = V === "x" ? e : t, o = Math.abs(a) / i;
			if (Math.abs(a) >= SWIPE_THRESHOLD || o > .11) {
				$v(gy.current), n.onDismiss == null || n.onDismiss.call(n, n), Hv(V === "x" ? e > 0 ? "right" : "left" : t > 0 ? "down" : "up"), Ty(), Yv(!0);
				return;
			} else {
				var s, c;
				(s = iy.current) == null || s.style.setProperty("--swipe-amount-x", "0px"), (c = iy.current) == null || c.style.setProperty("--swipe-amount-y", "0px");
			}
			Zv(!1), qv(!1), Bv(null);
		},
		onPointerMove: (t) => {
			var n, i;
			if (!vy.current || !ly || window.getSelection()?.toString().length > 0) return;
			let a = t.clientY - vy.current.y, o = t.clientX - vy.current.x, s = e.swipeDirections ?? getDefaultSwipeDirections(j);
			!V && (Math.abs(o) > 1 || Math.abs(a) > 1) && Bv(Math.abs(o) > Math.abs(a) ? "x" : "y");
			let c = {
				x: 0,
				y: 0
			}, d = (e) => 1 / (1.5 + Math.abs(e) / 20);
			if (V === "y") {
				if (s.includes("top") || s.includes("bottom")) if (s.includes("top") && a < 0 || s.includes("bottom") && a > 0) c.y = a;
				else {
					let e = a * d(a);
					c.y = Math.abs(e) < Math.abs(a) ? e : a;
				}
			} else if (V === "x" && (s.includes("left") || s.includes("right"))) if (s.includes("left") && o < 0 || s.includes("right") && o > 0) c.x = o;
			else {
				let e = o * d(o);
				c.x = Math.abs(e) < Math.abs(o) ? e : o;
			}
			(Math.abs(c.x) > 0 || Math.abs(c.y) > 0) && Zv(!0), (n = iy.current) == null || n.style.setProperty("--swipe-amount-x", `${c.x}px`), (i = iy.current) == null || i.style.setProperty("--swipe-amount-y", `${c.y}px`);
		}
	}, py && !n.jsx && sy !== "loading" ? /* @__PURE__ */ React.createElement("button", {
		"aria-label": zv,
		"data-disabled": wy,
		"data-close-button": !0,
		onClick: wy || !ly ? () => {} : () => {
			Ty(), n.onDismiss == null || n.onDismiss.call(n, n);
		},
		className: cn$1(I?.closeButton, n?.classNames?.closeButton)
	}, R?.close ?? CloseIcon) : null, (sy || n.icon || n.promise) && n.icon !== null && (R?.[sy] !== null || n.icon) ? /* @__PURE__ */ React.createElement("div", {
		"data-icon": "",
		className: cn$1(I?.icon, n?.classNames?.icon)
	}, n.promise || n.type === "loading" && !n.icon ? n.icon || Ey() : null, n.type === "loading" ? null : Dy) : null, /* @__PURE__ */ React.createElement("div", {
		"data-content": "",
		className: cn$1(I?.content, n?.classNames?.content)
	}, /* @__PURE__ */ React.createElement("div", {
		"data-title": "",
		className: cn$1(I?.title, n?.classNames?.title)
	}, n.jsx ? n.jsx : typeof n.title == "function" ? n.title() : n.title), n.description ? /* @__PURE__ */ React.createElement("div", {
		"data-description": "",
		className: cn$1(O, dy, I?.description, n?.classNames?.description)
	}, typeof n.description == "function" ? n.description() : n.description) : null), /* @__PURE__ */ React.isValidElement(n.cancel) ? n.cancel : n.cancel && isAction(n.cancel) ? /* @__PURE__ */ React.createElement("button", {
		"data-button": !0,
		"data-cancel": !0,
		style: n.cancelButtonStyle || C,
		onClick: (e) => {
			isAction(n.cancel) && ly && (n.cancel.onClick == null || n.cancel.onClick.call(n.cancel, e), Ty());
		},
		className: cn$1(I?.cancelButton, n?.classNames?.cancelButton)
	}, n.cancel.label) : null, /* @__PURE__ */ React.isValidElement(n.action) ? n.action : n.action && isAction(n.action) ? /* @__PURE__ */ React.createElement("button", {
		"data-button": !0,
		"data-action": !0,
		style: n.actionButtonStyle || w,
		onClick: (e) => {
			isAction(n.action) && (n.action.onClick == null || n.action.onClick.call(n.action, e), !e.defaultPrevented && Ty());
		},
		className: cn$1(I?.actionButton, n?.classNames?.actionButton)
	}, n.action.label) : null);
};
function getDocumentDirection() {
	if (typeof window > "u" || typeof document > "u") return "ltr";
	let e = document.documentElement.getAttribute("dir");
	return e === "auto" || !e ? window.getComputedStyle(document.documentElement).direction : e;
}
function assignOffset(e, t) {
	let n = {};
	return [e, t].forEach((e, t) => {
		let i = t === 1, a = i ? "--mobile-offset" : "--offset", o = i ? MOBILE_VIEWPORT_OFFSET : VIEWPORT_OFFSET;
		function s(e) {
			[
				"top",
				"right",
				"bottom",
				"left"
			].forEach((t) => {
				n[`${a}-${t}`] = typeof e == "number" ? `${e}px` : e;
			});
		}
		typeof e == "number" || typeof e == "string" ? s(e) : typeof e == "object" ? [
			"top",
			"right",
			"bottom",
			"left"
		].forEach((t) => {
			e[t] === void 0 ? n[`${a}-${t}`] = o : n[`${a}-${t}`] = typeof e[t] == "number" ? `${e[t]}px` : e[t];
		}) : s(o);
	}), n;
}
var Toaster$1 = /* @__PURE__ */ React.forwardRef(function(e, t) {
	let { id: n, invert: i, position: a = "bottom-right", hotkey: o = ["altKey", "KeyT"], expand: s, closeButton: c, className: d, offset: f, mobileOffset: g, theme: y = "light", richColors: b, duration: x, style: S, visibleToasts: C = VISIBLE_TOASTS_AMOUNT, toastOptions: w, dir: E = getDocumentDirection(), gap: O = GAP, icons: A, containerAriaLabel: j = "Notifications" } = e, [M, F] = React.useState([]), I = React.useMemo(() => n ? M.filter((e) => e.toasterId === n) : M.filter((e) => !e.toasterId), [M, n]), R = React.useMemo(() => Array.from(new Set([a].concat(I.filter((e) => e.position).map((e) => e.position)))), [I, a]), [zv, V] = React.useState([]), [Bv, Vv] = React.useState(!1), [Hv, Uv] = React.useState(!1), [Wv, Gv] = React.useState(y === "system" ? typeof window < "u" && window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : y), Kv = React.useRef(null), q = o.join("+").replace(/Key/g, "").replace(/Digit/g, ""), qv = React.useRef(null), Jv = React.useRef(!1), Yv = React.useCallback((e) => {
		F((t) => (t.find((t) => t.id === e.id)?.delete || ToastState.dismiss(e.id), t.filter(({ id: t }) => t !== e.id)));
	}, []);
	return React.useEffect(() => ToastState.subscribe((e) => {
		if (e.dismiss) {
			requestAnimationFrame(() => {
				F((t) => t.map((t) => t.id === e.id ? {
					...t,
					delete: !0
				} : t));
			});
			return;
		}
		setTimeout(() => {
			ReactDOM$1.flushSync(() => {
				F((t) => {
					let n = t.findIndex((t) => t.id === e.id);
					return n === -1 ? [e, ...t] : [
						...t.slice(0, n),
						{
							...t[n],
							...e
						},
						...t.slice(n + 1)
					];
				});
			});
		});
	}), [M]), React.useEffect(() => {
		if (y !== "system") {
			Gv(y);
			return;
		}
		if (y === "system" && (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? Gv("dark") : Gv("light")), typeof window > "u") return;
		let e = window.matchMedia("(prefers-color-scheme: dark)");
		try {
			e.addEventListener("change", ({ matches: e }) => {
				Gv(e ? "dark" : "light");
			});
		} catch {
			e.addListener(({ matches: e }) => {
				try {
					Gv(e ? "dark" : "light");
				} catch (e) {
					console.error(e);
				}
			});
		}
	}, [y]), React.useEffect(() => {
		M.length <= 1 && Vv(!1);
	}, [M]), React.useEffect(() => {
		let e = (e) => {
			if (o.every((t) => e[t] || e.code === t)) {
				var t;
				Vv(!0), (t = Kv.current) == null || t.focus();
			}
			e.code === "Escape" && (document.activeElement === Kv.current || Kv.current?.contains(document.activeElement)) && Vv(!1);
		};
		return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
	}, [o]), React.useEffect(() => {
		if (Kv.current) return () => {
			qv.current && (qv.current.focus({ preventScroll: !0 }), qv.current = null, Jv.current = !1);
		};
	}, [Kv.current]), /* @__PURE__ */ React.createElement("section", {
		ref: t,
		"aria-label": `${j} ${q}`,
		tabIndex: -1,
		"aria-live": "polite",
		"aria-relevant": "additions text",
		"aria-atomic": "false",
		suppressHydrationWarning: !0
	}, R.map((t, n) => {
		let [a, o] = t.split("-");
		return I.length ? /* @__PURE__ */ React.createElement("ol", {
			key: t,
			dir: E === "auto" ? getDocumentDirection() : E,
			tabIndex: -1,
			ref: Kv,
			className: d,
			"data-sonner-toaster": !0,
			"data-sonner-theme": Wv,
			"data-y-position": a,
			"data-x-position": o,
			style: {
				"--front-toast-height": `${zv[0]?.height || 0}px`,
				"--width": `${TOAST_WIDTH}px`,
				"--gap": `${O}px`,
				...S,
				...assignOffset(f, g)
			},
			onBlur: (e) => {
				Jv.current && !e.currentTarget.contains(e.relatedTarget) && (Jv.current = !1, qv.current &&= (qv.current.focus({ preventScroll: !0 }), null));
			},
			onFocus: (e) => {
				e.target instanceof HTMLElement && e.target.dataset.dismissible === "false" || Jv.current || (Jv.current = !0, qv.current = e.relatedTarget);
			},
			onMouseEnter: () => Vv(!0),
			onMouseMove: () => Vv(!0),
			onMouseLeave: () => {
				Hv || Vv(!1);
			},
			onDragEnd: () => Vv(!1),
			onPointerDown: (e) => {
				e.target instanceof HTMLElement && e.target.dataset.dismissible === "false" || Uv(!0);
			},
			onPointerUp: () => Uv(!1)
		}, I.filter((e) => !e.position && n === 0 || e.position === t).map((n, a) => /* @__PURE__ */ React.createElement(Toast, {
			key: n.id,
			icons: A,
			index: a,
			toast: n,
			defaultRichColors: b,
			duration: w?.duration ?? x,
			className: w?.className,
			descriptionClassName: w?.descriptionClassName,
			invert: i,
			visibleToasts: C,
			closeButton: w?.closeButton ?? c,
			interacting: Hv,
			position: t,
			style: w?.style,
			unstyled: w?.unstyled,
			classNames: w?.classNames,
			cancelButtonStyle: w?.cancelButtonStyle,
			actionButtonStyle: w?.actionButtonStyle,
			closeButtonAriaLabel: w?.closeButtonAriaLabel,
			removeToast: Yv,
			toasts: I.filter((e) => e.position == n.position),
			heights: zv.filter((e) => e.position == n.position),
			setHeights: V,
			expandByDefault: s,
			gap: O,
			expanded: Bv,
			swipeDirections: e.swipeDirections
		}))) : null;
	}));
});
const useEndpoint = (e) => {
	let [t, n] = useState(e.defaultEndpoint ?? null), [i, a] = useState(null), o = useCallback((t) => {
		n(t), e.onEndpointChange?.(t);
	}, [e]), s = useMemo(() => i ? buildClientSchema(i) : null, [i]), c = useCallback(async () => {
		if (t === e.defaultEndpoint && e.defaultSchemaIntrospection) {
			a(e.defaultSchemaIntrospection);
			return;
		}
		if (!t) {
			a(null);
			return;
		}
		try {
			let e = await fetch(t, {
				method: "POST",
				body: JSON.stringify({ query: getIntrospectionQuery() }),
				headers: { "Content-Type": "application/json" }
			}).then((e) => e.json());
			a(e.data);
		} catch {
			toast.error("Failed to fetch schema"), a(null);
			return;
		}
	}, [t]), d = useCallback(() => {
		e.defaultEndpoint && o(e.defaultEndpoint);
	}, [e.defaultEndpoint]);
	return useEffect(() => {
		t && c();
	}, [t, c]), {
		endpoint: t,
		setEndpoint: o,
		schema: s,
		introspection: i,
		fetchSchema: c,
		restoreDefaultEndpoint: d,
		defaultEndpoint: e.defaultEndpoint ?? null
	};
}, useEnv = (e) => {
	let [t, n] = useState(e.defaultEnv ?? { variables: {} }), i = useCallback((t) => {
		n(t), e.onEnvChange?.(t);
	}, [e]);
	return {
		env: t,
		setEnv: i
	};
}, useHistory = (e) => {
	let [t, n] = useState(e.defaultHistory ?? []), i = useRef(t);
	useEffect(() => {
		i.current = t;
	}, [t]);
	let a = useCallback((i) => {
		let a = {
			...i,
			id: v4_default()
		}, o = [...t, a];
		return n(o), e.onHistoryChange?.(o), e.onHistoryCreate?.(a), a;
	}, [t, e]), o = useCallback((t, a) => {
		let o = i.current.find((e) => e.id === t);
		if (o && "responses" in o) {
			let s = [...o.responses, {
				createdAt: (/* @__PURE__ */ new Date()).toISOString(),
				data: a
			}], c = {
				...o,
				responses: s
			}, d = i.current.map((e) => e.id === t ? c : e);
			n(d), e.onHistoryChange?.(d), e.onHistoryUpdate?.(c);
		}
	}, [e]), s = useCallback((t) => {
		let a = i.current.find((e) => e.id === t), o = i.current.filter((e) => e.id !== t);
		n(o), e.onHistoryChange?.(o), a && e.onHistoryDelete?.(a);
	}, [e]), c = useCallback(() => {
		let t = [...i.current];
		if (n([]), e.onHistoryChange?.([]), e.onHistoryDelete) for (let n of t) e.onHistoryDelete(n);
	}, [e]), d = useCallback((t) => {
		let a = i.current.filter((e) => format(new Date(e.createdAt), "dd MMM yyyy") === t), o = i.current.filter((e) => format(new Date(e.createdAt), "dd MMM yyyy") !== t);
		if (n(o), e.onHistoryChange?.(o), e.onHistoryDelete) for (let t of a) e.onHistoryDelete(t);
	}, [e]);
	return {
		history: t,
		addHistory: a,
		addResponseToHistory: o,
		deleteHistory: s,
		deleteAllHistory: c,
		deleteHistoryByDay: d
	};
};
var require_lodash = /* @__PURE__ */ __commonJSMin(((e, t) => {
	(function() {
		var n, i = "4.17.23", a = 200, o = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", s = "Expected a function", c = "Invalid `variable` option passed into `_.template`", d = "__lodash_hash_undefined__", f = 500, g = "__lodash_placeholder__", y = 1, b = 2, x = 4, S = 1, C = 2, w = 1, E = 2, O = 4, A = 8, j = 16, M = 32, F = 64, I = 128, R = 256, zv = 512, V = 30, Bv = "...", Vv = 800, Hv = 16, Uv = 1, Wv = 2, Gv = 3, Kv = Infinity, q = 9007199254740991, qv = 17976931348623157e292, Jv = NaN, Yv = 4294967295, Xv = Yv - 1, Zv = Yv >>> 1, Qv = [
			["ary", I],
			["bind", w],
			["bindKey", E],
			["curry", A],
			["curryRight", j],
			["flip", zv],
			["partial", M],
			["partialRight", F],
			["rearg", R]
		], $v = "[object Arguments]", ey = "[object Array]", ty = "[object AsyncFunction]", ny = "[object Boolean]", ry = "[object Date]", iy = "[object DOMException]", ay = "[object Error]", oy = "[object Function]", sy = "[object GeneratorFunction]", cy = "[object Map]", ly = "[object Number]", uy = "[object Null]", dy = "[object Object]", fy = "[object Promise]", py = "[object Proxy]", my = "[object RegExp]", hy = "[object Set]", gy = "[object String]", _y = "[object Symbol]", vy = "[object Undefined]", yy = "[object WeakMap]", by = "[object WeakSet]", xy = "[object ArrayBuffer]", Sy = "[object DataView]", Cy = "[object Float32Array]", wy = "[object Float64Array]", Ty = "[object Int8Array]", Ey = "[object Int16Array]", Dy = "[object Int32Array]", Oy = "[object Uint8Array]", ky = "[object Uint8ClampedArray]", Ay = "[object Uint16Array]", jy = "[object Uint32Array]", My = /\b__p \+= '';/g, Ny = /\b(__p \+=) '' \+/g, Py = /(__e\(.*?\)|\b__t\)) \+\n'';/g, Fy = /&(?:amp|lt|gt|quot|#39);/g, Iy = /[&<>"']/g, Ly = RegExp(Fy.source), Ry = RegExp(Iy.source), zy = /<%-([\s\S]+?)%>/g, By = /<%([\s\S]+?)%>/g, Vy = /<%=([\s\S]+?)%>/g, Hy = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, Uy = /^\w*$/, Wy = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, Gy = /[\\^$.*+?()[\]{}|]/g, Ky = RegExp(Gy.source), qy = /^\s+/, Jy = /\s/, Yy = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, Xy = /\{\n\/\* \[wrapped with (.+)\] \*/, Zy = /,? & /, Qy = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, $y = /[()=,{}\[\]\/\s]/, eb = /\\(\\)?/g, tb = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, nb = /\w*$/, rb = /^[-+]0x[0-9a-f]+$/i, ib = /^0b[01]+$/i, ab = /^\[object .+?Constructor\]$/, ob = /^0o[0-7]+$/i, sb = /^(?:0|[1-9]\d*)$/, cb = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, lb = /($^)/, ub = /['\n\r\u2028\u2029\\]/g, db = "\\ud800-\\udfff", fb = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff", pb = "\\u2700-\\u27bf", mb = "a-z\\xdf-\\xf6\\xf8-\\xff", hb = "\\xac\\xb1\\xd7\\xf7", gb = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", _b = "\\u2000-\\u206f", vb = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", yb = "A-Z\\xc0-\\xd6\\xd8-\\xde", bb = "\\ufe0e\\ufe0f", xb = hb + gb + _b + vb, Sb = "['’]", Cb = "[" + db + "]", wb = "[" + xb + "]", Tb = "[" + fb + "]", Eb = "\\d+", Db = "[" + pb + "]", Ob = "[" + mb + "]", kb = "[^" + db + xb + Eb + pb + mb + yb + "]", Ab = "\\ud83c[\\udffb-\\udfff]", jb = "(?:" + Tb + "|" + Ab + ")", Mb = "[^" + db + "]", Nb = "(?:\\ud83c[\\udde6-\\uddff]){2}", Pb = "[\\ud800-\\udbff][\\udc00-\\udfff]", Fb = "[" + yb + "]", Ib = "\\u200d", Lb = "(?:" + Ob + "|" + kb + ")", Rb = "(?:" + Fb + "|" + kb + ")", zb = "(?:" + Sb + "(?:d|ll|m|re|s|t|ve))?", Bb = "(?:" + Sb + "(?:D|LL|M|RE|S|T|VE))?", Vb = jb + "?", Hb = "[" + bb + "]?", Ub = "(?:" + Ib + "(?:" + [
			Mb,
			Nb,
			Pb
		].join("|") + ")" + Hb + Vb + ")*", Wb = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", Gb = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", Kb = Hb + Vb + Ub, qb = "(?:" + [
			Db,
			Nb,
			Pb
		].join("|") + ")" + Kb, Jb = "(?:" + [
			Mb + Tb + "?",
			Tb,
			Nb,
			Pb,
			Cb
		].join("|") + ")", Yb = RegExp(Sb, "g"), Xb = RegExp(Tb, "g"), Zb = RegExp(Ab + "(?=" + Ab + ")|" + Jb + Kb, "g"), Qb = RegExp([
			Fb + "?" + Ob + "+" + zb + "(?=" + [
				wb,
				Fb,
				"$"
			].join("|") + ")",
			Rb + "+" + Bb + "(?=" + [
				wb,
				Fb + Lb,
				"$"
			].join("|") + ")",
			Fb + "?" + Lb + "+" + zb,
			Fb + "+" + Bb,
			Gb,
			Wb,
			Eb,
			qb
		].join("|"), "g"), $b = RegExp("[" + Ib + db + fb + bb + "]"), ex = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, tx = /* @__PURE__ */ "Array.Buffer.DataView.Date.Error.Float32Array.Float64Array.Function.Int8Array.Int16Array.Int32Array.Map.Math.Object.Promise.RegExp.Set.String.Symbol.TypeError.Uint8Array.Uint8ClampedArray.Uint16Array.Uint32Array.WeakMap._.clearTimeout.isFinite.parseInt.setTimeout".split("."), nx = -1, rx = {};
		rx[Cy] = rx[wy] = rx[Ty] = rx[Ey] = rx[Dy] = rx[Oy] = rx[ky] = rx[Ay] = rx[jy] = !0, rx[$v] = rx[ey] = rx[xy] = rx[ny] = rx[Sy] = rx[ry] = rx[ay] = rx[oy] = rx[cy] = rx[ly] = rx[dy] = rx[my] = rx[hy] = rx[gy] = rx[yy] = !1;
		var ix = {};
		ix[$v] = ix[ey] = ix[xy] = ix[Sy] = ix[ny] = ix[ry] = ix[Cy] = ix[wy] = ix[Ty] = ix[Ey] = ix[Dy] = ix[cy] = ix[ly] = ix[dy] = ix[my] = ix[hy] = ix[gy] = ix[_y] = ix[Oy] = ix[ky] = ix[Ay] = ix[jy] = !0, ix[ay] = ix[oy] = ix[yy] = !1;
		var ax = {
			À: "A",
			Á: "A",
			Â: "A",
			Ã: "A",
			Ä: "A",
			Å: "A",
			à: "a",
			á: "a",
			â: "a",
			ã: "a",
			ä: "a",
			å: "a",
			Ç: "C",
			ç: "c",
			Ð: "D",
			ð: "d",
			È: "E",
			É: "E",
			Ê: "E",
			Ë: "E",
			è: "e",
			é: "e",
			ê: "e",
			ë: "e",
			Ì: "I",
			Í: "I",
			Î: "I",
			Ï: "I",
			ì: "i",
			í: "i",
			î: "i",
			ï: "i",
			Ñ: "N",
			ñ: "n",
			Ò: "O",
			Ó: "O",
			Ô: "O",
			Õ: "O",
			Ö: "O",
			Ø: "O",
			ò: "o",
			ó: "o",
			ô: "o",
			õ: "o",
			ö: "o",
			ø: "o",
			Ù: "U",
			Ú: "U",
			Û: "U",
			Ü: "U",
			ù: "u",
			ú: "u",
			û: "u",
			ü: "u",
			Ý: "Y",
			ý: "y",
			ÿ: "y",
			Æ: "Ae",
			æ: "ae",
			Þ: "Th",
			þ: "th",
			ß: "ss",
			Ā: "A",
			Ă: "A",
			Ą: "A",
			ā: "a",
			ă: "a",
			ą: "a",
			Ć: "C",
			Ĉ: "C",
			Ċ: "C",
			Č: "C",
			ć: "c",
			ĉ: "c",
			ċ: "c",
			č: "c",
			Ď: "D",
			Đ: "D",
			ď: "d",
			đ: "d",
			Ē: "E",
			Ĕ: "E",
			Ė: "E",
			Ę: "E",
			Ě: "E",
			ē: "e",
			ĕ: "e",
			ė: "e",
			ę: "e",
			ě: "e",
			Ĝ: "G",
			Ğ: "G",
			Ġ: "G",
			Ģ: "G",
			ĝ: "g",
			ğ: "g",
			ġ: "g",
			ģ: "g",
			Ĥ: "H",
			Ħ: "H",
			ĥ: "h",
			ħ: "h",
			Ĩ: "I",
			Ī: "I",
			Ĭ: "I",
			Į: "I",
			İ: "I",
			ĩ: "i",
			ī: "i",
			ĭ: "i",
			į: "i",
			ı: "i",
			Ĵ: "J",
			ĵ: "j",
			Ķ: "K",
			ķ: "k",
			ĸ: "k",
			Ĺ: "L",
			Ļ: "L",
			Ľ: "L",
			Ŀ: "L",
			Ł: "L",
			ĺ: "l",
			ļ: "l",
			ľ: "l",
			ŀ: "l",
			ł: "l",
			Ń: "N",
			Ņ: "N",
			Ň: "N",
			Ŋ: "N",
			ń: "n",
			ņ: "n",
			ň: "n",
			ŋ: "n",
			Ō: "O",
			Ŏ: "O",
			Ő: "O",
			ō: "o",
			ŏ: "o",
			ő: "o",
			Ŕ: "R",
			Ŗ: "R",
			Ř: "R",
			ŕ: "r",
			ŗ: "r",
			ř: "r",
			Ś: "S",
			Ŝ: "S",
			Ş: "S",
			Š: "S",
			ś: "s",
			ŝ: "s",
			ş: "s",
			š: "s",
			Ţ: "T",
			Ť: "T",
			Ŧ: "T",
			ţ: "t",
			ť: "t",
			ŧ: "t",
			Ũ: "U",
			Ū: "U",
			Ŭ: "U",
			Ů: "U",
			Ű: "U",
			Ų: "U",
			ũ: "u",
			ū: "u",
			ŭ: "u",
			ů: "u",
			ű: "u",
			ų: "u",
			Ŵ: "W",
			ŵ: "w",
			Ŷ: "Y",
			ŷ: "y",
			Ÿ: "Y",
			Ź: "Z",
			Ż: "Z",
			Ž: "Z",
			ź: "z",
			ż: "z",
			ž: "z",
			IJ: "IJ",
			ij: "ij",
			Œ: "Oe",
			œ: "oe",
			ʼn: "'n",
			ſ: "s"
		}, ox = {
			"&": "&amp;",
			"<": "&lt;",
			">": "&gt;",
			"\"": "&quot;",
			"'": "&#39;"
		}, sx = {
			"&amp;": "&",
			"&lt;": "<",
			"&gt;": ">",
			"&quot;": "\"",
			"&#39;": "'"
		}, lx = {
			"\\": "\\",
			"'": "'",
			"\n": "n",
			"\r": "r",
			"\u2028": "u2028",
			"\u2029": "u2029"
		}, ux = parseFloat, dx = parseInt, fx = typeof global == "object" && global && global.Object === Object && global, px = typeof self == "object" && self && self.Object === Object && self, mx = fx || px || Function("return this")(), hx = typeof e == "object" && e && !e.nodeType && e, gx = hx && typeof t == "object" && t && !t.nodeType && t, _x = gx && gx.exports === hx, vx = _x && fx.process, yx = function() {
			try {
				return gx && gx.require && gx.require("util").types || vx && vx.binding && vx.binding("util");
			} catch {}
		}(), bx = yx && yx.isArrayBuffer, xx = yx && yx.isDate, Sx = yx && yx.isMap, Cx = yx && yx.isRegExp, wx = yx && yx.isSet, Tx = yx && yx.isTypedArray;
		function Ex(e, t, n) {
			switch (n.length) {
				case 0: return e.call(t);
				case 1: return e.call(t, n[0]);
				case 2: return e.call(t, n[0], n[1]);
				case 3: return e.call(t, n[0], n[1], n[2]);
			}
			return e.apply(t, n);
		}
		function Dx(e, t, n, i) {
			for (var a = -1, o = e == null ? 0 : e.length; ++a < o;) {
				var s = e[a];
				t(i, s, n(s), e);
			}
			return i;
		}
		function Ox(e, t) {
			for (var n = -1, i = e == null ? 0 : e.length; ++n < i && t(e[n], n, e) !== !1;);
			return e;
		}
		function kx(e, t) {
			for (var n = e == null ? 0 : e.length; n-- && t(e[n], n, e) !== !1;);
			return e;
		}
		function Ax(e, t) {
			for (var n = -1, i = e == null ? 0 : e.length; ++n < i;) if (!t(e[n], n, e)) return !1;
			return !0;
		}
		function jx(e, t) {
			for (var n = -1, i = e == null ? 0 : e.length, a = 0, o = []; ++n < i;) {
				var s = e[n];
				t(s, n, e) && (o[a++] = s);
			}
			return o;
		}
		function Mx(e, t) {
			return !!(e != null && e.length) && Wx(e, t, 0) > -1;
		}
		function Nx(e, t, n) {
			for (var i = -1, a = e == null ? 0 : e.length; ++i < a;) if (n(t, e[i])) return !0;
			return !1;
		}
		function Px(e, t) {
			for (var n = -1, i = e == null ? 0 : e.length, a = Array(i); ++n < i;) a[n] = t(e[n], n, e);
			return a;
		}
		function Fx(e, t) {
			for (var n = -1, i = t.length, a = e.length; ++n < i;) e[a + n] = t[n];
			return e;
		}
		function Ix(e, t, n, i) {
			var a = -1, o = e == null ? 0 : e.length;
			for (i && o && (n = e[++a]); ++a < o;) n = t(n, e[a], a, e);
			return n;
		}
		function Lx(e, t, n, i) {
			var a = e == null ? 0 : e.length;
			for (i && a && (n = e[--a]); a--;) n = t(n, e[a], a, e);
			return n;
		}
		function Rx(e, t) {
			for (var n = -1, i = e == null ? 0 : e.length; ++n < i;) if (t(e[n], n, e)) return !0;
			return !1;
		}
		var zx = Jx("length");
		function Bx(e) {
			return e.split("");
		}
		function Vx(e) {
			return e.match(Qy) || [];
		}
		function Hx(e, t, n) {
			var i;
			return n(e, function(e, n, a) {
				if (t(e, n, a)) return i = n, !1;
			}), i;
		}
		function Ux(e, t, n, i) {
			for (var a = e.length, o = n + (i ? 1 : -1); i ? o-- : ++o < a;) if (t(e[o], o, e)) return o;
			return -1;
		}
		function Wx(e, t, n) {
			return t === t ? bS(e, t, n) : Ux(e, Kx, n);
		}
		function Gx(e, t, n, i) {
			for (var a = n - 1, o = e.length; ++a < o;) if (i(e[a], t)) return a;
			return -1;
		}
		function Kx(e) {
			return e !== e;
		}
		function qx(e, t) {
			var n = e == null ? 0 : e.length;
			return n ? Qx(e, t) / n : Jv;
		}
		function Jx(e) {
			return function(t) {
				return t == null ? n : t[e];
			};
		}
		function Yx(e) {
			return function(t) {
				return e == null ? n : e[t];
			};
		}
		function Xx(e, t, n, i, a) {
			return a(e, function(e, a, o) {
				n = i ? (i = !1, e) : t(n, e, a, o);
			}), n;
		}
		function Zx(e, t) {
			var n = e.length;
			for (e.sort(t); n--;) e[n] = e[n].value;
			return e;
		}
		function Qx(e, t) {
			for (var i, a = -1, o = e.length; ++a < o;) {
				var s = t(e[a]);
				s !== n && (i = i === n ? s : i + s);
			}
			return i;
		}
		function $x(e, t) {
			for (var n = -1, i = Array(e); ++n < e;) i[n] = t(n);
			return i;
		}
		function eS(e, t) {
			return Px(t, function(t) {
				return [t, e[t]];
			});
		}
		function tS(e) {
			return e && e.slice(0, wS(e) + 1).replace(qy, "");
		}
		function nS(e) {
			return function(t) {
				return e(t);
			};
		}
		function rS(e, t) {
			return Px(t, function(t) {
				return e[t];
			});
		}
		function iS(e, t) {
			return e.has(t);
		}
		function aS(e, t) {
			for (var n = -1, i = e.length; ++n < i && Wx(t, e[n], 0) > -1;);
			return n;
		}
		function oS(e, t) {
			for (var n = e.length; n-- && Wx(t, e[n], 0) > -1;);
			return n;
		}
		function sS(e, t) {
			for (var n = e.length, i = 0; n--;) e[n] === t && ++i;
			return i;
		}
		var cS = Yx(ax), lS = Yx(ox);
		function uS(e) {
			return "\\" + lx[e];
		}
		function dS(e, t) {
			return e == null ? n : e[t];
		}
		function fS(e) {
			return $b.test(e);
		}
		function pS(e) {
			return ex.test(e);
		}
		function mS(e) {
			for (var t, n = []; !(t = e.next()).done;) n.push(t.value);
			return n;
		}
		function hS(e) {
			var t = -1, n = Array(e.size);
			return e.forEach(function(e, i) {
				n[++t] = [i, e];
			}), n;
		}
		function gS(e, t) {
			return function(n) {
				return e(t(n));
			};
		}
		function _S(e, t) {
			for (var n = -1, i = e.length, a = 0, o = []; ++n < i;) {
				var s = e[n];
				(s === t || s === g) && (e[n] = g, o[a++] = n);
			}
			return o;
		}
		function vS(e) {
			var t = -1, n = Array(e.size);
			return e.forEach(function(e) {
				n[++t] = e;
			}), n;
		}
		function yS(e) {
			var t = -1, n = Array(e.size);
			return e.forEach(function(e) {
				n[++t] = [e, e];
			}), n;
		}
		function bS(e, t, n) {
			for (var i = n - 1, a = e.length; ++i < a;) if (e[i] === t) return i;
			return -1;
		}
		function xS(e, t, n) {
			for (var i = n + 1; i--;) if (e[i] === t) return i;
			return i;
		}
		function SS(e) {
			return fS(e) ? ES(e) : zx(e);
		}
		function CS(e) {
			return fS(e) ? DS(e) : Bx(e);
		}
		function wS(e) {
			for (var t = e.length; t-- && Jy.test(e.charAt(t)););
			return t;
		}
		var TS = Yx(sx);
		function ES(e) {
			for (var t = Zb.lastIndex = 0; Zb.test(e);) ++t;
			return t;
		}
		function DS(e) {
			return e.match(Zb) || [];
		}
		function OS(e) {
			return e.match(Qb) || [];
		}
		var kS = (function e(t) {
			t = t == null ? mx : kS.defaults(mx.Object(), t, kS.pick(mx, tx));
			var Jy = t.Array, Qy = t.Date, db = t.Error, fb = t.Function, pb = t.Math, mb = t.Object, hb = t.RegExp, gb = t.String, _b = t.TypeError, vb = Jy.prototype, yb = fb.prototype, bb = mb.prototype, xb = t["__core-js_shared__"], Sb = yb.toString, Cb = bb.hasOwnProperty, wb = 0, Tb = function() {
				var e = /[^.]+$/.exec(xb && xb.keys && xb.keys.IE_PROTO || "");
				return e ? "Symbol(src)_1." + e : "";
			}(), Eb = bb.toString, Db = Sb.call(mb), Ob = mx._, kb = hb("^" + Sb.call(Cb).replace(Gy, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), Ab = _x ? t.Buffer : n, jb = t.Symbol, Mb = t.Uint8Array, Nb = Ab ? Ab.allocUnsafe : n, Pb = gS(mb.getPrototypeOf, mb), Fb = mb.create, Ib = bb.propertyIsEnumerable, Lb = vb.splice, Rb = jb ? jb.isConcatSpreadable : n, zb = jb ? jb.iterator : n, Bb = jb ? jb.toStringTag : n, Vb = function() {
				try {
					var e = rE(mb, "defineProperty");
					return e({}, "", {}), e;
				} catch {}
			}(), Hb = t.clearTimeout !== mx.clearTimeout && t.clearTimeout, Ub = Qy && Qy.now !== mx.Date.now && Qy.now, Wb = t.setTimeout !== mx.setTimeout && t.setTimeout, Gb = pb.ceil, Kb = pb.floor, qb = mb.getOwnPropertySymbols, Jb = Ab ? Ab.isBuffer : n, Zb = t.isFinite, Qb = vb.join, $b = gS(mb.keys, mb), ex = pb.max, ax = pb.min, ox = Qy.now, sx = t.parseInt, lx = pb.random, fx = vb.reverse, px = rE(t, "DataView"), hx = rE(t, "Map"), gx = rE(t, "Promise"), vx = rE(t, "Set"), yx = rE(t, "WeakMap"), zx = rE(mb, "create"), Bx = yx && new yx(), Yx = {}, bS = HE(px), ES = HE(hx), DS = HE(gx), AS = HE(vx), jS = HE(yx), MS = jb ? jb.prototype : n, NS = MS ? MS.valueOf : n, PS = MS ? MS.toString : n;
			function Q(e) {
				if (Fk(e) && !vk(e) && !(e instanceof RS)) {
					if (e instanceof LS) return e;
					if (Cb.call(e, "__wrapped__")) return WE(e);
				}
				return new LS(e);
			}
			var FS = function() {
				function e() {}
				return function(t) {
					if (!Pk(t)) return {};
					if (Fb) return Fb(t);
					e.prototype = t;
					var i = new e();
					return e.prototype = n, i;
				};
			}();
			function IS() {}
			function LS(e, t) {
				this.__wrapped__ = e, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, this.__values__ = n;
			}
			Q.templateSettings = {
				escape: zy,
				evaluate: By,
				interpolate: Vy,
				variable: "",
				imports: { _: Q }
			}, Q.prototype = IS.prototype, Q.prototype.constructor = Q, LS.prototype = FS(IS.prototype), LS.prototype.constructor = LS;
			function RS(e) {
				this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = Yv, this.__views__ = [];
			}
			function zS() {
				var e = new RS(this.__wrapped__);
				return e.__actions__ = mT(this.__actions__), e.__dir__ = this.__dir__, e.__filtered__ = this.__filtered__, e.__iteratees__ = mT(this.__iteratees__), e.__takeCount__ = this.__takeCount__, e.__views__ = mT(this.__views__), e;
			}
			function BS() {
				if (this.__filtered__) {
					var e = new RS(this);
					e.__dir__ = -1, e.__filtered__ = !0;
				} else e = this.clone(), e.__dir__ *= -1;
				return e;
			}
			function VS() {
				var e = this.__wrapped__.value(), t = this.__dir__, n = vk(e), i = t < 0, a = n ? e.length : 0, o = cE(0, a, this.__views__), s = o.start, c = o.end, d = c - s, f = i ? c : s - 1, g = this.__iteratees__, y = g.length, b = 0, x = ax(d, this.__takeCount__);
				if (!n || !i && a == d && x == d) return Yw(e, this.__actions__);
				var S = [];
				outer: for (; d-- && b < x;) {
					f += t;
					for (var C = -1, w = e[f]; ++C < y;) {
						var E = g[C], O = E.iteratee, A = E.type, j = O(w);
						if (A == Wv) w = j;
						else if (!j) {
							if (A == Uv) continue outer;
							break outer;
						}
					}
					S[b++] = w;
				}
				return S;
			}
			RS.prototype = FS(IS.prototype), RS.prototype.constructor = RS;
			function HS(e) {
				var t = -1, n = e == null ? 0 : e.length;
				for (this.clear(); ++t < n;) {
					var i = e[t];
					this.set(i[0], i[1]);
				}
			}
			function US() {
				this.__data__ = zx ? zx(null) : {}, this.size = 0;
			}
			function WS(e) {
				var t = this.has(e) && delete this.__data__[e];
				return this.size -= t ? 1 : 0, t;
			}
			function GS(e) {
				var t = this.__data__;
				if (zx) {
					var i = t[e];
					return i === d ? n : i;
				}
				return Cb.call(t, e) ? t[e] : n;
			}
			function KS(e) {
				var t = this.__data__;
				return zx ? t[e] !== n : Cb.call(t, e);
			}
			function qS(e, t) {
				var i = this.__data__;
				return this.size += this.has(e) ? 0 : 1, i[e] = zx && t === n ? d : t, this;
			}
			HS.prototype.clear = US, HS.prototype.delete = WS, HS.prototype.get = GS, HS.prototype.has = KS, HS.prototype.set = qS;
			function JS(e) {
				var t = -1, n = e == null ? 0 : e.length;
				for (this.clear(); ++t < n;) {
					var i = e[t];
					this.set(i[0], i[1]);
				}
			}
			function YS() {
				this.__data__ = [], this.size = 0;
			}
			function XS(e) {
				var t = this.__data__, n = xC(t, e);
				if (n < 0) return !1;
				var i = t.length - 1;
				return n == i ? t.pop() : Lb.call(t, n, 1), --this.size, !0;
			}
			function ZS(e) {
				var t = this.__data__, i = xC(t, e);
				return i < 0 ? n : t[i][1];
			}
			function QS(e) {
				return xC(this.__data__, e) > -1;
			}
			function $S(e, t) {
				var n = this.__data__, i = xC(n, e);
				return i < 0 ? (++this.size, n.push([e, t])) : n[i][1] = t, this;
			}
			JS.prototype.clear = YS, JS.prototype.delete = XS, JS.prototype.get = ZS, JS.prototype.has = QS, JS.prototype.set = $S;
			function eC(e) {
				var t = -1, n = e == null ? 0 : e.length;
				for (this.clear(); ++t < n;) {
					var i = e[t];
					this.set(i[0], i[1]);
				}
			}
			function tC() {
				this.size = 0, this.__data__ = {
					hash: new HS(),
					map: new (hx || JS)(),
					string: new HS()
				};
			}
			function nC(e) {
				var t = tE(this, e).delete(e);
				return this.size -= t ? 1 : 0, t;
			}
			function rC(e) {
				return tE(this, e).get(e);
			}
			function iC(e) {
				return tE(this, e).has(e);
			}
			function aC(e, t) {
				var n = tE(this, e), i = n.size;
				return n.set(e, t), this.size += n.size == i ? 0 : 1, this;
			}
			eC.prototype.clear = tC, eC.prototype.delete = nC, eC.prototype.get = rC, eC.prototype.has = iC, eC.prototype.set = aC;
			function oC(e) {
				var t = -1, n = e == null ? 0 : e.length;
				for (this.__data__ = new eC(); ++t < n;) this.add(e[t]);
			}
			function sC(e) {
				return this.__data__.set(e, d), this;
			}
			function cC(e) {
				return this.__data__.has(e);
			}
			oC.prototype.add = oC.prototype.push = sC, oC.prototype.has = cC;
			function lC(e) {
				this.size = (this.__data__ = new JS(e)).size;
			}
			function uC() {
				this.__data__ = new JS(), this.size = 0;
			}
			function dC(e) {
				var t = this.__data__, n = t.delete(e);
				return this.size = t.size, n;
			}
			function fC(e) {
				return this.__data__.get(e);
			}
			function pC(e) {
				return this.__data__.has(e);
			}
			function mC(e, t) {
				var n = this.__data__;
				if (n instanceof JS) {
					var i = n.__data__;
					if (!hx || i.length < a - 1) return i.push([e, t]), this.size = ++n.size, this;
					n = this.__data__ = new eC(i);
				}
				return n.set(e, t), this.size = n.size, this;
			}
			lC.prototype.clear = uC, lC.prototype.delete = dC, lC.prototype.get = fC, lC.prototype.has = pC, lC.prototype.set = mC;
			function hC(e, t) {
				var n = vk(e), i = !n && _k(e), a = !n && !i && Ck(e), o = !n && !i && !a && Xk(e), s = n || i || a || o, c = s ? $x(e.length, gb) : [], d = c.length;
				for (var f in e) (t || Cb.call(e, f)) && !(s && (f == "length" || a && (f == "offset" || f == "parent") || o && (f == "buffer" || f == "byteLength" || f == "byteOffset") || gE(f, d))) && c.push(f);
				return c;
			}
			function gC(e) {
				var t = e.length;
				return t ? e[Ow(0, t - 1)] : n;
			}
			function _C(e, t) {
				return zE(mT(e), DC(t, 0, e.length));
			}
			function vC(e) {
				return zE(mT(e));
			}
			function yC(e, t, i) {
				(i !== n && !mk(e[t], i) || i === n && !(t in e)) && TC(e, t, i);
			}
			function bC(e, t, i) {
				var a = e[t];
				(!(Cb.call(e, t) && mk(a, i)) || i === n && !(t in e)) && TC(e, t, i);
			}
			function xC(e, t) {
				for (var n = e.length; n--;) if (mk(e[n][0], t)) return n;
				return -1;
			}
			function SC(e, t, n, i) {
				return NC(e, function(e, a, o) {
					t(i, e, n(e), o);
				}), i;
			}
			function CC(e, t) {
				return e && hT(t, MA(t), e);
			}
			function wC(e, t) {
				return e && hT(t, NA(t), e);
			}
			function TC(e, t, n) {
				t == "__proto__" && Vb ? Vb(e, t, {
					configurable: !0,
					enumerable: !0,
					value: n,
					writable: !0
				}) : e[t] = n;
			}
			function EC(e, t) {
				for (var i = -1, a = t.length, o = Jy(a), s = e == null; ++i < a;) o[i] = s ? n : EA(e, t[i]);
				return o;
			}
			function DC(e, t, i) {
				return e === e && (i !== n && (e = e <= i ? e : i), t !== n && (e = e >= t ? e : t)), e;
			}
			function OC(e, t, i, a, o, s) {
				var c, d = t & y, f = t & b, g = t & x;
				if (i && (c = o ? i(e, a, o, s) : i(e)), c !== n) return c;
				if (!Pk(e)) return e;
				var S = vk(e);
				if (S) {
					if (c = dE(e), !d) return mT(e, c);
				} else {
					var C = sE(e), w = C == oy || C == sy;
					if (Ck(e)) return iT(e, d);
					if (C == dy || C == $v || w && !o) {
						if (c = f || w ? {} : fE(e), !d) return f ? _T(e, wC(c, e)) : gT(e, CC(c, e));
					} else {
						if (!ix[C]) return o ? e : {};
						c = pE(e, C, d);
					}
				}
				s ||= new lC();
				var E = s.get(e);
				if (E) return E;
				s.set(e, c), qk(e) ? e.forEach(function(n) {
					c.add(OC(n, t, i, n, e, s));
				}) : Ik(e) && e.forEach(function(n, a) {
					c.set(a, OC(n, t, i, a, e, s));
				});
				var O = S ? n : (g ? f ? XT : YT : f ? NA : MA)(e);
				return Ox(O || e, function(n, a) {
					O && (a = n, n = e[a]), bC(c, a, OC(n, t, i, a, e, s));
				}), c;
			}
			function kC(e) {
				var t = MA(e);
				return function(n) {
					return AC(n, e, t);
				};
			}
			function AC(e, t, i) {
				var a = i.length;
				if (e == null) return !a;
				for (e = mb(e); a--;) {
					var o = i[a], s = t[o], c = e[o];
					if (c === n && !(o in e) || !s(c)) return !1;
				}
				return !0;
			}
			function jC(e, t, i) {
				if (typeof e != "function") throw new _b(s);
				return FE(function() {
					e.apply(n, i);
				}, t);
			}
			function MC(e, t, n, i) {
				var o = -1, s = Mx, c = !0, d = e.length, f = [], g = t.length;
				if (!d) return f;
				n && (t = Px(t, nS(n))), i ? (s = Nx, c = !1) : t.length >= a && (s = iS, c = !1, t = new oC(t));
				outer: for (; ++o < d;) {
					var y = e[o], b = n == null ? y : n(y);
					if (y = i || y !== 0 ? y : 0, c && b === b) {
						for (var x = g; x--;) if (t[x] === b) continue outer;
						f.push(y);
					} else s(t, b, i) || f.push(y);
				}
				return f;
			}
			var NC = bT(HC), PC = bT(UC, !0);
			function FC(e, t) {
				var n = !0;
				return NC(e, function(e, i, a) {
					return n = !!t(e, i, a), n;
				}), n;
			}
			function IC(e, t, i) {
				for (var a = -1, o = e.length; ++a < o;) {
					var s = e[a], c = t(s);
					if (c != null && (d === n ? c === c && !Yk(c) : i(c, d))) var d = c, f = s;
				}
				return f;
			}
			function LC(e, t, i, a) {
				var o = e.length;
				for (i = iA(i), i < 0 && (i = -i > o ? 0 : o + i), a = a === n || a > o ? o : iA(a), a < 0 && (a += o), a = i > a ? 0 : aA(a); i < a;) e[i++] = t;
				return e;
			}
			function RC(e, t) {
				var n = [];
				return NC(e, function(e, i, a) {
					t(e, i, a) && n.push(e);
				}), n;
			}
			function zC(e, t, n, i, a) {
				var o = -1, s = e.length;
				for (n ||= hE, a ||= []; ++o < s;) {
					var c = e[o];
					t > 0 && n(c) ? t > 1 ? zC(c, t - 1, n, i, a) : Fx(a, c) : i || (a[a.length] = c);
				}
				return a;
			}
			var BC = xT(), VC = xT(!0);
			function HC(e, t) {
				return e && BC(e, t, MA);
			}
			function UC(e, t) {
				return e && VC(e, t, MA);
			}
			function WC(e, t) {
				return jx(t, function(t) {
					return jk(e[t]);
				});
			}
			function GC(e, t) {
				t = eT(t, e);
				for (var i = 0, a = t.length; e != null && i < a;) e = e[VE(t[i++])];
				return i && i == a ? e : n;
			}
			function KC(e, t, n) {
				var i = t(e);
				return vk(e) ? i : Fx(i, n(e));
			}
			function qC(e) {
				return e == null ? e === n ? vy : uy : Bb && Bb in mb(e) ? iE(e) : kE(e);
			}
			function JC(e, t) {
				return e > t;
			}
			function YC(e, t) {
				return e != null && Cb.call(e, t);
			}
			function XC(e, t) {
				return e != null && t in mb(e);
			}
			function ZC(e, t, n) {
				return e >= ax(t, n) && e < ex(t, n);
			}
			function QC(e, t, i) {
				for (var a = i ? Nx : Mx, o = e[0].length, s = e.length, c = s, d = Jy(s), f = Infinity, g = []; c--;) {
					var y = e[c];
					c && t && (y = Px(y, nS(t))), f = ax(y.length, f), d[c] = !i && (t || o >= 120 && y.length >= 120) ? new oC(c && y) : n;
				}
				y = e[0];
				var b = -1, x = d[0];
				outer: for (; ++b < o && g.length < f;) {
					var S = y[b], C = t ? t(S) : S;
					if (S = i || S !== 0 ? S : 0, !(x ? iS(x, C) : a(g, C, i))) {
						for (c = s; --c;) {
							var w = d[c];
							if (!(w ? iS(w, C) : a(e[c], C, i))) continue outer;
						}
						x && x.push(C), g.push(S);
					}
				}
				return g;
			}
			function $C(e, t, n, i) {
				return HC(e, function(e, a, o) {
					t(i, n(e), a, o);
				}), i;
			}
			function ew(e, t, i) {
				t = eT(t, e), e = jE(e, t);
				var a = e == null ? e : e[VE(hD(t))];
				return a == null ? n : Ex(a, e, i);
			}
			function tw(e) {
				return Fk(e) && qC(e) == $v;
			}
			function nw(e) {
				return Fk(e) && qC(e) == xy;
			}
			function rw(e) {
				return Fk(e) && qC(e) == ry;
			}
			function iw(e, t, n, i, a) {
				return e === t ? !0 : e == null || t == null || !Fk(e) && !Fk(t) ? e !== e && t !== t : aw(e, t, n, i, iw, a);
			}
			function aw(e, t, n, i, a, o) {
				var s = vk(e), c = vk(t), d = s ? ey : sE(e), f = c ? ey : sE(t);
				d = d == $v ? dy : d, f = f == $v ? dy : f;
				var g = d == dy, y = f == dy, b = d == f;
				if (b && Ck(e)) {
					if (!Ck(t)) return !1;
					s = !0, g = !1;
				}
				if (b && !g) return o ||= new lC(), s || Xk(e) ? GT(e, t, n, i, a, o) : KT(e, t, d, n, i, a, o);
				if (!(n & S)) {
					var x = g && Cb.call(e, "__wrapped__"), C = y && Cb.call(t, "__wrapped__");
					if (x || C) {
						var w = x ? e.value() : e, E = C ? t.value() : t;
						return o ||= new lC(), a(w, E, n, i, o);
					}
				}
				return b ? (o ||= new lC(), qT(e, t, n, i, a, o)) : !1;
			}
			function ow(e) {
				return Fk(e) && sE(e) == cy;
			}
			function sw(e, t, i, a) {
				var o = i.length, s = o, c = !a;
				if (e == null) return !s;
				for (e = mb(e); o--;) {
					var d = i[o];
					if (c && d[2] ? d[1] !== e[d[0]] : !(d[0] in e)) return !1;
				}
				for (; ++o < s;) {
					d = i[o];
					var f = d[0], g = e[f], y = d[1];
					if (c && d[2]) {
						if (g === n && !(f in e)) return !1;
					} else {
						var b = new lC();
						if (a) var x = a(g, y, f, e, t, b);
						if (!(x === n ? iw(y, g, S | C, a, b) : x)) return !1;
					}
				}
				return !0;
			}
			function cw(e) {
				return !Pk(e) || xE(e) ? !1 : (jk(e) ? kb : ab).test(HE(e));
			}
			function lw(e) {
				return Fk(e) && qC(e) == my;
			}
			function uw(e) {
				return Fk(e) && sE(e) == hy;
			}
			function dw(e) {
				return Fk(e) && Nk(e.length) && !!rx[qC(e)];
			}
			function fw(e) {
				return typeof e == "function" ? e : e == null ? Bj : typeof e == "object" ? vk(e) ? vw(e[0], e[1]) : _w(e) : $j(e);
			}
			function pw(e) {
				if (!CE(e)) return $b(e);
				var t = [];
				for (var n in mb(e)) Cb.call(e, n) && n != "constructor" && t.push(n);
				return t;
			}
			function mw(e) {
				if (!Pk(e)) return OE(e);
				var t = CE(e), n = [];
				for (var i in e) i == "constructor" && (t || !Cb.call(e, i)) || n.push(i);
				return n;
			}
			function hw(e, t) {
				return e < t;
			}
			function gw(e, t) {
				var n = -1, i = bk(e) ? Jy(e.length) : [];
				return NC(e, function(e, a, o) {
					i[++n] = t(e, a, o);
				}), i;
			}
			function _w(e) {
				var t = nE(e);
				return t.length == 1 && t[0][2] ? TE(t[0][0], t[0][1]) : function(n) {
					return n === e || sw(n, e, t);
				};
			}
			function vw(e, t) {
				return vE(e) && wE(t) ? TE(VE(e), t) : function(i) {
					var a = EA(i, e);
					return a === n && a === t ? OA(i, e) : iw(t, a, S | C);
				};
			}
			function yw(e, t, i, a, o) {
				e !== t && BC(t, function(s, c) {
					if (o ||= new lC(), Pk(s)) bw(e, t, c, i, yw, a, o);
					else {
						var d = a ? a(NE(e, c), s, c + "", e, t, o) : n;
						d === n && (d = s), yC(e, c, d);
					}
				}, NA);
			}
			function bw(e, t, i, a, o, s, c) {
				var d = NE(e, i), f = NE(t, i), g = c.get(f);
				if (g) {
					yC(e, i, g);
					return;
				}
				var y = s ? s(d, f, i + "", e, t, c) : n, b = y === n;
				if (b) {
					var x = vk(f), S = !x && Ck(f), C = !x && !S && Xk(f);
					y = f, x || S || C ? vk(d) ? y = d : xk(d) ? y = mT(d) : S ? (b = !1, y = iT(f, !0)) : C ? (b = !1, y = lT(f, !0)) : y = [] : Wk(f) || _k(f) ? (y = d, _k(d) ? y = sA(d) : (!Pk(d) || jk(d)) && (y = fE(f))) : b = !1;
				}
				b && (c.set(f, y), o(y, f, a, s, c), c.delete(f)), yC(e, i, y);
			}
			function xw(e, t) {
				var i = e.length;
				if (i) return t += t < 0 ? i : 0, gE(t, i) ? e[t] : n;
			}
			function Sw(e, t, n) {
				t = t.length ? Px(t, function(e) {
					return vk(e) ? function(t) {
						return GC(t, e.length === 1 ? e[0] : e);
					} : e;
				}) : [Bj];
				var i = -1;
				t = Px(t, nS(eE()));
				var a = gw(e, function(e, n, a) {
					return {
						criteria: Px(t, function(t) {
							return t(e);
						}),
						index: ++i,
						value: e
					};
				});
				return Zx(a, function(e, t) {
					return dT(e, t, n);
				});
			}
			function Cw(e, t) {
				return ww(e, t, function(t, n) {
					return OA(e, n);
				});
			}
			function ww(e, t, n) {
				for (var i = -1, a = t.length, o = {}; ++i < a;) {
					var s = t[i], c = GC(e, s);
					n(c, s) && Pw(o, eT(s, e), c);
				}
				return o;
			}
			function Tw(e) {
				return function(t) {
					return GC(t, e);
				};
			}
			function Ew(e, t, n, i) {
				var a = i ? Gx : Wx, o = -1, s = t.length, c = e;
				for (e === t && (t = mT(t)), n && (c = Px(e, nS(n))); ++o < s;) for (var d = 0, f = t[o], g = n ? n(f) : f; (d = a(c, g, d, i)) > -1;) c !== e && Lb.call(c, d, 1), Lb.call(e, d, 1);
				return e;
			}
			function Dw(e, t) {
				for (var n = e ? t.length : 0, i = n - 1; n--;) {
					var a = t[n];
					if (n == i || a !== o) {
						var o = a;
						gE(a) ? Lb.call(e, a, 1) : Kw(e, a);
					}
				}
				return e;
			}
			function Ow(e, t) {
				return e + Kb(lx() * (t - e + 1));
			}
			function kw(e, t, n, i) {
				for (var a = -1, o = ex(Gb((t - e) / (n || 1)), 0), s = Jy(o); o--;) s[i ? o : ++a] = e, e += n;
				return s;
			}
			function Aw(e, t) {
				var n = "";
				if (!e || t < 1 || t > q) return n;
				do
					t % 2 && (n += e), t = Kb(t / 2), t && (e += e);
				while (t);
				return n;
			}
			function jw(e, t) {
				return IE(AE(e, t, Bj), e + "");
			}
			function Mw(e) {
				return gC(ZA(e));
			}
			function Nw(e, t) {
				var n = ZA(e);
				return zE(n, DC(t, 0, n.length));
			}
			function Pw(e, t, i, a) {
				if (!Pk(e)) return e;
				t = eT(t, e);
				for (var o = -1, s = t.length, c = s - 1, d = e; d != null && ++o < s;) {
					var f = VE(t[o]), g = i;
					if (f === "__proto__" || f === "constructor" || f === "prototype") return e;
					if (o != c) {
						var y = d[f];
						g = a ? a(y, f, d) : n, g === n && (g = Pk(y) ? y : gE(t[o + 1]) ? [] : {});
					}
					bC(d, f, g), d = d[f];
				}
				return e;
			}
			var Fw = Bx ? function(e, t) {
				return Bx.set(e, t), e;
			} : Bj, Iw = Vb ? function(e, t) {
				return Vb(e, "toString", {
					configurable: !0,
					enumerable: !1,
					value: Ij(t),
					writable: !0
				});
			} : Bj;
			function Lw(e) {
				return zE(ZA(e));
			}
			function Rw(e, t, n) {
				var i = -1, a = e.length;
				t < 0 && (t = -t > a ? 0 : a + t), n = n > a ? a : n, n < 0 && (n += a), a = t > n ? 0 : n - t >>> 0, t >>>= 0;
				for (var o = Jy(a); ++i < a;) o[i] = e[i + t];
				return o;
			}
			function zw(e, t) {
				var n;
				return NC(e, function(e, i, a) {
					return n = t(e, i, a), !n;
				}), !!n;
			}
			function Bw(e, t, n) {
				var i = 0, a = e == null ? i : e.length;
				if (typeof t == "number" && t === t && a <= Zv) {
					for (; i < a;) {
						var o = i + a >>> 1, s = e[o];
						s !== null && !Yk(s) && (n ? s <= t : s < t) ? i = o + 1 : a = o;
					}
					return a;
				}
				return Vw(e, t, Bj, n);
			}
			function Vw(e, t, i, a) {
				var o = 0, s = e == null ? 0 : e.length;
				if (s === 0) return 0;
				t = i(t);
				for (var c = t !== t, d = t === null, f = Yk(t), g = t === n; o < s;) {
					var y = Kb((o + s) / 2), b = i(e[y]), x = b !== n, S = b === null, C = b === b, w = Yk(b);
					if (c) var E = a || C;
					else E = g ? C && (a || x) : d ? C && x && (a || !S) : f ? C && x && !S && (a || !w) : S || w ? !1 : a ? b <= t : b < t;
					E ? o = y + 1 : s = y;
				}
				return ax(s, Xv);
			}
			function Hw(e, t) {
				for (var n = -1, i = e.length, a = 0, o = []; ++n < i;) {
					var s = e[n], c = t ? t(s) : s;
					if (!n || !mk(c, d)) {
						var d = c;
						o[a++] = s === 0 ? 0 : s;
					}
				}
				return o;
			}
			function Uw(e) {
				return typeof e == "number" ? e : Yk(e) ? Jv : +e;
			}
			function Ww(e) {
				if (typeof e == "string") return e;
				if (vk(e)) return Px(e, Ww) + "";
				if (Yk(e)) return PS ? PS.call(e) : "";
				var t = e + "";
				return t == "0" && 1 / e == -Kv ? "-0" : t;
			}
			function Gw(e, t, n) {
				var i = -1, o = Mx, s = e.length, c = !0, d = [], f = d;
				if (n) c = !1, o = Nx;
				else if (s >= a) {
					var g = t ? null : zT(e);
					if (g) return vS(g);
					c = !1, o = iS, f = new oC();
				} else f = t ? [] : d;
				outer: for (; ++i < s;) {
					var y = e[i], b = t ? t(y) : y;
					if (y = n || y !== 0 ? y : 0, c && b === b) {
						for (var x = f.length; x--;) if (f[x] === b) continue outer;
						t && f.push(b), d.push(y);
					} else o(f, b, n) || (f !== d && f.push(b), d.push(y));
				}
				return d;
			}
			function Kw(e, t) {
				t = eT(t, e);
				var n = -1, i = t.length;
				if (!i) return !0;
				for (var a = e == null || typeof e != "object" && typeof e != "function"; ++n < i;) {
					var o = t[n];
					if (typeof o == "string") {
						if (o === "__proto__" && !Cb.call(e, "__proto__")) return !1;
						if (o === "constructor" && n + 1 < i && typeof t[n + 1] == "string" && t[n + 1] === "prototype") {
							if (a && n === 0) continue;
							return !1;
						}
					}
				}
				var s = jE(e, t);
				return s == null || delete s[VE(hD(t))];
			}
			function qw(e, t, n, i) {
				return Pw(e, t, n(GC(e, t)), i);
			}
			function Jw(e, t, n, i) {
				for (var a = e.length, o = i ? a : -1; (i ? o-- : ++o < a) && t(e[o], o, e););
				return n ? Rw(e, i ? 0 : o, i ? o + 1 : a) : Rw(e, i ? o + 1 : 0, i ? a : o);
			}
			function Yw(e, t) {
				var n = e;
				return n instanceof RS && (n = n.value()), Ix(t, function(e, t) {
					return t.func.apply(t.thisArg, Fx([e], t.args));
				}, n);
			}
			function Xw(e, t, n) {
				var i = e.length;
				if (i < 2) return i ? Gw(e[0]) : [];
				for (var a = -1, o = Jy(i); ++a < i;) for (var s = e[a], c = -1; ++c < i;) c != a && (o[a] = MC(o[a] || s, e[c], t, n));
				return Gw(zC(o, 1), t, n);
			}
			function Zw(e, t, i) {
				for (var a = -1, o = e.length, s = t.length, c = {}; ++a < o;) {
					var d = a < s ? t[a] : n;
					i(c, e[a], d);
				}
				return c;
			}
			function Qw(e) {
				return xk(e) ? e : [];
			}
			function $w(e) {
				return typeof e == "function" ? e : Bj;
			}
			function eT(e, t) {
				return vk(e) ? e : vE(e, t) ? [e] : BE(lA(e));
			}
			var tT = jw;
			function nT(e, t, i) {
				var a = e.length;
				return i = i === n ? a : i, !t && i >= a ? e : Rw(e, t, i);
			}
			var rT = Hb || function(e) {
				return mx.clearTimeout(e);
			};
			function iT(e, t) {
				if (t) return e.slice();
				var n = e.length, i = Nb ? Nb(n) : new e.constructor(n);
				return e.copy(i), i;
			}
			function aT(e) {
				var t = new e.constructor(e.byteLength);
				return new Mb(t).set(new Mb(e)), t;
			}
			function oT(e, t) {
				var n = t ? aT(e.buffer) : e.buffer;
				return new e.constructor(n, e.byteOffset, e.byteLength);
			}
			function sT(e) {
				var t = new e.constructor(e.source, nb.exec(e));
				return t.lastIndex = e.lastIndex, t;
			}
			function cT(e) {
				return NS ? mb(NS.call(e)) : {};
			}
			function lT(e, t) {
				var n = t ? aT(e.buffer) : e.buffer;
				return new e.constructor(n, e.byteOffset, e.length);
			}
			function uT(e, t) {
				if (e !== t) {
					var i = e !== n, a = e === null, o = e === e, s = Yk(e), c = t !== n, d = t === null, f = t === t, g = Yk(t);
					if (!d && !g && !s && e > t || s && c && f && !d && !g || a && c && f || !i && f || !o) return 1;
					if (!a && !s && !g && e < t || g && i && o && !a && !s || d && i && o || !c && o || !f) return -1;
				}
				return 0;
			}
			function dT(e, t, n) {
				for (var i = -1, a = e.criteria, o = t.criteria, s = a.length, c = n.length; ++i < s;) {
					var d = uT(a[i], o[i]);
					if (d) {
						if (i >= c) return d;
						var f = n[i];
						return d * (f == "desc" ? -1 : 1);
					}
				}
				return e.index - t.index;
			}
			function fT(e, t, n, i) {
				for (var a = -1, o = e.length, s = n.length, c = -1, d = t.length, f = ex(o - s, 0), g = Jy(d + f), y = !i; ++c < d;) g[c] = t[c];
				for (; ++a < s;) (y || a < o) && (g[n[a]] = e[a]);
				for (; f--;) g[c++] = e[a++];
				return g;
			}
			function pT(e, t, n, i) {
				for (var a = -1, o = e.length, s = -1, c = n.length, d = -1, f = t.length, g = ex(o - c, 0), y = Jy(g + f), b = !i; ++a < g;) y[a] = e[a];
				for (var x = a; ++d < f;) y[x + d] = t[d];
				for (; ++s < c;) (b || a < o) && (y[x + n[s]] = e[a++]);
				return y;
			}
			function mT(e, t) {
				var n = -1, i = e.length;
				for (t ||= Jy(i); ++n < i;) t[n] = e[n];
				return t;
			}
			function hT(e, t, i, a) {
				var o = !i;
				i ||= {};
				for (var s = -1, c = t.length; ++s < c;) {
					var d = t[s], f = a ? a(i[d], e[d], d, i, e) : n;
					f === n && (f = e[d]), o ? TC(i, d, f) : bC(i, d, f);
				}
				return i;
			}
			function gT(e, t) {
				return hT(e, aE(e), t);
			}
			function _T(e, t) {
				return hT(e, oE(e), t);
			}
			function vT(e, t) {
				return function(n, i) {
					var a = vk(n) ? Dx : SC, o = t ? t() : {};
					return a(n, e, eE(i, 2), o);
				};
			}
			function yT(e) {
				return jw(function(t, i) {
					var a = -1, o = i.length, s = o > 1 ? i[o - 1] : n, c = o > 2 ? i[2] : n;
					for (s = e.length > 3 && typeof s == "function" ? (o--, s) : n, c && _E(i[0], i[1], c) && (s = o < 3 ? n : s, o = 1), t = mb(t); ++a < o;) {
						var d = i[a];
						d && e(t, d, a, s);
					}
					return t;
				});
			}
			function bT(e, t) {
				return function(n, i) {
					if (n == null) return n;
					if (!bk(n)) return e(n, i);
					for (var a = n.length, o = t ? a : -1, s = mb(n); (t ? o-- : ++o < a) && i(s[o], o, s) !== !1;);
					return n;
				};
			}
			function xT(e) {
				return function(t, n, i) {
					for (var a = -1, o = mb(t), s = i(t), c = s.length; c--;) {
						var d = s[e ? c : ++a];
						if (n(o[d], d, o) === !1) break;
					}
					return t;
				};
			}
			function ST(e, t, n) {
				var i = t & w, a = TT(e);
				function o() {
					return (this && this !== mx && this instanceof o ? a : e).apply(i ? n : this, arguments);
				}
				return o;
			}
			function CT(e) {
				return function(t) {
					t = lA(t);
					var i = fS(t) ? CS(t) : n, a = i ? i[0] : t.charAt(0), o = i ? nT(i, 1).join("") : t.slice(1);
					return a[e]() + o;
				};
			}
			function wT(e) {
				return function(t) {
					return Ix(jj(ij(t).replace(Yb, "")), e, "");
				};
			}
			function TT(e) {
				return function() {
					var t = arguments;
					switch (t.length) {
						case 0: return new e();
						case 1: return new e(t[0]);
						case 2: return new e(t[0], t[1]);
						case 3: return new e(t[0], t[1], t[2]);
						case 4: return new e(t[0], t[1], t[2], t[3]);
						case 5: return new e(t[0], t[1], t[2], t[3], t[4]);
						case 6: return new e(t[0], t[1], t[2], t[3], t[4], t[5]);
						case 7: return new e(t[0], t[1], t[2], t[3], t[4], t[5], t[6]);
					}
					var n = FS(e.prototype), i = e.apply(n, t);
					return Pk(i) ? i : n;
				};
			}
			function ET(e, t, i) {
				var a = TT(e);
				function o() {
					for (var s = arguments.length, c = Jy(s), d = s, f = $T(o); d--;) c[d] = arguments[d];
					var g = s < 3 && c[0] !== f && c[s - 1] !== f ? [] : _S(c, f);
					if (s -= g.length, s < i) return LT(e, t, kT, o.placeholder, n, c, g, n, n, i - s);
					var y = this && this !== mx && this instanceof o ? a : e;
					return Ex(y, this, c);
				}
				return o;
			}
			function DT(e) {
				return function(t, i, a) {
					var o = mb(t);
					if (!bk(t)) {
						var s = eE(i, 3);
						t = MA(t), i = function(e) {
							return s(o[e], e, o);
						};
					}
					var c = e(t, i, a);
					return c > -1 ? o[s ? t[c] : c] : n;
				};
			}
			function OT(e) {
				return JT(function(t) {
					var i = t.length, a = i, o = LS.prototype.thru;
					for (e && t.reverse(); a--;) {
						var c = t[a];
						if (typeof c != "function") throw new _b(s);
						if (o && !d && QT(c) == "wrapper") var d = new LS([], !0);
					}
					for (a = d ? a : i; ++a < i;) {
						c = t[a];
						var f = QT(c), g = f == "wrapper" ? ZT(c) : n;
						d = g && bE(g[0]) && g[1] == (I | A | M | R) && !g[4].length && g[9] == 1 ? d[QT(g[0])].apply(d, g[3]) : c.length == 1 && bE(c) ? d[f]() : d.thru(c);
					}
					return function() {
						var e = arguments, n = e[0];
						if (d && e.length == 1 && vk(n)) return d.plant(n).value();
						for (var a = 0, o = i ? t[a].apply(this, e) : n; ++a < i;) o = t[a].call(this, o);
						return o;
					};
				});
			}
			function kT(e, t, i, a, o, s, c, d, f, g) {
				var y = t & I, b = t & w, x = t & E, S = t & (A | j), C = t & zv, O = x ? n : TT(e);
				function M() {
					for (var n = arguments.length, w = Jy(n), E = n; E--;) w[E] = arguments[E];
					if (S) var A = $T(M), j = sS(w, A);
					if (a && (w = fT(w, a, o, S)), s && (w = pT(w, s, c, S)), n -= j, S && n < g) {
						var F = _S(w, A);
						return LT(e, t, kT, M.placeholder, i, w, F, d, f, g - n);
					}
					var I = b ? i : this, R = x ? I[e] : e;
					return n = w.length, d ? w = ME(w, d) : C && n > 1 && w.reverse(), y && f < n && (w.length = f), this && this !== mx && this instanceof M && (R = O || TT(R)), R.apply(I, w);
				}
				return M;
			}
			function AT(e, t) {
				return function(n, i) {
					return $C(n, e, t(i), {});
				};
			}
			function jT(e, t) {
				return function(i, a) {
					var o;
					if (i === n && a === n) return t;
					if (i !== n && (o = i), a !== n) {
						if (o === n) return a;
						typeof i == "string" || typeof a == "string" ? (i = Ww(i), a = Ww(a)) : (i = Uw(i), a = Uw(a)), o = e(i, a);
					}
					return o;
				};
			}
			function MT(e) {
				return JT(function(t) {
					return t = Px(t, nS(eE())), jw(function(n) {
						var i = this;
						return e(t, function(e) {
							return Ex(e, i, n);
						});
					});
				});
			}
			function NT(e, t) {
				t = t === n ? " " : Ww(t);
				var i = t.length;
				if (i < 2) return i ? Aw(t, e) : t;
				var a = Aw(t, Gb(e / SS(t)));
				return fS(t) ? nT(CS(a), 0, e).join("") : a.slice(0, e);
			}
			function PT(e, t, n, i) {
				var a = t & w, o = TT(e);
				function s() {
					for (var t = -1, c = arguments.length, d = -1, f = i.length, g = Jy(f + c), y = this && this !== mx && this instanceof s ? o : e; ++d < f;) g[d] = i[d];
					for (; c--;) g[d++] = arguments[++t];
					return Ex(y, a ? n : this, g);
				}
				return s;
			}
			function FT(e) {
				return function(t, i, a) {
					return a && typeof a != "number" && _E(t, i, a) && (i = a = n), t = rA(t), i === n ? (i = t, t = 0) : i = rA(i), a = a === n ? t < i ? 1 : -1 : rA(a), kw(t, i, a, e);
				};
			}
			function IT(e) {
				return function(t, n) {
					return typeof t == "string" && typeof n == "string" || (t = oA(t), n = oA(n)), e(t, n);
				};
			}
			function LT(e, t, i, a, o, s, c, d, f, g) {
				var y = t & A, b = y ? c : n, x = y ? n : c, S = y ? s : n, C = y ? n : s;
				t |= y ? M : F, t &= ~(y ? F : M), t & O || (t &= ~(w | E));
				var j = [
					e,
					t,
					o,
					S,
					b,
					C,
					x,
					d,
					f,
					g
				], I = i.apply(n, j);
				return bE(e) && PE(I, j), I.placeholder = a, LE(I, e, t);
			}
			function RT(e) {
				var t = pb[e];
				return function(e, n) {
					if (e = oA(e), n = n == null ? 0 : ax(iA(n), 292), n && Zb(e)) {
						var i = (lA(e) + "e").split("e"), a = t(i[0] + "e" + (+i[1] + n));
						return i = (lA(a) + "e").split("e"), +(i[0] + "e" + (+i[1] - n));
					}
					return t(e);
				};
			}
			var zT = vx && 1 / vS(new vx([, -0]))[1] == Kv ? function(e) {
				return new vx(e);
			} : Jj;
			function BT(e) {
				return function(t) {
					var n = sE(t);
					return n == cy ? hS(t) : n == hy ? yS(t) : eS(t, e(t));
				};
			}
			function VT(e, t, i, a, o, c, d, f) {
				var g = t & E;
				if (!g && typeof e != "function") throw new _b(s);
				var y = a ? a.length : 0;
				if (y || (t &= ~(M | F), a = o = n), d = d === n ? d : ex(iA(d), 0), f = f === n ? f : iA(f), y -= o ? o.length : 0, t & F) {
					var b = a, x = o;
					a = o = n;
				}
				var S = g ? n : ZT(e), C = [
					e,
					t,
					i,
					a,
					o,
					b,
					x,
					c,
					d,
					f
				];
				if (S && DE(C, S), e = C[0], t = C[1], i = C[2], a = C[3], o = C[4], f = C[9] = C[9] === n ? g ? 0 : e.length : ex(C[9] - y, 0), !f && t & (A | j) && (t &= ~(A | j)), !t || t == w) var O = ST(e, t, i);
				else O = t == A || t == j ? ET(e, t, f) : (t == M || t == (w | M)) && !o.length ? PT(e, t, i, a) : kT.apply(n, C);
				return LE((S ? Fw : PE)(O, C), e, t);
			}
			function HT(e, t, i, a) {
				return e === n || mk(e, bb[i]) && !Cb.call(a, i) ? t : e;
			}
			function UT(e, t, i, a, o, s) {
				return Pk(e) && Pk(t) && (s.set(t, e), yw(e, t, n, UT, s), s.delete(t)), e;
			}
			function WT(e) {
				return Wk(e) ? n : e;
			}
			function GT(e, t, i, a, o, s) {
				var c = i & S, d = e.length, f = t.length;
				if (d != f && !(c && f > d)) return !1;
				var g = s.get(e), y = s.get(t);
				if (g && y) return g == t && y == e;
				var b = -1, x = !0, w = i & C ? new oC() : n;
				for (s.set(e, t), s.set(t, e); ++b < d;) {
					var E = e[b], O = t[b];
					if (a) var A = c ? a(O, E, b, t, e, s) : a(E, O, b, e, t, s);
					if (A !== n) {
						if (A) continue;
						x = !1;
						break;
					}
					if (w) {
						if (!Rx(t, function(e, t) {
							if (!iS(w, t) && (E === e || o(E, e, i, a, s))) return w.push(t);
						})) {
							x = !1;
							break;
						}
					} else if (!(E === O || o(E, O, i, a, s))) {
						x = !1;
						break;
					}
				}
				return s.delete(e), s.delete(t), x;
			}
			function KT(e, t, n, i, a, o, s) {
				switch (n) {
					case Sy:
						if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1;
						e = e.buffer, t = t.buffer;
					case xy: return !(e.byteLength != t.byteLength || !o(new Mb(e), new Mb(t)));
					case ny:
					case ry:
					case ly: return mk(+e, +t);
					case ay: return e.name == t.name && e.message == t.message;
					case my:
					case gy: return e == t + "";
					case cy: var c = hS;
					case hy:
						var d = i & S;
						if (c ||= vS, e.size != t.size && !d) return !1;
						var f = s.get(e);
						if (f) return f == t;
						i |= C, s.set(e, t);
						var g = GT(c(e), c(t), i, a, o, s);
						return s.delete(e), g;
					case _y: if (NS) return NS.call(e) == NS.call(t);
				}
				return !1;
			}
			function qT(e, t, i, a, o, s) {
				var c = i & S, d = YT(e), f = d.length, g = YT(t).length;
				if (f != g && !c) return !1;
				for (var y = f; y--;) {
					var b = d[y];
					if (!(c ? b in t : Cb.call(t, b))) return !1;
				}
				var x = s.get(e), C = s.get(t);
				if (x && C) return x == t && C == e;
				var w = !0;
				s.set(e, t), s.set(t, e);
				for (var E = c; ++y < f;) {
					b = d[y];
					var O = e[b], A = t[b];
					if (a) var j = c ? a(A, O, b, t, e, s) : a(O, A, b, e, t, s);
					if (!(j === n ? O === A || o(O, A, i, a, s) : j)) {
						w = !1;
						break;
					}
					E ||= b == "constructor";
				}
				if (w && !E) {
					var M = e.constructor, F = t.constructor;
					M != F && "constructor" in e && "constructor" in t && !(typeof M == "function" && M instanceof M && typeof F == "function" && F instanceof F) && (w = !1);
				}
				return s.delete(e), s.delete(t), w;
			}
			function JT(e) {
				return IE(AE(e, n, iD), e + "");
			}
			function YT(e) {
				return KC(e, MA, aE);
			}
			function XT(e) {
				return KC(e, NA, oE);
			}
			var ZT = Bx ? function(e) {
				return Bx.get(e);
			} : Jj;
			function QT(e) {
				for (var t = e.name + "", n = Yx[t], i = Cb.call(Yx, t) ? n.length : 0; i--;) {
					var a = n[i], o = a.func;
					if (o == null || o == e) return a.name;
				}
				return t;
			}
			function $T(e) {
				return (Cb.call(Q, "placeholder") ? Q : e).placeholder;
			}
			function eE() {
				var e = Q.iteratee || Vj;
				return e = e === Vj ? fw : e, arguments.length ? e(arguments[0], arguments[1]) : e;
			}
			function tE(e, t) {
				var n = e.__data__;
				return yE(t) ? n[typeof t == "string" ? "string" : "hash"] : n.map;
			}
			function nE(e) {
				for (var t = MA(e), n = t.length; n--;) {
					var i = t[n], a = e[i];
					t[n] = [
						i,
						a,
						wE(a)
					];
				}
				return t;
			}
			function rE(e, t) {
				var i = dS(e, t);
				return cw(i) ? i : n;
			}
			function iE(e) {
				var t = Cb.call(e, Bb), i = e[Bb];
				try {
					e[Bb] = n;
					var a = !0;
				} catch {}
				var o = Eb.call(e);
				return a && (t ? e[Bb] = i : delete e[Bb]), o;
			}
			var aE = qb ? function(e) {
				return e == null ? [] : (e = mb(e), jx(qb(e), function(t) {
					return Ib.call(e, t);
				}));
			} : rM, oE = qb ? function(e) {
				for (var t = []; e;) Fx(t, aE(e)), e = Pb(e);
				return t;
			} : rM, sE = qC;
			(px && sE(new px(/* @__PURE__ */ new ArrayBuffer(1))) != Sy || hx && sE(new hx()) != cy || gx && sE(gx.resolve()) != fy || vx && sE(new vx()) != hy || yx && sE(new yx()) != yy) && (sE = function(e) {
				var t = qC(e), i = t == dy ? e.constructor : n, a = i ? HE(i) : "";
				if (a) switch (a) {
					case bS: return Sy;
					case ES: return cy;
					case DS: return fy;
					case AS: return hy;
					case jS: return yy;
				}
				return t;
			});
			function cE(e, t, n) {
				for (var i = -1, a = n.length; ++i < a;) {
					var o = n[i], s = o.size;
					switch (o.type) {
						case "drop":
							e += s;
							break;
						case "dropRight":
							t -= s;
							break;
						case "take":
							t = ax(t, e + s);
							break;
						case "takeRight":
							e = ex(e, t - s);
							break;
					}
				}
				return {
					start: e,
					end: t
				};
			}
			function lE(e) {
				var t = e.match(Xy);
				return t ? t[1].split(Zy) : [];
			}
			function uE(e, t, n) {
				t = eT(t, e);
				for (var i = -1, a = t.length, o = !1; ++i < a;) {
					var s = VE(t[i]);
					if (!(o = e != null && n(e, s))) break;
					e = e[s];
				}
				return o || ++i != a ? o : (a = e == null ? 0 : e.length, !!a && Nk(a) && gE(s, a) && (vk(e) || _k(e)));
			}
			function dE(e) {
				var t = e.length, n = new e.constructor(t);
				return t && typeof e[0] == "string" && Cb.call(e, "index") && (n.index = e.index, n.input = e.input), n;
			}
			function fE(e) {
				return typeof e.constructor == "function" && !CE(e) ? FS(Pb(e)) : {};
			}
			function pE(e, t, n) {
				var i = e.constructor;
				switch (t) {
					case xy: return aT(e);
					case ny:
					case ry: return new i(+e);
					case Sy: return oT(e, n);
					case Cy:
					case wy:
					case Ty:
					case Ey:
					case Dy:
					case Oy:
					case ky:
					case Ay:
					case jy: return lT(e, n);
					case cy: return new i();
					case ly:
					case gy: return new i(e);
					case my: return sT(e);
					case hy: return new i();
					case _y: return cT(e);
				}
			}
			function mE(e, t) {
				var n = t.length;
				if (!n) return e;
				var i = n - 1;
				return t[i] = (n > 1 ? "& " : "") + t[i], t = t.join(n > 2 ? ", " : " "), e.replace(Yy, "{\n/* [wrapped with " + t + "] */\n");
			}
			function hE(e) {
				return vk(e) || _k(e) || !!(Rb && e && e[Rb]);
			}
			function gE(e, t) {
				var n = typeof e;
				return t ??= q, !!t && (n == "number" || n != "symbol" && sb.test(e)) && e > -1 && e % 1 == 0 && e < t;
			}
			function _E(e, t, n) {
				if (!Pk(n)) return !1;
				var i = typeof t;
				return (i == "number" ? bk(n) && gE(t, n.length) : i == "string" && t in n) ? mk(n[t], e) : !1;
			}
			function vE(e, t) {
				if (vk(e)) return !1;
				var n = typeof e;
				return n == "number" || n == "symbol" || n == "boolean" || e == null || Yk(e) ? !0 : Uy.test(e) || !Hy.test(e) || t != null && e in mb(t);
			}
			function yE(e) {
				var t = typeof e;
				return t == "string" || t == "number" || t == "symbol" || t == "boolean" ? e !== "__proto__" : e === null;
			}
			function bE(e) {
				var t = QT(e), n = Q[t];
				if (typeof n != "function" || !(t in RS.prototype)) return !1;
				if (e === n) return !0;
				var i = ZT(n);
				return !!i && e === i[0];
			}
			function xE(e) {
				return !!Tb && Tb in e;
			}
			var SE = xb ? jk : iM;
			function CE(e) {
				var t = e && e.constructor, n = typeof t == "function" && t.prototype || bb;
				return e === n;
			}
			function wE(e) {
				return e === e && !Pk(e);
			}
			function TE(e, t) {
				return function(i) {
					return i == null ? !1 : i[e] === t && (t !== n || e in mb(i));
				};
			}
			function EE(e) {
				var t = XO(e, function(e) {
					return n.size === f && n.clear(), e;
				}), n = t.cache;
				return t;
			}
			function DE(e, t) {
				var n = e[1], i = t[1], a = n | i, o = a < (w | E | I), s = i == I && n == A || i == I && n == R && e[7].length <= t[8] || i == (I | R) && t[7].length <= t[8] && n == A;
				if (!(o || s)) return e;
				i & w && (e[2] = t[2], a |= n & w ? 0 : O);
				var c = t[3];
				if (c) {
					var d = e[3];
					e[3] = d ? fT(d, c, t[4]) : c, e[4] = d ? _S(e[3], g) : t[4];
				}
				return c = t[5], c && (d = e[5], e[5] = d ? pT(d, c, t[6]) : c, e[6] = d ? _S(e[5], g) : t[6]), c = t[7], c && (e[7] = c), i & I && (e[8] = e[8] == null ? t[8] : ax(e[8], t[8])), e[9] ??= t[9], e[0] = t[0], e[1] = a, e;
			}
			function OE(e) {
				var t = [];
				if (e != null) for (var n in mb(e)) t.push(n);
				return t;
			}
			function kE(e) {
				return Eb.call(e);
			}
			function AE(e, t, i) {
				return t = ex(t === n ? e.length - 1 : t, 0), function() {
					for (var n = arguments, a = -1, o = ex(n.length - t, 0), s = Jy(o); ++a < o;) s[a] = n[t + a];
					a = -1;
					for (var c = Jy(t + 1); ++a < t;) c[a] = n[a];
					return c[t] = i(s), Ex(e, this, c);
				};
			}
			function jE(e, t) {
				return t.length < 2 ? e : GC(e, Rw(t, 0, -1));
			}
			function ME(e, t) {
				for (var i = e.length, a = ax(t.length, i), o = mT(e); a--;) {
					var s = t[a];
					e[a] = gE(s, i) ? o[s] : n;
				}
				return e;
			}
			function NE(e, t) {
				if (!(t === "constructor" && typeof e[t] == "function") && t != "__proto__") return e[t];
			}
			var PE = RE(Fw), FE = Wb || function(e, t) {
				return mx.setTimeout(e, t);
			}, IE = RE(Iw);
			function LE(e, t, n) {
				var i = t + "";
				return IE(e, mE(i, UE(lE(i), n)));
			}
			function RE(e) {
				var t = 0, i = 0;
				return function() {
					var a = ox(), o = Hv - (a - i);
					if (i = a, o > 0) {
						if (++t >= Vv) return arguments[0];
					} else t = 0;
					return e.apply(n, arguments);
				};
			}
			function zE(e, t) {
				var i = -1, a = e.length, o = a - 1;
				for (t = t === n ? a : t; ++i < t;) {
					var s = Ow(i, o), c = e[s];
					e[s] = e[i], e[i] = c;
				}
				return e.length = t, e;
			}
			var BE = EE(function(e) {
				var t = [];
				return e.charCodeAt(0) === 46 && t.push(""), e.replace(Wy, function(e, n, i, a) {
					t.push(i ? a.replace(eb, "$1") : n || e);
				}), t;
			});
			function VE(e) {
				if (typeof e == "string" || Yk(e)) return e;
				var t = e + "";
				return t == "0" && 1 / e == -Kv ? "-0" : t;
			}
			function HE(e) {
				if (e != null) {
					try {
						return Sb.call(e);
					} catch {}
					try {
						return e + "";
					} catch {}
				}
				return "";
			}
			function UE(e, t) {
				return Ox(Qv, function(n) {
					var i = "_." + n[0];
					t & n[1] && !Mx(e, i) && e.push(i);
				}), e.sort();
			}
			function WE(e) {
				if (e instanceof RS) return e.clone();
				var t = new LS(e.__wrapped__, e.__chain__);
				return t.__actions__ = mT(e.__actions__), t.__index__ = e.__index__, t.__values__ = e.__values__, t;
			}
			function GE(e, t, i) {
				t = (i ? _E(e, t, i) : t === n) ? 1 : ex(iA(t), 0);
				var a = e == null ? 0 : e.length;
				if (!a || t < 1) return [];
				for (var o = 0, s = 0, c = Jy(Gb(a / t)); o < a;) c[s++] = Rw(e, o, o += t);
				return c;
			}
			function KE(e) {
				for (var t = -1, n = e == null ? 0 : e.length, i = 0, a = []; ++t < n;) {
					var o = e[t];
					o && (a[i++] = o);
				}
				return a;
			}
			function qE() {
				var e = arguments.length;
				if (!e) return [];
				for (var t = Jy(e - 1), n = arguments[0], i = e; i--;) t[i - 1] = arguments[i];
				return Fx(vk(n) ? mT(n) : [n], zC(t, 1));
			}
			var JE = jw(function(e, t) {
				return xk(e) ? MC(e, zC(t, 1, xk, !0)) : [];
			}), YE = jw(function(e, t) {
				var i = hD(t);
				return xk(i) && (i = n), xk(e) ? MC(e, zC(t, 1, xk, !0), eE(i, 2)) : [];
			}), XE = jw(function(e, t) {
				var i = hD(t);
				return xk(i) && (i = n), xk(e) ? MC(e, zC(t, 1, xk, !0), n, i) : [];
			});
			function ZE(e, t, i) {
				var a = e == null ? 0 : e.length;
				return a ? (t = i || t === n ? 1 : iA(t), Rw(e, t < 0 ? 0 : t, a)) : [];
			}
			function QE(e, t, i) {
				var a = e == null ? 0 : e.length;
				return a ? (t = i || t === n ? 1 : iA(t), t = a - t, Rw(e, 0, t < 0 ? 0 : t)) : [];
			}
			function $E(e, t) {
				return e && e.length ? Jw(e, eE(t, 3), !0, !0) : [];
			}
			function eD(e, t) {
				return e && e.length ? Jw(e, eE(t, 3), !0) : [];
			}
			function tD(e, t, n, i) {
				var a = e == null ? 0 : e.length;
				return a ? (n && typeof n != "number" && _E(e, t, n) && (n = 0, i = a), LC(e, t, n, i)) : [];
			}
			function nD(e, t, n) {
				var i = e == null ? 0 : e.length;
				if (!i) return -1;
				var a = n == null ? 0 : iA(n);
				return a < 0 && (a = ex(i + a, 0)), Ux(e, eE(t, 3), a);
			}
			function rD(e, t, i) {
				var a = e == null ? 0 : e.length;
				if (!a) return -1;
				var o = a - 1;
				return i !== n && (o = iA(i), o = i < 0 ? ex(a + o, 0) : ax(o, a - 1)), Ux(e, eE(t, 3), o, !0);
			}
			function iD(e) {
				return e != null && e.length ? zC(e, 1) : [];
			}
			function aD(e) {
				return e != null && e.length ? zC(e, Kv) : [];
			}
			function oD(e, t) {
				return e != null && e.length ? (t = t === n ? 1 : iA(t), zC(e, t)) : [];
			}
			function sD(e) {
				for (var t = -1, n = e == null ? 0 : e.length, i = {}; ++t < n;) {
					var a = e[t];
					i[a[0]] = a[1];
				}
				return i;
			}
			function cD(e) {
				return e && e.length ? e[0] : n;
			}
			function lD(e, t, n) {
				var i = e == null ? 0 : e.length;
				if (!i) return -1;
				var a = n == null ? 0 : iA(n);
				return a < 0 && (a = ex(i + a, 0)), Wx(e, t, a);
			}
			function uD(e) {
				return e != null && e.length ? Rw(e, 0, -1) : [];
			}
			var dD = jw(function(e) {
				var t = Px(e, Qw);
				return t.length && t[0] === e[0] ? QC(t) : [];
			}), fD = jw(function(e) {
				var t = hD(e), i = Px(e, Qw);
				return t === hD(i) ? t = n : i.pop(), i.length && i[0] === e[0] ? QC(i, eE(t, 2)) : [];
			}), pD = jw(function(e) {
				var t = hD(e), i = Px(e, Qw);
				return t = typeof t == "function" ? t : n, t && i.pop(), i.length && i[0] === e[0] ? QC(i, n, t) : [];
			});
			function mD(e, t) {
				return e == null ? "" : Qb.call(e, t);
			}
			function hD(e) {
				var t = e == null ? 0 : e.length;
				return t ? e[t - 1] : n;
			}
			function gD(e, t, i) {
				var a = e == null ? 0 : e.length;
				if (!a) return -1;
				var o = a;
				return i !== n && (o = iA(i), o = o < 0 ? ex(a + o, 0) : ax(o, a - 1)), t === t ? xS(e, t, o) : Ux(e, Kx, o, !0);
			}
			function _D(e, t) {
				return e && e.length ? xw(e, iA(t)) : n;
			}
			var vD = jw(yD);
			function yD(e, t) {
				return e && e.length && t && t.length ? Ew(e, t) : e;
			}
			function bD(e, t, n) {
				return e && e.length && t && t.length ? Ew(e, t, eE(n, 2)) : e;
			}
			function xD(e, t, i) {
				return e && e.length && t && t.length ? Ew(e, t, n, i) : e;
			}
			var SD = JT(function(e, t) {
				var n = e == null ? 0 : e.length, i = EC(e, t);
				return Dw(e, Px(t, function(e) {
					return gE(e, n) ? +e : e;
				}).sort(uT)), i;
			});
			function CD(e, t) {
				var n = [];
				if (!(e && e.length)) return n;
				var i = -1, a = [], o = e.length;
				for (t = eE(t, 3); ++i < o;) {
					var s = e[i];
					t(s, i, e) && (n.push(s), a.push(i));
				}
				return Dw(e, a), n;
			}
			function wD(e) {
				return e == null ? e : fx.call(e);
			}
			function TD(e, t, i) {
				var a = e == null ? 0 : e.length;
				return a ? (i && typeof i != "number" && _E(e, t, i) ? (t = 0, i = a) : (t = t == null ? 0 : iA(t), i = i === n ? a : iA(i)), Rw(e, t, i)) : [];
			}
			function ED(e, t) {
				return Bw(e, t);
			}
			function DD(e, t, n) {
				return Vw(e, t, eE(n, 2));
			}
			function OD(e, t) {
				var n = e == null ? 0 : e.length;
				if (n) {
					var i = Bw(e, t);
					if (i < n && mk(e[i], t)) return i;
				}
				return -1;
			}
			function kD(e, t) {
				return Bw(e, t, !0);
			}
			function AD(e, t, n) {
				return Vw(e, t, eE(n, 2), !0);
			}
			function jD(e, t) {
				if (e != null && e.length) {
					var n = Bw(e, t, !0) - 1;
					if (mk(e[n], t)) return n;
				}
				return -1;
			}
			function MD(e) {
				return e && e.length ? Hw(e) : [];
			}
			function ND(e, t) {
				return e && e.length ? Hw(e, eE(t, 2)) : [];
			}
			function PD(e) {
				var t = e == null ? 0 : e.length;
				return t ? Rw(e, 1, t) : [];
			}
			function FD(e, t, i) {
				return e && e.length ? (t = i || t === n ? 1 : iA(t), Rw(e, 0, t < 0 ? 0 : t)) : [];
			}
			function ID(e, t, i) {
				var a = e == null ? 0 : e.length;
				return a ? (t = i || t === n ? 1 : iA(t), t = a - t, Rw(e, t < 0 ? 0 : t, a)) : [];
			}
			function LD(e, t) {
				return e && e.length ? Jw(e, eE(t, 3), !1, !0) : [];
			}
			function RD(e, t) {
				return e && e.length ? Jw(e, eE(t, 3)) : [];
			}
			var zD = jw(function(e) {
				return Gw(zC(e, 1, xk, !0));
			}), BD = jw(function(e) {
				var t = hD(e);
				return xk(t) && (t = n), Gw(zC(e, 1, xk, !0), eE(t, 2));
			}), VD = jw(function(e) {
				var t = hD(e);
				return t = typeof t == "function" ? t : n, Gw(zC(e, 1, xk, !0), n, t);
			});
			function HD(e) {
				return e && e.length ? Gw(e) : [];
			}
			function UD(e, t) {
				return e && e.length ? Gw(e, eE(t, 2)) : [];
			}
			function WD(e, t) {
				return t = typeof t == "function" ? t : n, e && e.length ? Gw(e, n, t) : [];
			}
			function GD(e) {
				if (!(e && e.length)) return [];
				var t = 0;
				return e = jx(e, function(e) {
					if (xk(e)) return t = ex(e.length, t), !0;
				}), $x(t, function(t) {
					return Px(e, Jx(t));
				});
			}
			function KD(e, t) {
				if (!(e && e.length)) return [];
				var i = GD(e);
				return t == null ? i : Px(i, function(e) {
					return Ex(t, n, e);
				});
			}
			var qD = jw(function(e, t) {
				return xk(e) ? MC(e, t) : [];
			}), JD = jw(function(e) {
				return Xw(jx(e, xk));
			}), YD = jw(function(e) {
				var t = hD(e);
				return xk(t) && (t = n), Xw(jx(e, xk), eE(t, 2));
			}), XD = jw(function(e) {
				var t = hD(e);
				return t = typeof t == "function" ? t : n, Xw(jx(e, xk), n, t);
			}), ZD = jw(GD);
			function QD(e, t) {
				return Zw(e || [], t || [], bC);
			}
			function $D(e, t) {
				return Zw(e || [], t || [], Pw);
			}
			var eO = jw(function(e) {
				var t = e.length, i = t > 1 ? e[t - 1] : n;
				return i = typeof i == "function" ? (e.pop(), i) : n, KD(e, i);
			});
			function tO(e) {
				var t = Q(e);
				return t.__chain__ = !0, t;
			}
			function nO(e, t) {
				return t(e), e;
			}
			function rO(e, t) {
				return t(e);
			}
			var iO = JT(function(e) {
				var t = e.length, i = t ? e[0] : 0, a = this.__wrapped__, o = function(t) {
					return EC(t, e);
				};
				return t > 1 || this.__actions__.length || !(a instanceof RS) || !gE(i) ? this.thru(o) : (a = a.slice(i, +i + (t ? 1 : 0)), a.__actions__.push({
					func: rO,
					args: [o],
					thisArg: n
				}), new LS(a, this.__chain__).thru(function(e) {
					return t && !e.length && e.push(n), e;
				}));
			});
			function aO() {
				return tO(this);
			}
			function oO() {
				return new LS(this.value(), this.__chain__);
			}
			function sO() {
				this.__values__ === n && (this.__values__ = nA(this.value()));
				var e = this.__index__ >= this.__values__.length, t = e ? n : this.__values__[this.__index__++];
				return {
					done: e,
					value: t
				};
			}
			function cO() {
				return this;
			}
			function lO(e) {
				for (var t, i = this; i instanceof IS;) {
					var a = WE(i);
					a.__index__ = 0, a.__values__ = n, t ? o.__wrapped__ = a : t = a;
					var o = a;
					i = i.__wrapped__;
				}
				return o.__wrapped__ = e, t;
			}
			function uO() {
				var e = this.__wrapped__;
				if (e instanceof RS) {
					var t = e;
					return this.__actions__.length && (t = new RS(this)), t = t.reverse(), t.__actions__.push({
						func: rO,
						args: [wD],
						thisArg: n
					}), new LS(t, this.__chain__);
				}
				return this.thru(wD);
			}
			function dO() {
				return Yw(this.__wrapped__, this.__actions__);
			}
			var fO = vT(function(e, t, n) {
				Cb.call(e, n) ? ++e[n] : TC(e, n, 1);
			});
			function pO(e, t, i) {
				var a = vk(e) ? Ax : FC;
				return i && _E(e, t, i) && (t = n), a(e, eE(t, 3));
			}
			function mO(e, t) {
				return (vk(e) ? jx : RC)(e, eE(t, 3));
			}
			var hO = DT(nD), gO = DT(rD);
			function _O(e, t) {
				return zC(EO(e, t), 1);
			}
			function vO(e, t) {
				return zC(EO(e, t), Kv);
			}
			function yO(e, t, i) {
				return i = i === n ? 1 : iA(i), zC(EO(e, t), i);
			}
			function bO(e, t) {
				return (vk(e) ? Ox : NC)(e, eE(t, 3));
			}
			function xO(e, t) {
				return (vk(e) ? kx : PC)(e, eE(t, 3));
			}
			var SO = vT(function(e, t, n) {
				Cb.call(e, n) ? e[n].push(t) : TC(e, n, [t]);
			});
			function CO(e, t, n, i) {
				e = bk(e) ? e : ZA(e), n = n && !i ? iA(n) : 0;
				var a = e.length;
				return n < 0 && (n = ex(a + n, 0)), Jk(e) ? n <= a && e.indexOf(t, n) > -1 : !!a && Wx(e, t, n) > -1;
			}
			var wO = jw(function(e, t, n) {
				var i = -1, a = typeof t == "function", o = bk(e) ? Jy(e.length) : [];
				return NC(e, function(e) {
					o[++i] = a ? Ex(t, e, n) : ew(e, t, n);
				}), o;
			}), TO = vT(function(e, t, n) {
				TC(e, n, t);
			});
			function EO(e, t) {
				return (vk(e) ? Px : gw)(e, eE(t, 3));
			}
			function DO(e, t, i, a) {
				return e == null ? [] : (vk(t) || (t = t == null ? [] : [t]), i = a ? n : i, vk(i) || (i = i == null ? [] : [i]), Sw(e, t, i));
			}
			var OO = vT(function(e, t, n) {
				e[n ? 0 : 1].push(t);
			}, function() {
				return [[], []];
			});
			function kO(e, t, n) {
				var i = vk(e) ? Ix : Xx, a = arguments.length < 3;
				return i(e, eE(t, 4), n, a, NC);
			}
			function AO(e, t, n) {
				var i = vk(e) ? Lx : Xx, a = arguments.length < 3;
				return i(e, eE(t, 4), n, a, PC);
			}
			function jO(e, t) {
				return (vk(e) ? jx : RC)(e, ZO(eE(t, 3)));
			}
			function MO(e) {
				return (vk(e) ? gC : Mw)(e);
			}
			function NO(e, t, i) {
				return t = (i ? _E(e, t, i) : t === n) ? 1 : iA(t), (vk(e) ? _C : Nw)(e, t);
			}
			function PO(e) {
				return (vk(e) ? vC : Lw)(e);
			}
			function FO(e) {
				if (e == null) return 0;
				if (bk(e)) return Jk(e) ? SS(e) : e.length;
				var t = sE(e);
				return t == cy || t == hy ? e.size : pw(e).length;
			}
			function IO(e, t, i) {
				var a = vk(e) ? Rx : zw;
				return i && _E(e, t, i) && (t = n), a(e, eE(t, 3));
			}
			var LO = jw(function(e, t) {
				if (e == null) return [];
				var n = t.length;
				return n > 1 && _E(e, t[0], t[1]) ? t = [] : n > 2 && _E(t[0], t[1], t[2]) && (t = [t[0]]), Sw(e, zC(t, 1), []);
			}), RO = Ub || function() {
				return mx.Date.now();
			};
			function zO(e, t) {
				if (typeof t != "function") throw new _b(s);
				return e = iA(e), function() {
					if (--e < 1) return t.apply(this, arguments);
				};
			}
			function BO(e, t, i) {
				return t = i ? n : t, t = e && t == null ? e.length : t, VT(e, I, n, n, n, n, t);
			}
			function VO(e, t) {
				var i;
				if (typeof t != "function") throw new _b(s);
				return e = iA(e), function() {
					return --e > 0 && (i = t.apply(this, arguments)), e <= 1 && (t = n), i;
				};
			}
			var HO = jw(function(e, t, n) {
				var i = w;
				if (n.length) {
					var a = _S(n, $T(HO));
					i |= M;
				}
				return VT(e, i, t, n, a);
			}), UO = jw(function(e, t, n) {
				var i = w | E;
				if (n.length) {
					var a = _S(n, $T(UO));
					i |= M;
				}
				return VT(t, i, e, n, a);
			});
			function WO(e, t, i) {
				t = i ? n : t;
				var a = VT(e, A, n, n, n, n, n, t);
				return a.placeholder = WO.placeholder, a;
			}
			function GO(e, t, i) {
				t = i ? n : t;
				var a = VT(e, j, n, n, n, n, n, t);
				return a.placeholder = GO.placeholder, a;
			}
			function KO(e, t, i) {
				var a, o, c, d, f, g, y = 0, b = !1, x = !1, S = !0;
				if (typeof e != "function") throw new _b(s);
				t = oA(t) || 0, Pk(i) && (b = !!i.leading, x = "maxWait" in i, c = x ? ex(oA(i.maxWait) || 0, t) : c, S = "trailing" in i ? !!i.trailing : S);
				function C(t) {
					var i = a, s = o;
					return a = o = n, y = t, d = e.apply(s, i), d;
				}
				function w(e) {
					return y = e, f = FE(A, t), b ? C(e) : d;
				}
				function E(e) {
					var n = e - g, i = e - y, a = t - n;
					return x ? ax(a, c - i) : a;
				}
				function O(e) {
					var i = e - g, a = e - y;
					return g === n || i >= t || i < 0 || x && a >= c;
				}
				function A() {
					var e = RO();
					if (O(e)) return j(e);
					f = FE(A, E(e));
				}
				function j(e) {
					return f = n, S && a ? C(e) : (a = o = n, d);
				}
				function M() {
					f !== n && rT(f), y = 0, a = g = o = f = n;
				}
				function F() {
					return f === n ? d : j(RO());
				}
				function I() {
					var e = RO(), i = O(e);
					if (a = arguments, o = this, g = e, i) {
						if (f === n) return w(g);
						if (x) return rT(f), f = FE(A, t), C(g);
					}
					return f === n && (f = FE(A, t)), d;
				}
				return I.cancel = M, I.flush = F, I;
			}
			var qO = jw(function(e, t) {
				return jC(e, 1, t);
			}), JO = jw(function(e, t, n) {
				return jC(e, oA(t) || 0, n);
			});
			function YO(e) {
				return VT(e, zv);
			}
			function XO(e, t) {
				if (typeof e != "function" || t != null && typeof t != "function") throw new _b(s);
				var n = function() {
					var i = arguments, a = t ? t.apply(this, i) : i[0], o = n.cache;
					if (o.has(a)) return o.get(a);
					var s = e.apply(this, i);
					return n.cache = o.set(a, s) || o, s;
				};
				return n.cache = new (XO.Cache || eC)(), n;
			}
			XO.Cache = eC;
			function ZO(e) {
				if (typeof e != "function") throw new _b(s);
				return function() {
					var t = arguments;
					switch (t.length) {
						case 0: return !e.call(this);
						case 1: return !e.call(this, t[0]);
						case 2: return !e.call(this, t[0], t[1]);
						case 3: return !e.call(this, t[0], t[1], t[2]);
					}
					return !e.apply(this, t);
				};
			}
			function QO(e) {
				return VO(2, e);
			}
			var $O = tT(function(e, t) {
				t = t.length == 1 && vk(t[0]) ? Px(t[0], nS(eE())) : Px(zC(t, 1), nS(eE()));
				var n = t.length;
				return jw(function(i) {
					for (var a = -1, o = ax(i.length, n); ++a < o;) i[a] = t[a].call(this, i[a]);
					return Ex(e, this, i);
				});
			}), ek = jw(function(e, t) {
				var i = _S(t, $T(ek));
				return VT(e, M, n, t, i);
			}), tk = jw(function(e, t) {
				var i = _S(t, $T(tk));
				return VT(e, F, n, t, i);
			}), nk = JT(function(e, t) {
				return VT(e, R, n, n, n, t);
			});
			function rk(e, t) {
				if (typeof e != "function") throw new _b(s);
				return t = t === n ? t : iA(t), jw(e, t);
			}
			function ik(e, t) {
				if (typeof e != "function") throw new _b(s);
				return t = t == null ? 0 : ex(iA(t), 0), jw(function(n) {
					var i = n[t], a = nT(n, 0, t);
					return i && Fx(a, i), Ex(e, this, a);
				});
			}
			function ak(e, t, n) {
				var i = !0, a = !0;
				if (typeof e != "function") throw new _b(s);
				return Pk(n) && (i = "leading" in n ? !!n.leading : i, a = "trailing" in n ? !!n.trailing : a), KO(e, t, {
					leading: i,
					maxWait: t,
					trailing: a
				});
			}
			function ok(e) {
				return BO(e, 1);
			}
			function sk(e, t) {
				return ek($w(t), e);
			}
			function ck() {
				if (!arguments.length) return [];
				var e = arguments[0];
				return vk(e) ? e : [e];
			}
			function lk(e) {
				return OC(e, x);
			}
			function uk(e, t) {
				return t = typeof t == "function" ? t : n, OC(e, x, t);
			}
			function dk(e) {
				return OC(e, y | x);
			}
			function fk(e, t) {
				return t = typeof t == "function" ? t : n, OC(e, y | x, t);
			}
			function pk(e, t) {
				return t == null || AC(e, t, MA(t));
			}
			function mk(e, t) {
				return e === t || e !== e && t !== t;
			}
			var hk = IT(JC), gk = IT(function(e, t) {
				return e >= t;
			}), _k = tw(function() {
				return arguments;
			}()) ? tw : function(e) {
				return Fk(e) && Cb.call(e, "callee") && !Ib.call(e, "callee");
			}, vk = Jy.isArray, yk = bx ? nS(bx) : nw;
			function bk(e) {
				return e != null && Nk(e.length) && !jk(e);
			}
			function xk(e) {
				return Fk(e) && bk(e);
			}
			function Sk(e) {
				return e === !0 || e === !1 || Fk(e) && qC(e) == ny;
			}
			var Ck = Jb || iM, wk = xx ? nS(xx) : rw;
			function Tk(e) {
				return Fk(e) && e.nodeType === 1 && !Wk(e);
			}
			function Ek(e) {
				if (e == null) return !0;
				if (bk(e) && (vk(e) || typeof e == "string" || typeof e.splice == "function" || Ck(e) || Xk(e) || _k(e))) return !e.length;
				var t = sE(e);
				if (t == cy || t == hy) return !e.size;
				if (CE(e)) return !pw(e).length;
				for (var n in e) if (Cb.call(e, n)) return !1;
				return !0;
			}
			function Dk(e, t) {
				return iw(e, t);
			}
			function Ok(e, t, i) {
				i = typeof i == "function" ? i : n;
				var a = i ? i(e, t) : n;
				return a === n ? iw(e, t, n, i) : !!a;
			}
			function kk(e) {
				if (!Fk(e)) return !1;
				var t = qC(e);
				return t == ay || t == iy || typeof e.message == "string" && typeof e.name == "string" && !Wk(e);
			}
			function Ak(e) {
				return typeof e == "number" && Zb(e);
			}
			function jk(e) {
				if (!Pk(e)) return !1;
				var t = qC(e);
				return t == oy || t == sy || t == ty || t == py;
			}
			function Mk(e) {
				return typeof e == "number" && e == iA(e);
			}
			function Nk(e) {
				return typeof e == "number" && e > -1 && e % 1 == 0 && e <= q;
			}
			function Pk(e) {
				var t = typeof e;
				return e != null && (t == "object" || t == "function");
			}
			function Fk(e) {
				return typeof e == "object" && !!e;
			}
			var Ik = Sx ? nS(Sx) : ow;
			function Lk(e, t) {
				return e === t || sw(e, t, nE(t));
			}
			function Rk(e, t, i) {
				return i = typeof i == "function" ? i : n, sw(e, t, nE(t), i);
			}
			function zk(e) {
				return Uk(e) && e != +e;
			}
			function Bk(e) {
				if (SE(e)) throw new db(o);
				return cw(e);
			}
			function Vk(e) {
				return e === null;
			}
			function Hk(e) {
				return e == null;
			}
			function Uk(e) {
				return typeof e == "number" || Fk(e) && qC(e) == ly;
			}
			function Wk(e) {
				if (!Fk(e) || qC(e) != dy) return !1;
				var t = Pb(e);
				if (t === null) return !0;
				var n = Cb.call(t, "constructor") && t.constructor;
				return typeof n == "function" && n instanceof n && Sb.call(n) == Db;
			}
			var Gk = Cx ? nS(Cx) : lw;
			function Kk(e) {
				return Mk(e) && e >= -q && e <= q;
			}
			var qk = wx ? nS(wx) : uw;
			function Jk(e) {
				return typeof e == "string" || !vk(e) && Fk(e) && qC(e) == gy;
			}
			function Yk(e) {
				return typeof e == "symbol" || Fk(e) && qC(e) == _y;
			}
			var Xk = Tx ? nS(Tx) : dw;
			function Zk(e) {
				return e === n;
			}
			function Qk(e) {
				return Fk(e) && sE(e) == yy;
			}
			function $k(e) {
				return Fk(e) && qC(e) == by;
			}
			var eA = IT(hw), tA = IT(function(e, t) {
				return e <= t;
			});
			function nA(e) {
				if (!e) return [];
				if (bk(e)) return Jk(e) ? CS(e) : mT(e);
				if (zb && e[zb]) return mS(e[zb]());
				var t = sE(e);
				return (t == cy ? hS : t == hy ? vS : ZA)(e);
			}
			function rA(e) {
				return e ? (e = oA(e), e === Kv || e === -Kv ? (e < 0 ? -1 : 1) * qv : e === e ? e : 0) : e === 0 ? e : 0;
			}
			function iA(e) {
				var t = rA(e), n = t % 1;
				return t === t ? n ? t - n : t : 0;
			}
			function aA(e) {
				return e ? DC(iA(e), 0, Yv) : 0;
			}
			function oA(e) {
				if (typeof e == "number") return e;
				if (Yk(e)) return Jv;
				if (Pk(e)) {
					var t = typeof e.valueOf == "function" ? e.valueOf() : e;
					e = Pk(t) ? t + "" : t;
				}
				if (typeof e != "string") return e === 0 ? e : +e;
				e = tS(e);
				var n = ib.test(e);
				return n || ob.test(e) ? dx(e.slice(2), n ? 2 : 8) : rb.test(e) ? Jv : +e;
			}
			function sA(e) {
				return hT(e, NA(e));
			}
			function cA(e) {
				return e ? DC(iA(e), -q, q) : e === 0 ? e : 0;
			}
			function lA(e) {
				return e == null ? "" : Ww(e);
			}
			var uA = yT(function(e, t) {
				if (CE(t) || bk(t)) {
					hT(t, MA(t), e);
					return;
				}
				for (var n in t) Cb.call(t, n) && bC(e, n, t[n]);
			}), dA = yT(function(e, t) {
				hT(t, NA(t), e);
			}), fA = yT(function(e, t, n, i) {
				hT(t, NA(t), e, i);
			}), pA = yT(function(e, t, n, i) {
				hT(t, MA(t), e, i);
			}), mA = JT(EC);
			function hA(e, t) {
				var n = FS(e);
				return t == null ? n : CC(n, t);
			}
			var gA = jw(function(e, t) {
				e = mb(e);
				var i = -1, a = t.length, o = a > 2 ? t[2] : n;
				for (o && _E(t[0], t[1], o) && (a = 1); ++i < a;) for (var s = t[i], c = NA(s), d = -1, f = c.length; ++d < f;) {
					var g = c[d], y = e[g];
					(y === n || mk(y, bb[g]) && !Cb.call(e, g)) && (e[g] = s[g]);
				}
				return e;
			}), _A = jw(function(e) {
				return e.push(n, UT), Ex(LA, n, e);
			});
			function vA(e, t) {
				return Hx(e, eE(t, 3), HC);
			}
			function yA(e, t) {
				return Hx(e, eE(t, 3), UC);
			}
			function bA(e, t) {
				return e == null ? e : BC(e, eE(t, 3), NA);
			}
			function xA(e, t) {
				return e == null ? e : VC(e, eE(t, 3), NA);
			}
			function SA(e, t) {
				return e && HC(e, eE(t, 3));
			}
			function CA(e, t) {
				return e && UC(e, eE(t, 3));
			}
			function wA(e) {
				return e == null ? [] : WC(e, MA(e));
			}
			function TA(e) {
				return e == null ? [] : WC(e, NA(e));
			}
			function EA(e, t, i) {
				var a = e == null ? n : GC(e, t);
				return a === n ? i : a;
			}
			function DA(e, t) {
				return e != null && uE(e, t, YC);
			}
			function OA(e, t) {
				return e != null && uE(e, t, XC);
			}
			var kA = AT(function(e, t, n) {
				t != null && typeof t.toString != "function" && (t = Eb.call(t)), e[t] = n;
			}, Ij(Bj)), AA = AT(function(e, t, n) {
				t != null && typeof t.toString != "function" && (t = Eb.call(t)), Cb.call(e, t) ? e[t].push(n) : e[t] = [n];
			}, eE), jA = jw(ew);
			function MA(e) {
				return bk(e) ? hC(e) : pw(e);
			}
			function NA(e) {
				return bk(e) ? hC(e, !0) : mw(e);
			}
			function PA(e, t) {
				var n = {};
				return t = eE(t, 3), HC(e, function(e, i, a) {
					TC(n, t(e, i, a), e);
				}), n;
			}
			function FA(e, t) {
				var n = {};
				return t = eE(t, 3), HC(e, function(e, i, a) {
					TC(n, i, t(e, i, a));
				}), n;
			}
			var IA = yT(function(e, t, n) {
				yw(e, t, n);
			}), LA = yT(function(e, t, n, i) {
				yw(e, t, n, i);
			}), RA = JT(function(e, t) {
				var n = {};
				if (e == null) return n;
				var i = !1;
				t = Px(t, function(t) {
					return t = eT(t, e), i ||= t.length > 1, t;
				}), hT(e, XT(e), n), i && (n = OC(n, y | b | x, WT));
				for (var a = t.length; a--;) Kw(n, t[a]);
				return n;
			});
			function zA(e, t) {
				return VA(e, ZO(eE(t)));
			}
			var BA = JT(function(e, t) {
				return e == null ? {} : Cw(e, t);
			});
			function VA(e, t) {
				if (e == null) return {};
				var n = Px(XT(e), function(e) {
					return [e];
				});
				return t = eE(t), ww(e, n, function(e, n) {
					return t(e, n[0]);
				});
			}
			function HA(e, t, i) {
				t = eT(t, e);
				var a = -1, o = t.length;
				for (o || (o = 1, e = n); ++a < o;) {
					var s = e == null ? n : e[VE(t[a])];
					s === n && (a = o, s = i), e = jk(s) ? s.call(e) : s;
				}
				return e;
			}
			function UA(e, t, n) {
				return e == null ? e : Pw(e, t, n);
			}
			function WA(e, t, i, a) {
				return a = typeof a == "function" ? a : n, e == null ? e : Pw(e, t, i, a);
			}
			var GA = BT(MA), KA = BT(NA);
			function qA(e, t, n) {
				var i = vk(e), a = i || Ck(e) || Xk(e);
				if (t = eE(t, 4), n == null) {
					var o = e && e.constructor;
					n = a ? i ? new o() : [] : Pk(e) && jk(o) ? FS(Pb(e)) : {};
				}
				return (a ? Ox : HC)(e, function(e, i, a) {
					return t(n, e, i, a);
				}), n;
			}
			function JA(e, t) {
				return e == null ? !0 : Kw(e, t);
			}
			function YA(e, t, n) {
				return e == null ? e : qw(e, t, $w(n));
			}
			function XA(e, t, i, a) {
				return a = typeof a == "function" ? a : n, e == null ? e : qw(e, t, $w(i), a);
			}
			function ZA(e) {
				return e == null ? [] : rS(e, MA(e));
			}
			function QA(e) {
				return e == null ? [] : rS(e, NA(e));
			}
			function $A(e, t, i) {
				return i === n && (i = t, t = n), i !== n && (i = oA(i), i = i === i ? i : 0), t !== n && (t = oA(t), t = t === t ? t : 0), DC(oA(e), t, i);
			}
			function ej(e, t, i) {
				return t = rA(t), i === n ? (i = t, t = 0) : i = rA(i), e = oA(e), ZC(e, t, i);
			}
			function tj(e, t, i) {
				if (i && typeof i != "boolean" && _E(e, t, i) && (t = i = n), i === n && (typeof t == "boolean" ? (i = t, t = n) : typeof e == "boolean" && (i = e, e = n)), e === n && t === n ? (e = 0, t = 1) : (e = rA(e), t === n ? (t = e, e = 0) : t = rA(t)), e > t) {
					var a = e;
					e = t, t = a;
				}
				if (i || e % 1 || t % 1) {
					var o = lx();
					return ax(e + o * (t - e + ux("1e-" + ((o + "").length - 1))), t);
				}
				return Ow(e, t);
			}
			var nj = wT(function(e, t, n) {
				return t = t.toLowerCase(), e + (n ? rj(t) : t);
			});
			function rj(e) {
				return Aj(lA(e).toLowerCase());
			}
			function ij(e) {
				return e = lA(e), e && e.replace(cb, cS).replace(Xb, "");
			}
			function aj(e, t, i) {
				e = lA(e), t = Ww(t);
				var a = e.length;
				i = i === n ? a : DC(iA(i), 0, a);
				var o = i;
				return i -= t.length, i >= 0 && e.slice(i, o) == t;
			}
			function oj(e) {
				return e = lA(e), e && Ry.test(e) ? e.replace(Iy, lS) : e;
			}
			function sj(e) {
				return e = lA(e), e && Ky.test(e) ? e.replace(Gy, "\\$&") : e;
			}
			var cj = wT(function(e, t, n) {
				return e + (n ? "-" : "") + t.toLowerCase();
			}), lj = wT(function(e, t, n) {
				return e + (n ? " " : "") + t.toLowerCase();
			}), uj = CT("toLowerCase");
			function dj(e, t, n) {
				e = lA(e), t = iA(t);
				var i = t ? SS(e) : 0;
				if (!t || i >= t) return e;
				var a = (t - i) / 2;
				return NT(Kb(a), n) + e + NT(Gb(a), n);
			}
			function fj(e, t, n) {
				e = lA(e), t = iA(t);
				var i = t ? SS(e) : 0;
				return t && i < t ? e + NT(t - i, n) : e;
			}
			function pj(e, t, n) {
				e = lA(e), t = iA(t);
				var i = t ? SS(e) : 0;
				return t && i < t ? NT(t - i, n) + e : e;
			}
			function mj(e, t, n) {
				return n || t == null ? t = 0 : t &&= +t, sx(lA(e).replace(qy, ""), t || 0);
			}
			function hj(e, t, i) {
				return t = (i ? _E(e, t, i) : t === n) ? 1 : iA(t), Aw(lA(e), t);
			}
			function gj() {
				var e = arguments, t = lA(e[0]);
				return e.length < 3 ? t : t.replace(e[1], e[2]);
			}
			var _j = wT(function(e, t, n) {
				return e + (n ? "_" : "") + t.toLowerCase();
			});
			function vj(e, t, i) {
				return i && typeof i != "number" && _E(e, t, i) && (t = i = n), i = i === n ? Yv : i >>> 0, i ? (e = lA(e), e && (typeof t == "string" || t != null && !Gk(t)) && (t = Ww(t), !t && fS(e)) ? nT(CS(e), 0, i) : e.split(t, i)) : [];
			}
			var yj = wT(function(e, t, n) {
				return e + (n ? " " : "") + Aj(t);
			});
			function bj(e, t, n) {
				return e = lA(e), n = n == null ? 0 : DC(iA(n), 0, e.length), t = Ww(t), e.slice(n, n + t.length) == t;
			}
			function xj(e, t, i) {
				var a = Q.templateSettings;
				i && _E(e, t, i) && (t = n), e = lA(e), t = fA({}, t, a, HT);
				var o = fA({}, t.imports, a.imports, HT), s = MA(o), d = rS(o, s), f, g, y = 0, b = t.interpolate || lb, x = "__p += '", S = hb((t.escape || lb).source + "|" + b.source + "|" + (b === Vy ? tb : lb).source + "|" + (t.evaluate || lb).source + "|$", "g"), C = "//# sourceURL=" + (Cb.call(t, "sourceURL") ? (t.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++nx + "]") + "\n";
				e.replace(S, function(t, n, i, a, o, s) {
					return i ||= a, x += e.slice(y, s).replace(ub, uS), n && (f = !0, x += "' +\n__e(" + n + ") +\n'"), o && (g = !0, x += "';\n" + o + ";\n__p += '"), i && (x += "' +\n((__t = (" + i + ")) == null ? '' : __t) +\n'"), y = s + t.length, t;
				}), x += "';\n";
				var w = Cb.call(t, "variable") && t.variable;
				if (!w) x = "with (obj) {\n" + x + "\n}\n";
				else if ($y.test(w)) throw new db(c);
				x = (g ? x.replace(My, "") : x).replace(Ny, "$1").replace(Py, "$1;"), x = "function(" + (w || "obj") + ") {\n" + (w ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (f ? ", __e = _.escape" : "") + (g ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + x + "return __p\n}";
				var E = Mj(function() {
					return fb(s, C + "return " + x).apply(n, d);
				});
				if (E.source = x, kk(E)) throw E;
				return E;
			}
			function Sj(e) {
				return lA(e).toLowerCase();
			}
			function Cj(e) {
				return lA(e).toUpperCase();
			}
			function wj(e, t, i) {
				if (e = lA(e), e && (i || t === n)) return tS(e);
				if (!e || !(t = Ww(t))) return e;
				var a = CS(e), o = CS(t), s = aS(a, o), c = oS(a, o) + 1;
				return nT(a, s, c).join("");
			}
			function Tj(e, t, i) {
				if (e = lA(e), e && (i || t === n)) return e.slice(0, wS(e) + 1);
				if (!e || !(t = Ww(t))) return e;
				var a = CS(e), o = oS(a, CS(t)) + 1;
				return nT(a, 0, o).join("");
			}
			function Ej(e, t, i) {
				if (e = lA(e), e && (i || t === n)) return e.replace(qy, "");
				if (!e || !(t = Ww(t))) return e;
				var a = CS(e), o = aS(a, CS(t));
				return nT(a, o).join("");
			}
			function Dj(e, t) {
				var i = V, a = Bv;
				if (Pk(t)) {
					var o = "separator" in t ? t.separator : o;
					i = "length" in t ? iA(t.length) : i, a = "omission" in t ? Ww(t.omission) : a;
				}
				e = lA(e);
				var s = e.length;
				if (fS(e)) {
					var c = CS(e);
					s = c.length;
				}
				if (i >= s) return e;
				var d = i - SS(a);
				if (d < 1) return a;
				var f = c ? nT(c, 0, d).join("") : e.slice(0, d);
				if (o === n) return f + a;
				if (c && (d += f.length - d), Gk(o)) {
					if (e.slice(d).search(o)) {
						var g, y = f;
						for (o.global || (o = hb(o.source, lA(nb.exec(o)) + "g")), o.lastIndex = 0; g = o.exec(y);) var b = g.index;
						f = f.slice(0, b === n ? d : b);
					}
				} else if (e.indexOf(Ww(o), d) != d) {
					var x = f.lastIndexOf(o);
					x > -1 && (f = f.slice(0, x));
				}
				return f + a;
			}
			function Oj(e) {
				return e = lA(e), e && Ly.test(e) ? e.replace(Fy, TS) : e;
			}
			var kj = wT(function(e, t, n) {
				return e + (n ? " " : "") + t.toUpperCase();
			}), Aj = CT("toUpperCase");
			function jj(e, t, i) {
				return e = lA(e), t = i ? n : t, t === n ? pS(e) ? OS(e) : Vx(e) : e.match(t) || [];
			}
			var Mj = jw(function(e, t) {
				try {
					return Ex(e, n, t);
				} catch (e) {
					return kk(e) ? e : new db(e);
				}
			}), Nj = JT(function(e, t) {
				return Ox(t, function(t) {
					t = VE(t), TC(e, t, HO(e[t], e));
				}), e;
			});
			function Pj(e) {
				var t = e == null ? 0 : e.length, n = eE();
				return e = t ? Px(e, function(e) {
					if (typeof e[1] != "function") throw new _b(s);
					return [n(e[0]), e[1]];
				}) : [], jw(function(n) {
					for (var i = -1; ++i < t;) {
						var a = e[i];
						if (Ex(a[0], this, n)) return Ex(a[1], this, n);
					}
				});
			}
			function Fj(e) {
				return kC(OC(e, y));
			}
			function Ij(e) {
				return function() {
					return e;
				};
			}
			function Lj(e, t) {
				return e == null || e !== e ? t : e;
			}
			var Rj = OT(), zj = OT(!0);
			function Bj(e) {
				return e;
			}
			function Vj(e) {
				return fw(typeof e == "function" ? e : OC(e, y));
			}
			function Hj(e) {
				return _w(OC(e, y));
			}
			function Uj(e, t) {
				return vw(e, OC(t, y));
			}
			var Wj = jw(function(e, t) {
				return function(n) {
					return ew(n, e, t);
				};
			}), Gj = jw(function(e, t) {
				return function(n) {
					return ew(e, n, t);
				};
			});
			function Kj(e, t, n) {
				var i = MA(t), a = WC(t, i);
				n == null && !(Pk(t) && (a.length || !i.length)) && (n = t, t = e, e = this, a = WC(t, MA(t)));
				var o = !(Pk(n) && "chain" in n) || !!n.chain, s = jk(e);
				return Ox(a, function(n) {
					var i = t[n];
					e[n] = i, s && (e.prototype[n] = function() {
						var t = this.__chain__;
						if (o || t) {
							var n = e(this.__wrapped__);
							return (n.__actions__ = mT(this.__actions__)).push({
								func: i,
								args: arguments,
								thisArg: e
							}), n.__chain__ = t, n;
						}
						return i.apply(e, Fx([this.value()], arguments));
					});
				}), e;
			}
			function qj() {
				return mx._ === this && (mx._ = Ob), this;
			}
			function Jj() {}
			function Yj(e) {
				return e = iA(e), jw(function(t) {
					return xw(t, e);
				});
			}
			var Xj = MT(Px), Zj = MT(Ax), Qj = MT(Rx);
			function $j(e) {
				return vE(e) ? Jx(VE(e)) : Tw(e);
			}
			function eM(e) {
				return function(t) {
					return e == null ? n : GC(e, t);
				};
			}
			var tM = FT(), nM = FT(!0);
			function rM() {
				return [];
			}
			function iM() {
				return !1;
			}
			function aM() {
				return {};
			}
			function oM() {
				return "";
			}
			function sM() {
				return !0;
			}
			function cM(e, t) {
				if (e = iA(e), e < 1 || e > q) return [];
				var n = Yv, i = ax(e, Yv);
				t = eE(t), e -= Yv;
				for (var a = $x(i, t); ++n < e;) t(n);
				return a;
			}
			function lM(e) {
				return vk(e) ? Px(e, VE) : Yk(e) ? [e] : mT(BE(lA(e)));
			}
			function uM(e) {
				var t = ++wb;
				return lA(e) + t;
			}
			var dM = jT(function(e, t) {
				return e + t;
			}, 0), fM = RT("ceil"), pM = jT(function(e, t) {
				return e / t;
			}, 1), mM = RT("floor");
			function hM(e) {
				return e && e.length ? IC(e, Bj, JC) : n;
			}
			function gM(e, t) {
				return e && e.length ? IC(e, eE(t, 2), JC) : n;
			}
			function _M(e) {
				return qx(e, Bj);
			}
			function vM(e, t) {
				return qx(e, eE(t, 2));
			}
			function yM(e) {
				return e && e.length ? IC(e, Bj, hw) : n;
			}
			function bM(e, t) {
				return e && e.length ? IC(e, eE(t, 2), hw) : n;
			}
			var xM = jT(function(e, t) {
				return e * t;
			}, 1), SM = RT("round"), CM = jT(function(e, t) {
				return e - t;
			}, 0);
			function wM(e) {
				return e && e.length ? Qx(e, Bj) : 0;
			}
			function TM(e, t) {
				return e && e.length ? Qx(e, eE(t, 2)) : 0;
			}
			return Q.after = zO, Q.ary = BO, Q.assign = uA, Q.assignIn = dA, Q.assignInWith = fA, Q.assignWith = pA, Q.at = mA, Q.before = VO, Q.bind = HO, Q.bindAll = Nj, Q.bindKey = UO, Q.castArray = ck, Q.chain = tO, Q.chunk = GE, Q.compact = KE, Q.concat = qE, Q.cond = Pj, Q.conforms = Fj, Q.constant = Ij, Q.countBy = fO, Q.create = hA, Q.curry = WO, Q.curryRight = GO, Q.debounce = KO, Q.defaults = gA, Q.defaultsDeep = _A, Q.defer = qO, Q.delay = JO, Q.difference = JE, Q.differenceBy = YE, Q.differenceWith = XE, Q.drop = ZE, Q.dropRight = QE, Q.dropRightWhile = $E, Q.dropWhile = eD, Q.fill = tD, Q.filter = mO, Q.flatMap = _O, Q.flatMapDeep = vO, Q.flatMapDepth = yO, Q.flatten = iD, Q.flattenDeep = aD, Q.flattenDepth = oD, Q.flip = YO, Q.flow = Rj, Q.flowRight = zj, Q.fromPairs = sD, Q.functions = wA, Q.functionsIn = TA, Q.groupBy = SO, Q.initial = uD, Q.intersection = dD, Q.intersectionBy = fD, Q.intersectionWith = pD, Q.invert = kA, Q.invertBy = AA, Q.invokeMap = wO, Q.iteratee = Vj, Q.keyBy = TO, Q.keys = MA, Q.keysIn = NA, Q.map = EO, Q.mapKeys = PA, Q.mapValues = FA, Q.matches = Hj, Q.matchesProperty = Uj, Q.memoize = XO, Q.merge = IA, Q.mergeWith = LA, Q.method = Wj, Q.methodOf = Gj, Q.mixin = Kj, Q.negate = ZO, Q.nthArg = Yj, Q.omit = RA, Q.omitBy = zA, Q.once = QO, Q.orderBy = DO, Q.over = Xj, Q.overArgs = $O, Q.overEvery = Zj, Q.overSome = Qj, Q.partial = ek, Q.partialRight = tk, Q.partition = OO, Q.pick = BA, Q.pickBy = VA, Q.property = $j, Q.propertyOf = eM, Q.pull = vD, Q.pullAll = yD, Q.pullAllBy = bD, Q.pullAllWith = xD, Q.pullAt = SD, Q.range = tM, Q.rangeRight = nM, Q.rearg = nk, Q.reject = jO, Q.remove = CD, Q.rest = rk, Q.reverse = wD, Q.sampleSize = NO, Q.set = UA, Q.setWith = WA, Q.shuffle = PO, Q.slice = TD, Q.sortBy = LO, Q.sortedUniq = MD, Q.sortedUniqBy = ND, Q.split = vj, Q.spread = ik, Q.tail = PD, Q.take = FD, Q.takeRight = ID, Q.takeRightWhile = LD, Q.takeWhile = RD, Q.tap = nO, Q.throttle = ak, Q.thru = rO, Q.toArray = nA, Q.toPairs = GA, Q.toPairsIn = KA, Q.toPath = lM, Q.toPlainObject = sA, Q.transform = qA, Q.unary = ok, Q.union = zD, Q.unionBy = BD, Q.unionWith = VD, Q.uniq = HD, Q.uniqBy = UD, Q.uniqWith = WD, Q.unset = JA, Q.unzip = GD, Q.unzipWith = KD, Q.update = YA, Q.updateWith = XA, Q.values = ZA, Q.valuesIn = QA, Q.without = qD, Q.words = jj, Q.wrap = sk, Q.xor = JD, Q.xorBy = YD, Q.xorWith = XD, Q.zip = ZD, Q.zipObject = QD, Q.zipObjectDeep = $D, Q.zipWith = eO, Q.entries = GA, Q.entriesIn = KA, Q.extend = dA, Q.extendWith = fA, Kj(Q, Q), Q.add = dM, Q.attempt = Mj, Q.camelCase = nj, Q.capitalize = rj, Q.ceil = fM, Q.clamp = $A, Q.clone = lk, Q.cloneDeep = dk, Q.cloneDeepWith = fk, Q.cloneWith = uk, Q.conformsTo = pk, Q.deburr = ij, Q.defaultTo = Lj, Q.divide = pM, Q.endsWith = aj, Q.eq = mk, Q.escape = oj, Q.escapeRegExp = sj, Q.every = pO, Q.find = hO, Q.findIndex = nD, Q.findKey = vA, Q.findLast = gO, Q.findLastIndex = rD, Q.findLastKey = yA, Q.floor = mM, Q.forEach = bO, Q.forEachRight = xO, Q.forIn = bA, Q.forInRight = xA, Q.forOwn = SA, Q.forOwnRight = CA, Q.get = EA, Q.gt = hk, Q.gte = gk, Q.has = DA, Q.hasIn = OA, Q.head = cD, Q.identity = Bj, Q.includes = CO, Q.indexOf = lD, Q.inRange = ej, Q.invoke = jA, Q.isArguments = _k, Q.isArray = vk, Q.isArrayBuffer = yk, Q.isArrayLike = bk, Q.isArrayLikeObject = xk, Q.isBoolean = Sk, Q.isBuffer = Ck, Q.isDate = wk, Q.isElement = Tk, Q.isEmpty = Ek, Q.isEqual = Dk, Q.isEqualWith = Ok, Q.isError = kk, Q.isFinite = Ak, Q.isFunction = jk, Q.isInteger = Mk, Q.isLength = Nk, Q.isMap = Ik, Q.isMatch = Lk, Q.isMatchWith = Rk, Q.isNaN = zk, Q.isNative = Bk, Q.isNil = Hk, Q.isNull = Vk, Q.isNumber = Uk, Q.isObject = Pk, Q.isObjectLike = Fk, Q.isPlainObject = Wk, Q.isRegExp = Gk, Q.isSafeInteger = Kk, Q.isSet = qk, Q.isString = Jk, Q.isSymbol = Yk, Q.isTypedArray = Xk, Q.isUndefined = Zk, Q.isWeakMap = Qk, Q.isWeakSet = $k, Q.join = mD, Q.kebabCase = cj, Q.last = hD, Q.lastIndexOf = gD, Q.lowerCase = lj, Q.lowerFirst = uj, Q.lt = eA, Q.lte = tA, Q.max = hM, Q.maxBy = gM, Q.mean = _M, Q.meanBy = vM, Q.min = yM, Q.minBy = bM, Q.stubArray = rM, Q.stubFalse = iM, Q.stubObject = aM, Q.stubString = oM, Q.stubTrue = sM, Q.multiply = xM, Q.nth = _D, Q.noConflict = qj, Q.noop = Jj, Q.now = RO, Q.pad = dj, Q.padEnd = fj, Q.padStart = pj, Q.parseInt = mj, Q.random = tj, Q.reduce = kO, Q.reduceRight = AO, Q.repeat = hj, Q.replace = gj, Q.result = HA, Q.round = SM, Q.runInContext = e, Q.sample = MO, Q.size = FO, Q.snakeCase = _j, Q.some = IO, Q.sortedIndex = ED, Q.sortedIndexBy = DD, Q.sortedIndexOf = OD, Q.sortedLastIndex = kD, Q.sortedLastIndexBy = AD, Q.sortedLastIndexOf = jD, Q.startCase = yj, Q.startsWith = bj, Q.subtract = CM, Q.sum = wM, Q.sumBy = TM, Q.template = xj, Q.times = cM, Q.toFinite = rA, Q.toInteger = iA, Q.toLength = aA, Q.toLower = Sj, Q.toNumber = oA, Q.toSafeInteger = cA, Q.toString = lA, Q.toUpper = Cj, Q.trim = wj, Q.trimEnd = Tj, Q.trimStart = Ej, Q.truncate = Dj, Q.unescape = Oj, Q.uniqueId = uM, Q.upperCase = kj, Q.upperFirst = Aj, Q.each = bO, Q.eachRight = xO, Q.first = cD, Kj(Q, function() {
				var e = {};
				return HC(Q, function(t, n) {
					Cb.call(Q.prototype, n) || (e[n] = t);
				}), e;
			}(), { chain: !1 }), Q.VERSION = i, Ox([
				"bind",
				"bindKey",
				"curry",
				"curryRight",
				"partial",
				"partialRight"
			], function(e) {
				Q[e].placeholder = Q;
			}), Ox(["drop", "take"], function(e, t) {
				RS.prototype[e] = function(i) {
					i = i === n ? 1 : ex(iA(i), 0);
					var a = this.__filtered__ && !t ? new RS(this) : this.clone();
					return a.__filtered__ ? a.__takeCount__ = ax(i, a.__takeCount__) : a.__views__.push({
						size: ax(i, Yv),
						type: e + (a.__dir__ < 0 ? "Right" : "")
					}), a;
				}, RS.prototype[e + "Right"] = function(t) {
					return this.reverse()[e](t).reverse();
				};
			}), Ox([
				"filter",
				"map",
				"takeWhile"
			], function(e, t) {
				var n = t + 1, i = n == Uv || n == Gv;
				RS.prototype[e] = function(e) {
					var t = this.clone();
					return t.__iteratees__.push({
						iteratee: eE(e, 3),
						type: n
					}), t.__filtered__ = t.__filtered__ || i, t;
				};
			}), Ox(["head", "last"], function(e, t) {
				var n = "take" + (t ? "Right" : "");
				RS.prototype[e] = function() {
					return this[n](1).value()[0];
				};
			}), Ox(["initial", "tail"], function(e, t) {
				var n = "drop" + (t ? "" : "Right");
				RS.prototype[e] = function() {
					return this.__filtered__ ? new RS(this) : this[n](1);
				};
			}), RS.prototype.compact = function() {
				return this.filter(Bj);
			}, RS.prototype.find = function(e) {
				return this.filter(e).head();
			}, RS.prototype.findLast = function(e) {
				return this.reverse().find(e);
			}, RS.prototype.invokeMap = jw(function(e, t) {
				return typeof e == "function" ? new RS(this) : this.map(function(n) {
					return ew(n, e, t);
				});
			}), RS.prototype.reject = function(e) {
				return this.filter(ZO(eE(e)));
			}, RS.prototype.slice = function(e, t) {
				e = iA(e);
				var i = this;
				return i.__filtered__ && (e > 0 || t < 0) ? new RS(i) : (e < 0 ? i = i.takeRight(-e) : e && (i = i.drop(e)), t !== n && (t = iA(t), i = t < 0 ? i.dropRight(-t) : i.take(t - e)), i);
			}, RS.prototype.takeRightWhile = function(e) {
				return this.reverse().takeWhile(e).reverse();
			}, RS.prototype.toArray = function() {
				return this.take(Yv);
			}, HC(RS.prototype, function(e, t) {
				var i = /^(?:filter|find|map|reject)|While$/.test(t), a = /^(?:head|last)$/.test(t), o = Q[a ? "take" + (t == "last" ? "Right" : "") : t], s = a || /^find/.test(t);
				o && (Q.prototype[t] = function() {
					var t = this.__wrapped__, c = a ? [1] : arguments, d = t instanceof RS, f = c[0], g = d || vk(t), y = function(e) {
						var t = o.apply(Q, Fx([e], c));
						return a && b ? t[0] : t;
					};
					g && i && typeof f == "function" && f.length != 1 && (d = g = !1);
					var b = this.__chain__, x = !!this.__actions__.length, S = s && !b, C = d && !x;
					if (!s && g) {
						t = C ? t : new RS(this);
						var w = e.apply(t, c);
						return w.__actions__.push({
							func: rO,
							args: [y],
							thisArg: n
						}), new LS(w, b);
					}
					return S && C ? e.apply(this, c) : (w = this.thru(y), S ? a ? w.value()[0] : w.value() : w);
				});
			}), Ox([
				"pop",
				"push",
				"shift",
				"sort",
				"splice",
				"unshift"
			], function(e) {
				var t = vb[e], n = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru", i = /^(?:pop|shift)$/.test(e);
				Q.prototype[e] = function() {
					var e = arguments;
					if (i && !this.__chain__) {
						var a = this.value();
						return t.apply(vk(a) ? a : [], e);
					}
					return this[n](function(n) {
						return t.apply(vk(n) ? n : [], e);
					});
				};
			}), HC(RS.prototype, function(e, t) {
				var n = Q[t];
				if (n) {
					var i = n.name + "";
					Cb.call(Yx, i) || (Yx[i] = []), Yx[i].push({
						name: t,
						func: n
					});
				}
			}), Yx[kT(n, E).name] = [{
				name: "wrapper",
				func: n
			}], RS.prototype.clone = zS, RS.prototype.reverse = BS, RS.prototype.value = VS, Q.prototype.at = iO, Q.prototype.chain = aO, Q.prototype.commit = oO, Q.prototype.next = sO, Q.prototype.plant = lO, Q.prototype.reverse = uO, Q.prototype.toJSON = Q.prototype.valueOf = Q.prototype.value = dO, Q.prototype.first = Q.prototype.head, zb && (Q.prototype[zb] = cO), Q;
		})();
		typeof define == "function" && typeof define.amd == "object" && define.amd ? (mx._ = kS, define(function() {
			return kS;
		})) : gx ? ((gx.exports = kS)._ = kS, hx._ = kS) : mx._ = kS;
	}).call(e);
})), import_lodash$2 = /* @__PURE__ */ __toESM(require_lodash());
function healQuery(e) {
	return e.replace(/\{(\s+)?\}/g, "");
}
function isPathInQuery(e, t, n) {
	if (!e || !t) return !1;
	e = healQuery(e);
	let [i, ...a] = t.split("."), o;
	try {
		o = parse$1(e);
	} catch {}
	if (!o) return !1;
	let s = o.definitions.find((e) => e.kind === Kind.OPERATION_DEFINITION && e.operation === i ? n ? e.name?.value === n : !0 : !1);
	if (!s) return !1;
	if (a.length === 0) return !0;
	let c = [], d = !1;
	return visit(s, { Field: {
		enter(e) {
			if (c.push(e.name.value), c.length === a.length && c.every((e, t) => e === a[t])) return d = !0, !1;
		},
		leave() {
			c.pop();
		}
	} }), d;
}
function addPathToQuery(e, t, n) {
	e = healQuery(e);
	let [i, ...a] = t.split("."), o;
	try {
		o = parse$1(e);
	} catch {}
	o ??= {
		kind: Kind.DOCUMENT,
		definitions: [{
			kind: Kind.OPERATION_DEFINITION,
			operation: i,
			name: {
				kind: Kind.NAME,
				value: "Untitled"
			},
			selectionSet: {
				kind: Kind.SELECTION_SET,
				selections: []
			}
		}]
	};
	let s = o.definitions.find((e) => e.kind === Kind.OPERATION_DEFINITION && e.operation === i ? n ? e.name?.value === n : !0 : !1);
	if (s || (s = {
		kind: Kind.OPERATION_DEFINITION,
		operation: i,
		name: {
			kind: Kind.NAME,
			value: "Untitled"
		},
		selectionSet: {
			kind: Kind.SELECTION_SET,
			selections: []
		}
	}, o.definitions.push(s)), a.length === 0) return print(o).split("\n").map((e) => e.includes(`${i} Untitled`) ? e + " {}" : e).join("\n");
	let c = [];
	return visit(s, {
		OperationDefinition: { enter(e) {
			let t = a[0];
			e.selectionSet ??= {
				kind: Kind.SELECTION_SET,
				selections: []
			};
			let n = e.selectionSet.selections.find((e) => e.kind === Kind.FIELD && e.name.value === t);
			n || (n = {
				kind: Kind.FIELD,
				name: {
					kind: Kind.NAME,
					value: t
				}
			}, e.selectionSet.selections.push(n));
		} },
		Field: {
			enter(e) {
				if (c.push(e.name.value), c.every((e, t) => e === a[t])) {
					if (c.length === a.length) return !1;
					let t = a[c.length];
					e.selectionSet ??= {
						kind: Kind.SELECTION_SET,
						selections: []
					};
					let n = e.selectionSet.selections.find((e) => e.kind === Kind.FIELD && e.name.value === t);
					n || (n = {
						kind: Kind.FIELD,
						name: {
							kind: Kind.NAME,
							value: t
						}
					}, e.selectionSet.selections.push(n));
				}
			},
			leave() {
				c.pop();
			}
		}
	}), print(o);
}
function deletePathFromQuery(e, t, n) {
	e = healQuery(e);
	let [i, ...a] = t.split("."), o;
	try {
		o = parse$1(e);
	} catch {}
	if (!o) return e;
	let s = o.definitions.find((e) => e.kind === Kind.OPERATION_DEFINITION && e.operation === i ? n ? e.name?.value === n : !0 : !1);
	if (!s) return e;
	let c = [], d = !1;
	return visit(s, {
		OperationDefinition: { enter(e) {
			if (a.length === 1) {
				let t = a[0];
				e.selectionSet && (e.selectionSet.selections = e.selectionSet.selections.filter((e) => e.kind !== Kind.FIELD || e.name.value !== t), d = e.selectionSet.selections.length === 0);
			}
		} },
		Field: {
			enter(e) {
				if (c.push(e.name.value), c.length === a.length - 1 && c.every((e, t) => e === a[t])) {
					let t = a[c.length];
					e.selectionSet && (e.selectionSet.selections = e.selectionSet.selections.filter((e) => e.kind !== Kind.FIELD || e.name.value !== t));
				}
			},
			leave() {
				c.pop();
			}
		}
	}), d ? o.definitions.length > 1 ? `${print({
		...o,
		definitions: o.definitions.filter((e) => e !== s)
	})}
${i} ${s.name?.value} {}` : `${i} ${s.name?.value} {}` : (s = o.definitions.find((e) => e.kind === Kind.OPERATION_DEFINITION && e.operation === i ? n ? e.name?.value === n : !0 : !1), print(o));
}
function getOperationName(e) {
	try {
		return parse$1(e).definitions.find((e) => e.kind === Kind.OPERATION_DEFINITION)?.name?.value;
	} catch {
		let t = e.match(/(query|mutation|subscription)\s+([a-zA-Z0-9_]+)/);
		return t ? t[2] : null;
	}
}
function getOperationType(e) {
	try {
		return parse$1(e).definitions.find((e) => e.kind === Kind.OPERATION_DEFINITION)?.operation;
	} catch {
		return null;
	}
}
function isArgInQuery(e, t, n, i) {
	if (!e || !t) return !1;
	e = healQuery(e);
	let [a, ...o] = t.split("."), s;
	try {
		s = parse$1(e);
	} catch {}
	if (!s) return !1;
	let c = s.definitions.find((e) => e.kind === Kind.OPERATION_DEFINITION && e.operation === a ? i ? e.name?.value === i : !0 : !1);
	if (!c) return !1;
	let d = [], f = !1;
	return visit(c, { Field: {
		enter(e) {
			d.push(e.name.value), d.length === o.length && d.every((e, t) => e === o[t]) && e.arguments && (f = e.arguments.some((e) => e.name.value === n));
		},
		leave() {
			d.pop();
		}
	} }), f;
}
function extractOfType(e) {
	return e instanceof GraphQLNonNull || e instanceof GraphQLNonNull || e instanceof GraphQLList ? extractOfType(e.ofType) : e instanceof GraphQLObjectType || e instanceof GraphQLScalarType ? e : null;
}
function findFieldInSchema(e, t) {
	let [n, ...i] = e.split("."), a;
	if (n === "query" ? a = t.getQueryType() : n === "mutation" ? a = t.getMutationType() : n === "subscription" && (a = t.getSubscriptionType()), a) {
		for (let e = 0; e < i.length; ++e) {
			if (!a) return;
			if (a instanceof GraphQLObjectType) {
				let t = a.getFields()[i[e]];
				if (!t) return;
				if (e === i.length - 1) return t;
				a = extractOfType(t.type);
			}
		}
		return null;
	}
}
function addArgToField(e, t, n, i, a) {
	e = healQuery(e);
	let [o, ...s] = t.split("."), c;
	try {
		c = parse$1(e);
	} catch {}
	c ||= {
		kind: Kind.DOCUMENT,
		definitions: [{
			kind: Kind.OPERATION_DEFINITION,
			operation: o,
			name: {
				kind: Kind.NAME,
				value: "NewOperation"
			},
			selectionSet: {
				kind: Kind.SELECTION_SET,
				selections: []
			}
		}]
	};
	let d = c.definitions.find((e) => e.kind === Kind.OPERATION_DEFINITION && e.operation === o ? a ? e.name?.value === a : !0 : !1);
	d || (d = {
		kind: Kind.OPERATION_DEFINITION,
		operation: o,
		name: {
			kind: Kind.NAME,
			value: "NewOperation"
		},
		selectionSet: {
			kind: Kind.SELECTION_SET,
			selections: []
		}
	}, c.definitions.push(d)), e = print(c), isPathInQuery(e, t, a) || (c = parse$1(addPathToQuery(e, t, a)), d = c.definitions.find((e) => e.kind === Kind.OPERATION_DEFINITION && e.operation === o ? a ? e.name?.value === a : !0 : !1));
	let f = [];
	return visit(d, {
		Field: {
			enter(e) {
				if (f.push(e.name.value), f.length === s.length - 1 && f.every((e, t) => e === s[t])) {
					let t = s[f.length];
					if (e.selectionSet) {
						let a = findFieldInSchema([
							o,
							...f,
							t
						].join("."), i);
						if (a?.args) {
							let i = a.args.find((e) => e.name === n);
							if (i) {
								d.variableDefinitions ||= [];
								let a = i.name, o = 2;
								for (; d.variableDefinitions.find((e) => e.variable.name.value === a);) a = i.name + o, ++o;
								d.variableDefinitions.push({
									kind: Kind.VARIABLE_DEFINITION,
									variable: {
										kind: Kind.VARIABLE,
										name: {
											kind: Kind.NAME,
											value: a
										}
									},
									type: {
										kind: Kind.NAMED_TYPE,
										name: {
											kind: Kind.NAME,
											value: i.type.toString()
										}
									}
								});
								let s = e.selectionSet.selections.find((e) => e.kind === Kind.FIELD && e.name.value === t);
								s && (s.arguments ||= [], s.arguments.push({
									kind: Kind.ARGUMENT,
									name: {
										kind: Kind.NAME,
										value: n
									},
									value: {
										kind: Kind.VARIABLE,
										name: {
											kind: Kind.NAME,
											value: a
										}
									}
								}));
							}
						}
					}
				}
			},
			leave() {
				f.pop();
			}
		},
		OperationDefinition: { enter(e) {
			if (s.length === 1) {
				let t = s[0];
				if (e.selectionSet) {
					let a = findFieldInSchema([
						o,
						...f,
						t
					].join("."), i);
					if (a?.args) {
						let i = a.args.find((e) => e.name === n);
						if (i) {
							e.variableDefinitions ||= [];
							let a = i.name, o = 2;
							for (; e.variableDefinitions.find((e) => e.variable.name.value === a);) a = i.name + o, ++o;
							e.variableDefinitions.push({
								kind: Kind.VARIABLE_DEFINITION,
								variable: {
									kind: Kind.VARIABLE,
									name: {
										kind: Kind.NAME,
										value: a
									}
								},
								type: {
									kind: Kind.NAMED_TYPE,
									name: {
										kind: Kind.NAME,
										value: i.type.toString()
									}
								}
							});
							let s = e.selectionSet.selections.find((e) => e.kind === Kind.FIELD && e.name.value === t);
							s && (s.arguments ||= [], s.arguments.push({
								kind: Kind.ARGUMENT,
								name: {
									kind: Kind.NAME,
									value: n
								},
								value: {
									kind: Kind.VARIABLE,
									name: {
										kind: Kind.NAME,
										value: a
									}
								}
							}));
						}
					}
				}
			}
		} }
	}), print(c);
}
function removeArgFromField(e, t, n, i) {
	e = healQuery(e);
	let [a, ...o] = t.split("."), s;
	try {
		s = parse$1(e);
	} catch {}
	if (!s) return e;
	let c = s.definitions.find((e) => e.kind === Kind.OPERATION_DEFINITION && e.operation === a ? i ? e.name?.value === i : !0 : !1);
	if (!c) return e;
	let d = [];
	return visit(c, {
		Field: {
			enter(e) {
				if (d.push(e.name.value), d.length === o.length - 1 && d.every((e, t) => e === o[t])) {
					let t = o[d.length];
					if (e.selectionSet) {
						let i = e.selectionSet.selections.find((e) => e.kind === Kind.FIELD && e.name.value === t);
						i?.arguments && (i.arguments = i.arguments.filter((e) => e.kind !== Kind.ARGUMENT || e.name.value !== n));
					}
				}
			},
			leave() {
				d.pop();
			}
		},
		OperationDefinition: { enter(e) {
			if (o.length === 1) {
				let t = o[0];
				if (e.selectionSet) {
					let i = e.selectionSet.selections.find((e) => e.kind === Kind.FIELD && e.name.value === t);
					i?.arguments && (i.arguments = i.arguments.filter((e) => e.kind !== Kind.ARGUMENT || e.name.value !== n));
				}
			}
		} }
	}), print(s);
}
function extractPaths(e) {
	try {
		let t = parse$1(e), n = [[t.definitions[0].kind === Kind.OPERATION_DEFINITION ? t.definitions[0].operation : "query"]], i = (e, t = []) => {
			for (let a of e) if (a.kind === "Field") {
				let e = [...t, a.name.value];
				n.push(e), a.selectionSet && i(a.selectionSet.selections, e);
			}
		};
		for (let e of t.definitions) e.kind === "OperationDefinition" && e.selectionSet && i(e.selectionSet.selections, n[0]);
		return n;
	} catch {
		return [];
	}
}
function getOpenPaths(e) {
	return extractPaths(e).map((e) => e.join("."));
}
function unwrapNamedType(e) {
	return e instanceof GraphQLNonNull || e instanceof GraphQLList ? unwrapNamedType(e.ofType) : e;
}
function isSearchableFieldType(e) {
	return e instanceof GraphQLObjectType || e instanceof GraphQLInterfaceType;
}
function matchSearchAgainstPath(e, t, n) {
	if (n.length > 1) {
		let t = e.length - n.length;
		if (t < 0) return !1;
		for (let i = 0; i <= t; ++i) {
			let t = !0;
			for (let a = 0; a < n.length; ++a) if (!e[i + a].includes(n[a])) {
				t = !1;
				break;
			}
			if (t) return !0;
		}
		return !1;
	}
	for (let n of e) if (n.includes(t)) return !0;
	return !1;
}
function searchSchemaPaths(e, t, n) {
	let i = t.trim().toLowerCase();
	if (!i) return {
		matchedPaths: [],
		visiblePaths: /* @__PURE__ */ new Set(),
		forcedOpenPaths: /* @__PURE__ */ new Set(),
		hasMore: !1,
		nodesVisited: 0
	};
	let a = n?.maxDepth ?? 8, o = n?.maxMatches ?? 500, s = n?.maxNodes ?? 4e4, c = i.split(".").filter(Boolean), d = [], f = /* @__PURE__ */ new Set(), g = /* @__PURE__ */ new Set(), y = [], b = 0, x = [
		[OperationTypeNode.QUERY, e.getQueryType() ?? null],
		[OperationTypeNode.MUTATION, e.getMutationType() ?? null],
		[OperationTypeNode.SUBSCRIPTION, e.getSubscriptionType() ?? null]
	], S = n?.operationTypes && n.operationTypes.length > 0 ? x.filter(([e]) => n.operationTypes.includes(e)) : x;
	for (let [e, t] of S) if (t) for (let n of Object.values(t.getFields())) y.push({
		operation: e,
		field: n,
		pathSegments: [n.name],
		typeTrail: [t.name],
		depth: 1
	});
	let C = 0, w = !1;
	for (; b < y.length;) {
		if (C >= s || d.length >= o) {
			w = !0;
			break;
		}
		let e = y[b++];
		++C;
		let t = `${e.operation}.${e.pathSegments.join(".")}`, n = e.pathSegments.map((e) => e.toLowerCase());
		if (matchSearchAgainstPath(n, i, c)) {
			d.push(t), f.add(t);
			let e = t.indexOf(".");
			for (; e !== -1;) {
				let n = t.slice(0, e);
				f.add(n), g.add(n), e = t.indexOf(".", e + 1);
			}
		}
		if (e.depth >= a) continue;
		let x = unwrapNamedType(e.field.type);
		if (!isSearchableFieldType(x) || e.typeTrail.includes(x.name)) continue;
		let S = [...e.typeTrail, x.name];
		for (let t of Object.values(x.getFields())) y.push({
			operation: e.operation,
			field: t,
			pathSegments: [...e.pathSegments, t.name],
			typeTrail: S,
			depth: e.depth + 1
		});
	}
	return {
		matchedPaths: d,
		visiblePaths: f,
		forcedOpenPaths: g,
		hasMore: w,
		nodesVisited: C
	};
}
function handleTemplate(e, t) {
	return e.replace(/\{\{(.*?)\}\}/g, (e, n) => (0, import_lodash$2.get)(t, n) ?? e);
}
function getFieldByPath(e, t) {
	let [n, ...i] = e.split("."), a;
	if (n === "query" ? a = t.getQueryType() : n === "mutation" ? a = t.getMutationType() : n === "subscription" && (a = t.getSubscriptionType()), !a) return null;
	let o;
	for (let e of i) if (a instanceof GraphQLObjectType) {
		if (o = a.getFields()[e], !o) return null;
		a = o.type;
	}
	return o;
}
const useOperations = (e) => {
	let [t, n] = useState(e.defaultOperations ?? []), i = useMemo(() => {
		let n = e.tabsApi?.activeTab;
		return n && n.type === "operation" ? t.find((e) => e.id === n.data.id) ?? null : null;
	}, [e.tabsApi, t]), a = useCallback((t) => {
		let n = e.tabsApi?.tabs.find((e) => e.type === "operation" && e.data.id === t) ?? null;
		n && e.tabsApi?.setActiveTab(n);
	}, [e.tabsApi]), o = useCallback((t) => {
		n(t), e.onOperationsChange?.(t);
	}, [e]), s = useCallback((i) => {
		let a = {
			id: v4_default(),
			...i
		}, o = [...t, a];
		return n(o), e.onOperationsChange?.(o), e.onOperationCreate?.(a), a;
	}, [t, e]);
	useEffect(() => {
		let t = new URLSearchParams(window.location.search).get("share");
		if (t) {
			let n = decompressFromEncodedURIComponent(t);
			if (n) {
				let { n: t, q: i, v: a, h: o, e: c } = JSON.parse(n), d = s({
					name: t,
					query: i,
					variables: a,
					headers: o,
					extensions: c
				}), f = e.tabsApi?.addTab({
					type: "operation",
					data: d
				});
				f && e.tabsApi?.setActiveTab(f);
				let g = new URLSearchParams(window.location.search);
				g.delete("share"), window.history.replaceState(null, "", window.location.pathname + "?" + g.toString());
			}
		}
	}, []);
	let c = useCallback((a) => {
		let o = {
			...i,
			...a
		};
		if (o.query) {
			let e = getOperationName(o.query);
			e && (o.name = e);
		}
		let s = t.map((e) => e.id === i?.id ? o : e);
		if (n(s), e.onOperationsChange?.(s), o.id && e.onOperationUpdate?.(o), e.collectionsApi && e.checkPermissions?.("collectionsOperations:update") && i?.id) {
			let t = e.collectionsApi.collections.find((e) => e.operations.some((e) => e.id === i.id))?.id ?? "";
			e.collectionsApi.updateOperationInCollection(t, i.id, o);
		}
	}, [
		i,
		t,
		e.checkPermissions,
		e.collectionsApi
	]), d = useCallback((o) => {
		let s = t.find((e) => e.id === o), c = t.filter((e) => e.id !== o);
		n(c), e.onOperationsChange?.(c), s && e.onOperationDelete?.(s), i?.id === o && a(c[0]?.id ?? "");
	}, [
		i,
		t,
		e,
		a
	]), f = useCallback((e) => {
		if (!i) return;
		let t = {
			...i,
			query: addPathToQuery(i.query, e)
		};
		c(t);
	}, [i, c]), g = useCallback((e) => {
		if (!i?.query) return;
		let t = {
			...i,
			query: deletePathFromQuery(i.query, e)
		};
		c(t);
	}, [i, c]), y = useCallback((e, t, n) => {
		if (!i?.query) return;
		let a = {
			...i,
			query: addArgToField(i.query, e, t, n)
		};
		c(a);
	}, [i, c]), b = useCallback((e, t) => {
		if (!i?.query) return;
		let n = {
			...i,
			query: removeArgFromField(i.query, e, t)
		};
		c(n);
	}, [i, c]), [x, S] = useState({}), C = useCallback((e) => Object.keys(x).includes(e), [x]), w = useMemo(() => i ? C(i.id) : !1, [i, C]), E = useCallback(async (t, n, a = e.pluginsApi?.plugins ?? [], o = e.pluginsApi?.pluginsState ?? {}) => {
		if (!i?.query) return null;
		let s, c;
		if (n?.env) s = n.env, c = n.headers ?? {};
		else {
			let t = await e.preflightApi?.runPreflight?.(a, o);
			s = t?.env ?? { variables: {} }, c = t?.headers ?? {}, o = t?.pluginsState ?? {}, e.pluginsApi?.setPluginsState(o);
		}
		s && Object.keys(s?.variables ?? {}).length > 0 ? e.envApi?.setEnv(s) : s = e.envApi?.env ?? { variables: {} };
		let d = i.headers ? JSON.parse(handleTemplate(i.headers, {
			...s.variables,
			plugins: o
		})) : {}, f = {
			...c,
			...d
		}, g = i.variables ? JSON.parse(handleTemplate(i.variables, {
			...s.variables,
			plugins: o
		})) : {}, y = i.extensions ? JSON.parse(handleTemplate(i.extensions, {
			...s.variables,
			plugins: o
		})) : {};
		if (i.query.startsWith("subscription")) {
			let e = createClient({
				url: t.replace("http", "ws"),
				connectionParams: { ...f }
			});
			return e.on("connected", () => {
				console.log("connected");
			}), e.on("error", () => {
				S((e) => {
					let t = { ...e };
					return delete t[i.id], t;
				});
			}), e.on("closed", () => {
				S((e) => {
					let t = { ...e };
					return delete t[i.id], t;
				});
			}), e.subscribe({
				query: i.query,
				variables: g,
				extensions: y
			}, {
				next: (e) => {
					n?.onResponse?.(JSON.stringify(e ?? {}));
				},
				error: () => {},
				complete: () => {}
			}), S((t) => ({
				...t,
				[i.id]: () => {
					e.dispose(), S((e) => {
						let t = { ...e };
						return delete t[i.id], t;
					});
				}
			})), Promise.resolve(new Response());
		}
		let b = new AbortController(), x = fetch(t, {
			method: "POST",
			credentials: e.settingsApi?.settings.fetch.credentials,
			body: JSON.stringify({
				query: i.query,
				variables: g,
				extensions: y
			}),
			headers: {
				...f,
				"Content-Type": "application/json"
			},
			signal: b.signal
		}).finally(() => {
			S((e) => {
				let t = { ...e };
				return delete t[i.id], t;
			});
		});
		return S((e) => ({
			...e,
			[i.id]: () => b.abort()
		})), x;
	}, [
		i,
		e.preflightApi,
		e.envApi,
		e.pluginsApi
	]), O = useCallback((e) => e.query?.startsWith("subscription") ?? !1, []), A = useMemo(() => i ? O(i) : !1, [i, O]);
	return {
		operations: t,
		setOperations: o,
		runActiveOperation: E,
		setActiveOperation: a,
		activeOperation: i,
		addOperation: s,
		updateActiveOperation: c,
		deleteOperation: d,
		addPathToActiveOperation: f,
		deletePathFromActiveOperation: g,
		addArgToActiveOperation: y,
		deleteArgFromActiveOperation: b,
		isActiveOperationLoading: w,
		stopActiveOperation: x[i?.id ?? ""],
		isActiveOperationSubscription: A,
		isOperationSubscription: O,
		isOperationLoading: C
	};
}, usePlugins = (e) => {
	let [t, n] = useState({
		...e.plugins?.reduce((e, t) => (e[t.id] = t.defaultState ?? {}, e), {}),
		...e.defaultPluginsState
	}), i = useCallback((t) => {
		n(t), e.onPluginsStateChange?.(t);
	}, [e]);
	return {
		plugins: e.plugins ?? [],
		pluginsState: t,
		setPluginsState: i
	};
};
var crypto_js_default = ";(function (root, factory) {\n	if (typeof exports === \"object\") {\n		// CommonJS\n		module.exports = exports = factory();\n	}\n	else if (typeof define === \"function\" && define.amd) {\n		// AMD\n		define([], factory);\n	}\n	else {\n		// Global (browser)\n		root.CryptoJS = factory();\n	}\n}(this, function () {\n\n	/*globals window, global, require*/\n\n	/**\n	 * CryptoJS core components.\n	 */\n	var CryptoJS = CryptoJS || (function (Math, undefined) {\n\n	    var crypto;\n\n	    // Native crypto from window (Browser)\n	    if (typeof window !== 'undefined' && window.crypto) {\n	        crypto = window.crypto;\n	    }\n\n	    // Native crypto in web worker (Browser)\n	    if (typeof self !== 'undefined' && self.crypto) {\n	        crypto = self.crypto;\n	    }\n\n	    // Native crypto from worker\n	    if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n	        crypto = globalThis.crypto;\n	    }\n\n	    // Native (experimental IE 11) crypto from window (Browser)\n	    if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n	        crypto = window.msCrypto;\n	    }\n\n	    // Native crypto from global (NodeJS)\n	    if (!crypto && typeof global !== 'undefined' && global.crypto) {\n	        crypto = global.crypto;\n	    }\n\n	    // Native crypto import via require (NodeJS)\n	    if (!crypto && typeof require === 'function') {\n	        try {\n	            crypto = require('crypto');\n	        } catch (err) {}\n	    }\n\n	    /*\n	     * Cryptographically secure pseudorandom number generator\n	     *\n	     * As Math.random() is cryptographically not safe to use\n	     */\n	    var cryptoSecureRandomInt = function () {\n	        if (crypto) {\n	            // Use getRandomValues method (Browser)\n	            if (typeof crypto.getRandomValues === 'function') {\n	                try {\n	                    return crypto.getRandomValues(new Uint32Array(1))[0];\n	                } catch (err) {}\n	            }\n\n	            // Use randomBytes method (NodeJS)\n	            if (typeof crypto.randomBytes === 'function') {\n	                try {\n	                    return crypto.randomBytes(4).readInt32LE();\n	                } catch (err) {}\n	            }\n	        }\n\n	        throw new Error('Native crypto module could not be used to get secure random number.');\n	    };\n\n	    /*\n	     * Local polyfill of Object.create\n\n	     */\n	    var create = Object.create || (function () {\n	        function F() {}\n\n	        return function (obj) {\n	            var subtype;\n\n	            F.prototype = obj;\n\n	            subtype = new F();\n\n	            F.prototype = null;\n\n	            return subtype;\n	        };\n	    }());\n\n	    /**\n	     * CryptoJS namespace.\n	     */\n	    var C = {};\n\n	    /**\n	     * Library namespace.\n	     */\n	    var C_lib = C.lib = {};\n\n	    /**\n	     * Base object for prototypal inheritance.\n	     */\n	    var Base = C_lib.Base = (function () {\n\n\n	        return {\n	            /**\n	             * Creates a new object that inherits from this object.\n	             *\n	             * @param {Object} overrides Properties to copy into the new object.\n	             *\n	             * @return {Object} The new object.\n	             *\n	             * @static\n	             *\n	             * @example\n	             *\n	             *     var MyType = CryptoJS.lib.Base.extend({\n	             *         field: 'value',\n	             *\n	             *         method: function () {\n	             *         }\n	             *     });\n	             */\n	            extend: function (overrides) {\n	                // Spawn\n	                var subtype = create(this);\n\n	                // Augment\n	                if (overrides) {\n	                    subtype.mixIn(overrides);\n	                }\n\n	                // Create default initializer\n	                if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n	                    subtype.init = function () {\n	                        subtype.$super.init.apply(this, arguments);\n	                    };\n	                }\n\n	                // Initializer's prototype is the subtype object\n	                subtype.init.prototype = subtype;\n\n	                // Reference supertype\n	                subtype.$super = this;\n\n	                return subtype;\n	            },\n\n	            /**\n	             * Extends this object and runs the init method.\n	             * Arguments to create() will be passed to init().\n	             *\n	             * @return {Object} The new object.\n	             *\n	             * @static\n	             *\n	             * @example\n	             *\n	             *     var instance = MyType.create();\n	             */\n	            create: function () {\n	                var instance = this.extend();\n	                instance.init.apply(instance, arguments);\n\n	                return instance;\n	            },\n\n	            /**\n	             * Initializes a newly created object.\n	             * Override this method to add some logic when your objects are created.\n	             *\n	             * @example\n	             *\n	             *     var MyType = CryptoJS.lib.Base.extend({\n	             *         init: function () {\n	             *             // ...\n	             *         }\n	             *     });\n	             */\n	            init: function () {\n	            },\n\n	            /**\n	             * Copies properties into this object.\n	             *\n	             * @param {Object} properties The properties to mix in.\n	             *\n	             * @example\n	             *\n	             *     MyType.mixIn({\n	             *         field: 'value'\n	             *     });\n	             */\n	            mixIn: function (properties) {\n	                for (var propertyName in properties) {\n	                    if (properties.hasOwnProperty(propertyName)) {\n	                        this[propertyName] = properties[propertyName];\n	                    }\n	                }\n\n	                // IE won't copy toString using the loop above\n	                if (properties.hasOwnProperty('toString')) {\n	                    this.toString = properties.toString;\n	                }\n	            },\n\n	            /**\n	             * Creates a copy of this object.\n	             *\n	             * @return {Object} The clone.\n	             *\n	             * @example\n	             *\n	             *     var clone = instance.clone();\n	             */\n	            clone: function () {\n	                return this.init.prototype.extend(this);\n	            }\n	        };\n	    }());\n\n	    /**\n	     * An array of 32-bit words.\n	     *\n	     * @property {Array} words The array of 32-bit words.\n	     * @property {number} sigBytes The number of significant bytes in this word array.\n	     */\n	    var WordArray = C_lib.WordArray = Base.extend({\n	        /**\n	         * Initializes a newly created word array.\n	         *\n	         * @param {Array} words (Optional) An array of 32-bit words.\n	         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n	         *\n	         * @example\n	         *\n	         *     var wordArray = CryptoJS.lib.WordArray.create();\n	         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n	         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n	         */\n	        init: function (words, sigBytes) {\n	            words = this.words = words || [];\n\n	            if (sigBytes != undefined) {\n	                this.sigBytes = sigBytes;\n	            } else {\n	                this.sigBytes = words.length * 4;\n	            }\n	        },\n\n	        /**\n	         * Converts this word array to a string.\n	         *\n	         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n	         *\n	         * @return {string} The stringified word array.\n	         *\n	         * @example\n	         *\n	         *     var string = wordArray + '';\n	         *     var string = wordArray.toString();\n	         *     var string = wordArray.toString(CryptoJS.enc.Utf8);\n	         */\n	        toString: function (encoder) {\n	            return (encoder || Hex).stringify(this);\n	        },\n\n	        /**\n	         * Concatenates a word array to this word array.\n	         *\n	         * @param {WordArray} wordArray The word array to append.\n	         *\n	         * @return {WordArray} This word array.\n	         *\n	         * @example\n	         *\n	         *     wordArray1.concat(wordArray2);\n	         */\n	        concat: function (wordArray) {\n	            // Shortcuts\n	            var thisWords = this.words;\n	            var thatWords = wordArray.words;\n	            var thisSigBytes = this.sigBytes;\n	            var thatSigBytes = wordArray.sigBytes;\n\n	            // Clamp excess bits\n	            this.clamp();\n\n	            // Concat\n	            if (thisSigBytes % 4) {\n	                // Copy one byte at a time\n	                for (var i = 0; i < thatSigBytes; i++) {\n	                    var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n	                    thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n	                }\n	            } else {\n	                // Copy one word at a time\n	                for (var j = 0; j < thatSigBytes; j += 4) {\n	                    thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n	                }\n	            }\n	            this.sigBytes += thatSigBytes;\n\n	            // Chainable\n	            return this;\n	        },\n\n	        /**\n	         * Removes insignificant bits.\n	         *\n	         * @example\n	         *\n	         *     wordArray.clamp();\n	         */\n	        clamp: function () {\n	            // Shortcuts\n	            var words = this.words;\n	            var sigBytes = this.sigBytes;\n\n	            // Clamp\n	            words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n	            words.length = Math.ceil(sigBytes / 4);\n	        },\n\n	        /**\n	         * Creates a copy of this word array.\n	         *\n	         * @return {WordArray} The clone.\n	         *\n	         * @example\n	         *\n	         *     var clone = wordArray.clone();\n	         */\n	        clone: function () {\n	            var clone = Base.clone.call(this);\n	            clone.words = this.words.slice(0);\n\n	            return clone;\n	        },\n\n	        /**\n	         * Creates a word array filled with random bytes.\n	         *\n	         * @param {number} nBytes The number of random bytes to generate.\n	         *\n	         * @return {WordArray} The random word array.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var wordArray = CryptoJS.lib.WordArray.random(16);\n	         */\n	        random: function (nBytes) {\n	            var words = [];\n\n	            for (var i = 0; i < nBytes; i += 4) {\n	                words.push(cryptoSecureRandomInt());\n	            }\n\n	            return new WordArray.init(words, nBytes);\n	        }\n	    });\n\n	    /**\n	     * Encoder namespace.\n	     */\n	    var C_enc = C.enc = {};\n\n	    /**\n	     * Hex encoding strategy.\n	     */\n	    var Hex = C_enc.Hex = {\n	        /**\n	         * Converts a word array to a hex string.\n	         *\n	         * @param {WordArray} wordArray The word array.\n	         *\n	         * @return {string} The hex string.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n	         */\n	        stringify: function (wordArray) {\n	            // Shortcuts\n	            var words = wordArray.words;\n	            var sigBytes = wordArray.sigBytes;\n\n	            // Convert\n	            var hexChars = [];\n	            for (var i = 0; i < sigBytes; i++) {\n	                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n	                hexChars.push((bite >>> 4).toString(16));\n	                hexChars.push((bite & 0x0f).toString(16));\n	            }\n\n	            return hexChars.join('');\n	        },\n\n	        /**\n	         * Converts a hex string to a word array.\n	         *\n	         * @param {string} hexStr The hex string.\n	         *\n	         * @return {WordArray} The word array.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);\n	         */\n	        parse: function (hexStr) {\n	            // Shortcut\n	            var hexStrLength = hexStr.length;\n\n	            // Convert\n	            var words = [];\n	            for (var i = 0; i < hexStrLength; i += 2) {\n	                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n	            }\n\n	            return new WordArray.init(words, hexStrLength / 2);\n	        }\n	    };\n\n	    /**\n	     * Latin1 encoding strategy.\n	     */\n	    var Latin1 = C_enc.Latin1 = {\n	        /**\n	         * Converts a word array to a Latin1 string.\n	         *\n	         * @param {WordArray} wordArray The word array.\n	         *\n	         * @return {string} The Latin1 string.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n	         */\n	        stringify: function (wordArray) {\n	            // Shortcuts\n	            var words = wordArray.words;\n	            var sigBytes = wordArray.sigBytes;\n\n	            // Convert\n	            var latin1Chars = [];\n	            for (var i = 0; i < sigBytes; i++) {\n	                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n	                latin1Chars.push(String.fromCharCode(bite));\n	            }\n\n	            return latin1Chars.join('');\n	        },\n\n	        /**\n	         * Converts a Latin1 string to a word array.\n	         *\n	         * @param {string} latin1Str The Latin1 string.\n	         *\n	         * @return {WordArray} The word array.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n	         */\n	        parse: function (latin1Str) {\n	            // Shortcut\n	            var latin1StrLength = latin1Str.length;\n\n	            // Convert\n	            var words = [];\n	            for (var i = 0; i < latin1StrLength; i++) {\n	                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n	            }\n\n	            return new WordArray.init(words, latin1StrLength);\n	        }\n	    };\n\n	    /**\n	     * UTF-8 encoding strategy.\n	     */\n	    var Utf8 = C_enc.Utf8 = {\n	        /**\n	         * Converts a word array to a UTF-8 string.\n	         *\n	         * @param {WordArray} wordArray The word array.\n	         *\n	         * @return {string} The UTF-8 string.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n	         */\n	        stringify: function (wordArray) {\n	            try {\n	                return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n	            } catch (e) {\n	                throw new Error('Malformed UTF-8 data');\n	            }\n	        },\n\n	        /**\n	         * Converts a UTF-8 string to a word array.\n	         *\n	         * @param {string} utf8Str The UTF-8 string.\n	         *\n	         * @return {WordArray} The word array.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n	         */\n	        parse: function (utf8Str) {\n	            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n	        }\n	    };\n\n	    /**\n	     * Abstract buffered block algorithm template.\n	     *\n	     * The property blockSize must be implemented in a concrete subtype.\n	     *\n	     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n	     */\n	    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n	        /**\n	         * Resets this block algorithm's data buffer to its initial state.\n	         *\n	         * @example\n	         *\n	         *     bufferedBlockAlgorithm.reset();\n	         */\n	        reset: function () {\n	            // Initial values\n	            this._data = new WordArray.init();\n	            this._nDataBytes = 0;\n	        },\n\n	        /**\n	         * Adds new data to this block algorithm's buffer.\n	         *\n	         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n	         *\n	         * @example\n	         *\n	         *     bufferedBlockAlgorithm._append('data');\n	         *     bufferedBlockAlgorithm._append(wordArray);\n	         */\n	        _append: function (data) {\n	            // Convert string to WordArray, else assume WordArray already\n	            if (typeof data == 'string') {\n	                data = Utf8.parse(data);\n	            }\n\n	            // Append\n	            this._data.concat(data);\n	            this._nDataBytes += data.sigBytes;\n	        },\n\n	        /**\n	         * Processes available data blocks.\n	         *\n	         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n	         *\n	         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n	         *\n	         * @return {WordArray} The processed data.\n	         *\n	         * @example\n	         *\n	         *     var processedData = bufferedBlockAlgorithm._process();\n	         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');\n	         */\n	        _process: function (doFlush) {\n	            var processedWords;\n\n	            // Shortcuts\n	            var data = this._data;\n	            var dataWords = data.words;\n	            var dataSigBytes = data.sigBytes;\n	            var blockSize = this.blockSize;\n	            var blockSizeBytes = blockSize * 4;\n\n	            // Count blocks ready\n	            var nBlocksReady = dataSigBytes / blockSizeBytes;\n	            if (doFlush) {\n	                // Round up to include partial blocks\n	                nBlocksReady = Math.ceil(nBlocksReady);\n	            } else {\n	                // Round down to include only full blocks,\n	                // less the number of blocks that must remain in the buffer\n	                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n	            }\n\n	            // Count words ready\n	            var nWordsReady = nBlocksReady * blockSize;\n\n	            // Count bytes ready\n	            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n	            // Process blocks\n	            if (nWordsReady) {\n	                for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n	                    // Perform concrete-algorithm logic\n	                    this._doProcessBlock(dataWords, offset);\n	                }\n\n	                // Remove processed words\n	                processedWords = dataWords.splice(0, nWordsReady);\n	                data.sigBytes -= nBytesReady;\n	            }\n\n	            // Return processed words\n	            return new WordArray.init(processedWords, nBytesReady);\n	        },\n\n	        /**\n	         * Creates a copy of this object.\n	         *\n	         * @return {Object} The clone.\n	         *\n	         * @example\n	         *\n	         *     var clone = bufferedBlockAlgorithm.clone();\n	         */\n	        clone: function () {\n	            var clone = Base.clone.call(this);\n	            clone._data = this._data.clone();\n\n	            return clone;\n	        },\n\n	        _minBufferSize: 0\n	    });\n\n	    /**\n	     * Abstract hasher template.\n	     *\n	     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n	     */\n	    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n	        /**\n	         * Configuration options.\n	         */\n	        cfg: Base.extend(),\n\n	        /**\n	         * Initializes a newly created hasher.\n	         *\n	         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n	         *\n	         * @example\n	         *\n	         *     var hasher = CryptoJS.algo.SHA256.create();\n	         */\n	        init: function (cfg) {\n	            // Apply config defaults\n	            this.cfg = this.cfg.extend(cfg);\n\n	            // Set initial values\n	            this.reset();\n	        },\n\n	        /**\n	         * Resets this hasher to its initial state.\n	         *\n	         * @example\n	         *\n	         *     hasher.reset();\n	         */\n	        reset: function () {\n	            // Reset data buffer\n	            BufferedBlockAlgorithm.reset.call(this);\n\n	            // Perform concrete-hasher logic\n	            this._doReset();\n	        },\n\n	        /**\n	         * Updates this hasher with a message.\n	         *\n	         * @param {WordArray|string} messageUpdate The message to append.\n	         *\n	         * @return {Hasher} This hasher.\n	         *\n	         * @example\n	         *\n	         *     hasher.update('message');\n	         *     hasher.update(wordArray);\n	         */\n	        update: function (messageUpdate) {\n	            // Append\n	            this._append(messageUpdate);\n\n	            // Update the hash\n	            this._process();\n\n	            // Chainable\n	            return this;\n	        },\n\n	        /**\n	         * Finalizes the hash computation.\n	         * Note that the finalize operation is effectively a destructive, read-once operation.\n	         *\n	         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n	         *\n	         * @return {WordArray} The hash.\n	         *\n	         * @example\n	         *\n	         *     var hash = hasher.finalize();\n	         *     var hash = hasher.finalize('message');\n	         *     var hash = hasher.finalize(wordArray);\n	         */\n	        finalize: function (messageUpdate) {\n	            // Final message update\n	            if (messageUpdate) {\n	                this._append(messageUpdate);\n	            }\n\n	            // Perform concrete-hasher logic\n	            var hash = this._doFinalize();\n\n	            return hash;\n	        },\n\n	        blockSize: 512/32,\n\n	        /**\n	         * Creates a shortcut function to a hasher's object interface.\n	         *\n	         * @param {Hasher} hasher The hasher to create a helper for.\n	         *\n	         * @return {Function} The shortcut function.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n	         */\n	        _createHelper: function (hasher) {\n	            return function (message, cfg) {\n	                return new hasher.init(cfg).finalize(message);\n	            };\n	        },\n\n	        /**\n	         * Creates a shortcut function to the HMAC's object interface.\n	         *\n	         * @param {Hasher} hasher The hasher to use in this HMAC helper.\n	         *\n	         * @return {Function} The shortcut function.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n	         */\n	        _createHmacHelper: function (hasher) {\n	            return function (message, key) {\n	                return new C_algo.HMAC.init(hasher, key).finalize(message);\n	            };\n	        }\n	    });\n\n	    /**\n	     * Algorithm namespace.\n	     */\n	    var C_algo = C.algo = {};\n\n	    return C;\n	}(Math));\n\n\n	(function (undefined) {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var Base = C_lib.Base;\n	    var X32WordArray = C_lib.WordArray;\n\n	    /**\n	     * x64 namespace.\n	     */\n	    var C_x64 = C.x64 = {};\n\n	    /**\n	     * A 64-bit word.\n	     */\n	    var X64Word = C_x64.Word = Base.extend({\n	        /**\n	         * Initializes a newly created 64-bit word.\n	         *\n	         * @param {number} high The high 32 bits.\n	         * @param {number} low The low 32 bits.\n	         *\n	         * @example\n	         *\n	         *     var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n	         */\n	        init: function (high, low) {\n	            this.high = high;\n	            this.low = low;\n	        }\n\n	        /**\n	         * Bitwise NOTs this word.\n	         *\n	         * @return {X64Word} A new x64-Word object after negating.\n	         *\n	         * @example\n	         *\n	         *     var negated = x64Word.not();\n	         */\n	        // not: function () {\n	            // var high = ~this.high;\n	            // var low = ~this.low;\n\n	            // return X64Word.create(high, low);\n	        // },\n\n	        /**\n	         * Bitwise ANDs this word with the passed word.\n	         *\n	         * @param {X64Word} word The x64-Word to AND with this word.\n	         *\n	         * @return {X64Word} A new x64-Word object after ANDing.\n	         *\n	         * @example\n	         *\n	         *     var anded = x64Word.and(anotherX64Word);\n	         */\n	        // and: function (word) {\n	            // var high = this.high & word.high;\n	            // var low = this.low & word.low;\n\n	            // return X64Word.create(high, low);\n	        // },\n\n	        /**\n	         * Bitwise ORs this word with the passed word.\n	         *\n	         * @param {X64Word} word The x64-Word to OR with this word.\n	         *\n	         * @return {X64Word} A new x64-Word object after ORing.\n	         *\n	         * @example\n	         *\n	         *     var ored = x64Word.or(anotherX64Word);\n	         */\n	        // or: function (word) {\n	            // var high = this.high | word.high;\n	            // var low = this.low | word.low;\n\n	            // return X64Word.create(high, low);\n	        // },\n\n	        /**\n	         * Bitwise XORs this word with the passed word.\n	         *\n	         * @param {X64Word} word The x64-Word to XOR with this word.\n	         *\n	         * @return {X64Word} A new x64-Word object after XORing.\n	         *\n	         * @example\n	         *\n	         *     var xored = x64Word.xor(anotherX64Word);\n	         */\n	        // xor: function (word) {\n	            // var high = this.high ^ word.high;\n	            // var low = this.low ^ word.low;\n\n	            // return X64Word.create(high, low);\n	        // },\n\n	        /**\n	         * Shifts this word n bits to the left.\n	         *\n	         * @param {number} n The number of bits to shift.\n	         *\n	         * @return {X64Word} A new x64-Word object after shifting.\n	         *\n	         * @example\n	         *\n	         *     var shifted = x64Word.shiftL(25);\n	         */\n	        // shiftL: function (n) {\n	            // if (n < 32) {\n	                // var high = (this.high << n) | (this.low >>> (32 - n));\n	                // var low = this.low << n;\n	            // } else {\n	                // var high = this.low << (n - 32);\n	                // var low = 0;\n	            // }\n\n	            // return X64Word.create(high, low);\n	        // },\n\n	        /**\n	         * Shifts this word n bits to the right.\n	         *\n	         * @param {number} n The number of bits to shift.\n	         *\n	         * @return {X64Word} A new x64-Word object after shifting.\n	         *\n	         * @example\n	         *\n	         *     var shifted = x64Word.shiftR(7);\n	         */\n	        // shiftR: function (n) {\n	            // if (n < 32) {\n	                // var low = (this.low >>> n) | (this.high << (32 - n));\n	                // var high = this.high >>> n;\n	            // } else {\n	                // var low = this.high >>> (n - 32);\n	                // var high = 0;\n	            // }\n\n	            // return X64Word.create(high, low);\n	        // },\n\n	        /**\n	         * Rotates this word n bits to the left.\n	         *\n	         * @param {number} n The number of bits to rotate.\n	         *\n	         * @return {X64Word} A new x64-Word object after rotating.\n	         *\n	         * @example\n	         *\n	         *     var rotated = x64Word.rotL(25);\n	         */\n	        // rotL: function (n) {\n	            // return this.shiftL(n).or(this.shiftR(64 - n));\n	        // },\n\n	        /**\n	         * Rotates this word n bits to the right.\n	         *\n	         * @param {number} n The number of bits to rotate.\n	         *\n	         * @return {X64Word} A new x64-Word object after rotating.\n	         *\n	         * @example\n	         *\n	         *     var rotated = x64Word.rotR(7);\n	         */\n	        // rotR: function (n) {\n	            // return this.shiftR(n).or(this.shiftL(64 - n));\n	        // },\n\n	        /**\n	         * Adds this word with the passed word.\n	         *\n	         * @param {X64Word} word The x64-Word to add with this word.\n	         *\n	         * @return {X64Word} A new x64-Word object after adding.\n	         *\n	         * @example\n	         *\n	         *     var added = x64Word.add(anotherX64Word);\n	         */\n	        // add: function (word) {\n	            // var low = (this.low + word.low) | 0;\n	            // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n	            // var high = (this.high + word.high + carry) | 0;\n\n	            // return X64Word.create(high, low);\n	        // }\n	    });\n\n	    /**\n	     * An array of 64-bit words.\n	     *\n	     * @property {Array} words The array of CryptoJS.x64.Word objects.\n	     * @property {number} sigBytes The number of significant bytes in this word array.\n	     */\n	    var X64WordArray = C_x64.WordArray = Base.extend({\n	        /**\n	         * Initializes a newly created word array.\n	         *\n	         * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n	         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n	         *\n	         * @example\n	         *\n	         *     var wordArray = CryptoJS.x64.WordArray.create();\n	         *\n	         *     var wordArray = CryptoJS.x64.WordArray.create([\n	         *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n	         *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n	         *     ]);\n	         *\n	         *     var wordArray = CryptoJS.x64.WordArray.create([\n	         *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n	         *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n	         *     ], 10);\n	         */\n	        init: function (words, sigBytes) {\n	            words = this.words = words || [];\n\n	            if (sigBytes != undefined) {\n	                this.sigBytes = sigBytes;\n	            } else {\n	                this.sigBytes = words.length * 8;\n	            }\n	        },\n\n	        /**\n	         * Converts this 64-bit word array to a 32-bit word array.\n	         *\n	         * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n	         *\n	         * @example\n	         *\n	         *     var x32WordArray = x64WordArray.toX32();\n	         */\n	        toX32: function () {\n	            // Shortcuts\n	            var x64Words = this.words;\n	            var x64WordsLength = x64Words.length;\n\n	            // Convert\n	            var x32Words = [];\n	            for (var i = 0; i < x64WordsLength; i++) {\n	                var x64Word = x64Words[i];\n	                x32Words.push(x64Word.high);\n	                x32Words.push(x64Word.low);\n	            }\n\n	            return X32WordArray.create(x32Words, this.sigBytes);\n	        },\n\n	        /**\n	         * Creates a copy of this word array.\n	         *\n	         * @return {X64WordArray} The clone.\n	         *\n	         * @example\n	         *\n	         *     var clone = x64WordArray.clone();\n	         */\n	        clone: function () {\n	            var clone = Base.clone.call(this);\n\n	            // Clone \"words\" array\n	            var words = clone.words = this.words.slice(0);\n\n	            // Clone each X64Word object\n	            var wordsLength = words.length;\n	            for (var i = 0; i < wordsLength; i++) {\n	                words[i] = words[i].clone();\n	            }\n\n	            return clone;\n	        }\n	    });\n	}());\n\n\n	(function () {\n	    // Check if typed arrays are supported\n	    if (typeof ArrayBuffer != 'function') {\n	        return;\n	    }\n\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var WordArray = C_lib.WordArray;\n\n	    // Reference original init\n	    var superInit = WordArray.init;\n\n	    // Augment WordArray.init to handle typed arrays\n	    var subInit = WordArray.init = function (typedArray) {\n	        // Convert buffers to uint8\n	        if (typedArray instanceof ArrayBuffer) {\n	            typedArray = new Uint8Array(typedArray);\n	        }\n\n	        // Convert other array views to uint8\n	        if (\n	            typedArray instanceof Int8Array ||\n	            (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n	            typedArray instanceof Int16Array ||\n	            typedArray instanceof Uint16Array ||\n	            typedArray instanceof Int32Array ||\n	            typedArray instanceof Uint32Array ||\n	            typedArray instanceof Float32Array ||\n	            typedArray instanceof Float64Array\n	        ) {\n	            typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n	        }\n\n	        // Handle Uint8Array\n	        if (typedArray instanceof Uint8Array) {\n	            // Shortcut\n	            var typedArrayByteLength = typedArray.byteLength;\n\n	            // Extract bytes\n	            var words = [];\n	            for (var i = 0; i < typedArrayByteLength; i++) {\n	                words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n	            }\n\n	            // Initialize this word array\n	            superInit.call(this, words, typedArrayByteLength);\n	        } else {\n	            // Else call normal init\n	            superInit.apply(this, arguments);\n	        }\n	    };\n\n	    subInit.prototype = WordArray;\n	}());\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var WordArray = C_lib.WordArray;\n	    var C_enc = C.enc;\n\n	    /**\n	     * UTF-16 BE encoding strategy.\n	     */\n	    var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n	        /**\n	         * Converts a word array to a UTF-16 BE string.\n	         *\n	         * @param {WordArray} wordArray The word array.\n	         *\n	         * @return {string} The UTF-16 BE string.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n	         */\n	        stringify: function (wordArray) {\n	            // Shortcuts\n	            var words = wordArray.words;\n	            var sigBytes = wordArray.sigBytes;\n\n	            // Convert\n	            var utf16Chars = [];\n	            for (var i = 0; i < sigBytes; i += 2) {\n	                var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n	                utf16Chars.push(String.fromCharCode(codePoint));\n	            }\n\n	            return utf16Chars.join('');\n	        },\n\n	        /**\n	         * Converts a UTF-16 BE string to a word array.\n	         *\n	         * @param {string} utf16Str The UTF-16 BE string.\n	         *\n	         * @return {WordArray} The word array.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n	         */\n	        parse: function (utf16Str) {\n	            // Shortcut\n	            var utf16StrLength = utf16Str.length;\n\n	            // Convert\n	            var words = [];\n	            for (var i = 0; i < utf16StrLength; i++) {\n	                words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n	            }\n\n	            return WordArray.create(words, utf16StrLength * 2);\n	        }\n	    };\n\n	    /**\n	     * UTF-16 LE encoding strategy.\n	     */\n	    C_enc.Utf16LE = {\n	        /**\n	         * Converts a word array to a UTF-16 LE string.\n	         *\n	         * @param {WordArray} wordArray The word array.\n	         *\n	         * @return {string} The UTF-16 LE string.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n	         */\n	        stringify: function (wordArray) {\n	            // Shortcuts\n	            var words = wordArray.words;\n	            var sigBytes = wordArray.sigBytes;\n\n	            // Convert\n	            var utf16Chars = [];\n	            for (var i = 0; i < sigBytes; i += 2) {\n	                var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n	                utf16Chars.push(String.fromCharCode(codePoint));\n	            }\n\n	            return utf16Chars.join('');\n	        },\n\n	        /**\n	         * Converts a UTF-16 LE string to a word array.\n	         *\n	         * @param {string} utf16Str The UTF-16 LE string.\n	         *\n	         * @return {WordArray} The word array.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n	         */\n	        parse: function (utf16Str) {\n	            // Shortcut\n	            var utf16StrLength = utf16Str.length;\n\n	            // Convert\n	            var words = [];\n	            for (var i = 0; i < utf16StrLength; i++) {\n	                words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n	            }\n\n	            return WordArray.create(words, utf16StrLength * 2);\n	        }\n	    };\n\n	    function swapEndian(word) {\n	        return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n	    }\n	}());\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var WordArray = C_lib.WordArray;\n	    var C_enc = C.enc;\n\n	    /**\n	     * Base64 encoding strategy.\n	     */\n	    var Base64 = C_enc.Base64 = {\n	        /**\n	         * Converts a word array to a Base64 string.\n	         *\n	         * @param {WordArray} wordArray The word array.\n	         *\n	         * @return {string} The Base64 string.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n	         */\n	        stringify: function (wordArray) {\n	            // Shortcuts\n	            var words = wordArray.words;\n	            var sigBytes = wordArray.sigBytes;\n	            var map = this._map;\n\n	            // Clamp excess bits\n	            wordArray.clamp();\n\n	            // Convert\n	            var base64Chars = [];\n	            for (var i = 0; i < sigBytes; i += 3) {\n	                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n	                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n	                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n	                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n	                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n	                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n	                }\n	            }\n\n	            // Add padding\n	            var paddingChar = map.charAt(64);\n	            if (paddingChar) {\n	                while (base64Chars.length % 4) {\n	                    base64Chars.push(paddingChar);\n	                }\n	            }\n\n	            return base64Chars.join('');\n	        },\n\n	        /**\n	         * Converts a Base64 string to a word array.\n	         *\n	         * @param {string} base64Str The Base64 string.\n	         *\n	         * @return {WordArray} The word array.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var wordArray = CryptoJS.enc.Base64.parse(base64String);\n	         */\n	        parse: function (base64Str) {\n	            // Shortcuts\n	            var base64StrLength = base64Str.length;\n	            var map = this._map;\n	            var reverseMap = this._reverseMap;\n\n	            if (!reverseMap) {\n	                    reverseMap = this._reverseMap = [];\n	                    for (var j = 0; j < map.length; j++) {\n	                        reverseMap[map.charCodeAt(j)] = j;\n	                    }\n	            }\n\n	            // Ignore padding\n	            var paddingChar = map.charAt(64);\n	            if (paddingChar) {\n	                var paddingIndex = base64Str.indexOf(paddingChar);\n	                if (paddingIndex !== -1) {\n	                    base64StrLength = paddingIndex;\n	                }\n	            }\n\n	            // Convert\n	            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n	        },\n\n	        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n	    };\n\n	    function parseLoop(base64Str, base64StrLength, reverseMap) {\n	      var words = [];\n	      var nBytes = 0;\n	      for (var i = 0; i < base64StrLength; i++) {\n	          if (i % 4) {\n	              var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n	              var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n	              var bitsCombined = bits1 | bits2;\n	              words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n	              nBytes++;\n	          }\n	      }\n	      return WordArray.create(words, nBytes);\n	    }\n	}());\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var WordArray = C_lib.WordArray;\n	    var C_enc = C.enc;\n\n	    /**\n	     * Base64url encoding strategy.\n	     */\n	    var Base64url = C_enc.Base64url = {\n	        /**\n	         * Converts a word array to a Base64url string.\n	         *\n	         * @param {WordArray} wordArray The word array.\n	         *\n	         * @param {boolean} urlSafe Whether to use url safe\n	         *\n	         * @return {string} The Base64url string.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n	         */\n	        stringify: function (wordArray, urlSafe) {\n	            if (urlSafe === undefined) {\n	                urlSafe = true\n	            }\n	            // Shortcuts\n	            var words = wordArray.words;\n	            var sigBytes = wordArray.sigBytes;\n	            var map = urlSafe ? this._safe_map : this._map;\n\n	            // Clamp excess bits\n	            wordArray.clamp();\n\n	            // Convert\n	            var base64Chars = [];\n	            for (var i = 0; i < sigBytes; i += 3) {\n	                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n	                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n	                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n	                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n	                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n	                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n	                }\n	            }\n\n	            // Add padding\n	            var paddingChar = map.charAt(64);\n	            if (paddingChar) {\n	                while (base64Chars.length % 4) {\n	                    base64Chars.push(paddingChar);\n	                }\n	            }\n\n	            return base64Chars.join('');\n	        },\n\n	        /**\n	         * Converts a Base64url string to a word array.\n	         *\n	         * @param {string} base64Str The Base64url string.\n	         *\n	         * @param {boolean} urlSafe Whether to use url safe\n	         *\n	         * @return {WordArray} The word array.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n	         */\n	        parse: function (base64Str, urlSafe) {\n	            if (urlSafe === undefined) {\n	                urlSafe = true\n	            }\n\n	            // Shortcuts\n	            var base64StrLength = base64Str.length;\n	            var map = urlSafe ? this._safe_map : this._map;\n	            var reverseMap = this._reverseMap;\n\n	            if (!reverseMap) {\n	                reverseMap = this._reverseMap = [];\n	                for (var j = 0; j < map.length; j++) {\n	                    reverseMap[map.charCodeAt(j)] = j;\n	                }\n	            }\n\n	            // Ignore padding\n	            var paddingChar = map.charAt(64);\n	            if (paddingChar) {\n	                var paddingIndex = base64Str.indexOf(paddingChar);\n	                if (paddingIndex !== -1) {\n	                    base64StrLength = paddingIndex;\n	                }\n	            }\n\n	            // Convert\n	            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n	        },\n\n	        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n	        _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n	    };\n\n	    function parseLoop(base64Str, base64StrLength, reverseMap) {\n	        var words = [];\n	        var nBytes = 0;\n	        for (var i = 0; i < base64StrLength; i++) {\n	            if (i % 4) {\n	                var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n	                var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n	                var bitsCombined = bits1 | bits2;\n	                words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n	                nBytes++;\n	            }\n	        }\n	        return WordArray.create(words, nBytes);\n	    }\n	}());\n\n\n	(function (Math) {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var WordArray = C_lib.WordArray;\n	    var Hasher = C_lib.Hasher;\n	    var C_algo = C.algo;\n\n	    // Constants table\n	    var T = [];\n\n	    // Compute constants\n	    (function () {\n	        for (var i = 0; i < 64; i++) {\n	            T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n	        }\n	    }());\n\n	    /**\n	     * MD5 hash algorithm.\n	     */\n	    var MD5 = C_algo.MD5 = Hasher.extend({\n	        _doReset: function () {\n	            this._hash = new WordArray.init([\n	                0x67452301, 0xefcdab89,\n	                0x98badcfe, 0x10325476\n	            ]);\n	        },\n\n	        _doProcessBlock: function (M, offset) {\n	            // Swap endian\n	            for (var i = 0; i < 16; i++) {\n	                // Shortcuts\n	                var offset_i = offset + i;\n	                var M_offset_i = M[offset_i];\n\n	                M[offset_i] = (\n	                    (((M_offset_i << 8)  | (M_offset_i >>> 24)) & 0x00ff00ff) |\n	                    (((M_offset_i << 24) | (M_offset_i >>> 8))  & 0xff00ff00)\n	                );\n	            }\n\n	            // Shortcuts\n	            var H = this._hash.words;\n\n	            var M_offset_0  = M[offset + 0];\n	            var M_offset_1  = M[offset + 1];\n	            var M_offset_2  = M[offset + 2];\n	            var M_offset_3  = M[offset + 3];\n	            var M_offset_4  = M[offset + 4];\n	            var M_offset_5  = M[offset + 5];\n	            var M_offset_6  = M[offset + 6];\n	            var M_offset_7  = M[offset + 7];\n	            var M_offset_8  = M[offset + 8];\n	            var M_offset_9  = M[offset + 9];\n	            var M_offset_10 = M[offset + 10];\n	            var M_offset_11 = M[offset + 11];\n	            var M_offset_12 = M[offset + 12];\n	            var M_offset_13 = M[offset + 13];\n	            var M_offset_14 = M[offset + 14];\n	            var M_offset_15 = M[offset + 15];\n\n	            // Working variables\n	            var a = H[0];\n	            var b = H[1];\n	            var c = H[2];\n	            var d = H[3];\n\n	            // Computation\n	            a = FF(a, b, c, d, M_offset_0,  7,  T[0]);\n	            d = FF(d, a, b, c, M_offset_1,  12, T[1]);\n	            c = FF(c, d, a, b, M_offset_2,  17, T[2]);\n	            b = FF(b, c, d, a, M_offset_3,  22, T[3]);\n	            a = FF(a, b, c, d, M_offset_4,  7,  T[4]);\n	            d = FF(d, a, b, c, M_offset_5,  12, T[5]);\n	            c = FF(c, d, a, b, M_offset_6,  17, T[6]);\n	            b = FF(b, c, d, a, M_offset_7,  22, T[7]);\n	            a = FF(a, b, c, d, M_offset_8,  7,  T[8]);\n	            d = FF(d, a, b, c, M_offset_9,  12, T[9]);\n	            c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n	            b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n	            a = FF(a, b, c, d, M_offset_12, 7,  T[12]);\n	            d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n	            c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n	            b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n	            a = GG(a, b, c, d, M_offset_1,  5,  T[16]);\n	            d = GG(d, a, b, c, M_offset_6,  9,  T[17]);\n	            c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n	            b = GG(b, c, d, a, M_offset_0,  20, T[19]);\n	            a = GG(a, b, c, d, M_offset_5,  5,  T[20]);\n	            d = GG(d, a, b, c, M_offset_10, 9,  T[21]);\n	            c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n	            b = GG(b, c, d, a, M_offset_4,  20, T[23]);\n	            a = GG(a, b, c, d, M_offset_9,  5,  T[24]);\n	            d = GG(d, a, b, c, M_offset_14, 9,  T[25]);\n	            c = GG(c, d, a, b, M_offset_3,  14, T[26]);\n	            b = GG(b, c, d, a, M_offset_8,  20, T[27]);\n	            a = GG(a, b, c, d, M_offset_13, 5,  T[28]);\n	            d = GG(d, a, b, c, M_offset_2,  9,  T[29]);\n	            c = GG(c, d, a, b, M_offset_7,  14, T[30]);\n	            b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n	            a = HH(a, b, c, d, M_offset_5,  4,  T[32]);\n	            d = HH(d, a, b, c, M_offset_8,  11, T[33]);\n	            c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n	            b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n	            a = HH(a, b, c, d, M_offset_1,  4,  T[36]);\n	            d = HH(d, a, b, c, M_offset_4,  11, T[37]);\n	            c = HH(c, d, a, b, M_offset_7,  16, T[38]);\n	            b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n	            a = HH(a, b, c, d, M_offset_13, 4,  T[40]);\n	            d = HH(d, a, b, c, M_offset_0,  11, T[41]);\n	            c = HH(c, d, a, b, M_offset_3,  16, T[42]);\n	            b = HH(b, c, d, a, M_offset_6,  23, T[43]);\n	            a = HH(a, b, c, d, M_offset_9,  4,  T[44]);\n	            d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n	            c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n	            b = HH(b, c, d, a, M_offset_2,  23, T[47]);\n\n	            a = II(a, b, c, d, M_offset_0,  6,  T[48]);\n	            d = II(d, a, b, c, M_offset_7,  10, T[49]);\n	            c = II(c, d, a, b, M_offset_14, 15, T[50]);\n	            b = II(b, c, d, a, M_offset_5,  21, T[51]);\n	            a = II(a, b, c, d, M_offset_12, 6,  T[52]);\n	            d = II(d, a, b, c, M_offset_3,  10, T[53]);\n	            c = II(c, d, a, b, M_offset_10, 15, T[54]);\n	            b = II(b, c, d, a, M_offset_1,  21, T[55]);\n	            a = II(a, b, c, d, M_offset_8,  6,  T[56]);\n	            d = II(d, a, b, c, M_offset_15, 10, T[57]);\n	            c = II(c, d, a, b, M_offset_6,  15, T[58]);\n	            b = II(b, c, d, a, M_offset_13, 21, T[59]);\n	            a = II(a, b, c, d, M_offset_4,  6,  T[60]);\n	            d = II(d, a, b, c, M_offset_11, 10, T[61]);\n	            c = II(c, d, a, b, M_offset_2,  15, T[62]);\n	            b = II(b, c, d, a, M_offset_9,  21, T[63]);\n\n	            // Intermediate hash value\n	            H[0] = (H[0] + a) | 0;\n	            H[1] = (H[1] + b) | 0;\n	            H[2] = (H[2] + c) | 0;\n	            H[3] = (H[3] + d) | 0;\n	        },\n\n	        _doFinalize: function () {\n	            // Shortcuts\n	            var data = this._data;\n	            var dataWords = data.words;\n\n	            var nBitsTotal = this._nDataBytes * 8;\n	            var nBitsLeft = data.sigBytes * 8;\n\n	            // Add padding\n	            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n	            var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n	            var nBitsTotalL = nBitsTotal;\n	            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n	                (((nBitsTotalH << 8)  | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n	                (((nBitsTotalH << 24) | (nBitsTotalH >>> 8))  & 0xff00ff00)\n	            );\n	            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n	                (((nBitsTotalL << 8)  | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n	                (((nBitsTotalL << 24) | (nBitsTotalL >>> 8))  & 0xff00ff00)\n	            );\n\n	            data.sigBytes = (dataWords.length + 1) * 4;\n\n	            // Hash final blocks\n	            this._process();\n\n	            // Shortcuts\n	            var hash = this._hash;\n	            var H = hash.words;\n\n	            // Swap endian\n	            for (var i = 0; i < 4; i++) {\n	                // Shortcut\n	                var H_i = H[i];\n\n	                H[i] = (((H_i << 8)  | (H_i >>> 24)) & 0x00ff00ff) |\n	                       (((H_i << 24) | (H_i >>> 8))  & 0xff00ff00);\n	            }\n\n	            // Return final computed hash\n	            return hash;\n	        },\n\n	        clone: function () {\n	            var clone = Hasher.clone.call(this);\n	            clone._hash = this._hash.clone();\n\n	            return clone;\n	        }\n	    });\n\n	    function FF(a, b, c, d, x, s, t) {\n	        var n = a + ((b & c) | (~b & d)) + x + t;\n	        return ((n << s) | (n >>> (32 - s))) + b;\n	    }\n\n	    function GG(a, b, c, d, x, s, t) {\n	        var n = a + ((b & d) | (c & ~d)) + x + t;\n	        return ((n << s) | (n >>> (32 - s))) + b;\n	    }\n\n	    function HH(a, b, c, d, x, s, t) {\n	        var n = a + (b ^ c ^ d) + x + t;\n	        return ((n << s) | (n >>> (32 - s))) + b;\n	    }\n\n	    function II(a, b, c, d, x, s, t) {\n	        var n = a + (c ^ (b | ~d)) + x + t;\n	        return ((n << s) | (n >>> (32 - s))) + b;\n	    }\n\n	    /**\n	     * Shortcut function to the hasher's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     *\n	     * @return {WordArray} The hash.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hash = CryptoJS.MD5('message');\n	     *     var hash = CryptoJS.MD5(wordArray);\n	     */\n	    C.MD5 = Hasher._createHelper(MD5);\n\n	    /**\n	     * Shortcut function to the HMAC's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     * @param {WordArray|string} key The secret key.\n	     *\n	     * @return {WordArray} The HMAC.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hmac = CryptoJS.HmacMD5(message, key);\n	     */\n	    C.HmacMD5 = Hasher._createHmacHelper(MD5);\n	}(Math));\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var WordArray = C_lib.WordArray;\n	    var Hasher = C_lib.Hasher;\n	    var C_algo = C.algo;\n\n	    // Reusable object\n	    var W = [];\n\n	    /**\n	     * SHA-1 hash algorithm.\n	     */\n	    var SHA1 = C_algo.SHA1 = Hasher.extend({\n	        _doReset: function () {\n	            this._hash = new WordArray.init([\n	                0x67452301, 0xefcdab89,\n	                0x98badcfe, 0x10325476,\n	                0xc3d2e1f0\n	            ]);\n	        },\n\n	        _doProcessBlock: function (M, offset) {\n	            // Shortcut\n	            var H = this._hash.words;\n\n	            // Working variables\n	            var a = H[0];\n	            var b = H[1];\n	            var c = H[2];\n	            var d = H[3];\n	            var e = H[4];\n\n	            // Computation\n	            for (var i = 0; i < 80; i++) {\n	                if (i < 16) {\n	                    W[i] = M[offset + i] | 0;\n	                } else {\n	                    var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n	                    W[i] = (n << 1) | (n >>> 31);\n	                }\n\n	                var t = ((a << 5) | (a >>> 27)) + e + W[i];\n	                if (i < 20) {\n	                    t += ((b & c) | (~b & d)) + 0x5a827999;\n	                } else if (i < 40) {\n	                    t += (b ^ c ^ d) + 0x6ed9eba1;\n	                } else if (i < 60) {\n	                    t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n	                } else /* if (i < 80) */ {\n	                    t += (b ^ c ^ d) - 0x359d3e2a;\n	                }\n\n	                e = d;\n	                d = c;\n	                c = (b << 30) | (b >>> 2);\n	                b = a;\n	                a = t;\n	            }\n\n	            // Intermediate hash value\n	            H[0] = (H[0] + a) | 0;\n	            H[1] = (H[1] + b) | 0;\n	            H[2] = (H[2] + c) | 0;\n	            H[3] = (H[3] + d) | 0;\n	            H[4] = (H[4] + e) | 0;\n	        },\n\n	        _doFinalize: function () {\n	            // Shortcuts\n	            var data = this._data;\n	            var dataWords = data.words;\n\n	            var nBitsTotal = this._nDataBytes * 8;\n	            var nBitsLeft = data.sigBytes * 8;\n\n	            // Add padding\n	            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n	            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n	            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n	            data.sigBytes = dataWords.length * 4;\n\n	            // Hash final blocks\n	            this._process();\n\n	            // Return final computed hash\n	            return this._hash;\n	        },\n\n	        clone: function () {\n	            var clone = Hasher.clone.call(this);\n	            clone._hash = this._hash.clone();\n\n	            return clone;\n	        }\n	    });\n\n	    /**\n	     * Shortcut function to the hasher's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     *\n	     * @return {WordArray} The hash.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hash = CryptoJS.SHA1('message');\n	     *     var hash = CryptoJS.SHA1(wordArray);\n	     */\n	    C.SHA1 = Hasher._createHelper(SHA1);\n\n	    /**\n	     * Shortcut function to the HMAC's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     * @param {WordArray|string} key The secret key.\n	     *\n	     * @return {WordArray} The HMAC.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hmac = CryptoJS.HmacSHA1(message, key);\n	     */\n	    C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n	}());\n\n\n	(function (Math) {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var WordArray = C_lib.WordArray;\n	    var Hasher = C_lib.Hasher;\n	    var C_algo = C.algo;\n\n	    // Initialization and round constants tables\n	    var H = [];\n	    var K = [];\n\n	    // Compute constants\n	    (function () {\n	        function isPrime(n) {\n	            var sqrtN = Math.sqrt(n);\n	            for (var factor = 2; factor <= sqrtN; factor++) {\n	                if (!(n % factor)) {\n	                    return false;\n	                }\n	            }\n\n	            return true;\n	        }\n\n	        function getFractionalBits(n) {\n	            return ((n - (n | 0)) * 0x100000000) | 0;\n	        }\n\n	        var n = 2;\n	        var nPrime = 0;\n	        while (nPrime < 64) {\n	            if (isPrime(n)) {\n	                if (nPrime < 8) {\n	                    H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n	                }\n	                K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n	                nPrime++;\n	            }\n\n	            n++;\n	        }\n	    }());\n\n	    // Reusable object\n	    var W = [];\n\n	    /**\n	     * SHA-256 hash algorithm.\n	     */\n	    var SHA256 = C_algo.SHA256 = Hasher.extend({\n	        _doReset: function () {\n	            this._hash = new WordArray.init(H.slice(0));\n	        },\n\n	        _doProcessBlock: function (M, offset) {\n	            // Shortcut\n	            var H = this._hash.words;\n\n	            // Working variables\n	            var a = H[0];\n	            var b = H[1];\n	            var c = H[2];\n	            var d = H[3];\n	            var e = H[4];\n	            var f = H[5];\n	            var g = H[6];\n	            var h = H[7];\n\n	            // Computation\n	            for (var i = 0; i < 64; i++) {\n	                if (i < 16) {\n	                    W[i] = M[offset + i] | 0;\n	                } else {\n	                    var gamma0x = W[i - 15];\n	                    var gamma0  = ((gamma0x << 25) | (gamma0x >>> 7))  ^\n	                                  ((gamma0x << 14) | (gamma0x >>> 18)) ^\n	                                   (gamma0x >>> 3);\n\n	                    var gamma1x = W[i - 2];\n	                    var gamma1  = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n	                                  ((gamma1x << 13) | (gamma1x >>> 19)) ^\n	                                   (gamma1x >>> 10);\n\n	                    W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n	                }\n\n	                var ch  = (e & f) ^ (~e & g);\n	                var maj = (a & b) ^ (a & c) ^ (b & c);\n\n	                var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n	                var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7)  | (e >>> 25));\n\n	                var t1 = h + sigma1 + ch + K[i] + W[i];\n	                var t2 = sigma0 + maj;\n\n	                h = g;\n	                g = f;\n	                f = e;\n	                e = (d + t1) | 0;\n	                d = c;\n	                c = b;\n	                b = a;\n	                a = (t1 + t2) | 0;\n	            }\n\n	            // Intermediate hash value\n	            H[0] = (H[0] + a) | 0;\n	            H[1] = (H[1] + b) | 0;\n	            H[2] = (H[2] + c) | 0;\n	            H[3] = (H[3] + d) | 0;\n	            H[4] = (H[4] + e) | 0;\n	            H[5] = (H[5] + f) | 0;\n	            H[6] = (H[6] + g) | 0;\n	            H[7] = (H[7] + h) | 0;\n	        },\n\n	        _doFinalize: function () {\n	            // Shortcuts\n	            var data = this._data;\n	            var dataWords = data.words;\n\n	            var nBitsTotal = this._nDataBytes * 8;\n	            var nBitsLeft = data.sigBytes * 8;\n\n	            // Add padding\n	            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n	            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n	            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n	            data.sigBytes = dataWords.length * 4;\n\n	            // Hash final blocks\n	            this._process();\n\n	            // Return final computed hash\n	            return this._hash;\n	        },\n\n	        clone: function () {\n	            var clone = Hasher.clone.call(this);\n	            clone._hash = this._hash.clone();\n\n	            return clone;\n	        }\n	    });\n\n	    /**\n	     * Shortcut function to the hasher's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     *\n	     * @return {WordArray} The hash.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hash = CryptoJS.SHA256('message');\n	     *     var hash = CryptoJS.SHA256(wordArray);\n	     */\n	    C.SHA256 = Hasher._createHelper(SHA256);\n\n	    /**\n	     * Shortcut function to the HMAC's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     * @param {WordArray|string} key The secret key.\n	     *\n	     * @return {WordArray} The HMAC.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hmac = CryptoJS.HmacSHA256(message, key);\n	     */\n	    C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n	}(Math));\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var WordArray = C_lib.WordArray;\n	    var C_algo = C.algo;\n	    var SHA256 = C_algo.SHA256;\n\n	    /**\n	     * SHA-224 hash algorithm.\n	     */\n	    var SHA224 = C_algo.SHA224 = SHA256.extend({\n	        _doReset: function () {\n	            this._hash = new WordArray.init([\n	                0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n	                0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n	            ]);\n	        },\n\n	        _doFinalize: function () {\n	            var hash = SHA256._doFinalize.call(this);\n\n	            hash.sigBytes -= 4;\n\n	            return hash;\n	        }\n	    });\n\n	    /**\n	     * Shortcut function to the hasher's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     *\n	     * @return {WordArray} The hash.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hash = CryptoJS.SHA224('message');\n	     *     var hash = CryptoJS.SHA224(wordArray);\n	     */\n	    C.SHA224 = SHA256._createHelper(SHA224);\n\n	    /**\n	     * Shortcut function to the HMAC's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     * @param {WordArray|string} key The secret key.\n	     *\n	     * @return {WordArray} The HMAC.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hmac = CryptoJS.HmacSHA224(message, key);\n	     */\n	    C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n	}());\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var Hasher = C_lib.Hasher;\n	    var C_x64 = C.x64;\n	    var X64Word = C_x64.Word;\n	    var X64WordArray = C_x64.WordArray;\n	    var C_algo = C.algo;\n\n	    function X64Word_create() {\n	        return X64Word.create.apply(X64Word, arguments);\n	    }\n\n	    // Constants\n	    var K = [\n	        X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n	        X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n	        X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n	        X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n	        X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n	        X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n	        X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n	        X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n	        X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n	        X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n	        X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n	        X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n	        X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n	        X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n	        X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n	        X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n	        X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n	        X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n	        X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n	        X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n	        X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n	        X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n	        X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n	        X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n	        X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n	        X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n	        X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n	        X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n	        X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n	        X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n	        X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n	        X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n	        X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n	        X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n	        X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n	        X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n	        X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n	        X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n	        X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n	        X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n	    ];\n\n	    // Reusable objects\n	    var W = [];\n	    (function () {\n	        for (var i = 0; i < 80; i++) {\n	            W[i] = X64Word_create();\n	        }\n	    }());\n\n	    /**\n	     * SHA-512 hash algorithm.\n	     */\n	    var SHA512 = C_algo.SHA512 = Hasher.extend({\n	        _doReset: function () {\n	            this._hash = new X64WordArray.init([\n	                new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n	                new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n	                new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n	                new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n	            ]);\n	        },\n\n	        _doProcessBlock: function (M, offset) {\n	            // Shortcuts\n	            var H = this._hash.words;\n\n	            var H0 = H[0];\n	            var H1 = H[1];\n	            var H2 = H[2];\n	            var H3 = H[3];\n	            var H4 = H[4];\n	            var H5 = H[5];\n	            var H6 = H[6];\n	            var H7 = H[7];\n\n	            var H0h = H0.high;\n	            var H0l = H0.low;\n	            var H1h = H1.high;\n	            var H1l = H1.low;\n	            var H2h = H2.high;\n	            var H2l = H2.low;\n	            var H3h = H3.high;\n	            var H3l = H3.low;\n	            var H4h = H4.high;\n	            var H4l = H4.low;\n	            var H5h = H5.high;\n	            var H5l = H5.low;\n	            var H6h = H6.high;\n	            var H6l = H6.low;\n	            var H7h = H7.high;\n	            var H7l = H7.low;\n\n	            // Working variables\n	            var ah = H0h;\n	            var al = H0l;\n	            var bh = H1h;\n	            var bl = H1l;\n	            var ch = H2h;\n	            var cl = H2l;\n	            var dh = H3h;\n	            var dl = H3l;\n	            var eh = H4h;\n	            var el = H4l;\n	            var fh = H5h;\n	            var fl = H5l;\n	            var gh = H6h;\n	            var gl = H6l;\n	            var hh = H7h;\n	            var hl = H7l;\n\n	            // Rounds\n	            for (var i = 0; i < 80; i++) {\n	                var Wil;\n	                var Wih;\n\n	                // Shortcut\n	                var Wi = W[i];\n\n	                // Extend message\n	                if (i < 16) {\n	                    Wih = Wi.high = M[offset + i * 2]     | 0;\n	                    Wil = Wi.low  = M[offset + i * 2 + 1] | 0;\n	                } else {\n	                    // Gamma0\n	                    var gamma0x  = W[i - 15];\n	                    var gamma0xh = gamma0x.high;\n	                    var gamma0xl = gamma0x.low;\n	                    var gamma0h  = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n	                    var gamma0l  = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n	                    // Gamma1\n	                    var gamma1x  = W[i - 2];\n	                    var gamma1xh = gamma1x.high;\n	                    var gamma1xl = gamma1x.low;\n	                    var gamma1h  = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n	                    var gamma1l  = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n	                    // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n	                    var Wi7  = W[i - 7];\n	                    var Wi7h = Wi7.high;\n	                    var Wi7l = Wi7.low;\n\n	                    var Wi16  = W[i - 16];\n	                    var Wi16h = Wi16.high;\n	                    var Wi16l = Wi16.low;\n\n	                    Wil = gamma0l + Wi7l;\n	                    Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n	                    Wil = Wil + gamma1l;\n	                    Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n	                    Wil = Wil + Wi16l;\n	                    Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n	                    Wi.high = Wih;\n	                    Wi.low  = Wil;\n	                }\n\n	                var chh  = (eh & fh) ^ (~eh & gh);\n	                var chl  = (el & fl) ^ (~el & gl);\n	                var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n	                var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n	                var sigma0h = ((ah >>> 28) | (al << 4))  ^ ((ah << 30)  | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n	                var sigma0l = ((al >>> 28) | (ah << 4))  ^ ((al << 30)  | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n	                var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n	                var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n	                // t1 = h + sigma1 + ch + K[i] + W[i]\n	                var Ki  = K[i];\n	                var Kih = Ki.high;\n	                var Kil = Ki.low;\n\n	                var t1l = hl + sigma1l;\n	                var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n	                var t1l = t1l + chl;\n	                var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n	                var t1l = t1l + Kil;\n	                var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n	                var t1l = t1l + Wil;\n	                var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n	                // t2 = sigma0 + maj\n	                var t2l = sigma0l + majl;\n	                var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n	                // Update working variables\n	                hh = gh;\n	                hl = gl;\n	                gh = fh;\n	                gl = fl;\n	                fh = eh;\n	                fl = el;\n	                el = (dl + t1l) | 0;\n	                eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n	                dh = ch;\n	                dl = cl;\n	                ch = bh;\n	                cl = bl;\n	                bh = ah;\n	                bl = al;\n	                al = (t1l + t2l) | 0;\n	                ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n	            }\n\n	            // Intermediate hash value\n	            H0l = H0.low  = (H0l + al);\n	            H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n	            H1l = H1.low  = (H1l + bl);\n	            H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n	            H2l = H2.low  = (H2l + cl);\n	            H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n	            H3l = H3.low  = (H3l + dl);\n	            H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n	            H4l = H4.low  = (H4l + el);\n	            H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n	            H5l = H5.low  = (H5l + fl);\n	            H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n	            H6l = H6.low  = (H6l + gl);\n	            H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n	            H7l = H7.low  = (H7l + hl);\n	            H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n	        },\n\n	        _doFinalize: function () {\n	            // Shortcuts\n	            var data = this._data;\n	            var dataWords = data.words;\n\n	            var nBitsTotal = this._nDataBytes * 8;\n	            var nBitsLeft = data.sigBytes * 8;\n\n	            // Add padding\n	            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n	            dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n	            dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n	            data.sigBytes = dataWords.length * 4;\n\n	            // Hash final blocks\n	            this._process();\n\n	            // Convert hash to 32-bit word array before returning\n	            var hash = this._hash.toX32();\n\n	            // Return final computed hash\n	            return hash;\n	        },\n\n	        clone: function () {\n	            var clone = Hasher.clone.call(this);\n	            clone._hash = this._hash.clone();\n\n	            return clone;\n	        },\n\n	        blockSize: 1024/32\n	    });\n\n	    /**\n	     * Shortcut function to the hasher's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     *\n	     * @return {WordArray} The hash.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hash = CryptoJS.SHA512('message');\n	     *     var hash = CryptoJS.SHA512(wordArray);\n	     */\n	    C.SHA512 = Hasher._createHelper(SHA512);\n\n	    /**\n	     * Shortcut function to the HMAC's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     * @param {WordArray|string} key The secret key.\n	     *\n	     * @return {WordArray} The HMAC.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hmac = CryptoJS.HmacSHA512(message, key);\n	     */\n	    C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n	}());\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_x64 = C.x64;\n	    var X64Word = C_x64.Word;\n	    var X64WordArray = C_x64.WordArray;\n	    var C_algo = C.algo;\n	    var SHA512 = C_algo.SHA512;\n\n	    /**\n	     * SHA-384 hash algorithm.\n	     */\n	    var SHA384 = C_algo.SHA384 = SHA512.extend({\n	        _doReset: function () {\n	            this._hash = new X64WordArray.init([\n	                new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n	                new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n	                new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n	                new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n	            ]);\n	        },\n\n	        _doFinalize: function () {\n	            var hash = SHA512._doFinalize.call(this);\n\n	            hash.sigBytes -= 16;\n\n	            return hash;\n	        }\n	    });\n\n	    /**\n	     * Shortcut function to the hasher's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     *\n	     * @return {WordArray} The hash.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hash = CryptoJS.SHA384('message');\n	     *     var hash = CryptoJS.SHA384(wordArray);\n	     */\n	    C.SHA384 = SHA512._createHelper(SHA384);\n\n	    /**\n	     * Shortcut function to the HMAC's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     * @param {WordArray|string} key The secret key.\n	     *\n	     * @return {WordArray} The HMAC.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hmac = CryptoJS.HmacSHA384(message, key);\n	     */\n	    C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n	}());\n\n\n	(function (Math) {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var WordArray = C_lib.WordArray;\n	    var Hasher = C_lib.Hasher;\n	    var C_x64 = C.x64;\n	    var X64Word = C_x64.Word;\n	    var C_algo = C.algo;\n\n	    // Constants tables\n	    var RHO_OFFSETS = [];\n	    var PI_INDEXES  = [];\n	    var ROUND_CONSTANTS = [];\n\n	    // Compute Constants\n	    (function () {\n	        // Compute rho offset constants\n	        var x = 1, y = 0;\n	        for (var t = 0; t < 24; t++) {\n	            RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n	            var newX = y % 5;\n	            var newY = (2 * x + 3 * y) % 5;\n	            x = newX;\n	            y = newY;\n	        }\n\n	        // Compute pi index constants\n	        for (var x = 0; x < 5; x++) {\n	            for (var y = 0; y < 5; y++) {\n	                PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n	            }\n	        }\n\n	        // Compute round constants\n	        var LFSR = 0x01;\n	        for (var i = 0; i < 24; i++) {\n	            var roundConstantMsw = 0;\n	            var roundConstantLsw = 0;\n\n	            for (var j = 0; j < 7; j++) {\n	                if (LFSR & 0x01) {\n	                    var bitPosition = (1 << j) - 1;\n	                    if (bitPosition < 32) {\n	                        roundConstantLsw ^= 1 << bitPosition;\n	                    } else /* if (bitPosition >= 32) */ {\n	                        roundConstantMsw ^= 1 << (bitPosition - 32);\n	                    }\n	                }\n\n	                // Compute next LFSR\n	                if (LFSR & 0x80) {\n	                    // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n	                    LFSR = (LFSR << 1) ^ 0x71;\n	                } else {\n	                    LFSR <<= 1;\n	                }\n	            }\n\n	            ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n	        }\n	    }());\n\n	    // Reusable objects for temporary values\n	    var T = [];\n	    (function () {\n	        for (var i = 0; i < 25; i++) {\n	            T[i] = X64Word.create();\n	        }\n	    }());\n\n	    /**\n	     * SHA-3 hash algorithm.\n	     */\n	    var SHA3 = C_algo.SHA3 = Hasher.extend({\n	        /**\n	         * Configuration options.\n	         *\n	         * @property {number} outputLength\n	         *   The desired number of bits in the output hash.\n	         *   Only values permitted are: 224, 256, 384, 512.\n	         *   Default: 512\n	         */\n	        cfg: Hasher.cfg.extend({\n	            outputLength: 512\n	        }),\n\n	        _doReset: function () {\n	            var state = this._state = []\n	            for (var i = 0; i < 25; i++) {\n	                state[i] = new X64Word.init();\n	            }\n\n	            this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n	        },\n\n	        _doProcessBlock: function (M, offset) {\n	            // Shortcuts\n	            var state = this._state;\n	            var nBlockSizeLanes = this.blockSize / 2;\n\n	            // Absorb\n	            for (var i = 0; i < nBlockSizeLanes; i++) {\n	                // Shortcuts\n	                var M2i  = M[offset + 2 * i];\n	                var M2i1 = M[offset + 2 * i + 1];\n\n	                // Swap endian\n	                M2i = (\n	                    (((M2i << 8)  | (M2i >>> 24)) & 0x00ff00ff) |\n	                    (((M2i << 24) | (M2i >>> 8))  & 0xff00ff00)\n	                );\n	                M2i1 = (\n	                    (((M2i1 << 8)  | (M2i1 >>> 24)) & 0x00ff00ff) |\n	                    (((M2i1 << 24) | (M2i1 >>> 8))  & 0xff00ff00)\n	                );\n\n	                // Absorb message into state\n	                var lane = state[i];\n	                lane.high ^= M2i1;\n	                lane.low  ^= M2i;\n	            }\n\n	            // Rounds\n	            for (var round = 0; round < 24; round++) {\n	                // Theta\n	                for (var x = 0; x < 5; x++) {\n	                    // Mix column lanes\n	                    var tMsw = 0, tLsw = 0;\n	                    for (var y = 0; y < 5; y++) {\n	                        var lane = state[x + 5 * y];\n	                        tMsw ^= lane.high;\n	                        tLsw ^= lane.low;\n	                    }\n\n	                    // Temporary values\n	                    var Tx = T[x];\n	                    Tx.high = tMsw;\n	                    Tx.low  = tLsw;\n	                }\n	                for (var x = 0; x < 5; x++) {\n	                    // Shortcuts\n	                    var Tx4 = T[(x + 4) % 5];\n	                    var Tx1 = T[(x + 1) % 5];\n	                    var Tx1Msw = Tx1.high;\n	                    var Tx1Lsw = Tx1.low;\n\n	                    // Mix surrounding columns\n	                    var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n	                    var tLsw = Tx4.low  ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n	                    for (var y = 0; y < 5; y++) {\n	                        var lane = state[x + 5 * y];\n	                        lane.high ^= tMsw;\n	                        lane.low  ^= tLsw;\n	                    }\n	                }\n\n	                // Rho Pi\n	                for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n	                    var tMsw;\n	                    var tLsw;\n\n	                    // Shortcuts\n	                    var lane = state[laneIndex];\n	                    var laneMsw = lane.high;\n	                    var laneLsw = lane.low;\n	                    var rhoOffset = RHO_OFFSETS[laneIndex];\n\n	                    // Rotate lanes\n	                    if (rhoOffset < 32) {\n	                        tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n	                        tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n	                    } else /* if (rhoOffset >= 32) */ {\n	                        tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n	                        tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n	                    }\n\n	                    // Transpose lanes\n	                    var TPiLane = T[PI_INDEXES[laneIndex]];\n	                    TPiLane.high = tMsw;\n	                    TPiLane.low  = tLsw;\n	                }\n\n	                // Rho pi at x = y = 0\n	                var T0 = T[0];\n	                var state0 = state[0];\n	                T0.high = state0.high;\n	                T0.low  = state0.low;\n\n	                // Chi\n	                for (var x = 0; x < 5; x++) {\n	                    for (var y = 0; y < 5; y++) {\n	                        // Shortcuts\n	                        var laneIndex = x + 5 * y;\n	                        var lane = state[laneIndex];\n	                        var TLane = T[laneIndex];\n	                        var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n	                        var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n	                        // Mix rows\n	                        lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n	                        lane.low  = TLane.low  ^ (~Tx1Lane.low  & Tx2Lane.low);\n	                    }\n	                }\n\n	                // Iota\n	                var lane = state[0];\n	                var roundConstant = ROUND_CONSTANTS[round];\n	                lane.high ^= roundConstant.high;\n	                lane.low  ^= roundConstant.low;\n	            }\n	        },\n\n	        _doFinalize: function () {\n	            // Shortcuts\n	            var data = this._data;\n	            var dataWords = data.words;\n	            var nBitsTotal = this._nDataBytes * 8;\n	            var nBitsLeft = data.sigBytes * 8;\n	            var blockSizeBits = this.blockSize * 32;\n\n	            // Add padding\n	            dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n	            dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n	            data.sigBytes = dataWords.length * 4;\n\n	            // Hash final blocks\n	            this._process();\n\n	            // Shortcuts\n	            var state = this._state;\n	            var outputLengthBytes = this.cfg.outputLength / 8;\n	            var outputLengthLanes = outputLengthBytes / 8;\n\n	            // Squeeze\n	            var hashWords = [];\n	            for (var i = 0; i < outputLengthLanes; i++) {\n	                // Shortcuts\n	                var lane = state[i];\n	                var laneMsw = lane.high;\n	                var laneLsw = lane.low;\n\n	                // Swap endian\n	                laneMsw = (\n	                    (((laneMsw << 8)  | (laneMsw >>> 24)) & 0x00ff00ff) |\n	                    (((laneMsw << 24) | (laneMsw >>> 8))  & 0xff00ff00)\n	                );\n	                laneLsw = (\n	                    (((laneLsw << 8)  | (laneLsw >>> 24)) & 0x00ff00ff) |\n	                    (((laneLsw << 24) | (laneLsw >>> 8))  & 0xff00ff00)\n	                );\n\n	                // Squeeze state to retrieve hash\n	                hashWords.push(laneLsw);\n	                hashWords.push(laneMsw);\n	            }\n\n	            // Return final computed hash\n	            return new WordArray.init(hashWords, outputLengthBytes);\n	        },\n\n	        clone: function () {\n	            var clone = Hasher.clone.call(this);\n\n	            var state = clone._state = this._state.slice(0);\n	            for (var i = 0; i < 25; i++) {\n	                state[i] = state[i].clone();\n	            }\n\n	            return clone;\n	        }\n	    });\n\n	    /**\n	     * Shortcut function to the hasher's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     *\n	     * @return {WordArray} The hash.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hash = CryptoJS.SHA3('message');\n	     *     var hash = CryptoJS.SHA3(wordArray);\n	     */\n	    C.SHA3 = Hasher._createHelper(SHA3);\n\n	    /**\n	     * Shortcut function to the HMAC's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     * @param {WordArray|string} key The secret key.\n	     *\n	     * @return {WordArray} The HMAC.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hmac = CryptoJS.HmacSHA3(message, key);\n	     */\n	    C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n	}(Math));\n\n\n	/** @preserve\n	(c) 2012 by Cédric Mesnil. All rights reserved.\n\n	Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n	    - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n	    - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n	*/\n\n	(function (Math) {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var WordArray = C_lib.WordArray;\n	    var Hasher = C_lib.Hasher;\n	    var C_algo = C.algo;\n\n	    // Constants table\n	    var _zl = WordArray.create([\n	        0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n	        7,  4, 13,  1, 10,  6, 15,  3, 12,  0,  9,  5,  2, 14, 11,  8,\n	        3, 10, 14,  4,  9, 15,  8,  1,  2,  7,  0,  6, 13, 11,  5, 12,\n	        1,  9, 11, 10,  0,  8, 12,  4, 13,  3,  7, 15, 14,  5,  6,  2,\n	        4,  0,  5,  9,  7, 12,  2, 10, 14,  1,  3,  8, 11,  6, 15, 13]);\n	    var _zr = WordArray.create([\n	        5, 14,  7,  0,  9,  2, 11,  4, 13,  6, 15,  8,  1, 10,  3, 12,\n	        6, 11,  3,  7,  0, 13,  5, 10, 14, 15,  8, 12,  4,  9,  1,  2,\n	        15,  5,  1,  3,  7, 14,  6,  9, 11,  8, 12,  2, 10,  0,  4, 13,\n	        8,  6,  4,  1,  3, 11, 15,  0,  5, 12,  2, 13,  9,  7, 10, 14,\n	        12, 15, 10,  4,  1,  5,  8,  7,  6,  2, 13, 14,  0,  3,  9, 11]);\n	    var _sl = WordArray.create([\n	         11, 14, 15, 12,  5,  8,  7,  9, 11, 13, 14, 15,  6,  7,  9,  8,\n	        7, 6,   8, 13, 11,  9,  7, 15,  7, 12, 15,  9, 11,  7, 13, 12,\n	        11, 13,  6,  7, 14,  9, 13, 15, 14,  8, 13,  6,  5, 12,  7,  5,\n	          11, 12, 14, 15, 14, 15,  9,  8,  9, 14,  5,  6,  8,  6,  5, 12,\n	        9, 15,  5, 11,  6,  8, 13, 12,  5, 12, 13, 14, 11,  8,  5,  6 ]);\n	    var _sr = WordArray.create([\n	        8,  9,  9, 11, 13, 15, 15,  5,  7,  7,  8, 11, 14, 14, 12,  6,\n	        9, 13, 15,  7, 12,  8,  9, 11,  7,  7, 12,  7,  6, 15, 13, 11,\n	        9,  7, 15, 11,  8,  6,  6, 14, 12, 13,  5, 14, 13, 13,  7,  5,\n	        15,  5,  8, 11, 14, 14,  6, 14,  6,  9, 12,  9, 12,  5, 15,  8,\n	        8,  5, 12,  9, 12,  5, 14,  6,  8, 13,  6,  5, 15, 13, 11, 11 ]);\n\n	    var _hl =  WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n	    var _hr =  WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n	    /**\n	     * RIPEMD160 hash algorithm.\n	     */\n	    var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n	        _doReset: function () {\n	            this._hash  = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n	        },\n\n	        _doProcessBlock: function (M, offset) {\n\n	            // Swap endian\n	            for (var i = 0; i < 16; i++) {\n	                // Shortcuts\n	                var offset_i = offset + i;\n	                var M_offset_i = M[offset_i];\n\n	                // Swap\n	                M[offset_i] = (\n	                    (((M_offset_i << 8)  | (M_offset_i >>> 24)) & 0x00ff00ff) |\n	                    (((M_offset_i << 24) | (M_offset_i >>> 8))  & 0xff00ff00)\n	                );\n	            }\n	            // Shortcut\n	            var H  = this._hash.words;\n	            var hl = _hl.words;\n	            var hr = _hr.words;\n	            var zl = _zl.words;\n	            var zr = _zr.words;\n	            var sl = _sl.words;\n	            var sr = _sr.words;\n\n	            // Working variables\n	            var al, bl, cl, dl, el;\n	            var ar, br, cr, dr, er;\n\n	            ar = al = H[0];\n	            br = bl = H[1];\n	            cr = cl = H[2];\n	            dr = dl = H[3];\n	            er = el = H[4];\n	            // Computation\n	            var t;\n	            for (var i = 0; i < 80; i += 1) {\n	                t = (al +  M[offset+zl[i]])|0;\n	                if (i<16){\n		            t +=  f1(bl,cl,dl) + hl[0];\n	                } else if (i<32) {\n		            t +=  f2(bl,cl,dl) + hl[1];\n	                } else if (i<48) {\n		            t +=  f3(bl,cl,dl) + hl[2];\n	                } else if (i<64) {\n		            t +=  f4(bl,cl,dl) + hl[3];\n	                } else {// if (i<80) {\n		            t +=  f5(bl,cl,dl) + hl[4];\n	                }\n	                t = t|0;\n	                t =  rotl(t,sl[i]);\n	                t = (t+el)|0;\n	                al = el;\n	                el = dl;\n	                dl = rotl(cl, 10);\n	                cl = bl;\n	                bl = t;\n\n	                t = (ar + M[offset+zr[i]])|0;\n	                if (i<16){\n		            t +=  f5(br,cr,dr) + hr[0];\n	                } else if (i<32) {\n		            t +=  f4(br,cr,dr) + hr[1];\n	                } else if (i<48) {\n		            t +=  f3(br,cr,dr) + hr[2];\n	                } else if (i<64) {\n		            t +=  f2(br,cr,dr) + hr[3];\n	                } else {// if (i<80) {\n		            t +=  f1(br,cr,dr) + hr[4];\n	                }\n	                t = t|0;\n	                t =  rotl(t,sr[i]) ;\n	                t = (t+er)|0;\n	                ar = er;\n	                er = dr;\n	                dr = rotl(cr, 10);\n	                cr = br;\n	                br = t;\n	            }\n	            // Intermediate hash value\n	            t    = (H[1] + cl + dr)|0;\n	            H[1] = (H[2] + dl + er)|0;\n	            H[2] = (H[3] + el + ar)|0;\n	            H[3] = (H[4] + al + br)|0;\n	            H[4] = (H[0] + bl + cr)|0;\n	            H[0] =  t;\n	        },\n\n	        _doFinalize: function () {\n	            // Shortcuts\n	            var data = this._data;\n	            var dataWords = data.words;\n\n	            var nBitsTotal = this._nDataBytes * 8;\n	            var nBitsLeft = data.sigBytes * 8;\n\n	            // Add padding\n	            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n	            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n	                (((nBitsTotal << 8)  | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n	                (((nBitsTotal << 24) | (nBitsTotal >>> 8))  & 0xff00ff00)\n	            );\n	            data.sigBytes = (dataWords.length + 1) * 4;\n\n	            // Hash final blocks\n	            this._process();\n\n	            // Shortcuts\n	            var hash = this._hash;\n	            var H = hash.words;\n\n	            // Swap endian\n	            for (var i = 0; i < 5; i++) {\n	                // Shortcut\n	                var H_i = H[i];\n\n	                // Swap\n	                H[i] = (((H_i << 8)  | (H_i >>> 24)) & 0x00ff00ff) |\n	                       (((H_i << 24) | (H_i >>> 8))  & 0xff00ff00);\n	            }\n\n	            // Return final computed hash\n	            return hash;\n	        },\n\n	        clone: function () {\n	            var clone = Hasher.clone.call(this);\n	            clone._hash = this._hash.clone();\n\n	            return clone;\n	        }\n	    });\n\n\n	    function f1(x, y, z) {\n	        return ((x) ^ (y) ^ (z));\n\n	    }\n\n	    function f2(x, y, z) {\n	        return (((x)&(y)) | ((~x)&(z)));\n	    }\n\n	    function f3(x, y, z) {\n	        return (((x) | (~(y))) ^ (z));\n	    }\n\n	    function f4(x, y, z) {\n	        return (((x) & (z)) | ((y)&(~(z))));\n	    }\n\n	    function f5(x, y, z) {\n	        return ((x) ^ ((y) |(~(z))));\n\n	    }\n\n	    function rotl(x,n) {\n	        return (x<<n) | (x>>>(32-n));\n	    }\n\n\n	    /**\n	     * Shortcut function to the hasher's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     *\n	     * @return {WordArray} The hash.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hash = CryptoJS.RIPEMD160('message');\n	     *     var hash = CryptoJS.RIPEMD160(wordArray);\n	     */\n	    C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n	    /**\n	     * Shortcut function to the HMAC's object interface.\n	     *\n	     * @param {WordArray|string} message The message to hash.\n	     * @param {WordArray|string} key The secret key.\n	     *\n	     * @return {WordArray} The HMAC.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var hmac = CryptoJS.HmacRIPEMD160(message, key);\n	     */\n	    C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n	}(Math));\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var Base = C_lib.Base;\n	    var C_enc = C.enc;\n	    var Utf8 = C_enc.Utf8;\n	    var C_algo = C.algo;\n\n	    /**\n	     * HMAC algorithm.\n	     */\n	    var HMAC = C_algo.HMAC = Base.extend({\n	        /**\n	         * Initializes a newly created HMAC.\n	         *\n	         * @param {Hasher} hasher The hash algorithm to use.\n	         * @param {WordArray|string} key The secret key.\n	         *\n	         * @example\n	         *\n	         *     var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n	         */\n	        init: function (hasher, key) {\n	            // Init hasher\n	            hasher = this._hasher = new hasher.init();\n\n	            // Convert string to WordArray, else assume WordArray already\n	            if (typeof key == 'string') {\n	                key = Utf8.parse(key);\n	            }\n\n	            // Shortcuts\n	            var hasherBlockSize = hasher.blockSize;\n	            var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n	            // Allow arbitrary length keys\n	            if (key.sigBytes > hasherBlockSizeBytes) {\n	                key = hasher.finalize(key);\n	            }\n\n	            // Clamp excess bits\n	            key.clamp();\n\n	            // Clone key for inner and outer pads\n	            var oKey = this._oKey = key.clone();\n	            var iKey = this._iKey = key.clone();\n\n	            // Shortcuts\n	            var oKeyWords = oKey.words;\n	            var iKeyWords = iKey.words;\n\n	            // XOR keys with pad constants\n	            for (var i = 0; i < hasherBlockSize; i++) {\n	                oKeyWords[i] ^= 0x5c5c5c5c;\n	                iKeyWords[i] ^= 0x36363636;\n	            }\n	            oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n	            // Set initial values\n	            this.reset();\n	        },\n\n	        /**\n	         * Resets this HMAC to its initial state.\n	         *\n	         * @example\n	         *\n	         *     hmacHasher.reset();\n	         */\n	        reset: function () {\n	            // Shortcut\n	            var hasher = this._hasher;\n\n	            // Reset\n	            hasher.reset();\n	            hasher.update(this._iKey);\n	        },\n\n	        /**\n	         * Updates this HMAC with a message.\n	         *\n	         * @param {WordArray|string} messageUpdate The message to append.\n	         *\n	         * @return {HMAC} This HMAC instance.\n	         *\n	         * @example\n	         *\n	         *     hmacHasher.update('message');\n	         *     hmacHasher.update(wordArray);\n	         */\n	        update: function (messageUpdate) {\n	            this._hasher.update(messageUpdate);\n\n	            // Chainable\n	            return this;\n	        },\n\n	        /**\n	         * Finalizes the HMAC computation.\n	         * Note that the finalize operation is effectively a destructive, read-once operation.\n	         *\n	         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n	         *\n	         * @return {WordArray} The HMAC.\n	         *\n	         * @example\n	         *\n	         *     var hmac = hmacHasher.finalize();\n	         *     var hmac = hmacHasher.finalize('message');\n	         *     var hmac = hmacHasher.finalize(wordArray);\n	         */\n	        finalize: function (messageUpdate) {\n	            // Shortcut\n	            var hasher = this._hasher;\n\n	            // Compute HMAC\n	            var innerHash = hasher.finalize(messageUpdate);\n	            hasher.reset();\n	            var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n	            return hmac;\n	        }\n	    });\n	}());\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var Base = C_lib.Base;\n	    var WordArray = C_lib.WordArray;\n	    var C_algo = C.algo;\n	    var SHA256 = C_algo.SHA256;\n	    var HMAC = C_algo.HMAC;\n\n	    /**\n	     * Password-Based Key Derivation Function 2 algorithm.\n	     */\n	    var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n	        /**\n	         * Configuration options.\n	         *\n	         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n	         * @property {Hasher} hasher The hasher to use. Default: SHA256\n	         * @property {number} iterations The number of iterations to perform. Default: 250000\n	         */\n	        cfg: Base.extend({\n	            keySize: 128/32,\n	            hasher: SHA256,\n	            iterations: 250000\n	        }),\n\n	        /**\n	         * Initializes a newly created key derivation function.\n	         *\n	         * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n	         *\n	         * @example\n	         *\n	         *     var kdf = CryptoJS.algo.PBKDF2.create();\n	         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n	         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n	         */\n	        init: function (cfg) {\n	            this.cfg = this.cfg.extend(cfg);\n	        },\n\n	        /**\n	         * Computes the Password-Based Key Derivation Function 2.\n	         *\n	         * @param {WordArray|string} password The password.\n	         * @param {WordArray|string} salt A salt.\n	         *\n	         * @return {WordArray} The derived key.\n	         *\n	         * @example\n	         *\n	         *     var key = kdf.compute(password, salt);\n	         */\n	        compute: function (password, salt) {\n	            // Shortcut\n	            var cfg = this.cfg;\n\n	            // Init HMAC\n	            var hmac = HMAC.create(cfg.hasher, password);\n\n	            // Initial values\n	            var derivedKey = WordArray.create();\n	            var blockIndex = WordArray.create([0x00000001]);\n\n	            // Shortcuts\n	            var derivedKeyWords = derivedKey.words;\n	            var blockIndexWords = blockIndex.words;\n	            var keySize = cfg.keySize;\n	            var iterations = cfg.iterations;\n\n	            // Generate key\n	            while (derivedKeyWords.length < keySize) {\n	                var block = hmac.update(salt).finalize(blockIndex);\n	                hmac.reset();\n\n	                // Shortcuts\n	                var blockWords = block.words;\n	                var blockWordsLength = blockWords.length;\n\n	                // Iterations\n	                var intermediate = block;\n	                for (var i = 1; i < iterations; i++) {\n	                    intermediate = hmac.finalize(intermediate);\n	                    hmac.reset();\n\n	                    // Shortcut\n	                    var intermediateWords = intermediate.words;\n\n	                    // XOR intermediate with block\n	                    for (var j = 0; j < blockWordsLength; j++) {\n	                        blockWords[j] ^= intermediateWords[j];\n	                    }\n	                }\n\n	                derivedKey.concat(block);\n	                blockIndexWords[0]++;\n	            }\n	            derivedKey.sigBytes = keySize * 4;\n\n	            return derivedKey;\n	        }\n	    });\n\n	    /**\n	     * Computes the Password-Based Key Derivation Function 2.\n	     *\n	     * @param {WordArray|string} password The password.\n	     * @param {WordArray|string} salt A salt.\n	     * @param {Object} cfg (Optional) The configuration options to use for this computation.\n	     *\n	     * @return {WordArray} The derived key.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var key = CryptoJS.PBKDF2(password, salt);\n	     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n	     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n	     */\n	    C.PBKDF2 = function (password, salt, cfg) {\n	        return PBKDF2.create(cfg).compute(password, salt);\n	    };\n	}());\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var Base = C_lib.Base;\n	    var WordArray = C_lib.WordArray;\n	    var C_algo = C.algo;\n	    var MD5 = C_algo.MD5;\n\n	    /**\n	     * This key derivation function is meant to conform with EVP_BytesToKey.\n	     * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n	     */\n	    var EvpKDF = C_algo.EvpKDF = Base.extend({\n	        /**\n	         * Configuration options.\n	         *\n	         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n	         * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n	         * @property {number} iterations The number of iterations to perform. Default: 1\n	         */\n	        cfg: Base.extend({\n	            keySize: 128/32,\n	            hasher: MD5,\n	            iterations: 1\n	        }),\n\n	        /**\n	         * Initializes a newly created key derivation function.\n	         *\n	         * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n	         *\n	         * @example\n	         *\n	         *     var kdf = CryptoJS.algo.EvpKDF.create();\n	         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n	         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n	         */\n	        init: function (cfg) {\n	            this.cfg = this.cfg.extend(cfg);\n	        },\n\n	        /**\n	         * Derives a key from a password.\n	         *\n	         * @param {WordArray|string} password The password.\n	         * @param {WordArray|string} salt A salt.\n	         *\n	         * @return {WordArray} The derived key.\n	         *\n	         * @example\n	         *\n	         *     var key = kdf.compute(password, salt);\n	         */\n	        compute: function (password, salt) {\n	            var block;\n\n	            // Shortcut\n	            var cfg = this.cfg;\n\n	            // Init hasher\n	            var hasher = cfg.hasher.create();\n\n	            // Initial values\n	            var derivedKey = WordArray.create();\n\n	            // Shortcuts\n	            var derivedKeyWords = derivedKey.words;\n	            var keySize = cfg.keySize;\n	            var iterations = cfg.iterations;\n\n	            // Generate key\n	            while (derivedKeyWords.length < keySize) {\n	                if (block) {\n	                    hasher.update(block);\n	                }\n	                block = hasher.update(password).finalize(salt);\n	                hasher.reset();\n\n	                // Iterations\n	                for (var i = 1; i < iterations; i++) {\n	                    block = hasher.finalize(block);\n	                    hasher.reset();\n	                }\n\n	                derivedKey.concat(block);\n	            }\n	            derivedKey.sigBytes = keySize * 4;\n\n	            return derivedKey;\n	        }\n	    });\n\n	    /**\n	     * Derives a key from a password.\n	     *\n	     * @param {WordArray|string} password The password.\n	     * @param {WordArray|string} salt A salt.\n	     * @param {Object} cfg (Optional) The configuration options to use for this computation.\n	     *\n	     * @return {WordArray} The derived key.\n	     *\n	     * @static\n	     *\n	     * @example\n	     *\n	     *     var key = CryptoJS.EvpKDF(password, salt);\n	     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n	     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n	     */\n	    C.EvpKDF = function (password, salt, cfg) {\n	        return EvpKDF.create(cfg).compute(password, salt);\n	    };\n	}());\n\n\n	/**\n	 * Cipher core components.\n	 */\n	CryptoJS.lib.Cipher || (function (undefined) {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var Base = C_lib.Base;\n	    var WordArray = C_lib.WordArray;\n	    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n	    var C_enc = C.enc;\n	    var Utf8 = C_enc.Utf8;\n	    var Base64 = C_enc.Base64;\n	    var C_algo = C.algo;\n	    var EvpKDF = C_algo.EvpKDF;\n\n	    /**\n	     * Abstract base cipher template.\n	     *\n	     * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n	     * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n	     * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n	     * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n	     */\n	    var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n	        /**\n	         * Configuration options.\n	         *\n	         * @property {WordArray} iv The IV to use for this operation.\n	         */\n	        cfg: Base.extend(),\n\n	        /**\n	         * Creates this cipher in encryption mode.\n	         *\n	         * @param {WordArray} key The key.\n	         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n	         *\n	         * @return {Cipher} A cipher instance.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n	         */\n	        createEncryptor: function (key, cfg) {\n	            return this.create(this._ENC_XFORM_MODE, key, cfg);\n	        },\n\n	        /**\n	         * Creates this cipher in decryption mode.\n	         *\n	         * @param {WordArray} key The key.\n	         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n	         *\n	         * @return {Cipher} A cipher instance.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n	         */\n	        createDecryptor: function (key, cfg) {\n	            return this.create(this._DEC_XFORM_MODE, key, cfg);\n	        },\n\n	        /**\n	         * Initializes a newly created cipher.\n	         *\n	         * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n	         * @param {WordArray} key The key.\n	         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n	         *\n	         * @example\n	         *\n	         *     var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n	         */\n	        init: function (xformMode, key, cfg) {\n	            // Apply config defaults\n	            this.cfg = this.cfg.extend(cfg);\n\n	            // Store transform mode and key\n	            this._xformMode = xformMode;\n	            this._key = key;\n\n	            // Set initial values\n	            this.reset();\n	        },\n\n	        /**\n	         * Resets this cipher to its initial state.\n	         *\n	         * @example\n	         *\n	         *     cipher.reset();\n	         */\n	        reset: function () {\n	            // Reset data buffer\n	            BufferedBlockAlgorithm.reset.call(this);\n\n	            // Perform concrete-cipher logic\n	            this._doReset();\n	        },\n\n	        /**\n	         * Adds data to be encrypted or decrypted.\n	         *\n	         * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n	         *\n	         * @return {WordArray} The data after processing.\n	         *\n	         * @example\n	         *\n	         *     var encrypted = cipher.process('data');\n	         *     var encrypted = cipher.process(wordArray);\n	         */\n	        process: function (dataUpdate) {\n	            // Append\n	            this._append(dataUpdate);\n\n	            // Process available blocks\n	            return this._process();\n	        },\n\n	        /**\n	         * Finalizes the encryption or decryption process.\n	         * Note that the finalize operation is effectively a destructive, read-once operation.\n	         *\n	         * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n	         *\n	         * @return {WordArray} The data after final processing.\n	         *\n	         * @example\n	         *\n	         *     var encrypted = cipher.finalize();\n	         *     var encrypted = cipher.finalize('data');\n	         *     var encrypted = cipher.finalize(wordArray);\n	         */\n	        finalize: function (dataUpdate) {\n	            // Final data update\n	            if (dataUpdate) {\n	                this._append(dataUpdate);\n	            }\n\n	            // Perform concrete-cipher logic\n	            var finalProcessedData = this._doFinalize();\n\n	            return finalProcessedData;\n	        },\n\n	        keySize: 128/32,\n\n	        ivSize: 128/32,\n\n	        _ENC_XFORM_MODE: 1,\n\n	        _DEC_XFORM_MODE: 2,\n\n	        /**\n	         * Creates shortcut functions to a cipher's object interface.\n	         *\n	         * @param {Cipher} cipher The cipher to create a helper for.\n	         *\n	         * @return {Object} An object with encrypt and decrypt shortcut functions.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n	         */\n	        _createHelper: (function () {\n	            function selectCipherStrategy(key) {\n	                if (typeof key == 'string') {\n	                    return PasswordBasedCipher;\n	                } else {\n	                    return SerializableCipher;\n	                }\n	            }\n\n	            return function (cipher) {\n	                return {\n	                    encrypt: function (message, key, cfg) {\n	                        return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n	                    },\n\n	                    decrypt: function (ciphertext, key, cfg) {\n	                        return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n	                    }\n	                };\n	            };\n	        }())\n	    });\n\n	    /**\n	     * Abstract base stream cipher template.\n	     *\n	     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n	     */\n	    var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n	        _doFinalize: function () {\n	            // Process partial blocks\n	            var finalProcessedBlocks = this._process(!!'flush');\n\n	            return finalProcessedBlocks;\n	        },\n\n	        blockSize: 1\n	    });\n\n	    /**\n	     * Mode namespace.\n	     */\n	    var C_mode = C.mode = {};\n\n	    /**\n	     * Abstract base block cipher mode template.\n	     */\n	    var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n	        /**\n	         * Creates this mode for encryption.\n	         *\n	         * @param {Cipher} cipher A block cipher instance.\n	         * @param {Array} iv The IV words.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n	         */\n	        createEncryptor: function (cipher, iv) {\n	            return this.Encryptor.create(cipher, iv);\n	        },\n\n	        /**\n	         * Creates this mode for decryption.\n	         *\n	         * @param {Cipher} cipher A block cipher instance.\n	         * @param {Array} iv The IV words.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n	         */\n	        createDecryptor: function (cipher, iv) {\n	            return this.Decryptor.create(cipher, iv);\n	        },\n\n	        /**\n	         * Initializes a newly created mode.\n	         *\n	         * @param {Cipher} cipher A block cipher instance.\n	         * @param {Array} iv The IV words.\n	         *\n	         * @example\n	         *\n	         *     var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n	         */\n	        init: function (cipher, iv) {\n	            this._cipher = cipher;\n	            this._iv = iv;\n	        }\n	    });\n\n	    /**\n	     * Cipher Block Chaining mode.\n	     */\n	    var CBC = C_mode.CBC = (function () {\n	        /**\n	         * Abstract base CBC mode.\n	         */\n	        var CBC = BlockCipherMode.extend();\n\n	        /**\n	         * CBC encryptor.\n	         */\n	        CBC.Encryptor = CBC.extend({\n	            /**\n	             * Processes the data block at offset.\n	             *\n	             * @param {Array} words The data words to operate on.\n	             * @param {number} offset The offset where the block starts.\n	             *\n	             * @example\n	             *\n	             *     mode.processBlock(data.words, offset);\n	             */\n	            processBlock: function (words, offset) {\n	                // Shortcuts\n	                var cipher = this._cipher;\n	                var blockSize = cipher.blockSize;\n\n	                // XOR and encrypt\n	                xorBlock.call(this, words, offset, blockSize);\n	                cipher.encryptBlock(words, offset);\n\n	                // Remember this block to use with next block\n	                this._prevBlock = words.slice(offset, offset + blockSize);\n	            }\n	        });\n\n	        /**\n	         * CBC decryptor.\n	         */\n	        CBC.Decryptor = CBC.extend({\n	            /**\n	             * Processes the data block at offset.\n	             *\n	             * @param {Array} words The data words to operate on.\n	             * @param {number} offset The offset where the block starts.\n	             *\n	             * @example\n	             *\n	             *     mode.processBlock(data.words, offset);\n	             */\n	            processBlock: function (words, offset) {\n	                // Shortcuts\n	                var cipher = this._cipher;\n	                var blockSize = cipher.blockSize;\n\n	                // Remember this block to use with next block\n	                var thisBlock = words.slice(offset, offset + blockSize);\n\n	                // Decrypt and XOR\n	                cipher.decryptBlock(words, offset);\n	                xorBlock.call(this, words, offset, blockSize);\n\n	                // This block becomes the previous block\n	                this._prevBlock = thisBlock;\n	            }\n	        });\n\n	        function xorBlock(words, offset, blockSize) {\n	            var block;\n\n	            // Shortcut\n	            var iv = this._iv;\n\n	            // Choose mixing block\n	            if (iv) {\n	                block = iv;\n\n	                // Remove IV for subsequent blocks\n	                this._iv = undefined;\n	            } else {\n	                block = this._prevBlock;\n	            }\n\n	            // XOR blocks\n	            for (var i = 0; i < blockSize; i++) {\n	                words[offset + i] ^= block[i];\n	            }\n	        }\n\n	        return CBC;\n	    }());\n\n	    /**\n	     * Padding namespace.\n	     */\n	    var C_pad = C.pad = {};\n\n	    /**\n	     * PKCS #5/7 padding strategy.\n	     */\n	    var Pkcs7 = C_pad.Pkcs7 = {\n	        /**\n	         * Pads data using the algorithm defined in PKCS #5/7.\n	         *\n	         * @param {WordArray} data The data to pad.\n	         * @param {number} blockSize The multiple that the data should be padded to.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n	         */\n	        pad: function (data, blockSize) {\n	            // Shortcut\n	            var blockSizeBytes = blockSize * 4;\n\n	            // Count padding bytes\n	            var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n	            // Create padding word\n	            var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n	            // Create padding\n	            var paddingWords = [];\n	            for (var i = 0; i < nPaddingBytes; i += 4) {\n	                paddingWords.push(paddingWord);\n	            }\n	            var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n	            // Add padding\n	            data.concat(padding);\n	        },\n\n	        /**\n	         * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n	         *\n	         * @param {WordArray} data The data to unpad.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     CryptoJS.pad.Pkcs7.unpad(wordArray);\n	         */\n	        unpad: function (data) {\n	            // Get number of padding bytes from last byte\n	            var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n	            // Remove padding\n	            data.sigBytes -= nPaddingBytes;\n	        }\n	    };\n\n	    /**\n	     * Abstract base block cipher template.\n	     *\n	     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n	     */\n	    var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n	        /**\n	         * Configuration options.\n	         *\n	         * @property {Mode} mode The block mode to use. Default: CBC\n	         * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n	         */\n	        cfg: Cipher.cfg.extend({\n	            mode: CBC,\n	            padding: Pkcs7\n	        }),\n\n	        reset: function () {\n	            var modeCreator;\n\n	            // Reset cipher\n	            Cipher.reset.call(this);\n\n	            // Shortcuts\n	            var cfg = this.cfg;\n	            var iv = cfg.iv;\n	            var mode = cfg.mode;\n\n	            // Reset block mode\n	            if (this._xformMode == this._ENC_XFORM_MODE) {\n	                modeCreator = mode.createEncryptor;\n	            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n	                modeCreator = mode.createDecryptor;\n	                // Keep at least one block in the buffer for unpadding\n	                this._minBufferSize = 1;\n	            }\n\n	            if (this._mode && this._mode.__creator == modeCreator) {\n	                this._mode.init(this, iv && iv.words);\n	            } else {\n	                this._mode = modeCreator.call(mode, this, iv && iv.words);\n	                this._mode.__creator = modeCreator;\n	            }\n	        },\n\n	        _doProcessBlock: function (words, offset) {\n	            this._mode.processBlock(words, offset);\n	        },\n\n	        _doFinalize: function () {\n	            var finalProcessedBlocks;\n\n	            // Shortcut\n	            var padding = this.cfg.padding;\n\n	            // Finalize\n	            if (this._xformMode == this._ENC_XFORM_MODE) {\n	                // Pad data\n	                padding.pad(this._data, this.blockSize);\n\n	                // Process final blocks\n	                finalProcessedBlocks = this._process(!!'flush');\n	            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n	                // Process final blocks\n	                finalProcessedBlocks = this._process(!!'flush');\n\n	                // Unpad data\n	                padding.unpad(finalProcessedBlocks);\n	            }\n\n	            return finalProcessedBlocks;\n	        },\n\n	        blockSize: 128/32\n	    });\n\n	    /**\n	     * A collection of cipher parameters.\n	     *\n	     * @property {WordArray} ciphertext The raw ciphertext.\n	     * @property {WordArray} key The key to this ciphertext.\n	     * @property {WordArray} iv The IV used in the ciphering operation.\n	     * @property {WordArray} salt The salt used with a key derivation function.\n	     * @property {Cipher} algorithm The cipher algorithm.\n	     * @property {Mode} mode The block mode used in the ciphering operation.\n	     * @property {Padding} padding The padding scheme used in the ciphering operation.\n	     * @property {number} blockSize The block size of the cipher.\n	     * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n	     */\n	    var CipherParams = C_lib.CipherParams = Base.extend({\n	        /**\n	         * Initializes a newly created cipher params object.\n	         *\n	         * @param {Object} cipherParams An object with any of the possible cipher parameters.\n	         *\n	         * @example\n	         *\n	         *     var cipherParams = CryptoJS.lib.CipherParams.create({\n	         *         ciphertext: ciphertextWordArray,\n	         *         key: keyWordArray,\n	         *         iv: ivWordArray,\n	         *         salt: saltWordArray,\n	         *         algorithm: CryptoJS.algo.AES,\n	         *         mode: CryptoJS.mode.CBC,\n	         *         padding: CryptoJS.pad.PKCS7,\n	         *         blockSize: 4,\n	         *         formatter: CryptoJS.format.OpenSSL\n	         *     });\n	         */\n	        init: function (cipherParams) {\n	            this.mixIn(cipherParams);\n	        },\n\n	        /**\n	         * Converts this cipher params object to a string.\n	         *\n	         * @param {Format} formatter (Optional) The formatting strategy to use.\n	         *\n	         * @return {string} The stringified cipher params.\n	         *\n	         * @throws Error If neither the formatter nor the default formatter is set.\n	         *\n	         * @example\n	         *\n	         *     var string = cipherParams + '';\n	         *     var string = cipherParams.toString();\n	         *     var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n	         */\n	        toString: function (formatter) {\n	            return (formatter || this.formatter).stringify(this);\n	        }\n	    });\n\n	    /**\n	     * Format namespace.\n	     */\n	    var C_format = C.format = {};\n\n	    /**\n	     * OpenSSL formatting strategy.\n	     */\n	    var OpenSSLFormatter = C_format.OpenSSL = {\n	        /**\n	         * Converts a cipher params object to an OpenSSL-compatible string.\n	         *\n	         * @param {CipherParams} cipherParams The cipher params object.\n	         *\n	         * @return {string} The OpenSSL-compatible string.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n	         */\n	        stringify: function (cipherParams) {\n	            var wordArray;\n\n	            // Shortcuts\n	            var ciphertext = cipherParams.ciphertext;\n	            var salt = cipherParams.salt;\n\n	            // Format\n	            if (salt) {\n	                wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n	            } else {\n	                wordArray = ciphertext;\n	            }\n\n	            return wordArray.toString(Base64);\n	        },\n\n	        /**\n	         * Converts an OpenSSL-compatible string to a cipher params object.\n	         *\n	         * @param {string} openSSLStr The OpenSSL-compatible string.\n	         *\n	         * @return {CipherParams} The cipher params object.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n	         */\n	        parse: function (openSSLStr) {\n	            var salt;\n\n	            // Parse base64\n	            var ciphertext = Base64.parse(openSSLStr);\n\n	            // Shortcut\n	            var ciphertextWords = ciphertext.words;\n\n	            // Test for salt\n	            if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n	                // Extract salt\n	                salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n	                // Remove salt from ciphertext\n	                ciphertextWords.splice(0, 4);\n	                ciphertext.sigBytes -= 16;\n	            }\n\n	            return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n	        }\n	    };\n\n	    /**\n	     * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n	     */\n	    var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n	        /**\n	         * Configuration options.\n	         *\n	         * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n	         */\n	        cfg: Base.extend({\n	            format: OpenSSLFormatter\n	        }),\n\n	        /**\n	         * Encrypts a message.\n	         *\n	         * @param {Cipher} cipher The cipher algorithm to use.\n	         * @param {WordArray|string} message The message to encrypt.\n	         * @param {WordArray} key The key.\n	         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n	         *\n	         * @return {CipherParams} A cipher params object.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n	         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n	         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n	         */\n	        encrypt: function (cipher, message, key, cfg) {\n	            // Apply config defaults\n	            cfg = this.cfg.extend(cfg);\n\n	            // Encrypt\n	            var encryptor = cipher.createEncryptor(key, cfg);\n	            var ciphertext = encryptor.finalize(message);\n\n	            // Shortcut\n	            var cipherCfg = encryptor.cfg;\n\n	            // Create and return serializable cipher params\n	            return CipherParams.create({\n	                ciphertext: ciphertext,\n	                key: key,\n	                iv: cipherCfg.iv,\n	                algorithm: cipher,\n	                mode: cipherCfg.mode,\n	                padding: cipherCfg.padding,\n	                blockSize: cipher.blockSize,\n	                formatter: cfg.format\n	            });\n	        },\n\n	        /**\n	         * Decrypts serialized ciphertext.\n	         *\n	         * @param {Cipher} cipher The cipher algorithm to use.\n	         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n	         * @param {WordArray} key The key.\n	         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n	         *\n	         * @return {WordArray} The plaintext.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n	         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n	         */\n	        decrypt: function (cipher, ciphertext, key, cfg) {\n	            // Apply config defaults\n	            cfg = this.cfg.extend(cfg);\n\n	            // Convert string to CipherParams\n	            ciphertext = this._parse(ciphertext, cfg.format);\n\n	            // Decrypt\n	            var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n	            return plaintext;\n	        },\n\n	        /**\n	         * Converts serialized ciphertext to CipherParams,\n	         * else assumed CipherParams already and returns ciphertext unchanged.\n	         *\n	         * @param {CipherParams|string} ciphertext The ciphertext.\n	         * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n	         *\n	         * @return {CipherParams} The unserialized ciphertext.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n	         */\n	        _parse: function (ciphertext, format) {\n	            if (typeof ciphertext == 'string') {\n	                return format.parse(ciphertext, this);\n	            } else {\n	                return ciphertext;\n	            }\n	        }\n	    });\n\n	    /**\n	     * Key derivation function namespace.\n	     */\n	    var C_kdf = C.kdf = {};\n\n	    /**\n	     * OpenSSL key derivation function.\n	     */\n	    var OpenSSLKdf = C_kdf.OpenSSL = {\n	        /**\n	         * Derives a key and IV from a password.\n	         *\n	         * @param {string} password The password to derive from.\n	         * @param {number} keySize The size in words of the key to generate.\n	         * @param {number} ivSize The size in words of the IV to generate.\n	         * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n	         *\n	         * @return {CipherParams} A cipher params object with the key, IV, and salt.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n	         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n	         */\n	        execute: function (password, keySize, ivSize, salt, hasher) {\n	            // Generate random salt\n	            if (!salt) {\n	                salt = WordArray.random(64/8);\n	            }\n\n	            // Derive key and IV\n	            if (!hasher) {\n	                var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n	            } else {\n	                var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n	            }\n\n\n	            // Separate key and IV\n	            var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n	            key.sigBytes = keySize * 4;\n\n	            // Return params\n	            return CipherParams.create({ key: key, iv: iv, salt: salt });\n	        }\n	    };\n\n	    /**\n	     * A serializable cipher wrapper that derives the key from a password,\n	     * and returns ciphertext as a serializable cipher params object.\n	     */\n	    var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n	        /**\n	         * Configuration options.\n	         *\n	         * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n	         */\n	        cfg: SerializableCipher.cfg.extend({\n	            kdf: OpenSSLKdf\n	        }),\n\n	        /**\n	         * Encrypts a message using a password.\n	         *\n	         * @param {Cipher} cipher The cipher algorithm to use.\n	         * @param {WordArray|string} message The message to encrypt.\n	         * @param {string} password The password.\n	         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n	         *\n	         * @return {CipherParams} A cipher params object.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n	         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n	         */\n	        encrypt: function (cipher, message, password, cfg) {\n	            // Apply config defaults\n	            cfg = this.cfg.extend(cfg);\n\n	            // Derive key and other params\n	            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n	            // Add IV to config\n	            cfg.iv = derivedParams.iv;\n\n	            // Encrypt\n	            var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n	            // Mix in derived params\n	            ciphertext.mixIn(derivedParams);\n\n	            return ciphertext;\n	        },\n\n	        /**\n	         * Decrypts serialized ciphertext using a password.\n	         *\n	         * @param {Cipher} cipher The cipher algorithm to use.\n	         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n	         * @param {string} password The password.\n	         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n	         *\n	         * @return {WordArray} The plaintext.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n	         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n	         */\n	        decrypt: function (cipher, ciphertext, password, cfg) {\n	            // Apply config defaults\n	            cfg = this.cfg.extend(cfg);\n\n	            // Convert string to CipherParams\n	            ciphertext = this._parse(ciphertext, cfg.format);\n\n	            // Derive key and other params\n	            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n	            // Add IV to config\n	            cfg.iv = derivedParams.iv;\n\n	            // Decrypt\n	            var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n	            return plaintext;\n	        }\n	    });\n	}());\n\n\n	/**\n	 * Cipher Feedback block mode.\n	 */\n	CryptoJS.mode.CFB = (function () {\n	    var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n	    CFB.Encryptor = CFB.extend({\n	        processBlock: function (words, offset) {\n	            // Shortcuts\n	            var cipher = this._cipher;\n	            var blockSize = cipher.blockSize;\n\n	            generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n	            // Remember this block to use with next block\n	            this._prevBlock = words.slice(offset, offset + blockSize);\n	        }\n	    });\n\n	    CFB.Decryptor = CFB.extend({\n	        processBlock: function (words, offset) {\n	            // Shortcuts\n	            var cipher = this._cipher;\n	            var blockSize = cipher.blockSize;\n\n	            // Remember this block to use with next block\n	            var thisBlock = words.slice(offset, offset + blockSize);\n\n	            generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n	            // This block becomes the previous block\n	            this._prevBlock = thisBlock;\n	        }\n	    });\n\n	    function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n	        var keystream;\n\n	        // Shortcut\n	        var iv = this._iv;\n\n	        // Generate keystream\n	        if (iv) {\n	            keystream = iv.slice(0);\n\n	            // Remove IV for subsequent blocks\n	            this._iv = undefined;\n	        } else {\n	            keystream = this._prevBlock;\n	        }\n	        cipher.encryptBlock(keystream, 0);\n\n	        // Encrypt\n	        for (var i = 0; i < blockSize; i++) {\n	            words[offset + i] ^= keystream[i];\n	        }\n	    }\n\n	    return CFB;\n	}());\n\n\n	/**\n	 * Counter block mode.\n	 */\n	CryptoJS.mode.CTR = (function () {\n	    var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n	    var Encryptor = CTR.Encryptor = CTR.extend({\n	        processBlock: function (words, offset) {\n	            // Shortcuts\n	            var cipher = this._cipher\n	            var blockSize = cipher.blockSize;\n	            var iv = this._iv;\n	            var counter = this._counter;\n\n	            // Generate keystream\n	            if (iv) {\n	                counter = this._counter = iv.slice(0);\n\n	                // Remove IV for subsequent blocks\n	                this._iv = undefined;\n	            }\n	            var keystream = counter.slice(0);\n	            cipher.encryptBlock(keystream, 0);\n\n	            // Increment counter\n	            counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n	            // Encrypt\n	            for (var i = 0; i < blockSize; i++) {\n	                words[offset + i] ^= keystream[i];\n	            }\n	        }\n	    });\n\n	    CTR.Decryptor = Encryptor;\n\n	    return CTR;\n	}());\n\n\n	/** @preserve\n	 * Counter block mode compatible with  Dr Brian Gladman fileenc.c\n	 * derived from CryptoJS.mode.CTR\n	 * Jan Hruby jhruby.web@gmail.com\n	 */\n	CryptoJS.mode.CTRGladman = (function () {\n	    var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n		function incWord(word)\n		{\n			if (((word >> 24) & 0xff) === 0xff) { //overflow\n			var b1 = (word >> 16)&0xff;\n			var b2 = (word >> 8)&0xff;\n			var b3 = word & 0xff;\n\n			if (b1 === 0xff) // overflow b1\n			{\n			b1 = 0;\n			if (b2 === 0xff)\n			{\n				b2 = 0;\n				if (b3 === 0xff)\n				{\n					b3 = 0;\n				}\n				else\n				{\n					++b3;\n				}\n			}\n			else\n			{\n				++b2;\n			}\n			}\n			else\n			{\n			++b1;\n			}\n\n			word = 0;\n			word += (b1 << 16);\n			word += (b2 << 8);\n			word += b3;\n			}\n			else\n			{\n			word += (0x01 << 24);\n			}\n			return word;\n		}\n\n		function incCounter(counter)\n		{\n			if ((counter[0] = incWord(counter[0])) === 0)\n			{\n				// encr_data in fileenc.c from  Dr Brian Gladman's counts only with DWORD j < 8\n				counter[1] = incWord(counter[1]);\n			}\n			return counter;\n		}\n\n	    var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n	        processBlock: function (words, offset) {\n	            // Shortcuts\n	            var cipher = this._cipher\n	            var blockSize = cipher.blockSize;\n	            var iv = this._iv;\n	            var counter = this._counter;\n\n	            // Generate keystream\n	            if (iv) {\n	                counter = this._counter = iv.slice(0);\n\n	                // Remove IV for subsequent blocks\n	                this._iv = undefined;\n	            }\n\n				incCounter(counter);\n\n				var keystream = counter.slice(0);\n	            cipher.encryptBlock(keystream, 0);\n\n	            // Encrypt\n	            for (var i = 0; i < blockSize; i++) {\n	                words[offset + i] ^= keystream[i];\n	            }\n	        }\n	    });\n\n	    CTRGladman.Decryptor = Encryptor;\n\n	    return CTRGladman;\n	}());\n\n\n\n\n	/**\n	 * Output Feedback block mode.\n	 */\n	CryptoJS.mode.OFB = (function () {\n	    var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n	    var Encryptor = OFB.Encryptor = OFB.extend({\n	        processBlock: function (words, offset) {\n	            // Shortcuts\n	            var cipher = this._cipher\n	            var blockSize = cipher.blockSize;\n	            var iv = this._iv;\n	            var keystream = this._keystream;\n\n	            // Generate keystream\n	            if (iv) {\n	                keystream = this._keystream = iv.slice(0);\n\n	                // Remove IV for subsequent blocks\n	                this._iv = undefined;\n	            }\n	            cipher.encryptBlock(keystream, 0);\n\n	            // Encrypt\n	            for (var i = 0; i < blockSize; i++) {\n	                words[offset + i] ^= keystream[i];\n	            }\n	        }\n	    });\n\n	    OFB.Decryptor = Encryptor;\n\n	    return OFB;\n	}());\n\n\n	/**\n	 * Electronic Codebook block mode.\n	 */\n	CryptoJS.mode.ECB = (function () {\n	    var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n	    ECB.Encryptor = ECB.extend({\n	        processBlock: function (words, offset) {\n	            this._cipher.encryptBlock(words, offset);\n	        }\n	    });\n\n	    ECB.Decryptor = ECB.extend({\n	        processBlock: function (words, offset) {\n	            this._cipher.decryptBlock(words, offset);\n	        }\n	    });\n\n	    return ECB;\n	}());\n\n\n	/**\n	 * ANSI X.923 padding strategy.\n	 */\n	CryptoJS.pad.AnsiX923 = {\n	    pad: function (data, blockSize) {\n	        // Shortcuts\n	        var dataSigBytes = data.sigBytes;\n	        var blockSizeBytes = blockSize * 4;\n\n	        // Count padding bytes\n	        var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n	        // Compute last byte position\n	        var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n	        // Pad\n	        data.clamp();\n	        data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n	        data.sigBytes += nPaddingBytes;\n	    },\n\n	    unpad: function (data) {\n	        // Get number of padding bytes from last byte\n	        var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n	        // Remove padding\n	        data.sigBytes -= nPaddingBytes;\n	    }\n	};\n\n\n	/**\n	 * ISO 10126 padding strategy.\n	 */\n	CryptoJS.pad.Iso10126 = {\n	    pad: function (data, blockSize) {\n	        // Shortcut\n	        var blockSizeBytes = blockSize * 4;\n\n	        // Count padding bytes\n	        var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n	        // Pad\n	        data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n	             concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n	    },\n\n	    unpad: function (data) {\n	        // Get number of padding bytes from last byte\n	        var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n	        // Remove padding\n	        data.sigBytes -= nPaddingBytes;\n	    }\n	};\n\n\n	/**\n	 * ISO/IEC 9797-1 Padding Method 2.\n	 */\n	CryptoJS.pad.Iso97971 = {\n	    pad: function (data, blockSize) {\n	        // Add 0x80 byte\n	        data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n	        // Zero pad the rest\n	        CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n	    },\n\n	    unpad: function (data) {\n	        // Remove zero padding\n	        CryptoJS.pad.ZeroPadding.unpad(data);\n\n	        // Remove one more byte -- the 0x80 byte\n	        data.sigBytes--;\n	    }\n	};\n\n\n	/**\n	 * Zero padding strategy.\n	 */\n	CryptoJS.pad.ZeroPadding = {\n	    pad: function (data, blockSize) {\n	        // Shortcut\n	        var blockSizeBytes = blockSize * 4;\n\n	        // Pad\n	        data.clamp();\n	        data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n	    },\n\n	    unpad: function (data) {\n	        // Shortcut\n	        var dataWords = data.words;\n\n	        // Unpad\n	        var i = data.sigBytes - 1;\n	        for (var i = data.sigBytes - 1; i >= 0; i--) {\n	            if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n	                data.sigBytes = i + 1;\n	                break;\n	            }\n	        }\n	    }\n	};\n\n\n	/**\n	 * A noop padding strategy.\n	 */\n	CryptoJS.pad.NoPadding = {\n	    pad: function () {\n	    },\n\n	    unpad: function () {\n	    }\n	};\n\n\n	(function (undefined) {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var CipherParams = C_lib.CipherParams;\n	    var C_enc = C.enc;\n	    var Hex = C_enc.Hex;\n	    var C_format = C.format;\n\n	    var HexFormatter = C_format.Hex = {\n	        /**\n	         * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n	         *\n	         * @param {CipherParams} cipherParams The cipher params object.\n	         *\n	         * @return {string} The hexadecimally encoded string.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n	         */\n	        stringify: function (cipherParams) {\n	            return cipherParams.ciphertext.toString(Hex);\n	        },\n\n	        /**\n	         * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n	         *\n	         * @param {string} input The hexadecimally encoded string.\n	         *\n	         * @return {CipherParams} The cipher params object.\n	         *\n	         * @static\n	         *\n	         * @example\n	         *\n	         *     var cipherParams = CryptoJS.format.Hex.parse(hexString);\n	         */\n	        parse: function (input) {\n	            var ciphertext = Hex.parse(input);\n	            return CipherParams.create({ ciphertext: ciphertext });\n	        }\n	    };\n	}());\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var BlockCipher = C_lib.BlockCipher;\n	    var C_algo = C.algo;\n\n	    // Lookup tables\n	    var SBOX = [];\n	    var INV_SBOX = [];\n	    var SUB_MIX_0 = [];\n	    var SUB_MIX_1 = [];\n	    var SUB_MIX_2 = [];\n	    var SUB_MIX_3 = [];\n	    var INV_SUB_MIX_0 = [];\n	    var INV_SUB_MIX_1 = [];\n	    var INV_SUB_MIX_2 = [];\n	    var INV_SUB_MIX_3 = [];\n\n	    // Compute lookup tables\n	    (function () {\n	        // Compute double table\n	        var d = [];\n	        for (var i = 0; i < 256; i++) {\n	            if (i < 128) {\n	                d[i] = i << 1;\n	            } else {\n	                d[i] = (i << 1) ^ 0x11b;\n	            }\n	        }\n\n	        // Walk GF(2^8)\n	        var x = 0;\n	        var xi = 0;\n	        for (var i = 0; i < 256; i++) {\n	            // Compute sbox\n	            var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n	            sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n	            SBOX[x] = sx;\n	            INV_SBOX[sx] = x;\n\n	            // Compute multiplication\n	            var x2 = d[x];\n	            var x4 = d[x2];\n	            var x8 = d[x4];\n\n	            // Compute sub bytes, mix columns tables\n	            var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n	            SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n	            SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n	            SUB_MIX_2[x] = (t << 8)  | (t >>> 24);\n	            SUB_MIX_3[x] = t;\n\n	            // Compute inv sub bytes, inv mix columns tables\n	            var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n	            INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n	            INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n	            INV_SUB_MIX_2[sx] = (t << 8)  | (t >>> 24);\n	            INV_SUB_MIX_3[sx] = t;\n\n	            // Compute next counter\n	            if (!x) {\n	                x = xi = 1;\n	            } else {\n	                x = x2 ^ d[d[d[x8 ^ x2]]];\n	                xi ^= d[d[xi]];\n	            }\n	        }\n	    }());\n\n	    // Precomputed Rcon lookup\n	    var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n	    /**\n	     * AES block cipher algorithm.\n	     */\n	    var AES = C_algo.AES = BlockCipher.extend({\n	        _doReset: function () {\n	            var t;\n\n	            // Skip reset of nRounds has been set before and key did not change\n	            if (this._nRounds && this._keyPriorReset === this._key) {\n	                return;\n	            }\n\n	            // Shortcuts\n	            var key = this._keyPriorReset = this._key;\n	            var keyWords = key.words;\n	            var keySize = key.sigBytes / 4;\n\n	            // Compute number of rounds\n	            var nRounds = this._nRounds = keySize + 6;\n\n	            // Compute number of key schedule rows\n	            var ksRows = (nRounds + 1) * 4;\n\n	            // Compute key schedule\n	            var keySchedule = this._keySchedule = [];\n	            for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n	                if (ksRow < keySize) {\n	                    keySchedule[ksRow] = keyWords[ksRow];\n	                } else {\n	                    t = keySchedule[ksRow - 1];\n\n	                    if (!(ksRow % keySize)) {\n	                        // Rot word\n	                        t = (t << 8) | (t >>> 24);\n\n	                        // Sub word\n	                        t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n	                        // Mix Rcon\n	                        t ^= RCON[(ksRow / keySize) | 0] << 24;\n	                    } else if (keySize > 6 && ksRow % keySize == 4) {\n	                        // Sub word\n	                        t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n	                    }\n\n	                    keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n	                }\n	            }\n\n	            // Compute inv key schedule\n	            var invKeySchedule = this._invKeySchedule = [];\n	            for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n	                var ksRow = ksRows - invKsRow;\n\n	                if (invKsRow % 4) {\n	                    var t = keySchedule[ksRow];\n	                } else {\n	                    var t = keySchedule[ksRow - 4];\n	                }\n\n	                if (invKsRow < 4 || ksRow <= 4) {\n	                    invKeySchedule[invKsRow] = t;\n	                } else {\n	                    invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n	                                               INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n	                }\n	            }\n	        },\n\n	        encryptBlock: function (M, offset) {\n	            this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n	        },\n\n	        decryptBlock: function (M, offset) {\n	            // Swap 2nd and 4th rows\n	            var t = M[offset + 1];\n	            M[offset + 1] = M[offset + 3];\n	            M[offset + 3] = t;\n\n	            this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n	            // Inv swap 2nd and 4th rows\n	            var t = M[offset + 1];\n	            M[offset + 1] = M[offset + 3];\n	            M[offset + 3] = t;\n	        },\n\n	        _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n	            // Shortcut\n	            var nRounds = this._nRounds;\n\n	            // Get input, add round key\n	            var s0 = M[offset]     ^ keySchedule[0];\n	            var s1 = M[offset + 1] ^ keySchedule[1];\n	            var s2 = M[offset + 2] ^ keySchedule[2];\n	            var s3 = M[offset + 3] ^ keySchedule[3];\n\n	            // Key schedule row counter\n	            var ksRow = 4;\n\n	            // Rounds\n	            for (var round = 1; round < nRounds; round++) {\n	                // Shift rows, sub bytes, mix columns, add round key\n	                var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n	                var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n	                var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n	                var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n	                // Update state\n	                s0 = t0;\n	                s1 = t1;\n	                s2 = t2;\n	                s3 = t3;\n	            }\n\n	            // Shift rows, sub bytes, add round key\n	            var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n	            var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n	            var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n	            var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n	            // Set output\n	            M[offset]     = t0;\n	            M[offset + 1] = t1;\n	            M[offset + 2] = t2;\n	            M[offset + 3] = t3;\n	        },\n\n	        keySize: 256/32\n	    });\n\n	    /**\n	     * Shortcut functions to the cipher's object interface.\n	     *\n	     * @example\n	     *\n	     *     var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n	     *     var plaintext  = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n	     */\n	    C.AES = BlockCipher._createHelper(AES);\n	}());\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var WordArray = C_lib.WordArray;\n	    var BlockCipher = C_lib.BlockCipher;\n	    var C_algo = C.algo;\n\n	    // Permuted Choice 1 constants\n	    var PC1 = [\n	        57, 49, 41, 33, 25, 17, 9,  1,\n	        58, 50, 42, 34, 26, 18, 10, 2,\n	        59, 51, 43, 35, 27, 19, 11, 3,\n	        60, 52, 44, 36, 63, 55, 47, 39,\n	        31, 23, 15, 7,  62, 54, 46, 38,\n	        30, 22, 14, 6,  61, 53, 45, 37,\n	        29, 21, 13, 5,  28, 20, 12, 4\n	    ];\n\n	    // Permuted Choice 2 constants\n	    var PC2 = [\n	        14, 17, 11, 24, 1,  5,\n	        3,  28, 15, 6,  21, 10,\n	        23, 19, 12, 4,  26, 8,\n	        16, 7,  27, 20, 13, 2,\n	        41, 52, 31, 37, 47, 55,\n	        30, 40, 51, 45, 33, 48,\n	        44, 49, 39, 56, 34, 53,\n	        46, 42, 50, 36, 29, 32\n	    ];\n\n	    // Cumulative bit shift constants\n	    var BIT_SHIFTS = [1,  2,  4,  6,  8,  10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n	    // SBOXes and round permutation constants\n	    var SBOX_P = [\n	        {\n	            0x0: 0x808200,\n	            0x10000000: 0x8000,\n	            0x20000000: 0x808002,\n	            0x30000000: 0x2,\n	            0x40000000: 0x200,\n	            0x50000000: 0x808202,\n	            0x60000000: 0x800202,\n	            0x70000000: 0x800000,\n	            0x80000000: 0x202,\n	            0x90000000: 0x800200,\n	            0xa0000000: 0x8200,\n	            0xb0000000: 0x808000,\n	            0xc0000000: 0x8002,\n	            0xd0000000: 0x800002,\n	            0xe0000000: 0x0,\n	            0xf0000000: 0x8202,\n	            0x8000000: 0x0,\n	            0x18000000: 0x808202,\n	            0x28000000: 0x8202,\n	            0x38000000: 0x8000,\n	            0x48000000: 0x808200,\n	            0x58000000: 0x200,\n	            0x68000000: 0x808002,\n	            0x78000000: 0x2,\n	            0x88000000: 0x800200,\n	            0x98000000: 0x8200,\n	            0xa8000000: 0x808000,\n	            0xb8000000: 0x800202,\n	            0xc8000000: 0x800002,\n	            0xd8000000: 0x8002,\n	            0xe8000000: 0x202,\n	            0xf8000000: 0x800000,\n	            0x1: 0x8000,\n	            0x10000001: 0x2,\n	            0x20000001: 0x808200,\n	            0x30000001: 0x800000,\n	            0x40000001: 0x808002,\n	            0x50000001: 0x8200,\n	            0x60000001: 0x200,\n	            0x70000001: 0x800202,\n	            0x80000001: 0x808202,\n	            0x90000001: 0x808000,\n	            0xa0000001: 0x800002,\n	            0xb0000001: 0x8202,\n	            0xc0000001: 0x202,\n	            0xd0000001: 0x800200,\n	            0xe0000001: 0x8002,\n	            0xf0000001: 0x0,\n	            0x8000001: 0x808202,\n	            0x18000001: 0x808000,\n	            0x28000001: 0x800000,\n	            0x38000001: 0x200,\n	            0x48000001: 0x8000,\n	            0x58000001: 0x800002,\n	            0x68000001: 0x2,\n	            0x78000001: 0x8202,\n	            0x88000001: 0x8002,\n	            0x98000001: 0x800202,\n	            0xa8000001: 0x202,\n	            0xb8000001: 0x808200,\n	            0xc8000001: 0x800200,\n	            0xd8000001: 0x0,\n	            0xe8000001: 0x8200,\n	            0xf8000001: 0x808002\n	        },\n	        {\n	            0x0: 0x40084010,\n	            0x1000000: 0x4000,\n	            0x2000000: 0x80000,\n	            0x3000000: 0x40080010,\n	            0x4000000: 0x40000010,\n	            0x5000000: 0x40084000,\n	            0x6000000: 0x40004000,\n	            0x7000000: 0x10,\n	            0x8000000: 0x84000,\n	            0x9000000: 0x40004010,\n	            0xa000000: 0x40000000,\n	            0xb000000: 0x84010,\n	            0xc000000: 0x80010,\n	            0xd000000: 0x0,\n	            0xe000000: 0x4010,\n	            0xf000000: 0x40080000,\n	            0x800000: 0x40004000,\n	            0x1800000: 0x84010,\n	            0x2800000: 0x10,\n	            0x3800000: 0x40004010,\n	            0x4800000: 0x40084010,\n	            0x5800000: 0x40000000,\n	            0x6800000: 0x80000,\n	            0x7800000: 0x40080010,\n	            0x8800000: 0x80010,\n	            0x9800000: 0x0,\n	            0xa800000: 0x4000,\n	            0xb800000: 0x40080000,\n	            0xc800000: 0x40000010,\n	            0xd800000: 0x84000,\n	            0xe800000: 0x40084000,\n	            0xf800000: 0x4010,\n	            0x10000000: 0x0,\n	            0x11000000: 0x40080010,\n	            0x12000000: 0x40004010,\n	            0x13000000: 0x40084000,\n	            0x14000000: 0x40080000,\n	            0x15000000: 0x10,\n	            0x16000000: 0x84010,\n	            0x17000000: 0x4000,\n	            0x18000000: 0x4010,\n	            0x19000000: 0x80000,\n	            0x1a000000: 0x80010,\n	            0x1b000000: 0x40000010,\n	            0x1c000000: 0x84000,\n	            0x1d000000: 0x40004000,\n	            0x1e000000: 0x40000000,\n	            0x1f000000: 0x40084010,\n	            0x10800000: 0x84010,\n	            0x11800000: 0x80000,\n	            0x12800000: 0x40080000,\n	            0x13800000: 0x4000,\n	            0x14800000: 0x40004000,\n	            0x15800000: 0x40084010,\n	            0x16800000: 0x10,\n	            0x17800000: 0x40000000,\n	            0x18800000: 0x40084000,\n	            0x19800000: 0x40000010,\n	            0x1a800000: 0x40004010,\n	            0x1b800000: 0x80010,\n	            0x1c800000: 0x0,\n	            0x1d800000: 0x4010,\n	            0x1e800000: 0x40080010,\n	            0x1f800000: 0x84000\n	        },\n	        {\n	            0x0: 0x104,\n	            0x100000: 0x0,\n	            0x200000: 0x4000100,\n	            0x300000: 0x10104,\n	            0x400000: 0x10004,\n	            0x500000: 0x4000004,\n	            0x600000: 0x4010104,\n	            0x700000: 0x4010000,\n	            0x800000: 0x4000000,\n	            0x900000: 0x4010100,\n	            0xa00000: 0x10100,\n	            0xb00000: 0x4010004,\n	            0xc00000: 0x4000104,\n	            0xd00000: 0x10000,\n	            0xe00000: 0x4,\n	            0xf00000: 0x100,\n	            0x80000: 0x4010100,\n	            0x180000: 0x4010004,\n	            0x280000: 0x0,\n	            0x380000: 0x4000100,\n	            0x480000: 0x4000004,\n	            0x580000: 0x10000,\n	            0x680000: 0x10004,\n	            0x780000: 0x104,\n	            0x880000: 0x4,\n	            0x980000: 0x100,\n	            0xa80000: 0x4010000,\n	            0xb80000: 0x10104,\n	            0xc80000: 0x10100,\n	            0xd80000: 0x4000104,\n	            0xe80000: 0x4010104,\n	            0xf80000: 0x4000000,\n	            0x1000000: 0x4010100,\n	            0x1100000: 0x10004,\n	            0x1200000: 0x10000,\n	            0x1300000: 0x4000100,\n	            0x1400000: 0x100,\n	            0x1500000: 0x4010104,\n	            0x1600000: 0x4000004,\n	            0x1700000: 0x0,\n	            0x1800000: 0x4000104,\n	            0x1900000: 0x4000000,\n	            0x1a00000: 0x4,\n	            0x1b00000: 0x10100,\n	            0x1c00000: 0x4010000,\n	            0x1d00000: 0x104,\n	            0x1e00000: 0x10104,\n	            0x1f00000: 0x4010004,\n	            0x1080000: 0x4000000,\n	            0x1180000: 0x104,\n	            0x1280000: 0x4010100,\n	            0x1380000: 0x0,\n	            0x1480000: 0x10004,\n	            0x1580000: 0x4000100,\n	            0x1680000: 0x100,\n	            0x1780000: 0x4010004,\n	            0x1880000: 0x10000,\n	            0x1980000: 0x4010104,\n	            0x1a80000: 0x10104,\n	            0x1b80000: 0x4000004,\n	            0x1c80000: 0x4000104,\n	            0x1d80000: 0x4010000,\n	            0x1e80000: 0x4,\n	            0x1f80000: 0x10100\n	        },\n	        {\n	            0x0: 0x80401000,\n	            0x10000: 0x80001040,\n	            0x20000: 0x401040,\n	            0x30000: 0x80400000,\n	            0x40000: 0x0,\n	            0x50000: 0x401000,\n	            0x60000: 0x80000040,\n	            0x70000: 0x400040,\n	            0x80000: 0x80000000,\n	            0x90000: 0x400000,\n	            0xa0000: 0x40,\n	            0xb0000: 0x80001000,\n	            0xc0000: 0x80400040,\n	            0xd0000: 0x1040,\n	            0xe0000: 0x1000,\n	            0xf0000: 0x80401040,\n	            0x8000: 0x80001040,\n	            0x18000: 0x40,\n	            0x28000: 0x80400040,\n	            0x38000: 0x80001000,\n	            0x48000: 0x401000,\n	            0x58000: 0x80401040,\n	            0x68000: 0x0,\n	            0x78000: 0x80400000,\n	            0x88000: 0x1000,\n	            0x98000: 0x80401000,\n	            0xa8000: 0x400000,\n	            0xb8000: 0x1040,\n	            0xc8000: 0x80000000,\n	            0xd8000: 0x400040,\n	            0xe8000: 0x401040,\n	            0xf8000: 0x80000040,\n	            0x100000: 0x400040,\n	            0x110000: 0x401000,\n	            0x120000: 0x80000040,\n	            0x130000: 0x0,\n	            0x140000: 0x1040,\n	            0x150000: 0x80400040,\n	            0x160000: 0x80401000,\n	            0x170000: 0x80001040,\n	            0x180000: 0x80401040,\n	            0x190000: 0x80000000,\n	            0x1a0000: 0x80400000,\n	            0x1b0000: 0x401040,\n	            0x1c0000: 0x80001000,\n	            0x1d0000: 0x400000,\n	            0x1e0000: 0x40,\n	            0x1f0000: 0x1000,\n	            0x108000: 0x80400000,\n	            0x118000: 0x80401040,\n	            0x128000: 0x0,\n	            0x138000: 0x401000,\n	            0x148000: 0x400040,\n	            0x158000: 0x80000000,\n	            0x168000: 0x80001040,\n	            0x178000: 0x40,\n	            0x188000: 0x80000040,\n	            0x198000: 0x1000,\n	            0x1a8000: 0x80001000,\n	            0x1b8000: 0x80400040,\n	            0x1c8000: 0x1040,\n	            0x1d8000: 0x80401000,\n	            0x1e8000: 0x400000,\n	            0x1f8000: 0x401040\n	        },\n	        {\n	            0x0: 0x80,\n	            0x1000: 0x1040000,\n	            0x2000: 0x40000,\n	            0x3000: 0x20000000,\n	            0x4000: 0x20040080,\n	            0x5000: 0x1000080,\n	            0x6000: 0x21000080,\n	            0x7000: 0x40080,\n	            0x8000: 0x1000000,\n	            0x9000: 0x20040000,\n	            0xa000: 0x20000080,\n	            0xb000: 0x21040080,\n	            0xc000: 0x21040000,\n	            0xd000: 0x0,\n	            0xe000: 0x1040080,\n	            0xf000: 0x21000000,\n	            0x800: 0x1040080,\n	            0x1800: 0x21000080,\n	            0x2800: 0x80,\n	            0x3800: 0x1040000,\n	            0x4800: 0x40000,\n	            0x5800: 0x20040080,\n	            0x6800: 0x21040000,\n	            0x7800: 0x20000000,\n	            0x8800: 0x20040000,\n	            0x9800: 0x0,\n	            0xa800: 0x21040080,\n	            0xb800: 0x1000080,\n	            0xc800: 0x20000080,\n	            0xd800: 0x21000000,\n	            0xe800: 0x1000000,\n	            0xf800: 0x40080,\n	            0x10000: 0x40000,\n	            0x11000: 0x80,\n	            0x12000: 0x20000000,\n	            0x13000: 0x21000080,\n	            0x14000: 0x1000080,\n	            0x15000: 0x21040000,\n	            0x16000: 0x20040080,\n	            0x17000: 0x1000000,\n	            0x18000: 0x21040080,\n	            0x19000: 0x21000000,\n	            0x1a000: 0x1040000,\n	            0x1b000: 0x20040000,\n	            0x1c000: 0x40080,\n	            0x1d000: 0x20000080,\n	            0x1e000: 0x0,\n	            0x1f000: 0x1040080,\n	            0x10800: 0x21000080,\n	            0x11800: 0x1000000,\n	            0x12800: 0x1040000,\n	            0x13800: 0x20040080,\n	            0x14800: 0x20000000,\n	            0x15800: 0x1040080,\n	            0x16800: 0x80,\n	            0x17800: 0x21040000,\n	            0x18800: 0x40080,\n	            0x19800: 0x21040080,\n	            0x1a800: 0x0,\n	            0x1b800: 0x21000000,\n	            0x1c800: 0x1000080,\n	            0x1d800: 0x40000,\n	            0x1e800: 0x20040000,\n	            0x1f800: 0x20000080\n	        },\n	        {\n	            0x0: 0x10000008,\n	            0x100: 0x2000,\n	            0x200: 0x10200000,\n	            0x300: 0x10202008,\n	            0x400: 0x10002000,\n	            0x500: 0x200000,\n	            0x600: 0x200008,\n	            0x700: 0x10000000,\n	            0x800: 0x0,\n	            0x900: 0x10002008,\n	            0xa00: 0x202000,\n	            0xb00: 0x8,\n	            0xc00: 0x10200008,\n	            0xd00: 0x202008,\n	            0xe00: 0x2008,\n	            0xf00: 0x10202000,\n	            0x80: 0x10200000,\n	            0x180: 0x10202008,\n	            0x280: 0x8,\n	            0x380: 0x200000,\n	            0x480: 0x202008,\n	            0x580: 0x10000008,\n	            0x680: 0x10002000,\n	            0x780: 0x2008,\n	            0x880: 0x200008,\n	            0x980: 0x2000,\n	            0xa80: 0x10002008,\n	            0xb80: 0x10200008,\n	            0xc80: 0x0,\n	            0xd80: 0x10202000,\n	            0xe80: 0x202000,\n	            0xf80: 0x10000000,\n	            0x1000: 0x10002000,\n	            0x1100: 0x10200008,\n	            0x1200: 0x10202008,\n	            0x1300: 0x2008,\n	            0x1400: 0x200000,\n	            0x1500: 0x10000000,\n	            0x1600: 0x10000008,\n	            0x1700: 0x202000,\n	            0x1800: 0x202008,\n	            0x1900: 0x0,\n	            0x1a00: 0x8,\n	            0x1b00: 0x10200000,\n	            0x1c00: 0x2000,\n	            0x1d00: 0x10002008,\n	            0x1e00: 0x10202000,\n	            0x1f00: 0x200008,\n	            0x1080: 0x8,\n	            0x1180: 0x202000,\n	            0x1280: 0x200000,\n	            0x1380: 0x10000008,\n	            0x1480: 0x10002000,\n	            0x1580: 0x2008,\n	            0x1680: 0x10202008,\n	            0x1780: 0x10200000,\n	            0x1880: 0x10202000,\n	            0x1980: 0x10200008,\n	            0x1a80: 0x2000,\n	            0x1b80: 0x202008,\n	            0x1c80: 0x200008,\n	            0x1d80: 0x0,\n	            0x1e80: 0x10000000,\n	            0x1f80: 0x10002008\n	        },\n	        {\n	            0x0: 0x100000,\n	            0x10: 0x2000401,\n	            0x20: 0x400,\n	            0x30: 0x100401,\n	            0x40: 0x2100401,\n	            0x50: 0x0,\n	            0x60: 0x1,\n	            0x70: 0x2100001,\n	            0x80: 0x2000400,\n	            0x90: 0x100001,\n	            0xa0: 0x2000001,\n	            0xb0: 0x2100400,\n	            0xc0: 0x2100000,\n	            0xd0: 0x401,\n	            0xe0: 0x100400,\n	            0xf0: 0x2000000,\n	            0x8: 0x2100001,\n	            0x18: 0x0,\n	            0x28: 0x2000401,\n	            0x38: 0x2100400,\n	            0x48: 0x100000,\n	            0x58: 0x2000001,\n	            0x68: 0x2000000,\n	            0x78: 0x401,\n	            0x88: 0x100401,\n	            0x98: 0x2000400,\n	            0xa8: 0x2100000,\n	            0xb8: 0x100001,\n	            0xc8: 0x400,\n	            0xd8: 0x2100401,\n	            0xe8: 0x1,\n	            0xf8: 0x100400,\n	            0x100: 0x2000000,\n	            0x110: 0x100000,\n	            0x120: 0x2000401,\n	            0x130: 0x2100001,\n	            0x140: 0x100001,\n	            0x150: 0x2000400,\n	            0x160: 0x2100400,\n	            0x170: 0x100401,\n	            0x180: 0x401,\n	            0x190: 0x2100401,\n	            0x1a0: 0x100400,\n	            0x1b0: 0x1,\n	            0x1c0: 0x0,\n	            0x1d0: 0x2100000,\n	            0x1e0: 0x2000001,\n	            0x1f0: 0x400,\n	            0x108: 0x100400,\n	            0x118: 0x2000401,\n	            0x128: 0x2100001,\n	            0x138: 0x1,\n	            0x148: 0x2000000,\n	            0x158: 0x100000,\n	            0x168: 0x401,\n	            0x178: 0x2100400,\n	            0x188: 0x2000001,\n	            0x198: 0x2100000,\n	            0x1a8: 0x0,\n	            0x1b8: 0x2100401,\n	            0x1c8: 0x100401,\n	            0x1d8: 0x400,\n	            0x1e8: 0x2000400,\n	            0x1f8: 0x100001\n	        },\n	        {\n	            0x0: 0x8000820,\n	            0x1: 0x20000,\n	            0x2: 0x8000000,\n	            0x3: 0x20,\n	            0x4: 0x20020,\n	            0x5: 0x8020820,\n	            0x6: 0x8020800,\n	            0x7: 0x800,\n	            0x8: 0x8020000,\n	            0x9: 0x8000800,\n	            0xa: 0x20800,\n	            0xb: 0x8020020,\n	            0xc: 0x820,\n	            0xd: 0x0,\n	            0xe: 0x8000020,\n	            0xf: 0x20820,\n	            0x80000000: 0x800,\n	            0x80000001: 0x8020820,\n	            0x80000002: 0x8000820,\n	            0x80000003: 0x8000000,\n	            0x80000004: 0x8020000,\n	            0x80000005: 0x20800,\n	            0x80000006: 0x20820,\n	            0x80000007: 0x20,\n	            0x80000008: 0x8000020,\n	            0x80000009: 0x820,\n	            0x8000000a: 0x20020,\n	            0x8000000b: 0x8020800,\n	            0x8000000c: 0x0,\n	            0x8000000d: 0x8020020,\n	            0x8000000e: 0x8000800,\n	            0x8000000f: 0x20000,\n	            0x10: 0x20820,\n	            0x11: 0x8020800,\n	            0x12: 0x20,\n	            0x13: 0x800,\n	            0x14: 0x8000800,\n	            0x15: 0x8000020,\n	            0x16: 0x8020020,\n	            0x17: 0x20000,\n	            0x18: 0x0,\n	            0x19: 0x20020,\n	            0x1a: 0x8020000,\n	            0x1b: 0x8000820,\n	            0x1c: 0x8020820,\n	            0x1d: 0x20800,\n	            0x1e: 0x820,\n	            0x1f: 0x8000000,\n	            0x80000010: 0x20000,\n	            0x80000011: 0x800,\n	            0x80000012: 0x8020020,\n	            0x80000013: 0x20820,\n	            0x80000014: 0x20,\n	            0x80000015: 0x8020000,\n	            0x80000016: 0x8000000,\n	            0x80000017: 0x8000820,\n	            0x80000018: 0x8020820,\n	            0x80000019: 0x8000020,\n	            0x8000001a: 0x8000800,\n	            0x8000001b: 0x0,\n	            0x8000001c: 0x20800,\n	            0x8000001d: 0x820,\n	            0x8000001e: 0x20020,\n	            0x8000001f: 0x8020800\n	        }\n	    ];\n\n	    // Masks that select the SBOX input\n	    var SBOX_MASK = [\n	        0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n	        0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n	    ];\n\n	    /**\n	     * DES block cipher algorithm.\n	     */\n	    var DES = C_algo.DES = BlockCipher.extend({\n	        _doReset: function () {\n	            // Shortcuts\n	            var key = this._key;\n	            var keyWords = key.words;\n\n	            // Select 56 bits according to PC1\n	            var keyBits = [];\n	            for (var i = 0; i < 56; i++) {\n	                var keyBitPos = PC1[i] - 1;\n	                keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n	            }\n\n	            // Assemble 16 subkeys\n	            var subKeys = this._subKeys = [];\n	            for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n	                // Create subkey\n	                var subKey = subKeys[nSubKey] = [];\n\n	                // Shortcut\n	                var bitShift = BIT_SHIFTS[nSubKey];\n\n	                // Select 48 bits according to PC2\n	                for (var i = 0; i < 24; i++) {\n	                    // Select from the left 28 key bits\n	                    subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n	                    // Select from the right 28 key bits\n	                    subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n	                }\n\n	                // Since each subkey is applied to an expanded 32-bit input,\n	                // the subkey can be broken into 8 values scaled to 32-bits,\n	                // which allows the key to be used without expansion\n	                subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n	                for (var i = 1; i < 7; i++) {\n	                    subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n	                }\n	                subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n	            }\n\n	            // Compute inverse subkeys\n	            var invSubKeys = this._invSubKeys = [];\n	            for (var i = 0; i < 16; i++) {\n	                invSubKeys[i] = subKeys[15 - i];\n	            }\n	        },\n\n	        encryptBlock: function (M, offset) {\n	            this._doCryptBlock(M, offset, this._subKeys);\n	        },\n\n	        decryptBlock: function (M, offset) {\n	            this._doCryptBlock(M, offset, this._invSubKeys);\n	        },\n\n	        _doCryptBlock: function (M, offset, subKeys) {\n	            // Get input\n	            this._lBlock = M[offset];\n	            this._rBlock = M[offset + 1];\n\n	            // Initial permutation\n	            exchangeLR.call(this, 4,  0x0f0f0f0f);\n	            exchangeLR.call(this, 16, 0x0000ffff);\n	            exchangeRL.call(this, 2,  0x33333333);\n	            exchangeRL.call(this, 8,  0x00ff00ff);\n	            exchangeLR.call(this, 1,  0x55555555);\n\n	            // Rounds\n	            for (var round = 0; round < 16; round++) {\n	                // Shortcuts\n	                var subKey = subKeys[round];\n	                var lBlock = this._lBlock;\n	                var rBlock = this._rBlock;\n\n	                // Feistel function\n	                var f = 0;\n	                for (var i = 0; i < 8; i++) {\n	                    f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n	                }\n	                this._lBlock = rBlock;\n	                this._rBlock = lBlock ^ f;\n	            }\n\n	            // Undo swap from last round\n	            var t = this._lBlock;\n	            this._lBlock = this._rBlock;\n	            this._rBlock = t;\n\n	            // Final permutation\n	            exchangeLR.call(this, 1,  0x55555555);\n	            exchangeRL.call(this, 8,  0x00ff00ff);\n	            exchangeRL.call(this, 2,  0x33333333);\n	            exchangeLR.call(this, 16, 0x0000ffff);\n	            exchangeLR.call(this, 4,  0x0f0f0f0f);\n\n	            // Set output\n	            M[offset] = this._lBlock;\n	            M[offset + 1] = this._rBlock;\n	        },\n\n	        keySize: 64/32,\n\n	        ivSize: 64/32,\n\n	        blockSize: 64/32\n	    });\n\n	    // Swap bits across the left and right words\n	    function exchangeLR(offset, mask) {\n	        var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n	        this._rBlock ^= t;\n	        this._lBlock ^= t << offset;\n	    }\n\n	    function exchangeRL(offset, mask) {\n	        var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n	        this._lBlock ^= t;\n	        this._rBlock ^= t << offset;\n	    }\n\n	    /**\n	     * Shortcut functions to the cipher's object interface.\n	     *\n	     * @example\n	     *\n	     *     var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n	     *     var plaintext  = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n	     */\n	    C.DES = BlockCipher._createHelper(DES);\n\n	    /**\n	     * Triple-DES block cipher algorithm.\n	     */\n	    var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n	        _doReset: function () {\n	            // Shortcuts\n	            var key = this._key;\n	            var keyWords = key.words;\n	            // Make sure the key length is valid (64, 128 or >= 192 bit)\n	            if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n	                throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n	            }\n\n	            // Extend the key according to the keying options defined in 3DES standard\n	            var key1 = keyWords.slice(0, 2);\n	            var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n	            var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n	            // Create DES instances\n	            this._des1 = DES.createEncryptor(WordArray.create(key1));\n	            this._des2 = DES.createEncryptor(WordArray.create(key2));\n	            this._des3 = DES.createEncryptor(WordArray.create(key3));\n	        },\n\n	        encryptBlock: function (M, offset) {\n	            this._des1.encryptBlock(M, offset);\n	            this._des2.decryptBlock(M, offset);\n	            this._des3.encryptBlock(M, offset);\n	        },\n\n	        decryptBlock: function (M, offset) {\n	            this._des3.decryptBlock(M, offset);\n	            this._des2.encryptBlock(M, offset);\n	            this._des1.decryptBlock(M, offset);\n	        },\n\n	        keySize: 192/32,\n\n	        ivSize: 64/32,\n\n	        blockSize: 64/32\n	    });\n\n	    /**\n	     * Shortcut functions to the cipher's object interface.\n	     *\n	     * @example\n	     *\n	     *     var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n	     *     var plaintext  = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n	     */\n	    C.TripleDES = BlockCipher._createHelper(TripleDES);\n	}());\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var StreamCipher = C_lib.StreamCipher;\n	    var C_algo = C.algo;\n\n	    /**\n	     * RC4 stream cipher algorithm.\n	     */\n	    var RC4 = C_algo.RC4 = StreamCipher.extend({\n	        _doReset: function () {\n	            // Shortcuts\n	            var key = this._key;\n	            var keyWords = key.words;\n	            var keySigBytes = key.sigBytes;\n\n	            // Init sbox\n	            var S = this._S = [];\n	            for (var i = 0; i < 256; i++) {\n	                S[i] = i;\n	            }\n\n	            // Key setup\n	            for (var i = 0, j = 0; i < 256; i++) {\n	                var keyByteIndex = i % keySigBytes;\n	                var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n	                j = (j + S[i] + keyByte) % 256;\n\n	                // Swap\n	                var t = S[i];\n	                S[i] = S[j];\n	                S[j] = t;\n	            }\n\n	            // Counters\n	            this._i = this._j = 0;\n	        },\n\n	        _doProcessBlock: function (M, offset) {\n	            M[offset] ^= generateKeystreamWord.call(this);\n	        },\n\n	        keySize: 256/32,\n\n	        ivSize: 0\n	    });\n\n	    function generateKeystreamWord() {\n	        // Shortcuts\n	        var S = this._S;\n	        var i = this._i;\n	        var j = this._j;\n\n	        // Generate keystream word\n	        var keystreamWord = 0;\n	        for (var n = 0; n < 4; n++) {\n	            i = (i + 1) % 256;\n	            j = (j + S[i]) % 256;\n\n	            // Swap\n	            var t = S[i];\n	            S[i] = S[j];\n	            S[j] = t;\n\n	            keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n	        }\n\n	        // Update counters\n	        this._i = i;\n	        this._j = j;\n\n	        return keystreamWord;\n	    }\n\n	    /**\n	     * Shortcut functions to the cipher's object interface.\n	     *\n	     * @example\n	     *\n	     *     var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n	     *     var plaintext  = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n	     */\n	    C.RC4 = StreamCipher._createHelper(RC4);\n\n	    /**\n	     * Modified RC4 stream cipher algorithm.\n	     */\n	    var RC4Drop = C_algo.RC4Drop = RC4.extend({\n	        /**\n	         * Configuration options.\n	         *\n	         * @property {number} drop The number of keystream words to drop. Default 192\n	         */\n	        cfg: RC4.cfg.extend({\n	            drop: 192\n	        }),\n\n	        _doReset: function () {\n	            RC4._doReset.call(this);\n\n	            // Drop\n	            for (var i = this.cfg.drop; i > 0; i--) {\n	                generateKeystreamWord.call(this);\n	            }\n	        }\n	    });\n\n	    /**\n	     * Shortcut functions to the cipher's object interface.\n	     *\n	     * @example\n	     *\n	     *     var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n	     *     var plaintext  = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n	     */\n	    C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n	}());\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var StreamCipher = C_lib.StreamCipher;\n	    var C_algo = C.algo;\n\n	    // Reusable objects\n	    var S  = [];\n	    var C_ = [];\n	    var G  = [];\n\n	    /**\n	     * Rabbit stream cipher algorithm\n	     */\n	    var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n	        _doReset: function () {\n	            // Shortcuts\n	            var K = this._key.words;\n	            var iv = this.cfg.iv;\n\n	            // Swap endian\n	            for (var i = 0; i < 4; i++) {\n	                K[i] = (((K[i] << 8)  | (K[i] >>> 24)) & 0x00ff00ff) |\n	                       (((K[i] << 24) | (K[i] >>> 8))  & 0xff00ff00);\n	            }\n\n	            // Generate initial state values\n	            var X = this._X = [\n	                K[0], (K[3] << 16) | (K[2] >>> 16),\n	                K[1], (K[0] << 16) | (K[3] >>> 16),\n	                K[2], (K[1] << 16) | (K[0] >>> 16),\n	                K[3], (K[2] << 16) | (K[1] >>> 16)\n	            ];\n\n	            // Generate initial counter values\n	            var C = this._C = [\n	                (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n	                (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n	                (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n	                (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n	            ];\n\n	            // Carry bit\n	            this._b = 0;\n\n	            // Iterate the system four times\n	            for (var i = 0; i < 4; i++) {\n	                nextState.call(this);\n	            }\n\n	            // Modify the counters\n	            for (var i = 0; i < 8; i++) {\n	                C[i] ^= X[(i + 4) & 7];\n	            }\n\n	            // IV setup\n	            if (iv) {\n	                // Shortcuts\n	                var IV = iv.words;\n	                var IV_0 = IV[0];\n	                var IV_1 = IV[1];\n\n	                // Generate four subvectors\n	                var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n	                var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n	                var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n	                var i3 = (i2 << 16)  | (i0 & 0x0000ffff);\n\n	                // Modify counter values\n	                C[0] ^= i0;\n	                C[1] ^= i1;\n	                C[2] ^= i2;\n	                C[3] ^= i3;\n	                C[4] ^= i0;\n	                C[5] ^= i1;\n	                C[6] ^= i2;\n	                C[7] ^= i3;\n\n	                // Iterate the system four times\n	                for (var i = 0; i < 4; i++) {\n	                    nextState.call(this);\n	                }\n	            }\n	        },\n\n	        _doProcessBlock: function (M, offset) {\n	            // Shortcut\n	            var X = this._X;\n\n	            // Iterate the system\n	            nextState.call(this);\n\n	            // Generate four keystream words\n	            S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n	            S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n	            S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n	            S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n	            for (var i = 0; i < 4; i++) {\n	                // Swap endian\n	                S[i] = (((S[i] << 8)  | (S[i] >>> 24)) & 0x00ff00ff) |\n	                       (((S[i] << 24) | (S[i] >>> 8))  & 0xff00ff00);\n\n	                // Encrypt\n	                M[offset + i] ^= S[i];\n	            }\n	        },\n\n	        blockSize: 128/32,\n\n	        ivSize: 64/32\n	    });\n\n	    function nextState() {\n	        // Shortcuts\n	        var X = this._X;\n	        var C = this._C;\n\n	        // Save old counter values\n	        for (var i = 0; i < 8; i++) {\n	            C_[i] = C[i];\n	        }\n\n	        // Calculate new counter values\n	        C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n	        C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n	        C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n	        C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n	        C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n	        C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n	        C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n	        C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n	        this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n	        // Calculate the g-values\n	        for (var i = 0; i < 8; i++) {\n	            var gx = X[i] + C[i];\n\n	            // Construct high and low argument for squaring\n	            var ga = gx & 0xffff;\n	            var gb = gx >>> 16;\n\n	            // Calculate high and low result of squaring\n	            var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n	            var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n	            // High XOR low\n	            G[i] = gh ^ gl;\n	        }\n\n	        // Calculate new state values\n	        X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n	        X[1] = (G[1] + ((G[0] << 8)  | (G[0] >>> 24)) + G[7]) | 0;\n	        X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n	        X[3] = (G[3] + ((G[2] << 8)  | (G[2] >>> 24)) + G[1]) | 0;\n	        X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n	        X[5] = (G[5] + ((G[4] << 8)  | (G[4] >>> 24)) + G[3]) | 0;\n	        X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n	        X[7] = (G[7] + ((G[6] << 8)  | (G[6] >>> 24)) + G[5]) | 0;\n	    }\n\n	    /**\n	     * Shortcut functions to the cipher's object interface.\n	     *\n	     * @example\n	     *\n	     *     var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n	     *     var plaintext  = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n	     */\n	    C.Rabbit = StreamCipher._createHelper(Rabbit);\n	}());\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var StreamCipher = C_lib.StreamCipher;\n	    var C_algo = C.algo;\n\n	    // Reusable objects\n	    var S  = [];\n	    var C_ = [];\n	    var G  = [];\n\n	    /**\n	     * Rabbit stream cipher algorithm.\n	     *\n	     * This is a legacy version that neglected to convert the key to little-endian.\n	     * This error doesn't affect the cipher's security,\n	     * but it does affect its compatibility with other implementations.\n	     */\n	    var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n	        _doReset: function () {\n	            // Shortcuts\n	            var K = this._key.words;\n	            var iv = this.cfg.iv;\n\n	            // Generate initial state values\n	            var X = this._X = [\n	                K[0], (K[3] << 16) | (K[2] >>> 16),\n	                K[1], (K[0] << 16) | (K[3] >>> 16),\n	                K[2], (K[1] << 16) | (K[0] >>> 16),\n	                K[3], (K[2] << 16) | (K[1] >>> 16)\n	            ];\n\n	            // Generate initial counter values\n	            var C = this._C = [\n	                (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n	                (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n	                (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n	                (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n	            ];\n\n	            // Carry bit\n	            this._b = 0;\n\n	            // Iterate the system four times\n	            for (var i = 0; i < 4; i++) {\n	                nextState.call(this);\n	            }\n\n	            // Modify the counters\n	            for (var i = 0; i < 8; i++) {\n	                C[i] ^= X[(i + 4) & 7];\n	            }\n\n	            // IV setup\n	            if (iv) {\n	                // Shortcuts\n	                var IV = iv.words;\n	                var IV_0 = IV[0];\n	                var IV_1 = IV[1];\n\n	                // Generate four subvectors\n	                var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n	                var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n	                var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n	                var i3 = (i2 << 16)  | (i0 & 0x0000ffff);\n\n	                // Modify counter values\n	                C[0] ^= i0;\n	                C[1] ^= i1;\n	                C[2] ^= i2;\n	                C[3] ^= i3;\n	                C[4] ^= i0;\n	                C[5] ^= i1;\n	                C[6] ^= i2;\n	                C[7] ^= i3;\n\n	                // Iterate the system four times\n	                for (var i = 0; i < 4; i++) {\n	                    nextState.call(this);\n	                }\n	            }\n	        },\n\n	        _doProcessBlock: function (M, offset) {\n	            // Shortcut\n	            var X = this._X;\n\n	            // Iterate the system\n	            nextState.call(this);\n\n	            // Generate four keystream words\n	            S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n	            S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n	            S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n	            S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n	            for (var i = 0; i < 4; i++) {\n	                // Swap endian\n	                S[i] = (((S[i] << 8)  | (S[i] >>> 24)) & 0x00ff00ff) |\n	                       (((S[i] << 24) | (S[i] >>> 8))  & 0xff00ff00);\n\n	                // Encrypt\n	                M[offset + i] ^= S[i];\n	            }\n	        },\n\n	        blockSize: 128/32,\n\n	        ivSize: 64/32\n	    });\n\n	    function nextState() {\n	        // Shortcuts\n	        var X = this._X;\n	        var C = this._C;\n\n	        // Save old counter values\n	        for (var i = 0; i < 8; i++) {\n	            C_[i] = C[i];\n	        }\n\n	        // Calculate new counter values\n	        C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n	        C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n	        C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n	        C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n	        C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n	        C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n	        C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n	        C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n	        this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n	        // Calculate the g-values\n	        for (var i = 0; i < 8; i++) {\n	            var gx = X[i] + C[i];\n\n	            // Construct high and low argument for squaring\n	            var ga = gx & 0xffff;\n	            var gb = gx >>> 16;\n\n	            // Calculate high and low result of squaring\n	            var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n	            var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n	            // High XOR low\n	            G[i] = gh ^ gl;\n	        }\n\n	        // Calculate new state values\n	        X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n	        X[1] = (G[1] + ((G[0] << 8)  | (G[0] >>> 24)) + G[7]) | 0;\n	        X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n	        X[3] = (G[3] + ((G[2] << 8)  | (G[2] >>> 24)) + G[1]) | 0;\n	        X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n	        X[5] = (G[5] + ((G[4] << 8)  | (G[4] >>> 24)) + G[3]) | 0;\n	        X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n	        X[7] = (G[7] + ((G[6] << 8)  | (G[6] >>> 24)) + G[5]) | 0;\n	    }\n\n	    /**\n	     * Shortcut functions to the cipher's object interface.\n	     *\n	     * @example\n	     *\n	     *     var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n	     *     var plaintext  = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n	     */\n	    C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n	}());\n\n\n	(function () {\n	    // Shortcuts\n	    var C = CryptoJS;\n	    var C_lib = C.lib;\n	    var BlockCipher = C_lib.BlockCipher;\n	    var C_algo = C.algo;\n\n	    const N = 16;\n\n	    //Origin pbox and sbox, derived from PI\n	    const ORIG_P = [\n	        0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,\n	        0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,\n	        0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,\n	        0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,\n	        0x9216D5D9, 0x8979FB1B\n	    ];\n\n	    const ORIG_S = [\n	        [   0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,\n	            0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,\n	            0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,\n	            0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,\n	            0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,\n	            0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,\n	            0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,\n	            0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,\n	            0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,\n	            0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,\n	            0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,\n	            0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,\n	            0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,\n	            0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,\n	            0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,\n	            0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,\n	            0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,\n	            0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,\n	            0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,\n	            0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,\n	            0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,\n	            0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,\n	            0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,\n	            0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,\n	            0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,\n	            0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,\n	            0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,\n	            0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,\n	            0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,\n	            0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,\n	            0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,\n	            0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,\n	            0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,\n	            0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,\n	            0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,\n	            0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,\n	            0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,\n	            0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,\n	            0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,\n	            0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,\n	            0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,\n	            0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,\n	            0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,\n	            0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,\n	            0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,\n	            0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,\n	            0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,\n	            0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,\n	            0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,\n	            0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,\n	            0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,\n	            0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,\n	            0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,\n	            0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,\n	            0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,\n	            0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,\n	            0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,\n	            0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,\n	            0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,\n	            0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,\n	            0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,\n	            0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,\n	            0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,\n	            0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A   ],\n	        [   0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,\n	            0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,\n	            0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,\n	            0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,\n	            0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,\n	            0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,\n	            0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,\n	            0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,\n	            0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,\n	            0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,\n	            0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,\n	            0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,\n	            0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,\n	            0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,\n	            0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,\n	            0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,\n	            0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,\n	            0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,\n	            0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,\n	            0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,\n	            0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,\n	            0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,\n	            0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,\n	            0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,\n	            0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,\n	            0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,\n	            0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,\n	            0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,\n	            0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,\n	            0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,\n	            0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,\n	            0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,\n	            0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,\n	            0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,\n	            0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,\n	            0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,\n	            0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,\n	            0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,\n	            0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,\n	            0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,\n	            0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,\n	            0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,\n	            0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,\n	            0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,\n	            0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,\n	            0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,\n	            0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,\n	            0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,\n	            0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,\n	            0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,\n	            0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,\n	            0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,\n	            0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,\n	            0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,\n	            0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,\n	            0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,\n	            0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,\n	            0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,\n	            0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,\n	            0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,\n	            0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,\n	            0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,\n	            0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,\n	            0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7   ],\n	        [   0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,\n	            0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,\n	            0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,\n	            0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,\n	            0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,\n	            0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,\n	            0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,\n	            0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,\n	            0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,\n	            0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,\n	            0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,\n	            0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,\n	            0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,\n	            0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,\n	            0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,\n	            0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,\n	            0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,\n	            0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,\n	            0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,\n	            0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,\n	            0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,\n	            0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,\n	            0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,\n	            0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,\n	            0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,\n	            0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,\n	            0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,\n	            0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,\n	            0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,\n	            0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,\n	            0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,\n	            0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,\n	            0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,\n	            0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,\n	            0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,\n	            0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,\n	            0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,\n	            0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,\n	            0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,\n	            0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,\n	            0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,\n	            0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,\n	            0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,\n	            0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,\n	            0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,\n	            0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,\n	            0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,\n	            0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,\n	            0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,\n	            0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,\n	            0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,\n	            0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,\n	            0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,\n	            0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,\n	            0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,\n	            0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,\n	            0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,\n	            0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,\n	            0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,\n	            0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,\n	            0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,\n	            0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,\n	            0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,\n	            0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0  ],\n	        [   0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,\n	            0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,\n	            0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,\n	            0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,\n	            0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,\n	            0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,\n	            0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,\n	            0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,\n	            0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,\n	            0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,\n	            0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,\n	            0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,\n	            0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,\n	            0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,\n	            0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,\n	            0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,\n	            0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,\n	            0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,\n	            0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,\n	            0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,\n	            0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,\n	            0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,\n	            0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,\n	            0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,\n	            0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,\n	            0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,\n	            0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,\n	            0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,\n	            0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,\n	            0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,\n	            0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,\n	            0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,\n	            0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,\n	            0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,\n	            0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,\n	            0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,\n	            0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,\n	            0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,\n	            0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,\n	            0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,\n	            0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,\n	            0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,\n	            0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,\n	            0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,\n	            0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,\n	            0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,\n	            0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,\n	            0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,\n	            0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,\n	            0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,\n	            0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,\n	            0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,\n	            0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,\n	            0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,\n	            0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,\n	            0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,\n	            0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,\n	            0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,\n	            0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,\n	            0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,\n	            0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,\n	            0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,\n	            0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,\n	            0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6  ]\n	    ];\n\n	    var BLOWFISH_CTX = {\n	        pbox: [],\n	        sbox: []\n	    }\n\n	    function F(ctx, x){\n	        let a = (x >> 24) & 0xFF;\n	        let b = (x >> 16) & 0xFF;\n	        let c = (x >> 8) & 0xFF;\n	        let d = x & 0xFF;\n\n	        let y = ctx.sbox[0][a] + ctx.sbox[1][b];\n	        y = y ^ ctx.sbox[2][c];\n	        y = y + ctx.sbox[3][d];\n\n	        return y;\n	    }\n\n	    function BlowFish_Encrypt(ctx, left, right){\n	        let Xl = left;\n	        let Xr = right;\n	        let temp;\n\n	        for(let i = 0; i < N; ++i){\n	            Xl = Xl ^ ctx.pbox[i];\n	            Xr = F(ctx, Xl) ^ Xr;\n\n	            temp = Xl;\n	            Xl = Xr;\n	            Xr = temp;\n	        }\n\n	        temp = Xl;\n	        Xl = Xr;\n	        Xr = temp;\n\n	        Xr = Xr ^ ctx.pbox[N];\n	        Xl = Xl ^ ctx.pbox[N + 1];\n\n	        return {left: Xl, right: Xr};\n	    }\n\n	    function BlowFish_Decrypt(ctx, left, right){\n	        let Xl = left;\n	        let Xr = right;\n	        let temp;\n\n	        for(let i = N + 1; i > 1; --i){\n	            Xl = Xl ^ ctx.pbox[i];\n	            Xr = F(ctx, Xl) ^ Xr;\n\n	            temp = Xl;\n	            Xl = Xr;\n	            Xr = temp;\n	        }\n\n	        temp = Xl;\n	        Xl = Xr;\n	        Xr = temp;\n\n	        Xr = Xr ^ ctx.pbox[1];\n	        Xl = Xl ^ ctx.pbox[0];\n\n	        return {left: Xl, right: Xr};\n	    }\n\n	    /**\n	     * Initialization ctx's pbox and sbox.\n	     *\n	     * @param {Object} ctx The object has pbox and sbox.\n	     * @param {Array} key An array of 32-bit words.\n	     * @param {int} keysize The length of the key.\n	     *\n	     * @example\n	     *\n	     *     BlowFishInit(BLOWFISH_CTX, key, 128/32);\n	     */\n	    function BlowFishInit(ctx, key, keysize)\n	    {\n	        for(let Row = 0; Row < 4; Row++)\n	        {\n	            ctx.sbox[Row] = [];\n	            for(let Col = 0; Col < 256; Col++)\n	            {\n	                ctx.sbox[Row][Col] = ORIG_S[Row][Col];\n	            }\n	        }\n\n	        let keyIndex = 0;\n	        for(let index = 0; index < N + 2; index++)\n	        {\n	            ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];\n	            keyIndex++;\n	            if(keyIndex >= keysize)\n	            {\n	                keyIndex = 0;\n	            }\n	        }\n\n	        let Data1 = 0;\n	        let Data2 = 0;\n	        let res = 0;\n	        for(let i = 0; i < N + 2; i += 2)\n	        {\n	            res = BlowFish_Encrypt(ctx, Data1, Data2);\n	            Data1 = res.left;\n	            Data2 = res.right;\n	            ctx.pbox[i] = Data1;\n	            ctx.pbox[i + 1] = Data2;\n	        }\n\n	        for(let i = 0; i < 4; i++)\n	        {\n	            for(let j = 0; j < 256; j += 2)\n	            {\n	                res = BlowFish_Encrypt(ctx, Data1, Data2);\n	                Data1 = res.left;\n	                Data2 = res.right;\n	                ctx.sbox[i][j] = Data1;\n	                ctx.sbox[i][j + 1] = Data2;\n	            }\n	        }\n\n	        return true;\n	    }\n\n	    /**\n	     * Blowfish block cipher algorithm.\n	     */\n	    var Blowfish = C_algo.Blowfish = BlockCipher.extend({\n	        _doReset: function () {\n	            // Skip reset of nRounds has been set before and key did not change\n	            if (this._keyPriorReset === this._key) {\n	                return;\n	            }\n\n	            // Shortcuts\n	            var key = this._keyPriorReset = this._key;\n	            var keyWords = key.words;\n	            var keySize = key.sigBytes / 4;\n\n	            //Initialization pbox and sbox\n	            BlowFishInit(BLOWFISH_CTX, keyWords, keySize);\n	        },\n\n	        encryptBlock: function (M, offset) {\n	            var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n	            M[offset] = res.left;\n	            M[offset + 1] = res.right;\n	        },\n\n	        decryptBlock: function (M, offset) {\n	            var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n	            M[offset] = res.left;\n	            M[offset + 1] = res.right;\n	        },\n\n	        blockSize: 64/32,\n\n	        keySize: 128/32,\n\n	        ivSize: 64/32\n	    });\n\n	    /**\n	     * Shortcut functions to the cipher's object interface.\n	     *\n	     * @example\n	     *\n	     *     var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg);\n	     *     var plaintext  = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg);\n	     */\n	    C.Blowfish = BlockCipher._createHelper(Blowfish);\n	}());\n\n\n	return CryptoJS;\n\n}));";
const usePreflight = (e) => {
	let [t, n] = useState(e.defaultPreflight ?? null), i = useCallback((t) => {
		n(t), e.onPreflightChange?.(t);
	}, [e]), a = useCallback(async (n, i) => t?.enabled ? runIsolatedLabScript(t.script, e.envApi?.env ?? { variables: {} }, void 0, n, i) : null, [t, e.envApi.env]), o = useCallback((i) => {
		n({
			...t ?? {
				script: "",
				enabled: !0
			},
			lastTestResult: i
		}), e.onPreflightChange?.({
			...t ?? {
				script: "",
				enabled: !0
			},
			lastTestResult: i
		});
	}, [t, e]);
	return {
		preflight: t,
		setPreflight: i,
		runPreflight: a,
		setLastTestResult: o
	};
};
async function runIsolatedLabScript(e, t, n, i = [], a = {}) {
	let o = i.filter((e) => e.preflight?.lab?.object).map((e) => e.preflight?.lab?.object);
	return new Promise((s) => {
		let c = new Blob([crypto_js_default.replace("}(this, function () {", "}(self, function () {"), `
        const env =  {
          variables: ${JSON.stringify(t?.variables)} || {},
        };

        let promptResolve = null;

        self.onmessage = async (event) => {
          if (event.data.type === 'prompt:result') {
            promptResolve?.(event.data.value || null);
          }

          if (event.data.type === 'init') {
            try {
              self.console = {
                log: (...args) => {
                  self.postMessage({ type: 'log', level: 'log', message: args });
                },
                warn: (...args) => {
                  self.postMessage({ type: 'log', level: 'warn', message: args });
                },
                error: (...args) => {
                  self.postMessage({ type: 'log', level: 'error', message: args });
                },
                info: (...args) => {
                  self.postMessage({ type: 'log', level: 'info', message: args });
                },
              };

              let state = ${JSON.stringify(a)};

              const setState = (id, newState) => {
                Object.assign(state[id] ?? {}, newState);
              };
              
              const lab = Object.freeze({
                environment: {
                  get: (key) => env.variables[key],
                  set: (key, value) => {
                    env.variables[key] = value;
                  },
                  delete: (key) => {
                    delete env.variables[key];
                  }
                },
                request: {
                  headers: new Headers()
                },
                prompt: (placeholder, defaultValue) => {
                  return new Promise((resolve) => {
                    promptResolve = resolve;
                    self.postMessage({ type: 'prompt', placeholder, defaultValue });
                  });
                },
                plugins: {
                  ${o.map((e) => e?.toString()).map((e) => e?.startsWith("object") ? `function${e.slice(6)}` : e).map((e, t) => `
                   ...(${e})(${JSON.stringify(i[t].preflight?.lab?.props ?? {})}, state['${i[t].id}'] ?? {}, (newState) => setState('${i[t].id}', newState))  
                  `).join(",")}
                }
              });
  
              // Make CryptoJS available globally in the script context
              const AsyncFunction = async function () {}.constructor;
              await new AsyncFunction('lab', 'CryptoJS', 'with(lab){' + event.data.script + '}')(lab, CryptoJS);
              
              self.postMessage({ type: 'result', env: env, headers: Object.fromEntries(lab.request.headers.entries()), pluginsState: state });
            } catch (err) {
              self.console.error(err);
              self.postMessage({ type: 'result', error: err.message || String(err) });
            }
          }
        };
      `], { type: "application/javascript" }), d = [], f = {}, g = new Worker(URL.createObjectURL(c), { type: "module" });
		g.onmessage = ({ data: e }) => {
			e.type === "result" ? (g.terminate(), e.error ? s({
				status: "error",
				error: e.error,
				logs: d,
				env: t,
				headers: e.headers,
				pluginsState: e.pluginsState
			}) : (Object.keys(e.headers).length > 0 && d.push({
				level: "system",
				message: [`Headers:\n${JSON.stringify(e.headers, null, 2)}`],
				createdAt: (/* @__PURE__ */ new Date()).toISOString()
			}), s({
				status: "success",
				logs: d,
				env: e.env,
				headers: e.headers,
				pluginsState: e.pluginsState
			}))) : e.type === "log" ? e.level === "log" ? d.push({
				level: "log",
				message: e.message,
				createdAt: (/* @__PURE__ */ new Date()).toISOString()
			}) : e.level === "warn" ? d.push({
				level: "warn",
				message: e.message,
				createdAt: (/* @__PURE__ */ new Date()).toISOString()
			}) : e.level === "error" ? d.push({
				level: "error",
				message: e.message,
				createdAt: (/* @__PURE__ */ new Date()).toISOString()
			}) : e.level === "info" && d.push({
				level: "info",
				message: e.message,
				createdAt: (/* @__PURE__ */ new Date()).toISOString()
			}) : e.type === "header" ? (f[e.name] = e.value, d.push({
				level: "system",
				message: [`Header ${e.name} set to ${e.value}`],
				createdAt: (/* @__PURE__ */ new Date()).toISOString()
			})) : e.type === "prompt" && n?.(e.placeholder, e.defaultValue).then((e) => {
				g.postMessage({
					type: "prompt:result",
					value: e
				});
			});
		}, g.onerror = (e) => {
			s({
				status: "error",
				error: e.message,
				logs: d,
				env: t,
				headers: {},
				pluginsState: a
			});
		}, g.postMessage({
			type: "init",
			script: e
		});
	});
}
const useSettings = (e) => {
	let [t, n] = useState(e.defaultSettings ?? { fetch: { credentials: "same-origin" } }), i = useCallback((t) => {
		n(t), e.onSettingsChange?.(t);
	}, [e]);
	return {
		settings: t,
		setSettings: i
	};
}, useTabs = (e) => {
	let [t, n] = useState(e.defaultTabs ?? []), [i, a] = useState(e.defaultTabs?.find((t) => t.id === e.defaultActiveTabId) ?? e.defaultTabs?.[0] ?? null), o = useCallback((t) => {
		a(t), e.onActiveTabIdChange?.(t?.id ?? null);
	}, [e]), s = useCallback((t) => {
		n(t), e.onTabsChange?.(t);
	}, [e]), c = useCallback((i) => {
		let a = {
			...i,
			id: v4_default()
		}, o = [...t ?? [], a];
		return n(o), e.onTabsChange?.(o), a;
	}, [t, e]), d = useCallback((i) => {
		let a = t.filter((e) => e.id !== i);
		n(a), e.onTabsChange?.(a);
	}, [t, e]), f = useCallback((i, a) => {
		let o = t.map((e) => e.id === i ? {
			...e,
			data: a
		} : e);
		n(o), e.onTabsChange?.(o);
	}, [t, e]);
	return {
		activeTab: i,
		setActiveTab: o,
		tabs: t,
		setTabs: s,
		addTab: c,
		deleteTab: d,
		updateTab: f
	};
}, useTests = (e) => {
	let [t, n] = useState(e.defaultTests ?? []), i = useRef(t);
	useEffect(() => {
		i.current = t;
	}, [t]);
	let a = useCallback((i) => {
		let a = {
			...i,
			id: v4_default(),
			createdAt: (/* @__PURE__ */ new Date()).toISOString(),
			tasks: []
		}, o = [...t, a];
		return n(o), e.onTestsChange?.(o), a;
	}, [t, e]), o = useCallback((t) => {
		let a = i.current.filter((e) => e.id !== t);
		n(a), e.onTestsChange?.(a);
	}, [e]), s = useCallback((t, a) => {
		let o = {
			...a,
			id: v4_default(),
			next: null
		}, s = i.current.map((e) => e.id === t ? {
			...e,
			tasks: [...e.tasks, o]
		} : e);
		n(s), e.onTestsChange?.(s);
	}, [e]), c = useCallback((t, a) => {
		let o = i.current.map((e) => e.id === t ? {
			...e,
			tasks: e.tasks.filter((e) => e.id !== a)
		} : e);
		n(o), e.onTestsChange?.(o);
	}, [e]);
	return {
		tests: t,
		addTest: a,
		deleteTest: o,
		addTaskToTest: s,
		deleteTaskFromTest: c
	};
};
function r(e) {
	var t, n, i = "";
	if (typeof e == "string" || typeof e == "number") i += e;
	else if (typeof e == "object") if (Array.isArray(e)) {
		var a = e.length;
		for (t = 0; t < a; t++) e[t] && (n = r(e[t])) && (i && (i += " "), i += n);
	} else for (n in e) e[n] && (i && (i += " "), i += n);
	return i;
}
function clsx() {
	for (var e, t, n = 0, i = "", a = arguments.length; n < a; n++) (e = arguments[n]) && (t = r(e)) && (i && (i += " "), i += t);
	return i;
}
var concatArrays = (e, t) => {
	let n = Array(e.length + t.length);
	for (let t = 0; t < e.length; t++) n[t] = e[t];
	for (let i = 0; i < t.length; i++) n[e.length + i] = t[i];
	return n;
}, createClassValidatorObject = (e, t) => ({
	classGroupId: e,
	validator: t
}), createClassPartObject = (e = /* @__PURE__ */ new Map(), t = null, n) => ({
	nextPart: e,
	validators: t,
	classGroupId: n
}), CLASS_PART_SEPARATOR = "-", EMPTY_CONFLICTS = [], ARBITRARY_PROPERTY_PREFIX = "arbitrary..", createClassGroupUtils = (e) => {
	let t = createClassMap(e), { conflictingClassGroups: n, conflictingClassGroupModifiers: i } = e;
	return {
		getClassGroupId: (e) => {
			if (e.startsWith("[") && e.endsWith("]")) return getGroupIdForArbitraryProperty(e);
			let n = e.split(CLASS_PART_SEPARATOR), i = n[0] === "" && n.length > 1 ? 1 : 0;
			return getGroupRecursive(n, i, t);
		},
		getConflictingClassGroupIds: (e, t) => {
			if (t) {
				let t = i[e], a = n[e];
				return t ? a ? concatArrays(a, t) : t : a || EMPTY_CONFLICTS;
			}
			return n[e] || EMPTY_CONFLICTS;
		}
	};
}, getGroupRecursive = (e, t, n) => {
	if (e.length - t === 0) return n.classGroupId;
	let i = e[t], a = n.nextPart.get(i);
	if (a) {
		let n = getGroupRecursive(e, t + 1, a);
		if (n) return n;
	}
	let o = n.validators;
	if (o === null) return;
	let s = t === 0 ? e.join(CLASS_PART_SEPARATOR) : e.slice(t).join(CLASS_PART_SEPARATOR), c = o.length;
	for (let e = 0; e < c; e++) {
		let t = o[e];
		if (t.validator(s)) return t.classGroupId;
	}
}, getGroupIdForArbitraryProperty = (e) => e.slice(1, -1).indexOf(":") === -1 ? void 0 : (() => {
	let t = e.slice(1, -1), n = t.indexOf(":"), i = t.slice(0, n);
	return i ? ARBITRARY_PROPERTY_PREFIX + i : void 0;
})(), createClassMap = (e) => {
	let { theme: t, classGroups: n } = e;
	return processClassGroups(n, t);
}, processClassGroups = (e, t) => {
	let n = createClassPartObject();
	for (let i in e) {
		let a = e[i];
		processClassesRecursively(a, n, i, t);
	}
	return n;
}, processClassesRecursively = (e, t, n, i) => {
	let a = e.length;
	for (let o = 0; o < a; o++) {
		let a = e[o];
		processClassDefinition(a, t, n, i);
	}
}, processClassDefinition = (e, t, n, i) => {
	if (typeof e == "string") {
		processStringDefinition(e, t, n);
		return;
	}
	if (typeof e == "function") {
		processFunctionDefinition(e, t, n, i);
		return;
	}
	processObjectDefinition(e, t, n, i);
}, processStringDefinition = (e, t, n) => {
	let i = e === "" ? t : getPart(t, e);
	i.classGroupId = n;
}, processFunctionDefinition = (e, t, n, i) => {
	if (isThemeGetter(e)) {
		processClassesRecursively(e(i), t, n, i);
		return;
	}
	t.validators === null && (t.validators = []), t.validators.push(createClassValidatorObject(n, e));
}, processObjectDefinition = (e, t, n, i) => {
	let a = Object.entries(e), o = a.length;
	for (let e = 0; e < o; e++) {
		let [o, s] = a[e];
		processClassesRecursively(s, getPart(t, o), n, i);
	}
}, getPart = (e, t) => {
	let n = e, i = t.split(CLASS_PART_SEPARATOR), a = i.length;
	for (let e = 0; e < a; e++) {
		let t = i[e], a = n.nextPart.get(t);
		a || (a = createClassPartObject(), n.nextPart.set(t, a)), n = a;
	}
	return n;
}, isThemeGetter = (e) => "isThemeGetter" in e && e.isThemeGetter === !0, createLruCache = (e) => {
	if (e < 1) return {
		get: () => void 0,
		set: () => {}
	};
	let t = 0, n = Object.create(null), i = Object.create(null), a = (a, o) => {
		n[a] = o, t++, t > e && (t = 0, i = n, n = Object.create(null));
	};
	return {
		get(e) {
			let t = n[e];
			if (t !== void 0) return t;
			if ((t = i[e]) !== void 0) return a(e, t), t;
		},
		set(e, t) {
			e in n ? n[e] = t : a(e, t);
		}
	};
}, IMPORTANT_MODIFIER = "!", MODIFIER_SEPARATOR = ":", EMPTY_MODIFIERS = [], createResultObject = (e, t, n, i, a) => ({
	modifiers: e,
	hasImportantModifier: t,
	baseClassName: n,
	maybePostfixModifierPosition: i,
	isExternal: a
}), createParseClassName = (e) => {
	let { prefix: t, experimentalParseClassName: n } = e, i = (e) => {
		let t = [], n = 0, i = 0, a = 0, o, s = e.length;
		for (let c = 0; c < s; c++) {
			let s = e[c];
			if (n === 0 && i === 0) {
				if (s === MODIFIER_SEPARATOR) {
					t.push(e.slice(a, c)), a = c + 1;
					continue;
				}
				if (s === "/") {
					o = c;
					continue;
				}
			}
			s === "[" ? n++ : s === "]" ? n-- : s === "(" ? i++ : s === ")" && i--;
		}
		let c = t.length === 0 ? e : e.slice(a), d = c, f = !1;
		c.endsWith(IMPORTANT_MODIFIER) ? (d = c.slice(0, -1), f = !0) : c.startsWith(IMPORTANT_MODIFIER) && (d = c.slice(1), f = !0);
		let g = o && o > a ? o - a : void 0;
		return createResultObject(t, f, d, g);
	};
	if (t) {
		let e = t + MODIFIER_SEPARATOR, n = i;
		i = (t) => t.startsWith(e) ? n(t.slice(e.length)) : createResultObject(EMPTY_MODIFIERS, !1, t, void 0, !0);
	}
	if (n) {
		let e = i;
		i = (t) => n({
			className: t,
			parseClassName: e
		});
	}
	return i;
}, createSortModifiers = (e) => {
	let t = /* @__PURE__ */ new Map();
	return e.orderSensitiveModifiers.forEach((e, n) => {
		t.set(e, 1e6 + n);
	}), (e) => {
		let n = [], i = [];
		for (let a = 0; a < e.length; a++) {
			let o = e[a], s = o[0] === "[", c = t.has(o);
			s || c ? (i.length > 0 && (i.sort(), n.push(...i), i = []), n.push(o)) : i.push(o);
		}
		return i.length > 0 && (i.sort(), n.push(...i)), n;
	};
}, createConfigUtils = (e) => ({
	cache: createLruCache(e.cacheSize),
	parseClassName: createParseClassName(e),
	sortModifiers: createSortModifiers(e),
	...createClassGroupUtils(e)
}), SPLIT_CLASSES_REGEX = /\s+/, mergeClassList = (e, t) => {
	let { parseClassName: n, getClassGroupId: i, getConflictingClassGroupIds: a, sortModifiers: o } = t, s = [], c = e.trim().split(SPLIT_CLASSES_REGEX), d = "";
	for (let e = c.length - 1; e >= 0; --e) {
		let t = c[e], { isExternal: f, modifiers: g, hasImportantModifier: y, baseClassName: b, maybePostfixModifierPosition: x } = n(t);
		if (f) {
			d = t + (d.length > 0 ? " " + d : d);
			continue;
		}
		let S = !!x, C = i(S ? b.substring(0, x) : b);
		if (!C) {
			if (!S) {
				d = t + (d.length > 0 ? " " + d : d);
				continue;
			}
			if (C = i(b), !C) {
				d = t + (d.length > 0 ? " " + d : d);
				continue;
			}
			S = !1;
		}
		let w = g.length === 0 ? "" : g.length === 1 ? g[0] : o(g).join(":"), E = y ? w + IMPORTANT_MODIFIER : w, O = E + C;
		if (s.indexOf(O) > -1) continue;
		s.push(O);
		let A = a(C, S);
		for (let e = 0; e < A.length; ++e) {
			let t = A[e];
			s.push(E + t);
		}
		d = t + (d.length > 0 ? " " + d : d);
	}
	return d;
}, twJoin = (...e) => {
	let t = 0, n, i, a = "";
	for (; t < e.length;) (n = e[t++]) && (i = toValue(n)) && (a && (a += " "), a += i);
	return a;
}, toValue = (e) => {
	if (typeof e == "string") return e;
	let t, n = "";
	for (let i = 0; i < e.length; i++) e[i] && (t = toValue(e[i])) && (n && (n += " "), n += t);
	return n;
}, createTailwindMerge = (e, ...t) => {
	let n, i, a, o, s = (s) => {
		let d = t.reduce((e, t) => t(e), e());
		return n = createConfigUtils(d), i = n.cache.get, a = n.cache.set, o = c, c(s);
	}, c = (e) => {
		let t = i(e);
		if (t) return t;
		let o = mergeClassList(e, n);
		return a(e, o), o;
	};
	return o = s, (...e) => o(twJoin(...e));
}, fallbackThemeArr = [], fromTheme = (e) => {
	let t = (t) => t[e] || fallbackThemeArr;
	return t.isThemeGetter = !0, t;
}, arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i, arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i, fractionRegex = /^\d+\/\d+$/, tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/, lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/, colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/, shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/, imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/, isFraction = (e) => fractionRegex.test(e), isNumber = (e) => !!e && !Number.isNaN(Number(e)), isInteger = (e) => !!e && Number.isInteger(Number(e)), isPercent = (e) => e.endsWith("%") && isNumber(e.slice(0, -1)), isTshirtSize = (e) => tshirtUnitRegex.test(e), isAny = () => !0, isLengthOnly = (e) => lengthUnitRegex.test(e) && !colorFunctionRegex.test(e), isNever = () => !1, isShadow = (e) => shadowRegex.test(e), isImage = (e) => imageRegex.test(e), isAnyNonArbitrary = (e) => !isArbitraryValue(e) && !isArbitraryVariable(e), isArbitrarySize = (e) => getIsArbitraryValue(e, isLabelSize, isNever), isArbitraryValue = (e) => arbitraryValueRegex.test(e), isArbitraryLength = (e) => getIsArbitraryValue(e, isLabelLength, isLengthOnly), isArbitraryNumber = (e) => getIsArbitraryValue(e, isLabelNumber, isNumber), isArbitraryPosition = (e) => getIsArbitraryValue(e, isLabelPosition, isNever), isArbitraryImage = (e) => getIsArbitraryValue(e, isLabelImage, isImage), isArbitraryShadow = (e) => getIsArbitraryValue(e, isLabelShadow, isShadow), isArbitraryVariable = (e) => arbitraryVariableRegex.test(e), isArbitraryVariableLength = (e) => getIsArbitraryVariable(e, isLabelLength), isArbitraryVariableFamilyName = (e) => getIsArbitraryVariable(e, isLabelFamilyName), isArbitraryVariablePosition = (e) => getIsArbitraryVariable(e, isLabelPosition), isArbitraryVariableSize = (e) => getIsArbitraryVariable(e, isLabelSize), isArbitraryVariableImage = (e) => getIsArbitraryVariable(e, isLabelImage), isArbitraryVariableShadow = (e) => getIsArbitraryVariable(e, isLabelShadow, !0), getIsArbitraryValue = (e, t, n) => {
	let i = arbitraryValueRegex.exec(e);
	return i ? i[1] ? t(i[1]) : n(i[2]) : !1;
}, getIsArbitraryVariable = (e, t, n = !1) => {
	let i = arbitraryVariableRegex.exec(e);
	return i ? i[1] ? t(i[1]) : n : !1;
}, isLabelPosition = (e) => e === "position" || e === "percentage", isLabelImage = (e) => e === "image" || e === "url", isLabelSize = (e) => e === "length" || e === "size" || e === "bg-size", isLabelLength = (e) => e === "length", isLabelNumber = (e) => e === "number", isLabelFamilyName = (e) => e === "family-name", isLabelShadow = (e) => e === "shadow", twMerge = /* @__PURE__ */ createTailwindMerge(() => {
	let e = fromTheme("color"), t = fromTheme("font"), n = fromTheme("text"), i = fromTheme("font-weight"), a = fromTheme("tracking"), o = fromTheme("leading"), s = fromTheme("breakpoint"), c = fromTheme("container"), d = fromTheme("spacing"), f = fromTheme("radius"), g = fromTheme("shadow"), y = fromTheme("inset-shadow"), b = fromTheme("text-shadow"), x = fromTheme("drop-shadow"), S = fromTheme("blur"), C = fromTheme("perspective"), w = fromTheme("aspect"), E = fromTheme("ease"), O = fromTheme("animate"), A = () => [
		"auto",
		"avoid",
		"all",
		"avoid-page",
		"page",
		"left",
		"right",
		"column"
	], j = () => [
		"center",
		"top",
		"bottom",
		"left",
		"right",
		"top-left",
		"left-top",
		"top-right",
		"right-top",
		"bottom-right",
		"right-bottom",
		"bottom-left",
		"left-bottom"
	], M = () => [
		...j(),
		isArbitraryVariable,
		isArbitraryValue
	], F = () => [
		"auto",
		"hidden",
		"clip",
		"visible",
		"scroll"
	], I = () => [
		"auto",
		"contain",
		"none"
	], R = () => [
		isArbitraryVariable,
		isArbitraryValue,
		d
	], zv = () => [
		isFraction,
		"full",
		"auto",
		...R()
	], V = () => [
		isInteger,
		"none",
		"subgrid",
		isArbitraryVariable,
		isArbitraryValue
	], Bv = () => [
		"auto",
		{ span: [
			"full",
			isInteger,
			isArbitraryVariable,
			isArbitraryValue
		] },
		isInteger,
		isArbitraryVariable,
		isArbitraryValue
	], Vv = () => [
		isInteger,
		"auto",
		isArbitraryVariable,
		isArbitraryValue
	], Hv = () => [
		"auto",
		"min",
		"max",
		"fr",
		isArbitraryVariable,
		isArbitraryValue
	], Uv = () => [
		"start",
		"end",
		"center",
		"between",
		"around",
		"evenly",
		"stretch",
		"baseline",
		"center-safe",
		"end-safe"
	], Wv = () => [
		"start",
		"end",
		"center",
		"stretch",
		"center-safe",
		"end-safe"
	], Gv = () => ["auto", ...R()], Kv = () => [
		isFraction,
		"auto",
		"full",
		"dvw",
		"dvh",
		"lvw",
		"lvh",
		"svw",
		"svh",
		"min",
		"max",
		"fit",
		...R()
	], q = () => [
		e,
		isArbitraryVariable,
		isArbitraryValue
	], qv = () => [
		...j(),
		isArbitraryVariablePosition,
		isArbitraryPosition,
		{ position: [isArbitraryVariable, isArbitraryValue] }
	], Jv = () => ["no-repeat", { repeat: [
		"",
		"x",
		"y",
		"space",
		"round"
	] }], Yv = () => [
		"auto",
		"cover",
		"contain",
		isArbitraryVariableSize,
		isArbitrarySize,
		{ size: [isArbitraryVariable, isArbitraryValue] }
	], Xv = () => [
		isPercent,
		isArbitraryVariableLength,
		isArbitraryLength
	], Zv = () => [
		"",
		"none",
		"full",
		f,
		isArbitraryVariable,
		isArbitraryValue
	], Qv = () => [
		"",
		isNumber,
		isArbitraryVariableLength,
		isArbitraryLength
	], $v = () => [
		"solid",
		"dashed",
		"dotted",
		"double"
	], ey = () => [
		"normal",
		"multiply",
		"screen",
		"overlay",
		"darken",
		"lighten",
		"color-dodge",
		"color-burn",
		"hard-light",
		"soft-light",
		"difference",
		"exclusion",
		"hue",
		"saturation",
		"color",
		"luminosity"
	], ty = () => [
		isNumber,
		isPercent,
		isArbitraryVariablePosition,
		isArbitraryPosition
	], ny = () => [
		"",
		"none",
		S,
		isArbitraryVariable,
		isArbitraryValue
	], ry = () => [
		"none",
		isNumber,
		isArbitraryVariable,
		isArbitraryValue
	], iy = () => [
		"none",
		isNumber,
		isArbitraryVariable,
		isArbitraryValue
	], ay = () => [
		isNumber,
		isArbitraryVariable,
		isArbitraryValue
	], oy = () => [
		isFraction,
		"full",
		...R()
	];
	return {
		cacheSize: 500,
		theme: {
			animate: [
				"spin",
				"ping",
				"pulse",
				"bounce"
			],
			aspect: ["video"],
			blur: [isTshirtSize],
			breakpoint: [isTshirtSize],
			color: [isAny],
			container: [isTshirtSize],
			"drop-shadow": [isTshirtSize],
			ease: [
				"in",
				"out",
				"in-out"
			],
			font: [isAnyNonArbitrary],
			"font-weight": [
				"thin",
				"extralight",
				"light",
				"normal",
				"medium",
				"semibold",
				"bold",
				"extrabold",
				"black"
			],
			"inset-shadow": [isTshirtSize],
			leading: [
				"none",
				"tight",
				"snug",
				"normal",
				"relaxed",
				"loose"
			],
			perspective: [
				"dramatic",
				"near",
				"normal",
				"midrange",
				"distant",
				"none"
			],
			radius: [isTshirtSize],
			shadow: [isTshirtSize],
			spacing: ["px", isNumber],
			text: [isTshirtSize],
			"text-shadow": [isTshirtSize],
			tracking: [
				"tighter",
				"tight",
				"normal",
				"wide",
				"wider",
				"widest"
			]
		},
		classGroups: {
			aspect: [{ aspect: [
				"auto",
				"square",
				isFraction,
				isArbitraryValue,
				isArbitraryVariable,
				w
			] }],
			container: ["container"],
			columns: [{ columns: [
				isNumber,
				isArbitraryValue,
				isArbitraryVariable,
				c
			] }],
			"break-after": [{ "break-after": A() }],
			"break-before": [{ "break-before": A() }],
			"break-inside": [{ "break-inside": [
				"auto",
				"avoid",
				"avoid-page",
				"avoid-column"
			] }],
			"box-decoration": [{ "box-decoration": ["slice", "clone"] }],
			box: [{ box: ["border", "content"] }],
			display: [
				"block",
				"inline-block",
				"inline",
				"flex",
				"inline-flex",
				"table",
				"inline-table",
				"table-caption",
				"table-cell",
				"table-column",
				"table-column-group",
				"table-footer-group",
				"table-header-group",
				"table-row-group",
				"table-row",
				"flow-root",
				"grid",
				"inline-grid",
				"contents",
				"list-item",
				"hidden"
			],
			sr: ["sr-only", "not-sr-only"],
			float: [{ float: [
				"right",
				"left",
				"none",
				"start",
				"end"
			] }],
			clear: [{ clear: [
				"left",
				"right",
				"both",
				"none",
				"start",
				"end"
			] }],
			isolation: ["isolate", "isolation-auto"],
			"object-fit": [{ object: [
				"contain",
				"cover",
				"fill",
				"none",
				"scale-down"
			] }],
			"object-position": [{ object: M() }],
			overflow: [{ overflow: F() }],
			"overflow-x": [{ "overflow-x": F() }],
			"overflow-y": [{ "overflow-y": F() }],
			overscroll: [{ overscroll: I() }],
			"overscroll-x": [{ "overscroll-x": I() }],
			"overscroll-y": [{ "overscroll-y": I() }],
			position: [
				"static",
				"fixed",
				"absolute",
				"relative",
				"sticky"
			],
			inset: [{ inset: zv() }],
			"inset-x": [{ "inset-x": zv() }],
			"inset-y": [{ "inset-y": zv() }],
			start: [{ start: zv() }],
			end: [{ end: zv() }],
			top: [{ top: zv() }],
			right: [{ right: zv() }],
			bottom: [{ bottom: zv() }],
			left: [{ left: zv() }],
			visibility: [
				"visible",
				"invisible",
				"collapse"
			],
			z: [{ z: [
				isInteger,
				"auto",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			basis: [{ basis: [
				isFraction,
				"full",
				"auto",
				c,
				...R()
			] }],
			"flex-direction": [{ flex: [
				"row",
				"row-reverse",
				"col",
				"col-reverse"
			] }],
			"flex-wrap": [{ flex: [
				"nowrap",
				"wrap",
				"wrap-reverse"
			] }],
			flex: [{ flex: [
				isNumber,
				isFraction,
				"auto",
				"initial",
				"none",
				isArbitraryValue
			] }],
			grow: [{ grow: [
				"",
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			shrink: [{ shrink: [
				"",
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			order: [{ order: [
				isInteger,
				"first",
				"last",
				"none",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"grid-cols": [{ "grid-cols": V() }],
			"col-start-end": [{ col: Bv() }],
			"col-start": [{ "col-start": Vv() }],
			"col-end": [{ "col-end": Vv() }],
			"grid-rows": [{ "grid-rows": V() }],
			"row-start-end": [{ row: Bv() }],
			"row-start": [{ "row-start": Vv() }],
			"row-end": [{ "row-end": Vv() }],
			"grid-flow": [{ "grid-flow": [
				"row",
				"col",
				"dense",
				"row-dense",
				"col-dense"
			] }],
			"auto-cols": [{ "auto-cols": Hv() }],
			"auto-rows": [{ "auto-rows": Hv() }],
			gap: [{ gap: R() }],
			"gap-x": [{ "gap-x": R() }],
			"gap-y": [{ "gap-y": R() }],
			"justify-content": [{ justify: [...Uv(), "normal"] }],
			"justify-items": [{ "justify-items": [...Wv(), "normal"] }],
			"justify-self": [{ "justify-self": ["auto", ...Wv()] }],
			"align-content": [{ content: ["normal", ...Uv()] }],
			"align-items": [{ items: [...Wv(), { baseline: ["", "last"] }] }],
			"align-self": [{ self: [
				"auto",
				...Wv(),
				{ baseline: ["", "last"] }
			] }],
			"place-content": [{ "place-content": Uv() }],
			"place-items": [{ "place-items": [...Wv(), "baseline"] }],
			"place-self": [{ "place-self": ["auto", ...Wv()] }],
			p: [{ p: R() }],
			px: [{ px: R() }],
			py: [{ py: R() }],
			ps: [{ ps: R() }],
			pe: [{ pe: R() }],
			pt: [{ pt: R() }],
			pr: [{ pr: R() }],
			pb: [{ pb: R() }],
			pl: [{ pl: R() }],
			m: [{ m: Gv() }],
			mx: [{ mx: Gv() }],
			my: [{ my: Gv() }],
			ms: [{ ms: Gv() }],
			me: [{ me: Gv() }],
			mt: [{ mt: Gv() }],
			mr: [{ mr: Gv() }],
			mb: [{ mb: Gv() }],
			ml: [{ ml: Gv() }],
			"space-x": [{ "space-x": R() }],
			"space-x-reverse": ["space-x-reverse"],
			"space-y": [{ "space-y": R() }],
			"space-y-reverse": ["space-y-reverse"],
			size: [{ size: Kv() }],
			w: [{ w: [
				c,
				"screen",
				...Kv()
			] }],
			"min-w": [{ "min-w": [
				c,
				"screen",
				"none",
				...Kv()
			] }],
			"max-w": [{ "max-w": [
				c,
				"screen",
				"none",
				"prose",
				{ screen: [s] },
				...Kv()
			] }],
			h: [{ h: [
				"screen",
				"lh",
				...Kv()
			] }],
			"min-h": [{ "min-h": [
				"screen",
				"lh",
				"none",
				...Kv()
			] }],
			"max-h": [{ "max-h": [
				"screen",
				"lh",
				...Kv()
			] }],
			"font-size": [{ text: [
				"base",
				n,
				isArbitraryVariableLength,
				isArbitraryLength
			] }],
			"font-smoothing": ["antialiased", "subpixel-antialiased"],
			"font-style": ["italic", "not-italic"],
			"font-weight": [{ font: [
				i,
				isArbitraryVariable,
				isArbitraryNumber
			] }],
			"font-stretch": [{ "font-stretch": [
				"ultra-condensed",
				"extra-condensed",
				"condensed",
				"semi-condensed",
				"normal",
				"semi-expanded",
				"expanded",
				"extra-expanded",
				"ultra-expanded",
				isPercent,
				isArbitraryValue
			] }],
			"font-family": [{ font: [
				isArbitraryVariableFamilyName,
				isArbitraryValue,
				t
			] }],
			"fvn-normal": ["normal-nums"],
			"fvn-ordinal": ["ordinal"],
			"fvn-slashed-zero": ["slashed-zero"],
			"fvn-figure": ["lining-nums", "oldstyle-nums"],
			"fvn-spacing": ["proportional-nums", "tabular-nums"],
			"fvn-fraction": ["diagonal-fractions", "stacked-fractions"],
			tracking: [{ tracking: [
				a,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"line-clamp": [{ "line-clamp": [
				isNumber,
				"none",
				isArbitraryVariable,
				isArbitraryNumber
			] }],
			leading: [{ leading: [o, ...R()] }],
			"list-image": [{ "list-image": [
				"none",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"list-style-position": [{ list: ["inside", "outside"] }],
			"list-style-type": [{ list: [
				"disc",
				"decimal",
				"none",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"text-alignment": [{ text: [
				"left",
				"center",
				"right",
				"justify",
				"start",
				"end"
			] }],
			"placeholder-color": [{ placeholder: q() }],
			"text-color": [{ text: q() }],
			"text-decoration": [
				"underline",
				"overline",
				"line-through",
				"no-underline"
			],
			"text-decoration-style": [{ decoration: [...$v(), "wavy"] }],
			"text-decoration-thickness": [{ decoration: [
				isNumber,
				"from-font",
				"auto",
				isArbitraryVariable,
				isArbitraryLength
			] }],
			"text-decoration-color": [{ decoration: q() }],
			"underline-offset": [{ "underline-offset": [
				isNumber,
				"auto",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"text-transform": [
				"uppercase",
				"lowercase",
				"capitalize",
				"normal-case"
			],
			"text-overflow": [
				"truncate",
				"text-ellipsis",
				"text-clip"
			],
			"text-wrap": [{ text: [
				"wrap",
				"nowrap",
				"balance",
				"pretty"
			] }],
			indent: [{ indent: R() }],
			"vertical-align": [{ align: [
				"baseline",
				"top",
				"middle",
				"bottom",
				"text-top",
				"text-bottom",
				"sub",
				"super",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			whitespace: [{ whitespace: [
				"normal",
				"nowrap",
				"pre",
				"pre-line",
				"pre-wrap",
				"break-spaces"
			] }],
			break: [{ break: [
				"normal",
				"words",
				"all",
				"keep"
			] }],
			wrap: [{ wrap: [
				"break-word",
				"anywhere",
				"normal"
			] }],
			hyphens: [{ hyphens: [
				"none",
				"manual",
				"auto"
			] }],
			content: [{ content: [
				"none",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"bg-attachment": [{ bg: [
				"fixed",
				"local",
				"scroll"
			] }],
			"bg-clip": [{ "bg-clip": [
				"border",
				"padding",
				"content",
				"text"
			] }],
			"bg-origin": [{ "bg-origin": [
				"border",
				"padding",
				"content"
			] }],
			"bg-position": [{ bg: qv() }],
			"bg-repeat": [{ bg: Jv() }],
			"bg-size": [{ bg: Yv() }],
			"bg-image": [{ bg: [
				"none",
				{
					linear: [
						{ to: [
							"t",
							"tr",
							"r",
							"br",
							"b",
							"bl",
							"l",
							"tl"
						] },
						isInteger,
						isArbitraryVariable,
						isArbitraryValue
					],
					radial: [
						"",
						isArbitraryVariable,
						isArbitraryValue
					],
					conic: [
						isInteger,
						isArbitraryVariable,
						isArbitraryValue
					]
				},
				isArbitraryVariableImage,
				isArbitraryImage
			] }],
			"bg-color": [{ bg: q() }],
			"gradient-from-pos": [{ from: Xv() }],
			"gradient-via-pos": [{ via: Xv() }],
			"gradient-to-pos": [{ to: Xv() }],
			"gradient-from": [{ from: q() }],
			"gradient-via": [{ via: q() }],
			"gradient-to": [{ to: q() }],
			rounded: [{ rounded: Zv() }],
			"rounded-s": [{ "rounded-s": Zv() }],
			"rounded-e": [{ "rounded-e": Zv() }],
			"rounded-t": [{ "rounded-t": Zv() }],
			"rounded-r": [{ "rounded-r": Zv() }],
			"rounded-b": [{ "rounded-b": Zv() }],
			"rounded-l": [{ "rounded-l": Zv() }],
			"rounded-ss": [{ "rounded-ss": Zv() }],
			"rounded-se": [{ "rounded-se": Zv() }],
			"rounded-ee": [{ "rounded-ee": Zv() }],
			"rounded-es": [{ "rounded-es": Zv() }],
			"rounded-tl": [{ "rounded-tl": Zv() }],
			"rounded-tr": [{ "rounded-tr": Zv() }],
			"rounded-br": [{ "rounded-br": Zv() }],
			"rounded-bl": [{ "rounded-bl": Zv() }],
			"border-w": [{ border: Qv() }],
			"border-w-x": [{ "border-x": Qv() }],
			"border-w-y": [{ "border-y": Qv() }],
			"border-w-s": [{ "border-s": Qv() }],
			"border-w-e": [{ "border-e": Qv() }],
			"border-w-t": [{ "border-t": Qv() }],
			"border-w-r": [{ "border-r": Qv() }],
			"border-w-b": [{ "border-b": Qv() }],
			"border-w-l": [{ "border-l": Qv() }],
			"divide-x": [{ "divide-x": Qv() }],
			"divide-x-reverse": ["divide-x-reverse"],
			"divide-y": [{ "divide-y": Qv() }],
			"divide-y-reverse": ["divide-y-reverse"],
			"border-style": [{ border: [
				...$v(),
				"hidden",
				"none"
			] }],
			"divide-style": [{ divide: [
				...$v(),
				"hidden",
				"none"
			] }],
			"border-color": [{ border: q() }],
			"border-color-x": [{ "border-x": q() }],
			"border-color-y": [{ "border-y": q() }],
			"border-color-s": [{ "border-s": q() }],
			"border-color-e": [{ "border-e": q() }],
			"border-color-t": [{ "border-t": q() }],
			"border-color-r": [{ "border-r": q() }],
			"border-color-b": [{ "border-b": q() }],
			"border-color-l": [{ "border-l": q() }],
			"divide-color": [{ divide: q() }],
			"outline-style": [{ outline: [
				...$v(),
				"none",
				"hidden"
			] }],
			"outline-offset": [{ "outline-offset": [
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"outline-w": [{ outline: [
				"",
				isNumber,
				isArbitraryVariableLength,
				isArbitraryLength
			] }],
			"outline-color": [{ outline: q() }],
			shadow: [{ shadow: [
				"",
				"none",
				g,
				isArbitraryVariableShadow,
				isArbitraryShadow
			] }],
			"shadow-color": [{ shadow: q() }],
			"inset-shadow": [{ "inset-shadow": [
				"none",
				y,
				isArbitraryVariableShadow,
				isArbitraryShadow
			] }],
			"inset-shadow-color": [{ "inset-shadow": q() }],
			"ring-w": [{ ring: Qv() }],
			"ring-w-inset": ["ring-inset"],
			"ring-color": [{ ring: q() }],
			"ring-offset-w": [{ "ring-offset": [isNumber, isArbitraryLength] }],
			"ring-offset-color": [{ "ring-offset": q() }],
			"inset-ring-w": [{ "inset-ring": Qv() }],
			"inset-ring-color": [{ "inset-ring": q() }],
			"text-shadow": [{ "text-shadow": [
				"none",
				b,
				isArbitraryVariableShadow,
				isArbitraryShadow
			] }],
			"text-shadow-color": [{ "text-shadow": q() }],
			opacity: [{ opacity: [
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"mix-blend": [{ "mix-blend": [
				...ey(),
				"plus-darker",
				"plus-lighter"
			] }],
			"bg-blend": [{ "bg-blend": ey() }],
			"mask-clip": [{ "mask-clip": [
				"border",
				"padding",
				"content",
				"fill",
				"stroke",
				"view"
			] }, "mask-no-clip"],
			"mask-composite": [{ mask: [
				"add",
				"subtract",
				"intersect",
				"exclude"
			] }],
			"mask-image-linear-pos": [{ "mask-linear": [isNumber] }],
			"mask-image-linear-from-pos": [{ "mask-linear-from": ty() }],
			"mask-image-linear-to-pos": [{ "mask-linear-to": ty() }],
			"mask-image-linear-from-color": [{ "mask-linear-from": q() }],
			"mask-image-linear-to-color": [{ "mask-linear-to": q() }],
			"mask-image-t-from-pos": [{ "mask-t-from": ty() }],
			"mask-image-t-to-pos": [{ "mask-t-to": ty() }],
			"mask-image-t-from-color": [{ "mask-t-from": q() }],
			"mask-image-t-to-color": [{ "mask-t-to": q() }],
			"mask-image-r-from-pos": [{ "mask-r-from": ty() }],
			"mask-image-r-to-pos": [{ "mask-r-to": ty() }],
			"mask-image-r-from-color": [{ "mask-r-from": q() }],
			"mask-image-r-to-color": [{ "mask-r-to": q() }],
			"mask-image-b-from-pos": [{ "mask-b-from": ty() }],
			"mask-image-b-to-pos": [{ "mask-b-to": ty() }],
			"mask-image-b-from-color": [{ "mask-b-from": q() }],
			"mask-image-b-to-color": [{ "mask-b-to": q() }],
			"mask-image-l-from-pos": [{ "mask-l-from": ty() }],
			"mask-image-l-to-pos": [{ "mask-l-to": ty() }],
			"mask-image-l-from-color": [{ "mask-l-from": q() }],
			"mask-image-l-to-color": [{ "mask-l-to": q() }],
			"mask-image-x-from-pos": [{ "mask-x-from": ty() }],
			"mask-image-x-to-pos": [{ "mask-x-to": ty() }],
			"mask-image-x-from-color": [{ "mask-x-from": q() }],
			"mask-image-x-to-color": [{ "mask-x-to": q() }],
			"mask-image-y-from-pos": [{ "mask-y-from": ty() }],
			"mask-image-y-to-pos": [{ "mask-y-to": ty() }],
			"mask-image-y-from-color": [{ "mask-y-from": q() }],
			"mask-image-y-to-color": [{ "mask-y-to": q() }],
			"mask-image-radial": [{ "mask-radial": [isArbitraryVariable, isArbitraryValue] }],
			"mask-image-radial-from-pos": [{ "mask-radial-from": ty() }],
			"mask-image-radial-to-pos": [{ "mask-radial-to": ty() }],
			"mask-image-radial-from-color": [{ "mask-radial-from": q() }],
			"mask-image-radial-to-color": [{ "mask-radial-to": q() }],
			"mask-image-radial-shape": [{ "mask-radial": ["circle", "ellipse"] }],
			"mask-image-radial-size": [{ "mask-radial": [{
				closest: ["side", "corner"],
				farthest: ["side", "corner"]
			}] }],
			"mask-image-radial-pos": [{ "mask-radial-at": j() }],
			"mask-image-conic-pos": [{ "mask-conic": [isNumber] }],
			"mask-image-conic-from-pos": [{ "mask-conic-from": ty() }],
			"mask-image-conic-to-pos": [{ "mask-conic-to": ty() }],
			"mask-image-conic-from-color": [{ "mask-conic-from": q() }],
			"mask-image-conic-to-color": [{ "mask-conic-to": q() }],
			"mask-mode": [{ mask: [
				"alpha",
				"luminance",
				"match"
			] }],
			"mask-origin": [{ "mask-origin": [
				"border",
				"padding",
				"content",
				"fill",
				"stroke",
				"view"
			] }],
			"mask-position": [{ mask: qv() }],
			"mask-repeat": [{ mask: Jv() }],
			"mask-size": [{ mask: Yv() }],
			"mask-type": [{ "mask-type": ["alpha", "luminance"] }],
			"mask-image": [{ mask: [
				"none",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			filter: [{ filter: [
				"",
				"none",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			blur: [{ blur: ny() }],
			brightness: [{ brightness: [
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			contrast: [{ contrast: [
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"drop-shadow": [{ "drop-shadow": [
				"",
				"none",
				x,
				isArbitraryVariableShadow,
				isArbitraryShadow
			] }],
			"drop-shadow-color": [{ "drop-shadow": q() }],
			grayscale: [{ grayscale: [
				"",
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"hue-rotate": [{ "hue-rotate": [
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			invert: [{ invert: [
				"",
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			saturate: [{ saturate: [
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			sepia: [{ sepia: [
				"",
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"backdrop-filter": [{ "backdrop-filter": [
				"",
				"none",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"backdrop-blur": [{ "backdrop-blur": ny() }],
			"backdrop-brightness": [{ "backdrop-brightness": [
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"backdrop-contrast": [{ "backdrop-contrast": [
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"backdrop-grayscale": [{ "backdrop-grayscale": [
				"",
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"backdrop-hue-rotate": [{ "backdrop-hue-rotate": [
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"backdrop-invert": [{ "backdrop-invert": [
				"",
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"backdrop-opacity": [{ "backdrop-opacity": [
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"backdrop-saturate": [{ "backdrop-saturate": [
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"backdrop-sepia": [{ "backdrop-sepia": [
				"",
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"border-collapse": [{ border: ["collapse", "separate"] }],
			"border-spacing": [{ "border-spacing": R() }],
			"border-spacing-x": [{ "border-spacing-x": R() }],
			"border-spacing-y": [{ "border-spacing-y": R() }],
			"table-layout": [{ table: ["auto", "fixed"] }],
			caption: [{ caption: ["top", "bottom"] }],
			transition: [{ transition: [
				"",
				"all",
				"colors",
				"opacity",
				"shadow",
				"transform",
				"none",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"transition-behavior": [{ transition: ["normal", "discrete"] }],
			duration: [{ duration: [
				isNumber,
				"initial",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			ease: [{ ease: [
				"linear",
				"initial",
				E,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			delay: [{ delay: [
				isNumber,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			animate: [{ animate: [
				"none",
				O,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			backface: [{ backface: ["hidden", "visible"] }],
			perspective: [{ perspective: [
				C,
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"perspective-origin": [{ "perspective-origin": M() }],
			rotate: [{ rotate: ry() }],
			"rotate-x": [{ "rotate-x": ry() }],
			"rotate-y": [{ "rotate-y": ry() }],
			"rotate-z": [{ "rotate-z": ry() }],
			scale: [{ scale: iy() }],
			"scale-x": [{ "scale-x": iy() }],
			"scale-y": [{ "scale-y": iy() }],
			"scale-z": [{ "scale-z": iy() }],
			"scale-3d": ["scale-3d"],
			skew: [{ skew: ay() }],
			"skew-x": [{ "skew-x": ay() }],
			"skew-y": [{ "skew-y": ay() }],
			transform: [{ transform: [
				isArbitraryVariable,
				isArbitraryValue,
				"",
				"none",
				"gpu",
				"cpu"
			] }],
			"transform-origin": [{ origin: M() }],
			"transform-style": [{ transform: ["3d", "flat"] }],
			translate: [{ translate: oy() }],
			"translate-x": [{ "translate-x": oy() }],
			"translate-y": [{ "translate-y": oy() }],
			"translate-z": [{ "translate-z": oy() }],
			"translate-none": ["translate-none"],
			accent: [{ accent: q() }],
			appearance: [{ appearance: ["none", "auto"] }],
			"caret-color": [{ caret: q() }],
			"color-scheme": [{ scheme: [
				"normal",
				"dark",
				"light",
				"light-dark",
				"only-dark",
				"only-light"
			] }],
			cursor: [{ cursor: [
				"auto",
				"default",
				"pointer",
				"wait",
				"text",
				"move",
				"help",
				"not-allowed",
				"none",
				"context-menu",
				"progress",
				"cell",
				"crosshair",
				"vertical-text",
				"alias",
				"copy",
				"no-drop",
				"grab",
				"grabbing",
				"all-scroll",
				"col-resize",
				"row-resize",
				"n-resize",
				"e-resize",
				"s-resize",
				"w-resize",
				"ne-resize",
				"nw-resize",
				"se-resize",
				"sw-resize",
				"ew-resize",
				"ns-resize",
				"nesw-resize",
				"nwse-resize",
				"zoom-in",
				"zoom-out",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			"field-sizing": [{ "field-sizing": ["fixed", "content"] }],
			"pointer-events": [{ "pointer-events": ["auto", "none"] }],
			resize: [{ resize: [
				"none",
				"",
				"y",
				"x"
			] }],
			"scroll-behavior": [{ scroll: ["auto", "smooth"] }],
			"scroll-m": [{ "scroll-m": R() }],
			"scroll-mx": [{ "scroll-mx": R() }],
			"scroll-my": [{ "scroll-my": R() }],
			"scroll-ms": [{ "scroll-ms": R() }],
			"scroll-me": [{ "scroll-me": R() }],
			"scroll-mt": [{ "scroll-mt": R() }],
			"scroll-mr": [{ "scroll-mr": R() }],
			"scroll-mb": [{ "scroll-mb": R() }],
			"scroll-ml": [{ "scroll-ml": R() }],
			"scroll-p": [{ "scroll-p": R() }],
			"scroll-px": [{ "scroll-px": R() }],
			"scroll-py": [{ "scroll-py": R() }],
			"scroll-ps": [{ "scroll-ps": R() }],
			"scroll-pe": [{ "scroll-pe": R() }],
			"scroll-pt": [{ "scroll-pt": R() }],
			"scroll-pr": [{ "scroll-pr": R() }],
			"scroll-pb": [{ "scroll-pb": R() }],
			"scroll-pl": [{ "scroll-pl": R() }],
			"snap-align": [{ snap: [
				"start",
				"end",
				"center",
				"align-none"
			] }],
			"snap-stop": [{ snap: ["normal", "always"] }],
			"snap-type": [{ snap: [
				"none",
				"x",
				"y",
				"both"
			] }],
			"snap-strictness": [{ snap: ["mandatory", "proximity"] }],
			touch: [{ touch: [
				"auto",
				"none",
				"manipulation"
			] }],
			"touch-x": [{ "touch-pan": [
				"x",
				"left",
				"right"
			] }],
			"touch-y": [{ "touch-pan": [
				"y",
				"up",
				"down"
			] }],
			"touch-pz": ["touch-pinch-zoom"],
			select: [{ select: [
				"none",
				"text",
				"all",
				"auto"
			] }],
			"will-change": [{ "will-change": [
				"auto",
				"scroll",
				"contents",
				"transform",
				isArbitraryVariable,
				isArbitraryValue
			] }],
			fill: [{ fill: ["none", ...q()] }],
			"stroke-w": [{ stroke: [
				isNumber,
				isArbitraryVariableLength,
				isArbitraryLength,
				isArbitraryNumber
			] }],
			stroke: [{ stroke: ["none", ...q()] }],
			"forced-color-adjust": [{ "forced-color-adjust": ["auto", "none"] }]
		},
		conflictingClassGroups: {
			overflow: ["overflow-x", "overflow-y"],
			overscroll: ["overscroll-x", "overscroll-y"],
			inset: [
				"inset-x",
				"inset-y",
				"start",
				"end",
				"top",
				"right",
				"bottom",
				"left"
			],
			"inset-x": ["right", "left"],
			"inset-y": ["top", "bottom"],
			flex: [
				"basis",
				"grow",
				"shrink"
			],
			gap: ["gap-x", "gap-y"],
			p: [
				"px",
				"py",
				"ps",
				"pe",
				"pt",
				"pr",
				"pb",
				"pl"
			],
			px: ["pr", "pl"],
			py: ["pt", "pb"],
			m: [
				"mx",
				"my",
				"ms",
				"me",
				"mt",
				"mr",
				"mb",
				"ml"
			],
			mx: ["mr", "ml"],
			my: ["mt", "mb"],
			size: ["w", "h"],
			"font-size": ["leading"],
			"fvn-normal": [
				"fvn-ordinal",
				"fvn-slashed-zero",
				"fvn-figure",
				"fvn-spacing",
				"fvn-fraction"
			],
			"fvn-ordinal": ["fvn-normal"],
			"fvn-slashed-zero": ["fvn-normal"],
			"fvn-figure": ["fvn-normal"],
			"fvn-spacing": ["fvn-normal"],
			"fvn-fraction": ["fvn-normal"],
			"line-clamp": ["display", "overflow"],
			rounded: [
				"rounded-s",
				"rounded-e",
				"rounded-t",
				"rounded-r",
				"rounded-b",
				"rounded-l",
				"rounded-ss",
				"rounded-se",
				"rounded-ee",
				"rounded-es",
				"rounded-tl",
				"rounded-tr",
				"rounded-br",
				"rounded-bl"
			],
			"rounded-s": ["rounded-ss", "rounded-es"],
			"rounded-e": ["rounded-se", "rounded-ee"],
			"rounded-t": ["rounded-tl", "rounded-tr"],
			"rounded-r": ["rounded-tr", "rounded-br"],
			"rounded-b": ["rounded-br", "rounded-bl"],
			"rounded-l": ["rounded-tl", "rounded-bl"],
			"border-spacing": ["border-spacing-x", "border-spacing-y"],
			"border-w": [
				"border-w-x",
				"border-w-y",
				"border-w-s",
				"border-w-e",
				"border-w-t",
				"border-w-r",
				"border-w-b",
				"border-w-l"
			],
			"border-w-x": ["border-w-r", "border-w-l"],
			"border-w-y": ["border-w-t", "border-w-b"],
			"border-color": [
				"border-color-x",
				"border-color-y",
				"border-color-s",
				"border-color-e",
				"border-color-t",
				"border-color-r",
				"border-color-b",
				"border-color-l"
			],
			"border-color-x": ["border-color-r", "border-color-l"],
			"border-color-y": ["border-color-t", "border-color-b"],
			translate: [
				"translate-x",
				"translate-y",
				"translate-none"
			],
			"translate-none": [
				"translate",
				"translate-x",
				"translate-y",
				"translate-z"
			],
			"scroll-m": [
				"scroll-mx",
				"scroll-my",
				"scroll-ms",
				"scroll-me",
				"scroll-mt",
				"scroll-mr",
				"scroll-mb",
				"scroll-ml"
			],
			"scroll-mx": ["scroll-mr", "scroll-ml"],
			"scroll-my": ["scroll-mt", "scroll-mb"],
			"scroll-p": [
				"scroll-px",
				"scroll-py",
				"scroll-ps",
				"scroll-pe",
				"scroll-pt",
				"scroll-pr",
				"scroll-pb",
				"scroll-pl"
			],
			"scroll-px": ["scroll-pr", "scroll-pl"],
			"scroll-py": ["scroll-pt", "scroll-pb"],
			touch: [
				"touch-x",
				"touch-y",
				"touch-pz"
			],
			"touch-x": ["touch"],
			"touch-y": ["touch"],
			"touch-pz": ["touch"]
		},
		conflictingClassGroupModifiers: { "font-size": ["leading"] },
		orderSensitiveModifiers: [
			"*",
			"**",
			"after",
			"backdrop",
			"before",
			"details-content",
			"file",
			"first-letter",
			"first-line",
			"marker",
			"placeholder",
			"selection"
		]
	};
});
function cn(...e) {
	return twMerge(clsx(e));
}
function splitIdentifier(e) {
	return e.replace(/_/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").trim().split(/\s+/).map((e) => e.toLowerCase());
}
var falsyToString = (e) => typeof e == "boolean" ? `${e}` : e === 0 ? "0" : e;
const cx = clsx, cva = (e, t) => (n) => {
	if (t?.variants == null) return cx(e, n?.class, n?.className);
	let { variants: i, defaultVariants: a } = t, o = Object.keys(i).map((e) => {
		let t = n?.[e], o = a?.[e];
		if (t === null) return null;
		let s = falsyToString(t) || falsyToString(o);
		return i[e][s];
	}), s = n && Object.entries(n).reduce((e, t) => {
		let [n, i] = t;
		return i === void 0 || (e[n] = i), e;
	}, {}), c = t?.compoundVariants?.reduce((e, t) => {
		let { class: n, className: i,...o } = t;
		return Object.entries(o).every((e) => {
			let [t, n] = e;
			return Array.isArray(n) ? n.includes({
				...a,
				...s
			}[t]) : {
				...a,
				...s
			}[t] === n;
		}) ? [
			...e,
			n,
			i
		] : e;
	}, []);
	return cx(e, o, c, n?.class, n?.className);
};
function setRef$1(e, t) {
	if (typeof e == "function") return e(t);
	e != null && (e.current = t);
}
function composeRefs$1(...e) {
	return (t) => {
		let n = !1, i = e.map((e) => {
			let i = setRef$1(e, t);
			return !n && typeof i == "function" && (n = !0), i;
		});
		if (n) return () => {
			for (let t = 0; t < i.length; t++) {
				let n = i[t];
				typeof n == "function" ? n() : setRef$1(e[t], null);
			}
		};
	};
}
function useComposedRefs$1(...e) {
	return React$1.useCallback(composeRefs$1(...e), e);
}
var REACT_LAZY_TYPE = Symbol.for("react.lazy"), use = React$1.use;
function isPromiseLike(e) {
	return typeof e == "object" && !!e && "then" in e;
}
function isLazyComponent(e) {
	return typeof e == "object" && !!e && "$$typeof" in e && e.$$typeof === REACT_LAZY_TYPE && "_payload" in e && isPromiseLike(e._payload);
}
/* @__NO_SIDE_EFFECTS__ */
function createSlot$1(e) {
	let t = /* @__PURE__ */ createSlotClone$1(e), n = React$1.forwardRef((e, n) => {
		let { children: i,...a } = e;
		isLazyComponent(i) && typeof use == "function" && (i = use(i._payload));
		let o = React$1.Children.toArray(i), s = o.find(isSlottable$1);
		if (s) {
			let e = s.props.children, i = o.map((t) => t === s ? React$1.Children.count(e) > 1 ? React$1.Children.only(null) : React$1.isValidElement(e) ? e.props.children : null : t);
			return /* @__PURE__ */ jsx(t, {
				...a,
				ref: n,
				children: React$1.isValidElement(e) ? React$1.cloneElement(e, void 0, i) : null
			});
		}
		return /* @__PURE__ */ jsx(t, {
			...a,
			ref: n,
			children: i
		});
	});
	return n.displayName = `${e}.Slot`, n;
}
var Slot = /* @__PURE__ */ createSlot$1("Slot");
/* @__NO_SIDE_EFFECTS__ */
function createSlotClone$1(e) {
	let t = React$1.forwardRef((e, t) => {
		let { children: n,...i } = e;
		if (isLazyComponent(n) && typeof use == "function" && (n = use(n._payload)), React$1.isValidElement(n)) {
			let e = getElementRef$2(n), a = mergeProps$1(i, n.props);
			return n.type !== React$1.Fragment && (a.ref = t ? composeRefs$1(t, e) : e), React$1.cloneElement(n, a);
		}
		return React$1.Children.count(n) > 1 ? React$1.Children.only(null) : null;
	});
	return t.displayName = `${e}.SlotClone`, t;
}
var SLOTTABLE_IDENTIFIER$1 = Symbol("radix.slottable");
function isSlottable$1(e) {
	return React$1.isValidElement(e) && typeof e.type == "function" && "__radixId" in e.type && e.type.__radixId === SLOTTABLE_IDENTIFIER$1;
}
function mergeProps$1(e, t) {
	let n = { ...t };
	for (let i in t) {
		let a = e[i], o = t[i];
		/^on[A-Z]/.test(i) ? a && o ? n[i] = (...e) => {
			let t = o(...e);
			return a(...e), t;
		} : a && (n[i] = a) : i === "style" ? n[i] = {
			...a,
			...o
		} : i === "className" && (n[i] = [a, o].filter(Boolean).join(" "));
	}
	return {
		...e,
		...n
	};
}
function getElementRef$2(e) {
	let t = Object.getOwnPropertyDescriptor(e.props, "ref")?.get, n = t && "isReactWarning" in t && t.isReactWarning;
	return n ? e.ref : (t = Object.getOwnPropertyDescriptor(e, "ref")?.get, n = t && "isReactWarning" in t && t.isReactWarning, n ? e.props.ref : e.props.ref || e.ref);
}
var buttonVariants = cva("cursor-pointer 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/40 aria-invalid:border-destructive", {
	variants: {
		variant: {
			default: "bg-primary text-primary-foreground hover:bg-primary/90",
			destructive: "!text-white hover:bg-destructive/90 focus-visible:ring-destructive/40 bg-destructive/60",
			outline: "border shadow-sm hover:text-accent-foreground bg-input/30 border-input hover:bg-input/50",
			secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
			ghost: "hover:text-accent-foreground hover:bg-accent/50",
			link: "text-primary underline-offset-4 hover:underline"
		},
		size: {
			default: "h-9 px-4 py-2 has-[>svg]:px-3",
			sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
			lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
			icon: "size-9",
			"icon-sm": "size-8",
			"icon-lg": "size-10"
		}
	},
	defaultVariants: {
		variant: "default",
		size: "default"
	}
});
function Button({ className: e, variant: t, size: n, asChild: i = !1,...a }) {
	return /* @__PURE__ */ jsx(i ? Slot : "button", {
		"data-slot": "button",
		className: cn(buttonVariants({
			variant: t,
			size: n,
			className: e
		})),
		...a
	});
}
typeof window < "u" && window.document && window.document.createElement;
function composeEventHandlers(e, t, { checkForDefaultPrevented: n = !0 } = {}) {
	return function(i) {
		if (e?.(i), n === !1 || !i.defaultPrevented) return t?.(i);
	};
}
function createContext2(e, t) {
	let n = React$1.createContext(t), i = (e) => {
		let { children: t,...i } = e, a = React$1.useMemo(() => i, Object.values(i));
		return /* @__PURE__ */ jsx(n.Provider, {
			value: a,
			children: t
		});
	};
	i.displayName = e + "Provider";
	function a(i) {
		let a = React$1.useContext(n);
		if (a) return a;
		if (t !== void 0) return t;
		throw Error(`\`${i}\` must be used within \`${e}\``);
	}
	return [i, a];
}
function createContextScope(e, t = []) {
	let n = [];
	function i(t, i) {
		let a = React$1.createContext(i), o = n.length;
		n = [...n, i];
		let s = (t) => {
			let { scope: n, children: i,...s } = t, c = n?.[e]?.[o] || a, d = React$1.useMemo(() => s, Object.values(s));
			return /* @__PURE__ */ jsx(c.Provider, {
				value: d,
				children: i
			});
		};
		s.displayName = t + "Provider";
		function c(n, s) {
			let c = s?.[e]?.[o] || a, d = React$1.useContext(c);
			if (d) return d;
			if (i !== void 0) return i;
			throw Error(`\`${n}\` must be used within \`${t}\``);
		}
		return [s, c];
	}
	let a = () => {
		let t = n.map((e) => React$1.createContext(e));
		return function(n) {
			let i = n?.[e] || t;
			return React$1.useMemo(() => ({ [`__scope${e}`]: {
				...n,
				[e]: i
			} }), [n, i]);
		};
	};
	return a.scopeName = e, [i, composeContextScopes(a, ...t)];
}
function composeContextScopes(...e) {
	let t = e[0];
	if (e.length === 1) return t;
	let n = () => {
		let n = e.map((e) => ({
			useScope: e(),
			scopeName: e.scopeName
		}));
		return function(e) {
			let i = n.reduce((t, { useScope: n, scopeName: i }) => {
				let a = n(e)[`__scope${i}`];
				return {
					...t,
					...a
				};
			}, {});
			return React$1.useMemo(() => ({ [`__scope${t.scopeName}`]: i }), [i]);
		};
	};
	return n.scopeName = t.scopeName, n;
}
var useLayoutEffect2 = globalThis?.document ? React$1.useLayoutEffect : () => {}, useReactId = React$1.useId || (() => void 0), count$1 = 0;
function useId$1(e) {
	let [t, n] = React$1.useState(useReactId());
	return useLayoutEffect2(() => {
		e || n((e) => e ?? String(count$1++));
	}, [e]), e || (t ? `radix-${t}` : "");
}
var useInsertionEffect = React$1.useInsertionEffect || useLayoutEffect2;
function useControllableState({ prop: e, defaultProp: t, onChange: n = () => {}, caller: i }) {
	let [a, o, s] = useUncontrolledState({
		defaultProp: t,
		onChange: n
	}), c = e !== void 0, d = c ? e : a;
	{
		let t = React$1.useRef(e !== void 0);
		React$1.useEffect(() => {
			let e = t.current;
			if (e !== c) {
				let t = e ? "controlled" : "uncontrolled", n = c ? "controlled" : "uncontrolled";
				console.warn(`${i} is changing from ${t} to ${n}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`);
			}
			t.current = c;
		}, [c, i]);
	}
	let f = React$1.useCallback((t) => {
		if (c) {
			let n = isFunction$2(t) ? t(e) : t;
			n !== e && s.current?.(n);
		} else o(t);
	}, [
		c,
		e,
		o,
		s
	]);
	return [d, f];
}
function useUncontrolledState({ defaultProp: e, onChange: t }) {
	let [n, i] = React$1.useState(e), a = React$1.useRef(n), o = React$1.useRef(t);
	return useInsertionEffect(() => {
		o.current = t;
	}, [t]), React$1.useEffect(() => {
		a.current !== n && (o.current?.(n), a.current = n);
	}, [n, a]), [
		n,
		i,
		o
	];
}
function isFunction$2(e) {
	return typeof e == "function";
}
/* @__NO_SIDE_EFFECTS__ */
function createSlot(e) {
	let t = /* @__PURE__ */ createSlotClone(e), n = React$1.forwardRef((e, n) => {
		let { children: i,...a } = e, o = React$1.Children.toArray(i), s = o.find(isSlottable);
		if (s) {
			let e = s.props.children, i = o.map((t) => t === s ? React$1.Children.count(e) > 1 ? React$1.Children.only(null) : React$1.isValidElement(e) ? e.props.children : null : t);
			return /* @__PURE__ */ jsx(t, {
				...a,
				ref: n,
				children: React$1.isValidElement(e) ? React$1.cloneElement(e, void 0, i) : null
			});
		}
		return /* @__PURE__ */ jsx(t, {
			...a,
			ref: n,
			children: i
		});
	});
	return n.displayName = `${e}.Slot`, n;
}
/* @__NO_SIDE_EFFECTS__ */
function createSlotClone(e) {
	let t = React$1.forwardRef((e, t) => {
		let { children: n,...i } = e;
		if (React$1.isValidElement(n)) {
			let e = getElementRef$1(n), a = mergeProps(i, n.props);
			return n.type !== React$1.Fragment && (a.ref = t ? composeRefs$1(t, e) : e), React$1.cloneElement(n, a);
		}
		return React$1.Children.count(n) > 1 ? React$1.Children.only(null) : null;
	});
	return t.displayName = `${e}.SlotClone`, t;
}
var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
/* @__NO_SIDE_EFFECTS__ */
function createSlottable(e) {
	let t = ({ children: e }) => /* @__PURE__ */ jsx(Fragment$1, { children: e });
	return t.displayName = `${e}.Slottable`, t.__radixId = SLOTTABLE_IDENTIFIER, t;
}
function isSlottable(e) {
	return React$1.isValidElement(e) && typeof e.type == "function" && "__radixId" in e.type && e.type.__radixId === SLOTTABLE_IDENTIFIER;
}
function mergeProps(e, t) {
	let n = { ...t };
	for (let i in t) {
		let a = e[i], o = t[i];
		/^on[A-Z]/.test(i) ? a && o ? n[i] = (...e) => {
			let t = o(...e);
			return a(...e), t;
		} : a && (n[i] = a) : i === "style" ? n[i] = {
			...a,
			...o
		} : i === "className" && (n[i] = [a, o].filter(Boolean).join(" "));
	}
	return {
		...e,
		...n
	};
}
function getElementRef$1(e) {
	let t = Object.getOwnPropertyDescriptor(e.props, "ref")?.get, n = t && "isReactWarning" in t && t.isReactWarning;
	return n ? e.ref : (t = Object.getOwnPropertyDescriptor(e, "ref")?.get, n = t && "isReactWarning" in t && t.isReactWarning, n ? e.props.ref : e.props.ref || e.ref);
}
var Primitive = [
	"a",
	"button",
	"div",
	"form",
	"h2",
	"h3",
	"img",
	"input",
	"label",
	"li",
	"nav",
	"ol",
	"p",
	"select",
	"span",
	"svg",
	"ul"
].reduce((e, t) => {
	let n = /* @__PURE__ */ createSlot(`Primitive.${t}`), i = React$1.forwardRef((e, i) => {
		let { asChild: a,...o } = e, s = a ? n : t;
		return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ jsx(s, {
			...o,
			ref: i
		});
	});
	return i.displayName = `Primitive.${t}`, {
		...e,
		[t]: i
	};
}, {});
function dispatchDiscreteCustomEvent(e, t) {
	e && ReactDOM$2.flushSync(() => e.dispatchEvent(t));
}
function useCallbackRef(e) {
	let t = React$1.useRef(e);
	return React$1.useEffect(() => {
		t.current = e;
	}), React$1.useMemo(() => (...e) => t.current?.(...e), []);
}
function useEscapeKeydown(e, t = globalThis?.document) {
	let n = useCallbackRef(e);
	React$1.useEffect(() => {
		let e = (e) => {
			e.key === "Escape" && n(e);
		};
		return t.addEventListener("keydown", e, { capture: !0 }), () => t.removeEventListener("keydown", e, { capture: !0 });
	}, [n, t]);
}
var DISMISSABLE_LAYER_NAME = "DismissableLayer", CONTEXT_UPDATE = "dismissableLayer.update", POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside", FOCUS_OUTSIDE = "dismissableLayer.focusOutside", originalBodyPointerEvents, DismissableLayerContext = React$1.createContext({
	layers: /* @__PURE__ */ new Set(),
	layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
	branches: /* @__PURE__ */ new Set()
}), DismissableLayer = React$1.forwardRef((e, t) => {
	let { disableOutsidePointerEvents: n = !1, onEscapeKeyDown: i, onPointerDownOutside: a, onFocusOutside: o, onInteractOutside: s, onDismiss: c,...d } = e, f = React$1.useContext(DismissableLayerContext), [g, y] = React$1.useState(null), b = g?.ownerDocument ?? globalThis?.document, [, x] = React$1.useState({}), S = useComposedRefs$1(t, (e) => y(e)), C = Array.from(f.layers), [w] = [...f.layersWithOutsidePointerEventsDisabled].slice(-1), E = C.indexOf(w), O = g ? C.indexOf(g) : -1, A = f.layersWithOutsidePointerEventsDisabled.size > 0, j = O >= E, M = usePointerDownOutside((e) => {
		let t = e.target, n = [...f.branches].some((e) => e.contains(t));
		!j || n || (a?.(e), s?.(e), e.defaultPrevented || c?.());
	}, b), F = useFocusOutside((e) => {
		let t = e.target;
		[...f.branches].some((e) => e.contains(t)) || (o?.(e), s?.(e), e.defaultPrevented || c?.());
	}, b);
	return useEscapeKeydown((e) => {
		O === f.layers.size - 1 && (i?.(e), !e.defaultPrevented && c && (e.preventDefault(), c()));
	}, b), React$1.useEffect(() => {
		if (g) return n && (f.layersWithOutsidePointerEventsDisabled.size === 0 && (originalBodyPointerEvents = b.body.style.pointerEvents, b.body.style.pointerEvents = "none"), f.layersWithOutsidePointerEventsDisabled.add(g)), f.layers.add(g), dispatchUpdate(), () => {
			n && f.layersWithOutsidePointerEventsDisabled.size === 1 && (b.body.style.pointerEvents = originalBodyPointerEvents);
		};
	}, [
		g,
		b,
		n,
		f
	]), React$1.useEffect(() => () => {
		g && (f.layers.delete(g), f.layersWithOutsidePointerEventsDisabled.delete(g), dispatchUpdate());
	}, [g, f]), React$1.useEffect(() => {
		let e = () => x({});
		return document.addEventListener(CONTEXT_UPDATE, e), () => document.removeEventListener(CONTEXT_UPDATE, e);
	}, []), /* @__PURE__ */ jsx(Primitive.div, {
		...d,
		ref: S,
		style: {
			pointerEvents: A ? j ? "auto" : "none" : void 0,
			...e.style
		},
		onFocusCapture: composeEventHandlers(e.onFocusCapture, F.onFocusCapture),
		onBlurCapture: composeEventHandlers(e.onBlurCapture, F.onBlurCapture),
		onPointerDownCapture: composeEventHandlers(e.onPointerDownCapture, M.onPointerDownCapture)
	});
});
DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
var BRANCH_NAME = "DismissableLayerBranch", DismissableLayerBranch = React$1.forwardRef((e, t) => {
	let n = React$1.useContext(DismissableLayerContext), i = React$1.useRef(null), a = useComposedRefs$1(t, i);
	return React$1.useEffect(() => {
		let e = i.current;
		if (e) return n.branches.add(e), () => {
			n.branches.delete(e);
		};
	}, [n.branches]), /* @__PURE__ */ jsx(Primitive.div, {
		...e,
		ref: a
	});
});
DismissableLayerBranch.displayName = BRANCH_NAME;
function usePointerDownOutside(e, t = globalThis?.document) {
	let n = useCallbackRef(e), i = React$1.useRef(!1), a = React$1.useRef(() => {});
	return React$1.useEffect(() => {
		let e = (e) => {
			if (e.target && !i.current) {
				let i = function() {
					handleAndDispatchCustomEvent(POINTER_DOWN_OUTSIDE, n, o, { discrete: !0 });
				}, o = { originalEvent: e };
				e.pointerType === "touch" ? (t.removeEventListener("click", a.current), a.current = i, t.addEventListener("click", a.current, { once: !0 })) : i();
			} else t.removeEventListener("click", a.current);
			i.current = !1;
		}, o = window.setTimeout(() => {
			t.addEventListener("pointerdown", e);
		}, 0);
		return () => {
			window.clearTimeout(o), t.removeEventListener("pointerdown", e), t.removeEventListener("click", a.current);
		};
	}, [t, n]), { onPointerDownCapture: () => i.current = !0 };
}
function useFocusOutside(e, t = globalThis?.document) {
	let n = useCallbackRef(e), i = React$1.useRef(!1);
	return React$1.useEffect(() => {
		let e = (e) => {
			e.target && !i.current && handleAndDispatchCustomEvent(FOCUS_OUTSIDE, n, { originalEvent: e }, { discrete: !1 });
		};
		return t.addEventListener("focusin", e), () => t.removeEventListener("focusin", e);
	}, [t, n]), {
		onFocusCapture: () => i.current = !0,
		onBlurCapture: () => i.current = !1
	};
}
function dispatchUpdate() {
	let e = new CustomEvent(CONTEXT_UPDATE);
	document.dispatchEvent(e);
}
function handleAndDispatchCustomEvent(e, t, n, { discrete: i }) {
	let a = n.originalEvent.target, o = new CustomEvent(e, {
		bubbles: !1,
		cancelable: !0,
		detail: n
	});
	t && a.addEventListener(e, t, { once: !0 }), i ? dispatchDiscreteCustomEvent(a, o) : a.dispatchEvent(o);
}
var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount", AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount", EVENT_OPTIONS$1 = {
	bubbles: !1,
	cancelable: !0
}, FOCUS_SCOPE_NAME = "FocusScope", FocusScope = React$1.forwardRef((e, t) => {
	let { loop: n = !1, trapped: i = !1, onMountAutoFocus: a, onUnmountAutoFocus: o,...s } = e, [c, d] = React$1.useState(null), f = useCallbackRef(a), g = useCallbackRef(o), y = React$1.useRef(null), b = useComposedRefs$1(t, (e) => d(e)), x = React$1.useRef({
		paused: !1,
		pause() {
			this.paused = !0;
		},
		resume() {
			this.paused = !1;
		}
	}).current;
	React$1.useEffect(() => {
		if (i) {
			let e = function(e) {
				if (x.paused || !c) return;
				let t = e.target;
				c.contains(t) ? y.current = t : focus(y.current, { select: !0 });
			}, t = function(e) {
				if (x.paused || !c) return;
				let t = e.relatedTarget;
				t !== null && (c.contains(t) || focus(y.current, { select: !0 }));
			}, n = function(e) {
				if (document.activeElement === document.body) for (let t of e) t.removedNodes.length > 0 && focus(c);
			};
			document.addEventListener("focusin", e), document.addEventListener("focusout", t);
			let i = new MutationObserver(n);
			return c && i.observe(c, {
				childList: !0,
				subtree: !0
			}), () => {
				document.removeEventListener("focusin", e), document.removeEventListener("focusout", t), i.disconnect();
			};
		}
	}, [
		i,
		c,
		x.paused
	]), React$1.useEffect(() => {
		if (c) {
			focusScopesStack.add(x);
			let e = document.activeElement;
			if (!c.contains(e)) {
				let t = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS$1);
				c.addEventListener(AUTOFOCUS_ON_MOUNT, f), c.dispatchEvent(t), t.defaultPrevented || (focusFirst$2(removeLinks(getTabbableCandidates(c)), { select: !0 }), document.activeElement === e && focus(c));
			}
			return () => {
				c.removeEventListener(AUTOFOCUS_ON_MOUNT, f), setTimeout(() => {
					let t = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS$1);
					c.addEventListener(AUTOFOCUS_ON_UNMOUNT, g), c.dispatchEvent(t), t.defaultPrevented || focus(e ?? document.body, { select: !0 }), c.removeEventListener(AUTOFOCUS_ON_UNMOUNT, g), focusScopesStack.remove(x);
				}, 0);
			};
		}
	}, [
		c,
		f,
		g,
		x
	]);
	let S = React$1.useCallback((e) => {
		if (!n && !i || x.paused) return;
		let t = e.key === "Tab" && !e.altKey && !e.ctrlKey && !e.metaKey, a = document.activeElement;
		if (t && a) {
			let t = e.currentTarget, [i, o] = getTabbableEdges(t);
			i && o ? !e.shiftKey && a === o ? (e.preventDefault(), n && focus(i, { select: !0 })) : e.shiftKey && a === i && (e.preventDefault(), n && focus(o, { select: !0 })) : a === t && e.preventDefault();
		}
	}, [
		n,
		i,
		x.paused
	]);
	return /* @__PURE__ */ jsx(Primitive.div, {
		tabIndex: -1,
		...s,
		ref: b,
		onKeyDown: S
	});
});
FocusScope.displayName = FOCUS_SCOPE_NAME;
function focusFirst$2(e, { select: t = !1 } = {}) {
	let n = document.activeElement;
	for (let i of e) if (focus(i, { select: t }), document.activeElement !== n) return;
}
function getTabbableEdges(e) {
	let t = getTabbableCandidates(e), n = findVisible(t, e), i = findVisible(t.reverse(), e);
	return [n, i];
}
function getTabbableCandidates(e) {
	let t = [], n = document.createTreeWalker(e, NodeFilter.SHOW_ELEMENT, { acceptNode: (e) => {
		let t = e.tagName === "INPUT" && e.type === "hidden";
		return e.disabled || e.hidden || t ? NodeFilter.FILTER_SKIP : e.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
	} });
	for (; n.nextNode();) t.push(n.currentNode);
	return t;
}
function findVisible(e, t) {
	for (let n of e) if (!isHidden(n, { upTo: t })) return n;
}
function isHidden(e, { upTo: t }) {
	if (getComputedStyle(e).visibility === "hidden") return !0;
	for (; e;) {
		if (t !== void 0 && e === t) return !1;
		if (getComputedStyle(e).display === "none") return !0;
		e = e.parentElement;
	}
	return !1;
}
function isSelectableInput(e) {
	return e instanceof HTMLInputElement && "select" in e;
}
function focus(e, { select: t = !1 } = {}) {
	if (e && e.focus) {
		let n = document.activeElement;
		e.focus({ preventScroll: !0 }), e !== n && isSelectableInput(e) && t && e.select();
	}
}
var focusScopesStack = createFocusScopesStack();
function createFocusScopesStack() {
	let e = [];
	return {
		add(t) {
			let n = e[0];
			t !== n && n?.pause(), e = arrayRemove(e, t), e.unshift(t);
		},
		remove(t) {
			e = arrayRemove(e, t), e[0]?.resume();
		}
	};
}
function arrayRemove(e, t) {
	let n = [...e], i = n.indexOf(t);
	return i !== -1 && n.splice(i, 1), n;
}
function removeLinks(e) {
	return e.filter((e) => e.tagName !== "A");
}
var PORTAL_NAME$7 = "Portal", Portal = React$1.forwardRef((e, t) => {
	let { container: n,...i } = e, [a, o] = React$1.useState(!1);
	useLayoutEffect2(() => o(!0), []);
	let s = n || a && globalThis?.document?.body;
	return s ? ReactDOM$1.createPortal(/* @__PURE__ */ jsx(Primitive.div, {
		...i,
		ref: t
	}), s) : null;
});
Portal.displayName = PORTAL_NAME$7;
function useStateMachine$1(e, t) {
	return React$1.useReducer((e, n) => t[e][n] ?? e, e);
}
var Presence = (e) => {
	let { present: t, children: n } = e, i = usePresence(t), a = typeof n == "function" ? n({ present: i.isPresent }) : React$1.Children.only(n), o = useComposedRefs$1(i.ref, getElementRef(a));
	return typeof n == "function" || i.isPresent ? React$1.cloneElement(a, { ref: o }) : null;
};
Presence.displayName = "Presence";
function usePresence(e) {
	let [t, n] = React$1.useState(), i = React$1.useRef(null), a = React$1.useRef(e), o = React$1.useRef("none"), [s, c] = useStateMachine$1(e ? "mounted" : "unmounted", {
		mounted: {
			UNMOUNT: "unmounted",
			ANIMATION_OUT: "unmountSuspended"
		},
		unmountSuspended: {
			MOUNT: "mounted",
			ANIMATION_END: "unmounted"
		},
		unmounted: { MOUNT: "mounted" }
	});
	return React$1.useEffect(() => {
		let e = getAnimationName(i.current);
		o.current = s === "mounted" ? e : "none";
	}, [s]), useLayoutEffect2(() => {
		let t = i.current, n = a.current;
		if (n !== e) {
			let i = o.current, s = getAnimationName(t);
			e ? c("MOUNT") : s === "none" || t?.display === "none" ? c("UNMOUNT") : c(n && i !== s ? "ANIMATION_OUT" : "UNMOUNT"), a.current = e;
		}
	}, [e, c]), useLayoutEffect2(() => {
		if (t) {
			let e, n = t.ownerDocument.defaultView ?? window, s = (o) => {
				let s = getAnimationName(i.current).includes(CSS.escape(o.animationName));
				if (o.target === t && s && (c("ANIMATION_END"), !a.current)) {
					let i = t.style.animationFillMode;
					t.style.animationFillMode = "forwards", e = n.setTimeout(() => {
						t.style.animationFillMode === "forwards" && (t.style.animationFillMode = i);
					});
				}
			}, d = (e) => {
				e.target === t && (o.current = getAnimationName(i.current));
			};
			return t.addEventListener("animationstart", d), t.addEventListener("animationcancel", s), t.addEventListener("animationend", s), () => {
				n.clearTimeout(e), t.removeEventListener("animationstart", d), t.removeEventListener("animationcancel", s), t.removeEventListener("animationend", s);
			};
		} else c("ANIMATION_END");
	}, [t, c]), {
		isPresent: ["mounted", "unmountSuspended"].includes(s),
		ref: React$1.useCallback((e) => {
			i.current = e ? getComputedStyle(e) : null, n(e);
		}, [])
	};
}
function getAnimationName(e) {
	return e?.animationName || "none";
}
function getElementRef(e) {
	let t = Object.getOwnPropertyDescriptor(e.props, "ref")?.get, n = t && "isReactWarning" in t && t.isReactWarning;
	return n ? e.ref : (t = Object.getOwnPropertyDescriptor(e, "ref")?.get, n = t && "isReactWarning" in t && t.isReactWarning, n ? e.props.ref : e.props.ref || e.ref);
}
var count = 0;
function useFocusGuards() {
	React$1.useEffect(() => {
		let e = document.querySelectorAll("[data-radix-focus-guard]");
		return document.body.insertAdjacentElement("afterbegin", e[0] ?? createFocusGuard()), document.body.insertAdjacentElement("beforeend", e[1] ?? createFocusGuard()), count++, () => {
			count === 1 && document.querySelectorAll("[data-radix-focus-guard]").forEach((e) => e.remove()), count--;
		};
	}, []);
}
function createFocusGuard() {
	let e = document.createElement("span");
	return e.setAttribute("data-radix-focus-guard", ""), e.tabIndex = 0, e.style.outline = "none", e.style.opacity = "0", e.style.position = "fixed", e.style.pointerEvents = "none", e;
}
var zeroRightClassName = "right-scroll-bar-position", fullWidthClassName = "width-before-scroll-bar", noScrollbarsClassName = "with-scroll-bars-hidden", removedBarSizeVariable = "--removed-body-scroll-bar-size";
function assignRef(e, t) {
	return typeof e == "function" ? e(t) : e && (e.current = t), e;
}
function useCallbackRef$1(e, t) {
	var n = useState(function() {
		return {
			value: e,
			callback: t,
			facade: {
				get current() {
					return n.value;
				},
				set current(e) {
					var t = n.value;
					t !== e && (n.value = e, n.callback(e, t));
				}
			}
		};
	})[0];
	return n.callback = t, n.facade;
}
var useIsomorphicLayoutEffect$2 = typeof window < "u" ? React$1.useLayoutEffect : React$1.useEffect, currentValues = /* @__PURE__ */ new WeakMap();
function useMergeRefs(e, t) {
	var n = useCallbackRef$1(t || null, function(t) {
		return e.forEach(function(e) {
			return assignRef(e, t);
		});
	});
	return useIsomorphicLayoutEffect$2(function() {
		var t = currentValues.get(n);
		if (t) {
			var i = new Set(t), a = new Set(e), o = n.current;
			i.forEach(function(e) {
				a.has(e) || assignRef(e, null);
			}), a.forEach(function(e) {
				i.has(e) || assignRef(e, o);
			});
		}
		currentValues.set(n, e);
	}, [e]), n;
}
function ItoI(e) {
	return e;
}
function innerCreateMedium(e, t) {
	t === void 0 && (t = ItoI);
	var n = [], i = !1;
	return {
		read: function() {
			if (i) throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");
			return n.length ? n[n.length - 1] : e;
		},
		useMedium: function(e) {
			var a = t(e, i);
			return n.push(a), function() {
				n = n.filter(function(e) {
					return e !== a;
				});
			};
		},
		assignSyncMedium: function(e) {
			for (i = !0; n.length;) {
				var t = n;
				n = [], t.forEach(e);
			}
			n = {
				push: function(t) {
					return e(t);
				},
				filter: function() {
					return n;
				}
			};
		},
		assignMedium: function(e) {
			i = !0;
			var t = [];
			if (n.length) {
				var a = n;
				n = [], a.forEach(e), t = n;
			}
			var o = function() {
				var n = t;
				t = [], n.forEach(e);
			}, s = function() {
				return Promise.resolve().then(o);
			};
			s(), n = {
				push: function(e) {
					t.push(e), s();
				},
				filter: function(e) {
					return t = t.filter(e), n;
				}
			};
		}
	};
}
function createSidecarMedium(e) {
	e === void 0 && (e = {});
	var t = innerCreateMedium(null);
	return t.options = __assign({
		async: !0,
		ssr: !1
	}, e), t;
}
var SideCar = function(e) {
	var t = e.sideCar, n = __rest(e, ["sideCar"]);
	if (!t) throw Error("Sidecar: please provide `sideCar` property to import the right car");
	var i = t.read();
	if (!i) throw Error("Sidecar medium not found");
	return React$1.createElement(i, __assign({}, n));
};
SideCar.isSideCarExport = !0;
function exportSidecar(e, t) {
	return e.useMedium(t), SideCar;
}
var effectCar = createSidecarMedium(), nothing = function() {}, RemoveScroll = React$1.forwardRef(function(e, t) {
	var n = React$1.useRef(null), i = React$1.useState({
		onScrollCapture: nothing,
		onWheelCapture: nothing,
		onTouchMoveCapture: nothing
	}), a = i[0], o = i[1], s = e.forwardProps, c = e.children, d = e.className, f = e.removeScrollBar, g = e.enabled, y = e.shards, b = e.sideCar, x = e.noRelative, S = e.noIsolation, C = e.inert, w = e.allowPinchZoom, E = e.as, O = E === void 0 ? "div" : E, A = e.gapMode, j = __rest(e, [
		"forwardProps",
		"children",
		"className",
		"removeScrollBar",
		"enabled",
		"shards",
		"sideCar",
		"noRelative",
		"noIsolation",
		"inert",
		"allowPinchZoom",
		"as",
		"gapMode"
	]), M = b, F = useMergeRefs([n, t]), I = __assign(__assign({}, j), a);
	return React$1.createElement(React$1.Fragment, null, g && React$1.createElement(M, {
		sideCar: effectCar,
		removeScrollBar: f,
		shards: y,
		noRelative: x,
		noIsolation: S,
		inert: C,
		setCallbacks: o,
		allowPinchZoom: !!w,
		lockRef: n,
		gapMode: A
	}), s ? React$1.cloneElement(React$1.Children.only(c), __assign(__assign({}, I), { ref: F })) : React$1.createElement(O, __assign({}, I, {
		className: d,
		ref: F
	}), c));
});
RemoveScroll.defaultProps = {
	enabled: !0,
	removeScrollBar: !0,
	inert: !1
}, RemoveScroll.classNames = {
	fullWidth: fullWidthClassName,
	zeroRight: zeroRightClassName
};
var currentNonce, getNonce$1 = function() {
	if (currentNonce) return currentNonce;
	if (typeof __webpack_nonce__ < "u") return __webpack_nonce__;
};
function makeStyleTag() {
	if (!document) return null;
	var e = document.createElement("style");
	e.type = "text/css";
	var t = getNonce$1();
	return t && e.setAttribute("nonce", t), e;
}
function injectStyles(e, t) {
	e.styleSheet ? e.styleSheet.cssText = t : e.appendChild(document.createTextNode(t));
}
function insertStyleTag(e) {
	(document.head || document.getElementsByTagName("head")[0]).appendChild(e);
}
var stylesheetSingleton = function() {
	var e = 0, t = null;
	return {
		add: function(n) {
			e == 0 && (t = makeStyleTag()) && (injectStyles(t, n), insertStyleTag(t)), e++;
		},
		remove: function() {
			e--, !e && t && (t.parentNode && t.parentNode.removeChild(t), t = null);
		}
	};
}, styleHookSingleton = function() {
	var e = stylesheetSingleton();
	return function(t, n) {
		React$1.useEffect(function() {
			return e.add(t), function() {
				e.remove();
			};
		}, [t && n]);
	};
}, styleSingleton = function() {
	var e = styleHookSingleton();
	return function(t) {
		var n = t.styles, i = t.dynamic;
		return e(n, i), null;
	};
}, zeroGap = {
	left: 0,
	top: 0,
	right: 0,
	gap: 0
}, parse = function(e) {
	return parseInt(e || "", 10) || 0;
}, getOffset = function(e) {
	var t = window.getComputedStyle(document.body), n = t[e === "padding" ? "paddingLeft" : "marginLeft"], i = t[e === "padding" ? "paddingTop" : "marginTop"], a = t[e === "padding" ? "paddingRight" : "marginRight"];
	return [
		parse(n),
		parse(i),
		parse(a)
	];
}, getGapWidth = function(e) {
	if (e === void 0 && (e = "margin"), typeof window > "u") return zeroGap;
	var t = getOffset(e), n = document.documentElement.clientWidth, i = window.innerWidth;
	return {
		left: t[0],
		top: t[1],
		right: t[2],
		gap: Math.max(0, i - n + t[2] - t[0])
	};
}, Style = styleSingleton(), lockAttribute = "data-scroll-locked", getStyles = function(e, t, n, i) {
	var a = e.left, o = e.top, s = e.right, c = e.gap;
	return n === void 0 && (n = "margin"), `
  .${noScrollbarsClassName} {
   overflow: hidden ${i};
   padding-right: ${c}px ${i};
  }
  body[${lockAttribute}] {
    overflow: hidden ${i};
    overscroll-behavior: contain;
    ${[
		t && `position: relative ${i};`,
		n === "margin" && `
    padding-left: ${a}px;
    padding-top: ${o}px;
    padding-right: ${s}px;
    margin-left:0;
    margin-top:0;
    margin-right: ${c}px ${i};
    `,
		n === "padding" && `padding-right: ${c}px ${i};`
	].filter(Boolean).join("")}
  }
  
  .${zeroRightClassName} {
    right: ${c}px ${i};
  }
  
  .${fullWidthClassName} {
    margin-right: ${c}px ${i};
  }
  
  .${zeroRightClassName} .${zeroRightClassName} {
    right: 0 ${i};
  }
  
  .${fullWidthClassName} .${fullWidthClassName} {
    margin-right: 0 ${i};
  }
  
  body[${lockAttribute}] {
    ${removedBarSizeVariable}: ${c}px;
  }
`;
}, getCurrentUseCounter = function() {
	var e = parseInt(document.body.getAttribute("data-scroll-locked") || "0", 10);
	return isFinite(e) ? e : 0;
}, useLockAttribute = function() {
	React$1.useEffect(function() {
		return document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString()), function() {
			var e = getCurrentUseCounter() - 1;
			e <= 0 ? document.body.removeAttribute(lockAttribute) : document.body.setAttribute(lockAttribute, e.toString());
		};
	}, []);
}, RemoveScrollBar = function(e) {
	var t = e.noRelative, n = e.noImportant, i = e.gapMode, a = i === void 0 ? "margin" : i;
	useLockAttribute();
	var o = React$1.useMemo(function() {
		return getGapWidth(a);
	}, [a]);
	return React$1.createElement(Style, { styles: getStyles(o, !t, a, n ? "" : "!important") });
}, passiveSupported = !1;
if (typeof window < "u") try {
	var options = Object.defineProperty({}, "passive", { get: function() {
		return passiveSupported = !0, !0;
	} });
	window.addEventListener("test", options, options), window.removeEventListener("test", options, options);
} catch {
	passiveSupported = !1;
}
var nonPassive = passiveSupported ? { passive: !1 } : !1, alwaysContainsScroll = function(e) {
	return e.tagName === "TEXTAREA";
}, elementCanBeScrolled = function(e, t) {
	if (!(e instanceof Element)) return !1;
	var n = window.getComputedStyle(e);
	return n[t] !== "hidden" && !(n.overflowY === n.overflowX && !alwaysContainsScroll(e) && n[t] === "visible");
}, elementCouldBeVScrolled = function(e) {
	return elementCanBeScrolled(e, "overflowY");
}, elementCouldBeHScrolled = function(e) {
	return elementCanBeScrolled(e, "overflowX");
}, locationCouldBeScrolled = function(e, t) {
	var n = t.ownerDocument, i = t;
	do {
		if (typeof ShadowRoot < "u" && i instanceof ShadowRoot && (i = i.host), elementCouldBeScrolled(e, i)) {
			var a = getScrollVariables(e, i), o = a[1], s = a[2];
			if (o > s) return !0;
		}
		i = i.parentNode;
	} while (i && i !== n.body);
	return !1;
}, getVScrollVariables = function(e) {
	var t = e.scrollTop, n = e.scrollHeight, i = e.clientHeight;
	return [
		t,
		n,
		i
	];
}, getHScrollVariables = function(e) {
	var t = e.scrollLeft, n = e.scrollWidth, i = e.clientWidth;
	return [
		t,
		n,
		i
	];
}, elementCouldBeScrolled = function(e, t) {
	return e === "v" ? elementCouldBeVScrolled(t) : elementCouldBeHScrolled(t);
}, getScrollVariables = function(e, t) {
	return e === "v" ? getVScrollVariables(t) : getHScrollVariables(t);
}, getDirectionFactor = function(e, t) {
	return e === "h" && t === "rtl" ? -1 : 1;
}, handleScroll = function(e, t, n, i, a) {
	var o = getDirectionFactor(e, window.getComputedStyle(t).direction), s = o * i, c = n.target, d = t.contains(c), f = !1, g = s > 0, y = 0, b = 0;
	do {
		if (!c) break;
		var x = getScrollVariables(e, c), S = x[0], C = x[1], w = x[2], E = C - w - o * S;
		(S || E) && elementCouldBeScrolled(e, c) && (y += E, b += S);
		var O = c.parentNode;
		c = O && O.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? O.host : O;
	} while (!d && c !== document.body || d && (t.contains(c) || t === c));
	return (g && (a && Math.abs(y) < 1 || !a && s > y) || !g && (a && Math.abs(b) < 1 || !a && -s > b)) && (f = !0), f;
}, getTouchXY = function(e) {
	return "changedTouches" in e ? [e.changedTouches[0].clientX, e.changedTouches[0].clientY] : [0, 0];
}, getDeltaXY = function(e) {
	return [e.deltaX, e.deltaY];
}, extractRef = function(e) {
	return e && "current" in e ? e.current : e;
}, deltaCompare = function(e, t) {
	return e[0] === t[0] && e[1] === t[1];
}, generateStyle = function(e) {
	return `
  .block-interactivity-${e} {pointer-events: none;}
  .allow-interactivity-${e} {pointer-events: all;}
`;
}, idCounter = 0, lockStack = [];
function RemoveScrollSideCar(e) {
	var t = React$1.useRef([]), n = React$1.useRef([0, 0]), i = React$1.useRef(), a = React$1.useState(idCounter++)[0], o = React$1.useState(styleSingleton)[0], s = React$1.useRef(e);
	React$1.useEffect(function() {
		s.current = e;
	}, [e]), React$1.useEffect(function() {
		if (e.inert) {
			document.body.classList.add(`block-interactivity-${a}`);
			var t = __spreadArray([e.lockRef.current], (e.shards || []).map(extractRef), !0).filter(Boolean);
			return t.forEach(function(e) {
				return e.classList.add(`allow-interactivity-${a}`);
			}), function() {
				document.body.classList.remove(`block-interactivity-${a}`), t.forEach(function(e) {
					return e.classList.remove(`allow-interactivity-${a}`);
				});
			};
		}
	}, [
		e.inert,
		e.lockRef.current,
		e.shards
	]);
	var c = React$1.useCallback(function(e, t) {
		if ("touches" in e && e.touches.length === 2 || e.type === "wheel" && e.ctrlKey) return !s.current.allowPinchZoom;
		var a = getTouchXY(e), o = n.current, c = "deltaX" in e ? e.deltaX : o[0] - a[0], d = "deltaY" in e ? e.deltaY : o[1] - a[1], f, g = e.target, y = Math.abs(c) > Math.abs(d) ? "h" : "v";
		if ("touches" in e && y === "h" && g.type === "range") return !1;
		var b = window.getSelection(), x = b && b.anchorNode;
		if (x && (x === g || x.contains(g))) return !1;
		var S = locationCouldBeScrolled(y, g);
		if (!S) return !0;
		if (S ? f = y : (f = y === "v" ? "h" : "v", S = locationCouldBeScrolled(y, g)), !S) return !1;
		if (!i.current && "changedTouches" in e && (c || d) && (i.current = f), !f) return !0;
		var C = i.current || f;
		return handleScroll(C, t, e, C === "h" ? c : d, !0);
	}, []), d = React$1.useCallback(function(e) {
		var n = e;
		if (!(!lockStack.length || lockStack[lockStack.length - 1] !== o)) {
			var i = "deltaY" in n ? getDeltaXY(n) : getTouchXY(n), a = t.current.filter(function(e) {
				return e.name === n.type && (e.target === n.target || n.target === e.shadowParent) && deltaCompare(e.delta, i);
			})[0];
			if (a && a.should) {
				n.cancelable && n.preventDefault();
				return;
			}
			if (!a) {
				var d = (s.current.shards || []).map(extractRef).filter(Boolean).filter(function(e) {
					return e.contains(n.target);
				});
				(d.length > 0 ? c(n, d[0]) : !s.current.noIsolation) && n.cancelable && n.preventDefault();
			}
		}
	}, []), f = React$1.useCallback(function(e, n, i, a) {
		var o = {
			name: e,
			delta: n,
			target: i,
			should: a,
			shadowParent: getOutermostShadowParent(i)
		};
		t.current.push(o), setTimeout(function() {
			t.current = t.current.filter(function(e) {
				return e !== o;
			});
		}, 1);
	}, []), g = React$1.useCallback(function(e) {
		n.current = getTouchXY(e), i.current = void 0;
	}, []), y = React$1.useCallback(function(t) {
		f(t.type, getDeltaXY(t), t.target, c(t, e.lockRef.current));
	}, []), b = React$1.useCallback(function(t) {
		f(t.type, getTouchXY(t), t.target, c(t, e.lockRef.current));
	}, []);
	React$1.useEffect(function() {
		return lockStack.push(o), e.setCallbacks({
			onScrollCapture: y,
			onWheelCapture: y,
			onTouchMoveCapture: b
		}), document.addEventListener("wheel", d, nonPassive), document.addEventListener("touchmove", d, nonPassive), document.addEventListener("touchstart", g, nonPassive), function() {
			lockStack = lockStack.filter(function(e) {
				return e !== o;
			}), document.removeEventListener("wheel", d, nonPassive), document.removeEventListener("touchmove", d, nonPassive), document.removeEventListener("touchstart", g, nonPassive);
		};
	}, []);
	var x = e.removeScrollBar, S = e.inert;
	return React$1.createElement(React$1.Fragment, null, S ? React$1.createElement(o, { styles: generateStyle(a) }) : null, x ? React$1.createElement(RemoveScrollBar, {
		noRelative: e.noRelative,
		gapMode: e.gapMode
	}) : null);
}
function getOutermostShadowParent(e) {
	for (var t = null; e !== null;) e instanceof ShadowRoot && (t = e.host, e = e.host), e = e.parentNode;
	return t;
}
var sidecar_default = exportSidecar(effectCar, RemoveScrollSideCar), ReactRemoveScroll = React$1.forwardRef(function(e, t) {
	return React$1.createElement(RemoveScroll, __assign({}, e, {
		ref: t,
		sideCar: sidecar_default
	}));
});
ReactRemoveScroll.classNames = RemoveScroll.classNames;
var Combination_default = ReactRemoveScroll, getDefaultParent = function(e) {
	return typeof document > "u" ? null : (Array.isArray(e) ? e[0] : e).ownerDocument.body;
}, counterMap = /* @__PURE__ */ new WeakMap(), uncontrolledNodes = /* @__PURE__ */ new WeakMap(), markerMap = {}, lockCount = 0, unwrapHost = function(e) {
	return e && (e.host || unwrapHost(e.parentNode));
}, correctTargets = function(e, t) {
	return t.map(function(t) {
		if (e.contains(t)) return t;
		var n = unwrapHost(t);
		return n && e.contains(n) ? n : (console.error("aria-hidden", t, "in not contained inside", e, ". Doing nothing"), null);
	}).filter(function(e) {
		return !!e;
	});
}, applyAttributeToOthers = function(e, t, n, i) {
	var a = correctTargets(t, Array.isArray(e) ? e : [e]);
	markerMap[n] || (markerMap[n] = /* @__PURE__ */ new WeakMap());
	var o = markerMap[n], s = [], c = /* @__PURE__ */ new Set(), d = new Set(a), f = function(e) {
		!e || c.has(e) || (c.add(e), f(e.parentNode));
	};
	a.forEach(f);
	var g = function(e) {
		!e || d.has(e) || Array.prototype.forEach.call(e.children, function(e) {
			if (c.has(e)) g(e);
			else try {
				var t = e.getAttribute(i), a = t !== null && t !== "false", d = (counterMap.get(e) || 0) + 1, f = (o.get(e) || 0) + 1;
				counterMap.set(e, d), o.set(e, f), s.push(e), d === 1 && a && uncontrolledNodes.set(e, !0), f === 1 && e.setAttribute(n, "true"), a || e.setAttribute(i, "true");
			} catch (t) {
				console.error("aria-hidden: cannot operate on ", e, t);
			}
		});
	};
	return g(t), c.clear(), lockCount++, function() {
		s.forEach(function(e) {
			var t = counterMap.get(e) - 1, a = o.get(e) - 1;
			counterMap.set(e, t), o.set(e, a), t || (uncontrolledNodes.has(e) || e.removeAttribute(i), uncontrolledNodes.delete(e)), a || e.removeAttribute(n);
		}), lockCount--, lockCount || (counterMap = /* @__PURE__ */ new WeakMap(), counterMap = /* @__PURE__ */ new WeakMap(), uncontrolledNodes = /* @__PURE__ */ new WeakMap(), markerMap = {});
	};
}, hideOthers = function(e, t, n) {
	n === void 0 && (n = "data-aria-hidden");
	var i = Array.from(Array.isArray(e) ? e : [e]), a = t || getDefaultParent(e);
	return a ? (i.push.apply(i, Array.from(a.querySelectorAll("[aria-live], script"))), applyAttributeToOthers(i, a, n, "aria-hidden")) : function() {
		return null;
	};
}, DIALOG_NAME = "Dialog", [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME), [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME), Dialog$1 = (e) => {
	let { __scopeDialog: t, children: n, open: i, defaultOpen: a, onOpenChange: o, modal: s = !0 } = e, c = React$1.useRef(null), d = React$1.useRef(null), [f, g] = useControllableState({
		prop: i,
		defaultProp: a ?? !1,
		onChange: o,
		caller: DIALOG_NAME
	});
	return /* @__PURE__ */ jsx(DialogProvider, {
		scope: t,
		triggerRef: c,
		contentRef: d,
		contentId: useId$1(),
		titleId: useId$1(),
		descriptionId: useId$1(),
		open: f,
		onOpenChange: g,
		onOpenToggle: React$1.useCallback(() => g((e) => !e), [g]),
		modal: s,
		children: n
	});
};
Dialog$1.displayName = DIALOG_NAME;
var TRIGGER_NAME$8 = "DialogTrigger", DialogTrigger$1 = React$1.forwardRef((e, t) => {
	let { __scopeDialog: n,...i } = e, a = useDialogContext(TRIGGER_NAME$8, n), o = useComposedRefs$1(t, a.triggerRef);
	return /* @__PURE__ */ jsx(Primitive.button, {
		type: "button",
		"aria-haspopup": "dialog",
		"aria-expanded": a.open,
		"aria-controls": a.contentId,
		"data-state": getState$3(a.open),
		...i,
		ref: o,
		onClick: composeEventHandlers(e.onClick, a.onOpenToggle)
	});
});
DialogTrigger$1.displayName = TRIGGER_NAME$8;
var PORTAL_NAME$6 = "DialogPortal", [PortalProvider$2, usePortalContext$2] = createDialogContext(PORTAL_NAME$6, { forceMount: void 0 }), DialogPortal$1 = (e) => {
	let { __scopeDialog: t, forceMount: n, children: i, container: a } = e, o = useDialogContext(PORTAL_NAME$6, t);
	return /* @__PURE__ */ jsx(PortalProvider$2, {
		scope: t,
		forceMount: n,
		children: React$1.Children.map(i, (e) => /* @__PURE__ */ jsx(Presence, {
			present: n || o.open,
			children: /* @__PURE__ */ jsx(Portal, {
				asChild: !0,
				container: a,
				children: e
			})
		}))
	});
};
DialogPortal$1.displayName = PORTAL_NAME$6;
var OVERLAY_NAME$2 = "DialogOverlay", DialogOverlay$1 = React$1.forwardRef((e, t) => {
	let n = usePortalContext$2(OVERLAY_NAME$2, e.__scopeDialog), { forceMount: i = n.forceMount,...a } = e, o = useDialogContext(OVERLAY_NAME$2, e.__scopeDialog);
	return o.modal ? /* @__PURE__ */ jsx(Presence, {
		present: i || o.open,
		children: /* @__PURE__ */ jsx(DialogOverlayImpl, {
			...a,
			ref: t
		})
	}) : null;
});
DialogOverlay$1.displayName = OVERLAY_NAME$2;
var Slot$3 = /* @__PURE__ */ createSlot("DialogOverlay.RemoveScroll"), DialogOverlayImpl = React$1.forwardRef((e, t) => {
	let { __scopeDialog: n,...i } = e, a = useDialogContext(OVERLAY_NAME$2, n);
	return /* @__PURE__ */ jsx(Combination_default, {
		as: Slot$3,
		allowPinchZoom: !0,
		shards: [a.contentRef],
		children: /* @__PURE__ */ jsx(Primitive.div, {
			"data-state": getState$3(a.open),
			...i,
			ref: t,
			style: {
				pointerEvents: "auto",
				...i.style
			}
		})
	});
}), CONTENT_NAME$10 = "DialogContent", DialogContent$1 = React$1.forwardRef((e, t) => {
	let n = usePortalContext$2(CONTENT_NAME$10, e.__scopeDialog), { forceMount: i = n.forceMount,...a } = e, o = useDialogContext(CONTENT_NAME$10, e.__scopeDialog);
	return /* @__PURE__ */ jsx(Presence, {
		present: i || o.open,
		children: o.modal ? /* @__PURE__ */ jsx(DialogContentModal, {
			...a,
			ref: t
		}) : /* @__PURE__ */ jsx(DialogContentNonModal, {
			...a,
			ref: t
		})
	});
});
DialogContent$1.displayName = CONTENT_NAME$10;
var DialogContentModal = React$1.forwardRef((e, t) => {
	let n = useDialogContext(CONTENT_NAME$10, e.__scopeDialog), i = React$1.useRef(null), a = useComposedRefs$1(t, n.contentRef, i);
	return React$1.useEffect(() => {
		let e = i.current;
		if (e) return hideOthers(e);
	}, []), /* @__PURE__ */ jsx(DialogContentImpl, {
		...e,
		ref: a,
		trapFocus: n.open,
		disableOutsidePointerEvents: !0,
		onCloseAutoFocus: composeEventHandlers(e.onCloseAutoFocus, (e) => {
			e.preventDefault(), n.triggerRef.current?.focus();
		}),
		onPointerDownOutside: composeEventHandlers(e.onPointerDownOutside, (e) => {
			let t = e.detail.originalEvent, n = t.button === 0 && t.ctrlKey === !0;
			(t.button === 2 || n) && e.preventDefault();
		}),
		onFocusOutside: composeEventHandlers(e.onFocusOutside, (e) => e.preventDefault())
	});
}), DialogContentNonModal = React$1.forwardRef((e, t) => {
	let n = useDialogContext(CONTENT_NAME$10, e.__scopeDialog), i = React$1.useRef(!1), a = React$1.useRef(!1);
	return /* @__PURE__ */ jsx(DialogContentImpl, {
		...e,
		ref: t,
		trapFocus: !1,
		disableOutsidePointerEvents: !1,
		onCloseAutoFocus: (t) => {
			e.onCloseAutoFocus?.(t), t.defaultPrevented || (i.current || n.triggerRef.current?.focus(), t.preventDefault()), i.current = !1, a.current = !1;
		},
		onInteractOutside: (t) => {
			e.onInteractOutside?.(t), t.defaultPrevented || (i.current = !0, t.detail.originalEvent.type === "pointerdown" && (a.current = !0));
			let o = t.target;
			n.triggerRef.current?.contains(o) && t.preventDefault(), t.detail.originalEvent.type === "focusin" && a.current && t.preventDefault();
		}
	});
}), DialogContentImpl = React$1.forwardRef((e, t) => {
	let { __scopeDialog: n, trapFocus: i, onOpenAutoFocus: a, onCloseAutoFocus: o,...s } = e, c = useDialogContext(CONTENT_NAME$10, n), d = React$1.useRef(null), f = useComposedRefs$1(t, d);
	return useFocusGuards(), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(FocusScope, {
		asChild: !0,
		loop: !0,
		trapped: i,
		onMountAutoFocus: a,
		onUnmountAutoFocus: o,
		children: /* @__PURE__ */ jsx(DismissableLayer, {
			role: "dialog",
			id: c.contentId,
			"aria-describedby": c.descriptionId,
			"aria-labelledby": c.titleId,
			"data-state": getState$3(c.open),
			...s,
			ref: f,
			onDismiss: () => c.onOpenChange(!1)
		})
	}), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(TitleWarning, { titleId: c.titleId }), /* @__PURE__ */ jsx(DescriptionWarning$1, {
		contentRef: d,
		descriptionId: c.descriptionId
	})] })] });
}), TITLE_NAME$1 = "DialogTitle", DialogTitle$1 = React$1.forwardRef((e, t) => {
	let { __scopeDialog: n,...i } = e, a = useDialogContext(TITLE_NAME$1, n);
	return /* @__PURE__ */ jsx(Primitive.h2, {
		id: a.titleId,
		...i,
		ref: t
	});
});
DialogTitle$1.displayName = TITLE_NAME$1;
var DESCRIPTION_NAME$1 = "DialogDescription", DialogDescription$1 = React$1.forwardRef((e, t) => {
	let { __scopeDialog: n,...i } = e, a = useDialogContext(DESCRIPTION_NAME$1, n);
	return /* @__PURE__ */ jsx(Primitive.p, {
		id: a.descriptionId,
		...i,
		ref: t
	});
});
DialogDescription$1.displayName = DESCRIPTION_NAME$1;
var CLOSE_NAME = "DialogClose", DialogClose$1 = React$1.forwardRef((e, t) => {
	let { __scopeDialog: n,...i } = e, a = useDialogContext(CLOSE_NAME, n);
	return /* @__PURE__ */ jsx(Primitive.button, {
		type: "button",
		...i,
		ref: t,
		onClick: composeEventHandlers(e.onClick, () => a.onOpenChange(!1))
	});
});
DialogClose$1.displayName = CLOSE_NAME;
function getState$3(e) {
	return e ? "open" : "closed";
}
var TITLE_WARNING_NAME = "DialogTitleWarning", [WarningProvider, useWarningContext] = createContext2(TITLE_WARNING_NAME, {
	contentName: CONTENT_NAME$10,
	titleName: TITLE_NAME$1,
	docsSlug: "dialog"
}), TitleWarning = ({ titleId: e }) => {
	let t = useWarningContext(TITLE_WARNING_NAME), n = `\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.

If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.

For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;
	return React$1.useEffect(() => {
		e && (document.getElementById(e) || console.error(n));
	}, [n, e]), null;
}, DESCRIPTION_WARNING_NAME = "DialogDescriptionWarning", DescriptionWarning$1 = ({ contentRef: e, descriptionId: t }) => {
	let n = `Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${useWarningContext(DESCRIPTION_WARNING_NAME).contentName}}.`;
	return React$1.useEffect(() => {
		let i = e.current?.getAttribute("aria-describedby");
		t && i && (document.getElementById(t) || console.warn(n));
	}, [
		n,
		e,
		t
	]), null;
}, Root$7 = Dialog$1, Trigger$5 = DialogTrigger$1, Portal$4 = DialogPortal$1, Overlay = DialogOverlay$1, Content$2 = DialogContent$1, Title = DialogTitle$1, Description = DialogDescription$1, Close = DialogClose$1;
function Dialog({ ...e }) {
	return /* @__PURE__ */ jsx(Root$7, {
		"data-slot": "dialog",
		...e
	});
}
function DialogTrigger({ ...e }) {
	return /* @__PURE__ */ jsx(Trigger$5, {
		"data-slot": "dialog-trigger",
		...e
	});
}
function DialogPortal({ ...e }) {
	let [t, n] = useState(null);
	return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Portal$4, {
		"data-slot": "dialog-portal",
		...e,
		container: t
	}), /* @__PURE__ */ jsx("div", {
		ref: n,
		style: { display: "contents" }
	})] });
}
function DialogClose({ ...e }) {
	return /* @__PURE__ */ jsx(Close, {
		"data-slot": "dialog-close",
		...e
	});
}
function DialogOverlay({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Overlay, {
		"data-slot": "dialog-overlay",
		className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", e),
		...t
	});
}
function DialogContent({ className: e, children: t, showCloseButton: n = !0,...i }) {
	return /* @__PURE__ */ jsxs(DialogPortal, {
		"data-slot": "dialog-portal",
		children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsxs(Content$2, {
			"data-slot": "dialog-content",
			className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", e),
			...i,
			children: [t, n && /* @__PURE__ */ jsxs(Close, {
				"data-slot": "dialog-close",
				className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground rounded-xs focus:outline-hidden absolute right-4 top-4 opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 disabled:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
				children: [/* @__PURE__ */ jsx(XIcon, {}), /* @__PURE__ */ jsx("span", {
					className: "sr-only",
					children: "Close"
				})]
			})]
		})]
	});
}
function DialogHeader({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "dialog-header",
		className: cn("flex flex-col gap-2 text-center sm:text-left", e),
		...t
	});
}
function DialogFooter({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "dialog-footer",
		className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", e),
		...t
	});
}
function DialogTitle({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Title, {
		"data-slot": "dialog-title",
		className: cn("text-lg font-semibold leading-none", e),
		...t
	});
}
function DialogDescription({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Description, {
		"data-slot": "dialog-description",
		className: cn("text-muted-foreground text-sm", e),
		...t
	});
}
function createCollection(e) {
	let t = e + "CollectionProvider", [n, i] = createContextScope(t), [a, o] = n(t, {
		collectionRef: { current: null },
		itemMap: /* @__PURE__ */ new Map()
	}), s = (e) => {
		let { scope: t, children: n } = e, i = React.useRef(null), o = React.useRef(/* @__PURE__ */ new Map()).current;
		return /* @__PURE__ */ jsx(a, {
			scope: t,
			itemMap: o,
			collectionRef: i,
			children: n
		});
	};
	s.displayName = t;
	let c = e + "CollectionSlot", d = /* @__PURE__ */ createSlot(c), f = React.forwardRef((e, t) => {
		let { scope: n, children: i } = e, a = o(c, n), s = useComposedRefs$1(t, a.collectionRef);
		return /* @__PURE__ */ jsx(d, {
			ref: s,
			children: i
		});
	});
	f.displayName = c;
	let g = e + "CollectionItemSlot", y = "data-radix-collection-item", b = /* @__PURE__ */ createSlot(g), x = React.forwardRef((e, t) => {
		let { scope: n, children: i,...a } = e, s = React.useRef(null), c = useComposedRefs$1(t, s), d = o(g, n);
		return React.useEffect(() => (d.itemMap.set(s, {
			ref: s,
			...a
		}), () => void d.itemMap.delete(s))), /* @__PURE__ */ jsx(b, {
			[y]: "",
			ref: c,
			children: i
		});
	});
	x.displayName = g;
	function S(t) {
		let n = o(e + "CollectionConsumer", t);
		return React.useCallback(() => {
			let e = n.collectionRef.current;
			if (!e) return [];
			let t = Array.from(e.querySelectorAll(`[${y}]`));
			return Array.from(n.itemMap.values()).sort((e, n) => t.indexOf(e.ref.current) - t.indexOf(n.ref.current));
		}, [n.collectionRef, n.itemMap]);
	}
	return [
		{
			Provider: s,
			Slot: f,
			ItemSlot: x
		},
		S,
		i
	];
}
var DirectionContext = React$1.createContext(void 0);
function useDirection(e) {
	let t = React$1.useContext(DirectionContext);
	return e || t || "ltr";
}
var sides = [
	"top",
	"right",
	"bottom",
	"left"
], min = Math.min, max = Math.max, round = Math.round, floor = Math.floor, createCoords = (e) => ({
	x: e,
	y: e
}), oppositeSideMap = {
	left: "right",
	right: "left",
	bottom: "top",
	top: "bottom"
}, oppositeAlignmentMap = {
	start: "end",
	end: "start"
};
function clamp$1(e, t, n) {
	return max(e, min(t, n));
}
function evaluate(e, t) {
	return typeof e == "function" ? e(t) : e;
}
function getSide(e) {
	return e.split("-")[0];
}
function getAlignment(e) {
	return e.split("-")[1];
}
function getOppositeAxis(e) {
	return e === "x" ? "y" : "x";
}
function getAxisLength(e) {
	return e === "y" ? "height" : "width";
}
var yAxisSides = /* @__PURE__ */ new Set(["top", "bottom"]);
function getSideAxis(e) {
	return yAxisSides.has(getSide(e)) ? "y" : "x";
}
function getAlignmentAxis(e) {
	return getOppositeAxis(getSideAxis(e));
}
function getAlignmentSides(e, t, n) {
	n === void 0 && (n = !1);
	let i = getAlignment(e), a = getAlignmentAxis(e), o = getAxisLength(a), s = a === "x" ? i === (n ? "end" : "start") ? "right" : "left" : i === "start" ? "bottom" : "top";
	return t.reference[o] > t.floating[o] && (s = getOppositePlacement(s)), [s, getOppositePlacement(s)];
}
function getExpandedPlacements(e) {
	let t = getOppositePlacement(e);
	return [
		getOppositeAlignmentPlacement(e),
		t,
		getOppositeAlignmentPlacement(t)
	];
}
function getOppositeAlignmentPlacement(e) {
	return e.replace(/start|end/g, (e) => oppositeAlignmentMap[e]);
}
var lrPlacement = ["left", "right"], rlPlacement = ["right", "left"], tbPlacement = ["top", "bottom"], btPlacement = ["bottom", "top"];
function getSideList(e, t, n) {
	switch (e) {
		case "top":
		case "bottom": return n ? t ? rlPlacement : lrPlacement : t ? lrPlacement : rlPlacement;
		case "left":
		case "right": return t ? tbPlacement : btPlacement;
		default: return [];
	}
}
function getOppositeAxisPlacements(e, t, n, i) {
	let a = getAlignment(e), o = getSideList(getSide(e), n === "start", i);
	return a && (o = o.map((e) => e + "-" + a), t && (o = o.concat(o.map(getOppositeAlignmentPlacement)))), o;
}
function getOppositePlacement(e) {
	return e.replace(/left|right|bottom|top/g, (e) => oppositeSideMap[e]);
}
function expandPaddingObject(e) {
	return {
		top: 0,
		right: 0,
		bottom: 0,
		left: 0,
		...e
	};
}
function getPaddingObject(e) {
	return typeof e == "number" ? {
		top: e,
		right: e,
		bottom: e,
		left: e
	} : expandPaddingObject(e);
}
function rectToClientRect(e) {
	let { x: t, y: n, width: i, height: a } = e;
	return {
		width: i,
		height: a,
		top: n,
		left: t,
		right: t + i,
		bottom: n + a,
		x: t,
		y: n
	};
}
function computeCoordsFromPlacement(e, t, n) {
	let { reference: i, floating: a } = e, o = getSideAxis(t), s = getAlignmentAxis(t), c = getAxisLength(s), d = getSide(t), f = o === "y", g = i.x + i.width / 2 - a.width / 2, y = i.y + i.height / 2 - a.height / 2, b = i[c] / 2 - a[c] / 2, x;
	switch (d) {
		case "top":
			x = {
				x: g,
				y: i.y - a.height
			};
			break;
		case "bottom":
			x = {
				x: g,
				y: i.y + i.height
			};
			break;
		case "right":
			x = {
				x: i.x + i.width,
				y
			};
			break;
		case "left":
			x = {
				x: i.x - a.width,
				y
			};
			break;
		default: x = {
			x: i.x,
			y: i.y
		};
	}
	switch (getAlignment(t)) {
		case "start":
			x[s] -= b * (n && f ? -1 : 1);
			break;
		case "end":
			x[s] += b * (n && f ? -1 : 1);
			break;
	}
	return x;
}
async function detectOverflow$1(e, t) {
	t === void 0 && (t = {});
	let { x: n, y: i, platform: a, rects: o, elements: s, strategy: c } = e, { boundary: d = "clippingAncestors", rootBoundary: f = "viewport", elementContext: g = "floating", altBoundary: y = !1, padding: b = 0 } = evaluate(t, e), x = getPaddingObject(b), S = s[y ? g === "floating" ? "reference" : "floating" : g], C = rectToClientRect(await a.getClippingRect({
		element: await (a.isElement == null ? void 0 : a.isElement(S)) ?? !0 ? S : S.contextElement || await (a.getDocumentElement == null ? void 0 : a.getDocumentElement(s.floating)),
		boundary: d,
		rootBoundary: f,
		strategy: c
	})), w = g === "floating" ? {
		x: n,
		y: i,
		width: o.floating.width,
		height: o.floating.height
	} : o.reference, E = await (a.getOffsetParent == null ? void 0 : a.getOffsetParent(s.floating)), O = await (a.isElement == null ? void 0 : a.isElement(E)) && await (a.getScale == null ? void 0 : a.getScale(E)) || {
		x: 1,
		y: 1
	}, A = rectToClientRect(a.convertOffsetParentRelativeRectToViewportRelativeRect ? await a.convertOffsetParentRelativeRectToViewportRelativeRect({
		elements: s,
		rect: w,
		offsetParent: E,
		strategy: c
	}) : w);
	return {
		top: (C.top - A.top + x.top) / O.y,
		bottom: (A.bottom - C.bottom + x.bottom) / O.y,
		left: (C.left - A.left + x.left) / O.x,
		right: (A.right - C.right + x.right) / O.x
	};
}
var computePosition$1 = async (e, t, n) => {
	let { placement: i = "bottom", strategy: a = "absolute", middleware: o = [], platform: s } = n, c = o.filter(Boolean), d = await (s.isRTL == null ? void 0 : s.isRTL(t)), f = await s.getElementRects({
		reference: e,
		floating: t,
		strategy: a
	}), { x: g, y } = computeCoordsFromPlacement(f, i, d), b = i, x = {}, S = 0;
	for (let n = 0; n < c.length; n++) {
		let { name: o, fn: C } = c[n], { x: w, y: E, data: O, reset: A } = await C({
			x: g,
			y,
			initialPlacement: i,
			placement: b,
			strategy: a,
			middlewareData: x,
			rects: f,
			platform: {
				...s,
				detectOverflow: s.detectOverflow ?? detectOverflow$1
			},
			elements: {
				reference: e,
				floating: t
			}
		});
		g = w ?? g, y = E ?? y, x = {
			...x,
			[o]: {
				...x[o],
				...O
			}
		}, A && S <= 50 && (S++, typeof A == "object" && (A.placement && (b = A.placement), A.rects && (f = A.rects === !0 ? await s.getElementRects({
			reference: e,
			floating: t,
			strategy: a
		}) : A.rects), {x: g, y} = computeCoordsFromPlacement(f, b, d)), n = -1);
	}
	return {
		x: g,
		y,
		placement: b,
		strategy: a,
		middlewareData: x
	};
}, arrow$2 = (e) => ({
	name: "arrow",
	options: e,
	async fn(t) {
		let { x: n, y: i, placement: a, rects: o, platform: s, elements: c, middlewareData: d } = t, { element: f, padding: g = 0 } = evaluate(e, t) || {};
		if (f == null) return {};
		let y = getPaddingObject(g), b = {
			x: n,
			y: i
		}, x = getAlignmentAxis(a), S = getAxisLength(x), C = await s.getDimensions(f), w = x === "y", E = w ? "top" : "left", O = w ? "bottom" : "right", A = w ? "clientHeight" : "clientWidth", j = o.reference[S] + o.reference[x] - b[x] - o.floating[S], M = b[x] - o.reference[x], F = await (s.getOffsetParent == null ? void 0 : s.getOffsetParent(f)), I = F ? F[A] : 0;
		(!I || !await (s.isElement == null ? void 0 : s.isElement(F))) && (I = c.floating[A] || o.floating[S]);
		let R = j / 2 - M / 2, zv = I / 2 - C[S] / 2 - 1, V = min(y[E], zv), Bv = min(y[O], zv), Vv = V, Hv = I - C[S] - Bv, Uv = I / 2 - C[S] / 2 + R, Wv = clamp$1(Vv, Uv, Hv), Gv = !d.arrow && getAlignment(a) != null && Uv !== Wv && o.reference[S] / 2 - (Uv < Vv ? V : Bv) - C[S] / 2 < 0, Kv = Gv ? Uv < Vv ? Uv - Vv : Uv - Hv : 0;
		return {
			[x]: b[x] + Kv,
			data: {
				[x]: Wv,
				centerOffset: Uv - Wv - Kv,
				...Gv && { alignmentOffset: Kv }
			},
			reset: Gv
		};
	}
}), flip$2 = function(e) {
	return e === void 0 && (e = {}), {
		name: "flip",
		options: e,
		async fn(t) {
			var n;
			let { placement: i, middlewareData: a, rects: o, initialPlacement: s, platform: c, elements: d } = t, { mainAxis: f = !0, crossAxis: g = !0, fallbackPlacements: y, fallbackStrategy: b = "bestFit", fallbackAxisSideDirection: x = "none", flipAlignment: S = !0,...C } = evaluate(e, t);
			if ((n = a.arrow) != null && n.alignmentOffset) return {};
			let w = getSide(i), E = getSideAxis(s), O = getSide(s) === s, A = await (c.isRTL == null ? void 0 : c.isRTL(d.floating)), j = y || (O || !S ? [getOppositePlacement(s)] : getExpandedPlacements(s)), M = x !== "none";
			!y && M && j.push(...getOppositeAxisPlacements(s, S, x, A));
			let F = [s, ...j], I = await c.detectOverflow(t, C), R = [], zv = a.flip?.overflows || [];
			if (f && R.push(I[w]), g) {
				let e = getAlignmentSides(i, o, A);
				R.push(I[e[0]], I[e[1]]);
			}
			if (zv = [...zv, {
				placement: i,
				overflows: R
			}], !R.every((e) => e <= 0)) {
				let e = (a.flip?.index || 0) + 1, t = F[e];
				if (t && (!(g === "alignment" && E !== getSideAxis(t)) || zv.every((e) => getSideAxis(e.placement) === E ? e.overflows[0] > 0 : !0))) return {
					data: {
						index: e,
						overflows: zv
					},
					reset: { placement: t }
				};
				let n = zv.filter((e) => e.overflows[0] <= 0).sort((e, t) => e.overflows[1] - t.overflows[1])[0]?.placement;
				if (!n) switch (b) {
					case "bestFit": {
						let e = zv.filter((e) => {
							if (M) {
								let t = getSideAxis(e.placement);
								return t === E || t === "y";
							}
							return !0;
						}).map((e) => [e.placement, e.overflows.filter((e) => e > 0).reduce((e, t) => e + t, 0)]).sort((e, t) => e[1] - t[1])[0]?.[0];
						e && (n = e);
						break;
					}
					case "initialPlacement":
						n = s;
						break;
				}
				if (i !== n) return { reset: { placement: n } };
			}
			return {};
		}
	};
};
function getSideOffsets(e, t) {
	return {
		top: e.top - t.height,
		right: e.right - t.width,
		bottom: e.bottom - t.height,
		left: e.left - t.width
	};
}
function isAnySideFullyClipped(e) {
	return sides.some((t) => e[t] >= 0);
}
var hide$2 = function(e) {
	return e === void 0 && (e = {}), {
		name: "hide",
		options: e,
		async fn(t) {
			let { rects: n, platform: i } = t, { strategy: a = "referenceHidden",...o } = evaluate(e, t);
			switch (a) {
				case "referenceHidden": {
					let e = await i.detectOverflow(t, {
						...o,
						elementContext: "reference"
					}), a = getSideOffsets(e, n.reference);
					return { data: {
						referenceHiddenOffsets: a,
						referenceHidden: isAnySideFullyClipped(a)
					} };
				}
				case "escaped": {
					let e = await i.detectOverflow(t, {
						...o,
						altBoundary: !0
					}), a = getSideOffsets(e, n.floating);
					return { data: {
						escapedOffsets: a,
						escaped: isAnySideFullyClipped(a)
					} };
				}
				default: return {};
			}
		}
	};
}, originSides = /* @__PURE__ */ new Set(["left", "top"]);
async function convertValueToCoords(e, t) {
	let { placement: n, platform: i, elements: a } = e, o = await (i.isRTL == null ? void 0 : i.isRTL(a.floating)), s = getSide(n), c = getAlignment(n), d = getSideAxis(n) === "y", f = originSides.has(s) ? -1 : 1, g = o && d ? -1 : 1, y = evaluate(t, e), { mainAxis: b, crossAxis: x, alignmentAxis: S } = typeof y == "number" ? {
		mainAxis: y,
		crossAxis: 0,
		alignmentAxis: null
	} : {
		mainAxis: y.mainAxis || 0,
		crossAxis: y.crossAxis || 0,
		alignmentAxis: y.alignmentAxis
	};
	return c && typeof S == "number" && (x = c === "end" ? S * -1 : S), d ? {
		x: x * g,
		y: b * f
	} : {
		x: b * f,
		y: x * g
	};
}
var offset$2 = function(e) {
	return e === void 0 && (e = 0), {
		name: "offset",
		options: e,
		async fn(t) {
			var n;
			let { x: i, y: a, placement: o, middlewareData: s } = t, c = await convertValueToCoords(t, e);
			return o === s.offset?.placement && (n = s.arrow) != null && n.alignmentOffset ? {} : {
				x: i + c.x,
				y: a + c.y,
				data: {
					...c,
					placement: o
				}
			};
		}
	};
}, shift$2 = function(e) {
	return e === void 0 && (e = {}), {
		name: "shift",
		options: e,
		async fn(t) {
			let { x: n, y: i, placement: a, platform: o } = t, { mainAxis: s = !0, crossAxis: c = !1, limiter: d = { fn: (e) => {
				let { x: t, y: n } = e;
				return {
					x: t,
					y: n
				};
			} },...f } = evaluate(e, t), g = {
				x: n,
				y: i
			}, y = await o.detectOverflow(t, f), b = getSideAxis(getSide(a)), x = getOppositeAxis(b), S = g[x], C = g[b];
			if (s) {
				let e = x === "y" ? "top" : "left", t = x === "y" ? "bottom" : "right", n = S + y[e], i = S - y[t];
				S = clamp$1(n, S, i);
			}
			if (c) {
				let e = b === "y" ? "top" : "left", t = b === "y" ? "bottom" : "right", n = C + y[e], i = C - y[t];
				C = clamp$1(n, C, i);
			}
			let w = d.fn({
				...t,
				[x]: S,
				[b]: C
			});
			return {
				...w,
				data: {
					x: w.x - n,
					y: w.y - i,
					enabled: {
						[x]: s,
						[b]: c
					}
				}
			};
		}
	};
}, limitShift$2 = function(e) {
	return e === void 0 && (e = {}), {
		options: e,
		fn(t) {
			let { x: n, y: i, placement: a, rects: o, middlewareData: s } = t, { offset: c = 0, mainAxis: d = !0, crossAxis: f = !0 } = evaluate(e, t), g = {
				x: n,
				y: i
			}, y = getSideAxis(a), b = getOppositeAxis(y), x = g[b], S = g[y], C = evaluate(c, t), w = typeof C == "number" ? {
				mainAxis: C,
				crossAxis: 0
			} : {
				mainAxis: 0,
				crossAxis: 0,
				...C
			};
			if (d) {
				let e = b === "y" ? "height" : "width", t = o.reference[b] - o.floating[e] + w.mainAxis, n = o.reference[b] + o.reference[e] - w.mainAxis;
				x < t ? x = t : x > n && (x = n);
			}
			if (f) {
				let e = b === "y" ? "width" : "height", t = originSides.has(getSide(a)), n = o.reference[y] - o.floating[e] + (t && s.offset?.[y] || 0) + (t ? 0 : w.crossAxis), i = o.reference[y] + o.reference[e] + (t ? 0 : s.offset?.[y] || 0) - (t ? w.crossAxis : 0);
				S < n ? S = n : S > i && (S = i);
			}
			return {
				[b]: x,
				[y]: S
			};
		}
	};
}, size$2 = function(e) {
	return e === void 0 && (e = {}), {
		name: "size",
		options: e,
		async fn(t) {
			var n, i;
			let { placement: a, rects: o, platform: s, elements: c } = t, { apply: d = () => {},...f } = evaluate(e, t), g = await s.detectOverflow(t, f), y = getSide(a), b = getAlignment(a), x = getSideAxis(a) === "y", { width: S, height: C } = o.floating, w, E;
			y === "top" || y === "bottom" ? (w = y, E = b === (await (s.isRTL == null ? void 0 : s.isRTL(c.floating)) ? "start" : "end") ? "left" : "right") : (E = y, w = b === "end" ? "top" : "bottom");
			let O = C - g.top - g.bottom, A = S - g.left - g.right, j = min(C - g[w], O), M = min(S - g[E], A), F = !t.middlewareData.shift, I = j, R = M;
			if ((n = t.middlewareData.shift) != null && n.enabled.x && (R = A), (i = t.middlewareData.shift) != null && i.enabled.y && (I = O), F && !b) {
				let e = max(g.left, 0), t = max(g.right, 0), n = max(g.top, 0), i = max(g.bottom, 0);
				x ? R = S - 2 * (e !== 0 || t !== 0 ? e + t : max(g.left, g.right)) : I = C - 2 * (n !== 0 || i !== 0 ? n + i : max(g.top, g.bottom));
			}
			await d({
				...t,
				availableWidth: R,
				availableHeight: I
			});
			let zv = await s.getDimensions(c.floating);
			return S !== zv.width || C !== zv.height ? { reset: { rects: !0 } } : {};
		}
	};
};
function hasWindow() {
	return typeof window < "u";
}
function getNodeName(e) {
	return isNode$1(e) ? (e.nodeName || "").toLowerCase() : "#document";
}
function getWindow$1(e) {
	var t;
	return (e == null || (t = e.ownerDocument) == null ? void 0 : t.defaultView) || window;
}
function getDocumentElement(e) {
	return ((isNode$1(e) ? e.ownerDocument : e.document) || window.document)?.documentElement;
}
function isNode$1(e) {
	return hasWindow() ? e instanceof Node || e instanceof getWindow$1(e).Node : !1;
}
function isElement(e) {
	return hasWindow() ? e instanceof Element || e instanceof getWindow$1(e).Element : !1;
}
function isHTMLElement$2(e) {
	return hasWindow() ? e instanceof HTMLElement || e instanceof getWindow$1(e).HTMLElement : !1;
}
function isShadowRoot(e) {
	return !hasWindow() || typeof ShadowRoot > "u" ? !1 : e instanceof ShadowRoot || e instanceof getWindow$1(e).ShadowRoot;
}
var invalidOverflowDisplayValues = /* @__PURE__ */ new Set(["inline", "contents"]);
function isOverflowElement(e) {
	let { overflow: t, overflowX: n, overflowY: i, display: a } = getComputedStyle$1(e);
	return /auto|scroll|overlay|hidden|clip/.test(t + i + n) && !invalidOverflowDisplayValues.has(a);
}
var tableElements = /* @__PURE__ */ new Set([
	"table",
	"td",
	"th"
]);
function isTableElement(e) {
	return tableElements.has(getNodeName(e));
}
var topLayerSelectors = [":popover-open", ":modal"];
function isTopLayer(e) {
	return topLayerSelectors.some((t) => {
		try {
			return e.matches(t);
		} catch {
			return !1;
		}
	});
}
var transformProperties = [
	"transform",
	"translate",
	"scale",
	"rotate",
	"perspective"
], willChangeValues = [
	"transform",
	"translate",
	"scale",
	"rotate",
	"perspective",
	"filter"
], containValues = [
	"paint",
	"layout",
	"strict",
	"content"
];
function isContainingBlock(e) {
	let t = isWebKit(), n = isElement(e) ? getComputedStyle$1(e) : e;
	return transformProperties.some((e) => n[e] ? n[e] !== "none" : !1) || (n.containerType ? n.containerType !== "normal" : !1) || !t && (n.backdropFilter ? n.backdropFilter !== "none" : !1) || !t && (n.filter ? n.filter !== "none" : !1) || willChangeValues.some((e) => (n.willChange || "").includes(e)) || containValues.some((e) => (n.contain || "").includes(e));
}
function getContainingBlock(e) {
	let t = getParentNode(e);
	for (; isHTMLElement$2(t) && !isLastTraversableNode(t);) {
		if (isContainingBlock(t)) return t;
		if (isTopLayer(t)) return null;
		t = getParentNode(t);
	}
	return null;
}
function isWebKit() {
	return typeof CSS > "u" || !CSS.supports ? !1 : CSS.supports("-webkit-backdrop-filter", "none");
}
var lastTraversableNodeNames = /* @__PURE__ */ new Set([
	"html",
	"body",
	"#document"
]);
function isLastTraversableNode(e) {
	return lastTraversableNodeNames.has(getNodeName(e));
}
function getComputedStyle$1(e) {
	return getWindow$1(e).getComputedStyle(e);
}
function getNodeScroll(e) {
	return isElement(e) ? {
		scrollLeft: e.scrollLeft,
		scrollTop: e.scrollTop
	} : {
		scrollLeft: e.scrollX,
		scrollTop: e.scrollY
	};
}
function getParentNode(e) {
	if (getNodeName(e) === "html") return e;
	let t = e.assignedSlot || e.parentNode || isShadowRoot(e) && e.host || getDocumentElement(e);
	return isShadowRoot(t) ? t.host : t;
}
function getNearestOverflowAncestor(e) {
	let t = getParentNode(e);
	return isLastTraversableNode(t) ? e.ownerDocument ? e.ownerDocument.body : e.body : isHTMLElement$2(t) && isOverflowElement(t) ? t : getNearestOverflowAncestor(t);
}
function getOverflowAncestors(e, t, n) {
	t === void 0 && (t = []), n === void 0 && (n = !0);
	let i = getNearestOverflowAncestor(e), a = i === e.ownerDocument?.body, o = getWindow$1(i);
	if (a) {
		let e = getFrameElement(o);
		return t.concat(o, o.visualViewport || [], isOverflowElement(i) ? i : [], e && n ? getOverflowAncestors(e) : []);
	}
	return t.concat(i, getOverflowAncestors(i, [], n));
}
function getFrameElement(e) {
	return e.parent && Object.getPrototypeOf(e.parent) ? e.frameElement : null;
}
function getCssDimensions(e) {
	let t = getComputedStyle$1(e), n = parseFloat(t.width) || 0, i = parseFloat(t.height) || 0, a = isHTMLElement$2(e), o = a ? e.offsetWidth : n, s = a ? e.offsetHeight : i, c = round(n) !== o || round(i) !== s;
	return c && (n = o, i = s), {
		width: n,
		height: i,
		$: c
	};
}
function unwrapElement(e) {
	return isElement(e) ? e : e.contextElement;
}
function getScale(e) {
	let t = unwrapElement(e);
	if (!isHTMLElement$2(t)) return createCoords(1);
	let n = t.getBoundingClientRect(), { width: i, height: a, $: o } = getCssDimensions(t), s = (o ? round(n.width) : n.width) / i, c = (o ? round(n.height) : n.height) / a;
	return (!s || !Number.isFinite(s)) && (s = 1), (!c || !Number.isFinite(c)) && (c = 1), {
		x: s,
		y: c
	};
}
var noOffsets = /* @__PURE__ */ createCoords(0);
function getVisualOffsets(e) {
	let t = getWindow$1(e);
	return !isWebKit() || !t.visualViewport ? noOffsets : {
		x: t.visualViewport.offsetLeft,
		y: t.visualViewport.offsetTop
	};
}
function shouldAddVisualOffsets(e, t, n) {
	return t === void 0 && (t = !1), !n || t && n !== getWindow$1(e) ? !1 : t;
}
function getBoundingClientRect(e, t, n, i) {
	t === void 0 && (t = !1), n === void 0 && (n = !1);
	let a = e.getBoundingClientRect(), o = unwrapElement(e), s = createCoords(1);
	t && (i ? isElement(i) && (s = getScale(i)) : s = getScale(e));
	let c = shouldAddVisualOffsets(o, n, i) ? getVisualOffsets(o) : createCoords(0), d = (a.left + c.x) / s.x, f = (a.top + c.y) / s.y, g = a.width / s.x, y = a.height / s.y;
	if (o) {
		let e = getWindow$1(o), t = i && isElement(i) ? getWindow$1(i) : i, n = e, a = getFrameElement(n);
		for (; a && i && t !== n;) {
			let e = getScale(a), t = a.getBoundingClientRect(), i = getComputedStyle$1(a), o = t.left + (a.clientLeft + parseFloat(i.paddingLeft)) * e.x, s = t.top + (a.clientTop + parseFloat(i.paddingTop)) * e.y;
			d *= e.x, f *= e.y, g *= e.x, y *= e.y, d += o, f += s, n = getWindow$1(a), a = getFrameElement(n);
		}
	}
	return rectToClientRect({
		width: g,
		height: y,
		x: d,
		y: f
	});
}
function getWindowScrollBarX(e, t) {
	let n = getNodeScroll(e).scrollLeft;
	return t ? t.left + n : getBoundingClientRect(getDocumentElement(e)).left + n;
}
function getHTMLOffset(e, t) {
	let n = e.getBoundingClientRect(), i = n.left + t.scrollLeft - getWindowScrollBarX(e, n), a = n.top + t.scrollTop;
	return {
		x: i,
		y: a
	};
}
function convertOffsetParentRelativeRectToViewportRelativeRect(e) {
	let { elements: t, rect: n, offsetParent: i, strategy: a } = e, o = a === "fixed", s = getDocumentElement(i), c = t ? isTopLayer(t.floating) : !1;
	if (i === s || c && o) return n;
	let d = {
		scrollLeft: 0,
		scrollTop: 0
	}, f = createCoords(1), g = createCoords(0), y = isHTMLElement$2(i);
	if ((y || !y && !o) && ((getNodeName(i) !== "body" || isOverflowElement(s)) && (d = getNodeScroll(i)), isHTMLElement$2(i))) {
		let e = getBoundingClientRect(i);
		f = getScale(i), g.x = e.x + i.clientLeft, g.y = e.y + i.clientTop;
	}
	let b = s && !y && !o ? getHTMLOffset(s, d) : createCoords(0);
	return {
		width: n.width * f.x,
		height: n.height * f.y,
		x: n.x * f.x - d.scrollLeft * f.x + g.x + b.x,
		y: n.y * f.y - d.scrollTop * f.y + g.y + b.y
	};
}
function getClientRects(e) {
	return Array.from(e.getClientRects());
}
function getDocumentRect(e) {
	let t = getDocumentElement(e), n = getNodeScroll(e), i = e.ownerDocument.body, a = max(t.scrollWidth, t.clientWidth, i.scrollWidth, i.clientWidth), o = max(t.scrollHeight, t.clientHeight, i.scrollHeight, i.clientHeight), s = -n.scrollLeft + getWindowScrollBarX(e), c = -n.scrollTop;
	return getComputedStyle$1(i).direction === "rtl" && (s += max(t.clientWidth, i.clientWidth) - a), {
		width: a,
		height: o,
		x: s,
		y: c
	};
}
var SCROLLBAR_MAX = 25;
function getViewportRect(e, t) {
	let n = getWindow$1(e), i = getDocumentElement(e), a = n.visualViewport, o = i.clientWidth, s = i.clientHeight, c = 0, d = 0;
	if (a) {
		o = a.width, s = a.height;
		let e = isWebKit();
		(!e || e && t === "fixed") && (c = a.offsetLeft, d = a.offsetTop);
	}
	let f = getWindowScrollBarX(i);
	if (f <= 0) {
		let e = i.ownerDocument, t = e.body, n = getComputedStyle(t), a = e.compatMode === "CSS1Compat" && parseFloat(n.marginLeft) + parseFloat(n.marginRight) || 0, s = Math.abs(i.clientWidth - t.clientWidth - a);
		s <= SCROLLBAR_MAX && (o -= s);
	} else f <= SCROLLBAR_MAX && (o += f);
	return {
		width: o,
		height: s,
		x: c,
		y: d
	};
}
var absoluteOrFixed = /* @__PURE__ */ new Set(["absolute", "fixed"]);
function getInnerBoundingClientRect(e, t) {
	let n = getBoundingClientRect(e, !0, t === "fixed"), i = n.top + e.clientTop, a = n.left + e.clientLeft, o = isHTMLElement$2(e) ? getScale(e) : createCoords(1), s = e.clientWidth * o.x, c = e.clientHeight * o.y, d = a * o.x, f = i * o.y;
	return {
		width: s,
		height: c,
		x: d,
		y: f
	};
}
function getClientRectFromClippingAncestor(e, t, n) {
	let i;
	if (t === "viewport") i = getViewportRect(e, n);
	else if (t === "document") i = getDocumentRect(getDocumentElement(e));
	else if (isElement(t)) i = getInnerBoundingClientRect(t, n);
	else {
		let n = getVisualOffsets(e);
		i = {
			x: t.x - n.x,
			y: t.y - n.y,
			width: t.width,
			height: t.height
		};
	}
	return rectToClientRect(i);
}
function hasFixedPositionAncestor(e, t) {
	let n = getParentNode(e);
	return n === t || !isElement(n) || isLastTraversableNode(n) ? !1 : getComputedStyle$1(n).position === "fixed" || hasFixedPositionAncestor(n, t);
}
function getClippingElementAncestors(e, t) {
	let n = t.get(e);
	if (n) return n;
	let i = getOverflowAncestors(e, [], !1).filter((e) => isElement(e) && getNodeName(e) !== "body"), a = null, o = getComputedStyle$1(e).position === "fixed", s = o ? getParentNode(e) : e;
	for (; isElement(s) && !isLastTraversableNode(s);) {
		let t = getComputedStyle$1(s), n = isContainingBlock(s);
		!n && t.position === "fixed" && (a = null), (o ? !n && !a : !n && t.position === "static" && a && absoluteOrFixed.has(a.position) || isOverflowElement(s) && !n && hasFixedPositionAncestor(e, s)) ? i = i.filter((e) => e !== s) : a = t, s = getParentNode(s);
	}
	return t.set(e, i), i;
}
function getClippingRect(e) {
	let { element: t, boundary: n, rootBoundary: i, strategy: a } = e, o = [...n === "clippingAncestors" ? isTopLayer(t) ? [] : getClippingElementAncestors(t, this._c) : [].concat(n), i], s = o[0], c = o.reduce((e, n) => {
		let i = getClientRectFromClippingAncestor(t, n, a);
		return e.top = max(i.top, e.top), e.right = min(i.right, e.right), e.bottom = min(i.bottom, e.bottom), e.left = max(i.left, e.left), e;
	}, getClientRectFromClippingAncestor(t, s, a));
	return {
		width: c.right - c.left,
		height: c.bottom - c.top,
		x: c.left,
		y: c.top
	};
}
function getDimensions(e) {
	let { width: t, height: n } = getCssDimensions(e);
	return {
		width: t,
		height: n
	};
}
function getRectRelativeToOffsetParent(e, t, n) {
	let i = isHTMLElement$2(t), a = getDocumentElement(t), o = n === "fixed", s = getBoundingClientRect(e, !0, o, t), c = {
		scrollLeft: 0,
		scrollTop: 0
	}, d = createCoords(0);
	function f() {
		d.x = getWindowScrollBarX(a);
	}
	if (i || !i && !o) if ((getNodeName(t) !== "body" || isOverflowElement(a)) && (c = getNodeScroll(t)), i) {
		let e = getBoundingClientRect(t, !0, o, t);
		d.x = e.x + t.clientLeft, d.y = e.y + t.clientTop;
	} else a && f();
	o && !i && a && f();
	let g = a && !i && !o ? getHTMLOffset(a, c) : createCoords(0), y = s.left + c.scrollLeft - d.x - g.x, b = s.top + c.scrollTop - d.y - g.y;
	return {
		x: y,
		y: b,
		width: s.width,
		height: s.height
	};
}
function isStaticPositioned(e) {
	return getComputedStyle$1(e).position === "static";
}
function getTrueOffsetParent(e, t) {
	if (!isHTMLElement$2(e) || getComputedStyle$1(e).position === "fixed") return null;
	if (t) return t(e);
	let n = e.offsetParent;
	return getDocumentElement(e) === n && (n = n.ownerDocument.body), n;
}
function getOffsetParent(e, t) {
	let n = getWindow$1(e);
	if (isTopLayer(e)) return n;
	if (!isHTMLElement$2(e)) {
		let t = getParentNode(e);
		for (; t && !isLastTraversableNode(t);) {
			if (isElement(t) && !isStaticPositioned(t)) return t;
			t = getParentNode(t);
		}
		return n;
	}
	let i = getTrueOffsetParent(e, t);
	for (; i && isTableElement(i) && isStaticPositioned(i);) i = getTrueOffsetParent(i, t);
	return i && isLastTraversableNode(i) && isStaticPositioned(i) && !isContainingBlock(i) ? n : i || getContainingBlock(e) || n;
}
var getElementRects = async function(e) {
	let t = this.getOffsetParent || getOffsetParent, n = this.getDimensions, i = await n(e.floating);
	return {
		reference: getRectRelativeToOffsetParent(e.reference, await t(e.floating), e.strategy),
		floating: {
			x: 0,
			y: 0,
			width: i.width,
			height: i.height
		}
	};
};
function isRTL(e) {
	return getComputedStyle$1(e).direction === "rtl";
}
var platform = {
	convertOffsetParentRelativeRectToViewportRelativeRect,
	getDocumentElement,
	getClippingRect,
	getOffsetParent,
	getElementRects,
	getClientRects,
	getDimensions,
	getScale,
	isElement,
	isRTL
};
function rectsAreEqual(e, t) {
	return e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height;
}
function observeMove(e, t) {
	let n = null, i, a = getDocumentElement(e);
	function o() {
		var e;
		clearTimeout(i), (e = n) == null || e.disconnect(), n = null;
	}
	function s(c, d) {
		c === void 0 && (c = !1), d === void 0 && (d = 1), o();
		let f = e.getBoundingClientRect(), { left: g, top: y, width: b, height: x } = f;
		if (c || t(), !b || !x) return;
		let S = floor(y), C = floor(a.clientWidth - (g + b)), w = floor(a.clientHeight - (y + x)), E = floor(g), O = {
			rootMargin: -S + "px " + -C + "px " + -w + "px " + -E + "px",
			threshold: max(0, min(1, d)) || 1
		}, A = !0;
		function j(t) {
			let n = t[0].intersectionRatio;
			if (n !== d) {
				if (!A) return s();
				n ? s(!1, n) : i = setTimeout(() => {
					s(!1, 1e-7);
				}, 1e3);
			}
			n === 1 && !rectsAreEqual(f, e.getBoundingClientRect()) && s(), A = !1;
		}
		try {
			n = new IntersectionObserver(j, {
				...O,
				root: a.ownerDocument
			});
		} catch {
			n = new IntersectionObserver(j, O);
		}
		n.observe(e);
	}
	return s(!0), o;
}
function autoUpdate(e, t, n, i) {
	i === void 0 && (i = {});
	let { ancestorScroll: a = !0, ancestorResize: o = !0, elementResize: s = typeof ResizeObserver == "function", layoutShift: c = typeof IntersectionObserver == "function", animationFrame: d = !1 } = i, f = unwrapElement(e), g = a || o ? [...f ? getOverflowAncestors(f) : [], ...getOverflowAncestors(t)] : [];
	g.forEach((e) => {
		a && e.addEventListener("scroll", n, { passive: !0 }), o && e.addEventListener("resize", n);
	});
	let y = f && c ? observeMove(f, n) : null, b = -1, x = null;
	s && (x = new ResizeObserver((e) => {
		let [i] = e;
		i && i.target === f && x && (x.unobserve(t), cancelAnimationFrame(b), b = requestAnimationFrame(() => {
			var e;
			(e = x) == null || e.observe(t);
		})), n();
	}), f && !d && x.observe(f), x.observe(t));
	let S, C = d ? getBoundingClientRect(e) : null;
	d && w();
	function w() {
		let t = getBoundingClientRect(e);
		C && !rectsAreEqual(C, t) && n(), C = t, S = requestAnimationFrame(w);
	}
	return n(), () => {
		var e;
		g.forEach((e) => {
			a && e.removeEventListener("scroll", n), o && e.removeEventListener("resize", n);
		}), y?.(), (e = x) == null || e.disconnect(), x = null, d && cancelAnimationFrame(S);
	};
}
var offset$1 = offset$2, shift$1 = shift$2, flip$1 = flip$2, size$1 = size$2, hide$1 = hide$2, arrow$1 = arrow$2, limitShift$1 = limitShift$2, computePosition = (e, t, n) => {
	let i = /* @__PURE__ */ new Map(), a = {
		platform,
		...n
	}, o = {
		...a.platform,
		_c: i
	};
	return computePosition$1(e, t, {
		...a,
		platform: o
	});
}, index$1 = typeof document < "u" ? useLayoutEffect : function() {};
function deepEqual(e, t) {
	if (e === t) return !0;
	if (typeof e != typeof t) return !1;
	if (typeof e == "function" && e.toString() === t.toString()) return !0;
	let n, i, a;
	if (e && t && typeof e == "object") {
		if (Array.isArray(e)) {
			if (n = e.length, n !== t.length) return !1;
			for (i = n; i-- !== 0;) if (!deepEqual(e[i], t[i])) return !1;
			return !0;
		}
		if (a = Object.keys(e), n = a.length, n !== Object.keys(t).length) return !1;
		for (i = n; i-- !== 0;) if (!{}.hasOwnProperty.call(t, a[i])) return !1;
		for (i = n; i-- !== 0;) {
			let n = a[i];
			if (!(n === "_owner" && e.$$typeof) && !deepEqual(e[n], t[n])) return !1;
		}
		return !0;
	}
	return e !== e && t !== t;
}
function getDPR(e) {
	return typeof window > "u" ? 1 : (e.ownerDocument.defaultView || window).devicePixelRatio || 1;
}
function roundByDPR(e, t) {
	let n = getDPR(e);
	return Math.round(t * n) / n;
}
function useLatestRef(e) {
	let t = React$1.useRef(e);
	return index$1(() => {
		t.current = e;
	}), t;
}
function useFloating(e) {
	e === void 0 && (e = {});
	let { placement: t = "bottom", strategy: n = "absolute", middleware: i = [], platform: a, elements: { reference: o, floating: s } = {}, transform: c = !0, whileElementsMounted: d, open: f } = e, [g, y] = React$1.useState({
		x: 0,
		y: 0,
		strategy: n,
		placement: t,
		middlewareData: {},
		isPositioned: !1
	}), [b, x] = React$1.useState(i);
	deepEqual(b, i) || x(i);
	let [S, C] = React$1.useState(null), [w, E] = React$1.useState(null), O = React$1.useCallback((e) => {
		e !== F.current && (F.current = e, C(e));
	}, []), A = React$1.useCallback((e) => {
		e !== I.current && (I.current = e, E(e));
	}, []), j = o || S, M = s || w, F = React$1.useRef(null), I = React$1.useRef(null), R = React$1.useRef(g), zv = d != null, V = useLatestRef(d), Bv = useLatestRef(a), Vv = useLatestRef(f), Hv = React$1.useCallback(() => {
		if (!F.current || !I.current) return;
		let e = {
			placement: t,
			strategy: n,
			middleware: b
		};
		Bv.current && (e.platform = Bv.current), computePosition(F.current, I.current, e).then((e) => {
			let t = {
				...e,
				isPositioned: Vv.current !== !1
			};
			Uv.current && !deepEqual(R.current, t) && (R.current = t, ReactDOM$2.flushSync(() => {
				y(t);
			}));
		});
	}, [
		b,
		t,
		n,
		Bv,
		Vv
	]);
	index$1(() => {
		f === !1 && R.current.isPositioned && (R.current.isPositioned = !1, y((e) => ({
			...e,
			isPositioned: !1
		})));
	}, [f]);
	let Uv = React$1.useRef(!1);
	index$1(() => (Uv.current = !0, () => {
		Uv.current = !1;
	}), []), index$1(() => {
		if (j && (F.current = j), M && (I.current = M), j && M) {
			if (V.current) return V.current(j, M, Hv);
			Hv();
		}
	}, [
		j,
		M,
		Hv,
		V,
		zv
	]);
	let Wv = React$1.useMemo(() => ({
		reference: F,
		floating: I,
		setReference: O,
		setFloating: A
	}), [O, A]), Gv = React$1.useMemo(() => ({
		reference: j,
		floating: M
	}), [j, M]), Kv = React$1.useMemo(() => {
		let e = {
			position: n,
			left: 0,
			top: 0
		};
		if (!Gv.floating) return e;
		let t = roundByDPR(Gv.floating, g.x), i = roundByDPR(Gv.floating, g.y);
		return c ? {
			...e,
			transform: "translate(" + t + "px, " + i + "px)",
			...getDPR(Gv.floating) >= 1.5 && { willChange: "transform" }
		} : {
			position: n,
			left: t,
			top: i
		};
	}, [
		n,
		c,
		Gv.floating,
		g.x,
		g.y
	]);
	return React$1.useMemo(() => ({
		...g,
		update: Hv,
		refs: Wv,
		elements: Gv,
		floatingStyles: Kv
	}), [
		g,
		Hv,
		Wv,
		Gv,
		Kv
	]);
}
var arrow$1$1 = (e) => {
	function t(e) {
		return {}.hasOwnProperty.call(e, "current");
	}
	return {
		name: "arrow",
		options: e,
		fn(n) {
			let { element: i, padding: a } = typeof e == "function" ? e(n) : e;
			return i && t(i) ? i.current == null ? {} : arrow$1({
				element: i.current,
				padding: a
			}).fn(n) : i ? arrow$1({
				element: i,
				padding: a
			}).fn(n) : {};
		}
	};
}, offset = (e, t) => ({
	...offset$1(e),
	options: [e, t]
}), shift = (e, t) => ({
	...shift$1(e),
	options: [e, t]
}), limitShift = (e, t) => ({
	...limitShift$1(e),
	options: [e, t]
}), flip = (e, t) => ({
	...flip$1(e),
	options: [e, t]
}), size = (e, t) => ({
	...size$1(e),
	options: [e, t]
}), hide = (e, t) => ({
	...hide$1(e),
	options: [e, t]
}), arrow = (e, t) => ({
	...arrow$1$1(e),
	options: [e, t]
}), NAME$3 = "Arrow", Arrow$1 = React$1.forwardRef((e, t) => {
	let { children: n, width: i = 10, height: a = 5,...o } = e;
	return /* @__PURE__ */ jsx(Primitive.svg, {
		...o,
		ref: t,
		width: i,
		height: a,
		viewBox: "0 0 30 10",
		preserveAspectRatio: "none",
		children: e.asChild ? n : /* @__PURE__ */ jsx("polygon", { points: "0,0 30,0 15,10" })
	});
});
Arrow$1.displayName = NAME$3;
var Root$6 = Arrow$1;
function useSize(e) {
	let [t, n] = React$1.useState(void 0);
	return useLayoutEffect2(() => {
		if (e) {
			n({
				width: e.offsetWidth,
				height: e.offsetHeight
			});
			let t = new ResizeObserver((t) => {
				if (!Array.isArray(t) || !t.length) return;
				let i = t[0], a, o;
				if ("borderBoxSize" in i) {
					let e = i.borderBoxSize, t = Array.isArray(e) ? e[0] : e;
					a = t.inlineSize, o = t.blockSize;
				} else a = e.offsetWidth, o = e.offsetHeight;
				n({
					width: a,
					height: o
				});
			});
			return t.observe(e, { box: "border-box" }), () => t.unobserve(e);
		} else n(void 0);
	}, [e]), t;
}
var POPPER_NAME = "Popper", [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME), [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME), Popper = (e) => {
	let { __scopePopper: t, children: n } = e, [i, a] = React$1.useState(null);
	return /* @__PURE__ */ jsx(PopperProvider, {
		scope: t,
		anchor: i,
		onAnchorChange: a,
		children: n
	});
};
Popper.displayName = POPPER_NAME;
var ANCHOR_NAME$1 = "PopperAnchor", PopperAnchor = React$1.forwardRef((e, t) => {
	let { __scopePopper: n, virtualRef: i,...a } = e, o = usePopperContext(ANCHOR_NAME$1, n), s = React$1.useRef(null), c = useComposedRefs$1(t, s), d = React$1.useRef(null);
	return React$1.useEffect(() => {
		let e = d.current;
		d.current = i?.current || s.current, e !== d.current && o.onAnchorChange(d.current);
	}), i ? null : /* @__PURE__ */ jsx(Primitive.div, {
		...a,
		ref: c
	});
});
PopperAnchor.displayName = ANCHOR_NAME$1;
var CONTENT_NAME$9 = "PopperContent", [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME$9), PopperContent = React$1.forwardRef((e, t) => {
	let { __scopePopper: n, side: i = "bottom", sideOffset: a = 0, align: o = "center", alignOffset: s = 0, arrowPadding: c = 0, avoidCollisions: d = !0, collisionBoundary: f = [], collisionPadding: g = 0, sticky: y = "partial", hideWhenDetached: b = !1, updatePositionStrategy: x = "optimized", onPlaced: S,...C } = e, w = usePopperContext(CONTENT_NAME$9, n), [E, O] = React$1.useState(null), A = useComposedRefs$1(t, (e) => O(e)), [j, M] = React$1.useState(null), F = useSize(j), I = F?.width ?? 0, R = F?.height ?? 0, zv = i + (o === "center" ? "" : "-" + o), V = typeof g == "number" ? g : {
		top: 0,
		right: 0,
		bottom: 0,
		left: 0,
		...g
	}, Bv = Array.isArray(f) ? f : [f], Vv = Bv.length > 0, Hv = {
		padding: V,
		boundary: Bv.filter(isNotNull),
		altBoundary: Vv
	}, { refs: Uv, floatingStyles: Wv, placement: Gv, isPositioned: Kv, middlewareData: q } = useFloating({
		strategy: "fixed",
		placement: zv,
		whileElementsMounted: (...e) => autoUpdate(...e, { animationFrame: x === "always" }),
		elements: { reference: w.anchor },
		middleware: [
			offset({
				mainAxis: a + R,
				alignmentAxis: s
			}),
			d && shift({
				mainAxis: !0,
				crossAxis: !1,
				limiter: y === "partial" ? limitShift() : void 0,
				...Hv
			}),
			d && flip({ ...Hv }),
			size({
				...Hv,
				apply: ({ elements: e, rects: t, availableWidth: n, availableHeight: i }) => {
					let { width: a, height: o } = t.reference, s = e.floating.style;
					s.setProperty("--radix-popper-available-width", `${n}px`), s.setProperty("--radix-popper-available-height", `${i}px`), s.setProperty("--radix-popper-anchor-width", `${a}px`), s.setProperty("--radix-popper-anchor-height", `${o}px`);
				}
			}),
			j && arrow({
				element: j,
				padding: c
			}),
			transformOrigin({
				arrowWidth: I,
				arrowHeight: R
			}),
			b && hide({
				strategy: "referenceHidden",
				...Hv
			})
		]
	}), [qv, Jv] = getSideAndAlignFromPlacement(Gv), Yv = useCallbackRef(S);
	useLayoutEffect2(() => {
		Kv && Yv?.();
	}, [Kv, Yv]);
	let Xv = q.arrow?.x, Zv = q.arrow?.y, Qv = q.arrow?.centerOffset !== 0, [$v, ey] = React$1.useState();
	return useLayoutEffect2(() => {
		E && ey(window.getComputedStyle(E).zIndex);
	}, [E]), /* @__PURE__ */ jsx("div", {
		ref: Uv.setFloating,
		"data-radix-popper-content-wrapper": "",
		style: {
			...Wv,
			transform: Kv ? Wv.transform : "translate(0, -200%)",
			minWidth: "max-content",
			zIndex: $v,
			"--radix-popper-transform-origin": [q.transformOrigin?.x, q.transformOrigin?.y].join(" "),
			...q.hide?.referenceHidden && {
				visibility: "hidden",
				pointerEvents: "none"
			}
		},
		dir: e.dir,
		children: /* @__PURE__ */ jsx(PopperContentProvider, {
			scope: n,
			placedSide: qv,
			onArrowChange: M,
			arrowX: Xv,
			arrowY: Zv,
			shouldHideArrow: Qv,
			children: /* @__PURE__ */ jsx(Primitive.div, {
				"data-side": qv,
				"data-align": Jv,
				...C,
				ref: A,
				style: {
					...C.style,
					animation: Kv ? void 0 : "none"
				}
			})
		})
	});
});
PopperContent.displayName = CONTENT_NAME$9;
var ARROW_NAME$5 = "PopperArrow", OPPOSITE_SIDE = {
	top: "bottom",
	right: "left",
	bottom: "top",
	left: "right"
}, PopperArrow = React$1.forwardRef(function(e, t) {
	let { __scopePopper: n,...i } = e, a = useContentContext(ARROW_NAME$5, n), o = OPPOSITE_SIDE[a.placedSide];
	return /* @__PURE__ */ jsx("span", {
		ref: a.onArrowChange,
		style: {
			position: "absolute",
			left: a.arrowX,
			top: a.arrowY,
			[o]: 0,
			transformOrigin: {
				top: "",
				right: "0 0",
				bottom: "center 0",
				left: "100% 0"
			}[a.placedSide],
			transform: {
				top: "translateY(100%)",
				right: "translateY(50%) rotate(90deg) translateX(-50%)",
				bottom: "rotate(180deg)",
				left: "translateY(50%) rotate(-90deg) translateX(50%)"
			}[a.placedSide],
			visibility: a.shouldHideArrow ? "hidden" : void 0
		},
		children: /* @__PURE__ */ jsx(Root$6, {
			...i,
			ref: t,
			style: {
				...i.style,
				display: "block"
			}
		})
	});
});
PopperArrow.displayName = ARROW_NAME$5;
function isNotNull(e) {
	return e !== null;
}
var transformOrigin = (e) => ({
	name: "transformOrigin",
	options: e,
	fn(t) {
		let { placement: n, rects: i, middlewareData: a } = t, o = a.arrow?.centerOffset !== 0, s = o ? 0 : e.arrowWidth, c = o ? 0 : e.arrowHeight, [d, f] = getSideAndAlignFromPlacement(n), g = {
			start: "0%",
			center: "50%",
			end: "100%"
		}[f], y = (a.arrow?.x ?? 0) + s / 2, b = (a.arrow?.y ?? 0) + c / 2, x = "", S = "";
		return d === "bottom" ? (x = o ? g : `${y}px`, S = `${-c}px`) : d === "top" ? (x = o ? g : `${y}px`, S = `${i.floating.height + c}px`) : d === "right" ? (x = `${-c}px`, S = o ? g : `${b}px`) : d === "left" && (x = `${i.floating.width + c}px`, S = o ? g : `${b}px`), { data: {
			x,
			y: S
		} };
	}
});
function getSideAndAlignFromPlacement(e) {
	let [t, n = "center"] = e.split("-");
	return [t, n];
}
var Root2$6 = Popper, Anchor = PopperAnchor, Content$1 = PopperContent, Arrow = PopperArrow, ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus", EVENT_OPTIONS = {
	bubbles: !1,
	cancelable: !0
}, GROUP_NAME$4 = "RovingFocusGroup", [Collection$2, useCollection$2, createCollectionScope$2] = createCollection(GROUP_NAME$4), [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(GROUP_NAME$4, [createCollectionScope$2]), [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME$4), RovingFocusGroup = React$1.forwardRef((e, t) => /* @__PURE__ */ jsx(Collection$2.Provider, {
	scope: e.__scopeRovingFocusGroup,
	children: /* @__PURE__ */ jsx(Collection$2.Slot, {
		scope: e.__scopeRovingFocusGroup,
		children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, {
			...e,
			ref: t
		})
	})
}));
RovingFocusGroup.displayName = GROUP_NAME$4;
var RovingFocusGroupImpl = React$1.forwardRef((e, t) => {
	let { __scopeRovingFocusGroup: n, orientation: i, loop: a = !1, dir: o, currentTabStopId: s, defaultCurrentTabStopId: c, onCurrentTabStopIdChange: d, onEntryFocus: f, preventScrollOnEntryFocus: g = !1,...y } = e, b = React$1.useRef(null), x = useComposedRefs$1(t, b), S = useDirection(o), [C, w] = useControllableState({
		prop: s,
		defaultProp: c ?? null,
		onChange: d,
		caller: GROUP_NAME$4
	}), [E, O] = React$1.useState(!1), A = useCallbackRef(f), j = useCollection$2(n), M = React$1.useRef(!1), [F, I] = React$1.useState(0);
	return React$1.useEffect(() => {
		let e = b.current;
		if (e) return e.addEventListener(ENTRY_FOCUS, A), () => e.removeEventListener(ENTRY_FOCUS, A);
	}, [A]), /* @__PURE__ */ jsx(RovingFocusProvider, {
		scope: n,
		orientation: i,
		dir: S,
		loop: a,
		currentTabStopId: C,
		onItemFocus: React$1.useCallback((e) => w(e), [w]),
		onItemShiftTab: React$1.useCallback(() => O(!0), []),
		onFocusableItemAdd: React$1.useCallback(() => I((e) => e + 1), []),
		onFocusableItemRemove: React$1.useCallback(() => I((e) => e - 1), []),
		children: /* @__PURE__ */ jsx(Primitive.div, {
			tabIndex: E || F === 0 ? -1 : 0,
			"data-orientation": i,
			...y,
			ref: x,
			style: {
				outline: "none",
				...e.style
			},
			onMouseDown: composeEventHandlers(e.onMouseDown, () => {
				M.current = !0;
			}),
			onFocus: composeEventHandlers(e.onFocus, (e) => {
				let t = !M.current;
				if (e.target === e.currentTarget && t && !E) {
					let t = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);
					if (e.currentTarget.dispatchEvent(t), !t.defaultPrevented) {
						let e = j().filter((e) => e.focusable), t = e.find((e) => e.active), n = e.find((e) => e.id === C), i = [
							t,
							n,
							...e
						].filter(Boolean).map((e) => e.ref.current);
						focusFirst$1(i, g);
					}
				}
				M.current = !1;
			}),
			onBlur: composeEventHandlers(e.onBlur, () => O(!1))
		})
	});
}), ITEM_NAME$6 = "RovingFocusGroupItem", RovingFocusGroupItem = React$1.forwardRef((e, t) => {
	let { __scopeRovingFocusGroup: n, focusable: i = !0, active: a = !1, tabStopId: o, children: s,...c } = e, d = useId$1(), f = o || d, g = useRovingFocusContext(ITEM_NAME$6, n), y = g.currentTabStopId === f, b = useCollection$2(n), { onFocusableItemAdd: x, onFocusableItemRemove: S, currentTabStopId: C } = g;
	return React$1.useEffect(() => {
		if (i) return x(), () => S();
	}, [
		i,
		x,
		S
	]), /* @__PURE__ */ jsx(Collection$2.ItemSlot, {
		scope: n,
		id: f,
		focusable: i,
		active: a,
		children: /* @__PURE__ */ jsx(Primitive.span, {
			tabIndex: y ? 0 : -1,
			"data-orientation": g.orientation,
			...c,
			ref: t,
			onMouseDown: composeEventHandlers(e.onMouseDown, (e) => {
				i ? g.onItemFocus(f) : e.preventDefault();
			}),
			onFocus: composeEventHandlers(e.onFocus, () => g.onItemFocus(f)),
			onKeyDown: composeEventHandlers(e.onKeyDown, (e) => {
				if (e.key === "Tab" && e.shiftKey) {
					g.onItemShiftTab();
					return;
				}
				if (e.target !== e.currentTarget) return;
				let t = getFocusIntent(e, g.orientation, g.dir);
				if (t !== void 0) {
					if (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey) return;
					e.preventDefault();
					let n = b().filter((e) => e.focusable).map((e) => e.ref.current);
					if (t === "last") n.reverse();
					else if (t === "prev" || t === "next") {
						t === "prev" && n.reverse();
						let i = n.indexOf(e.currentTarget);
						n = g.loop ? wrapArray$2(n, i + 1) : n.slice(i + 1);
					}
					setTimeout(() => focusFirst$1(n));
				}
			}),
			children: typeof s == "function" ? s({
				isCurrentTabStop: y,
				hasTabStop: C != null
			}) : s
		})
	});
});
RovingFocusGroupItem.displayName = ITEM_NAME$6;
var MAP_KEY_TO_FOCUS_INTENT = {
	ArrowLeft: "prev",
	ArrowUp: "prev",
	ArrowRight: "next",
	ArrowDown: "next",
	PageUp: "first",
	Home: "first",
	PageDown: "last",
	End: "last"
};
function getDirectionAwareKey(e, t) {
	return t === "rtl" ? e === "ArrowLeft" ? "ArrowRight" : e === "ArrowRight" ? "ArrowLeft" : e : e;
}
function getFocusIntent(e, t, n) {
	let i = getDirectionAwareKey(e.key, n);
	if (!(t === "vertical" && ["ArrowLeft", "ArrowRight"].includes(i)) && !(t === "horizontal" && ["ArrowUp", "ArrowDown"].includes(i))) return MAP_KEY_TO_FOCUS_INTENT[i];
}
function focusFirst$1(e, t = !1) {
	let n = document.activeElement;
	for (let i of e) if (i === n || (i.focus({ preventScroll: t }), document.activeElement !== n)) return;
}
function wrapArray$2(e, t) {
	return e.map((n, i) => e[(t + i) % e.length]);
}
var Root$5 = RovingFocusGroup, Item$1 = RovingFocusGroupItem, SELECTION_KEYS$1 = ["Enter", " "], FIRST_KEYS = [
	"ArrowDown",
	"PageUp",
	"Home"
], LAST_KEYS = [
	"ArrowUp",
	"PageDown",
	"End"
], FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS], SUB_OPEN_KEYS = {
	ltr: [...SELECTION_KEYS$1, "ArrowRight"],
	rtl: [...SELECTION_KEYS$1, "ArrowLeft"]
}, SUB_CLOSE_KEYS = {
	ltr: ["ArrowLeft"],
	rtl: ["ArrowRight"]
}, MENU_NAME = "Menu", [Collection$1, useCollection$1, createCollectionScope$1] = createCollection(MENU_NAME), [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [
	createCollectionScope$1,
	createPopperScope,
	createRovingFocusGroupScope
]), usePopperScope$2 = createPopperScope(), useRovingFocusGroupScope$2 = createRovingFocusGroupScope(), [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME), [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME), Menu = (e) => {
	let { __scopeMenu: t, open: n = !1, children: i, dir: a, onOpenChange: o, modal: s = !0 } = e, c = usePopperScope$2(t), [d, f] = React$1.useState(null), g = React$1.useRef(!1), y = useCallbackRef(o), b = useDirection(a);
	return React$1.useEffect(() => {
		let e = () => {
			g.current = !0, document.addEventListener("pointerdown", t, {
				capture: !0,
				once: !0
			}), document.addEventListener("pointermove", t, {
				capture: !0,
				once: !0
			});
		}, t = () => g.current = !1;
		return document.addEventListener("keydown", e, { capture: !0 }), () => {
			document.removeEventListener("keydown", e, { capture: !0 }), document.removeEventListener("pointerdown", t, { capture: !0 }), document.removeEventListener("pointermove", t, { capture: !0 });
		};
	}, []), /* @__PURE__ */ jsx(Root2$6, {
		...c,
		children: /* @__PURE__ */ jsx(MenuProvider, {
			scope: t,
			open: n,
			onOpenChange: y,
			content: d,
			onContentChange: f,
			children: /* @__PURE__ */ jsx(MenuRootProvider, {
				scope: t,
				onClose: React$1.useCallback(() => y(!1), [y]),
				isUsingKeyboardRef: g,
				dir: b,
				modal: s,
				children: i
			})
		})
	});
};
Menu.displayName = MENU_NAME;
var ANCHOR_NAME = "MenuAnchor", MenuAnchor = React$1.forwardRef((e, t) => {
	let { __scopeMenu: n,...i } = e, a = usePopperScope$2(n);
	return /* @__PURE__ */ jsx(Anchor, {
		...a,
		...i,
		ref: t
	});
});
MenuAnchor.displayName = ANCHOR_NAME;
var PORTAL_NAME$5 = "MenuPortal", [PortalProvider$1, usePortalContext$1] = createMenuContext(PORTAL_NAME$5, { forceMount: void 0 }), MenuPortal = (e) => {
	let { __scopeMenu: t, forceMount: n, children: i, container: a } = e, o = useMenuContext(PORTAL_NAME$5, t);
	return /* @__PURE__ */ jsx(PortalProvider$1, {
		scope: t,
		forceMount: n,
		children: /* @__PURE__ */ jsx(Presence, {
			present: n || o.open,
			children: /* @__PURE__ */ jsx(Portal, {
				asChild: !0,
				container: a,
				children: i
			})
		})
	});
};
MenuPortal.displayName = PORTAL_NAME$5;
var CONTENT_NAME$8 = "MenuContent", [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME$8), MenuContent = React$1.forwardRef((e, t) => {
	let n = usePortalContext$1(CONTENT_NAME$8, e.__scopeMenu), { forceMount: i = n.forceMount,...a } = e, o = useMenuContext(CONTENT_NAME$8, e.__scopeMenu), s = useMenuRootContext(CONTENT_NAME$8, e.__scopeMenu);
	return /* @__PURE__ */ jsx(Collection$1.Provider, {
		scope: e.__scopeMenu,
		children: /* @__PURE__ */ jsx(Presence, {
			present: i || o.open,
			children: /* @__PURE__ */ jsx(Collection$1.Slot, {
				scope: e.__scopeMenu,
				children: s.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, {
					...a,
					ref: t
				}) : /* @__PURE__ */ jsx(MenuRootContentNonModal, {
					...a,
					ref: t
				})
			})
		})
	});
}), MenuRootContentModal = React$1.forwardRef((e, t) => {
	let n = useMenuContext(CONTENT_NAME$8, e.__scopeMenu), i = React$1.useRef(null), a = useComposedRefs$1(t, i);
	return React$1.useEffect(() => {
		let e = i.current;
		if (e) return hideOthers(e);
	}, []), /* @__PURE__ */ jsx(MenuContentImpl, {
		...e,
		ref: a,
		trapFocus: n.open,
		disableOutsidePointerEvents: n.open,
		disableOutsideScroll: !0,
		onFocusOutside: composeEventHandlers(e.onFocusOutside, (e) => e.preventDefault(), { checkForDefaultPrevented: !1 }),
		onDismiss: () => n.onOpenChange(!1)
	});
}), MenuRootContentNonModal = React$1.forwardRef((e, t) => {
	let n = useMenuContext(CONTENT_NAME$8, e.__scopeMenu);
	return /* @__PURE__ */ jsx(MenuContentImpl, {
		...e,
		ref: t,
		trapFocus: !1,
		disableOutsidePointerEvents: !1,
		disableOutsideScroll: !1,
		onDismiss: () => n.onOpenChange(!1)
	});
}), Slot$2 = /* @__PURE__ */ createSlot("MenuContent.ScrollLock"), MenuContentImpl = React$1.forwardRef((e, t) => {
	let { __scopeMenu: n, loop: i = !1, trapFocus: a, onOpenAutoFocus: o, onCloseAutoFocus: s, disableOutsidePointerEvents: c, onEntryFocus: d, onEscapeKeyDown: f, onPointerDownOutside: g, onFocusOutside: y, onInteractOutside: b, onDismiss: x, disableOutsideScroll: S,...C } = e, w = useMenuContext(CONTENT_NAME$8, n), E = useMenuRootContext(CONTENT_NAME$8, n), O = usePopperScope$2(n), A = useRovingFocusGroupScope$2(n), j = useCollection$1(n), [M, F] = React$1.useState(null), I = React$1.useRef(null), R = useComposedRefs$1(t, I, w.onContentChange), zv = React$1.useRef(0), V = React$1.useRef(""), Bv = React$1.useRef(0), Vv = React$1.useRef(null), Hv = React$1.useRef("right"), Uv = React$1.useRef(0), Wv = S ? Combination_default : React$1.Fragment, Gv = S ? {
		as: Slot$2,
		allowPinchZoom: !0
	} : void 0, Kv = (e) => {
		let t = V.current + e, n = j().filter((e) => !e.disabled), i = document.activeElement, a = n.find((e) => e.ref.current === i)?.textValue, o = n.map((e) => e.textValue), s = getNextMatch(o, t, a), c = n.find((e) => e.textValue === s)?.ref.current;
		(function e(t) {
			V.current = t, window.clearTimeout(zv.current), t !== "" && (zv.current = window.setTimeout(() => e(""), 1e3));
		})(t), c && setTimeout(() => c.focus());
	};
	React$1.useEffect(() => () => window.clearTimeout(zv.current), []), useFocusGuards();
	let q = React$1.useCallback((e) => Hv.current === Vv.current?.side && isPointerInGraceArea(e, Vv.current?.area), []);
	return /* @__PURE__ */ jsx(MenuContentProvider, {
		scope: n,
		searchRef: V,
		onItemEnter: React$1.useCallback((e) => {
			q(e) && e.preventDefault();
		}, [q]),
		onItemLeave: React$1.useCallback((e) => {
			q(e) || (I.current?.focus(), F(null));
		}, [q]),
		onTriggerLeave: React$1.useCallback((e) => {
			q(e) && e.preventDefault();
		}, [q]),
		pointerGraceTimerRef: Bv,
		onPointerGraceIntentChange: React$1.useCallback((e) => {
			Vv.current = e;
		}, []),
		children: /* @__PURE__ */ jsx(Wv, {
			...Gv,
			children: /* @__PURE__ */ jsx(FocusScope, {
				asChild: !0,
				trapped: a,
				onMountAutoFocus: composeEventHandlers(o, (e) => {
					e.preventDefault(), I.current?.focus({ preventScroll: !0 });
				}),
				onUnmountAutoFocus: s,
				children: /* @__PURE__ */ jsx(DismissableLayer, {
					asChild: !0,
					disableOutsidePointerEvents: c,
					onEscapeKeyDown: f,
					onPointerDownOutside: g,
					onFocusOutside: y,
					onInteractOutside: b,
					onDismiss: x,
					children: /* @__PURE__ */ jsx(Root$5, {
						asChild: !0,
						...A,
						dir: E.dir,
						orientation: "vertical",
						loop: i,
						currentTabStopId: M,
						onCurrentTabStopIdChange: F,
						onEntryFocus: composeEventHandlers(d, (e) => {
							E.isUsingKeyboardRef.current || e.preventDefault();
						}),
						preventScrollOnEntryFocus: !0,
						children: /* @__PURE__ */ jsx(Content$1, {
							role: "menu",
							"aria-orientation": "vertical",
							"data-state": getOpenState(w.open),
							"data-radix-menu-content": "",
							dir: E.dir,
							...O,
							...C,
							ref: R,
							style: {
								outline: "none",
								...C.style
							},
							onKeyDown: composeEventHandlers(C.onKeyDown, (e) => {
								let t = e.target.closest("[data-radix-menu-content]") === e.currentTarget, n = e.ctrlKey || e.altKey || e.metaKey, i = e.key.length === 1;
								t && (e.key === "Tab" && e.preventDefault(), !n && i && Kv(e.key));
								let a = I.current;
								if (e.target !== a || !FIRST_LAST_KEYS.includes(e.key)) return;
								e.preventDefault();
								let o = j().filter((e) => !e.disabled).map((e) => e.ref.current);
								LAST_KEYS.includes(e.key) && o.reverse(), focusFirst(o);
							}),
							onBlur: composeEventHandlers(e.onBlur, (e) => {
								e.currentTarget.contains(e.target) || (window.clearTimeout(zv.current), V.current = "");
							}),
							onPointerMove: composeEventHandlers(e.onPointerMove, whenMouse((e) => {
								let t = e.target, n = Uv.current !== e.clientX;
								e.currentTarget.contains(t) && n && (Hv.current = e.clientX > Uv.current ? "right" : "left", Uv.current = e.clientX);
							}))
						})
					})
				})
			})
		})
	});
});
MenuContent.displayName = CONTENT_NAME$8;
var GROUP_NAME$3 = "MenuGroup", MenuGroup = React$1.forwardRef((e, t) => {
	let { __scopeMenu: n,...i } = e;
	return /* @__PURE__ */ jsx(Primitive.div, {
		role: "group",
		...i,
		ref: t
	});
});
MenuGroup.displayName = GROUP_NAME$3;
var LABEL_NAME$3 = "MenuLabel", MenuLabel = React$1.forwardRef((e, t) => {
	let { __scopeMenu: n,...i } = e;
	return /* @__PURE__ */ jsx(Primitive.div, {
		...i,
		ref: t
	});
});
MenuLabel.displayName = LABEL_NAME$3;
var ITEM_NAME$5 = "MenuItem", ITEM_SELECT = "menu.itemSelect", MenuItem = React$1.forwardRef((e, t) => {
	let { disabled: n = !1, onSelect: i,...a } = e, o = React$1.useRef(null), s = useMenuRootContext(ITEM_NAME$5, e.__scopeMenu), c = useMenuContentContext(ITEM_NAME$5, e.__scopeMenu), d = useComposedRefs$1(t, o), f = React$1.useRef(!1), g = () => {
		let e = o.current;
		if (!n && e) {
			let t = new CustomEvent(ITEM_SELECT, {
				bubbles: !0,
				cancelable: !0
			});
			e.addEventListener(ITEM_SELECT, (e) => i?.(e), { once: !0 }), dispatchDiscreteCustomEvent(e, t), t.defaultPrevented ? f.current = !1 : s.onClose();
		}
	};
	return /* @__PURE__ */ jsx(MenuItemImpl, {
		...a,
		ref: d,
		disabled: n,
		onClick: composeEventHandlers(e.onClick, g),
		onPointerDown: (t) => {
			e.onPointerDown?.(t), f.current = !0;
		},
		onPointerUp: composeEventHandlers(e.onPointerUp, (e) => {
			f.current || e.currentTarget?.click();
		}),
		onKeyDown: composeEventHandlers(e.onKeyDown, (e) => {
			let t = c.searchRef.current !== "";
			n || t && e.key === " " || SELECTION_KEYS$1.includes(e.key) && (e.currentTarget.click(), e.preventDefault());
		})
	});
});
MenuItem.displayName = ITEM_NAME$5;
var MenuItemImpl = React$1.forwardRef((e, t) => {
	let { __scopeMenu: n, disabled: i = !1, textValue: a,...o } = e, s = useMenuContentContext(ITEM_NAME$5, n), c = useRovingFocusGroupScope$2(n), d = React$1.useRef(null), f = useComposedRefs$1(t, d), [g, y] = React$1.useState(!1), [b, x] = React$1.useState("");
	return React$1.useEffect(() => {
		let e = d.current;
		e && x((e.textContent ?? "").trim());
	}, [o.children]), /* @__PURE__ */ jsx(Collection$1.ItemSlot, {
		scope: n,
		disabled: i,
		textValue: a ?? b,
		children: /* @__PURE__ */ jsx(Item$1, {
			asChild: !0,
			...c,
			focusable: !i,
			children: /* @__PURE__ */ jsx(Primitive.div, {
				role: "menuitem",
				"data-highlighted": g ? "" : void 0,
				"aria-disabled": i || void 0,
				"data-disabled": i ? "" : void 0,
				...o,
				ref: f,
				onPointerMove: composeEventHandlers(e.onPointerMove, whenMouse((e) => {
					i ? s.onItemLeave(e) : (s.onItemEnter(e), e.defaultPrevented || e.currentTarget.focus({ preventScroll: !0 }));
				})),
				onPointerLeave: composeEventHandlers(e.onPointerLeave, whenMouse((e) => s.onItemLeave(e))),
				onFocus: composeEventHandlers(e.onFocus, () => y(!0)),
				onBlur: composeEventHandlers(e.onBlur, () => y(!1))
			})
		})
	});
}), CHECKBOX_ITEM_NAME$2 = "MenuCheckboxItem", MenuCheckboxItem = React$1.forwardRef((e, t) => {
	let { checked: n = !1, onCheckedChange: i,...a } = e;
	return /* @__PURE__ */ jsx(ItemIndicatorProvider, {
		scope: e.__scopeMenu,
		checked: n,
		children: /* @__PURE__ */ jsx(MenuItem, {
			role: "menuitemcheckbox",
			"aria-checked": isIndeterminate$1(n) ? "mixed" : n,
			...a,
			ref: t,
			"data-state": getCheckedState(n),
			onSelect: composeEventHandlers(a.onSelect, () => i?.(isIndeterminate$1(n) ? !0 : !n), { checkForDefaultPrevented: !1 })
		})
	});
});
MenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME$2;
var RADIO_GROUP_NAME$2 = "MenuRadioGroup", [RadioGroupProvider, useRadioGroupContext] = createMenuContext(RADIO_GROUP_NAME$2, {
	value: void 0,
	onValueChange: () => {}
}), MenuRadioGroup = React$1.forwardRef((e, t) => {
	let { value: n, onValueChange: i,...a } = e, o = useCallbackRef(i);
	return /* @__PURE__ */ jsx(RadioGroupProvider, {
		scope: e.__scopeMenu,
		value: n,
		onValueChange: o,
		children: /* @__PURE__ */ jsx(MenuGroup, {
			...a,
			ref: t
		})
	});
});
MenuRadioGroup.displayName = RADIO_GROUP_NAME$2;
var RADIO_ITEM_NAME$2 = "MenuRadioItem", MenuRadioItem = React$1.forwardRef((e, t) => {
	let { value: n,...i } = e, a = useRadioGroupContext(RADIO_ITEM_NAME$2, e.__scopeMenu), o = n === a.value;
	return /* @__PURE__ */ jsx(ItemIndicatorProvider, {
		scope: e.__scopeMenu,
		checked: o,
		children: /* @__PURE__ */ jsx(MenuItem, {
			role: "menuitemradio",
			"aria-checked": o,
			...i,
			ref: t,
			"data-state": getCheckedState(o),
			onSelect: composeEventHandlers(i.onSelect, () => a.onValueChange?.(n), { checkForDefaultPrevented: !1 })
		})
	});
});
MenuRadioItem.displayName = RADIO_ITEM_NAME$2;
var ITEM_INDICATOR_NAME$1 = "MenuItemIndicator", [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(ITEM_INDICATOR_NAME$1, { checked: !1 }), MenuItemIndicator = React$1.forwardRef((e, t) => {
	let { __scopeMenu: n, forceMount: i,...a } = e, o = useItemIndicatorContext(ITEM_INDICATOR_NAME$1, n);
	return /* @__PURE__ */ jsx(Presence, {
		present: i || isIndeterminate$1(o.checked) || o.checked === !0,
		children: /* @__PURE__ */ jsx(Primitive.span, {
			...a,
			ref: t,
			"data-state": getCheckedState(o.checked)
		})
	});
});
MenuItemIndicator.displayName = ITEM_INDICATOR_NAME$1;
var SEPARATOR_NAME$3 = "MenuSeparator", MenuSeparator = React$1.forwardRef((e, t) => {
	let { __scopeMenu: n,...i } = e;
	return /* @__PURE__ */ jsx(Primitive.div, {
		role: "separator",
		"aria-orientation": "horizontal",
		...i,
		ref: t
	});
});
MenuSeparator.displayName = SEPARATOR_NAME$3;
var ARROW_NAME$4 = "MenuArrow", MenuArrow = React$1.forwardRef((e, t) => {
	let { __scopeMenu: n,...i } = e, a = usePopperScope$2(n);
	return /* @__PURE__ */ jsx(Arrow, {
		...a,
		...i,
		ref: t
	});
});
MenuArrow.displayName = ARROW_NAME$4;
var SUB_NAME$1 = "MenuSub", [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME$1), MenuSub = (e) => {
	let { __scopeMenu: t, children: n, open: i = !1, onOpenChange: a } = e, o = useMenuContext(SUB_NAME$1, t), s = usePopperScope$2(t), [c, d] = React$1.useState(null), [f, g] = React$1.useState(null), y = useCallbackRef(a);
	return React$1.useEffect(() => (o.open === !1 && y(!1), () => y(!1)), [o.open, y]), /* @__PURE__ */ jsx(Root2$6, {
		...s,
		children: /* @__PURE__ */ jsx(MenuProvider, {
			scope: t,
			open: i,
			onOpenChange: y,
			content: f,
			onContentChange: g,
			children: /* @__PURE__ */ jsx(MenuSubProvider, {
				scope: t,
				contentId: useId$1(),
				triggerId: useId$1(),
				trigger: c,
				onTriggerChange: d,
				children: n
			})
		})
	});
};
MenuSub.displayName = SUB_NAME$1;
var SUB_TRIGGER_NAME$2 = "MenuSubTrigger", MenuSubTrigger = React$1.forwardRef((e, t) => {
	let n = useMenuContext(SUB_TRIGGER_NAME$2, e.__scopeMenu), i = useMenuRootContext(SUB_TRIGGER_NAME$2, e.__scopeMenu), a = useMenuSubContext(SUB_TRIGGER_NAME$2, e.__scopeMenu), o = useMenuContentContext(SUB_TRIGGER_NAME$2, e.__scopeMenu), s = React$1.useRef(null), { pointerGraceTimerRef: c, onPointerGraceIntentChange: d } = o, f = { __scopeMenu: e.__scopeMenu }, g = React$1.useCallback(() => {
		s.current && window.clearTimeout(s.current), s.current = null;
	}, []);
	return React$1.useEffect(() => g, [g]), React$1.useEffect(() => {
		let e = c.current;
		return () => {
			window.clearTimeout(e), d(null);
		};
	}, [c, d]), /* @__PURE__ */ jsx(MenuAnchor, {
		asChild: !0,
		...f,
		children: /* @__PURE__ */ jsx(MenuItemImpl, {
			id: a.triggerId,
			"aria-haspopup": "menu",
			"aria-expanded": n.open,
			"aria-controls": a.contentId,
			"data-state": getOpenState(n.open),
			...e,
			ref: composeRefs$1(t, a.onTriggerChange),
			onClick: (t) => {
				e.onClick?.(t), !(e.disabled || t.defaultPrevented) && (t.currentTarget.focus(), n.open || n.onOpenChange(!0));
			},
			onPointerMove: composeEventHandlers(e.onPointerMove, whenMouse((t) => {
				o.onItemEnter(t), !t.defaultPrevented && !e.disabled && !n.open && !s.current && (o.onPointerGraceIntentChange(null), s.current = window.setTimeout(() => {
					n.onOpenChange(!0), g();
				}, 100));
			})),
			onPointerLeave: composeEventHandlers(e.onPointerLeave, whenMouse((e) => {
				g();
				let t = n.content?.getBoundingClientRect();
				if (t) {
					let i = n.content?.dataset.side, a = i === "right", s = a ? -5 : 5, d = t[a ? "left" : "right"], f = t[a ? "right" : "left"];
					o.onPointerGraceIntentChange({
						area: [
							{
								x: e.clientX + s,
								y: e.clientY
							},
							{
								x: d,
								y: t.top
							},
							{
								x: f,
								y: t.top
							},
							{
								x: f,
								y: t.bottom
							},
							{
								x: d,
								y: t.bottom
							}
						],
						side: i
					}), window.clearTimeout(c.current), c.current = window.setTimeout(() => o.onPointerGraceIntentChange(null), 300);
				} else {
					if (o.onTriggerLeave(e), e.defaultPrevented) return;
					o.onPointerGraceIntentChange(null);
				}
			})),
			onKeyDown: composeEventHandlers(e.onKeyDown, (t) => {
				let a = o.searchRef.current !== "";
				e.disabled || a && t.key === " " || SUB_OPEN_KEYS[i.dir].includes(t.key) && (n.onOpenChange(!0), n.content?.focus(), t.preventDefault());
			})
		})
	});
});
MenuSubTrigger.displayName = SUB_TRIGGER_NAME$2;
var SUB_CONTENT_NAME$2 = "MenuSubContent", MenuSubContent = React$1.forwardRef((e, t) => {
	let n = usePortalContext$1(CONTENT_NAME$8, e.__scopeMenu), { forceMount: i = n.forceMount,...a } = e, o = useMenuContext(CONTENT_NAME$8, e.__scopeMenu), s = useMenuRootContext(CONTENT_NAME$8, e.__scopeMenu), c = useMenuSubContext(SUB_CONTENT_NAME$2, e.__scopeMenu), d = React$1.useRef(null), f = useComposedRefs$1(t, d);
	return /* @__PURE__ */ jsx(Collection$1.Provider, {
		scope: e.__scopeMenu,
		children: /* @__PURE__ */ jsx(Presence, {
			present: i || o.open,
			children: /* @__PURE__ */ jsx(Collection$1.Slot, {
				scope: e.__scopeMenu,
				children: /* @__PURE__ */ jsx(MenuContentImpl, {
					id: c.contentId,
					"aria-labelledby": c.triggerId,
					...a,
					ref: f,
					align: "start",
					side: s.dir === "rtl" ? "left" : "right",
					disableOutsidePointerEvents: !1,
					disableOutsideScroll: !1,
					trapFocus: !1,
					onOpenAutoFocus: (e) => {
						s.isUsingKeyboardRef.current && d.current?.focus(), e.preventDefault();
					},
					onCloseAutoFocus: (e) => e.preventDefault(),
					onFocusOutside: composeEventHandlers(e.onFocusOutside, (e) => {
						e.target !== c.trigger && o.onOpenChange(!1);
					}),
					onEscapeKeyDown: composeEventHandlers(e.onEscapeKeyDown, (e) => {
						s.onClose(), e.preventDefault();
					}),
					onKeyDown: composeEventHandlers(e.onKeyDown, (e) => {
						let t = e.currentTarget.contains(e.target), n = SUB_CLOSE_KEYS[s.dir].includes(e.key);
						t && n && (o.onOpenChange(!1), c.trigger?.focus(), e.preventDefault());
					})
				})
			})
		})
	});
});
MenuSubContent.displayName = SUB_CONTENT_NAME$2;
function getOpenState(e) {
	return e ? "open" : "closed";
}
function isIndeterminate$1(e) {
	return e === "indeterminate";
}
function getCheckedState(e) {
	return isIndeterminate$1(e) ? "indeterminate" : e ? "checked" : "unchecked";
}
function focusFirst(e) {
	let t = document.activeElement;
	for (let n of e) if (n === t || (n.focus(), document.activeElement !== t)) return;
}
function wrapArray$1(e, t) {
	return e.map((n, i) => e[(t + i) % e.length]);
}
function getNextMatch(e, t, n) {
	let i = t.length > 1 && Array.from(t).every((e) => e === t[0]) ? t[0] : t, a = n ? e.indexOf(n) : -1, o = wrapArray$1(e, Math.max(a, 0));
	i.length === 1 && (o = o.filter((e) => e !== n));
	let s = o.find((e) => e.toLowerCase().startsWith(i.toLowerCase()));
	return s === n ? void 0 : s;
}
function isPointInPolygon$1(e, t) {
	let { x: n, y: i } = e, a = !1;
	for (let e = 0, o = t.length - 1; e < t.length; o = e++) {
		let s = t[e], c = t[o], d = s.x, f = s.y, g = c.x, y = c.y;
		f > i != y > i && n < (g - d) * (i - f) / (y - f) + d && (a = !a);
	}
	return a;
}
function isPointerInGraceArea(e, t) {
	if (!t) return !1;
	let n = {
		x: e.clientX,
		y: e.clientY
	};
	return isPointInPolygon$1(n, t);
}
function whenMouse(e) {
	return (t) => t.pointerType === "mouse" ? e(t) : void 0;
}
var Root3$1 = Menu, Anchor2 = MenuAnchor, Portal$3 = MenuPortal, Content2$5 = MenuContent, Group = MenuGroup, Label$2 = MenuLabel, Item2$3 = MenuItem, CheckboxItem = MenuCheckboxItem, RadioGroup = MenuRadioGroup, RadioItem = MenuRadioItem, ItemIndicator$1 = MenuItemIndicator, Separator = MenuSeparator, Arrow2$1 = MenuArrow, Sub = MenuSub, SubTrigger = MenuSubTrigger, SubContent = MenuSubContent, DROPDOWN_MENU_NAME = "DropdownMenu", [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(DROPDOWN_MENU_NAME, [createMenuScope]), useMenuScope$1 = createMenuScope(), [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME), DropdownMenu$1 = (e) => {
	let { __scopeDropdownMenu: t, children: n, dir: i, open: a, defaultOpen: o, onOpenChange: s, modal: c = !0 } = e, d = useMenuScope$1(t), f = React$1.useRef(null), [g, y] = useControllableState({
		prop: a,
		defaultProp: o ?? !1,
		onChange: s,
		caller: DROPDOWN_MENU_NAME
	});
	return /* @__PURE__ */ jsx(DropdownMenuProvider, {
		scope: t,
		triggerId: useId$1(),
		triggerRef: f,
		contentId: useId$1(),
		open: g,
		onOpenChange: y,
		onOpenToggle: React$1.useCallback(() => y((e) => !e), [y]),
		modal: c,
		children: /* @__PURE__ */ jsx(Root3$1, {
			...d,
			open: g,
			onOpenChange: y,
			dir: i,
			modal: c,
			children: n
		})
	});
};
DropdownMenu$1.displayName = DROPDOWN_MENU_NAME;
var TRIGGER_NAME$7 = "DropdownMenuTrigger", DropdownMenuTrigger$1 = React$1.forwardRef((e, t) => {
	let { __scopeDropdownMenu: n, disabled: i = !1,...a } = e, o = useDropdownMenuContext(TRIGGER_NAME$7, n), s = useMenuScope$1(n);
	return /* @__PURE__ */ jsx(Anchor2, {
		asChild: !0,
		...s,
		children: /* @__PURE__ */ jsx(Primitive.button, {
			type: "button",
			id: o.triggerId,
			"aria-haspopup": "menu",
			"aria-expanded": o.open,
			"aria-controls": o.open ? o.contentId : void 0,
			"data-state": o.open ? "open" : "closed",
			"data-disabled": i ? "" : void 0,
			disabled: i,
			...a,
			ref: composeRefs$1(t, o.triggerRef),
			onPointerDown: composeEventHandlers(e.onPointerDown, (e) => {
				!i && e.button === 0 && e.ctrlKey === !1 && (o.onOpenToggle(), o.open || e.preventDefault());
			}),
			onKeyDown: composeEventHandlers(e.onKeyDown, (e) => {
				i || (["Enter", " "].includes(e.key) && o.onOpenToggle(), e.key === "ArrowDown" && o.onOpenChange(!0), [
					"Enter",
					" ",
					"ArrowDown"
				].includes(e.key) && e.preventDefault());
			})
		})
	});
});
DropdownMenuTrigger$1.displayName = TRIGGER_NAME$7;
var PORTAL_NAME$4 = "DropdownMenuPortal", DropdownMenuPortal = (e) => {
	let { __scopeDropdownMenu: t,...n } = e, i = useMenuScope$1(t);
	return /* @__PURE__ */ jsx(Portal$3, {
		...i,
		...n
	});
};
DropdownMenuPortal.displayName = PORTAL_NAME$4;
var CONTENT_NAME$7 = "DropdownMenuContent", DropdownMenuContent$1 = React$1.forwardRef((e, t) => {
	let { __scopeDropdownMenu: n,...i } = e, a = useDropdownMenuContext(CONTENT_NAME$7, n), o = useMenuScope$1(n), s = React$1.useRef(!1);
	return /* @__PURE__ */ jsx(Content2$5, {
		id: a.contentId,
		"aria-labelledby": a.triggerId,
		...o,
		...i,
		ref: t,
		onCloseAutoFocus: composeEventHandlers(e.onCloseAutoFocus, (e) => {
			s.current || a.triggerRef.current?.focus(), s.current = !1, e.preventDefault();
		}),
		onInteractOutside: composeEventHandlers(e.onInteractOutside, (e) => {
			let t = e.detail.originalEvent, n = t.button === 0 && t.ctrlKey === !0, i = t.button === 2 || n;
			(!a.modal || i) && (s.current = !0);
		}),
		style: {
			...e.style,
			"--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
			"--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
			"--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
			"--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
			"--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
		}
	});
});
DropdownMenuContent$1.displayName = CONTENT_NAME$7;
var GROUP_NAME$2 = "DropdownMenuGroup", DropdownMenuGroup$1 = React$1.forwardRef((e, t) => {
	let { __scopeDropdownMenu: n,...i } = e, a = useMenuScope$1(n);
	return /* @__PURE__ */ jsx(Group, {
		...a,
		...i,
		ref: t
	});
});
DropdownMenuGroup$1.displayName = GROUP_NAME$2;
var LABEL_NAME$2 = "DropdownMenuLabel", DropdownMenuLabel = React$1.forwardRef((e, t) => {
	let { __scopeDropdownMenu: n,...i } = e, a = useMenuScope$1(n);
	return /* @__PURE__ */ jsx(Label$2, {
		...a,
		...i,
		ref: t
	});
});
DropdownMenuLabel.displayName = LABEL_NAME$2;
var ITEM_NAME$4 = "DropdownMenuItem", DropdownMenuItem$1 = React$1.forwardRef((e, t) => {
	let { __scopeDropdownMenu: n,...i } = e, a = useMenuScope$1(n);
	return /* @__PURE__ */ jsx(Item2$3, {
		...a,
		...i,
		ref: t
	});
});
DropdownMenuItem$1.displayName = ITEM_NAME$4;
var CHECKBOX_ITEM_NAME$1 = "DropdownMenuCheckboxItem", DropdownMenuCheckboxItem = React$1.forwardRef((e, t) => {
	let { __scopeDropdownMenu: n,...i } = e, a = useMenuScope$1(n);
	return /* @__PURE__ */ jsx(CheckboxItem, {
		...a,
		...i,
		ref: t
	});
});
DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME$1;
var RADIO_GROUP_NAME$1 = "DropdownMenuRadioGroup", DropdownMenuRadioGroup = React$1.forwardRef((e, t) => {
	let { __scopeDropdownMenu: n,...i } = e, a = useMenuScope$1(n);
	return /* @__PURE__ */ jsx(RadioGroup, {
		...a,
		...i,
		ref: t
	});
});
DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME$1;
var RADIO_ITEM_NAME$1 = "DropdownMenuRadioItem", DropdownMenuRadioItem = React$1.forwardRef((e, t) => {
	let { __scopeDropdownMenu: n,...i } = e, a = useMenuScope$1(n);
	return /* @__PURE__ */ jsx(RadioItem, {
		...a,
		...i,
		ref: t
	});
});
DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME$1;
var INDICATOR_NAME$2 = "DropdownMenuItemIndicator", DropdownMenuItemIndicator = React$1.forwardRef((e, t) => {
	let { __scopeDropdownMenu: n,...i } = e, a = useMenuScope$1(n);
	return /* @__PURE__ */ jsx(ItemIndicator$1, {
		...a,
		...i,
		ref: t
	});
});
DropdownMenuItemIndicator.displayName = INDICATOR_NAME$2;
var SEPARATOR_NAME$2 = "DropdownMenuSeparator", DropdownMenuSeparator$1 = React$1.forwardRef((e, t) => {
	let { __scopeDropdownMenu: n,...i } = e, a = useMenuScope$1(n);
	return /* @__PURE__ */ jsx(Separator, {
		...a,
		...i,
		ref: t
	});
});
DropdownMenuSeparator$1.displayName = SEPARATOR_NAME$2;
var ARROW_NAME$3 = "DropdownMenuArrow", DropdownMenuArrow = React$1.forwardRef((e, t) => {
	let { __scopeDropdownMenu: n,...i } = e, a = useMenuScope$1(n);
	return /* @__PURE__ */ jsx(Arrow2$1, {
		...a,
		...i,
		ref: t
	});
});
DropdownMenuArrow.displayName = ARROW_NAME$3;
var SUB_TRIGGER_NAME$1 = "DropdownMenuSubTrigger", DropdownMenuSubTrigger = React$1.forwardRef((e, t) => {
	let { __scopeDropdownMenu: n,...i } = e, a = useMenuScope$1(n);
	return /* @__PURE__ */ jsx(SubTrigger, {
		...a,
		...i,
		ref: t
	});
});
DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME$1;
var SUB_CONTENT_NAME$1 = "DropdownMenuSubContent", DropdownMenuSubContent = React$1.forwardRef((e, t) => {
	let { __scopeDropdownMenu: n,...i } = e, a = useMenuScope$1(n);
	return /* @__PURE__ */ jsx(SubContent, {
		...a,
		...i,
		ref: t,
		style: {
			...e.style,
			"--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
			"--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
			"--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
			"--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
			"--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
		}
	});
});
DropdownMenuSubContent.displayName = SUB_CONTENT_NAME$1;
var Root2$5 = DropdownMenu$1, Trigger$4 = DropdownMenuTrigger$1, Portal2$2 = DropdownMenuPortal, Content2$4 = DropdownMenuContent$1, Group2 = DropdownMenuGroup$1, Item2$2 = DropdownMenuItem$1, Separator2 = DropdownMenuSeparator$1;
function DropdownMenu({ ...e }) {
	return /* @__PURE__ */ jsx(Root2$5, {
		"data-slot": "dropdown-menu",
		...e
	});
}
function DropdownMenuTrigger({ ...e }) {
	return /* @__PURE__ */ jsx(Trigger$4, {
		"data-slot": "dropdown-menu-trigger",
		...e
	});
}
function DropdownMenuContent({ className: e, sideOffset: t = 4,...n }) {
	let [i, a] = useState(null);
	return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Portal2$2, {
		container: i,
		children: /* @__PURE__ */ jsx(Content2$4, {
			"data-slot": "dropdown-menu-content",
			sideOffset: t,
			className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-[var(--radix-dropdown-menu-content-transform-origin)] overflow-y-auto overflow-x-hidden rounded-md border p-1 shadow-md", e),
			...n
		})
	}), /* @__PURE__ */ jsx("div", {
		ref: a,
		style: { display: "contents" }
	})] });
}
function DropdownMenuGroup({ ...e }) {
	return /* @__PURE__ */ jsx(Group2, {
		"data-slot": "dropdown-menu-group",
		...e
	});
}
function DropdownMenuItem({ className: e, inset: t, variant: n = "default",...i }) {
	return /* @__PURE__ */ jsx(Item2$2, {
		"data-slot": "dropdown-menu-item",
		"data-inset": t,
		"data-variant": n,
		className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden data-disabled:pointer-events-none data-inset:pl-8 data-disabled:opacity-50 relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", e),
		...i
	});
}
function DropdownMenuSeparator({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Separator2, {
		"data-slot": "dropdown-menu-separator",
		className: cn("bg-border -mx-1 my-1 h-px", e),
		...t
	});
}
function DropdownMenuShortcut({ className: e,...t }) {
	return /* @__PURE__ */ jsx("span", {
		"data-slot": "dropdown-menu-shortcut",
		className: cn("text-muted-foreground ml-auto text-xs tracking-widest", e),
		...t
	});
}
function Empty({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "empty",
		className: cn("flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance rounded-lg border-dashed p-6 text-center md:p-12", e),
		...t
	});
}
function EmptyHeader({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "empty-header",
		className: cn("flex max-w-sm flex-col items-center gap-2 text-center", e),
		...t
	});
}
var emptyMediaVariants = cva("flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
	variants: { variant: {
		default: "bg-transparent",
		icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6"
	} },
	defaultVariants: { variant: "default" }
});
function EmptyMedia({ className: e, variant: t = "default",...n }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "empty-icon",
		"data-variant": t,
		className: cn(emptyMediaVariants({
			variant: t,
			className: e
		})),
		...n
	});
}
function EmptyTitle({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "empty-title",
		className: cn("text-lg font-medium tracking-tight", e),
		...t
	});
}
function EmptyDescription({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "empty-description",
		className: cn("text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4", e),
		...t
	});
}
function EmptyContent({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "empty-content",
		className: cn("flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm", e),
		...t
	});
}
var Primitive$1 = [
	"a",
	"button",
	"div",
	"form",
	"h2",
	"h3",
	"img",
	"input",
	"label",
	"li",
	"nav",
	"ol",
	"p",
	"select",
	"span",
	"svg",
	"ul"
].reduce((e, t) => {
	let n = /* @__PURE__ */ createSlot$1(`Primitive.${t}`), i = React$1.forwardRef((e, i) => {
		let { asChild: a,...o } = e, s = a ? n : t;
		return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ jsx(s, {
			...o,
			ref: i
		});
	});
	return i.displayName = `Primitive.${t}`, {
		...e,
		[t]: i
	};
}, {}), NAME$2 = "Label", Label$1 = React$1.forwardRef((e, t) => /* @__PURE__ */ jsx(Primitive$1.label, {
	...e,
	ref: t,
	onMouseDown: (t) => {
		t.target.closest("button, input, select, textarea") || (e.onMouseDown?.(t), !t.defaultPrevented && t.detail > 1 && t.preventDefault());
	}
}));
Label$1.displayName = NAME$2;
var Root$4 = Label$1;
function Label({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Root$4, {
		"data-slot": "label",
		className: cn("flex select-none items-center gap-2 text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50", e),
		...t
	});
}
function FieldGroup({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "field-group",
		className: cn("group/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4", e),
		...t
	});
}
var fieldVariants = cva("group/field flex w-full gap-3 data-[invalid=true]:text-destructive", {
	variants: { orientation: {
		vertical: ["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],
		horizontal: [
			"flex-row items-center",
			"[&>[data-slot=field-label]]:flex-auto",
			"has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
		],
		responsive: [
			"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto",
			"@md/field-group:[&>[data-slot=field-label]]:flex-auto",
			"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
		]
	} },
	defaultVariants: { orientation: "vertical" }
});
function Field({ className: e, orientation: t = "vertical",...n }) {
	return /* @__PURE__ */ jsx("div", {
		role: "group",
		"data-slot": "field",
		"data-orientation": t,
		className: cn(fieldVariants({ orientation: t }), e),
		...n
	});
}
function FieldLabel({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Label, {
		"data-slot": "field-label",
		className: cn("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50", "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4", "has-[>[data-state=checked]]:border-primary has-[>[data-state=checked]]:bg-primary/10", e),
		...t
	});
}
function FieldError({ className: e, children: t, errors: n,...i }) {
	let a = useMemo(() => {
		if (t) return t;
		if (!n?.length) return null;
		let e = [...new Map(n.map((e) => [e?.message, e])).values()];
		return e?.length === 1 ? e[0]?.message : /* @__PURE__ */ jsx("ul", {
			className: "ml-4 flex list-disc flex-col gap-1",
			children: e.map((e, t) => e?.message && /* @__PURE__ */ jsx("li", { children: e.message }, t))
		});
	}, [t, n]);
	return a ? /* @__PURE__ */ jsx("div", {
		role: "alert",
		"data-slot": "field-error",
		className: cn("text-destructive text-sm font-normal", e),
		...i,
		children: a
	}) : null;
}
function Input({ className: e, type: t,...n }) {
	return /* @__PURE__ */ jsx("input", {
		type: t,
		"data-slot": "input",
		className: cn("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground bg-input/30 border-input h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base shadow-sm outline-none transition-[color,box-shadow] file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/40 aria-invalid:border-destructive", e),
		...n
	});
}
var PanelGroupContext = createContext(null);
PanelGroupContext.displayName = "PanelGroupContext";
var DATA_ATTRIBUTES = {
	group: "data-panel-group",
	groupDirection: "data-panel-group-direction",
	groupId: "data-panel-group-id",
	panel: "data-panel",
	panelCollapsible: "data-panel-collapsible",
	panelId: "data-panel-id",
	panelSize: "data-panel-size",
	resizeHandle: "data-resize-handle",
	resizeHandleActive: "data-resize-handle-active",
	resizeHandleEnabled: "data-panel-resize-handle-enabled",
	resizeHandleId: "data-panel-resize-handle-id",
	resizeHandleState: "data-resize-handle-state"
}, PRECISION = 10, useIsomorphicLayoutEffect$1 = useLayoutEffect, useId$2 = React$1.useId, wrappedUseId = typeof useId$2 == "function" ? useId$2 : () => null, counter = 0;
function useUniqueId$1(e = null) {
	let t = wrappedUseId(), n = useRef(e || t || null);
	return n.current === null && (n.current = "" + counter++), e ?? n.current;
}
function PanelWithForwardedRef({ children: e, className: t = "", collapsedSize: n, collapsible: i, defaultSize: a, forwardedRef: o, id: s, maxSize: c, minSize: d, onCollapse: f, onExpand: g, onResize: y, order: b, style: x, tagName: S = "div",...C }) {
	let w = useContext(PanelGroupContext);
	if (w === null) throw Error("Panel components must be rendered within a PanelGroup container");
	let { collapsePanel: E, expandPanel: O, getPanelSize: A, getPanelStyle: j, groupId: M, isPanelCollapsed: F, reevaluatePanelConstraints: I, registerPanel: R, resizePanel: zv, unregisterPanel: V } = w, Bv = useUniqueId$1(s), Vv = useRef({
		callbacks: {
			onCollapse: f,
			onExpand: g,
			onResize: y
		},
		constraints: {
			collapsedSize: n,
			collapsible: i,
			defaultSize: a,
			maxSize: c,
			minSize: d
		},
		id: Bv,
		idIsFromProps: s !== void 0,
		order: b
	});
	useRef({ didLogMissingDefaultSizeWarning: !1 }), useIsomorphicLayoutEffect$1(() => {
		let { callbacks: e, constraints: t } = Vv.current, o = { ...t };
		Vv.current.id = Bv, Vv.current.idIsFromProps = s !== void 0, Vv.current.order = b, e.onCollapse = f, e.onExpand = g, e.onResize = y, t.collapsedSize = n, t.collapsible = i, t.defaultSize = a, t.maxSize = c, t.minSize = d, (o.collapsedSize !== t.collapsedSize || o.collapsible !== t.collapsible || o.maxSize !== t.maxSize || o.minSize !== t.minSize) && I(Vv.current, o);
	}), useIsomorphicLayoutEffect$1(() => {
		let e = Vv.current;
		return R(e), () => {
			V(e);
		};
	}, [
		b,
		Bv,
		R,
		V
	]), useImperativeHandle(o, () => ({
		collapse: () => {
			E(Vv.current);
		},
		expand: (e) => {
			O(Vv.current, e);
		},
		getId() {
			return Bv;
		},
		getSize() {
			return A(Vv.current);
		},
		isCollapsed() {
			return F(Vv.current);
		},
		isExpanded() {
			return !F(Vv.current);
		},
		resize: (e) => {
			zv(Vv.current, e);
		}
	}), [
		E,
		O,
		A,
		F,
		Bv,
		zv
	]);
	let Hv = j(Vv.current, a);
	return createElement(S, {
		...C,
		children: e,
		className: t,
		id: Bv,
		style: {
			...Hv,
			...x
		},
		[DATA_ATTRIBUTES.groupId]: M,
		[DATA_ATTRIBUTES.panel]: "",
		[DATA_ATTRIBUTES.panelCollapsible]: i || void 0,
		[DATA_ATTRIBUTES.panelId]: Bv,
		[DATA_ATTRIBUTES.panelSize]: parseFloat("" + Hv.flexGrow).toFixed(1)
	});
}
var Panel = forwardRef((e, t) => createElement(PanelWithForwardedRef, {
	...e,
	forwardedRef: t
}));
PanelWithForwardedRef.displayName = "Panel", Panel.displayName = "forwardRef(Panel)";
var nonce;
function getNonce() {
	return nonce;
}
var currentCursorStyle = null, enabled = !0, getCustomCursorStyleFunction = null, prevRuleIndex = -1, styleElement = null;
function getCursorStyle(e, t, n) {
	let i = (t & EXCEEDED_HORIZONTAL_MIN) !== 0, a = (t & EXCEEDED_HORIZONTAL_MAX) !== 0, o = (t & EXCEEDED_VERTICAL_MIN) !== 0, s = (t & EXCEEDED_VERTICAL_MAX) !== 0;
	if (getCustomCursorStyleFunction) return getCustomCursorStyleFunction({
		exceedsHorizontalMaximum: a,
		exceedsHorizontalMinimum: i,
		exceedsVerticalMaximum: s,
		exceedsVerticalMinimum: o,
		intersectsHorizontalDragHandle: e === "horizontal" || e === "intersection",
		intersectsVerticalDragHandle: e === "vertical" || e === "intersection",
		isPointerDown: n
	});
	if (t) {
		if (i) return o ? "se-resize" : s ? "ne-resize" : "e-resize";
		if (a) return o ? "sw-resize" : s ? "nw-resize" : "w-resize";
		if (o) return "s-resize";
		if (s) return "n-resize";
	}
	switch (e) {
		case "horizontal": return "ew-resize";
		case "intersection": return "move";
		case "vertical": return "ns-resize";
	}
}
function resetGlobalCursorStyle() {
	styleElement !== null && (document.head.removeChild(styleElement), currentCursorStyle = null, styleElement = null, prevRuleIndex = -1);
}
function setGlobalCursorStyle(e, t, n) {
	if (!enabled) return;
	let i = getCursorStyle(e, t, n);
	if (currentCursorStyle !== i) {
		if (currentCursorStyle = i, styleElement === null) {
			styleElement = document.createElement("style");
			let e = getNonce();
			e && styleElement.setAttribute("nonce", e), document.head.appendChild(styleElement);
		}
		if (prevRuleIndex >= 0) {
			var a;
			(a = styleElement.sheet) == null || a.removeRule(prevRuleIndex);
		}
		prevRuleIndex = styleElement.sheet?.insertRule(`*{cursor: ${i} !important;}`) ?? -1;
	}
}
function isKeyDown(e) {
	return e.type === "keydown";
}
function isPointerEvent(e) {
	return e.type.startsWith("pointer");
}
function isMouseEvent(e) {
	return e.type.startsWith("mouse");
}
function getResizeEventCoordinates(e) {
	if (isPointerEvent(e)) {
		if (e.isPrimary) return {
			x: e.clientX,
			y: e.clientY
		};
	} else if (isMouseEvent(e)) return {
		x: e.clientX,
		y: e.clientY
	};
	return {
		x: Infinity,
		y: Infinity
	};
}
function getInputType() {
	if (typeof matchMedia == "function") return matchMedia("(pointer:coarse)").matches ? "coarse" : "fine";
}
function intersects(e, t, n) {
	return n ? e.x < t.x + t.width && e.x + e.width > t.x && e.y < t.y + t.height && e.y + e.height > t.y : e.x <= t.x + t.width && e.x + e.width >= t.x && e.y <= t.y + t.height && e.y + e.height >= t.y;
}
function compare(e, t) {
	if (e === t) throw Error("Cannot compare node with itself");
	let n = {
		a: get_ancestors(e),
		b: get_ancestors(t)
	}, i;
	for (; n.a.at(-1) === n.b.at(-1);) e = n.a.pop(), t = n.b.pop(), i = e;
	assert(i, "Stacking order can only be calculated for elements with a common ancestor");
	let a = {
		a: get_z_index(find_stacking_context(n.a)),
		b: get_z_index(find_stacking_context(n.b))
	};
	if (a.a === a.b) {
		let e = i.childNodes, t = {
			a: n.a.at(-1),
			b: n.b.at(-1)
		}, a = e.length;
		for (; a--;) {
			let n = e[a];
			if (n === t.a) return 1;
			if (n === t.b) return -1;
		}
	}
	return Math.sign(a.a - a.b);
}
var props = /\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;
function is_flex_item(e) {
	let t = getComputedStyle(get_parent(e) ?? e).display;
	return t === "flex" || t === "inline-flex";
}
function creates_stacking_context(e) {
	let t = getComputedStyle(e);
	return !!(t.position === "fixed" || t.zIndex !== "auto" && (t.position !== "static" || is_flex_item(e)) || +t.opacity < 1 || "transform" in t && t.transform !== "none" || "webkitTransform" in t && t.webkitTransform !== "none" || "mixBlendMode" in t && t.mixBlendMode !== "normal" || "filter" in t && t.filter !== "none" || "webkitFilter" in t && t.webkitFilter !== "none" || "isolation" in t && t.isolation === "isolate" || props.test(t.willChange) || t.webkitOverflowScrolling === "touch");
}
function find_stacking_context(e) {
	let t = e.length;
	for (; t--;) {
		let n = e[t];
		if (assert(n, "Missing node"), creates_stacking_context(n)) return n;
	}
	return null;
}
function get_z_index(e) {
	return e && Number(getComputedStyle(e).zIndex) || 0;
}
function get_ancestors(e) {
	let t = [];
	for (; e;) t.push(e), e = get_parent(e);
	return t;
}
function get_parent(e) {
	let { parentNode: t } = e;
	return t && t instanceof ShadowRoot ? t.host : t;
}
var EXCEEDED_HORIZONTAL_MIN = 1, EXCEEDED_HORIZONTAL_MAX = 2, EXCEEDED_VERTICAL_MIN = 4, EXCEEDED_VERTICAL_MAX = 8, isCoarsePointer = getInputType() === "coarse", intersectingHandles = [], isPointerDown = !1, ownerDocumentCounts = /* @__PURE__ */ new Map(), panelConstraintFlags = /* @__PURE__ */ new Map(), registeredResizeHandlers = /* @__PURE__ */ new Set();
function registerResizeHandle(e, t, n, i, a) {
	let { ownerDocument: o } = t, s = {
		direction: n,
		element: t,
		hitAreaMargins: i,
		setResizeHandlerState: a
	}, c = ownerDocumentCounts.get(o) ?? 0;
	return ownerDocumentCounts.set(o, c + 1), registeredResizeHandlers.add(s), updateListeners(), function() {
		panelConstraintFlags.delete(e), registeredResizeHandlers.delete(s);
		let t = ownerDocumentCounts.get(o) ?? 1;
		if (ownerDocumentCounts.set(o, t - 1), updateListeners(), t === 1 && ownerDocumentCounts.delete(o), intersectingHandles.includes(s)) {
			let e = intersectingHandles.indexOf(s);
			e >= 0 && intersectingHandles.splice(e, 1), updateCursor(), a("up", !0, null);
		}
	};
}
function handlePointerDown(e) {
	let { target: t } = e, { x: n, y: i } = getResizeEventCoordinates(e);
	isPointerDown = !0, recalculateIntersectingHandles({
		target: t,
		x: n,
		y: i
	}), updateListeners(), intersectingHandles.length > 0 && (updateResizeHandlerStates("down", e), updateCursor(), e.preventDefault(), isWithinResizeHandle(t) || e.stopImmediatePropagation());
}
function handlePointerMove(e) {
	let { x: t, y: n } = getResizeEventCoordinates(e);
	if (isPointerDown && e.type !== "pointerleave" && e.buttons === 0 && (isPointerDown = !1, updateResizeHandlerStates("up", e)), !isPointerDown) {
		let { target: i } = e;
		recalculateIntersectingHandles({
			target: i,
			x: t,
			y: n
		});
	}
	updateResizeHandlerStates("move", e), updateCursor(), intersectingHandles.length > 0 && e.preventDefault();
}
function handlePointerUp(e) {
	let { target: t } = e, { x: n, y: i } = getResizeEventCoordinates(e);
	panelConstraintFlags.clear(), isPointerDown = !1, intersectingHandles.length > 0 && (e.preventDefault(), isWithinResizeHandle(t) || e.stopImmediatePropagation()), updateResizeHandlerStates("up", e), recalculateIntersectingHandles({
		target: t,
		x: n,
		y: i
	}), updateCursor(), updateListeners();
}
function isWithinResizeHandle(e) {
	let t = e;
	for (; t;) {
		if (t.hasAttribute(DATA_ATTRIBUTES.resizeHandle)) return !0;
		t = t.parentElement;
	}
	return !1;
}
function recalculateIntersectingHandles({ target: e, x: t, y: n }) {
	intersectingHandles.splice(0);
	let i = null;
	(e instanceof HTMLElement || e instanceof SVGElement) && (i = e), registeredResizeHandlers.forEach((e) => {
		let { element: a, hitAreaMargins: o } = e, s = a.getBoundingClientRect(), { bottom: c, left: d, right: f, top: g } = s, y = isCoarsePointer ? o.coarse : o.fine;
		if (t >= d - y && t <= f + y && n >= g - y && n <= c + y) {
			if (i !== null && document.contains(i) && a !== i && !a.contains(i) && !i.contains(a) && compare(i, a) > 0) {
				let e = i, t = !1;
				for (; e && !e.contains(a);) {
					if (intersects(e.getBoundingClientRect(), s, !0)) {
						t = !0;
						break;
					}
					e = e.parentElement;
				}
				if (t) return;
			}
			intersectingHandles.push(e);
		}
	});
}
function reportConstraintsViolation(e, t) {
	panelConstraintFlags.set(e, t);
}
function updateCursor() {
	let e = !1, t = !1;
	intersectingHandles.forEach((n) => {
		let { direction: i } = n;
		i === "horizontal" ? e = !0 : t = !0;
	});
	let n = 0;
	panelConstraintFlags.forEach((e) => {
		n |= e;
	}), e && t ? setGlobalCursorStyle("intersection", n, isPointerDown) : e ? setGlobalCursorStyle("horizontal", n, isPointerDown) : t ? setGlobalCursorStyle("vertical", n, isPointerDown) : resetGlobalCursorStyle();
}
var listenersAbortController;
function updateListeners() {
	var e;
	(e = listenersAbortController) == null || e.abort(), listenersAbortController = new AbortController();
	let t = {
		capture: !0,
		signal: listenersAbortController.signal
	};
	registeredResizeHandlers.size && (isPointerDown ? (intersectingHandles.length > 0 && ownerDocumentCounts.forEach((e, n) => {
		let { body: i } = n;
		e > 0 && (i.addEventListener("contextmenu", handlePointerUp, t), i.addEventListener("pointerleave", handlePointerMove, t), i.addEventListener("pointermove", handlePointerMove, t));
	}), ownerDocumentCounts.forEach((e, n) => {
		let { body: i } = n;
		i.addEventListener("pointerup", handlePointerUp, t), i.addEventListener("pointercancel", handlePointerUp, t);
	})) : ownerDocumentCounts.forEach((e, n) => {
		let { body: i } = n;
		e > 0 && (i.addEventListener("pointerdown", handlePointerDown, t), i.addEventListener("pointermove", handlePointerMove, t));
	}));
}
function updateResizeHandlerStates(e, t) {
	registeredResizeHandlers.forEach((n) => {
		let { setResizeHandlerState: i } = n, a = intersectingHandles.includes(n);
		i(e, a, t);
	});
}
function useForceUpdate() {
	let [e, t] = useState(0);
	return useCallback(() => t((e) => e + 1), []);
}
function assert(e, t) {
	if (!e) throw console.error(t), Error(t);
}
function fuzzyCompareNumbers(e, t, n = PRECISION) {
	return e.toFixed(n) === t.toFixed(n) ? 0 : e > t ? 1 : -1;
}
function fuzzyNumbersEqual$1(e, t, n = PRECISION) {
	return fuzzyCompareNumbers(e, t, n) === 0;
}
function fuzzyNumbersEqual(e, t, n) {
	return fuzzyCompareNumbers(e, t, n) === 0;
}
function fuzzyLayoutsEqual(e, t, n) {
	if (e.length !== t.length) return !1;
	for (let i = 0; i < e.length; i++) {
		let a = e[i], o = t[i];
		if (!fuzzyNumbersEqual(a, o, n)) return !1;
	}
	return !0;
}
function resizePanel({ panelConstraints: e, panelIndex: t, size: n }) {
	let i = e[t];
	assert(i != null, `Panel constraints not found for index ${t}`);
	let { collapsedSize: a = 0, collapsible: o, maxSize: s = 100, minSize: c = 0 } = i;
	if (fuzzyCompareNumbers(n, c) < 0) if (o) {
		let e = (a + c) / 2;
		n = fuzzyCompareNumbers(n, e) < 0 ? a : c;
	} else n = c;
	return n = Math.min(s, n), n = parseFloat(n.toFixed(PRECISION)), n;
}
function adjustLayoutByDelta({ delta: e, initialLayout: t, panelConstraints: n, pivotIndices: i, prevLayout: a, trigger: o }) {
	if (fuzzyNumbersEqual(e, 0)) return t;
	let s = [...t], [c, d] = i;
	assert(c != null, "Invalid first pivot index"), assert(d != null, "Invalid second pivot index");
	let f = 0;
	if (o === "keyboard") {
		{
			let i = e < 0 ? d : c, a = n[i];
			assert(a, `Panel constraints not found for index ${i}`);
			let { collapsedSize: o = 0, collapsible: s, minSize: f = 0 } = a;
			if (s) {
				let n = t[i];
				if (assert(n != null, `Previous layout not found for panel index ${i}`), fuzzyNumbersEqual(n, o)) {
					let t = f - n;
					fuzzyCompareNumbers(t, Math.abs(e)) > 0 && (e = e < 0 ? 0 - t : t);
				}
			}
		}
		{
			let i = e < 0 ? c : d, a = n[i];
			assert(a, `No panel constraints found for index ${i}`);
			let { collapsedSize: o = 0, collapsible: s, minSize: f = 0 } = a;
			if (s) {
				let n = t[i];
				if (assert(n != null, `Previous layout not found for panel index ${i}`), fuzzyNumbersEqual(n, f)) {
					let t = n - o;
					fuzzyCompareNumbers(t, Math.abs(e)) > 0 && (e = e < 0 ? 0 - t : t);
				}
			}
		}
	}
	{
		let i = e < 0 ? 1 : -1, a = e < 0 ? d : c, o = 0;
		for (;;) {
			let e = t[a];
			assert(e != null, `Previous layout not found for panel index ${a}`);
			let s = resizePanel({
				panelConstraints: n,
				panelIndex: a,
				size: 100
			}) - e;
			if (o += s, a += i, a < 0 || a >= n.length) break;
		}
		let s = Math.min(Math.abs(e), Math.abs(o));
		e = e < 0 ? 0 - s : s;
	}
	{
		let i = e < 0 ? c : d;
		for (; i >= 0 && i < n.length;) {
			let a = Math.abs(e) - Math.abs(f), o = t[i];
			assert(o != null, `Previous layout not found for panel index ${i}`);
			let c = o - a, d = resizePanel({
				panelConstraints: n,
				panelIndex: i,
				size: c
			});
			if (!fuzzyNumbersEqual(o, d) && (f += o - d, s[i] = d, f.toFixed(3).localeCompare(Math.abs(e).toFixed(3), void 0, { numeric: !0 }) >= 0)) break;
			e < 0 ? i-- : i++;
		}
	}
	if (fuzzyLayoutsEqual(a, s)) return a;
	{
		let i = e < 0 ? d : c, a = t[i];
		assert(a != null, `Previous layout not found for panel index ${i}`);
		let o = a + f, g = resizePanel({
			panelConstraints: n,
			panelIndex: i,
			size: o
		});
		if (s[i] = g, !fuzzyNumbersEqual(g, o)) {
			let t = o - g, i = e < 0 ? d : c;
			for (; i >= 0 && i < n.length;) {
				let a = s[i];
				assert(a != null, `Previous layout not found for panel index ${i}`);
				let o = a + t, c = resizePanel({
					panelConstraints: n,
					panelIndex: i,
					size: o
				});
				if (fuzzyNumbersEqual(a, c) || (t -= c - a, s[i] = c), fuzzyNumbersEqual(t, 0)) break;
				e > 0 ? i-- : i++;
			}
		}
	}
	let g = s.reduce((e, t) => t + e, 0);
	return fuzzyNumbersEqual(g, 100) ? s : a;
}
function calculateAriaValues({ layout: e, panelsArray: t, pivotIndices: n }) {
	let i = 0, a = 100, o = 0, s = 0, c = n[0];
	assert(c != null, "No pivot index found"), t.forEach((e, t) => {
		let { constraints: n } = e, { maxSize: d = 100, minSize: f = 0 } = n;
		t === c ? (i = f, a = d) : (o += f, s += d);
	});
	let d = Math.min(a, 100 - o), f = Math.max(i, 100 - s), g = e[c];
	return {
		valueMax: d,
		valueMin: f,
		valueNow: g
	};
}
function getResizeHandleElementsForGroup(e, t = document) {
	return Array.from(t.querySelectorAll(`[${DATA_ATTRIBUTES.resizeHandleId}][data-panel-group-id="${e}"]`));
}
function getResizeHandleElementIndex(e, t, n = document) {
	return getResizeHandleElementsForGroup(e, n).findIndex((e) => e.getAttribute(DATA_ATTRIBUTES.resizeHandleId) === t) ?? null;
}
function determinePivotIndices(e, t, n) {
	let i = getResizeHandleElementIndex(e, t, n);
	return i == null ? [-1, -1] : [i, i + 1];
}
function isHTMLElement$1(e) {
	return e instanceof HTMLElement ? !0 : typeof e == "object" && !!e && "tagName" in e && "getAttribute" in e;
}
function getPanelGroupElement(e, t = document) {
	return isHTMLElement$1(t) && t.dataset.panelGroupId == e ? t : t.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`) || null;
}
function getResizeHandleElement(e, t = document) {
	return t.querySelector(`[${DATA_ATTRIBUTES.resizeHandleId}="${e}"]`) || null;
}
function getResizeHandlePanelIds(e, t, n, i = document) {
	let a = getResizeHandleElement(t, i), o = getResizeHandleElementsForGroup(e, i), s = a ? o.indexOf(a) : -1, c = n[s]?.id ?? null, d = n[s + 1]?.id ?? null;
	return [c, d];
}
function useWindowSplitterPanelGroupBehavior({ committedValuesRef: e, eagerValuesRef: t, groupId: n, layout: i, panelDataArray: a, panelGroupElement: o, setLayout: s }) {
	useRef({ didWarnAboutMissingResizeHandle: !1 }), useIsomorphicLayoutEffect$1(() => {
		if (!o) return;
		let e = getResizeHandleElementsForGroup(n, o);
		for (let t = 0; t < a.length - 1; t++) {
			let { valueMax: n, valueMin: o, valueNow: s } = calculateAriaValues({
				layout: i,
				panelsArray: a,
				pivotIndices: [t, t + 1]
			}), c = e[t];
			if (c != null) {
				let e = a[t];
				assert(e, `No panel data found for index "${t}"`), c.setAttribute("aria-controls", e.id), c.setAttribute("aria-valuemax", "" + Math.round(n)), c.setAttribute("aria-valuemin", "" + Math.round(o)), c.setAttribute("aria-valuenow", s == null ? "" : "" + Math.round(s));
			}
		}
		return () => {
			e.forEach((e, t) => {
				e.removeAttribute("aria-controls"), e.removeAttribute("aria-valuemax"), e.removeAttribute("aria-valuemin"), e.removeAttribute("aria-valuenow");
			});
		};
	}, [
		n,
		i,
		a,
		o
	]), useEffect(() => {
		if (!o) return;
		let e = t.current;
		assert(e, "Eager values not found");
		let { panelDataArray: a } = e, c = getPanelGroupElement(n, o);
		assert(c != null, `No group found for id "${n}"`);
		let d = getResizeHandleElementsForGroup(n, o);
		assert(d, `No resize handles found for group id "${n}"`);
		let f = d.map((e) => {
			let t = e.getAttribute(DATA_ATTRIBUTES.resizeHandleId);
			assert(t, "Resize handle element has no handle id attribute");
			let [c, d] = getResizeHandlePanelIds(n, t, a, o);
			if (c == null || d == null) return () => {};
			let f = (e) => {
				if (!e.defaultPrevented) switch (e.key) {
					case "Enter": {
						e.preventDefault();
						let d = a.findIndex((e) => e.id === c);
						if (d >= 0) {
							let e = a[d];
							assert(e, `No panel data found for index ${d}`);
							let c = i[d], { collapsedSize: f = 0, collapsible: g, minSize: y = 0 } = e.constraints;
							if (c != null && g) {
								let e = adjustLayoutByDelta({
									delta: fuzzyNumbersEqual(c, f) ? y - f : f - c,
									initialLayout: i,
									panelConstraints: a.map((e) => e.constraints),
									pivotIndices: determinePivotIndices(n, t, o),
									prevLayout: i,
									trigger: "keyboard"
								});
								i !== e && s(e);
							}
						}
						break;
					}
				}
			};
			return e.addEventListener("keydown", f), () => {
				e.removeEventListener("keydown", f);
			};
		});
		return () => {
			f.forEach((e) => e());
		};
	}, [
		o,
		e,
		t,
		n,
		i,
		a,
		s
	]);
}
function areEqual(e, t) {
	if (e.length !== t.length) return !1;
	for (let n = 0; n < e.length; n++) if (e[n] !== t[n]) return !1;
	return !0;
}
function getResizeEventCursorPosition(e, t) {
	let n = e === "horizontal", { x: i, y: a } = getResizeEventCoordinates(t);
	return n ? i : a;
}
function calculateDragOffsetPercentage(e, t, n, i, a) {
	let o = n === "horizontal", s = getResizeHandleElement(t, a);
	assert(s, `No resize handle element found for id "${t}"`);
	let c = s.getAttribute(DATA_ATTRIBUTES.groupId);
	assert(c, "Resize handle element has no group id attribute");
	let { initialCursorPosition: d } = i, f = getResizeEventCursorPosition(n, e), g = getPanelGroupElement(c, a);
	assert(g, `No group element found for id "${c}"`);
	let y = g.getBoundingClientRect(), b = o ? y.width : y.height;
	return (f - d) / b * 100;
}
function calculateDeltaPercentage(e, t, n, i, a, o) {
	if (isKeyDown(e)) {
		let t = n === "horizontal", i = 0;
		i = e.shiftKey ? 100 : a ?? 10;
		let o = 0;
		switch (e.key) {
			case "ArrowDown":
				o = t ? 0 : i;
				break;
			case "ArrowLeft":
				o = t ? -i : 0;
				break;
			case "ArrowRight":
				o = t ? i : 0;
				break;
			case "ArrowUp":
				o = t ? 0 : -i;
				break;
			case "End":
				o = 100;
				break;
			case "Home":
				o = -100;
				break;
		}
		return o;
	} else return i == null ? 0 : calculateDragOffsetPercentage(e, t, n, i, o);
}
function calculateUnsafeDefaultLayout({ panelDataArray: e }) {
	let t = Array(e.length), n = e.map((e) => e.constraints), i = 0, a = 100;
	for (let o = 0; o < e.length; o++) {
		let e = n[o];
		assert(e, `Panel constraints not found for index ${o}`);
		let { defaultSize: s } = e;
		s != null && (i++, t[o] = s, a -= s);
	}
	for (let o = 0; o < e.length; o++) {
		let s = n[o];
		assert(s, `Panel constraints not found for index ${o}`);
		let { defaultSize: c } = s;
		if (c != null) continue;
		let d = e.length - i, f = a / d;
		i++, t[o] = f, a -= f;
	}
	return t;
}
function callPanelCallbacks(e, t, n) {
	t.forEach((t, i) => {
		let a = e[i];
		assert(a, `Panel data not found for index ${i}`);
		let { callbacks: o, constraints: s, id: c } = a, { collapsedSize: d = 0, collapsible: f } = s, g = n[c];
		if (g == null || t !== g) {
			n[c] = t;
			let { onCollapse: e, onExpand: i, onResize: a } = o;
			a && a(t, g), f && (e || i) && (i && (g == null || fuzzyNumbersEqual$1(g, d)) && !fuzzyNumbersEqual$1(t, d) && i(), e && (g == null || !fuzzyNumbersEqual$1(g, d)) && fuzzyNumbersEqual$1(t, d) && e());
		}
	});
}
function compareLayouts(e, t) {
	if (e.length !== t.length) return !1;
	for (let n = 0; n < e.length; n++) if (e[n] != t[n]) return !1;
	return !0;
}
function computePanelFlexBoxStyle({ defaultSize: e, dragState: t, layout: n, panelData: i, panelIndex: a, precision: o = 3 }) {
	let s = n[a], c;
	return c = s == null ? e == null ? "1" : e.toFixed(o) : i.length === 1 ? "1" : s.toFixed(o), {
		flexBasis: 0,
		flexGrow: c,
		flexShrink: 1,
		overflow: "hidden",
		pointerEvents: t === null ? void 0 : "none"
	};
}
function debounce(e, t = 10) {
	let n = null;
	return (...i) => {
		n !== null && clearTimeout(n), n = setTimeout(() => {
			e(...i);
		}, t);
	};
}
function initializeDefaultStorage(e) {
	try {
		if (typeof localStorage < "u") e.getItem = (e) => localStorage.getItem(e), e.setItem = (e, t) => {
			localStorage.setItem(e, t);
		};
		else throw Error("localStorage not supported in this environment");
	} catch (t) {
		console.error(t), e.getItem = () => null, e.setItem = () => {};
	}
}
function getPanelGroupKey(e) {
	return `react-resizable-panels:${e}`;
}
function getPanelKey(e) {
	return e.map((e) => {
		let { constraints: t, id: n, idIsFromProps: i, order: a } = e;
		return i ? n : a ? `${a}:${JSON.stringify(t)}` : JSON.stringify(t);
	}).sort((e, t) => e.localeCompare(t)).join(",");
}
function loadSerializedPanelGroupState(e, t) {
	try {
		let n = getPanelGroupKey(e), i = t.getItem(n);
		if (i) {
			let e = JSON.parse(i);
			if (typeof e == "object" && e) return e;
		}
	} catch {}
	return null;
}
function loadPanelGroupState(e, t, n) {
	let i = loadSerializedPanelGroupState(e, n) ?? {}, a = getPanelKey(t);
	return i[a] ?? null;
}
function savePanelGroupState(e, t, n, i, a) {
	let o = getPanelGroupKey(e), s = getPanelKey(t), c = loadSerializedPanelGroupState(e, a) ?? {};
	c[s] = {
		expandToSizes: Object.fromEntries(n.entries()),
		layout: i
	};
	try {
		a.setItem(o, JSON.stringify(c));
	} catch (e) {
		console.error(e);
	}
}
function validatePanelGroupLayout({ layout: e, panelConstraints: t }) {
	let n = [...e], i = n.reduce((e, t) => e + t, 0);
	if (n.length !== t.length) throw Error(`Invalid ${t.length} panel layout: ${n.map((e) => `${e}%`).join(", ")}`);
	if (!fuzzyNumbersEqual(i, 100) && n.length > 0) for (let e = 0; e < t.length; e++) {
		let t = n[e];
		assert(t != null, `No layout data found for index ${e}`), n[e] = 100 / i * t;
	}
	let a = 0;
	for (let e = 0; e < t.length; e++) {
		let i = n[e];
		assert(i != null, `No layout data found for index ${e}`);
		let o = resizePanel({
			panelConstraints: t,
			panelIndex: e,
			size: i
		});
		i != o && (a += i - o, n[e] = o);
	}
	if (!fuzzyNumbersEqual(a, 0)) for (let e = 0; e < t.length; e++) {
		let i = n[e];
		assert(i != null, `No layout data found for index ${e}`);
		let o = i + a, s = resizePanel({
			panelConstraints: t,
			panelIndex: e,
			size: o
		});
		if (i !== s && (a -= s - i, n[e] = s, fuzzyNumbersEqual(a, 0))) break;
	}
	return n;
}
var LOCAL_STORAGE_DEBOUNCE_INTERVAL = 100, defaultStorage = {
	getItem: (e) => (initializeDefaultStorage(defaultStorage), defaultStorage.getItem(e)),
	setItem: (e, t) => {
		initializeDefaultStorage(defaultStorage), defaultStorage.setItem(e, t);
	}
}, debounceMap = {};
function PanelGroupWithForwardedRef({ autoSaveId: e = null, children: t, className: n = "", direction: i, forwardedRef: a, id: o = null, onLayout: s = null, keyboardResizeBy: c = null, storage: d = defaultStorage, style: f, tagName: g = "div",...y }) {
	let b = useUniqueId$1(o), x = useRef(null), [S, C] = useState(null), [w, E] = useState([]), O = useForceUpdate(), A = useRef({}), j = useRef(/* @__PURE__ */ new Map()), M = useRef(0), F = useRef({
		autoSaveId: e,
		direction: i,
		dragState: S,
		id: b,
		keyboardResizeBy: c,
		onLayout: s,
		storage: d
	}), I = useRef({
		layout: w,
		panelDataArray: [],
		panelDataArrayChanged: !1
	});
	useRef({
		didLogIdAndOrderWarning: !1,
		didLogPanelConstraintsWarning: !1,
		prevPanelIds: []
	}), useImperativeHandle(a, () => ({
		getId: () => F.current.id,
		getLayout: () => {
			let { layout: e } = I.current;
			return e;
		},
		setLayout: (e) => {
			let { onLayout: t } = F.current, { layout: n, panelDataArray: i } = I.current, a = validatePanelGroupLayout({
				layout: e,
				panelConstraints: i.map((e) => e.constraints)
			});
			areEqual(n, a) || (E(a), I.current.layout = a, t && t(a), callPanelCallbacks(i, a, A.current));
		}
	}), []), useIsomorphicLayoutEffect$1(() => {
		F.current.autoSaveId = e, F.current.direction = i, F.current.dragState = S, F.current.id = b, F.current.onLayout = s, F.current.storage = d;
	}), useWindowSplitterPanelGroupBehavior({
		committedValuesRef: F,
		eagerValuesRef: I,
		groupId: b,
		layout: w,
		panelDataArray: I.current.panelDataArray,
		setLayout: E,
		panelGroupElement: x.current
	}), useEffect(() => {
		let { panelDataArray: t } = I.current;
		if (e) {
			if (w.length === 0 || w.length !== t.length) return;
			let n = debounceMap[e];
			n ?? (n = debounce(savePanelGroupState, LOCAL_STORAGE_DEBOUNCE_INTERVAL), debounceMap[e] = n);
			let i = [...t], a = new Map(j.current);
			n(e, i, a, w, d);
		}
	}, [
		e,
		w,
		d
	]), useEffect(() => {});
	let R = useCallback((e) => {
		let { onLayout: t } = F.current, { layout: n, panelDataArray: i } = I.current;
		if (e.constraints.collapsible) {
			let a = i.map((e) => e.constraints), { collapsedSize: o = 0, panelSize: s, pivotIndices: c } = panelDataHelper(i, e, n);
			if (assert(s != null, `Panel size not found for panel "${e.id}"`), !fuzzyNumbersEqual$1(s, o)) {
				j.current.set(e.id, s);
				let d = findPanelDataIndex(i, e) === i.length - 1 ? s - o : o - s, f = adjustLayoutByDelta({
					delta: d,
					initialLayout: n,
					panelConstraints: a,
					pivotIndices: c,
					prevLayout: n,
					trigger: "imperative-api"
				});
				compareLayouts(n, f) || (E(f), I.current.layout = f, t && t(f), callPanelCallbacks(i, f, A.current));
			}
		}
	}, []), zv = useCallback((e, t) => {
		let { onLayout: n } = F.current, { layout: i, panelDataArray: a } = I.current;
		if (e.constraints.collapsible) {
			let o = a.map((e) => e.constraints), { collapsedSize: s = 0, panelSize: c = 0, minSize: d = 0, pivotIndices: f } = panelDataHelper(a, e, i), g = t ?? d;
			if (fuzzyNumbersEqual$1(c, s)) {
				let t = j.current.get(e.id), s = t != null && t >= g ? t : g, d = findPanelDataIndex(a, e) === a.length - 1 ? c - s : s - c, y = adjustLayoutByDelta({
					delta: d,
					initialLayout: i,
					panelConstraints: o,
					pivotIndices: f,
					prevLayout: i,
					trigger: "imperative-api"
				});
				compareLayouts(i, y) || (E(y), I.current.layout = y, n && n(y), callPanelCallbacks(a, y, A.current));
			}
		}
	}, []), V = useCallback((e) => {
		let { layout: t, panelDataArray: n } = I.current, { panelSize: i } = panelDataHelper(n, e, t);
		return assert(i != null, `Panel size not found for panel "${e.id}"`), i;
	}, []), Bv = useCallback((e, t) => {
		let { panelDataArray: n } = I.current, i = findPanelDataIndex(n, e);
		return computePanelFlexBoxStyle({
			defaultSize: t,
			dragState: S,
			layout: w,
			panelData: n,
			panelIndex: i
		});
	}, [S, w]), Vv = useCallback((e) => {
		let { layout: t, panelDataArray: n } = I.current, { collapsedSize: i = 0, collapsible: a, panelSize: o } = panelDataHelper(n, e, t);
		return assert(o != null, `Panel size not found for panel "${e.id}"`), a === !0 && fuzzyNumbersEqual$1(o, i);
	}, []), Hv = useCallback((e) => {
		let { layout: t, panelDataArray: n } = I.current, { collapsedSize: i = 0, collapsible: a, panelSize: o } = panelDataHelper(n, e, t);
		return assert(o != null, `Panel size not found for panel "${e.id}"`), !a || fuzzyCompareNumbers(o, i) > 0;
	}, []), Uv = useCallback((e) => {
		let { panelDataArray: t } = I.current;
		t.push(e), t.sort((e, t) => {
			let n = e.order, i = t.order;
			return n == null && i == null ? 0 : n == null ? -1 : i == null ? 1 : n - i;
		}), I.current.panelDataArrayChanged = !0, O();
	}, [O]);
	useIsomorphicLayoutEffect$1(() => {
		if (I.current.panelDataArrayChanged) {
			I.current.panelDataArrayChanged = !1;
			let { autoSaveId: e, onLayout: t, storage: n } = F.current, { layout: i, panelDataArray: a } = I.current, o = null;
			if (e) {
				let t = loadPanelGroupState(e, a, n);
				t && (j.current = new Map(Object.entries(t.expandToSizes)), o = t.layout);
			}
			o ??= calculateUnsafeDefaultLayout({ panelDataArray: a });
			let s = validatePanelGroupLayout({
				layout: o,
				panelConstraints: a.map((e) => e.constraints)
			});
			areEqual(i, s) || (E(s), I.current.layout = s, t && t(s), callPanelCallbacks(a, s, A.current));
		}
	}), useIsomorphicLayoutEffect$1(() => {
		let e = I.current;
		return () => {
			e.layout = [];
		};
	}, []);
	let Wv = useCallback((e) => {
		let t = !1, n = x.current;
		return n && window.getComputedStyle(n, null).getPropertyValue("direction") === "rtl" && (t = !0), function(n) {
			n.preventDefault();
			let i = x.current;
			if (!i) return () => null;
			let { direction: a, dragState: o, id: s, keyboardResizeBy: c, onLayout: d } = F.current, { layout: f, panelDataArray: g } = I.current, { initialLayout: y } = o ?? {}, b = determinePivotIndices(s, e, i), S = calculateDeltaPercentage(n, e, a, o, c, i), C = a === "horizontal";
			C && t && (S = -S);
			let w = g.map((e) => e.constraints), O = adjustLayoutByDelta({
				delta: S,
				initialLayout: y ?? f,
				panelConstraints: w,
				pivotIndices: b,
				prevLayout: f,
				trigger: isKeyDown(n) ? "keyboard" : "mouse-or-touch"
			}), j = !compareLayouts(f, O);
			(isPointerEvent(n) || isMouseEvent(n)) && M.current != S && (M.current = S, !j && S !== 0 ? C ? reportConstraintsViolation(e, S < 0 ? EXCEEDED_HORIZONTAL_MIN : EXCEEDED_HORIZONTAL_MAX) : reportConstraintsViolation(e, S < 0 ? EXCEEDED_VERTICAL_MIN : EXCEEDED_VERTICAL_MAX) : reportConstraintsViolation(e, 0)), j && (E(O), I.current.layout = O, d && d(O), callPanelCallbacks(g, O, A.current));
		};
	}, []), Gv = useCallback((e, t) => {
		let { onLayout: n } = F.current, { layout: i, panelDataArray: a } = I.current, o = a.map((e) => e.constraints), { panelSize: s, pivotIndices: c } = panelDataHelper(a, e, i);
		assert(s != null, `Panel size not found for panel "${e.id}"`);
		let d = findPanelDataIndex(a, e) === a.length - 1 ? s - t : t - s, f = adjustLayoutByDelta({
			delta: d,
			initialLayout: i,
			panelConstraints: o,
			pivotIndices: c,
			prevLayout: i,
			trigger: "imperative-api"
		});
		compareLayouts(i, f) || (E(f), I.current.layout = f, n && n(f), callPanelCallbacks(a, f, A.current));
	}, []), Kv = useCallback((e, t) => {
		let { layout: n, panelDataArray: i } = I.current, { collapsedSize: a = 0, collapsible: o } = t, { collapsedSize: s = 0, collapsible: c, maxSize: d = 100, minSize: f = 0 } = e.constraints, { panelSize: g } = panelDataHelper(i, e, n);
		g != null && (o && c && fuzzyNumbersEqual$1(g, a) ? fuzzyNumbersEqual$1(a, s) || Gv(e, s) : g < f ? Gv(e, f) : g > d && Gv(e, d));
	}, [Gv]), q = useCallback((e, t) => {
		let { direction: n } = F.current, { layout: i } = I.current;
		if (!x.current) return;
		let a = getResizeHandleElement(e, x.current);
		assert(a, `Drag handle element not found for id "${e}"`);
		let o = getResizeEventCursorPosition(n, t);
		C({
			dragHandleId: e,
			dragHandleRect: a.getBoundingClientRect(),
			initialCursorPosition: o,
			initialLayout: i
		});
	}, []), qv = useCallback(() => {
		C(null);
	}, []), Jv = useCallback((e) => {
		let { panelDataArray: t } = I.current, n = findPanelDataIndex(t, e);
		n >= 0 && (t.splice(n, 1), delete A.current[e.id], I.current.panelDataArrayChanged = !0, O());
	}, [O]), Yv = useMemo(() => ({
		collapsePanel: R,
		direction: i,
		dragState: S,
		expandPanel: zv,
		getPanelSize: V,
		getPanelStyle: Bv,
		groupId: b,
		isPanelCollapsed: Vv,
		isPanelExpanded: Hv,
		reevaluatePanelConstraints: Kv,
		registerPanel: Uv,
		registerResizeHandle: Wv,
		resizePanel: Gv,
		startDragging: q,
		stopDragging: qv,
		unregisterPanel: Jv,
		panelGroupElement: x.current
	}), [
		R,
		S,
		i,
		zv,
		V,
		Bv,
		b,
		Vv,
		Hv,
		Kv,
		Uv,
		Wv,
		Gv,
		q,
		qv,
		Jv
	]), Xv = {
		display: "flex",
		flexDirection: i === "horizontal" ? "row" : "column",
		height: "100%",
		overflow: "hidden",
		width: "100%"
	};
	return createElement(PanelGroupContext.Provider, { value: Yv }, createElement(g, {
		...y,
		children: t,
		className: n,
		id: o,
		ref: x,
		style: {
			...Xv,
			...f
		},
		[DATA_ATTRIBUTES.group]: "",
		[DATA_ATTRIBUTES.groupDirection]: i,
		[DATA_ATTRIBUTES.groupId]: b
	}));
}
var PanelGroup = forwardRef((e, t) => createElement(PanelGroupWithForwardedRef, {
	...e,
	forwardedRef: t
}));
PanelGroupWithForwardedRef.displayName = "PanelGroup", PanelGroup.displayName = "forwardRef(PanelGroup)";
function findPanelDataIndex(e, t) {
	return e.findIndex((e) => e === t || e.id === t.id);
}
function panelDataHelper(e, t, n) {
	let i = findPanelDataIndex(e, t), a = i === e.length - 1 ? [i - 1, i] : [i, i + 1], o = n[i];
	return {
		...t.constraints,
		panelSize: o,
		pivotIndices: a
	};
}
function useWindowSplitterResizeHandlerBehavior({ disabled: e, handleId: t, resizeHandler: n, panelGroupElement: i }) {
	useEffect(() => {
		if (e || n == null || i == null) return;
		let a = getResizeHandleElement(t, i);
		if (a == null) return;
		let o = (e) => {
			if (!e.defaultPrevented) switch (e.key) {
				case "ArrowDown":
				case "ArrowLeft":
				case "ArrowRight":
				case "ArrowUp":
				case "End":
				case "Home":
					e.preventDefault(), n(e);
					break;
				case "F6": {
					e.preventDefault();
					let n = a.getAttribute(DATA_ATTRIBUTES.groupId);
					assert(n, `No group element found for id "${n}"`);
					let o = getResizeHandleElementsForGroup(n, i), s = getResizeHandleElementIndex(n, t, i);
					assert(s !== null, `No resize element found for id "${t}"`);
					let c = e.shiftKey ? s > 0 ? s - 1 : o.length - 1 : s + 1 < o.length ? s + 1 : 0;
					o[c].focus();
					break;
				}
			}
		};
		return a.addEventListener("keydown", o), () => {
			a.removeEventListener("keydown", o);
		};
	}, [
		i,
		e,
		t,
		n
	]);
}
function PanelResizeHandle({ children: e = null, className: t = "", disabled: n = !1, hitAreaMargins: i, id: a, onBlur: o, onClick: s, onDragging: c, onFocus: d, onPointerDown: f, onPointerUp: g, style: y = {}, tabIndex: b = 0, tagName: x = "div",...S }) {
	let C = useRef(null), w = useRef({
		onClick: s,
		onDragging: c,
		onPointerDown: f,
		onPointerUp: g
	});
	useEffect(() => {
		w.current.onClick = s, w.current.onDragging = c, w.current.onPointerDown = f, w.current.onPointerUp = g;
	});
	let E = useContext(PanelGroupContext);
	if (E === null) throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");
	let { direction: O, groupId: A, registerResizeHandle: j, startDragging: M, stopDragging: F, panelGroupElement: I } = E, R = useUniqueId$1(a), [zv, V] = useState("inactive"), [Bv, Vv] = useState(!1), [Hv, Uv] = useState(null), Wv = useRef({ state: zv });
	useIsomorphicLayoutEffect$1(() => {
		Wv.current.state = zv;
	}), useEffect(() => {
		if (n) Uv(null);
		else {
			let e = j(R);
			Uv(() => e);
		}
	}, [
		n,
		R,
		j
	]);
	let Gv = i?.coarse ?? 15, Kv = i?.fine ?? 5;
	useEffect(() => {
		if (n || Hv == null) return;
		let e = C.current;
		assert(e, "Element ref not attached");
		let t = !1;
		return registerResizeHandle(R, e, O, {
			coarse: Gv,
			fine: Kv
		}, (e, n, i) => {
			if (!n) {
				V("inactive");
				return;
			}
			switch (e) {
				case "down": {
					V("drag"), t = !1, assert(i, "Expected event to be defined for \"down\" action"), M(R, i);
					let { onDragging: e, onPointerDown: n } = w.current;
					e?.(!0), n?.();
					break;
				}
				case "move": {
					let { state: e } = Wv.current;
					t = !0, e !== "drag" && V("hover"), assert(i, "Expected event to be defined for \"move\" action"), Hv(i);
					break;
				}
				case "up": {
					V("hover"), F();
					let { onClick: e, onDragging: n, onPointerUp: i } = w.current;
					n?.(!1), i?.(), t || e?.();
					break;
				}
			}
		});
	}, [
		Gv,
		O,
		n,
		Kv,
		j,
		R,
		Hv,
		M,
		F
	]), useWindowSplitterResizeHandlerBehavior({
		disabled: n,
		handleId: R,
		resizeHandler: Hv,
		panelGroupElement: I
	});
	let q = {
		touchAction: "none",
		userSelect: "none"
	};
	return createElement(x, {
		...S,
		children: e,
		className: t,
		id: a,
		onBlur: () => {
			Vv(!1), o?.();
		},
		onFocus: () => {
			Vv(!0), d?.();
		},
		ref: C,
		role: "separator",
		style: {
			...q,
			...y
		},
		tabIndex: b,
		[DATA_ATTRIBUTES.groupDirection]: O,
		[DATA_ATTRIBUTES.groupId]: A,
		[DATA_ATTRIBUTES.resizeHandle]: "",
		[DATA_ATTRIBUTES.resizeHandleActive]: zv === "drag" ? "pointer" : Bv ? "keyboard" : void 0,
		[DATA_ATTRIBUTES.resizeHandleEnabled]: !n,
		[DATA_ATTRIBUTES.resizeHandleId]: R,
		[DATA_ATTRIBUTES.resizeHandleState]: zv
	});
}
PanelResizeHandle.displayName = "PanelResizeHandle";
function ResizablePanelGroup({ className: e,...t }) {
	return /* @__PURE__ */ jsx(PanelGroup, {
		"data-slot": "resizable-panel-group",
		className: cn("flex size-full data-[panel-group-direction=vertical]:flex-col", e),
		...t
	});
}
function ResizablePanel({ ...e }) {
	return /* @__PURE__ */ jsx(Panel, {
		"data-slot": "resizable-panel",
		...e
	});
}
function ResizableHandle({ withHandle: e, className: t,...n }) {
	return /* @__PURE__ */ jsx(PanelResizeHandle, {
		"data-slot": "resizable-handle",
		className: cn("bg-border focus-visible:ring-ring focus-visible:outline-hidden relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90", t),
		...n,
		children: e && /* @__PURE__ */ jsx("div", {
			className: "bg-border rounded-xs z-10 flex h-4 w-3 items-center justify-center border",
			children: /* @__PURE__ */ jsx(GripVerticalIcon, { className: "size-2.5" })
		})
	});
}
var Toaster = ({ ...e }) => /* @__PURE__ */ jsx(Toaster$1, {
	theme: e.theme,
	className: "group",
	icons: {
		success: /* @__PURE__ */ jsx(CircleCheckIcon, { className: "size-4" }),
		info: /* @__PURE__ */ jsx(InfoIcon, { className: "size-4" }),
		warning: /* @__PURE__ */ jsx(TriangleAlertIcon, { className: "size-4" }),
		error: /* @__PURE__ */ jsx(OctagonXIcon, { className: "size-4" }),
		loading: /* @__PURE__ */ jsx(Loader2Icon, { className: "size-4 animate-spin" })
	},
	style: {
		"--normal-bg": "var(--popover)",
		"--normal-text": "var(--popover-foreground)",
		"--normal-border": "var(--border)",
		"--border-radius": "var(--radius)"
	},
	...e
}), VISUALLY_HIDDEN_STYLES = Object.freeze({
	position: "absolute",
	border: 0,
	width: 1,
	height: 1,
	padding: 0,
	margin: -1,
	overflow: "hidden",
	clip: "rect(0, 0, 0, 0)",
	whiteSpace: "nowrap",
	wordWrap: "normal"
}), NAME$1 = "VisuallyHidden", VisuallyHidden = React$1.forwardRef((e, t) => /* @__PURE__ */ jsx(Primitive.span, {
	...e,
	ref: t,
	style: {
		...VISUALLY_HIDDEN_STYLES,
		...e.style
	}
}));
VisuallyHidden.displayName = NAME$1;
var Root$3 = VisuallyHidden, [createTooltipContext, createTooltipScope] = createContextScope("Tooltip", [createPopperScope]), usePopperScope$1 = createPopperScope(), PROVIDER_NAME = "TooltipProvider", DEFAULT_DELAY_DURATION = 700, TOOLTIP_OPEN = "tooltip.open", [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME), TooltipProvider$1 = (e) => {
	let { __scopeTooltip: t, delayDuration: n = DEFAULT_DELAY_DURATION, skipDelayDuration: i = 300, disableHoverableContent: a = !1, children: o } = e, s = React$1.useRef(!0), c = React$1.useRef(!1), d = React$1.useRef(0);
	return React$1.useEffect(() => {
		let e = d.current;
		return () => window.clearTimeout(e);
	}, []), /* @__PURE__ */ jsx(TooltipProviderContextProvider, {
		scope: t,
		isOpenDelayedRef: s,
		delayDuration: n,
		onOpen: React$1.useCallback(() => {
			window.clearTimeout(d.current), s.current = !1;
		}, []),
		onClose: React$1.useCallback(() => {
			window.clearTimeout(d.current), d.current = window.setTimeout(() => s.current = !0, i);
		}, [i]),
		isPointerInTransitRef: c,
		onPointerInTransitChange: React$1.useCallback((e) => {
			c.current = e;
		}, []),
		disableHoverableContent: a,
		children: o
	});
};
TooltipProvider$1.displayName = PROVIDER_NAME;
var TOOLTIP_NAME = "Tooltip", [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME), Tooltip$1 = (e) => {
	let { __scopeTooltip: t, children: n, open: i, defaultOpen: a, onOpenChange: o, disableHoverableContent: s, delayDuration: c } = e, d = useTooltipProviderContext(TOOLTIP_NAME, e.__scopeTooltip), f = usePopperScope$1(t), [g, y] = React$1.useState(null), b = useId$1(), x = React$1.useRef(0), S = s ?? d.disableHoverableContent, C = c ?? d.delayDuration, w = React$1.useRef(!1), [E, O] = useControllableState({
		prop: i,
		defaultProp: a ?? !1,
		onChange: (e) => {
			e ? (d.onOpen(), document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN))) : d.onClose(), o?.(e);
		},
		caller: TOOLTIP_NAME
	}), A = React$1.useMemo(() => E ? w.current ? "delayed-open" : "instant-open" : "closed", [E]), j = React$1.useCallback(() => {
		window.clearTimeout(x.current), x.current = 0, w.current = !1, O(!0);
	}, [O]), M = React$1.useCallback(() => {
		window.clearTimeout(x.current), x.current = 0, O(!1);
	}, [O]), F = React$1.useCallback(() => {
		window.clearTimeout(x.current), x.current = window.setTimeout(() => {
			w.current = !0, O(!0), x.current = 0;
		}, C);
	}, [C, O]);
	return React$1.useEffect(() => () => {
		x.current &&= (window.clearTimeout(x.current), 0);
	}, []), /* @__PURE__ */ jsx(Root2$6, {
		...f,
		children: /* @__PURE__ */ jsx(TooltipContextProvider, {
			scope: t,
			contentId: b,
			open: E,
			stateAttribute: A,
			trigger: g,
			onTriggerChange: y,
			onTriggerEnter: React$1.useCallback(() => {
				d.isOpenDelayedRef.current ? F() : j();
			}, [
				d.isOpenDelayedRef,
				F,
				j
			]),
			onTriggerLeave: React$1.useCallback(() => {
				S ? M() : (window.clearTimeout(x.current), x.current = 0);
			}, [M, S]),
			onOpen: j,
			onClose: M,
			disableHoverableContent: S,
			children: n
		})
	});
};
Tooltip$1.displayName = TOOLTIP_NAME;
var TRIGGER_NAME$6 = "TooltipTrigger", TooltipTrigger$1 = React$1.forwardRef((e, t) => {
	let { __scopeTooltip: n,...i } = e, a = useTooltipContext(TRIGGER_NAME$6, n), o = useTooltipProviderContext(TRIGGER_NAME$6, n), s = usePopperScope$1(n), c = React$1.useRef(null), d = useComposedRefs$1(t, c, a.onTriggerChange), f = React$1.useRef(!1), g = React$1.useRef(!1), y = React$1.useCallback(() => f.current = !1, []);
	return React$1.useEffect(() => () => document.removeEventListener("pointerup", y), [y]), /* @__PURE__ */ jsx(Anchor, {
		asChild: !0,
		...s,
		children: /* @__PURE__ */ jsx(Primitive.button, {
			"aria-describedby": a.open ? a.contentId : void 0,
			"data-state": a.stateAttribute,
			...i,
			ref: d,
			onPointerMove: composeEventHandlers(e.onPointerMove, (e) => {
				e.pointerType !== "touch" && !g.current && !o.isPointerInTransitRef.current && (a.onTriggerEnter(), g.current = !0);
			}),
			onPointerLeave: composeEventHandlers(e.onPointerLeave, () => {
				a.onTriggerLeave(), g.current = !1;
			}),
			onPointerDown: composeEventHandlers(e.onPointerDown, () => {
				a.open && a.onClose(), f.current = !0, document.addEventListener("pointerup", y, { once: !0 });
			}),
			onFocus: composeEventHandlers(e.onFocus, () => {
				f.current || a.onOpen();
			}),
			onBlur: composeEventHandlers(e.onBlur, a.onClose),
			onClick: composeEventHandlers(e.onClick, a.onClose)
		})
	});
});
TooltipTrigger$1.displayName = TRIGGER_NAME$6;
var PORTAL_NAME$3 = "TooltipPortal", [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME$3, { forceMount: void 0 }), TooltipPortal = (e) => {
	let { __scopeTooltip: t, forceMount: n, children: i, container: a } = e, o = useTooltipContext(PORTAL_NAME$3, t);
	return /* @__PURE__ */ jsx(PortalProvider, {
		scope: t,
		forceMount: n,
		children: /* @__PURE__ */ jsx(Presence, {
			present: n || o.open,
			children: /* @__PURE__ */ jsx(Portal, {
				asChild: !0,
				container: a,
				children: i
			})
		})
	});
};
TooltipPortal.displayName = PORTAL_NAME$3;
var CONTENT_NAME$6 = "TooltipContent", TooltipContent$1 = React$1.forwardRef((e, t) => {
	let n = usePortalContext(CONTENT_NAME$6, e.__scopeTooltip), { forceMount: i = n.forceMount, side: a = "top",...o } = e, s = useTooltipContext(CONTENT_NAME$6, e.__scopeTooltip);
	return /* @__PURE__ */ jsx(Presence, {
		present: i || s.open,
		children: s.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, {
			side: a,
			...o,
			ref: t
		}) : /* @__PURE__ */ jsx(TooltipContentHoverable, {
			side: a,
			...o,
			ref: t
		})
	});
}), TooltipContentHoverable = React$1.forwardRef((e, t) => {
	let n = useTooltipContext(CONTENT_NAME$6, e.__scopeTooltip), i = useTooltipProviderContext(CONTENT_NAME$6, e.__scopeTooltip), a = React$1.useRef(null), o = useComposedRefs$1(t, a), [s, c] = React$1.useState(null), { trigger: d, onClose: f } = n, g = a.current, { onPointerInTransitChange: y } = i, b = React$1.useCallback(() => {
		c(null), y(!1);
	}, [y]), x = React$1.useCallback((e, t) => {
		let n = e.currentTarget, i = {
			x: e.clientX,
			y: e.clientY
		}, a = getExitSideFromRect(i, n.getBoundingClientRect()), o = getPaddedExitPoints(i, a), s = getPointsFromRect(t.getBoundingClientRect()), d = getHull([...o, ...s]);
		c(d), y(!0);
	}, [y]);
	return React$1.useEffect(() => () => b(), [b]), React$1.useEffect(() => {
		if (d && g) {
			let e = (e) => x(e, g), t = (e) => x(e, d);
			return d.addEventListener("pointerleave", e), g.addEventListener("pointerleave", t), () => {
				d.removeEventListener("pointerleave", e), g.removeEventListener("pointerleave", t);
			};
		}
	}, [
		d,
		g,
		x,
		b
	]), React$1.useEffect(() => {
		if (s) {
			let e = (e) => {
				let t = e.target, n = {
					x: e.clientX,
					y: e.clientY
				}, i = d?.contains(t) || g?.contains(t), a = !isPointInPolygon(n, s);
				i ? b() : a && (b(), f());
			};
			return document.addEventListener("pointermove", e), () => document.removeEventListener("pointermove", e);
		}
	}, [
		d,
		g,
		s,
		f,
		b
	]), /* @__PURE__ */ jsx(TooltipContentImpl, {
		...e,
		ref: o
	});
}), [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: !1 }), Slottable$1 = /* @__PURE__ */ createSlottable("TooltipContent"), TooltipContentImpl = React$1.forwardRef((e, t) => {
	let { __scopeTooltip: n, children: i, "aria-label": a, onEscapeKeyDown: o, onPointerDownOutside: s,...c } = e, d = useTooltipContext(CONTENT_NAME$6, n), f = usePopperScope$1(n), { onClose: g } = d;
	return React$1.useEffect(() => (document.addEventListener(TOOLTIP_OPEN, g), () => document.removeEventListener(TOOLTIP_OPEN, g)), [g]), React$1.useEffect(() => {
		if (d.trigger) {
			let e = (e) => {
				e.target?.contains(d.trigger) && g();
			};
			return window.addEventListener("scroll", e, { capture: !0 }), () => window.removeEventListener("scroll", e, { capture: !0 });
		}
	}, [d.trigger, g]), /* @__PURE__ */ jsx(DismissableLayer, {
		asChild: !0,
		disableOutsidePointerEvents: !1,
		onEscapeKeyDown: o,
		onPointerDownOutside: s,
		onFocusOutside: (e) => e.preventDefault(),
		onDismiss: g,
		children: /* @__PURE__ */ jsxs(Content$1, {
			"data-state": d.stateAttribute,
			...f,
			...c,
			ref: t,
			style: {
				...c.style,
				"--radix-tooltip-content-transform-origin": "var(--radix-popper-transform-origin)",
				"--radix-tooltip-content-available-width": "var(--radix-popper-available-width)",
				"--radix-tooltip-content-available-height": "var(--radix-popper-available-height)",
				"--radix-tooltip-trigger-width": "var(--radix-popper-anchor-width)",
				"--radix-tooltip-trigger-height": "var(--radix-popper-anchor-height)"
			},
			children: [/* @__PURE__ */ jsx(Slottable$1, { children: i }), /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, {
				scope: n,
				isInside: !0,
				children: /* @__PURE__ */ jsx(Root$3, {
					id: d.contentId,
					role: "tooltip",
					children: a || i
				})
			})]
		})
	});
});
TooltipContent$1.displayName = CONTENT_NAME$6;
var ARROW_NAME$2 = "TooltipArrow", TooltipArrow = React$1.forwardRef((e, t) => {
	let { __scopeTooltip: n,...i } = e, a = usePopperScope$1(n);
	return useVisuallyHiddenContentContext(ARROW_NAME$2, n).isInside ? null : /* @__PURE__ */ jsx(Arrow, {
		...a,
		...i,
		ref: t
	});
});
TooltipArrow.displayName = ARROW_NAME$2;
function getExitSideFromRect(e, t) {
	let n = Math.abs(t.top - e.y), i = Math.abs(t.bottom - e.y), a = Math.abs(t.right - e.x), o = Math.abs(t.left - e.x);
	switch (Math.min(n, i, a, o)) {
		case o: return "left";
		case a: return "right";
		case n: return "top";
		case i: return "bottom";
		default: throw Error("unreachable");
	}
}
function getPaddedExitPoints(e, t, n = 5) {
	let i = [];
	switch (t) {
		case "top":
			i.push({
				x: e.x - n,
				y: e.y + n
			}, {
				x: e.x + n,
				y: e.y + n
			});
			break;
		case "bottom":
			i.push({
				x: e.x - n,
				y: e.y - n
			}, {
				x: e.x + n,
				y: e.y - n
			});
			break;
		case "left":
			i.push({
				x: e.x + n,
				y: e.y - n
			}, {
				x: e.x + n,
				y: e.y + n
			});
			break;
		case "right":
			i.push({
				x: e.x - n,
				y: e.y - n
			}, {
				x: e.x - n,
				y: e.y + n
			});
			break;
	}
	return i;
}
function getPointsFromRect(e) {
	let { top: t, right: n, bottom: i, left: a } = e;
	return [
		{
			x: a,
			y: t
		},
		{
			x: n,
			y: t
		},
		{
			x: n,
			y: i
		},
		{
			x: a,
			y: i
		}
	];
}
function isPointInPolygon(e, t) {
	let { x: n, y: i } = e, a = !1;
	for (let e = 0, o = t.length - 1; e < t.length; o = e++) {
		let s = t[e], c = t[o], d = s.x, f = s.y, g = c.x, y = c.y;
		f > i != y > i && n < (g - d) * (i - f) / (y - f) + d && (a = !a);
	}
	return a;
}
function getHull(e) {
	let t = e.slice();
	return t.sort((e, t) => e.x < t.x ? -1 : e.x > t.x ? 1 : e.y < t.y ? -1 : e.y > t.y ? 1 : 0), getHullPresorted(t);
}
function getHullPresorted(e) {
	if (e.length <= 1) return e.slice();
	let t = [];
	for (let n = 0; n < e.length; n++) {
		let i = e[n];
		for (; t.length >= 2;) {
			let e = t[t.length - 1], n = t[t.length - 2];
			if ((e.x - n.x) * (i.y - n.y) >= (e.y - n.y) * (i.x - n.x)) t.pop();
			else break;
		}
		t.push(i);
	}
	t.pop();
	let n = [];
	for (let t = e.length - 1; t >= 0; t--) {
		let i = e[t];
		for (; n.length >= 2;) {
			let e = n[n.length - 1], t = n[n.length - 2];
			if ((e.x - t.x) * (i.y - t.y) >= (e.y - t.y) * (i.x - t.x)) n.pop();
			else break;
		}
		n.push(i);
	}
	return n.pop(), t.length === 1 && n.length === 1 && t[0].x === n[0].x && t[0].y === n[0].y ? t : t.concat(n);
}
var Provider = TooltipProvider$1, Root3 = Tooltip$1, Trigger$3 = TooltipTrigger$1, Portal$2 = TooltipPortal, Content2$3 = TooltipContent$1, Arrow2 = TooltipArrow;
function TooltipProvider({ delayDuration: e = 0,...t }) {
	return /* @__PURE__ */ jsx(Provider, {
		"data-slot": "tooltip-provider",
		delayDuration: e,
		...t
	});
}
function Tooltip({ ...e }) {
	return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(Root3, {
		"data-slot": "tooltip",
		...e
	}) });
}
function TooltipTrigger({ ...e }) {
	return /* @__PURE__ */ jsx(Trigger$3, {
		"data-slot": "tooltip-trigger",
		...e
	});
}
function TooltipContent({ className: e, sideOffset: t = 0, children: n,...i }) {
	let [a, o] = useState(null);
	return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Portal$2, {
		container: a,
		children: /* @__PURE__ */ jsxs(Content2$3, {
			"data-slot": "tooltip-content",
			sideOffset: t,
			className: cn("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-[var(--radix-tooltip-content-transform-origin)] text-balance rounded-md px-3 py-1.5 text-xs", e),
			...i,
			children: [n, /* @__PURE__ */ jsx(Arrow2, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })]
		})
	}), /* @__PURE__ */ jsx("div", {
		ref: o,
		style: { display: "contents" }
	})] });
}
const GraphQLIcon = (e) => /* @__PURE__ */ jsxs("svg", {
	width: "100",
	height: "100",
	viewBox: "0 0 100 100",
	fill: "none",
	xmlns: "http://www.w3.org/2000/svg",
	...e,
	children: [
		/* @__PURE__ */ jsx("path", {
			fillRule: "evenodd",
			clipRule: "evenodd",
			d: "M49.9994 6.90218L87.3224 28.4506V71.5475L49.9994 93.0959L12.6764 71.5475V28.4506L49.9994 6.90218ZM16.8641 30.8684V62.5242L44.2789 15.0405L16.8641 30.8684ZM49.9994 13.5077L18.3969 68.2448H81.6019L49.9994 13.5077ZM77.4142 72.4325H22.5846L49.9994 88.2604L77.4142 72.4325ZM83.1347 62.5242L55.7199 15.0405L83.1347 30.8684V62.5242Z",
			fill: "currentColor"
		}),
		/* @__PURE__ */ jsx("path", {
			d: "M49.9994 18.14C54.8706 18.14 58.8194 14.1912 58.8194 9.32C58.8194 4.44885 54.8706 0.5 49.9994 0.5C45.1283 0.5 41.1794 4.44885 41.1794 9.32C41.1794 14.1912 45.1283 18.14 49.9994 18.14Z",
			fill: "currentColor"
		}),
		/* @__PURE__ */ jsx("path", {
			d: "M85.2286 38.4796C90.0998 38.4796 94.0486 34.5308 94.0486 29.6596C94.0486 24.7884 90.0998 20.8396 85.2286 20.8396C80.3575 20.8396 76.4086 24.7884 76.4086 29.6596C76.4086 34.5308 80.3575 38.4796 85.2286 38.4796Z",
			fill: "currentColor"
		}),
		/* @__PURE__ */ jsx("path", {
			d: "M85.2286 79.1587C90.0998 79.1587 94.0486 75.2099 94.0486 70.3387C94.0486 65.4675 90.0998 61.5187 85.2286 61.5187C80.3575 61.5187 76.4086 65.4675 76.4086 70.3387C76.4086 75.2099 80.3575 79.1587 85.2286 79.1587Z",
			fill: "currentColor"
		}),
		/* @__PURE__ */ jsx("path", {
			d: "M49.9994 99.4982C54.8706 99.4982 58.8194 95.5494 58.8194 90.6782C58.8194 85.807 54.8706 81.8582 49.9994 81.8582C45.1283 81.8582 41.1794 85.807 41.1794 90.6782C41.1794 95.5494 45.1283 99.4982 49.9994 99.4982Z",
			fill: "currentColor"
		}),
		/* @__PURE__ */ jsx("path", {
			d: "M14.7653 79.1587C19.6365 79.1587 23.5853 75.2099 23.5853 70.3387C23.5853 65.4675 19.6365 61.5187 14.7653 61.5187C9.89416 61.5187 5.94531 65.4675 5.94531 70.3387C5.94531 75.2099 9.89416 79.1587 14.7653 79.1587Z",
			fill: "currentColor"
		}),
		/* @__PURE__ */ jsx("path", {
			d: "M14.7653 38.4796C19.6365 38.4796 23.5853 34.5308 23.5853 29.6596C23.5853 24.7884 19.6365 20.8396 14.7653 20.8396C9.89416 20.8396 5.94531 24.7884 5.94531 29.6596C5.94531 34.5308 9.89416 38.4796 14.7653 38.4796Z",
			fill: "currentColor"
		})
	]
});
var ROOT_NAME$1 = "AlertDialog", [createAlertDialogContext, createAlertDialogScope] = createContextScope(ROOT_NAME$1, [createDialogScope]), useDialogScope = createDialogScope(), AlertDialog$1 = (e) => {
	let { __scopeAlertDialog: t,...n } = e, i = useDialogScope(t);
	return /* @__PURE__ */ jsx(Root$7, {
		...i,
		...n,
		modal: !0
	});
};
AlertDialog$1.displayName = ROOT_NAME$1;
var TRIGGER_NAME$5 = "AlertDialogTrigger", AlertDialogTrigger$1 = React$1.forwardRef((e, t) => {
	let { __scopeAlertDialog: n,...i } = e, a = useDialogScope(n);
	return /* @__PURE__ */ jsx(Trigger$5, {
		...a,
		...i,
		ref: t
	});
});
AlertDialogTrigger$1.displayName = TRIGGER_NAME$5;
var PORTAL_NAME$2 = "AlertDialogPortal", AlertDialogPortal$1 = (e) => {
	let { __scopeAlertDialog: t,...n } = e, i = useDialogScope(t);
	return /* @__PURE__ */ jsx(Portal$4, {
		...i,
		...n
	});
};
AlertDialogPortal$1.displayName = PORTAL_NAME$2;
var OVERLAY_NAME$1 = "AlertDialogOverlay", AlertDialogOverlay$1 = React$1.forwardRef((e, t) => {
	let { __scopeAlertDialog: n,...i } = e, a = useDialogScope(n);
	return /* @__PURE__ */ jsx(Overlay, {
		...a,
		...i,
		ref: t
	});
});
AlertDialogOverlay$1.displayName = OVERLAY_NAME$1;
var CONTENT_NAME$5 = "AlertDialogContent", [AlertDialogContentProvider, useAlertDialogContentContext] = createAlertDialogContext(CONTENT_NAME$5), Slottable = /* @__PURE__ */ createSlottable("AlertDialogContent"), AlertDialogContent$1 = React$1.forwardRef((e, t) => {
	let { __scopeAlertDialog: n, children: i,...a } = e, o = useDialogScope(n), s = React$1.useRef(null), c = useComposedRefs$1(t, s), d = React$1.useRef(null);
	return /* @__PURE__ */ jsx(WarningProvider, {
		contentName: CONTENT_NAME$5,
		titleName: TITLE_NAME,
		docsSlug: "alert-dialog",
		children: /* @__PURE__ */ jsx(AlertDialogContentProvider, {
			scope: n,
			cancelRef: d,
			children: /* @__PURE__ */ jsxs(Content$2, {
				role: "alertdialog",
				...o,
				...a,
				ref: c,
				onOpenAutoFocus: composeEventHandlers(a.onOpenAutoFocus, (e) => {
					e.preventDefault(), d.current?.focus({ preventScroll: !0 });
				}),
				onPointerDownOutside: (e) => e.preventDefault(),
				onInteractOutside: (e) => e.preventDefault(),
				children: [/* @__PURE__ */ jsx(Slottable, { children: i }), /* @__PURE__ */ jsx(DescriptionWarning, { contentRef: s })]
			})
		})
	});
});
AlertDialogContent$1.displayName = CONTENT_NAME$5;
var TITLE_NAME = "AlertDialogTitle", AlertDialogTitle$1 = React$1.forwardRef((e, t) => {
	let { __scopeAlertDialog: n,...i } = e, a = useDialogScope(n);
	return /* @__PURE__ */ jsx(Title, {
		...a,
		...i,
		ref: t
	});
});
AlertDialogTitle$1.displayName = TITLE_NAME;
var DESCRIPTION_NAME = "AlertDialogDescription", AlertDialogDescription$1 = React$1.forwardRef((e, t) => {
	let { __scopeAlertDialog: n,...i } = e, a = useDialogScope(n);
	return /* @__PURE__ */ jsx(Description, {
		...a,
		...i,
		ref: t
	});
});
AlertDialogDescription$1.displayName = DESCRIPTION_NAME;
var ACTION_NAME = "AlertDialogAction", AlertDialogAction$1 = React$1.forwardRef((e, t) => {
	let { __scopeAlertDialog: n,...i } = e, a = useDialogScope(n);
	return /* @__PURE__ */ jsx(Close, {
		...a,
		...i,
		ref: t
	});
});
AlertDialogAction$1.displayName = ACTION_NAME;
var CANCEL_NAME = "AlertDialogCancel", AlertDialogCancel$1 = React$1.forwardRef((e, t) => {
	let { __scopeAlertDialog: n,...i } = e, { cancelRef: a } = useAlertDialogContentContext(CANCEL_NAME, n), o = useDialogScope(n), s = useComposedRefs$1(t, a);
	return /* @__PURE__ */ jsx(Close, {
		...o,
		...i,
		ref: s
	});
});
AlertDialogCancel$1.displayName = CANCEL_NAME;
var DescriptionWarning = ({ contentRef: e }) => {
	let t = `\`${CONTENT_NAME$5}\` requires a description for the component to be accessible for screen reader users.

You can add a description to the \`${CONTENT_NAME$5}\` by passing a \`${DESCRIPTION_NAME}\` component as a child, which also benefits sighted users by adding visible context to the dialog.

Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${CONTENT_NAME$5}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.

For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;
	return React$1.useEffect(() => {
		document.getElementById(e.current?.getAttribute("aria-describedby")) || console.warn(t);
	}, [t, e]), null;
}, Root2$4 = AlertDialog$1, Trigger2 = AlertDialogTrigger$1, Portal2$1 = AlertDialogPortal$1, Overlay2 = AlertDialogOverlay$1, Content2$2 = AlertDialogContent$1, Action$1 = AlertDialogAction$1, Cancel = AlertDialogCancel$1, Title2 = AlertDialogTitle$1, Description2 = AlertDialogDescription$1;
function AlertDialog({ ...e }) {
	return /* @__PURE__ */ jsx(Root2$4, {
		"data-slot": "alert-dialog",
		...e
	});
}
function AlertDialogTrigger({ ...e }) {
	return /* @__PURE__ */ jsx(Trigger2, {
		"data-slot": "alert-dialog-trigger",
		...e
	});
}
function AlertDialogPortal({ ...e }) {
	return /* @__PURE__ */ jsx(Portal2$1, {
		"data-slot": "alert-dialog-portal",
		...e
	});
}
function AlertDialogOverlay({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Overlay2, {
		"data-slot": "alert-dialog-overlay",
		className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", e),
		...t
	});
}
function AlertDialogContent({ className: e,...t }) {
	return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [/* @__PURE__ */ jsx(AlertDialogOverlay, {}), /* @__PURE__ */ jsx(Content2$2, {
		"data-slot": "alert-dialog-content",
		className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", e),
		...t
	})] });
}
function AlertDialogHeader({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "alert-dialog-header",
		className: cn("flex flex-col gap-2 text-center sm:text-left", e),
		...t
	});
}
function AlertDialogFooter({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "alert-dialog-footer",
		className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", e),
		...t
	});
}
function AlertDialogTitle({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Title2, {
		"data-slot": "alert-dialog-title",
		className: cn("text-lg font-semibold", e),
		...t
	});
}
function AlertDialogDescription({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Description2, {
		"data-slot": "alert-dialog-description",
		className: cn("text-muted-foreground text-sm", e),
		...t
	});
}
function AlertDialogAction({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Action$1, {
		className: cn(buttonVariants(), e),
		...t
	});
}
function AlertDialogCancel({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Cancel, {
		className: cn(buttonVariants({ variant: "outline" }), e),
		...t
	});
}
var COLLAPSIBLE_NAME = "Collapsible", [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME), [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME), Collapsible$1 = React$1.forwardRef((e, t) => {
	let { __scopeCollapsible: n, open: i, defaultOpen: a, disabled: o, onOpenChange: s,...c } = e, [d, f] = useControllableState({
		prop: i,
		defaultProp: a ?? !1,
		onChange: s,
		caller: COLLAPSIBLE_NAME
	});
	return /* @__PURE__ */ jsx(CollapsibleProvider, {
		scope: n,
		disabled: o,
		contentId: useId$1(),
		open: d,
		onOpenToggle: React$1.useCallback(() => f((e) => !e), [f]),
		children: /* @__PURE__ */ jsx(Primitive.div, {
			"data-state": getState$2(d),
			"data-disabled": o ? "" : void 0,
			...c,
			ref: t
		})
	});
});
Collapsible$1.displayName = COLLAPSIBLE_NAME;
var TRIGGER_NAME$4 = "CollapsibleTrigger", CollapsibleTrigger$1 = React$1.forwardRef((e, t) => {
	let { __scopeCollapsible: n,...i } = e, a = useCollapsibleContext(TRIGGER_NAME$4, n);
	return /* @__PURE__ */ jsx(Primitive.button, {
		type: "button",
		"aria-controls": a.contentId,
		"aria-expanded": a.open || !1,
		"data-state": getState$2(a.open),
		"data-disabled": a.disabled ? "" : void 0,
		disabled: a.disabled,
		...i,
		ref: t,
		onClick: composeEventHandlers(e.onClick, a.onOpenToggle)
	});
});
CollapsibleTrigger$1.displayName = TRIGGER_NAME$4;
var CONTENT_NAME$4 = "CollapsibleContent", CollapsibleContent$1 = React$1.forwardRef((e, t) => {
	let { forceMount: n,...i } = e, a = useCollapsibleContext(CONTENT_NAME$4, e.__scopeCollapsible);
	return /* @__PURE__ */ jsx(Presence, {
		present: n || a.open,
		children: ({ present: e }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, {
			...i,
			ref: t,
			present: e
		})
	});
});
CollapsibleContent$1.displayName = CONTENT_NAME$4;
var CollapsibleContentImpl = React$1.forwardRef((e, t) => {
	let { __scopeCollapsible: n, present: i, children: a,...o } = e, s = useCollapsibleContext(CONTENT_NAME$4, n), [c, d] = React$1.useState(i), f = React$1.useRef(null), g = useComposedRefs$1(t, f), y = React$1.useRef(0), b = y.current, x = React$1.useRef(0), S = x.current, C = s.open || c, w = React$1.useRef(C), E = React$1.useRef(void 0);
	return React$1.useEffect(() => {
		let e = requestAnimationFrame(() => w.current = !1);
		return () => cancelAnimationFrame(e);
	}, []), useLayoutEffect2(() => {
		let e = f.current;
		if (e) {
			E.current = E.current || {
				transitionDuration: e.style.transitionDuration,
				animationName: e.style.animationName
			}, e.style.transitionDuration = "0s", e.style.animationName = "none";
			let t = e.getBoundingClientRect();
			y.current = t.height, x.current = t.width, w.current || (e.style.transitionDuration = E.current.transitionDuration, e.style.animationName = E.current.animationName), d(i);
		}
	}, [s.open, i]), /* @__PURE__ */ jsx(Primitive.div, {
		"data-state": getState$2(s.open),
		"data-disabled": s.disabled ? "" : void 0,
		id: s.contentId,
		hidden: !C,
		...o,
		ref: g,
		style: {
			"--radix-collapsible-content-height": b ? `${b}px` : void 0,
			"--radix-collapsible-content-width": S ? `${S}px` : void 0,
			...e.style
		},
		children: C && a
	});
});
function getState$2(e) {
	return e ? "open" : "closed";
}
var Root$2 = Collapsible$1;
function Collapsible({ ...e }) {
	return /* @__PURE__ */ jsx(Root$2, {
		"data-slot": "collapsible",
		...e
	});
}
function CollapsibleTrigger({ ...e }) {
	return /* @__PURE__ */ jsx(CollapsibleTrigger$1, {
		"data-slot": "collapsible-trigger",
		...e
	});
}
function CollapsibleContent({ ...e }) {
	return /* @__PURE__ */ jsx(CollapsibleContent$1, {
		"data-slot": "collapsible-content",
		...e
	});
}
function clamp(e, [t, n]) {
	return Math.min(n, Math.max(t, e));
}
function useStateMachine(e, t) {
	return React$1.useReducer((e, n) => t[e][n] ?? e, e);
}
var SCROLL_AREA_NAME = "ScrollArea", [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME), [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext(SCROLL_AREA_NAME), ScrollArea$1 = React$1.forwardRef((e, t) => {
	let { __scopeScrollArea: n, type: i = "hover", dir: a, scrollHideDelay: o = 600,...s } = e, [c, d] = React$1.useState(null), [f, g] = React$1.useState(null), [y, b] = React$1.useState(null), [x, S] = React$1.useState(null), [C, w] = React$1.useState(null), [E, O] = React$1.useState(0), [A, j] = React$1.useState(0), [M, F] = React$1.useState(!1), [I, R] = React$1.useState(!1), zv = useComposedRefs$1(t, (e) => d(e)), V = useDirection(a);
	return /* @__PURE__ */ jsx(ScrollAreaProvider, {
		scope: n,
		type: i,
		dir: V,
		scrollHideDelay: o,
		scrollArea: c,
		viewport: f,
		onViewportChange: g,
		content: y,
		onContentChange: b,
		scrollbarX: x,
		onScrollbarXChange: S,
		scrollbarXEnabled: M,
		onScrollbarXEnabledChange: F,
		scrollbarY: C,
		onScrollbarYChange: w,
		scrollbarYEnabled: I,
		onScrollbarYEnabledChange: R,
		onCornerWidthChange: O,
		onCornerHeightChange: j,
		children: /* @__PURE__ */ jsx(Primitive.div, {
			dir: V,
			...s,
			ref: zv,
			style: {
				position: "relative",
				"--radix-scroll-area-corner-width": E + "px",
				"--radix-scroll-area-corner-height": A + "px",
				...e.style
			}
		})
	});
});
ScrollArea$1.displayName = SCROLL_AREA_NAME;
var VIEWPORT_NAME$1 = "ScrollAreaViewport", ScrollAreaViewport = React$1.forwardRef((e, t) => {
	let { __scopeScrollArea: n, children: i, nonce: a,...o } = e, s = useScrollAreaContext(VIEWPORT_NAME$1, n), c = React$1.useRef(null), d = useComposedRefs$1(t, c, s.onViewportChange);
	return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("style", {
		dangerouslySetInnerHTML: { __html: "[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}" },
		nonce: a
	}), /* @__PURE__ */ jsx(Primitive.div, {
		"data-radix-scroll-area-viewport": "",
		...o,
		ref: d,
		style: {
			overflowX: s.scrollbarXEnabled ? "scroll" : "hidden",
			overflowY: s.scrollbarYEnabled ? "scroll" : "hidden",
			...e.style
		},
		children: /* @__PURE__ */ jsx("div", {
			ref: s.onContentChange,
			style: {
				minWidth: "100%",
				display: "table"
			},
			children: i
		})
	})] });
});
ScrollAreaViewport.displayName = VIEWPORT_NAME$1;
var SCROLLBAR_NAME = "ScrollAreaScrollbar", ScrollAreaScrollbar = React$1.forwardRef((e, t) => {
	let { forceMount: n,...i } = e, a = useScrollAreaContext(SCROLLBAR_NAME, e.__scopeScrollArea), { onScrollbarXEnabledChange: o, onScrollbarYEnabledChange: s } = a, c = e.orientation === "horizontal";
	return React$1.useEffect(() => (c ? o(!0) : s(!0), () => {
		c ? o(!1) : s(!1);
	}), [
		c,
		o,
		s
	]), a.type === "hover" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarHover, {
		...i,
		ref: t,
		forceMount: n
	}) : a.type === "scroll" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarScroll, {
		...i,
		ref: t,
		forceMount: n
	}) : a.type === "auto" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, {
		...i,
		ref: t,
		forceMount: n
	}) : a.type === "always" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
		...i,
		ref: t
	}) : null;
});
ScrollAreaScrollbar.displayName = SCROLLBAR_NAME;
var ScrollAreaScrollbarHover = React$1.forwardRef((e, t) => {
	let { forceMount: n,...i } = e, a = useScrollAreaContext(SCROLLBAR_NAME, e.__scopeScrollArea), [o, s] = React$1.useState(!1);
	return React$1.useEffect(() => {
		let e = a.scrollArea, t = 0;
		if (e) {
			let n = () => {
				window.clearTimeout(t), s(!0);
			}, i = () => {
				t = window.setTimeout(() => s(!1), a.scrollHideDelay);
			};
			return e.addEventListener("pointerenter", n), e.addEventListener("pointerleave", i), () => {
				window.clearTimeout(t), e.removeEventListener("pointerenter", n), e.removeEventListener("pointerleave", i);
			};
		}
	}, [a.scrollArea, a.scrollHideDelay]), /* @__PURE__ */ jsx(Presence, {
		present: n || o,
		children: /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, {
			"data-state": o ? "visible" : "hidden",
			...i,
			ref: t
		})
	});
}), ScrollAreaScrollbarScroll = React$1.forwardRef((e, t) => {
	let { forceMount: n,...i } = e, a = useScrollAreaContext(SCROLLBAR_NAME, e.__scopeScrollArea), o = e.orientation === "horizontal", s = useDebounceCallback(() => d("SCROLL_END"), 100), [c, d] = useStateMachine("hidden", {
		hidden: { SCROLL: "scrolling" },
		scrolling: {
			SCROLL_END: "idle",
			POINTER_ENTER: "interacting"
		},
		interacting: {
			SCROLL: "interacting",
			POINTER_LEAVE: "idle"
		},
		idle: {
			HIDE: "hidden",
			SCROLL: "scrolling",
			POINTER_ENTER: "interacting"
		}
	});
	return React$1.useEffect(() => {
		if (c === "idle") {
			let e = window.setTimeout(() => d("HIDE"), a.scrollHideDelay);
			return () => window.clearTimeout(e);
		}
	}, [
		c,
		a.scrollHideDelay,
		d
	]), React$1.useEffect(() => {
		let e = a.viewport, t = o ? "scrollLeft" : "scrollTop";
		if (e) {
			let n = e[t], i = () => {
				let i = e[t];
				n !== i && (d("SCROLL"), s()), n = i;
			};
			return e.addEventListener("scroll", i), () => e.removeEventListener("scroll", i);
		}
	}, [
		a.viewport,
		o,
		d,
		s
	]), /* @__PURE__ */ jsx(Presence, {
		present: n || c !== "hidden",
		children: /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
			"data-state": c === "hidden" ? "hidden" : "visible",
			...i,
			ref: t,
			onPointerEnter: composeEventHandlers(e.onPointerEnter, () => d("POINTER_ENTER")),
			onPointerLeave: composeEventHandlers(e.onPointerLeave, () => d("POINTER_LEAVE"))
		})
	});
}), ScrollAreaScrollbarAuto = React$1.forwardRef((e, t) => {
	let n = useScrollAreaContext(SCROLLBAR_NAME, e.__scopeScrollArea), { forceMount: i,...a } = e, [o, s] = React$1.useState(!1), c = e.orientation === "horizontal", d = useDebounceCallback(() => {
		if (n.viewport) {
			let e = n.viewport.offsetWidth < n.viewport.scrollWidth, t = n.viewport.offsetHeight < n.viewport.scrollHeight;
			s(c ? e : t);
		}
	}, 10);
	return useResizeObserver$1(n.viewport, d), useResizeObserver$1(n.content, d), /* @__PURE__ */ jsx(Presence, {
		present: i || o,
		children: /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
			"data-state": o ? "visible" : "hidden",
			...a,
			ref: t
		})
	});
}), ScrollAreaScrollbarVisible = React$1.forwardRef((e, t) => {
	let { orientation: n = "vertical",...i } = e, a = useScrollAreaContext(SCROLLBAR_NAME, e.__scopeScrollArea), o = React$1.useRef(null), s = React$1.useRef(0), [c, d] = React$1.useState({
		content: 0,
		viewport: 0,
		scrollbar: {
			size: 0,
			paddingStart: 0,
			paddingEnd: 0
		}
	}), f = getThumbRatio(c.viewport, c.content), g = {
		...i,
		sizes: c,
		onSizesChange: d,
		hasThumb: f > 0 && f < 1,
		onThumbChange: (e) => o.current = e,
		onThumbPointerUp: () => s.current = 0,
		onThumbPointerDown: (e) => s.current = e
	};
	function y(e, t) {
		return getScrollPositionFromPointer(e, s.current, c, t);
	}
	return n === "horizontal" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarX, {
		...g,
		ref: t,
		onThumbPositionChange: () => {
			if (a.viewport && o.current) {
				let e = a.viewport.scrollLeft, t = getThumbOffsetFromScroll(e, c, a.dir);
				o.current.style.transform = `translate3d(${t}px, 0, 0)`;
			}
		},
		onWheelScroll: (e) => {
			a.viewport && (a.viewport.scrollLeft = e);
		},
		onDragScroll: (e) => {
			a.viewport && (a.viewport.scrollLeft = y(e, a.dir));
		}
	}) : n === "vertical" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarY, {
		...g,
		ref: t,
		onThumbPositionChange: () => {
			if (a.viewport && o.current) {
				let e = a.viewport.scrollTop, t = getThumbOffsetFromScroll(e, c);
				o.current.style.transform = `translate3d(0, ${t}px, 0)`;
			}
		},
		onWheelScroll: (e) => {
			a.viewport && (a.viewport.scrollTop = e);
		},
		onDragScroll: (e) => {
			a.viewport && (a.viewport.scrollTop = y(e));
		}
	}) : null;
}), ScrollAreaScrollbarX = React$1.forwardRef((e, t) => {
	let { sizes: n, onSizesChange: i,...a } = e, o = useScrollAreaContext(SCROLLBAR_NAME, e.__scopeScrollArea), [s, c] = React$1.useState(), d = React$1.useRef(null), f = useComposedRefs$1(t, d, o.onScrollbarXChange);
	return React$1.useEffect(() => {
		d.current && c(getComputedStyle(d.current));
	}, [d]), /* @__PURE__ */ jsx(ScrollAreaScrollbarImpl, {
		"data-orientation": "horizontal",
		...a,
		ref: f,
		sizes: n,
		style: {
			bottom: 0,
			left: o.dir === "rtl" ? "var(--radix-scroll-area-corner-width)" : 0,
			right: o.dir === "ltr" ? "var(--radix-scroll-area-corner-width)" : 0,
			"--radix-scroll-area-thumb-width": getThumbSize(n) + "px",
			...e.style
		},
		onThumbPointerDown: (t) => e.onThumbPointerDown(t.x),
		onDragScroll: (t) => e.onDragScroll(t.x),
		onWheelScroll: (t, n) => {
			if (o.viewport) {
				let i = o.viewport.scrollLeft + t.deltaX;
				e.onWheelScroll(i), isScrollingWithinScrollbarBounds(i, n) && t.preventDefault();
			}
		},
		onResize: () => {
			d.current && o.viewport && s && i({
				content: o.viewport.scrollWidth,
				viewport: o.viewport.offsetWidth,
				scrollbar: {
					size: d.current.clientWidth,
					paddingStart: toInt(s.paddingLeft),
					paddingEnd: toInt(s.paddingRight)
				}
			});
		}
	});
}), ScrollAreaScrollbarY = React$1.forwardRef((e, t) => {
	let { sizes: n, onSizesChange: i,...a } = e, o = useScrollAreaContext(SCROLLBAR_NAME, e.__scopeScrollArea), [s, c] = React$1.useState(), d = React$1.useRef(null), f = useComposedRefs$1(t, d, o.onScrollbarYChange);
	return React$1.useEffect(() => {
		d.current && c(getComputedStyle(d.current));
	}, [d]), /* @__PURE__ */ jsx(ScrollAreaScrollbarImpl, {
		"data-orientation": "vertical",
		...a,
		ref: f,
		sizes: n,
		style: {
			top: 0,
			right: o.dir === "ltr" ? 0 : void 0,
			left: o.dir === "rtl" ? 0 : void 0,
			bottom: "var(--radix-scroll-area-corner-height)",
			"--radix-scroll-area-thumb-height": getThumbSize(n) + "px",
			...e.style
		},
		onThumbPointerDown: (t) => e.onThumbPointerDown(t.y),
		onDragScroll: (t) => e.onDragScroll(t.y),
		onWheelScroll: (t, n) => {
			if (o.viewport) {
				let i = o.viewport.scrollTop + t.deltaY;
				e.onWheelScroll(i), isScrollingWithinScrollbarBounds(i, n) && t.preventDefault();
			}
		},
		onResize: () => {
			d.current && o.viewport && s && i({
				content: o.viewport.scrollHeight,
				viewport: o.viewport.offsetHeight,
				scrollbar: {
					size: d.current.clientHeight,
					paddingStart: toInt(s.paddingTop),
					paddingEnd: toInt(s.paddingBottom)
				}
			});
		}
	});
}), [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME), ScrollAreaScrollbarImpl = React$1.forwardRef((e, t) => {
	let { __scopeScrollArea: n, sizes: i, hasThumb: a, onThumbChange: o, onThumbPointerUp: s, onThumbPointerDown: c, onThumbPositionChange: d, onDragScroll: f, onWheelScroll: g, onResize: y,...b } = e, x = useScrollAreaContext(SCROLLBAR_NAME, n), [S, C] = React$1.useState(null), w = useComposedRefs$1(t, (e) => C(e)), E = React$1.useRef(null), O = React$1.useRef(""), A = x.viewport, j = i.content - i.viewport, M = useCallbackRef(g), F = useCallbackRef(d), I = useDebounceCallback(y, 10);
	function R(e) {
		if (E.current) {
			let t = e.clientX - E.current.left, n = e.clientY - E.current.top;
			f({
				x: t,
				y: n
			});
		}
	}
	return React$1.useEffect(() => {
		let e = (e) => {
			let t = e.target;
			S?.contains(t) && M(e, j);
		};
		return document.addEventListener("wheel", e, { passive: !1 }), () => document.removeEventListener("wheel", e, { passive: !1 });
	}, [
		A,
		S,
		j,
		M
	]), React$1.useEffect(F, [i, F]), useResizeObserver$1(S, I), useResizeObserver$1(x.content, I), /* @__PURE__ */ jsx(ScrollbarProvider, {
		scope: n,
		scrollbar: S,
		hasThumb: a,
		onThumbChange: useCallbackRef(o),
		onThumbPointerUp: useCallbackRef(s),
		onThumbPositionChange: F,
		onThumbPointerDown: useCallbackRef(c),
		children: /* @__PURE__ */ jsx(Primitive.div, {
			...b,
			ref: w,
			style: {
				position: "absolute",
				...b.style
			},
			onPointerDown: composeEventHandlers(e.onPointerDown, (e) => {
				e.button === 0 && (e.target.setPointerCapture(e.pointerId), E.current = S.getBoundingClientRect(), O.current = document.body.style.webkitUserSelect, document.body.style.webkitUserSelect = "none", x.viewport && (x.viewport.style.scrollBehavior = "auto"), R(e));
			}),
			onPointerMove: composeEventHandlers(e.onPointerMove, R),
			onPointerUp: composeEventHandlers(e.onPointerUp, (e) => {
				let t = e.target;
				t.hasPointerCapture(e.pointerId) && t.releasePointerCapture(e.pointerId), document.body.style.webkitUserSelect = O.current, x.viewport && (x.viewport.style.scrollBehavior = ""), E.current = null;
			})
		})
	});
}), THUMB_NAME = "ScrollAreaThumb", ScrollAreaThumb = React$1.forwardRef((e, t) => {
	let { forceMount: n,...i } = e, a = useScrollbarContext(THUMB_NAME, e.__scopeScrollArea);
	return /* @__PURE__ */ jsx(Presence, {
		present: n || a.hasThumb,
		children: /* @__PURE__ */ jsx(ScrollAreaThumbImpl, {
			ref: t,
			...i
		})
	});
}), ScrollAreaThumbImpl = React$1.forwardRef((e, t) => {
	let { __scopeScrollArea: n, style: i,...a } = e, o = useScrollAreaContext(THUMB_NAME, n), s = useScrollbarContext(THUMB_NAME, n), { onThumbPositionChange: c } = s, d = useComposedRefs$1(t, (e) => s.onThumbChange(e)), f = React$1.useRef(void 0), g = useDebounceCallback(() => {
		f.current &&= (f.current(), void 0);
	}, 100);
	return React$1.useEffect(() => {
		let e = o.viewport;
		if (e) {
			let t = () => {
				g(), f.current || (f.current = addUnlinkedScrollListener(e, c), c());
			};
			return c(), e.addEventListener("scroll", t), () => e.removeEventListener("scroll", t);
		}
	}, [
		o.viewport,
		g,
		c
	]), /* @__PURE__ */ jsx(Primitive.div, {
		"data-state": s.hasThumb ? "visible" : "hidden",
		...a,
		ref: d,
		style: {
			width: "var(--radix-scroll-area-thumb-width)",
			height: "var(--radix-scroll-area-thumb-height)",
			...i
		},
		onPointerDownCapture: composeEventHandlers(e.onPointerDownCapture, (e) => {
			let t = e.target.getBoundingClientRect(), n = e.clientX - t.left, i = e.clientY - t.top;
			s.onThumbPointerDown({
				x: n,
				y: i
			});
		}),
		onPointerUp: composeEventHandlers(e.onPointerUp, s.onThumbPointerUp)
	});
});
ScrollAreaThumb.displayName = THUMB_NAME;
var CORNER_NAME = "ScrollAreaCorner", ScrollAreaCorner = React$1.forwardRef((e, t) => {
	let n = useScrollAreaContext(CORNER_NAME, e.__scopeScrollArea), i = !!(n.scrollbarX && n.scrollbarY);
	return n.type !== "scroll" && i ? /* @__PURE__ */ jsx(ScrollAreaCornerImpl, {
		...e,
		ref: t
	}) : null;
});
ScrollAreaCorner.displayName = CORNER_NAME;
var ScrollAreaCornerImpl = React$1.forwardRef((e, t) => {
	let { __scopeScrollArea: n,...i } = e, a = useScrollAreaContext(CORNER_NAME, n), [o, s] = React$1.useState(0), [c, d] = React$1.useState(0), f = !!(o && c);
	return useResizeObserver$1(a.scrollbarX, () => {
		let e = a.scrollbarX?.offsetHeight || 0;
		a.onCornerHeightChange(e), d(e);
	}), useResizeObserver$1(a.scrollbarY, () => {
		let e = a.scrollbarY?.offsetWidth || 0;
		a.onCornerWidthChange(e), s(e);
	}), f ? /* @__PURE__ */ jsx(Primitive.div, {
		...i,
		ref: t,
		style: {
			width: o,
			height: c,
			position: "absolute",
			right: a.dir === "ltr" ? 0 : void 0,
			left: a.dir === "rtl" ? 0 : void 0,
			bottom: 0,
			...e.style
		}
	}) : null;
});
function toInt(e) {
	return e ? parseInt(e, 10) : 0;
}
function getThumbRatio(e, t) {
	let n = e / t;
	return isNaN(n) ? 0 : n;
}
function getThumbSize(e) {
	let t = getThumbRatio(e.viewport, e.content), n = e.scrollbar.paddingStart + e.scrollbar.paddingEnd, i = (e.scrollbar.size - n) * t;
	return Math.max(i, 18);
}
function getScrollPositionFromPointer(e, t, n, i = "ltr") {
	let a = getThumbSize(n), o = a / 2, s = t || o, c = a - s, d = n.scrollbar.paddingStart + s, f = n.scrollbar.size - n.scrollbar.paddingEnd - c, g = n.content - n.viewport, y = i === "ltr" ? [0, g] : [g * -1, 0];
	return linearScale([d, f], y)(e);
}
function getThumbOffsetFromScroll(e, t, n = "ltr") {
	let i = getThumbSize(t), a = t.scrollbar.paddingStart + t.scrollbar.paddingEnd, o = t.scrollbar.size - a, s = t.content - t.viewport, c = o - i, d = n === "ltr" ? [0, s] : [s * -1, 0], f = clamp(e, d);
	return linearScale([0, s], [0, c])(f);
}
function linearScale(e, t) {
	return (n) => {
		if (e[0] === e[1] || t[0] === t[1]) return t[0];
		let i = (t[1] - t[0]) / (e[1] - e[0]);
		return t[0] + i * (n - e[0]);
	};
}
function isScrollingWithinScrollbarBounds(e, t) {
	return e > 0 && e < t;
}
var addUnlinkedScrollListener = (e, t = () => {}) => {
	let n = {
		left: e.scrollLeft,
		top: e.scrollTop
	}, i = 0;
	return (function a() {
		let o = {
			left: e.scrollLeft,
			top: e.scrollTop
		}, s = n.left !== o.left, c = n.top !== o.top;
		(s || c) && t(), n = o, i = window.requestAnimationFrame(a);
	})(), () => window.cancelAnimationFrame(i);
};
function useDebounceCallback(e, t) {
	let n = useCallbackRef(e), i = React$1.useRef(0);
	return React$1.useEffect(() => () => window.clearTimeout(i.current), []), React$1.useCallback(() => {
		window.clearTimeout(i.current), i.current = window.setTimeout(n, t);
	}, [n, t]);
}
function useResizeObserver$1(e, t) {
	let n = useCallbackRef(t);
	useLayoutEffect2(() => {
		let t = 0;
		if (e) {
			let i = new ResizeObserver(() => {
				cancelAnimationFrame(t), t = window.requestAnimationFrame(n);
			});
			return i.observe(e), () => {
				window.cancelAnimationFrame(t), i.unobserve(e);
			};
		}
	}, [e, n]);
}
var Root$1 = ScrollArea$1, Viewport$1 = ScrollAreaViewport, Corner = ScrollAreaCorner;
function ScrollArea({ className: e, children: t,...n }) {
	return /* @__PURE__ */ jsxs(Root$1, {
		"data-slot": "scroll-area",
		className: cn("relative", e),
		...n,
		children: [
			/* @__PURE__ */ jsx(Viewport$1, {
				"data-slot": "scroll-area-viewport",
				className: "focus-visible:ring-ring/50 size-full rounded-[inherit] outline-none transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px]",
				children: t
			}),
			/* @__PURE__ */ jsx(ScrollBar, {}),
			/* @__PURE__ */ jsx(Corner, {})
		]
	});
}
function ScrollBar({ className: e, orientation: t = "vertical",...n }) {
	return /* @__PURE__ */ jsx(ScrollAreaScrollbar, {
		"data-slot": "scroll-area-scrollbar",
		orientation: t,
		className: cn("flex touch-none select-none p-px transition-colors", t === "vertical" && "h-full w-2.5 border-l border-l-transparent", t === "horizontal" && "h-2.5 flex-col border-t border-t-transparent", e),
		...n,
		children: /* @__PURE__ */ jsx(ScrollAreaThumb, {
			"data-slot": "scroll-area-thumb",
			className: "bg-border relative flex-1 rounded-full"
		})
	});
}
var LaboratoryContext = createContext({});
const useLaboratory = () => useContext(LaboratoryContext), LaboratoryProvider = (e) => /* @__PURE__ */ jsx(LaboratoryContext.Provider, {
	value: { ...e },
	children: e.children
}), CollectionItem = (e) => {
	let { activeOperation: t, operations: n, addOperation: i, setActiveOperation: a, deleteCollection: o, deleteOperationFromCollection: s, addTab: c, setActiveTab: d, checkPermissions: f } = useLaboratory(), [g, y] = useState(!1);
	return /* @__PURE__ */ jsxs(Collapsible, {
		open: g,
		onOpenChange: y,
		children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
			asChild: !0,
			children: /* @__PURE__ */ jsxs(Button, {
				variant: "ghost",
				className: "bg-background group sticky top-0 w-full justify-start px-2",
				size: "sm",
				children: [
					jsx(g ? FolderOpenIcon : FolderIcon, { className: "text-muted-foreground size-4" }),
					e.collection.name,
					f?.("collections:delete") && /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger$1, {
						asChild: !0,
						children: /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsx(AlertDialogTrigger, {
							asChild: !0,
							children: /* @__PURE__ */ jsx(Button, {
								variant: "link",
								className: "text-muted-foreground hover:text-destructive p-1! pr-0! ml-auto opacity-0 transition-opacity group-hover:opacity-100",
								onClick: (e) => {
									e.stopPropagation();
								},
								children: /* @__PURE__ */ jsx(TrashIcon, {})
							})
						}), /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Are you sure you want to delete collection?" }), /* @__PURE__ */ jsxs(AlertDialogDescription, { children: [e.collection.name, " will be permanently deleted. All operations in this collection will be deleted as well."] })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx(AlertDialogAction, {
							asChild: !0,
							children: /* @__PURE__ */ jsx(Button, {
								variant: "destructive",
								onClick: (t) => {
									t.stopPropagation(), o(e.collection.id);
								},
								children: "Delete"
							})
						})] })] })] })
					}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete collection" })] })
				]
			})
		}), /* @__PURE__ */ jsx(CollapsibleContent, {
			className: cn("border-border ml-4 flex flex-col gap-1 border-l pl-2"),
			children: g && e.collection.operations.map((o) => {
				let g = t?.id === o.id;
				return /* @__PURE__ */ jsxs(Button, {
					variant: "ghost",
					className: cn("group w-full justify-start gap-2 px-2", { "bg-accent/50": g }),
					size: "sm",
					onClick: () => {
						if (n.some((e) => e.id === o.id)) a(o.id);
						else {
							let e = i(o), t = c({
								type: "operation",
								data: e
							});
							d(t);
						}
					},
					children: [
						/* @__PURE__ */ jsx(GraphQLIcon, { className: "size-4 text-pink-500" }),
						o.name,
						f?.("collectionsOperations:delete") && /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger$1, {
							asChild: !0,
							children: /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsx(AlertDialogTrigger, {
								asChild: !0,
								children: /* @__PURE__ */ jsx(Button, {
									variant: "link",
									className: "text-muted-foreground hover:text-destructive p-1! pr-0! ml-auto opacity-0 transition-opacity group-hover:opacity-100",
									onClick: (e) => {
										e.stopPropagation();
									},
									children: /* @__PURE__ */ jsx(TrashIcon, {})
								})
							}), /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsxs(AlertDialogTitle, { children: [
								"Are you sure you want to delete operation ",
								o.name,
								"?"
							] }), /* @__PURE__ */ jsxs(AlertDialogDescription, { children: [o.name, " will be permanently deleted."] })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx(AlertDialogAction, {
								asChild: !0,
								children: /* @__PURE__ */ jsx(Button, {
									variant: "destructive",
									onClick: (t) => {
										t.stopPropagation(), s(e.collection.id, o.id);
									},
									children: "Delete"
								})
							})] })] })] })
						}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete operation" })] })
					]
				}, o.name);
			})
		})]
	});
}, CollectionsSearchResult = (e) => {
	let { activeOperation: t, operations: n, addOperation: i, setActiveOperation: a, addTab: o, setActiveTab: s } = useLaboratory();
	return /* @__PURE__ */ jsx("div", {
		className: "flex flex-col gap-1",
		children: e.items.map((e) => {
			let c = t?.id === e.id;
			return /* @__PURE__ */ jsxs(Button, {
				variant: "ghost",
				className: cn("group w-full justify-start gap-2 px-2", { "bg-accent/50": c }),
				size: "sm",
				onClick: () => {
					if (n.some((t) => t.id === e.id)) a(e.id);
					else {
						let t = i(e), n = o({
							type: "operation",
							data: t
						});
						s(n);
					}
				},
				children: [
					/* @__PURE__ */ jsx(GraphQLIcon, { className: "size-4 text-pink-500" }),
					/* @__PURE__ */ jsx("span", {
						className: "text-muted-foreground truncate",
						children: e.parent.name
					}),
					/* @__PURE__ */ jsx("span", {
						className: "text-muted-foreground",
						children: " / "
					}),
					e.name
				]
			}, e.name);
		})
	});
}, Collections = () => {
	let [e, t] = useState(""), { collections: n, openAddCollectionDialog: i, checkPermissions: a } = useLaboratory(), o = useMemo(() => n.reduce((e, t) => [...e, ...t.operations.map((e) => ({
		...e,
		parent: t
	}))], []).filter((t) => t.name.toLowerCase().includes(e.toLowerCase())), [n, e]);
	return /* @__PURE__ */ jsxs("div", {
		className: "grid size-full grid-rows-[auto_1fr] pb-0",
		children: [/* @__PURE__ */ jsxs("div", {
			className: "flex flex-col",
			children: [/* @__PURE__ */ jsxs("div", {
				className: "flex items-center gap-2 p-3 pb-0",
				children: [/* @__PURE__ */ jsx("span", {
					className: "text-base font-medium",
					children: "Collections"
				}), /* @__PURE__ */ jsx("div", {
					className: "ml-auto flex items-center gap-2",
					children: a?.("collections:create") && /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger$1, {
						asChild: !0,
						children: /* @__PURE__ */ jsx(Button, {
							variant: "ghost",
							size: "icon-sm",
							className: "p-1! size-6 rounded-sm",
							onClick: i,
							children: /* @__PURE__ */ jsx(FolderPlusIcon, { className: "text-primary size-4" })
						})
					}), /* @__PURE__ */ jsx(TooltipContent, { children: "Add collection" })] })
				})]
			}), /* @__PURE__ */ jsxs("div", {
				className: "border-border relative border-b p-3",
				children: [
					/* @__PURE__ */ jsx(SearchIcon, { className: "text-muted-foreground absolute left-5 top-1/2 size-4 -translate-y-1/2" }),
					/* @__PURE__ */ jsx(Input, {
						type: "text",
						placeholder: "Search...",
						className: cn("px-7"),
						value: e,
						onChange: (e) => t(e.target.value)
					}),
					e.length > 0 && /* @__PURE__ */ jsx(Button, {
						variant: "ghost",
						size: "icon-sm",
						className: "p-1! absolute right-5 top-1/2 size-6 -translate-y-1/2 rounded-sm",
						onClick: () => t(""),
						children: /* @__PURE__ */ jsx(XIcon, { className: "text-muted-foreground size-4" })
					})
				]
			})]
		}), /* @__PURE__ */ jsx("div", {
			className: "size-full overflow-hidden",
			children: /* @__PURE__ */ jsxs(ScrollArea, {
				className: "size-full",
				children: [/* @__PURE__ */ jsx("div", {
					className: "flex flex-col gap-1 p-3",
					children: e.length > 0 ? o.length > 0 ? /* @__PURE__ */ jsx(CollectionsSearchResult, { items: o }) : /* @__PURE__ */ jsx(Empty, {
						className: "px-0! w-full",
						children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
							/* @__PURE__ */ jsx(EmptyMedia, {
								variant: "icon",
								children: /* @__PURE__ */ jsx(SearchIcon, { className: "text-muted-foreground size-6" })
							}),
							/* @__PURE__ */ jsx(EmptyTitle, {
								className: "text-base",
								children: "No results found"
							}),
							/* @__PURE__ */ jsx(EmptyDescription, {
								className: "text-xs",
								children: "No collections found matching your search."
							})
						] })
					}) : n.length > 0 ? n.map((e) => /* @__PURE__ */ jsx(CollectionItem, { collection: e }, e.id)) : /* @__PURE__ */ jsxs(Empty, {
						className: "px-0! w-full",
						children: [/* @__PURE__ */ jsxs(EmptyHeader, { children: [
							/* @__PURE__ */ jsx(EmptyMedia, {
								variant: "icon",
								children: /* @__PURE__ */ jsx(FolderIcon, { className: "text-muted-foreground size-6" })
							}),
							/* @__PURE__ */ jsx(EmptyTitle, {
								className: "text-base",
								children: "No collections yet"
							}),
							/* @__PURE__ */ jsx(EmptyDescription, {
								className: "text-xs",
								children: "You haven't created any collections yet. Get started by adding your first collection."
							})
						] }), /* @__PURE__ */ jsx(EmptyContent, { children: /* @__PURE__ */ jsx(Button, {
							variant: "secondary",
							size: "sm",
							onClick: i,
							children: "Add collection"
						}) })]
					})
				}), /* @__PURE__ */ jsx(ScrollBar, {})]
			})
		})]
	});
};
var U = 1, Y$2 = .9, H$1 = .8, J = .17, p = .1, u = .999, $$1 = .9999, k$2 = .99, m = /[\\\/_+.#"@\[\(\{&]/, B$1 = /[\\\/_+.#"@\[\(\{&]/g, K$1 = /[\s-]/, X = /[\s-]/g;
function G(e, t, n, i, a, o, s) {
	if (o === t.length) return a === e.length ? U : k$2;
	var c = `${a},${o}`;
	if (s[c] !== void 0) return s[c];
	for (var d = i.charAt(o), f = n.indexOf(d, a), g = 0, y, b, x, S; f >= 0;) y = G(e, t, n, i, f + 1, o + 1, s), y > g && (f === a ? y *= U : m.test(e.charAt(f - 1)) ? (y *= H$1, x = e.slice(a, f - 1).match(B$1), x && a > 0 && (y *= u ** +x.length)) : K$1.test(e.charAt(f - 1)) ? (y *= Y$2, S = e.slice(a, f - 1).match(X), S && a > 0 && (y *= u ** +S.length)) : (y *= J, a > 0 && (y *= u ** +(f - a))), e.charAt(f) !== t.charAt(o) && (y *= $$1)), (y < p && n.charAt(f - 1) === i.charAt(o + 1) || i.charAt(o + 1) === i.charAt(o) && n.charAt(f - 1) !== i.charAt(o)) && (b = G(e, t, n, i, f + 1, o + 2, s), b * p > y && (y = b * p)), y > g && (g = y), f = n.indexOf(d, f + 1);
	return s[c] = g, g;
}
function D$1(e) {
	return e.toLowerCase().replace(X, " ");
}
function W(e, t, n) {
	return e = n && n.length > 0 ? `${e + " " + n.join(" ")}` : e, G(e, t, D$1(e), D$1(t), 0, 0, {});
}
var N = "[cmdk-group=\"\"]", Y$1 = "[cmdk-group-items=\"\"]", be$1 = "[cmdk-group-heading=\"\"]", le = "[cmdk-item=\"\"]", ce = `${le}:not([aria-disabled="true"])`, Z = "cmdk-item-select", T = "data-value", Re = (e, t, n) => W(e, t, n), ue = React$1.createContext(void 0), K = () => React$1.useContext(ue), de$1 = React$1.createContext(void 0), ee = () => React$1.useContext(de$1), fe = React$1.createContext(void 0), me = React$1.forwardRef((e, t) => {
	let n = L(() => ({
		search: "",
		value: e.value ?? e.defaultValue ?? "",
		selectedItemId: void 0,
		filtered: {
			count: 0,
			items: /* @__PURE__ */ new Map(),
			groups: /* @__PURE__ */ new Set()
		}
	})), i = L(() => /* @__PURE__ */ new Set()), a = L(() => /* @__PURE__ */ new Map()), o = L(() => /* @__PURE__ */ new Map()), s = L(() => /* @__PURE__ */ new Set()), c = pe(e), { label: d, children: f, value: g, onValueChange: y, filter: b, shouldFilter: x, loop: S, disablePointerSelection: C = !1, vimBindings: w = !0,...E } = e, O = useId$1(), A = useId$1(), j = useId$1(), M = React$1.useRef(null), F = ke();
	k$1(() => {
		if (g !== void 0) {
			let e = g.trim();
			n.current.value = e, I.emit();
		}
	}, [g]), k$1(() => {
		F(6, Hv);
	}, []);
	let I = React$1.useMemo(() => ({
		subscribe: (e) => (s.current.add(e), () => s.current.delete(e)),
		snapshot: () => n.current,
		setState: (e, t, i) => {
			var a, o, s;
			if (!Object.is(n.current[e], t)) {
				if (n.current[e] = t, e === "search") Vv(), V(), F(1, Bv);
				else if (e === "value") {
					if (document.activeElement.hasAttribute("cmdk-input") || document.activeElement.hasAttribute("cmdk-root")) {
						let e = document.getElementById(j);
						e ? e.focus() : (a = document.getElementById(O)) == null || a.focus();
					}
					if (F(7, () => {
						n.current.selectedItemId = Uv()?.id, I.emit();
					}), i || F(5, Hv), c.current?.value !== void 0) {
						let e = t ?? "";
						(s = (o = c.current).onValueChange) == null || s.call(o, e);
						return;
					}
				}
				I.emit();
			}
		},
		emit: () => {
			s.current.forEach((e) => e());
		}
	}), []), R = React$1.useMemo(() => ({
		value: (e, t, i) => {
			t !== o.current.get(e)?.value && (o.current.set(e, {
				value: t,
				keywords: i
			}), n.current.filtered.items.set(e, zv(t, i)), F(2, () => {
				V(), I.emit();
			}));
		},
		item: (e, t) => (i.current.add(e), t && (a.current.has(t) ? a.current.get(t).add(e) : a.current.set(t, new Set([e]))), F(3, () => {
			Vv(), V(), n.current.value || Bv(), I.emit();
		}), () => {
			o.current.delete(e), i.current.delete(e), n.current.filtered.items.delete(e);
			let t = Uv();
			F(4, () => {
				Vv(), t?.getAttribute("id") === e && Bv(), I.emit();
			});
		}),
		group: (e) => (a.current.has(e) || a.current.set(e, /* @__PURE__ */ new Set()), () => {
			o.current.delete(e), a.current.delete(e);
		}),
		filter: () => c.current.shouldFilter,
		label: d || e["aria-label"],
		getDisablePointerSelection: () => c.current.disablePointerSelection,
		listId: O,
		inputId: j,
		labelId: A,
		listInnerRef: M
	}), []);
	function zv(e, t) {
		let i = c.current?.filter ?? Re;
		return e ? i(e, n.current.search, t) : 0;
	}
	function V() {
		if (!n.current.search || c.current.shouldFilter === !1) return;
		let e = n.current.filtered.items, t = [];
		n.current.filtered.groups.forEach((n) => {
			let i = a.current.get(n), o = 0;
			i.forEach((t) => {
				let n = e.get(t);
				o = Math.max(n, o);
			}), t.push([n, o]);
		});
		let i = M.current;
		Wv().sort((t, n) => {
			let i = t.getAttribute("id"), a = n.getAttribute("id");
			return (e.get(a) ?? 0) - (e.get(i) ?? 0);
		}).forEach((e) => {
			let t = e.closest(Y$1);
			t ? t.appendChild(e.parentElement === t ? e : e.closest(`${Y$1} > *`)) : i.appendChild(e.parentElement === i ? e : e.closest(`${Y$1} > *`));
		}), t.sort((e, t) => t[1] - e[1]).forEach((e) => {
			let t = M.current?.querySelector(`${N}[${T}="${encodeURIComponent(e[0])}"]`);
			t?.parentElement.appendChild(t);
		});
	}
	function Bv() {
		let e = Wv().find((e) => e.getAttribute("aria-disabled") !== "true")?.getAttribute(T);
		I.setState("value", e || void 0);
	}
	function Vv() {
		if (!n.current.search || c.current.shouldFilter === !1) {
			n.current.filtered.count = i.current.size;
			return;
		}
		n.current.filtered.groups = /* @__PURE__ */ new Set();
		let e = 0;
		for (let t of i.current) {
			let i = o.current.get(t)?.value ?? "", a = o.current.get(t)?.keywords ?? [], s = zv(i, a);
			n.current.filtered.items.set(t, s), s > 0 && e++;
		}
		for (let [e, t] of a.current) for (let i of t) if (n.current.filtered.items.get(i) > 0) {
			n.current.filtered.groups.add(e);
			break;
		}
		n.current.filtered.count = e;
	}
	function Hv() {
		var e;
		let t = Uv();
		t && (t.parentElement?.firstChild === t && ((e = t.closest(N)?.querySelector(be$1)) == null || e.scrollIntoView({ block: "nearest" })), t.scrollIntoView({ block: "nearest" }));
	}
	function Uv() {
		return M.current?.querySelector(`${le}[aria-selected="true"]`);
	}
	function Wv() {
		return Array.from(M.current?.querySelectorAll(ce) || []);
	}
	function Gv(e) {
		let t = Wv()[e];
		t && I.setState("value", t.getAttribute(T));
	}
	function Kv(e) {
		var t;
		let n = Uv(), i = Wv(), a = i.findIndex((e) => e === n), o = i[a + e];
		(t = c.current) != null && t.loop && (o = a + e < 0 ? i[i.length - 1] : a + e === i.length ? i[0] : i[a + e]), o && I.setState("value", o.getAttribute(T));
	}
	function q(e) {
		let t = Uv()?.closest(N), n;
		for (; t && !n;) t = e > 0 ? we$1(t, N) : De$1(t, N), n = t?.querySelector(ce);
		n ? I.setState("value", n.getAttribute(T)) : Kv(e);
	}
	let qv = () => Gv(Wv().length - 1), Jv = (e) => {
		e.preventDefault(), e.metaKey ? qv() : e.altKey ? q(1) : Kv(1);
	}, Yv = (e) => {
		e.preventDefault(), e.metaKey ? Gv(0) : e.altKey ? q(-1) : Kv(-1);
	};
	return React$1.createElement(Primitive.div, {
		ref: t,
		tabIndex: -1,
		...E,
		"cmdk-root": "",
		onKeyDown: (e) => {
			var t;
			(t = E.onKeyDown) == null || t.call(E, e);
			let n = e.nativeEvent.isComposing || e.keyCode === 229;
			if (!(e.defaultPrevented || n)) switch (e.key) {
				case "n":
				case "j":
					w && e.ctrlKey && Jv(e);
					break;
				case "ArrowDown":
					Jv(e);
					break;
				case "p":
				case "k":
					w && e.ctrlKey && Yv(e);
					break;
				case "ArrowUp":
					Yv(e);
					break;
				case "Home":
					e.preventDefault(), Gv(0);
					break;
				case "End":
					e.preventDefault(), qv();
					break;
				case "Enter": {
					e.preventDefault();
					let t = Uv();
					if (t) {
						let e = new Event(Z);
						t.dispatchEvent(e);
					}
				}
			}
		}
	}, React$1.createElement("label", {
		"cmdk-label": "",
		htmlFor: R.inputId,
		id: R.labelId,
		style: Te
	}, d), B(e, (e) => React$1.createElement(de$1.Provider, { value: I }, React$1.createElement(ue.Provider, { value: R }, e))));
}), he$1 = React$1.forwardRef((e, t) => {
	let n = useId$1(), i = React$1.useRef(null), a = React$1.useContext(fe), o = K(), s = pe(e), c = s.current?.forceMount ?? a?.forceMount;
	k$1(() => {
		if (!c) return o.item(n, a?.id);
	}, [c]);
	let d = ve(n, i, [
		e.value,
		e.children,
		i
	], e.keywords), f = ee(), g = P((e) => e.value && e.value === d.current), y = P((e) => c || o.filter() === !1 ? !0 : e.search ? e.filtered.items.get(n) > 0 : !0);
	React$1.useEffect(() => {
		let t = i.current;
		if (!(!t || e.disabled)) return t.addEventListener(Z, b), () => t.removeEventListener(Z, b);
	}, [
		y,
		e.onSelect,
		e.disabled
	]);
	function b() {
		var e, t;
		x(), (t = (e = s.current).onSelect) == null || t.call(e, d.current);
	}
	function x() {
		f.setState("value", d.current, !0);
	}
	if (!y) return null;
	let { disabled: S, value: C, onSelect: w, forceMount: E, keywords: O,...A } = e;
	return React$1.createElement(Primitive.div, {
		ref: composeRefs$1(i, t),
		...A,
		id: n,
		"cmdk-item": "",
		role: "option",
		"aria-disabled": !!S,
		"aria-selected": !!g,
		"data-disabled": !!S,
		"data-selected": !!g,
		onPointerMove: S || o.getDisablePointerSelection() ? void 0 : x,
		onClick: S ? void 0 : b
	}, e.children);
}), Ee$1 = React$1.forwardRef((e, t) => {
	let { heading: n, children: i, forceMount: a,...o } = e, s = useId$1(), c = React$1.useRef(null), d = React$1.useRef(null), f = useId$1(), g = K(), y = P((e) => a || g.filter() === !1 ? !0 : e.search ? e.filtered.groups.has(s) : !0);
	k$1(() => g.group(s), []), ve(s, c, [
		e.value,
		e.heading,
		d
	]);
	let b = React$1.useMemo(() => ({
		id: s,
		forceMount: a
	}), [a]);
	return React$1.createElement(Primitive.div, {
		ref: composeRefs$1(c, t),
		...o,
		"cmdk-group": "",
		role: "presentation",
		hidden: y ? void 0 : !0
	}, n && React$1.createElement("div", {
		ref: d,
		"cmdk-group-heading": "",
		"aria-hidden": !0,
		id: f
	}, n), B(e, (e) => React$1.createElement("div", {
		"cmdk-group-items": "",
		role: "group",
		"aria-labelledby": n ? f : void 0
	}, React$1.createElement(fe.Provider, { value: b }, e))));
}), ye = React$1.forwardRef((e, t) => {
	let { alwaysRender: n,...i } = e, a = React$1.useRef(null), o = P((e) => !e.search);
	return !n && !o ? null : React$1.createElement(Primitive.div, {
		ref: composeRefs$1(a, t),
		...i,
		"cmdk-separator": "",
		role: "separator"
	});
}), Se = React$1.forwardRef((e, t) => {
	let { onValueChange: n,...i } = e, a = e.value != null, o = ee(), s = P((e) => e.search), c = P((e) => e.selectedItemId), d = K();
	return React$1.useEffect(() => {
		e.value != null && o.setState("search", e.value);
	}, [e.value]), React$1.createElement(Primitive.input, {
		ref: t,
		...i,
		"cmdk-input": "",
		autoComplete: "off",
		autoCorrect: "off",
		spellCheck: !1,
		"aria-autocomplete": "list",
		role: "combobox",
		"aria-expanded": !0,
		"aria-controls": d.listId,
		"aria-labelledby": d.labelId,
		"aria-activedescendant": c,
		id: d.inputId,
		type: "text",
		value: a ? e.value : s,
		onChange: (e) => {
			a || o.setState("search", e.target.value), n?.(e.target.value);
		}
	});
}), Ce$1 = React$1.forwardRef((e, t) => {
	let { children: n, label: i = "Suggestions",...a } = e, o = React$1.useRef(null), s = React$1.useRef(null), c = P((e) => e.selectedItemId), d = K();
	return React$1.useEffect(() => {
		if (s.current && o.current) {
			let e = s.current, t = o.current, n, i = new ResizeObserver(() => {
				n = requestAnimationFrame(() => {
					let n = e.offsetHeight;
					t.style.setProperty("--cmdk-list-height", n.toFixed(1) + "px");
				});
			});
			return i.observe(e), () => {
				cancelAnimationFrame(n), i.unobserve(e);
			};
		}
	}, []), React$1.createElement(Primitive.div, {
		ref: composeRefs$1(o, t),
		...a,
		"cmdk-list": "",
		role: "listbox",
		tabIndex: -1,
		"aria-activedescendant": c,
		"aria-label": i,
		id: d.listId
	}, B(e, (e) => React$1.createElement("div", {
		ref: composeRefs$1(s, d.listInnerRef),
		"cmdk-list-sizer": ""
	}, e)));
}), xe = React$1.forwardRef((e, t) => {
	let { open: n, onOpenChange: i, overlayClassName: a, contentClassName: o, container: s,...c } = e;
	return React$1.createElement(Root$7, {
		open: n,
		onOpenChange: i
	}, React$1.createElement(Portal$4, { container: s }, React$1.createElement(Overlay, {
		"cmdk-overlay": "",
		className: a
	}), React$1.createElement(Content$2, {
		"aria-label": e.label,
		"cmdk-dialog": "",
		className: o
	}, React$1.createElement(me, {
		ref: t,
		...c
	}))));
}), Ie = React$1.forwardRef((e, t) => P((e) => e.filtered.count === 0) ? React$1.createElement(Primitive.div, {
	ref: t,
	...e,
	"cmdk-empty": "",
	role: "presentation"
}) : null), Pe = React$1.forwardRef((e, t) => {
	let { progress: n, children: i, label: a = "Loading...",...o } = e;
	return React$1.createElement(Primitive.div, {
		ref: t,
		...o,
		"cmdk-loading": "",
		role: "progressbar",
		"aria-valuenow": n,
		"aria-valuemin": 0,
		"aria-valuemax": 100,
		"aria-label": a
	}, B(e, (e) => React$1.createElement("div", { "aria-hidden": !0 }, e)));
}), _e = Object.assign(me, {
	List: Ce$1,
	Item: he$1,
	Input: Se,
	Group: Ee$1,
	Separator: ye,
	Dialog: xe,
	Empty: Ie,
	Loading: Pe
});
function we$1(e, t) {
	let n = e.nextElementSibling;
	for (; n;) {
		if (n.matches(t)) return n;
		n = n.nextElementSibling;
	}
}
function De$1(e, t) {
	let n = e.previousElementSibling;
	for (; n;) {
		if (n.matches(t)) return n;
		n = n.previousElementSibling;
	}
}
function pe(e) {
	let t = React$1.useRef(e);
	return k$1(() => {
		t.current = e;
	}), t;
}
var k$1 = typeof window > "u" ? React$1.useEffect : React$1.useLayoutEffect;
function L(e) {
	let t = React$1.useRef();
	return t.current === void 0 && (t.current = e()), t;
}
function P(e) {
	let t = ee(), n = () => e(t.snapshot());
	return React$1.useSyncExternalStore(t.subscribe, n, n);
}
function ve(e, t, n, i = []) {
	let a = React$1.useRef(), o = K();
	return k$1(() => {
		var s;
		let c = (() => {
			for (let e of n) {
				if (typeof e == "string") return e.trim();
				if (typeof e == "object" && "current" in e) return e.current ? e.current.textContent?.trim() : a.current;
			}
		})(), d = i.map((e) => e.trim());
		o.value(e, c, d), (s = t.current) == null || s.setAttribute(T, c), a.current = c;
	}), a;
}
var ke = () => {
	let [e, t] = React$1.useState(), n = L(() => /* @__PURE__ */ new Map());
	return k$1(() => {
		n.current.forEach((e) => e()), n.current = /* @__PURE__ */ new Map();
	}, [e]), (e, i) => {
		n.current.set(e, i), t({});
	};
};
function Me$1(e) {
	let t = e.type;
	return typeof t == "function" ? t(e.props) : "render" in t ? t.render(e.props) : e;
}
function B({ asChild: e, children: t }, n) {
	return e && React$1.isValidElement(t) ? React$1.cloneElement(Me$1(t), { ref: t.ref }, n(t.props.children)) : n(t);
}
var Te = {
	position: "absolute",
	width: "1px",
	height: "1px",
	padding: "0",
	margin: "-1px",
	overflow: "hidden",
	clip: "rect(0, 0, 0, 0)",
	whiteSpace: "nowrap",
	borderWidth: "0"
};
function Command$1({ className: e,...t }) {
	return /* @__PURE__ */ jsx(_e, {
		"data-slot": "command",
		className: cn("bg-popover text-popover-foreground flex size-full flex-col overflow-hidden rounded-md", e),
		...t
	});
}
function CommandDialog({ title: e = "Command Palette", description: t = "Search for a command to run...", children: n, className: i, showCloseButton: a = !0,...o }) {
	return /* @__PURE__ */ jsxs(Dialog, {
		...o,
		children: [/* @__PURE__ */ jsxs(DialogHeader, {
			className: "sr-only",
			children: [/* @__PURE__ */ jsx(DialogTitle, { children: e }), /* @__PURE__ */ jsx(DialogDescription, { children: t })]
		}), /* @__PURE__ */ jsx(DialogContent, {
			className: cn("overflow-hidden p-0", i),
			showCloseButton: a,
			children: /* @__PURE__ */ jsx(Command$1, {
				className: "[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:size-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:size-5",
				children: n
			})
		})]
	});
}
function CommandInput({ className: e,...t }) {
	return /* @__PURE__ */ jsxs("div", {
		"data-slot": "command-input-wrapper",
		className: "flex h-9 items-center gap-2 border-b px-3",
		children: [/* @__PURE__ */ jsx(SearchIcon, { className: "size-4 shrink-0 opacity-50" }), /* @__PURE__ */ jsx(_e.Input, {
			"data-slot": "command-input",
			className: cn("placeholder:text-muted-foreground outline-hidden flex h-10 w-full rounded-md bg-transparent py-3 text-sm disabled:cursor-not-allowed disabled:opacity-50", e),
			...t
		})]
	});
}
function CommandList({ className: e,...t }) {
	return /* @__PURE__ */ jsx(_e.List, {
		"data-slot": "command-list",
		className: cn("max-h-[300px] scroll-py-1 overflow-y-auto overflow-x-hidden", e),
		...t
	});
}
function CommandEmpty({ ...e }) {
	return /* @__PURE__ */ jsx(_e.Empty, {
		"data-slot": "command-empty",
		className: "py-6 text-center text-sm",
		...e
	});
}
function CommandGroup({ className: e,...t }) {
	return /* @__PURE__ */ jsx(_e.Group, {
		"data-slot": "command-group",
		className: cn("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", e),
		...t
	});
}
function CommandSeparator({ className: e,...t }) {
	return /* @__PURE__ */ jsx(_e.Separator, {
		"data-slot": "command-separator",
		className: cn("bg-border -mx-1 h-px", e),
		...t
	});
}
function CommandItem({ className: e,...t }) {
	return /* @__PURE__ */ jsx(_e.Item, {
		"data-slot": "command-item",
		className: cn("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", e),
		...t
	});
}
function CommandShortcut({ className: e,...t }) {
	return /* @__PURE__ */ jsx("span", {
		"data-slot": "command-shortcut",
		className: cn("text-muted-foreground ml-auto text-xs tracking-widest", e),
		...t
	});
}
function Command(e) {
	let { endpoint: t, openAddCollectionDialog: n, addOperation: i, runActiveOperation: a, addTab: o, setActiveTab: s, tabs: c, preflight: d, env: f, plugins: g } = useLaboratory(), y = useLaboratory(), [b, x] = useState(e.open ?? !1);
	return useEffect(() => {
		x(e.open ?? !1);
	}, [e.open]), useEffect(() => {
		let t = (t) => {
			if (t.key === "j" && (t.metaKey || t.ctrlKey)) {
				t.preventDefault();
				let n = !b;
				x(n), e.onOpenChange?.(n);
			}
		};
		return document.addEventListener("keydown", t), () => document.removeEventListener("keydown", t);
	}, [b, e]), /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsxs(CommandDialog, {
		open: b,
		onOpenChange: (t) => {
			x(t), e.onOpenChange?.(t);
		},
		children: [/* @__PURE__ */ jsx(CommandInput, { placeholder: "Type a command or search..." }), /* @__PURE__ */ jsxs(CommandList, { children: [
			/* @__PURE__ */ jsx(CommandEmpty, { children: "No results found." }),
			/* @__PURE__ */ jsxs(CommandGroup, {
				heading: "Operations",
				children: [/* @__PURE__ */ jsxs(CommandItem, {
					disabled: !t,
					onSelect: () => {
						a(t), x(!1);
					},
					children: [
						/* @__PURE__ */ jsx(PlayIcon, {}),
						/* @__PURE__ */ jsx("span", { children: "Run operation" }),
						/* @__PURE__ */ jsx(CommandShortcut, { children: "⌘↵" })
					]
				}), /* @__PURE__ */ jsxs(CommandItem, {
					onSelect: () => {
						let e = i({
							name: "",
							query: "",
							variables: "",
							headers: "",
							extensions: ""
						}), t = o({
							type: "operation",
							data: e
						});
						s(t), x(!1);
					},
					children: [/* @__PURE__ */ jsx(FilePlus2Icon, {}), /* @__PURE__ */ jsx("span", { children: "Add operation" })]
				})]
			}),
			/* @__PURE__ */ jsx(CommandSeparator, {}),
			/* @__PURE__ */ jsx(CommandGroup, {
				heading: "Collections",
				children: /* @__PURE__ */ jsxs(CommandItem, {
					onSelect: () => {
						n?.(), x(!1);
					},
					children: [/* @__PURE__ */ jsx(FolderPlusIcon, {}), /* @__PURE__ */ jsx("span", { children: "Add collection" })]
				})
			}),
			/* @__PURE__ */ jsx(CommandSeparator, {}),
			/* @__PURE__ */ jsxs(CommandGroup, {
				heading: "Settings",
				children: [/* @__PURE__ */ jsxs(CommandItem, {
					onSelect: () => {
						let e = c.find((e) => e.type === "env") ?? o({
							type: "env",
							data: f ?? { variables: {} }
						});
						s(e), x(!1);
					},
					children: [/* @__PURE__ */ jsx(ServerIcon, {}), /* @__PURE__ */ jsx("span", { children: "Open Environment Variables" })]
				}), /* @__PURE__ */ jsxs(CommandItem, {
					onSelect: () => {
						let e = c.find((e) => e.type === "preflight") ?? o({
							type: "preflight",
							data: d ?? { script: "" }
						});
						s(e), x(!1);
					},
					children: [/* @__PURE__ */ jsx(RefreshCcwIcon, {}), /* @__PURE__ */ jsx("span", { children: "Open Preflight Script" })]
				})]
			}),
			g.filter((e) => !!e.commands?.length).map((e) => /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(CommandSeparator, {}), /* @__PURE__ */ jsx(CommandGroup, {
				heading: e.name,
				children: e.commands?.map((e, t) => /* @__PURE__ */ jsxs(CommandItem, {
					onSelect: () => {
						e.onClick(y, {}), x(!1);
					},
					children: [typeof e.icon == "function" ? e.icon(y, {}) : e.icon, /* @__PURE__ */ jsx("span", { children: typeof e.name == "function" ? e.name(y, {}) : e.name })]
				}, t))
			})] }, e.name))
		] })]
	}) });
}
registerLanguage({
	id: "abap",
	extensions: [".abap"],
	aliases: ["abap", "ABAP"],
	loader: () => import("./abap-Blow-wio.js")
}), registerLanguage({
	id: "apex",
	extensions: [".cls"],
	aliases: ["Apex", "apex"],
	mimetypes: ["text/x-apex-source", "text/x-apex"],
	loader: () => import("./apex-BYf_JRkG.js")
}), registerLanguage({
	id: "azcli",
	extensions: [".azcli"],
	aliases: ["Azure CLI", "azcli"],
	loader: () => import("./azcli-Y8Iryvmz.js")
}), registerLanguage({
	id: "bat",
	extensions: [".bat", ".cmd"],
	aliases: ["Batch", "bat"],
	loader: () => import("./bat-B7uW-WWG.js")
}), registerLanguage({
	id: "bicep",
	extensions: [".bicep"],
	aliases: ["Bicep"],
	loader: () => import("./bicep-Dpaq4BVo.js")
}), registerLanguage({
	id: "cameligo",
	extensions: [".mligo"],
	aliases: ["Cameligo"],
	loader: () => import("./cameligo-C_YBjIWF.js")
}), registerLanguage({
	id: "clojure",
	extensions: [
		".clj",
		".cljs",
		".cljc",
		".edn"
	],
	aliases: ["clojure", "Clojure"],
	loader: () => import("./clojure-AkeekAPE.js")
}), registerLanguage({
	id: "coffeescript",
	extensions: [".coffee"],
	aliases: [
		"CoffeeScript",
		"coffeescript",
		"coffee"
	],
	mimetypes: ["text/x-coffeescript", "text/coffeescript"],
	loader: () => import("./coffee-_z_LB7K-.js")
}), registerLanguage({
	id: "c",
	extensions: [".c", ".h"],
	aliases: ["C", "c"],
	loader: () => import("./cpp-HtwBLzwY.js")
}), registerLanguage({
	id: "cpp",
	extensions: [
		".cpp",
		".cc",
		".cxx",
		".hpp",
		".hh",
		".hxx"
	],
	aliases: [
		"C++",
		"Cpp",
		"cpp"
	],
	loader: () => import("./cpp-HtwBLzwY.js")
}), registerLanguage({
	id: "csharp",
	extensions: [
		".cs",
		".csx",
		".cake"
	],
	aliases: ["C#", "csharp"],
	loader: () => import("./csharp-K-4ofc0P.js")
}), registerLanguage({
	id: "csp",
	extensions: [".csp"],
	aliases: ["CSP", "csp"],
	loader: () => import("./csp-DaKO7Rgz.js")
}), registerLanguage({
	id: "css",
	extensions: [".css"],
	aliases: ["CSS", "css"],
	mimetypes: ["text/css"],
	loader: () => import("./css-CYE4QtFf.js")
}), registerLanguage({
	id: "cypher",
	extensions: [".cypher", ".cyp"],
	aliases: ["Cypher", "OpenCypher"],
	loader: () => import("./cypher-DVYCC2h8.js")
}), registerLanguage({
	id: "dart",
	extensions: [".dart"],
	aliases: ["Dart", "dart"],
	mimetypes: ["text/x-dart-source", "text/x-dart"],
	loader: () => import("./dart-q_4g8qmg.js")
}), registerLanguage({
	id: "dockerfile",
	extensions: [".dockerfile"],
	filenames: ["Dockerfile"],
	aliases: ["Dockerfile"],
	loader: () => import("./dockerfile-BU7xw4eN.js")
}), registerLanguage({
	id: "ecl",
	extensions: [".ecl"],
	aliases: [
		"ECL",
		"Ecl",
		"ecl"
	],
	loader: () => import("./ecl-BR8iEelW.js")
}), registerLanguage({
	id: "elixir",
	extensions: [".ex", ".exs"],
	aliases: [
		"Elixir",
		"elixir",
		"ex"
	],
	loader: () => import("./elixir-B2OgRT4A.js")
}), registerLanguage({
	id: "flow9",
	extensions: [".flow"],
	aliases: [
		"Flow9",
		"Flow",
		"flow9",
		"flow"
	],
	loader: () => import("./flow9-C00JQKOs.js")
}), registerLanguage({
	id: "fsharp",
	extensions: [
		".fs",
		".fsi",
		".ml",
		".mli",
		".fsx",
		".fsscript"
	],
	aliases: [
		"F#",
		"FSharp",
		"fsharp"
	],
	loader: () => import("./fsharp-BgjL1RH4.js")
}), registerLanguage({
	id: "freemarker2",
	extensions: [
		".ftl",
		".ftlh",
		".ftlx"
	],
	aliases: ["FreeMarker2", "Apache FreeMarker2"],
	loader: () => import("./freemarker2-Bl-UoQjv.js").then((e) => e.TagAutoInterpolationDollar)
}), registerLanguage({
	id: "freemarker2.tag-angle.interpolation-dollar",
	aliases: ["FreeMarker2 (Angle/Dollar)", "Apache FreeMarker2 (Angle/Dollar)"],
	loader: () => import("./freemarker2-Bl-UoQjv.js").then((e) => e.TagAngleInterpolationDollar)
}), registerLanguage({
	id: "freemarker2.tag-bracket.interpolation-dollar",
	aliases: ["FreeMarker2 (Bracket/Dollar)", "Apache FreeMarker2 (Bracket/Dollar)"],
	loader: () => import("./freemarker2-Bl-UoQjv.js").then((e) => e.TagBracketInterpolationDollar)
}), registerLanguage({
	id: "freemarker2.tag-angle.interpolation-bracket",
	aliases: ["FreeMarker2 (Angle/Bracket)", "Apache FreeMarker2 (Angle/Bracket)"],
	loader: () => import("./freemarker2-Bl-UoQjv.js").then((e) => e.TagAngleInterpolationBracket)
}), registerLanguage({
	id: "freemarker2.tag-bracket.interpolation-bracket",
	aliases: ["FreeMarker2 (Bracket/Bracket)", "Apache FreeMarker2 (Bracket/Bracket)"],
	loader: () => import("./freemarker2-Bl-UoQjv.js").then((e) => e.TagBracketInterpolationBracket)
}), registerLanguage({
	id: "freemarker2.tag-auto.interpolation-dollar",
	aliases: ["FreeMarker2 (Auto/Dollar)", "Apache FreeMarker2 (Auto/Dollar)"],
	loader: () => import("./freemarker2-Bl-UoQjv.js").then((e) => e.TagAutoInterpolationDollar)
}), registerLanguage({
	id: "freemarker2.tag-auto.interpolation-bracket",
	aliases: ["FreeMarker2 (Auto/Bracket)", "Apache FreeMarker2 (Auto/Bracket)"],
	loader: () => import("./freemarker2-Bl-UoQjv.js").then((e) => e.TagAutoInterpolationBracket)
}), registerLanguage({
	id: "go",
	extensions: [".go"],
	aliases: ["Go"],
	loader: () => import("./go-BHi9UCF_.js")
}), registerLanguage({
	id: "handlebars",
	extensions: [".handlebars", ".hbs"],
	aliases: [
		"Handlebars",
		"handlebars",
		"hbs"
	],
	mimetypes: ["text/x-handlebars-template"],
	loader: () => import("./handlebars-DXvuueHB.js")
}), registerLanguage({
	id: "hcl",
	extensions: [
		".tf",
		".tfvars",
		".hcl"
	],
	aliases: [
		"Terraform",
		"tf",
		"HCL",
		"hcl"
	],
	loader: () => import("./hcl-Dw0RM3rS.js")
}), registerLanguage({
	id: "html",
	extensions: [
		".html",
		".htm",
		".shtml",
		".xhtml",
		".mdoc",
		".jsp",
		".asp",
		".aspx",
		".jshtm"
	],
	aliases: [
		"HTML",
		"htm",
		"html",
		"xhtml"
	],
	mimetypes: [
		"text/html",
		"text/x-jshtm",
		"text/template",
		"text/ng-template"
	],
	loader: () => import("./html-cN1WMeYF.js")
}), registerLanguage({
	id: "ini",
	extensions: [
		".ini",
		".properties",
		".gitconfig"
	],
	filenames: [
		"config",
		".gitattributes",
		".gitconfig",
		".editorconfig"
	],
	aliases: ["Ini", "ini"],
	loader: () => import("./ini-mSzu__fH.js")
}), registerLanguage({
	id: "java",
	extensions: [".java", ".jav"],
	aliases: ["Java", "java"],
	mimetypes: ["text/x-java-source", "text/x-java"],
	loader: () => import("./java-C7boSOt1.js")
}), registerLanguage({
	id: "javascript",
	extensions: [
		".js",
		".es6",
		".jsx",
		".mjs",
		".cjs"
	],
	firstLine: "^#!.*\\bnode",
	filenames: ["jakefile"],
	aliases: [
		"JavaScript",
		"javascript",
		"js"
	],
	mimetypes: ["text/javascript"],
	loader: () => import("./javascript-CRIfyw9_.js")
}), registerLanguage({
	id: "julia",
	extensions: [".jl"],
	aliases: ["julia", "Julia"],
	loader: () => import("./julia-B_zpvU_H.js")
}), registerLanguage({
	id: "kotlin",
	extensions: [".kt", ".kts"],
	aliases: ["Kotlin", "kotlin"],
	mimetypes: ["text/x-kotlin-source", "text/x-kotlin"],
	loader: () => import("./kotlin-DLpTU5jW.js")
}), registerLanguage({
	id: "less",
	extensions: [".less"],
	aliases: ["Less", "less"],
	mimetypes: ["text/x-less", "text/less"],
	loader: () => import("./less-BQ1QMJed.js")
}), registerLanguage({
	id: "lexon",
	extensions: [".lex"],
	aliases: ["Lexon"],
	loader: () => import("./lexon-60-H09CD.js")
}), registerLanguage({
	id: "lua",
	extensions: [".lua"],
	aliases: ["Lua", "lua"],
	loader: () => import("./lua-BGYYZxwF.js")
}), registerLanguage({
	id: "liquid",
	extensions: [".liquid", ".html.liquid"],
	aliases: ["Liquid", "liquid"],
	mimetypes: ["application/liquid"],
	loader: () => import("./liquid-BlU50gX7.js")
}), registerLanguage({
	id: "m3",
	extensions: [
		".m3",
		".i3",
		".mg",
		".ig"
	],
	aliases: [
		"Modula-3",
		"Modula3",
		"modula3",
		"m3"
	],
	loader: () => import("./m3-Bi73MTjg.js")
}), registerLanguage({
	id: "markdown",
	extensions: [
		".md",
		".markdown",
		".mdown",
		".mkdn",
		".mkd",
		".mdwn",
		".mdtxt",
		".mdtext"
	],
	aliases: ["Markdown", "markdown"],
	loader: () => import("./markdown-D7FHDoKM.js")
}), registerLanguage({
	id: "mdx",
	extensions: [".mdx"],
	aliases: ["MDX", "mdx"],
	loader: () => import("./mdx-D8NqdP_w.js")
}), registerLanguage({
	id: "mips",
	extensions: [".s"],
	aliases: ["MIPS", "MIPS-V"],
	mimetypes: [
		"text/x-mips",
		"text/mips",
		"text/plaintext"
	],
	loader: () => import("./mips-DL-M6daJ.js")
}), registerLanguage({
	id: "msdax",
	extensions: [".dax", ".msdax"],
	aliases: ["DAX", "MSDAX"],
	loader: () => import("./msdax-BfAL0NiP.js")
}), registerLanguage({
	id: "mysql",
	extensions: [],
	aliases: ["MySQL", "mysql"],
	loader: () => import("./mysql-afzB9Z08.js")
}), registerLanguage({
	id: "objective-c",
	extensions: [".m"],
	aliases: ["Objective-C"],
	loader: () => import("./objective-c-qqhfQPCm.js")
}), registerLanguage({
	id: "pascal",
	extensions: [
		".pas",
		".p",
		".pp"
	],
	aliases: ["Pascal", "pas"],
	mimetypes: ["text/x-pascal-source", "text/x-pascal"],
	loader: () => import("./pascal-BiHx6cUn.js")
}), registerLanguage({
	id: "pascaligo",
	extensions: [".ligo"],
	aliases: ["Pascaligo", "ligo"],
	loader: () => import("./pascaligo-Bx9CUesZ.js")
}), registerLanguage({
	id: "perl",
	extensions: [".pl", ".pm"],
	aliases: ["Perl", "pl"],
	loader: () => import("./perl-Dv-iVIkY.js")
}), registerLanguage({
	id: "pgsql",
	extensions: [],
	aliases: [
		"PostgreSQL",
		"postgres",
		"pg",
		"postgre"
	],
	loader: () => import("./pgsql-C-6LU2PR.js")
}), registerLanguage({
	id: "php",
	extensions: [
		".php",
		".php4",
		".php5",
		".phtml",
		".ctp"
	],
	aliases: ["PHP", "php"],
	mimetypes: ["application/x-php"],
	loader: () => import("./php-rClOArta.js")
}), registerLanguage({
	id: "pla",
	extensions: [".pla"],
	loader: () => import("./pla-CGWeh8Pz.js")
}), registerLanguage({
	id: "postiats",
	extensions: [
		".dats",
		".sats",
		".hats"
	],
	aliases: ["ATS", "ATS/Postiats"],
	loader: () => import("./postiats-DVrCA24o.js")
}), registerLanguage({
	id: "powerquery",
	extensions: [".pq", ".pqm"],
	aliases: [
		"PQ",
		"M",
		"Power Query",
		"Power Query M"
	],
	loader: () => import("./powerquery-BVNiAP3y.js")
}), registerLanguage({
	id: "powershell",
	extensions: [
		".ps1",
		".psm1",
		".psd1"
	],
	aliases: [
		"PowerShell",
		"powershell",
		"ps",
		"ps1"
	],
	loader: () => import("./powershell-CnnnHgbw.js")
}), registerLanguage({
	id: "proto",
	extensions: [".proto"],
	aliases: ["protobuf", "Protocol Buffers"],
	loader: () => import("./protobuf-LrboCqQw.js")
}), registerLanguage({
	id: "pug",
	extensions: [".jade", ".pug"],
	aliases: [
		"Pug",
		"Jade",
		"jade"
	],
	loader: () => import("./pug-Dh1tQQTR.js")
}), registerLanguage({
	id: "python",
	extensions: [
		".py",
		".rpy",
		".pyw",
		".cpy",
		".gyp",
		".gypi"
	],
	aliases: ["Python", "py"],
	firstLine: "^#!/.*\\bpython[0-9.-]*\\b",
	loader: () => import("./python-CvI08Xv3.js")
}), registerLanguage({
	id: "qsharp",
	extensions: [".qs"],
	aliases: ["Q#", "qsharp"],
	loader: () => import("./qsharp-BVCNm8gl.js")
}), registerLanguage({
	id: "r",
	extensions: [
		".r",
		".rhistory",
		".rmd",
		".rprofile",
		".rt"
	],
	aliases: ["R", "r"],
	loader: () => import("./r-8JcHznkE.js")
}), registerLanguage({
	id: "razor",
	extensions: [".cshtml"],
	aliases: ["Razor", "razor"],
	mimetypes: ["text/x-cshtml"],
	loader: () => import("./razor-Dihz6rre.js")
}), registerLanguage({
	id: "redis",
	extensions: [".redis"],
	aliases: ["redis"],
	loader: () => import("./redis-qtomFnyh.js")
}), registerLanguage({
	id: "redshift",
	extensions: [],
	aliases: ["Redshift", "redshift"],
	loader: () => import("./redshift-BHv7eDOD.js")
}), registerLanguage({
	id: "restructuredtext",
	extensions: [".rst"],
	aliases: ["reStructuredText", "restructuredtext"],
	loader: () => import("./restructuredtext-BS-C3c5D.js")
}), registerLanguage({
	id: "ruby",
	extensions: [
		".rb",
		".rbx",
		".rjs",
		".gemspec",
		".pp"
	],
	filenames: ["rakefile", "Gemfile"],
	aliases: ["Ruby", "rb"],
	loader: () => import("./ruby-52YUg_Ol.js")
}), registerLanguage({
	id: "rust",
	extensions: [".rs", ".rlib"],
	aliases: ["Rust", "rust"],
	loader: () => import("./rust-CV21LUVt.js")
}), registerLanguage({
	id: "sb",
	extensions: [".sb"],
	aliases: ["Small Basic", "sb"],
	loader: () => import("./sb-CuQMlHBA.js")
}), registerLanguage({
	id: "scala",
	extensions: [
		".scala",
		".sc",
		".sbt"
	],
	aliases: [
		"Scala",
		"scala",
		"SBT",
		"Sbt",
		"sbt",
		"Dotty",
		"dotty"
	],
	mimetypes: [
		"text/x-scala-source",
		"text/x-scala",
		"text/x-sbt",
		"text/x-dotty"
	],
	loader: () => import("./scala-Cs8dc70t.js")
}), registerLanguage({
	id: "scheme",
	extensions: [
		".scm",
		".ss",
		".sch",
		".rkt"
	],
	aliases: ["scheme", "Scheme"],
	loader: () => import("./scheme-CC08dajv.js")
}), registerLanguage({
	id: "scss",
	extensions: [".scss"],
	aliases: [
		"Sass",
		"sass",
		"scss"
	],
	mimetypes: ["text/x-scss", "text/scss"],
	loader: () => import("./scss-DZAhnzoz.js")
}), registerLanguage({
	id: "shell",
	extensions: [".sh", ".bash"],
	aliases: ["Shell", "sh"],
	loader: () => import("./shell-BV3gMUeN.js")
}), registerLanguage({
	id: "sol",
	extensions: [".sol"],
	aliases: [
		"sol",
		"solidity",
		"Solidity"
	],
	loader: () => import("./solidity-BbL9KL7g.js")
}), registerLanguage({
	id: "aes",
	extensions: [".aes"],
	aliases: [
		"aes",
		"sophia",
		"Sophia"
	],
	loader: () => import("./sophia-CbBkAwOP.js")
}), registerLanguage({
	id: "sparql",
	extensions: [".rq"],
	aliases: ["sparql", "SPARQL"],
	loader: () => import("./sparql-C7Y1qHIo.js")
}), registerLanguage({
	id: "sql",
	extensions: [".sql"],
	aliases: ["SQL"],
	loader: () => import("./sql-D0XZ8IcC.js")
}), registerLanguage({
	id: "st",
	extensions: [
		".st",
		".iecst",
		".iecplc",
		".lc3lib",
		".TcPOU",
		".TcDUT",
		".TcGVL",
		".TcIO"
	],
	aliases: [
		"StructuredText",
		"scl",
		"stl"
	],
	loader: () => import("./st-B67PwWwf.js")
}), registerLanguage({
	id: "swift",
	aliases: ["Swift", "swift"],
	extensions: [".swift"],
	mimetypes: ["text/swift"],
	loader: () => import("./swift-CRmSPMf8.js")
}), registerLanguage({
	id: "systemverilog",
	extensions: [".sv", ".svh"],
	aliases: [
		"SV",
		"sv",
		"SystemVerilog",
		"systemverilog"
	],
	loader: () => import("./systemverilog-BpoPxVcJ.js")
}), registerLanguage({
	id: "verilog",
	extensions: [".v", ".vh"],
	aliases: [
		"V",
		"v",
		"Verilog",
		"verilog"
	],
	loader: () => import("./systemverilog-BpoPxVcJ.js")
}), registerLanguage({
	id: "tcl",
	extensions: [".tcl"],
	aliases: [
		"tcl",
		"Tcl",
		"tcltk",
		"TclTk",
		"tcl/tk",
		"Tcl/Tk"
	],
	loader: () => import("./tcl-BKbFyvVc.js")
}), registerLanguage({
	id: "twig",
	extensions: [".twig"],
	aliases: ["Twig", "twig"],
	mimetypes: ["text/x-twig"],
	loader: () => import("./twig-DKIp5FLj.js")
}), registerLanguage({
	id: "typescript",
	extensions: [
		".ts",
		".tsx",
		".cts",
		".mts"
	],
	aliases: [
		"TypeScript",
		"ts",
		"typescript"
	],
	mimetypes: ["text/typescript"],
	loader: () => import("./typescript-CblrNixe.js")
}), registerLanguage({
	id: "typespec",
	extensions: [".tsp"],
	aliases: ["TypeSpec"],
	loader: () => import("./typespec-CuK-Jj3B.js")
}), registerLanguage({
	id: "vb",
	extensions: [".vb"],
	aliases: ["Visual Basic", "vb"],
	loader: () => import("./vb-HIG7rbHd.js")
}), registerLanguage({
	id: "wgsl",
	extensions: [".wgsl"],
	aliases: [
		"WebGPU Shading Language",
		"WGSL",
		"wgsl"
	],
	loader: () => import("./wgsl-rkQq9nnS.js")
}), registerLanguage({
	id: "xml",
	extensions: [
		".xml",
		".xsd",
		".dtd",
		".ascx",
		".csproj",
		".config",
		".props",
		".targets",
		".wxi",
		".wxl",
		".wxs",
		".xaml",
		".svg",
		".svgz",
		".opf",
		".xslt",
		".xsl"
	],
	firstLine: "(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",
	aliases: ["XML", "xml"],
	mimetypes: [
		"text/xml",
		"application/xml",
		"application/xaml+xml",
		"application/xml-dtd"
	],
	loader: () => import("./xml-D1JwasIP.js")
}), registerLanguage({
	id: "yaml",
	extensions: [".yaml", ".yml"],
	aliases: [
		"YAML",
		"yaml",
		"YML",
		"yml"
	],
	mimetypes: ["application/x-yaml", "text/x-yaml"],
	loader: () => import("./yaml-Be2cXYRM.js")
});
/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*-----------------------------------------------------------------------------*/
var __defProp$1 = Object.defineProperty, __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor, __getOwnPropNames$1 = Object.getOwnPropertyNames, __hasOwnProp$1 = Object.prototype.hasOwnProperty, __copyProps$1 = (e, t, n, i) => {
	if (t && typeof t == "object" || typeof t == "function") for (let a of __getOwnPropNames$1(t)) !__hasOwnProp$1.call(e, a) && a !== n && __defProp$1(e, a, {
		get: () => t[a],
		enumerable: !(i = __getOwnPropDesc$1(t, a)) || i.enumerable
	});
	return e;
}, __reExport$1 = (e, t, n) => (__copyProps$1(e, t, "default"), n && __copyProps$1(n, t, "default")), monaco_editor_core_exports$1 = {};
__reExport$1(monaco_editor_core_exports$1, editor_api_exports);
var LanguageServiceDefaultsImpl$1 = class {
	constructor(e, t, n) {
		this._onDidChange = new monaco_editor_core_exports$1.Emitter(), this._languageId = e, this.setOptions(t), this.setModeConfiguration(n);
	}
	get onDidChange() {
		return this._onDidChange.event;
	}
	get languageId() {
		return this._languageId;
	}
	get modeConfiguration() {
		return this._modeConfiguration;
	}
	get diagnosticsOptions() {
		return this.options;
	}
	get options() {
		return this._options;
	}
	setOptions(e) {
		this._options = e || /* @__PURE__ */ Object.create(null), this._onDidChange.fire(this);
	}
	setDiagnosticsOptions(e) {
		this.setOptions(e);
	}
	setModeConfiguration(e) {
		this._modeConfiguration = e || /* @__PURE__ */ Object.create(null), this._onDidChange.fire(this);
	}
}, optionsDefault$1 = {
	validate: !0,
	lint: {
		compatibleVendorPrefixes: "ignore",
		vendorPrefix: "warning",
		duplicateProperties: "warning",
		emptyRules: "warning",
		importStatement: "ignore",
		boxModel: "ignore",
		universalSelector: "ignore",
		zeroUnits: "ignore",
		fontFaceProperties: "warning",
		hexColorLength: "error",
		argumentsInColorFunction: "error",
		unknownProperties: "warning",
		ieHack: "ignore",
		unknownVendorSpecificProperties: "ignore",
		propertyIgnoredDueToDisplay: "warning",
		important: "ignore",
		float: "ignore",
		idSelector: "ignore"
	},
	data: { useDefaultDataProvider: !0 },
	format: {
		newlineBetweenSelectors: !0,
		newlineBetweenRules: !0,
		spaceAroundSelectorSeparator: !1,
		braceStyle: "collapse",
		maxPreserveNewLines: void 0,
		preserveNewLines: !0
	}
}, modeConfigurationDefault$1 = {
	completionItems: !0,
	hovers: !0,
	documentSymbols: !0,
	definitions: !0,
	references: !0,
	documentHighlights: !0,
	rename: !0,
	colors: !0,
	foldingRanges: !0,
	diagnostics: !0,
	selectionRanges: !0,
	documentFormattingEdits: !0,
	documentRangeFormattingEdits: !0
}, cssDefaults = new LanguageServiceDefaultsImpl$1("css", optionsDefault$1, modeConfigurationDefault$1), scssDefaults = new LanguageServiceDefaultsImpl$1("scss", optionsDefault$1, modeConfigurationDefault$1), lessDefaults = new LanguageServiceDefaultsImpl$1("less", optionsDefault$1, modeConfigurationDefault$1);
monaco_editor_core_exports$1.languages.css = {
	cssDefaults,
	lessDefaults,
	scssDefaults
};
function getMode$2() {
	return import("./cssMode-CAMV087D.js");
}
monaco_editor_core_exports$1.languages.onLanguage("less", () => {
	getMode$2().then((e) => e.setupMode(lessDefaults));
}), monaco_editor_core_exports$1.languages.onLanguage("scss", () => {
	getMode$2().then((e) => e.setupMode(scssDefaults));
}), monaco_editor_core_exports$1.languages.onLanguage("css", () => {
	getMode$2().then((e) => e.setupMode(cssDefaults));
});
/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*-----------------------------------------------------------------------------*/
var __defProp = Object.defineProperty, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __getOwnPropNames = Object.getOwnPropertyNames, __hasOwnProp = Object.prototype.hasOwnProperty, __copyProps = (e, t, n, i) => {
	if (t && typeof t == "object" || typeof t == "function") for (let a of __getOwnPropNames(t)) !__hasOwnProp.call(e, a) && a !== n && __defProp(e, a, {
		get: () => t[a],
		enumerable: !(i = __getOwnPropDesc(t, a)) || i.enumerable
	});
	return e;
}, __reExport = (e, t, n) => (__copyProps(e, t, "default"), n && __copyProps(n, t, "default")), monaco_editor_core_exports = {};
__reExport(monaco_editor_core_exports, editor_api_exports);
var LanguageServiceDefaultsImpl = class {
	constructor(e, t, n) {
		this._onDidChange = new monaco_editor_core_exports.Emitter(), this._languageId = e, this.setOptions(t), this.setModeConfiguration(n);
	}
	get onDidChange() {
		return this._onDidChange.event;
	}
	get languageId() {
		return this._languageId;
	}
	get options() {
		return this._options;
	}
	get modeConfiguration() {
		return this._modeConfiguration;
	}
	setOptions(e) {
		this._options = e || /* @__PURE__ */ Object.create(null), this._onDidChange.fire(this);
	}
	setModeConfiguration(e) {
		this._modeConfiguration = e || /* @__PURE__ */ Object.create(null), this._onDidChange.fire(this);
	}
}, optionsDefault = {
	format: {
		tabSize: 4,
		insertSpaces: !1,
		wrapLineLength: 120,
		unformatted: "default\": \"a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var",
		contentUnformatted: "pre",
		indentInnerHtml: !1,
		preserveNewLines: !0,
		maxPreserveNewLines: void 0,
		indentHandlebars: !1,
		endWithNewline: !1,
		extraLiners: "head, body, /html",
		wrapAttributes: "auto"
	},
	suggest: {},
	data: { useDefaultDataProvider: !0 }
};
function getConfigurationDefault(e) {
	return {
		completionItems: !0,
		hovers: !0,
		documentSymbols: !0,
		links: !0,
		documentHighlights: !0,
		rename: !0,
		colors: !0,
		foldingRanges: !0,
		selectionRanges: !0,
		diagnostics: e === htmlLanguageId,
		documentFormattingEdits: e === htmlLanguageId,
		documentRangeFormattingEdits: e === htmlLanguageId
	};
}
var htmlLanguageId = "html", handlebarsLanguageId = "handlebars", razorLanguageId = "razor", htmlLanguageService = registerHTMLLanguageService(htmlLanguageId, optionsDefault, getConfigurationDefault(htmlLanguageId)), htmlDefaults = htmlLanguageService.defaults, handlebarLanguageService = registerHTMLLanguageService(handlebarsLanguageId, optionsDefault, getConfigurationDefault(handlebarsLanguageId)), handlebarDefaults = handlebarLanguageService.defaults, razorLanguageService = registerHTMLLanguageService(razorLanguageId, optionsDefault, getConfigurationDefault(razorLanguageId)), razorDefaults = razorLanguageService.defaults;
monaco_editor_core_exports.languages.html = {
	htmlDefaults,
	razorDefaults,
	handlebarDefaults,
	htmlLanguageService,
	handlebarLanguageService,
	razorLanguageService,
	registerHTMLLanguageService
};
function getMode$1() {
	return import("./htmlMode-CY9ALOyk.js");
}
function registerHTMLLanguageService(e, t = optionsDefault, n = getConfigurationDefault(e)) {
	let i = new LanguageServiceDefaultsImpl(e, t, n), a, o = monaco_editor_core_exports.languages.onLanguage(e, async () => {
		a = (await getMode$1()).setupMode(i);
	});
	return {
		defaults: i,
		dispose() {
			o.dispose(), a?.dispose(), a = void 0;
		}
	};
}
var editor_main_exports = /* @__PURE__ */ __export({
	CancellationTokenSource: () => CancellationTokenSource,
	Emitter: () => Emitter,
	KeyCode: () => KeyCode,
	KeyMod: () => KeyMod,
	MarkerSeverity: () => MarkerSeverity,
	MarkerTag: () => MarkerTag,
	Position: () => Position,
	Range: () => Range,
	Selection: () => Selection,
	SelectionDirection: () => SelectionDirection,
	Token: () => Token,
	Uri: () => Uri,
	editor: () => editor,
	languages: () => languages
}), MonacoGraphQLAPI = class {
	_onDidChange = new Emitter();
	_formattingOptions;
	_modeConfiguration;
	_diagnosticSettings;
	_completionSettings;
	_schemas = null;
	_schemasById = Object.create(null);
	_languageId;
	_externalFragmentDefinitions;
	constructor({ languageId: e, schemas: t, modeConfiguration: n, formattingOptions: i, diagnosticSettings: a, completionSettings: o }) {
		this._languageId = e, t && this.setSchemaConfig(t), this._modeConfiguration = n, this._completionSettings = o, this._diagnosticSettings = a, this._formattingOptions = i;
	}
	get onDidChange() {
		return this._onDidChange.event;
	}
	get languageId() {
		return this._languageId;
	}
	get modeConfiguration() {
		return this._modeConfiguration;
	}
	get schemas() {
		return this._schemas;
	}
	schemasById() {
		return this._schemasById;
	}
	get formattingOptions() {
		return this._formattingOptions;
	}
	get diagnosticSettings() {
		return this._diagnosticSettings;
	}
	get completionSettings() {
		return {
			...this._completionSettings,
			fillLeafsOnComplete: this._completionSettings.__experimental__fillLeafsOnComplete ?? this._completionSettings.fillLeafsOnComplete
		};
	}
	get externalFragmentDefinitions() {
		return this._externalFragmentDefinitions;
	}
	setSchemaConfig(e) {
		this._schemas = e, this._schemasById = e.reduce((e, t) => (e[t.uri] = t, e), Object.create(null)), this._onDidChange.fire(this);
	}
	setExternalFragmentDefinitions(e) {
		this._externalFragmentDefinitions = e;
	}
	setModeConfiguration(e) {
		this._modeConfiguration = e, this._onDidChange.fire(this);
	}
	setFormattingOptions(e) {
		this._formattingOptions = e, this._onDidChange.fire(this);
	}
	setDiagnosticSettings(e) {
		this._diagnosticSettings = e, this._onDidChange.fire(this);
	}
	setCompletionSettings(e) {
		this._completionSettings = e, this._onDidChange.fire(this);
	}
};
function create$1(e, t) {
	if (!t) return new MonacoGraphQLAPI({
		languageId: e,
		schemas: [],
		formattingOptions: formattingDefaults,
		modeConfiguration: modeConfigurationDefault,
		diagnosticSettings: diagnosticSettingDefault,
		completionSettings: completionSettingDefault
	});
	let { schemas: n, formattingOptions: i, modeConfiguration: a, diagnosticSettings: o, completionSettings: s } = t;
	return new MonacoGraphQLAPI({
		languageId: e,
		schemas: n,
		formattingOptions: {
			...formattingDefaults,
			...i,
			prettierConfig: {
				...formattingDefaults.prettierConfig,
				...i?.prettierConfig
			}
		},
		modeConfiguration: {
			...modeConfigurationDefault,
			...a
		},
		diagnosticSettings: {
			...diagnosticSettingDefault,
			...o
		},
		completionSettings: {
			...completionSettingDefault,
			...s
		}
	});
}
const modeConfigurationDefault = {
	documentFormattingEdits: !0,
	documentRangeFormattingEdits: !1,
	completionItems: !0,
	hovers: !0,
	documentSymbols: !1,
	tokens: !1,
	colors: !1,
	foldingRanges: !1,
	diagnostics: !0,
	selectionRanges: !1
}, formattingDefaults = { prettierConfig: { tabWidth: 2 } }, diagnosticSettingDefault = { jsonDiagnosticSettings: { schemaValidation: "error" } }, completionSettingDefault = { __experimental__fillLeafsOnComplete: !1 };
var api;
function initializeMode(e) {
	return api || (api = create$1("graphql", e), languages.graphql = { api }, getMode().then((e) => e.setupMode(api))), api;
}
function getMode() {
	return import("./graphqlMode-C_KOHYmL.js");
}
function _arrayLikeToArray(e, t) {
	(t == null || t > e.length) && (t = e.length);
	for (var n = 0, i = Array(t); n < t; n++) i[n] = e[n];
	return i;
}
function _arrayWithHoles(e) {
	if (Array.isArray(e)) return e;
}
function _defineProperty$1(e, t, n) {
	return (t = _toPropertyKey(t)) in e ? Object.defineProperty(e, t, {
		value: n,
		enumerable: !0,
		configurable: !0,
		writable: !0
	}) : e[t] = n, e;
}
function _iterableToArrayLimit(e, t) {
	var n = e == null ? null : typeof Symbol < "u" && e[Symbol.iterator] || e["@@iterator"];
	if (n != null) {
		var i, a, o, s, c = [], d = !0, f = !1;
		try {
			if (o = (n = n.call(e)).next, t !== 0) for (; !(d = (i = o.call(n)).done) && (c.push(i.value), c.length !== t); d = !0);
		} catch (e) {
			f = !0, a = e;
		} finally {
			try {
				if (!d && n.return != null && (s = n.return(), Object(s) !== s)) return;
			} finally {
				if (f) throw a;
			}
		}
		return c;
	}
}
function _nonIterableRest() {
	throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function ownKeys$1(e, t) {
	var n = Object.keys(e);
	if (Object.getOwnPropertySymbols) {
		var i = Object.getOwnPropertySymbols(e);
		t && (i = i.filter(function(t) {
			return Object.getOwnPropertyDescriptor(e, t).enumerable;
		})), n.push.apply(n, i);
	}
	return n;
}
function _objectSpread2(e) {
	for (var t = 1; t < arguments.length; t++) {
		var n = arguments[t] == null ? {} : arguments[t];
		t % 2 ? ownKeys$1(Object(n), !0).forEach(function(t) {
			_defineProperty$1(e, t, n[t]);
		}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : ownKeys$1(Object(n)).forEach(function(t) {
			Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));
		});
	}
	return e;
}
function _objectWithoutProperties(e, t) {
	if (e == null) return {};
	var n, i, a = _objectWithoutPropertiesLoose(e, t);
	if (Object.getOwnPropertySymbols) {
		var o = Object.getOwnPropertySymbols(e);
		for (i = 0; i < o.length; i++) n = o[i], t.indexOf(n) === -1 && {}.propertyIsEnumerable.call(e, n) && (a[n] = e[n]);
	}
	return a;
}
function _objectWithoutPropertiesLoose(e, t) {
	if (e == null) return {};
	var n = {};
	for (var i in e) if ({}.hasOwnProperty.call(e, i)) {
		if (t.indexOf(i) !== -1) continue;
		n[i] = e[i];
	}
	return n;
}
function _slicedToArray(e, t) {
	return _arrayWithHoles(e) || _iterableToArrayLimit(e, t) || _unsupportedIterableToArray(e, t) || _nonIterableRest();
}
function _toPrimitive(e, t) {
	if (typeof e != "object" || !e) return e;
	var n = e[Symbol.toPrimitive];
	if (n !== void 0) {
		var i = n.call(e, t);
		if (typeof i != "object") return i;
		throw TypeError("@@toPrimitive must return a primitive value.");
	}
	return (t === "string" ? String : Number)(e);
}
function _toPropertyKey(e) {
	var t = _toPrimitive(e, "string");
	return typeof t == "symbol" ? t : t + "";
}
function _unsupportedIterableToArray(e, t) {
	if (e) {
		if (typeof e == "string") return _arrayLikeToArray(e, t);
		var n = {}.toString.call(e).slice(8, -1);
		return n === "Object" && e.constructor && (n = e.constructor.name), n === "Map" || n === "Set" ? Array.from(e) : n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? _arrayLikeToArray(e, t) : void 0;
	}
}
function _defineProperty(e, t, n) {
	return t in e ? Object.defineProperty(e, t, {
		value: n,
		enumerable: !0,
		configurable: !0,
		writable: !0
	}) : e[t] = n, e;
}
function ownKeys(e, t) {
	var n = Object.keys(e);
	if (Object.getOwnPropertySymbols) {
		var i = Object.getOwnPropertySymbols(e);
		t && (i = i.filter(function(t) {
			return Object.getOwnPropertyDescriptor(e, t).enumerable;
		})), n.push.apply(n, i);
	}
	return n;
}
function _objectSpread2$1(e) {
	for (var t = 1; t < arguments.length; t++) {
		var n = arguments[t] == null ? {} : arguments[t];
		t % 2 ? ownKeys(Object(n), !0).forEach(function(t) {
			_defineProperty(e, t, n[t]);
		}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : ownKeys(Object(n)).forEach(function(t) {
			Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));
		});
	}
	return e;
}
function compose$1() {
	var e = [...arguments];
	return function(t) {
		return e.reduceRight(function(e, t) {
			return t(e);
		}, t);
	};
}
function curry$1(e) {
	return function t() {
		var n = this, i = [...arguments];
		return i.length >= e.length ? e.apply(this, i) : function() {
			var e = [...arguments];
			return t.apply(n, [].concat(i, e));
		};
	};
}
function isObject$1(e) {
	return {}.toString.call(e).includes("Object");
}
function isEmpty(e) {
	return !Object.keys(e).length;
}
function isFunction$1(e) {
	return typeof e == "function";
}
function hasOwnProperty(e, t) {
	return Object.prototype.hasOwnProperty.call(e, t);
}
function validateChanges(e, t) {
	return isObject$1(t) || errorHandler$1("changeType"), Object.keys(t).some(function(t) {
		return !hasOwnProperty(e, t);
	}) && errorHandler$1("changeField"), t;
}
function validateSelector(e) {
	isFunction$1(e) || errorHandler$1("selectorType");
}
function validateHandler(e) {
	isFunction$1(e) || isObject$1(e) || errorHandler$1("handlerType"), isObject$1(e) && Object.values(e).some(function(e) {
		return !isFunction$1(e);
	}) && errorHandler$1("handlersType");
}
function validateInitial(e) {
	e || errorHandler$1("initialIsRequired"), isObject$1(e) || errorHandler$1("initialType"), isEmpty(e) && errorHandler$1("initialContent");
}
function throwError$1(e, t) {
	throw Error(e[t] || e.default);
}
var errorHandler$1 = curry$1(throwError$1)({
	initialIsRequired: "initial state is required",
	initialType: "initial state should be an object",
	initialContent: "initial state shouldn't be an empty object",
	handlerType: "handler should be an object or a function",
	handlersType: "all handlers should be a functions",
	selectorType: "selector should be a function",
	changeType: "provided value of changes should be an object",
	changeField: "it seams you want to change a field in the state which is not specified in the \"initial\" state",
	default: "an unknown error accured in `state-local` package"
}), validators$1 = {
	changes: validateChanges,
	selector: validateSelector,
	handler: validateHandler,
	initial: validateInitial
};
function create(e) {
	var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
	validators$1.initial(e), validators$1.handler(t);
	var n = { current: e }, i = curry$1(didStateUpdate)(n, t), a = curry$1(updateState)(n), o = curry$1(validators$1.changes)(e), s = curry$1(extractChanges)(n);
	function c() {
		var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : function(e) {
			return e;
		};
		return validators$1.selector(e), e(n.current);
	}
	function d(e) {
		compose$1(i, a, o, s)(e);
	}
	return [c, d];
}
function extractChanges(e, t) {
	return isFunction$1(t) ? t(e.current) : t;
}
function updateState(e, t) {
	return e.current = _objectSpread2$1(_objectSpread2$1({}, e.current), t), t;
}
function didStateUpdate(e, t, n) {
	return isFunction$1(t) ? t(e.current) : Object.keys(n).forEach(function(n) {
		return t[n]?.call(t, e.current[n]);
	}), n;
}
var state_local_default = { create }, config = { paths: { vs: "https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs" } };
function curry(e) {
	return function t() {
		var n = this, i = [...arguments];
		return i.length >= e.length ? e.apply(this, i) : function() {
			var e = [...arguments];
			return t.apply(n, [].concat(i, e));
		};
	};
}
function isObject(e) {
	return {}.toString.call(e).includes("Object");
}
function validateConfig(e) {
	return e || errorHandler("configIsRequired"), isObject(e) || errorHandler("configType"), e.urls ? (informAboutDeprecation(), { paths: { vs: e.urls.monacoBase } }) : e;
}
function informAboutDeprecation() {
	console.warn(errorMessages.deprecation);
}
function throwError(e, t) {
	throw Error(e[t] || e.default);
}
var errorMessages = {
	configIsRequired: "the configuration object is required",
	configType: "the configuration object should be an object",
	default: "an unknown error accured in `@monaco-editor/loader` package",
	deprecation: "Deprecation warning!\n    You are using deprecated way of configuration.\n\n    Instead of using\n      monaco.config({ urls: { monacoBase: '...' } })\n    use\n      monaco.config({ paths: { vs: '...' } })\n\n    For more please check the link https://github.com/suren-atoyan/monaco-loader#config\n  "
}, errorHandler = curry(throwError)(errorMessages), validators = { config: validateConfig }, compose = function() {
	var e = [...arguments];
	return function(t) {
		return e.reduceRight(function(e, t) {
			return t(e);
		}, t);
	};
};
function merge(e, t) {
	return Object.keys(t).forEach(function(n) {
		t[n] instanceof Object && e[n] && Object.assign(t[n], merge(e[n], t[n]));
	}), _objectSpread2(_objectSpread2({}, e), t);
}
var CANCELATION_MESSAGE = {
	type: "cancelation",
	msg: "operation is manually canceled"
};
function makeCancelable(e) {
	var t = !1, n = new Promise(function(n, i) {
		e.then(function(e) {
			return t ? i(CANCELATION_MESSAGE) : n(e);
		}), e.catch(i);
	});
	return n.cancel = function() {
		return t = !0;
	}, n;
}
var _excluded = ["monaco"], _state$create = state_local_default.create({
	config,
	isInitialized: !1,
	resolve: null,
	reject: null,
	monaco: null
}), _state$create2 = _slicedToArray(_state$create, 2), getState$1 = _state$create2[0], setState = _state$create2[1];
function config$1(e) {
	var t = validators.config(e), n = t.monaco, i = _objectWithoutProperties(t, _excluded);
	setState(function(e) {
		return {
			config: merge(e.config, i),
			monaco: n
		};
	});
}
function init() {
	var e = getState$1(function(e) {
		var t = e.monaco, n = e.isInitialized, i = e.resolve;
		return {
			monaco: t,
			isInitialized: n,
			resolve: i
		};
	});
	if (!e.isInitialized) {
		if (setState({ isInitialized: !0 }), e.monaco) return e.resolve(e.monaco), makeCancelable(wrapperPromise);
		if (window.monaco && window.monaco.editor) return storeMonacoInstance(window.monaco), e.resolve(window.monaco), makeCancelable(wrapperPromise);
		compose(injectScripts, getMonacoLoaderScript)(configureLoader);
	}
	return makeCancelable(wrapperPromise);
}
function injectScripts(e) {
	return document.body.appendChild(e);
}
function createScript(e) {
	var t = document.createElement("script");
	return e && (t.src = e), t;
}
function getMonacoLoaderScript(e) {
	var t = getState$1(function(e) {
		var t = e.config, n = e.reject;
		return {
			config: t,
			reject: n
		};
	}), n = createScript(`${t.config.paths.vs}/loader.js`);
	return n.onload = function() {
		return e();
	}, n.onerror = t.reject, n;
}
function configureLoader() {
	var e = getState$1(function(e) {
		var t = e.config, n = e.resolve, i = e.reject;
		return {
			config: t,
			resolve: n,
			reject: i
		};
	}), t = window.require;
	t.config(e.config), t(["vs/editor/editor.main"], function(t) {
		var n = t.m || t;
		storeMonacoInstance(n), e.resolve(n);
	}, function(t) {
		e.reject(t);
	});
}
function storeMonacoInstance(e) {
	getState$1().monaco || setState({ monaco: e });
}
function __getMonacoInstance() {
	return getState$1(function(e) {
		return e.monaco;
	});
}
var wrapperPromise = new Promise(function(e, t) {
	return setState({
		resolve: e,
		reject: t
	});
}), loader = {
	config: config$1,
	init,
	__getMonacoInstance
}, v = {
	wrapper: {
		display: "flex",
		position: "relative",
		textAlign: "initial"
	},
	fullWidth: { width: "100%" },
	hide: { display: "none" }
}, Y = { container: {
	display: "flex",
	height: "100%",
	width: "100%",
	justifyContent: "center",
	alignItems: "center"
} };
function Me({ children: e }) {
	return React.createElement("div", { style: Y.container }, e);
}
var $ = Me;
function Ee({ width: e, height: t, isEditorReady: n, loading: i, _ref: a, className: o, wrapperProps: s }) {
	return React.createElement("section", {
		style: {
			...v.wrapper,
			width: e,
			height: t
		},
		...s
	}, !n && React.createElement($, null, i), React.createElement("div", {
		ref: a,
		style: {
			...v.fullWidth,
			...!n && v.hide
		},
		className: o
	}));
}
var H = memo(Ee);
function Ce(e) {
	useEffect(e, []);
}
var k = Ce;
function he(e, t, n = !0) {
	let i = useRef(!0);
	useEffect(i.current || !n ? () => {
		i.current = !1;
	} : e, t);
}
var l = he;
function D() {}
function h(e, t, n, i) {
	return De(e, i) || be(e, t, n, i);
}
function De(e, t) {
	return e.editor.getModel(te(e, t));
}
function be(e, t, n, i) {
	return e.editor.createModel(t, n, i ? te(e, i) : void 0);
}
function te(e, t) {
	return e.Uri.parse(t);
}
function Oe({ original: e, modified: t, language: n, originalLanguage: i, modifiedLanguage: a, originalModelPath: o, modifiedModelPath: s, keepCurrentOriginalModel: c = !1, keepCurrentModifiedModel: d = !1, theme: f = "light", loading: g = "Loading...", options: y = {}, height: b = "100%", width: x = "100%", className: S, wrapperProps: C = {}, beforeMount: w = D, onMount: E = D }) {
	let [O, A] = useState(!1), [j, M] = useState(!0), F = useRef(null), I = useRef(null), R = useRef(null), zv = useRef(E), V = useRef(w), Bv = useRef(!1);
	k(() => {
		let e = loader.init();
		return e.then((e) => (I.current = e) && M(!1)).catch((e) => e?.type !== "cancelation" && console.error("Monaco initialization: error:", e)), () => F.current ? Uv() : e.cancel();
	}), l(() => {
		if (F.current && I.current) {
			let t = F.current.getOriginalEditor(), a = h(I.current, e || "", i || n || "text", o || "");
			a !== t.getModel() && t.setModel(a);
		}
	}, [o], O), l(() => {
		if (F.current && I.current) {
			let e = F.current.getModifiedEditor(), i = h(I.current, t || "", a || n || "text", s || "");
			i !== e.getModel() && e.setModel(i);
		}
	}, [s], O), l(() => {
		let e = F.current.getModifiedEditor();
		e.getOption(I.current.editor.EditorOption.readOnly) ? e.setValue(t || "") : t !== e.getValue() && (e.executeEdits("", [{
			range: e.getModel().getFullModelRange(),
			text: t || "",
			forceMoveMarkers: !0
		}]), e.pushUndoStop());
	}, [t], O), l(() => {
		F.current?.getModel()?.original.setValue(e || "");
	}, [e], O), l(() => {
		let { original: e, modified: t } = F.current.getModel();
		I.current.editor.setModelLanguage(e, i || n || "text"), I.current.editor.setModelLanguage(t, a || n || "text");
	}, [
		n,
		i,
		a
	], O), l(() => {
		I.current?.editor.setTheme(f);
	}, [f], O), l(() => {
		F.current?.updateOptions(y);
	}, [y], O);
	let Vv = useCallback(() => {
		if (!I.current) return;
		V.current(I.current);
		let c = h(I.current, e || "", i || n || "text", o || ""), d = h(I.current, t || "", a || n || "text", s || "");
		F.current?.setModel({
			original: c,
			modified: d
		});
	}, [
		n,
		t,
		a,
		e,
		i,
		o,
		s
	]), Hv = useCallback(() => {
		!Bv.current && R.current && (F.current = I.current.editor.createDiffEditor(R.current, {
			automaticLayout: !0,
			...y
		}), Vv(), I.current?.editor.setTheme(f), A(!0), Bv.current = !0);
	}, [
		y,
		f,
		Vv
	]);
	useEffect(() => {
		O && zv.current(F.current, I.current);
	}, [O]), useEffect(() => {
		!j && !O && Hv();
	}, [
		j,
		O,
		Hv
	]);
	function Uv() {
		let e = F.current?.getModel();
		c || e?.original?.dispose(), d || e?.modified?.dispose(), F.current?.dispose();
	}
	return React.createElement(H, {
		width: x,
		height: b,
		isEditorReady: O,
		loading: g,
		_ref: R,
		className: S,
		wrapperProps: C
	});
}
memo(Oe);
function He(e) {
	let t = useRef();
	return useEffect(() => {
		t.current = e;
	}, [e]), t.current;
}
var se = He, _ = /* @__PURE__ */ new Map();
function Ve({ defaultValue: e, defaultLanguage: t, defaultPath: n, value: i, language: a, path: o, theme: s = "light", line: c, loading: d = "Loading...", options: f = {}, overrideServices: g = {}, saveViewState: y = !0, keepCurrentModel: b = !1, width: x = "100%", height: S = "100%", className: C, wrapperProps: w = {}, beforeMount: E = D, onMount: O = D, onChange: A, onValidate: j = D }) {
	let [M, F] = useState(!1), [I, R] = useState(!0), zv = useRef(null), V = useRef(null), Bv = useRef(null), Vv = useRef(O), Hv = useRef(E), Uv = useRef(void 0), Wv = useRef(i), Gv = se(o), Kv = useRef(!1), q = useRef(!1);
	k(() => {
		let e = loader.init();
		return e.then((e) => (zv.current = e) && R(!1)).catch((e) => e?.type !== "cancelation" && console.error("Monaco initialization: error:", e)), () => V.current ? Jv() : e.cancel();
	}), l(() => {
		let s = h(zv.current, e || i || "", t || a || "", o || n || "");
		s !== V.current?.getModel() && (y && _.set(Gv, V.current?.saveViewState()), V.current?.setModel(s), y && V.current?.restoreViewState(_.get(o)));
	}, [o], M), l(() => {
		V.current?.updateOptions(f);
	}, [f], M), l(() => {
		!V.current || i === void 0 || (V.current.getOption(zv.current.editor.EditorOption.readOnly) ? V.current.setValue(i) : i !== V.current.getValue() && (q.current = !0, V.current.executeEdits("", [{
			range: V.current.getModel().getFullModelRange(),
			text: i,
			forceMoveMarkers: !0
		}]), V.current.pushUndoStop(), q.current = !1));
	}, [i], M), l(() => {
		let e = V.current?.getModel();
		M && e && a && zv.current?.editor.setModelLanguage(e, a);
	}, [a, M], M), l(() => {
		c !== void 0 && V.current?.revealLine(c);
	}, [c], M), l(() => {
		zv.current?.editor.setTheme(s);
	}, [s], M);
	let qv = useCallback(() => {
		if (!(!Bv.current || !zv.current) && !Kv.current) {
			Hv.current(zv.current);
			let d = o || n, b = h(zv.current, i || e || "", t || a || "", d || "");
			V.current = zv.current?.editor.create(Bv.current, {
				model: b,
				automaticLayout: !0,
				...f
			}, g), y && V.current.restoreViewState(_.get(d)), zv.current.editor.setTheme(s), c !== void 0 && V.current.revealLine(c), F(!0), Kv.current = !0;
		}
	}, [
		e,
		t,
		n,
		i,
		a,
		o,
		f,
		g,
		y,
		s,
		c
	]);
	useEffect(() => {
		M && Vv.current(V.current, zv.current);
	}, [M]), useEffect(() => {
		!I && !M && qv();
	}, [
		I,
		M,
		qv
	]), Wv.current = i, useEffect(() => {
		M && A && (Uv.current?.dispose(), Uv.current = V.current?.onDidChangeModelContent((e) => {
			q.current || A(V.current.getValue(), e);
		}));
	}, [M, A]), useEffect(() => {
		if (M) {
			let e = zv.current.editor.onDidChangeMarkers((e) => {
				let t = V.current.getModel()?.uri;
				if (t && e.find((e) => e.path === t.path)) {
					let e = zv.current.editor.getModelMarkers({ resource: t });
					j?.(e);
				}
			});
			return () => {
				e?.dispose();
			};
		}
		return () => {};
	}, [M, j]);
	function Jv() {
		Uv.current?.dispose(), b ? y && _.set(o, V.current.saveViewState()) : V.current.getModel()?.dispose(), V.current.dispose(), V.current = null, Kv.current = !1, F(!1);
	}
	return React.createElement(H, {
		width: x,
		height: S,
		isEditorReady: M,
		loading: d,
		_ref: Bv,
		className: C,
		wrapperProps: w
	});
}
var Ft = memo(Ve);
typeof window < "u" && (window.monaco = editor_main_exports), loader.config({ monaco: editor_main_exports }), languages.register({ id: "dotenv" }), editor.defineTheme("hive-laboratory-dark", {
	base: "vs-dark",
	inherit: !0,
	rules: [
		{
			token: "",
			foreground: "F8F9FA",
			background: "fffffe"
		},
		{
			token: "invalid",
			foreground: "cd3131"
		},
		{
			token: "emphasis",
			fontStyle: "italic"
		},
		{
			token: "strong",
			fontStyle: "bold"
		},
		{
			token: "variable",
			foreground: "001188"
		},
		{
			token: "variable.predefined",
			foreground: "4864AA"
		},
		{
			token: "constant",
			foreground: "dd0000"
		},
		{
			token: "comment",
			foreground: "15803d"
		},
		{
			token: "number",
			foreground: "fde68a"
		},
		{
			token: "number.hex",
			foreground: "3030c0"
		},
		{
			token: "regexp",
			foreground: "800000"
		},
		{
			token: "annotation",
			foreground: "808080"
		},
		{
			token: "type",
			foreground: "fde68a"
		},
		{
			token: "delimiter",
			foreground: "6E757C"
		},
		{
			token: "delimiter.html",
			foreground: "383838"
		},
		{
			token: "delimiter.xml",
			foreground: "facc15"
		},
		{
			token: "tag",
			foreground: "800000"
		},
		{
			token: "tag.id.jade",
			foreground: "4F76AC"
		},
		{
			token: "tag.class.jade",
			foreground: "4F76AC"
		},
		{
			token: "meta.scss",
			foreground: "800000"
		},
		{
			token: "metatag",
			foreground: "e00000"
		},
		{
			token: "metatag.content.html",
			foreground: "FF0000"
		},
		{
			token: "metatag.html",
			foreground: "808080"
		},
		{
			token: "metatag.xml",
			foreground: "808080"
		},
		{
			token: "metatag.php",
			fontStyle: "bold"
		},
		{
			token: "key",
			foreground: "93c5fd"
		},
		{
			token: "string.key.json",
			foreground: "93c5fd"
		},
		{
			token: "string.value.json",
			foreground: "fdba74"
		},
		{
			token: "attribute.name",
			foreground: "FF0000"
		},
		{
			token: "attribute.value",
			foreground: "34d399"
		},
		{
			token: "attribute.value.number",
			foreground: "fdba74"
		},
		{
			token: "attribute.value.unit",
			foreground: "fdba74"
		},
		{
			token: "attribute.value.html",
			foreground: "facc15"
		},
		{
			token: "attribute.value.xml",
			foreground: "facc15"
		},
		{
			token: "string",
			foreground: "2dd4bf"
		},
		{
			token: "string.html",
			foreground: "facc15"
		},
		{
			token: "string.sql",
			foreground: "FF0000"
		},
		{
			token: "string.yaml",
			foreground: "34d399"
		},
		{
			token: "keyword",
			foreground: "60a5fa"
		},
		{
			token: "keyword.json",
			foreground: "34d399"
		},
		{
			token: "keyword.flow",
			foreground: "AF00DB"
		},
		{
			token: "keyword.flow.scss",
			foreground: "facc15"
		},
		{
			token: "operator.scss",
			foreground: "666666"
		},
		{
			token: "operator.sql",
			foreground: "778899"
		},
		{
			token: "operator.swift",
			foreground: "666666"
		},
		{
			token: "predefined.sql",
			foreground: "FF00FF"
		}
	],
	colors: {
		"editor.foreground": "#f6f8fa",
		"editor.background": "#0f1214",
		"editor.selectionBackground": "#2A2F34",
		"editor.inactiveSelectionBackground": "#2A2F34",
		"editor.lineHighlightBackground": "#2A2F34",
		"editorCursor.foreground": "#ffffff",
		"editorWhitespace.foreground": "#6a737d",
		"editorIndentGuide.background": "#6E757C",
		"editorIndentGuide.activeBackground": "#CFD4D9",
		"editor.selectionHighlightBorder": "#2A2F34"
	}
}), editor.defineTheme("hive-laboratory-light", {
	base: "vs",
	inherit: !0,
	rules: [],
	colors: {}
}), languages.setMonarchTokensProvider("dotenv", { tokenizer: {
	root: [[/^\s*#.*$/, "comment"], [
		/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/,
		"key",
		"@value"
	]],
	value: [
		[
			/"([^"\\]|\\.)*$/,
			"string",
			"@pop"
		],
		[
			/"([^"\\]|\\.)*"/,
			"string",
			"@pop"
		],
		[
			/'([^'\\]|\\.)*$/,
			"string",
			"@pop"
		],
		[
			/'([^'\\]|\\.)*'/,
			"string",
			"@pop"
		],
		[
			/[^#\n]+/,
			"string",
			"@pop"
		]
	]
} });
const Editor = forwardRef((e, t) => {
	let n = useId(), i = useRef(null), { introspection: a, endpoint: o, theme: c } = useLaboratory(), [d, f] = useState(!!languages.typescript);
	return useEffect(() => {
		a && initializeMode({
			schemas: [{
				introspectionJSON: a,
				uri: `schema_${o}.graphql`
			}],
			diagnosticSettings: e.uri && e.variablesUri ? {
				validateVariablesJSON: { [e.uri.toString()]: [e.variablesUri.toString()] },
				jsonDiagnosticSettings: { allowComments: !0 }
			} : void 0
		}).setCompletionSettings({ __experimental__fillLeafsOnComplete: !0 });
	}, [
		a,
		e.uri?.toString(),
		e.variablesUri?.toString()
	]), useEffect(() => {
		(async function() {
			if (!e.extraLibs?.length) return;
			languages.typescript || (await import("./monaco.contribution-CAUSzgDp.js"), f(!0));
			let t = languages.typescript;
			if (!t) return;
			let i = Object.values(t.typescriptDefaults.getExtraLibs()).map((e) => e.content);
			if (e.extraLibs.every((e) => i.includes(e))) return;
			let a = n.replace(/[^a-zA-Z0-9_-]/g, "_");
			t.typescriptDefaults.setCompilerOptions({
				target: t.ScriptTarget.ESNext,
				module: t.ModuleKind.ESNext,
				allowNonTsExtensions: !0,
				allowJs: !0,
				lib: ["esnext", "webworker"]
			}), t.typescriptDefaults.setExtraLibs(e.extraLibs.map((e, t) => ({
				content: e,
				filePath: `file:///hive-lab-globals-${a}-${t}.d.ts`
			})));
		})();
	}, [n, e.extraLibs]), useImperativeHandle(t, () => ({ setValue: (e) => {
		i.current && i.current.setValue(e);
	} }), []), !d && e.language === "typescript" ? null : /* @__PURE__ */ jsx("div", {
		className: "size-full overflow-hidden",
		children: /* @__PURE__ */ jsx(Ft, {
			className: "size-full",
			...e,
			theme: c === "dark" ? "hive-laboratory-dark" : "hive-laboratory-light",
			onMount: (e) => {
				i.current = e;
			},
			loading: null,
			options: {
				...e.options,
				lineNumbers: "on",
				cursorStyle: "line",
				cursorBlinking: "smooth",
				padding: { top: 16 },
				fontFamily: "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace",
				minimap: { enabled: !1 },
				automaticLayout: !0,
				tabSize: 2,
				formatOnPaste: !0
			},
			defaultPath: e.uri?.toString()
		})
	});
}), Env = () => {
	let { env: e, setEnv: t } = useLaboratory();
	return /* @__PURE__ */ jsx("div", {
		className: "bg-card size-full",
		children: /* @__PURE__ */ jsx(Editor, {
			defaultValue: Object.entries(e?.variables ?? {}).map(([e, t]) => `${e}=${t}`).join("\n"),
			onChange: (e) => {
				t({ variables: Object.fromEntries(e?.split("\n").filter((e) => e.trim() && !e.trim().startsWith("#")).map((e) => {
					let t = e.split(/=(.*)/s);
					return [t[0].trim(), (t[1] ?? "").trim()];
				}) ?? []) });
			},
			language: "dotenv",
			options: { scrollbar: { horizontal: "hidden" } }
		})
	});
}, HistoryOperationItem = (e) => {
	let { activeTab: t, addTab: n, setActiveTab: i, deleteHistory: a } = useLaboratory(), o = useMemo(() => t?.type === "history" && t.data.id === e.historyItem.id, [t, e.historyItem]), s = useMemo(() => e.historyItem.status ? e.historyItem.status < 200 || e.historyItem.status >= 300 || "response" in e.historyItem && JSON.parse(e.historyItem.response).errors : !0, [e.historyItem]);
	return /* @__PURE__ */ jsxs(Button, {
		variant: "ghost",
		size: "sm",
		className: cn("bg-background group sticky top-0 w-full justify-start px-2", { "bg-accent/50": o }),
		onClick: () => {
			i(n({
				type: "history",
				data: e.historyItem,
				readOnly: !0
			}));
		},
		children: [
			/* @__PURE__ */ jsx(HistoryIcon, { className: cn("size-4 text-indigo-400", {
				"text-green-500": !e.historyItem.status || e.historyItem.status >= 200 && e.historyItem.status < 300,
				"text-red-500": s
			}) }),
			/* @__PURE__ */ jsx("span", {
				className: "text-muted-foreground",
				children: format(new Date(e.historyItem.createdAt), "HH:mm")
			}),
			/* @__PURE__ */ jsx("div", {
				className: "truncate",
				children: e.historyItem.operation.name || "Untitled"
			}),
			/* @__PURE__ */ jsx("div", {
				className: "ml-auto flex items-center gap-2",
				children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
					asChild: !0,
					children: /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsx(AlertDialogTrigger, {
						asChild: !0,
						children: /* @__PURE__ */ jsx(Button, {
							variant: "link",
							className: "text-muted-foreground hover:text-destructive p-1! pr-0! ml-auto opacity-0 transition-opacity group-hover:opacity-100",
							onClick: (e) => {
								e.stopPropagation();
							},
							children: /* @__PURE__ */ jsx(TrashIcon, {})
						})
					}), /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Are you sure you want to delete history?" }), /* @__PURE__ */ jsx(AlertDialogDescription, { children: "This history operation will be permanently deleted." })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx(AlertDialogAction, {
						asChild: !0,
						children: /* @__PURE__ */ jsx(Button, {
							variant: "destructive",
							onClick: (t) => {
								t.stopPropagation(), a(e.historyItem.id);
							},
							children: "Delete"
						})
					})] })] })] })
				}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete history" })] })
			})
		]
	});
}, HistoryGroup = (e) => {
	let { deleteHistoryByDay: t } = useLaboratory(), [n, i] = useState(!1);
	return /* @__PURE__ */ jsxs(Collapsible, {
		open: n,
		onOpenChange: i,
		children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
			asChild: !0,
			children: /* @__PURE__ */ jsxs(Button, {
				variant: "ghost",
				className: "bg-background group sticky top-0 w-full justify-start px-2",
				size: "sm",
				children: [
					jsx(n ? FolderOpenIcon : FolderClockIcon, { className: "text-muted-foreground size-4" }),
					e.group.date,
					/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
						asChild: !0,
						children: /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsx(AlertDialogTrigger, {
							asChild: !0,
							children: /* @__PURE__ */ jsx(Button, {
								variant: "link",
								className: "text-muted-foreground hover:text-destructive p-1! pr-0! ml-auto opacity-0 transition-opacity group-hover:opacity-100",
								onClick: (e) => {
									e.stopPropagation();
								},
								children: /* @__PURE__ */ jsx(TrashIcon, {})
							})
						}), /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Are you sure you want to delete history?" }), /* @__PURE__ */ jsxs(AlertDialogDescription, { children: [
							"All history for ",
							e.group.date,
							" will be permanently deleted."
						] })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx(AlertDialogAction, {
							asChild: !0,
							children: /* @__PURE__ */ jsx(Button, {
								variant: "destructive",
								onClick: (n) => {
									n.stopPropagation(), t(e.group.date);
								},
								children: "Delete"
							})
						})] })] })] })
					}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete history" })] })
				]
			})
		}), /* @__PURE__ */ jsx(CollapsibleContent, {
			className: cn("border-border ml-4 flex flex-col gap-1 border-l pl-2"),
			children: e.group.items.map((e) => /* @__PURE__ */ jsx(HistoryOperationItem, { historyItem: e }, e.id))
		})]
	});
}, History = () => {
	let { history: e, deleteAllHistory: t, tabs: n, setTabs: i, setActiveTab: a } = useLaboratory(), o = useMemo(() => e.sort((e, t) => new Date(t.createdAt).getTime() - new Date(e.createdAt).getTime()), [e]), s = useMemo(() => o.reduce((e, t) => {
		let n = format(new Date(t.createdAt), "dd MMM yyyy"), i = e.find((e) => e.date === n);
		return i || (i = {
			date: n,
			items: []
		}, e.push(i)), i.items.push(t), e;
	}, []), [o]), c = useCallback(() => {
		t(), i(n.filter((e) => e.type !== "history"));
		let e = n.find((e) => e.type !== "history");
		e && a(e);
	}, [
		t,
		i,
		n,
		a
	]);
	return /* @__PURE__ */ jsxs("div", {
		className: "grid size-full grid-rows-[auto_1fr] pb-0",
		children: [/* @__PURE__ */ jsxs("div", {
			className: "border-border flex h-12 items-center gap-2 border-b p-3",
			children: [/* @__PURE__ */ jsx("span", {
				className: "text-base font-medium",
				children: "History"
			}), /* @__PURE__ */ jsx("div", {
				className: "ml-auto flex items-center",
				children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
					asChild: !0,
					children: /* @__PURE__ */ jsxs(AlertDialog, { children: [/* @__PURE__ */ jsx(AlertDialogTrigger, {
						asChild: !0,
						children: /* @__PURE__ */ jsx(Button, {
							variant: "ghost",
							size: "icon-sm",
							className: "text-muted-foreground hover:text-destructive p-1! size-6 rounded-sm",
							disabled: e.length === 0,
							children: /* @__PURE__ */ jsx(TrashIcon, { className: "size-4" })
						})
					}), /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Are you sure you want to delete all history?" }), /* @__PURE__ */ jsx(AlertDialogDescription, { children: "All history will be permanently deleted." })] }), /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [/* @__PURE__ */ jsx(AlertDialogCancel, { children: "Cancel" }), /* @__PURE__ */ jsx(AlertDialogAction, {
						asChild: !0,
						children: /* @__PURE__ */ jsx(Button, {
							variant: "destructive",
							onClick: (e) => {
								e.stopPropagation(), c();
							},
							children: "Delete"
						})
					})] })] })] })
				}), /* @__PURE__ */ jsx(TooltipContent, { children: "Delete all" })] })
			})]
		}), /* @__PURE__ */ jsx("div", {
			className: "size-full overflow-hidden",
			children: /* @__PURE__ */ jsxs(ScrollArea, {
				className: "size-full",
				children: [/* @__PURE__ */ jsx("div", {
					className: "flex flex-col gap-1 p-3",
					children: s.length > 0 ? s.map((e) => /* @__PURE__ */ jsx(HistoryGroup, { group: e }, e.date)) : /* @__PURE__ */ jsx(Empty, {
						className: "px-0! w-full",
						children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
							/* @__PURE__ */ jsx(EmptyMedia, {
								variant: "icon",
								children: /* @__PURE__ */ jsx(ClockIcon, { className: "text-muted-foreground size-6" })
							}),
							/* @__PURE__ */ jsx(EmptyTitle, {
								className: "text-base",
								children: "No history yet"
							}),
							/* @__PURE__ */ jsx(EmptyDescription, {
								className: "text-xs",
								children: "You haven't run any operations yet. Get started by running your first operation."
							})
						] })
					})
				}), /* @__PURE__ */ jsx(ScrollBar, {})]
			})
		})]
	});
};
var badgeVariants = cva("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]  aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", {
	variants: { variant: {
		default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
		secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
		destructive: "border-transparent  text-white [a&]:hover:bg-destructive/90  focus-visible:ring-destructive/40 bg-destructive/60",
		outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
	} },
	defaultVariants: { variant: "default" }
});
function Badge({ className: e, variant: t, asChild: n = !1,...i }) {
	return /* @__PURE__ */ jsx(n ? Slot : "span", {
		"data-slot": "badge",
		className: cn(badgeVariants({ variant: t }), e),
		...i
	});
}
function usePrevious$1(e) {
	let t = React$1.useRef({
		value: e,
		previous: e
	});
	return React$1.useMemo(() => (t.current.value !== e && (t.current.previous = t.current.value, t.current.value = e), t.current.previous), [e]);
}
var OPEN_KEYS = [
	" ",
	"Enter",
	"ArrowUp",
	"ArrowDown"
], SELECTION_KEYS = [" ", "Enter"], SELECT_NAME = "Select", [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME), [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [createCollectionScope, createPopperScope]), usePopperScope = createPopperScope(), [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME), [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME), Select$1 = (e) => {
	let { __scopeSelect: t, children: n, open: i, defaultOpen: a, onOpenChange: o, value: s, defaultValue: c, onValueChange: d, dir: f, name: g, autoComplete: y, disabled: b, required: x, form: S } = e, C = usePopperScope(t), [w, E] = React$1.useState(null), [O, A] = React$1.useState(null), [j, M] = React$1.useState(!1), F = useDirection(f), [I, R] = useControllableState({
		prop: i,
		defaultProp: a ?? !1,
		onChange: o,
		caller: SELECT_NAME
	}), [zv, V] = useControllableState({
		prop: s,
		defaultProp: c,
		onChange: d,
		caller: SELECT_NAME
	}), Bv = React$1.useRef(null), Vv = w ? S || !!w.closest("form") : !0, [Hv, Uv] = React$1.useState(/* @__PURE__ */ new Set()), Wv = Array.from(Hv).map((e) => e.props.value).join(";");
	return /* @__PURE__ */ jsx(Root2$6, {
		...C,
		children: /* @__PURE__ */ jsxs(SelectProvider, {
			required: x,
			scope: t,
			trigger: w,
			onTriggerChange: E,
			valueNode: O,
			onValueNodeChange: A,
			valueNodeHasChildren: j,
			onValueNodeHasChildrenChange: M,
			contentId: useId$1(),
			value: zv,
			onValueChange: V,
			open: I,
			onOpenChange: R,
			dir: F,
			triggerPointerDownPosRef: Bv,
			disabled: b,
			children: [/* @__PURE__ */ jsx(Collection.Provider, {
				scope: t,
				children: /* @__PURE__ */ jsx(SelectNativeOptionsProvider, {
					scope: e.__scopeSelect,
					onNativeOptionAdd: React$1.useCallback((e) => {
						Uv((t) => new Set(t).add(e));
					}, []),
					onNativeOptionRemove: React$1.useCallback((e) => {
						Uv((t) => {
							let n = new Set(t);
							return n.delete(e), n;
						});
					}, []),
					children: n
				})
			}), Vv ? /* @__PURE__ */ jsxs(SelectBubbleInput, {
				"aria-hidden": !0,
				required: x,
				tabIndex: -1,
				name: g,
				autoComplete: y,
				value: zv,
				onChange: (e) => V(e.target.value),
				disabled: b,
				form: S,
				children: [zv === void 0 ? /* @__PURE__ */ jsx("option", { value: "" }) : null, Array.from(Hv)]
			}, Wv) : null]
		})
	});
};
Select$1.displayName = SELECT_NAME;
var TRIGGER_NAME$3 = "SelectTrigger", SelectTrigger$1 = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n, disabled: i = !1,...a } = e, o = usePopperScope(n), s = useSelectContext(TRIGGER_NAME$3, n), c = s.disabled || i, d = useComposedRefs$1(t, s.onTriggerChange), f = useCollection(n), g = React$1.useRef("touch"), [y, b, x] = useTypeaheadSearch((e) => {
		let t = f().filter((e) => !e.disabled), n = t.find((e) => e.value === s.value), i = findNextItem(t, e, n);
		i !== void 0 && s.onValueChange(i.value);
	}), S = (e) => {
		c || (s.onOpenChange(!0), x()), e && (s.triggerPointerDownPosRef.current = {
			x: Math.round(e.pageX),
			y: Math.round(e.pageY)
		});
	};
	return /* @__PURE__ */ jsx(Anchor, {
		asChild: !0,
		...o,
		children: /* @__PURE__ */ jsx(Primitive.button, {
			type: "button",
			role: "combobox",
			"aria-controls": s.contentId,
			"aria-expanded": s.open,
			"aria-required": s.required,
			"aria-autocomplete": "none",
			dir: s.dir,
			"data-state": s.open ? "open" : "closed",
			disabled: c,
			"data-disabled": c ? "" : void 0,
			"data-placeholder": shouldShowPlaceholder(s.value) ? "" : void 0,
			...a,
			ref: d,
			onClick: composeEventHandlers(a.onClick, (e) => {
				e.currentTarget.focus(), g.current !== "mouse" && S(e);
			}),
			onPointerDown: composeEventHandlers(a.onPointerDown, (e) => {
				g.current = e.pointerType;
				let t = e.target;
				t.hasPointerCapture(e.pointerId) && t.releasePointerCapture(e.pointerId), e.button === 0 && e.ctrlKey === !1 && e.pointerType === "mouse" && (S(e), e.preventDefault());
			}),
			onKeyDown: composeEventHandlers(a.onKeyDown, (e) => {
				let t = y.current !== "";
				!(e.ctrlKey || e.altKey || e.metaKey) && e.key.length === 1 && b(e.key), !(t && e.key === " ") && OPEN_KEYS.includes(e.key) && (S(), e.preventDefault());
			})
		})
	});
});
SelectTrigger$1.displayName = TRIGGER_NAME$3;
var VALUE_NAME = "SelectValue", SelectValue$1 = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n, className: i, style: a, children: o, placeholder: s = "",...c } = e, d = useSelectContext(VALUE_NAME, n), { onValueNodeHasChildrenChange: f } = d, g = o !== void 0, y = useComposedRefs$1(t, d.onValueNodeChange);
	return useLayoutEffect2(() => {
		f(g);
	}, [f, g]), /* @__PURE__ */ jsx(Primitive.span, {
		...c,
		ref: y,
		style: { pointerEvents: "none" },
		children: shouldShowPlaceholder(d.value) ? /* @__PURE__ */ jsx(Fragment$1, { children: s }) : o
	});
});
SelectValue$1.displayName = VALUE_NAME;
var ICON_NAME = "SelectIcon", SelectIcon = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n, children: i,...a } = e;
	return /* @__PURE__ */ jsx(Primitive.span, {
		"aria-hidden": !0,
		...a,
		ref: t,
		children: i || "▼"
	});
});
SelectIcon.displayName = ICON_NAME;
var PORTAL_NAME$1 = "SelectPortal", SelectPortal = (e) => /* @__PURE__ */ jsx(Portal, {
	asChild: !0,
	...e
});
SelectPortal.displayName = PORTAL_NAME$1;
var CONTENT_NAME$3 = "SelectContent", SelectContent$1 = React$1.forwardRef((e, t) => {
	let n = useSelectContext(CONTENT_NAME$3, e.__scopeSelect), [i, a] = React$1.useState();
	if (useLayoutEffect2(() => {
		a(new DocumentFragment());
	}, []), !n.open) {
		let t = i;
		return t ? ReactDOM$2.createPortal(/* @__PURE__ */ jsx(SelectContentProvider, {
			scope: e.__scopeSelect,
			children: /* @__PURE__ */ jsx(Collection.Slot, {
				scope: e.__scopeSelect,
				children: /* @__PURE__ */ jsx("div", { children: e.children })
			})
		}), t) : null;
	}
	return /* @__PURE__ */ jsx(SelectContentImpl, {
		...e,
		ref: t
	});
});
SelectContent$1.displayName = CONTENT_NAME$3;
var CONTENT_MARGIN = 10, [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME$3), CONTENT_IMPL_NAME = "SelectContentImpl", Slot$1 = /* @__PURE__ */ createSlot("SelectContent.RemoveScroll"), SelectContentImpl = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n, position: i = "item-aligned", onCloseAutoFocus: a, onEscapeKeyDown: o, onPointerDownOutside: s, side: c, sideOffset: d, align: f, alignOffset: g, arrowPadding: y, collisionBoundary: b, collisionPadding: x, sticky: S, hideWhenDetached: C, avoidCollisions: w,...E } = e, O = useSelectContext(CONTENT_NAME$3, n), [A, j] = React$1.useState(null), [M, F] = React$1.useState(null), I = useComposedRefs$1(t, (e) => j(e)), [R, zv] = React$1.useState(null), [V, Bv] = React$1.useState(null), Vv = useCollection(n), [Hv, Uv] = React$1.useState(!1), Wv = React$1.useRef(!1);
	React$1.useEffect(() => {
		if (A) return hideOthers(A);
	}, [A]), useFocusGuards();
	let Gv = React$1.useCallback((e) => {
		let [t, ...n] = Vv().map((e) => e.ref.current), [i] = n.slice(-1), a = document.activeElement;
		for (let n of e) if (n === a || (n?.scrollIntoView({ block: "nearest" }), n === t && M && (M.scrollTop = 0), n === i && M && (M.scrollTop = M.scrollHeight), n?.focus(), document.activeElement !== a)) return;
	}, [Vv, M]), Kv = React$1.useCallback(() => Gv([R, A]), [
		Gv,
		R,
		A
	]);
	React$1.useEffect(() => {
		Hv && Kv();
	}, [Hv, Kv]);
	let { onOpenChange: q, triggerPointerDownPosRef: qv } = O;
	React$1.useEffect(() => {
		if (A) {
			let e = {
				x: 0,
				y: 0
			}, t = (t) => {
				e = {
					x: Math.abs(Math.round(t.pageX) - (qv.current?.x ?? 0)),
					y: Math.abs(Math.round(t.pageY) - (qv.current?.y ?? 0))
				};
			}, n = (n) => {
				e.x <= 10 && e.y <= 10 ? n.preventDefault() : A.contains(n.target) || q(!1), document.removeEventListener("pointermove", t), qv.current = null;
			};
			return qv.current !== null && (document.addEventListener("pointermove", t), document.addEventListener("pointerup", n, {
				capture: !0,
				once: !0
			})), () => {
				document.removeEventListener("pointermove", t), document.removeEventListener("pointerup", n, { capture: !0 });
			};
		}
	}, [
		A,
		q,
		qv
	]), React$1.useEffect(() => {
		let e = () => q(!1);
		return window.addEventListener("blur", e), window.addEventListener("resize", e), () => {
			window.removeEventListener("blur", e), window.removeEventListener("resize", e);
		};
	}, [q]);
	let [Jv, Yv] = useTypeaheadSearch((e) => {
		let t = Vv().filter((e) => !e.disabled), n = t.find((e) => e.ref.current === document.activeElement), i = findNextItem(t, e, n);
		i && setTimeout(() => i.ref.current.focus());
	}), Xv = React$1.useCallback((e, t, n) => {
		let i = !Wv.current && !n;
		(O.value !== void 0 && O.value === t || i) && (zv(e), i && (Wv.current = !0));
	}, [O.value]), Zv = React$1.useCallback(() => A?.focus(), [A]), Qv = React$1.useCallback((e, t, n) => {
		let i = !Wv.current && !n;
		(O.value !== void 0 && O.value === t || i) && Bv(e);
	}, [O.value]), $v = i === "popper" ? SelectPopperPosition : SelectItemAlignedPosition, ey = $v === SelectPopperPosition ? {
		side: c,
		sideOffset: d,
		align: f,
		alignOffset: g,
		arrowPadding: y,
		collisionBoundary: b,
		collisionPadding: x,
		sticky: S,
		hideWhenDetached: C,
		avoidCollisions: w
	} : {};
	return /* @__PURE__ */ jsx(SelectContentProvider, {
		scope: n,
		content: A,
		viewport: M,
		onViewportChange: F,
		itemRefCallback: Xv,
		selectedItem: R,
		onItemLeave: Zv,
		itemTextRefCallback: Qv,
		focusSelectedItem: Kv,
		selectedItemText: V,
		position: i,
		isPositioned: Hv,
		searchRef: Jv,
		children: /* @__PURE__ */ jsx(Combination_default, {
			as: Slot$1,
			allowPinchZoom: !0,
			children: /* @__PURE__ */ jsx(FocusScope, {
				asChild: !0,
				trapped: O.open,
				onMountAutoFocus: (e) => {
					e.preventDefault();
				},
				onUnmountAutoFocus: composeEventHandlers(a, (e) => {
					O.trigger?.focus({ preventScroll: !0 }), e.preventDefault();
				}),
				children: /* @__PURE__ */ jsx(DismissableLayer, {
					asChild: !0,
					disableOutsidePointerEvents: !0,
					onEscapeKeyDown: o,
					onPointerDownOutside: s,
					onFocusOutside: (e) => e.preventDefault(),
					onDismiss: () => O.onOpenChange(!1),
					children: /* @__PURE__ */ jsx($v, {
						role: "listbox",
						id: O.contentId,
						"data-state": O.open ? "open" : "closed",
						dir: O.dir,
						onContextMenu: (e) => e.preventDefault(),
						...E,
						...ey,
						onPlaced: () => Uv(!0),
						ref: I,
						style: {
							display: "flex",
							flexDirection: "column",
							outline: "none",
							...E.style
						},
						onKeyDown: composeEventHandlers(E.onKeyDown, (e) => {
							let t = e.ctrlKey || e.altKey || e.metaKey;
							if (e.key === "Tab" && e.preventDefault(), !t && e.key.length === 1 && Yv(e.key), [
								"ArrowUp",
								"ArrowDown",
								"Home",
								"End"
							].includes(e.key)) {
								let t = Vv().filter((e) => !e.disabled).map((e) => e.ref.current);
								if (["ArrowUp", "End"].includes(e.key) && (t = t.slice().reverse()), ["ArrowUp", "ArrowDown"].includes(e.key)) {
									let n = e.target, i = t.indexOf(n);
									t = t.slice(i + 1);
								}
								setTimeout(() => Gv(t)), e.preventDefault();
							}
						})
					})
				})
			})
		})
	});
});
SelectContentImpl.displayName = CONTENT_IMPL_NAME;
var ITEM_ALIGNED_POSITION_NAME = "SelectItemAlignedPosition", SelectItemAlignedPosition = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n, onPlaced: i,...a } = e, o = useSelectContext(CONTENT_NAME$3, n), s = useSelectContentContext(CONTENT_NAME$3, n), [c, d] = React$1.useState(null), [f, g] = React$1.useState(null), y = useComposedRefs$1(t, (e) => g(e)), b = useCollection(n), x = React$1.useRef(!1), S = React$1.useRef(!0), { viewport: C, selectedItem: w, selectedItemText: E, focusSelectedItem: O } = s, A = React$1.useCallback(() => {
		if (o.trigger && o.valueNode && c && f && C && w && E) {
			let e = o.trigger.getBoundingClientRect(), t = f.getBoundingClientRect(), n = o.valueNode.getBoundingClientRect(), a = E.getBoundingClientRect();
			if (o.dir !== "rtl") {
				let i = a.left - t.left, o = n.left - i, s = e.left - o, d = e.width + s, f = Math.max(d, t.width), g = window.innerWidth - CONTENT_MARGIN, y = clamp(o, [CONTENT_MARGIN, Math.max(CONTENT_MARGIN, g - f)]);
				c.style.minWidth = d + "px", c.style.left = y + "px";
			} else {
				let i = t.right - a.right, o = window.innerWidth - n.right - i, s = window.innerWidth - e.right - o, d = e.width + s, f = Math.max(d, t.width), g = window.innerWidth - CONTENT_MARGIN, y = clamp(o, [CONTENT_MARGIN, Math.max(CONTENT_MARGIN, g - f)]);
				c.style.minWidth = d + "px", c.style.right = y + "px";
			}
			let s = b(), d = window.innerHeight - CONTENT_MARGIN * 2, g = C.scrollHeight, y = window.getComputedStyle(f), S = parseInt(y.borderTopWidth, 10), O = parseInt(y.paddingTop, 10), A = parseInt(y.borderBottomWidth, 10), j = parseInt(y.paddingBottom, 10), M = S + O + g + j + A, F = Math.min(w.offsetHeight * 5, M), I = window.getComputedStyle(C), R = parseInt(I.paddingTop, 10), zv = parseInt(I.paddingBottom, 10), V = e.top + e.height / 2 - CONTENT_MARGIN, Bv = d - V, Vv = w.offsetHeight / 2, Hv = w.offsetTop + Vv, Uv = S + O + Hv, Wv = M - Uv;
			if (Uv <= V) {
				let e = s.length > 0 && w === s[s.length - 1].ref.current;
				c.style.bottom = "0px";
				let t = f.clientHeight - C.offsetTop - C.offsetHeight, n = Math.max(Bv, Vv + (e ? zv : 0) + t + A), i = Uv + n;
				c.style.height = i + "px";
			} else {
				let e = s.length > 0 && w === s[0].ref.current;
				c.style.top = "0px";
				let t = Math.max(V, S + C.offsetTop + (e ? R : 0) + Vv) + Wv;
				c.style.height = t + "px", C.scrollTop = Uv - V + C.offsetTop;
			}
			c.style.margin = `${CONTENT_MARGIN}px 0`, c.style.minHeight = F + "px", c.style.maxHeight = d + "px", i?.(), requestAnimationFrame(() => x.current = !0);
		}
	}, [
		b,
		o.trigger,
		o.valueNode,
		c,
		f,
		C,
		w,
		E,
		o.dir,
		i
	]);
	useLayoutEffect2(() => A(), [A]);
	let [j, M] = React$1.useState();
	useLayoutEffect2(() => {
		f && M(window.getComputedStyle(f).zIndex);
	}, [f]);
	let F = React$1.useCallback((e) => {
		e && S.current === !0 && (A(), O?.(), S.current = !1);
	}, [A, O]);
	return /* @__PURE__ */ jsx(SelectViewportProvider, {
		scope: n,
		contentWrapper: c,
		shouldExpandOnScrollRef: x,
		onScrollButtonChange: F,
		children: /* @__PURE__ */ jsx("div", {
			ref: d,
			style: {
				display: "flex",
				flexDirection: "column",
				position: "fixed",
				zIndex: j
			},
			children: /* @__PURE__ */ jsx(Primitive.div, {
				...a,
				ref: y,
				style: {
					boxSizing: "border-box",
					maxHeight: "100%",
					...a.style
				}
			})
		})
	});
});
SelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;
var POPPER_POSITION_NAME = "SelectPopperPosition", SelectPopperPosition = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n, align: i = "start", collisionPadding: a = CONTENT_MARGIN,...o } = e, s = usePopperScope(n);
	return /* @__PURE__ */ jsx(Content$1, {
		...s,
		...o,
		ref: t,
		align: i,
		collisionPadding: a,
		style: {
			boxSizing: "border-box",
			...o.style,
			"--radix-select-content-transform-origin": "var(--radix-popper-transform-origin)",
			"--radix-select-content-available-width": "var(--radix-popper-available-width)",
			"--radix-select-content-available-height": "var(--radix-popper-available-height)",
			"--radix-select-trigger-width": "var(--radix-popper-anchor-width)",
			"--radix-select-trigger-height": "var(--radix-popper-anchor-height)"
		}
	});
});
SelectPopperPosition.displayName = POPPER_POSITION_NAME;
var [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME$3, {}), VIEWPORT_NAME = "SelectViewport", SelectViewport = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n, nonce: i,...a } = e, o = useSelectContentContext(VIEWPORT_NAME, n), s = useSelectViewportContext(VIEWPORT_NAME, n), c = useComposedRefs$1(t, o.onViewportChange), d = React$1.useRef(0);
	return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("style", {
		dangerouslySetInnerHTML: { __html: "[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}" },
		nonce: i
	}), /* @__PURE__ */ jsx(Collection.Slot, {
		scope: n,
		children: /* @__PURE__ */ jsx(Primitive.div, {
			"data-radix-select-viewport": "",
			role: "presentation",
			...a,
			ref: c,
			style: {
				position: "relative",
				flex: 1,
				overflow: "hidden auto",
				...a.style
			},
			onScroll: composeEventHandlers(a.onScroll, (e) => {
				let t = e.currentTarget, { contentWrapper: n, shouldExpandOnScrollRef: i } = s;
				if (i?.current && n) {
					let e = Math.abs(d.current - t.scrollTop);
					if (e > 0) {
						let i = window.innerHeight - CONTENT_MARGIN * 2, a = parseFloat(n.style.minHeight), o = parseFloat(n.style.height), s = Math.max(a, o);
						if (s < i) {
							let a = s + e, o = Math.min(i, a), c = a - o;
							n.style.height = o + "px", n.style.bottom === "0px" && (t.scrollTop = c > 0 ? c : 0, n.style.justifyContent = "flex-end");
						}
					}
				}
				d.current = t.scrollTop;
			})
		})
	})] });
});
SelectViewport.displayName = VIEWPORT_NAME;
var GROUP_NAME$1 = "SelectGroup", [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME$1), SelectGroup = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n,...i } = e, a = useId$1();
	return /* @__PURE__ */ jsx(SelectGroupContextProvider, {
		scope: n,
		id: a,
		children: /* @__PURE__ */ jsx(Primitive.div, {
			role: "group",
			"aria-labelledby": a,
			...i,
			ref: t
		})
	});
});
SelectGroup.displayName = GROUP_NAME$1;
var LABEL_NAME$1 = "SelectLabel", SelectLabel = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n,...i } = e, a = useSelectGroupContext(LABEL_NAME$1, n);
	return /* @__PURE__ */ jsx(Primitive.div, {
		id: a.id,
		...i,
		ref: t
	});
});
SelectLabel.displayName = LABEL_NAME$1;
var ITEM_NAME$3 = "SelectItem", [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME$3), SelectItem$1 = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n, value: i, disabled: a = !1, textValue: o,...s } = e, c = useSelectContext(ITEM_NAME$3, n), d = useSelectContentContext(ITEM_NAME$3, n), f = c.value === i, [g, y] = React$1.useState(o ?? ""), [b, x] = React$1.useState(!1), S = useComposedRefs$1(t, (e) => d.itemRefCallback?.(e, i, a)), C = useId$1(), w = React$1.useRef("touch"), E = () => {
		a || (c.onValueChange(i), c.onOpenChange(!1));
	};
	if (i === "") throw Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");
	return /* @__PURE__ */ jsx(SelectItemContextProvider, {
		scope: n,
		value: i,
		disabled: a,
		textId: C,
		isSelected: f,
		onItemTextChange: React$1.useCallback((e) => {
			y((t) => t || (e?.textContent ?? "").trim());
		}, []),
		children: /* @__PURE__ */ jsx(Collection.ItemSlot, {
			scope: n,
			value: i,
			disabled: a,
			textValue: g,
			children: /* @__PURE__ */ jsx(Primitive.div, {
				role: "option",
				"aria-labelledby": C,
				"data-highlighted": b ? "" : void 0,
				"aria-selected": f && b,
				"data-state": f ? "checked" : "unchecked",
				"aria-disabled": a || void 0,
				"data-disabled": a ? "" : void 0,
				tabIndex: a ? void 0 : -1,
				...s,
				ref: S,
				onFocus: composeEventHandlers(s.onFocus, () => x(!0)),
				onBlur: composeEventHandlers(s.onBlur, () => x(!1)),
				onClick: composeEventHandlers(s.onClick, () => {
					w.current !== "mouse" && E();
				}),
				onPointerUp: composeEventHandlers(s.onPointerUp, () => {
					w.current === "mouse" && E();
				}),
				onPointerDown: composeEventHandlers(s.onPointerDown, (e) => {
					w.current = e.pointerType;
				}),
				onPointerMove: composeEventHandlers(s.onPointerMove, (e) => {
					w.current = e.pointerType, a ? d.onItemLeave?.() : w.current === "mouse" && e.currentTarget.focus({ preventScroll: !0 });
				}),
				onPointerLeave: composeEventHandlers(s.onPointerLeave, (e) => {
					e.currentTarget === document.activeElement && d.onItemLeave?.();
				}),
				onKeyDown: composeEventHandlers(s.onKeyDown, (e) => {
					d.searchRef?.current !== "" && e.key === " " || (SELECTION_KEYS.includes(e.key) && E(), e.key === " " && e.preventDefault());
				})
			})
		})
	});
});
SelectItem$1.displayName = ITEM_NAME$3;
var ITEM_TEXT_NAME = "SelectItemText", SelectItemText = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n, className: i, style: a,...o } = e, s = useSelectContext(ITEM_TEXT_NAME, n), c = useSelectContentContext(ITEM_TEXT_NAME, n), d = useSelectItemContext(ITEM_TEXT_NAME, n), f = useSelectNativeOptionsContext(ITEM_TEXT_NAME, n), [g, y] = React$1.useState(null), b = useComposedRefs$1(t, (e) => y(e), d.onItemTextChange, (e) => c.itemTextRefCallback?.(e, d.value, d.disabled)), x = g?.textContent, S = React$1.useMemo(() => /* @__PURE__ */ jsx("option", {
		value: d.value,
		disabled: d.disabled,
		children: x
	}, d.value), [
		d.disabled,
		d.value,
		x
	]), { onNativeOptionAdd: C, onNativeOptionRemove: w } = f;
	return useLayoutEffect2(() => (C(S), () => w(S)), [
		C,
		w,
		S
	]), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Primitive.span, {
		id: d.textId,
		...o,
		ref: b
	}), d.isSelected && s.valueNode && !s.valueNodeHasChildren ? ReactDOM$2.createPortal(o.children, s.valueNode) : null] });
});
SelectItemText.displayName = ITEM_TEXT_NAME;
var ITEM_INDICATOR_NAME = "SelectItemIndicator", SelectItemIndicator = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n,...i } = e;
	return useSelectItemContext(ITEM_INDICATOR_NAME, n).isSelected ? /* @__PURE__ */ jsx(Primitive.span, {
		"aria-hidden": !0,
		...i,
		ref: t
	}) : null;
});
SelectItemIndicator.displayName = ITEM_INDICATOR_NAME;
var SCROLL_UP_BUTTON_NAME = "SelectScrollUpButton", SelectScrollUpButton$1 = React$1.forwardRef((e, t) => {
	let n = useSelectContentContext(SCROLL_UP_BUTTON_NAME, e.__scopeSelect), i = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, e.__scopeSelect), [a, o] = React$1.useState(!1), s = useComposedRefs$1(t, i.onScrollButtonChange);
	return useLayoutEffect2(() => {
		if (n.viewport && n.isPositioned) {
			let e = function() {
				let e = t.scrollTop > 0;
				o(e);
			}, t = n.viewport;
			return e(), t.addEventListener("scroll", e), () => t.removeEventListener("scroll", e);
		}
	}, [n.viewport, n.isPositioned]), a ? /* @__PURE__ */ jsx(SelectScrollButtonImpl, {
		...e,
		ref: s,
		onAutoScroll: () => {
			let { viewport: e, selectedItem: t } = n;
			e && t && (e.scrollTop -= t.offsetHeight);
		}
	}) : null;
});
SelectScrollUpButton$1.displayName = SCROLL_UP_BUTTON_NAME;
var SCROLL_DOWN_BUTTON_NAME = "SelectScrollDownButton", SelectScrollDownButton$1 = React$1.forwardRef((e, t) => {
	let n = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, e.__scopeSelect), i = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, e.__scopeSelect), [a, o] = React$1.useState(!1), s = useComposedRefs$1(t, i.onScrollButtonChange);
	return useLayoutEffect2(() => {
		if (n.viewport && n.isPositioned) {
			let e = function() {
				let e = t.scrollHeight - t.clientHeight, n = Math.ceil(t.scrollTop) < e;
				o(n);
			}, t = n.viewport;
			return e(), t.addEventListener("scroll", e), () => t.removeEventListener("scroll", e);
		}
	}, [n.viewport, n.isPositioned]), a ? /* @__PURE__ */ jsx(SelectScrollButtonImpl, {
		...e,
		ref: s,
		onAutoScroll: () => {
			let { viewport: e, selectedItem: t } = n;
			e && t && (e.scrollTop += t.offsetHeight);
		}
	}) : null;
});
SelectScrollDownButton$1.displayName = SCROLL_DOWN_BUTTON_NAME;
var SelectScrollButtonImpl = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n, onAutoScroll: i,...a } = e, o = useSelectContentContext("SelectScrollButton", n), s = React$1.useRef(null), c = useCollection(n), d = React$1.useCallback(() => {
		s.current !== null && (window.clearInterval(s.current), s.current = null);
	}, []);
	return React$1.useEffect(() => () => d(), [d]), useLayoutEffect2(() => {
		c().find((e) => e.ref.current === document.activeElement)?.ref.current?.scrollIntoView({ block: "nearest" });
	}, [c]), /* @__PURE__ */ jsx(Primitive.div, {
		"aria-hidden": !0,
		...a,
		ref: t,
		style: {
			flexShrink: 0,
			...a.style
		},
		onPointerDown: composeEventHandlers(a.onPointerDown, () => {
			s.current === null && (s.current = window.setInterval(i, 50));
		}),
		onPointerMove: composeEventHandlers(a.onPointerMove, () => {
			o.onItemLeave?.(), s.current === null && (s.current = window.setInterval(i, 50));
		}),
		onPointerLeave: composeEventHandlers(a.onPointerLeave, () => {
			d();
		})
	});
}), SEPARATOR_NAME$1 = "SelectSeparator", SelectSeparator = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n,...i } = e;
	return /* @__PURE__ */ jsx(Primitive.div, {
		"aria-hidden": !0,
		...i,
		ref: t
	});
});
SelectSeparator.displayName = SEPARATOR_NAME$1;
var ARROW_NAME$1 = "SelectArrow", SelectArrow = React$1.forwardRef((e, t) => {
	let { __scopeSelect: n,...i } = e, a = usePopperScope(n), o = useSelectContext(ARROW_NAME$1, n), s = useSelectContentContext(ARROW_NAME$1, n);
	return o.open && s.position === "popper" ? /* @__PURE__ */ jsx(Arrow, {
		...a,
		...i,
		ref: t
	}) : null;
});
SelectArrow.displayName = ARROW_NAME$1;
var BUBBLE_INPUT_NAME$1 = "SelectBubbleInput", SelectBubbleInput = React$1.forwardRef(({ __scopeSelect: e, value: t,...n }, i) => {
	let a = React$1.useRef(null), o = useComposedRefs$1(i, a), s = usePrevious$1(t);
	return React$1.useEffect(() => {
		let e = a.current;
		if (!e) return;
		let n = window.HTMLSelectElement.prototype, i = Object.getOwnPropertyDescriptor(n, "value").set;
		if (s !== t && i) {
			let n = new Event("change", { bubbles: !0 });
			i.call(e, t), e.dispatchEvent(n);
		}
	}, [s, t]), /* @__PURE__ */ jsx(Primitive.select, {
		...n,
		style: {
			...VISUALLY_HIDDEN_STYLES,
			...n.style
		},
		ref: o,
		defaultValue: t
	});
});
SelectBubbleInput.displayName = BUBBLE_INPUT_NAME$1;
function shouldShowPlaceholder(e) {
	return e === "" || e === void 0;
}
function useTypeaheadSearch(e) {
	let t = useCallbackRef(e), n = React$1.useRef(""), i = React$1.useRef(0), a = React$1.useCallback((e) => {
		let a = n.current + e;
		t(a), (function e(t) {
			n.current = t, window.clearTimeout(i.current), t !== "" && (i.current = window.setTimeout(() => e(""), 1e3));
		})(a);
	}, [t]), o = React$1.useCallback(() => {
		n.current = "", window.clearTimeout(i.current);
	}, []);
	return React$1.useEffect(() => () => window.clearTimeout(i.current), []), [
		n,
		a,
		o
	];
}
function findNextItem(e, t, n) {
	let i = t.length > 1 && Array.from(t).every((e) => e === t[0]) ? t[0] : t, a = n ? e.indexOf(n) : -1, o = wrapArray(e, Math.max(a, 0));
	i.length === 1 && (o = o.filter((e) => e !== n));
	let s = o.find((e) => e.textValue.toLowerCase().startsWith(i.toLowerCase()));
	return s === n ? void 0 : s;
}
function wrapArray(e, t) {
	return e.map((n, i) => e[(t + i) % e.length]);
}
var Root2$3 = Select$1, Trigger$2 = SelectTrigger$1, Value = SelectValue$1, Icon = SelectIcon, Portal$1 = SelectPortal, Content2$1 = SelectContent$1, Viewport = SelectViewport, Item = SelectItem$1, ItemText = SelectItemText, ItemIndicator = SelectItemIndicator, ScrollUpButton = SelectScrollUpButton$1, ScrollDownButton = SelectScrollDownButton$1;
function Select({ ...e }) {
	return /* @__PURE__ */ jsx(Root2$3, {
		"data-slot": "select",
		...e
	});
}
function SelectValue({ ...e }) {
	return /* @__PURE__ */ jsx(Value, {
		"data-slot": "select-value",
		...e
	});
}
function SelectTrigger({ className: e, size: t = "default", children: n,...i }) {
	return /* @__PURE__ */ jsxs(Trigger$2, {
		"data-slot": "select-trigger",
		"data-size": t,
		className: cn("border-input data-placeholder:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-input/30 hover:bg-input/50 flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-md border px-3 py-2 text-sm shadow-sm outline-none transition-[color,box-shadow] focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", e),
		...i,
		children: [n, /* @__PURE__ */ jsx(Icon, {
			asChild: !0,
			children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" })
		})]
	});
}
function SelectContent({ className: e, children: t, position: n = "popper", align: i = "center",...a }) {
	let { container: o } = useLaboratory();
	return /* @__PURE__ */ jsx(Portal$1, {
		container: o,
		children: /* @__PURE__ */ jsxs(Content2$1, {
			"data-slot": "select-content",
			className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-[var(--radix-select-content-available-height)] min-w-[8rem] origin-[var(--radix-select-content-transform-origin)] overflow-y-auto overflow-x-hidden rounded-md border shadow-md", n === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", e),
			position: n,
			align: i,
			...a,
			children: [
				/* @__PURE__ */ jsx(SelectScrollUpButton, {}),
				/* @__PURE__ */ jsx(Viewport, {
					className: cn("p-1", n === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),
					children: t
				}),
				/* @__PURE__ */ jsx(SelectScrollDownButton, {})
			]
		})
	});
}
function SelectItem({ className: e, children: t,...n }) {
	return /* @__PURE__ */ jsxs(Item, {
		"data-slot": "select-item",
		className: cn("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 data-disabled:pointer-events-none data-disabled:opacity-50 relative flex w-full cursor-default select-none items-center gap-2 rounded-sm py-1.5 pl-2 pr-8 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", e),
		...n,
		children: [/* @__PURE__ */ jsx("span", {
			className: "absolute right-2 flex size-3.5 items-center justify-center",
			children: /* @__PURE__ */ jsx(ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) })
		}), /* @__PURE__ */ jsx(ItemText, { children: t })]
	});
}
function SelectScrollUpButton({ className: e,...t }) {
	return /* @__PURE__ */ jsx(ScrollUpButton, {
		"data-slot": "select-scroll-up-button",
		className: cn("flex cursor-default items-center justify-center py-1", e),
		...t,
		children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-4" })
	});
}
function SelectScrollDownButton({ className: e,...t }) {
	return /* @__PURE__ */ jsx(ScrollDownButton, {
		"data-slot": "select-scroll-down-button",
		className: cn("flex cursor-default items-center justify-center py-1", e),
		...t,
		children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4" })
	});
}
function Spinner({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Loader2Icon, {
		role: "status",
		"aria-label": "Loading",
		className: cn("size-4 animate-spin", e),
		...t
	});
}
var TABS_NAME = "Tabs", [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [createRovingFocusGroupScope]), useRovingFocusGroupScope$1 = createRovingFocusGroupScope(), [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME), Tabs$2 = React$1.forwardRef((e, t) => {
	let { __scopeTabs: n, value: i, onValueChange: a, defaultValue: o, orientation: s = "horizontal", dir: c, activationMode: d = "automatic",...f } = e, g = useDirection(c), [y, b] = useControllableState({
		prop: i,
		onChange: a,
		defaultProp: o ?? "",
		caller: TABS_NAME
	});
	return /* @__PURE__ */ jsx(TabsProvider, {
		scope: n,
		baseId: useId$1(),
		value: y,
		onValueChange: b,
		orientation: s,
		dir: g,
		activationMode: d,
		children: /* @__PURE__ */ jsx(Primitive.div, {
			dir: g,
			"data-orientation": s,
			...f,
			ref: t
		})
	});
});
Tabs$2.displayName = TABS_NAME;
var TAB_LIST_NAME = "TabsList", TabsList$1 = React$1.forwardRef((e, t) => {
	let { __scopeTabs: n, loop: i = !0,...a } = e, o = useTabsContext(TAB_LIST_NAME, n), s = useRovingFocusGroupScope$1(n);
	return /* @__PURE__ */ jsx(Root$5, {
		asChild: !0,
		...s,
		orientation: o.orientation,
		dir: o.dir,
		loop: i,
		children: /* @__PURE__ */ jsx(Primitive.div, {
			role: "tablist",
			"aria-orientation": o.orientation,
			...a,
			ref: t
		})
	});
});
TabsList$1.displayName = TAB_LIST_NAME;
var TRIGGER_NAME$2 = "TabsTrigger", TabsTrigger$1 = React$1.forwardRef((e, t) => {
	let { __scopeTabs: n, value: i, disabled: a = !1,...o } = e, s = useTabsContext(TRIGGER_NAME$2, n), c = useRovingFocusGroupScope$1(n), d = makeTriggerId(s.baseId, i), f = makeContentId(s.baseId, i), g = i === s.value;
	return /* @__PURE__ */ jsx(Item$1, {
		asChild: !0,
		...c,
		focusable: !a,
		active: g,
		children: /* @__PURE__ */ jsx(Primitive.button, {
			type: "button",
			role: "tab",
			"aria-selected": g,
			"aria-controls": f,
			"data-state": g ? "active" : "inactive",
			"data-disabled": a ? "" : void 0,
			disabled: a,
			id: d,
			...o,
			ref: t,
			onMouseDown: composeEventHandlers(e.onMouseDown, (e) => {
				!a && e.button === 0 && e.ctrlKey === !1 ? s.onValueChange(i) : e.preventDefault();
			}),
			onKeyDown: composeEventHandlers(e.onKeyDown, (e) => {
				[" ", "Enter"].includes(e.key) && s.onValueChange(i);
			}),
			onFocus: composeEventHandlers(e.onFocus, () => {
				let e = s.activationMode !== "manual";
				!g && !a && e && s.onValueChange(i);
			})
		})
	});
});
TabsTrigger$1.displayName = TRIGGER_NAME$2;
var CONTENT_NAME$2 = "TabsContent", TabsContent$1 = React$1.forwardRef((e, t) => {
	let { __scopeTabs: n, value: i, forceMount: a, children: o,...s } = e, c = useTabsContext(CONTENT_NAME$2, n), d = makeTriggerId(c.baseId, i), f = makeContentId(c.baseId, i), g = i === c.value, y = React$1.useRef(g);
	return React$1.useEffect(() => {
		let e = requestAnimationFrame(() => y.current = !1);
		return () => cancelAnimationFrame(e);
	}, []), /* @__PURE__ */ jsx(Presence, {
		present: a || g,
		children: ({ present: n }) => /* @__PURE__ */ jsx(Primitive.div, {
			"data-state": g ? "active" : "inactive",
			"data-orientation": c.orientation,
			role: "tabpanel",
			"aria-labelledby": d,
			hidden: !n,
			id: f,
			tabIndex: 0,
			...s,
			ref: t,
			style: {
				...e.style,
				animationDuration: y.current ? "0s" : void 0
			},
			children: n && o
		})
	});
});
TabsContent$1.displayName = CONTENT_NAME$2;
function makeTriggerId(e, t) {
	return `${e}-trigger-${t}`;
}
function makeContentId(e, t) {
	return `${e}-content-${t}`;
}
var Root2$2 = Tabs$2, List = TabsList$1, Trigger$1 = TabsTrigger$1, Content = TabsContent$1;
function Tabs({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Root2$2, {
		"data-slot": "tabs",
		className: cn("flex flex-col", e),
		...t
	});
}
function TabsList({ className: e,...t }) {
	return /* @__PURE__ */ jsx(List, {
		"data-slot": "tabs-list",
		className: cn("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]", e),
		...t
	});
}
function TabsTrigger({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Trigger$1, {
		"data-slot": "tabs-trigger",
		className: cn("data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring data-[state=active]:border-input data-[state=active]:bg-input/30 text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-md border border-transparent px-2 py-1 text-sm font-medium transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", e),
		...t
	});
}
function TabsContent({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Content, {
		"data-slot": "tabs-content",
		className: cn("flex-1 outline-none", e),
		...t
	});
}
var NAME = "Toggle", Toggle$1 = React$1.forwardRef((e, t) => {
	let { pressed: n, defaultPressed: i, onPressedChange: a,...o } = e, [s, c] = useControllableState({
		prop: n,
		onChange: a,
		defaultProp: i ?? !1,
		caller: NAME
	});
	return /* @__PURE__ */ jsx(Primitive.button, {
		type: "button",
		"aria-pressed": s,
		"data-state": s ? "on" : "off",
		"data-disabled": e.disabled ? "" : void 0,
		...o,
		ref: t,
		onClick: composeEventHandlers(e.onClick, () => {
			e.disabled || c(!s);
		})
	});
});
Toggle$1.displayName = NAME;
var Root = Toggle$1, toggleVariants$1 = cva("inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap", {
	variants: {
		variant: {
			default: "bg-transparent",
			outline: "border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground"
		},
		size: {
			default: "h-9 px-2 min-w-9",
			sm: "h-8 px-1.5 min-w-8",
			lg: "h-10 px-2.5 min-w-10"
		}
	},
	defaultVariants: {
		variant: "default",
		size: "default"
	}
});
function Toggle({ className: e, variant: t, size: n,...i }) {
	return /* @__PURE__ */ jsx(Root, {
		"data-slot": "toggle",
		className: cn(toggleVariants$1({
			variant: t,
			size: n,
			className: e
		})),
		...i
	});
}
var CHECKBOX_NAME = "Checkbox", [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME), [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);
function CheckboxProvider(e) {
	let { __scopeCheckbox: t, checked: n, children: i, defaultChecked: a, disabled: o, form: s, name: c, onCheckedChange: d, required: f, value: g = "on", internal_do_not_use_render: y } = e, [b, x] = useControllableState({
		prop: n,
		defaultProp: a ?? !1,
		onChange: d,
		caller: CHECKBOX_NAME
	}), [S, C] = React$1.useState(null), [w, E] = React$1.useState(null), O = React$1.useRef(!1), A = S ? !!s || !!S.closest("form") : !0, j = {
		checked: b,
		disabled: o,
		setChecked: x,
		control: S,
		setControl: C,
		name: c,
		form: s,
		value: g,
		hasConsumerStoppedPropagationRef: O,
		required: f,
		defaultChecked: isIndeterminate(a) ? !1 : a,
		isFormControl: A,
		bubbleInput: w,
		setBubbleInput: E
	};
	return /* @__PURE__ */ jsx(CheckboxProviderImpl, {
		scope: t,
		...j,
		children: isFunction(y) ? y(j) : i
	});
}
var TRIGGER_NAME$1 = "CheckboxTrigger", CheckboxTrigger = React$1.forwardRef(({ __scopeCheckbox: e, onKeyDown: t, onClick: n,...i }, a) => {
	let { control: o, value: s, disabled: c, checked: d, required: f, setControl: g, setChecked: y, hasConsumerStoppedPropagationRef: b, isFormControl: x, bubbleInput: S } = useCheckboxContext(TRIGGER_NAME$1, e), C = useComposedRefs$1(a, g), w = React$1.useRef(d);
	return React$1.useEffect(() => {
		let e = o?.form;
		if (e) {
			let t = () => y(w.current);
			return e.addEventListener("reset", t), () => e.removeEventListener("reset", t);
		}
	}, [o, y]), /* @__PURE__ */ jsx(Primitive.button, {
		type: "button",
		role: "checkbox",
		"aria-checked": isIndeterminate(d) ? "mixed" : d,
		"aria-required": f,
		"data-state": getState(d),
		"data-disabled": c ? "" : void 0,
		disabled: c,
		value: s,
		...i,
		ref: C,
		onKeyDown: composeEventHandlers(t, (e) => {
			e.key === "Enter" && e.preventDefault();
		}),
		onClick: composeEventHandlers(n, (e) => {
			y((e) => isIndeterminate(e) ? !0 : !e), S && x && (b.current = e.isPropagationStopped(), b.current || e.stopPropagation());
		})
	});
});
CheckboxTrigger.displayName = TRIGGER_NAME$1;
var Checkbox$1 = React$1.forwardRef((e, t) => {
	let { __scopeCheckbox: n, name: i, checked: a, defaultChecked: o, required: s, disabled: c, value: d, onCheckedChange: f, form: g,...y } = e;
	return /* @__PURE__ */ jsx(CheckboxProvider, {
		__scopeCheckbox: n,
		checked: a,
		defaultChecked: o,
		disabled: c,
		required: s,
		onCheckedChange: f,
		name: i,
		form: g,
		value: d,
		internal_do_not_use_render: ({ isFormControl: e }) => /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(CheckboxTrigger, {
			...y,
			ref: t,
			__scopeCheckbox: n
		}), e && /* @__PURE__ */ jsx(CheckboxBubbleInput, { __scopeCheckbox: n })] })
	});
});
Checkbox$1.displayName = CHECKBOX_NAME;
var INDICATOR_NAME$1 = "CheckboxIndicator", CheckboxIndicator = React$1.forwardRef((e, t) => {
	let { __scopeCheckbox: n, forceMount: i,...a } = e, o = useCheckboxContext(INDICATOR_NAME$1, n);
	return /* @__PURE__ */ jsx(Presence, {
		present: i || isIndeterminate(o.checked) || o.checked === !0,
		children: /* @__PURE__ */ jsx(Primitive.span, {
			"data-state": getState(o.checked),
			"data-disabled": o.disabled ? "" : void 0,
			...a,
			ref: t,
			style: {
				pointerEvents: "none",
				...e.style
			}
		})
	});
});
CheckboxIndicator.displayName = INDICATOR_NAME$1;
var BUBBLE_INPUT_NAME = "CheckboxBubbleInput", CheckboxBubbleInput = React$1.forwardRef(({ __scopeCheckbox: e,...t }, n) => {
	let { control: i, hasConsumerStoppedPropagationRef: a, checked: o, defaultChecked: s, required: c, disabled: d, name: f, value: g, form: y, bubbleInput: b, setBubbleInput: x } = useCheckboxContext(BUBBLE_INPUT_NAME, e), S = useComposedRefs$1(n, x), C = usePrevious$1(o), w = useSize(i);
	React$1.useEffect(() => {
		let e = b;
		if (!e) return;
		let t = window.HTMLInputElement.prototype, n = Object.getOwnPropertyDescriptor(t, "checked").set, i = !a.current;
		if (C !== o && n) {
			let t = new Event("click", { bubbles: i });
			e.indeterminate = isIndeterminate(o), n.call(e, isIndeterminate(o) ? !1 : o), e.dispatchEvent(t);
		}
	}, [
		b,
		C,
		o,
		a
	]);
	let E = React$1.useRef(isIndeterminate(o) ? !1 : o);
	return /* @__PURE__ */ jsx(Primitive.input, {
		type: "checkbox",
		"aria-hidden": !0,
		defaultChecked: s ?? E.current,
		required: c,
		disabled: d,
		name: f,
		value: g,
		form: y,
		...t,
		tabIndex: -1,
		ref: S,
		style: {
			...t.style,
			...w,
			position: "absolute",
			pointerEvents: "none",
			opacity: 0,
			margin: 0,
			transform: "translateX(-100%)"
		}
	});
});
CheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;
function isFunction(e) {
	return typeof e == "function";
}
function isIndeterminate(e) {
	return e === "indeterminate";
}
function getState(e) {
	return isIndeterminate(e) ? "indeterminate" : e ? "checked" : "unchecked";
}
var CONTEXT_MENU_NAME = "ContextMenu", [createContextMenuContext, createContextMenuScope] = createContextScope(CONTEXT_MENU_NAME, [createMenuScope]), useMenuScope = createMenuScope(), [ContextMenuProvider, useContextMenuContext] = createContextMenuContext(CONTEXT_MENU_NAME), ContextMenu$1 = (e) => {
	let { __scopeContextMenu: t, children: n, onOpenChange: i, dir: a, modal: o = !0 } = e, [s, c] = React$1.useState(!1), d = useMenuScope(t), f = useCallbackRef(i), g = React$1.useCallback((e) => {
		c(e), f(e);
	}, [f]);
	return /* @__PURE__ */ jsx(ContextMenuProvider, {
		scope: t,
		open: s,
		onOpenChange: g,
		modal: o,
		children: /* @__PURE__ */ jsx(Root3$1, {
			...d,
			dir: a,
			open: s,
			onOpenChange: g,
			modal: o,
			children: n
		})
	});
};
ContextMenu$1.displayName = CONTEXT_MENU_NAME;
var TRIGGER_NAME = "ContextMenuTrigger", ContextMenuTrigger$1 = React$1.forwardRef((e, t) => {
	let { __scopeContextMenu: n, disabled: i = !1,...a } = e, o = useContextMenuContext(TRIGGER_NAME, n), s = useMenuScope(n), c = React$1.useRef({
		x: 0,
		y: 0
	}), d = React$1.useRef({ getBoundingClientRect: () => DOMRect.fromRect({
		width: 0,
		height: 0,
		...c.current
	}) }), f = React$1.useRef(0), g = React$1.useCallback(() => window.clearTimeout(f.current), []), y = (e) => {
		c.current = {
			x: e.clientX,
			y: e.clientY
		}, o.onOpenChange(!0);
	};
	return React$1.useEffect(() => g, [g]), React$1.useEffect(() => void (i && g()), [i, g]), /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Anchor2, {
		...s,
		virtualRef: d
	}), /* @__PURE__ */ jsx(Primitive.span, {
		"data-state": o.open ? "open" : "closed",
		"data-disabled": i ? "" : void 0,
		...a,
		ref: t,
		style: {
			WebkitTouchCallout: "none",
			...e.style
		},
		onContextMenu: i ? e.onContextMenu : composeEventHandlers(e.onContextMenu, (e) => {
			g(), y(e), e.preventDefault();
		}),
		onPointerDown: i ? e.onPointerDown : composeEventHandlers(e.onPointerDown, whenTouchOrPen((e) => {
			g(), f.current = window.setTimeout(() => y(e), 700);
		})),
		onPointerMove: i ? e.onPointerMove : composeEventHandlers(e.onPointerMove, whenTouchOrPen(g)),
		onPointerCancel: i ? e.onPointerCancel : composeEventHandlers(e.onPointerCancel, whenTouchOrPen(g)),
		onPointerUp: i ? e.onPointerUp : composeEventHandlers(e.onPointerUp, whenTouchOrPen(g))
	})] });
});
ContextMenuTrigger$1.displayName = TRIGGER_NAME;
var PORTAL_NAME = "ContextMenuPortal", ContextMenuPortal = (e) => {
	let { __scopeContextMenu: t,...n } = e, i = useMenuScope(t);
	return /* @__PURE__ */ jsx(Portal$3, {
		...i,
		...n
	});
};
ContextMenuPortal.displayName = PORTAL_NAME;
var CONTENT_NAME$1 = "ContextMenuContent", ContextMenuContent$1 = React$1.forwardRef((e, t) => {
	let { __scopeContextMenu: n,...i } = e, a = useContextMenuContext(CONTENT_NAME$1, n), o = useMenuScope(n), s = React$1.useRef(!1);
	return /* @__PURE__ */ jsx(Content2$5, {
		...o,
		...i,
		ref: t,
		side: "right",
		sideOffset: 2,
		align: "start",
		onCloseAutoFocus: (t) => {
			e.onCloseAutoFocus?.(t), !t.defaultPrevented && s.current && t.preventDefault(), s.current = !1;
		},
		onInteractOutside: (t) => {
			e.onInteractOutside?.(t), !t.defaultPrevented && !a.modal && (s.current = !0);
		},
		style: {
			...e.style,
			"--radix-context-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
			"--radix-context-menu-content-available-width": "var(--radix-popper-available-width)",
			"--radix-context-menu-content-available-height": "var(--radix-popper-available-height)",
			"--radix-context-menu-trigger-width": "var(--radix-popper-anchor-width)",
			"--radix-context-menu-trigger-height": "var(--radix-popper-anchor-height)"
		}
	});
});
ContextMenuContent$1.displayName = CONTENT_NAME$1;
var GROUP_NAME = "ContextMenuGroup", ContextMenuGroup = React$1.forwardRef((e, t) => {
	let { __scopeContextMenu: n,...i } = e, a = useMenuScope(n);
	return /* @__PURE__ */ jsx(Group, {
		...a,
		...i,
		ref: t
	});
});
ContextMenuGroup.displayName = GROUP_NAME;
var LABEL_NAME = "ContextMenuLabel", ContextMenuLabel = React$1.forwardRef((e, t) => {
	let { __scopeContextMenu: n,...i } = e, a = useMenuScope(n);
	return /* @__PURE__ */ jsx(Label$2, {
		...a,
		...i,
		ref: t
	});
});
ContextMenuLabel.displayName = LABEL_NAME;
var ITEM_NAME$2 = "ContextMenuItem", ContextMenuItem$1 = React$1.forwardRef((e, t) => {
	let { __scopeContextMenu: n,...i } = e, a = useMenuScope(n);
	return /* @__PURE__ */ jsx(Item2$3, {
		...a,
		...i,
		ref: t
	});
});
ContextMenuItem$1.displayName = ITEM_NAME$2;
var CHECKBOX_ITEM_NAME = "ContextMenuCheckboxItem", ContextMenuCheckboxItem = React$1.forwardRef((e, t) => {
	let { __scopeContextMenu: n,...i } = e, a = useMenuScope(n);
	return /* @__PURE__ */ jsx(CheckboxItem, {
		...a,
		...i,
		ref: t
	});
});
ContextMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
var RADIO_GROUP_NAME = "ContextMenuRadioGroup", ContextMenuRadioGroup = React$1.forwardRef((e, t) => {
	let { __scopeContextMenu: n,...i } = e, a = useMenuScope(n);
	return /* @__PURE__ */ jsx(RadioGroup, {
		...a,
		...i,
		ref: t
	});
});
ContextMenuRadioGroup.displayName = RADIO_GROUP_NAME;
var RADIO_ITEM_NAME = "ContextMenuRadioItem", ContextMenuRadioItem = React$1.forwardRef((e, t) => {
	let { __scopeContextMenu: n,...i } = e, a = useMenuScope(n);
	return /* @__PURE__ */ jsx(RadioItem, {
		...a,
		...i,
		ref: t
	});
});
ContextMenuRadioItem.displayName = RADIO_ITEM_NAME;
var INDICATOR_NAME = "ContextMenuItemIndicator", ContextMenuItemIndicator = React$1.forwardRef((e, t) => {
	let { __scopeContextMenu: n,...i } = e, a = useMenuScope(n);
	return /* @__PURE__ */ jsx(ItemIndicator$1, {
		...a,
		...i,
		ref: t
	});
});
ContextMenuItemIndicator.displayName = INDICATOR_NAME;
var SEPARATOR_NAME = "ContextMenuSeparator", ContextMenuSeparator = React$1.forwardRef((e, t) => {
	let { __scopeContextMenu: n,...i } = e, a = useMenuScope(n);
	return /* @__PURE__ */ jsx(Separator, {
		...a,
		...i,
		ref: t
	});
});
ContextMenuSeparator.displayName = SEPARATOR_NAME;
var ARROW_NAME = "ContextMenuArrow", ContextMenuArrow = React$1.forwardRef((e, t) => {
	let { __scopeContextMenu: n,...i } = e, a = useMenuScope(n);
	return /* @__PURE__ */ jsx(Arrow2$1, {
		...a,
		...i,
		ref: t
	});
});
ContextMenuArrow.displayName = ARROW_NAME;
var SUB_NAME = "ContextMenuSub", ContextMenuSub = (e) => {
	let { __scopeContextMenu: t, children: n, onOpenChange: i, open: a, defaultOpen: o } = e, s = useMenuScope(t), [c, d] = useControllableState({
		prop: a,
		defaultProp: o ?? !1,
		onChange: i,
		caller: SUB_NAME
	});
	return /* @__PURE__ */ jsx(Sub, {
		...s,
		open: c,
		onOpenChange: d,
		children: n
	});
};
ContextMenuSub.displayName = SUB_NAME;
var SUB_TRIGGER_NAME = "ContextMenuSubTrigger", ContextMenuSubTrigger = React$1.forwardRef((e, t) => {
	let { __scopeContextMenu: n,...i } = e, a = useMenuScope(n);
	return /* @__PURE__ */ jsx(SubTrigger, {
		...a,
		...i,
		ref: t
	});
});
ContextMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
var SUB_CONTENT_NAME = "ContextMenuSubContent", ContextMenuSubContent = React$1.forwardRef((e, t) => {
	let { __scopeContextMenu: n,...i } = e, a = useMenuScope(n);
	return /* @__PURE__ */ jsx(SubContent, {
		...a,
		...i,
		ref: t,
		style: {
			...e.style,
			"--radix-context-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
			"--radix-context-menu-content-available-width": "var(--radix-popper-available-width)",
			"--radix-context-menu-content-available-height": "var(--radix-popper-available-height)",
			"--radix-context-menu-trigger-width": "var(--radix-popper-anchor-width)",
			"--radix-context-menu-trigger-height": "var(--radix-popper-anchor-height)"
		}
	});
});
ContextMenuSubContent.displayName = SUB_CONTENT_NAME;
function whenTouchOrPen(e) {
	return (t) => t.pointerType === "mouse" ? void 0 : e(t);
}
var Root2$1 = ContextMenu$1, Trigger = ContextMenuTrigger$1, Portal2 = ContextMenuPortal, Content2 = ContextMenuContent$1, Item2$1 = ContextMenuItem$1, TOGGLE_GROUP_NAME = "ToggleGroup", [createToggleGroupContext, createToggleGroupScope] = createContextScope(TOGGLE_GROUP_NAME, [createRovingFocusGroupScope]), useRovingFocusGroupScope = createRovingFocusGroupScope(), ToggleGroup$1 = React.forwardRef((e, t) => {
	let { type: n,...i } = e;
	if (n === "single") return /* @__PURE__ */ jsx(ToggleGroupImplSingle, {
		...i,
		ref: t
	});
	if (n === "multiple") return /* @__PURE__ */ jsx(ToggleGroupImplMultiple, {
		...i,
		ref: t
	});
	throw Error(`Missing prop \`type\` expected on \`${TOGGLE_GROUP_NAME}\``);
});
ToggleGroup$1.displayName = TOGGLE_GROUP_NAME;
var [ToggleGroupValueProvider, useToggleGroupValueContext] = createToggleGroupContext(TOGGLE_GROUP_NAME), ToggleGroupImplSingle = React.forwardRef((e, t) => {
	let { value: n, defaultValue: i, onValueChange: a = () => {},...o } = e, [s, c] = useControllableState({
		prop: n,
		defaultProp: i ?? "",
		onChange: a,
		caller: TOGGLE_GROUP_NAME
	});
	return /* @__PURE__ */ jsx(ToggleGroupValueProvider, {
		scope: e.__scopeToggleGroup,
		type: "single",
		value: React.useMemo(() => s ? [s] : [], [s]),
		onItemActivate: c,
		onItemDeactivate: React.useCallback(() => c(""), [c]),
		children: /* @__PURE__ */ jsx(ToggleGroupImpl, {
			...o,
			ref: t
		})
	});
}), ToggleGroupImplMultiple = React.forwardRef((e, t) => {
	let { value: n, defaultValue: i, onValueChange: a = () => {},...o } = e, [s, c] = useControllableState({
		prop: n,
		defaultProp: i ?? [],
		onChange: a,
		caller: TOGGLE_GROUP_NAME
	}), d = React.useCallback((e) => c((t = []) => [...t, e]), [c]), f = React.useCallback((e) => c((t = []) => t.filter((t) => t !== e)), [c]);
	return /* @__PURE__ */ jsx(ToggleGroupValueProvider, {
		scope: e.__scopeToggleGroup,
		type: "multiple",
		value: s,
		onItemActivate: d,
		onItemDeactivate: f,
		children: /* @__PURE__ */ jsx(ToggleGroupImpl, {
			...o,
			ref: t
		})
	});
});
ToggleGroup$1.displayName = TOGGLE_GROUP_NAME;
var [ToggleGroupContext$1, useToggleGroupContext] = createToggleGroupContext(TOGGLE_GROUP_NAME), ToggleGroupImpl = React.forwardRef((e, t) => {
	let { __scopeToggleGroup: n, disabled: i = !1, rovingFocus: a = !0, orientation: o, dir: s, loop: c = !0,...d } = e, f = useRovingFocusGroupScope(n), g = useDirection(s), y = {
		role: "group",
		dir: g,
		...d
	};
	return /* @__PURE__ */ jsx(ToggleGroupContext$1, {
		scope: n,
		rovingFocus: a,
		disabled: i,
		children: a ? /* @__PURE__ */ jsx(Root$5, {
			asChild: !0,
			...f,
			orientation: o,
			dir: g,
			loop: c,
			children: /* @__PURE__ */ jsx(Primitive.div, {
				...y,
				ref: t
			})
		}) : /* @__PURE__ */ jsx(Primitive.div, {
			...y,
			ref: t
		})
	});
}), ITEM_NAME$1 = "ToggleGroupItem", ToggleGroupItem$1 = React.forwardRef((e, t) => {
	let n = useToggleGroupValueContext(ITEM_NAME$1, e.__scopeToggleGroup), i = useToggleGroupContext(ITEM_NAME$1, e.__scopeToggleGroup), a = useRovingFocusGroupScope(e.__scopeToggleGroup), o = n.value.includes(e.value), s = i.disabled || e.disabled, c = {
		...e,
		pressed: o,
		disabled: s
	}, d = React.useRef(null);
	return i.rovingFocus ? /* @__PURE__ */ jsx(Item$1, {
		asChild: !0,
		...a,
		focusable: !s,
		active: o,
		ref: d,
		children: /* @__PURE__ */ jsx(ToggleGroupItemImpl, {
			...c,
			ref: t
		})
	}) : /* @__PURE__ */ jsx(ToggleGroupItemImpl, {
		...c,
		ref: t
	});
});
ToggleGroupItem$1.displayName = ITEM_NAME$1;
var ToggleGroupItemImpl = React.forwardRef((e, t) => {
	let { __scopeToggleGroup: n, value: i,...a } = e, o = useToggleGroupValueContext(ITEM_NAME$1, n), s = {
		role: "radio",
		"aria-checked": e.pressed,
		"aria-pressed": void 0
	}, c = o.type === "single" ? s : void 0;
	return /* @__PURE__ */ jsx(Toggle$1, {
		...c,
		...a,
		ref: t,
		onPressedChange: (e) => {
			e ? o.onItemActivate(i) : o.onItemDeactivate(i);
		}
	});
}), Root2 = ToggleGroup$1, Item2 = ToggleGroupItem$1, toggleVariants = cva("inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
	variants: {
		variant: {
			default: "bg-transparent",
			outline: "border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground"
		},
		size: {
			default: "h-9 min-w-9 px-2",
			sm: "h-8 min-w-8 px-1.5",
			lg: "h-10 min-w-10 px-2.5"
		}
	},
	defaultVariants: {
		variant: "default",
		size: "default"
	}
}), ToggleGroupContext = React$1.createContext({
	size: "default",
	variant: "default",
	spacing: 0
});
function ToggleGroup({ className: e, variant: t, size: n, spacing: i = 0, children: a,...o }) {
	return /* @__PURE__ */ jsx(Root2, {
		"data-slot": "toggle-group",
		"data-variant": t,
		"data-size": n,
		"data-spacing": i,
		style: { "--gap": i },
		className: cn("group/toggle-group data-[spacing=default]:data-[variant=outline]:shadow-xs flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md", e),
		...o,
		children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, {
			value: {
				variant: t,
				size: n,
				spacing: i
			},
			children: a
		})
	});
}
function ToggleGroupItem({ className: e, children: t, variant: n, size: i,...a }) {
	let o = React$1.useContext(ToggleGroupContext);
	return /* @__PURE__ */ jsx(Item2, {
		"data-slot": "toggle-group-item",
		"data-variant": o.variant || n,
		"data-size": o.size || i,
		"data-spacing": o.spacing,
		className: cn(toggleVariants({
			variant: o.variant || n,
			size: o.size || i
		}), "w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10", "data-[spacing=0]:rounded-none data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:data-[variant=outline]:first:border-l data-[spacing=0]:last:rounded-r-md", e),
		...a,
		children: t
	});
}
const GraphQLType = (e) => e.type instanceof GraphQLNonNull ? /* @__PURE__ */ jsxs("span", { children: [/* @__PURE__ */ jsx(GraphQLType, { type: e.type.ofType }), /* @__PURE__ */ jsx("span", {
	className: "text-muted-foreground!",
	children: "!"
})] }) : e.type instanceof GraphQLList ? /* @__PURE__ */ jsxs("span", { children: [
	/* @__PURE__ */ jsx("span", {
		className: "text-muted-foreground!",
		children: "["
	}),
	/* @__PURE__ */ jsx(GraphQLType, { type: e.type.ofType }),
	/* @__PURE__ */ jsx("span", {
		className: "text-muted-foreground!",
		children: "]"
	})
] }) : e.type instanceof GraphQLScalarType || e.type instanceof GraphQLEnumType ? /* @__PURE__ */ jsx("span", {
	className: "text-teal-400",
	children: e.type.name
}) : /* @__PURE__ */ jsx("span", {
	className: "text-amber-400",
	children: e.type.name
});
function Checkbox({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Checkbox$1, {
		"data-slot": "checkbox",
		className: cn("border-input bg-input/30 data-[state=checked]:text-primary-foreground data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/40 aria-invalid:border-destructive peer size-4 shrink-0 rounded-[4px] border shadow-sm outline-none transition-shadow focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", e),
		...t,
		children: /* @__PURE__ */ jsx(CheckboxIndicator, {
			"data-slot": "checkbox-indicator",
			className: "grid place-content-center text-current transition-none",
			children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
		})
	});
}
function InputGroup({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "input-group",
		role: "group",
		className: cn("group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-sm outline-none transition-[color,box-shadow]", "h-9 min-w-0 has-[>textarea]:h-auto", "has-[>[data-align=inline-start]]:[&>input]:pl-2", "has-[>[data-align=inline-end]]:[&>input]:pr-2", "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3", "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3", "has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]", "has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40", e),
		...t
	});
}
var inputGroupAddonVariants = cva("text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50", {
	variants: { align: {
		"inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
		"inline-end": "order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]",
		"block-start": "order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5",
		"block-end": "order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5"
	} },
	defaultVariants: { align: "inline-start" }
});
function InputGroupAddon({ className: e, align: t = "inline-start",...n }) {
	return /* @__PURE__ */ jsx("div", {
		role: "group",
		"data-slot": "input-group-addon",
		"data-align": t,
		className: cn(inputGroupAddonVariants({ align: t }), e),
		onClick: (e) => {
			e.target.closest("button") || e.currentTarget.parentElement?.querySelector("input")?.focus();
		},
		...n
	});
}
var inputGroupButtonVariants = cva("text-sm shadow-none flex gap-2 items-center", {
	variants: { size: {
		xs: "h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2",
		sm: "h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5",
		"icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
		"icon-sm": "size-8 p-0 has-[>svg]:p-0"
	} },
	defaultVariants: { size: "xs" }
});
function InputGroupButton({ className: e, type: t = "button", variant: n = "ghost", size: i = "xs",...a }) {
	return /* @__PURE__ */ jsx(Button, {
		type: t,
		"data-size": i,
		variant: n,
		className: cn(inputGroupButtonVariants({ size: i }), e),
		...a
	});
}
function InputGroupInput({ className: e,...t }) {
	return /* @__PURE__ */ jsx(Input, {
		"data-slot": "input-group-control",
		className: cn("flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent", e),
		...t
	});
}
var import_lodash$1 = /* @__PURE__ */ __toESM(require_lodash());
const BuilderArgument = (e) => {
	let { schema: t, activeOperation: n, addArgToActiveOperation: i, deleteArgFromActiveOperation: a, activeTab: o } = useLaboratory(), s = useMemo(() => e.operation ?? n ?? null, [e.operation, n]), c = useMemo(() => e.path.join("."), [e.path]), d = useMemo(() => isArgInQuery(s?.query ?? "", c, e.field.name), [
		s?.query,
		c,
		e.field.name
	]);
	return /* @__PURE__ */ jsxs(Button, {
		variant: "ghost",
		className: cn("text-muted-foreground p-1! w-full justify-start text-xs", { "text-foreground-primary": d }),
		size: "sm",
		children: [
			/* @__PURE__ */ jsx("div", { className: "size-4" }),
			/* @__PURE__ */ jsx(Checkbox, {
				onClick: (e) => e.stopPropagation(),
				checked: d,
				disabled: o?.type !== "operation" || e.isReadOnly,
				onCheckedChange: (n) => {
					t && (n ? i(e.path.join("."), e.field.name, t) : a(e.path.join("."), e.field.name));
				}
			}),
			/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
			e.field.name,
			": ",
			/* @__PURE__ */ jsx(GraphQLType, { type: e.field.type })
		]
	}, e.field.name);
}, BuilderScalarField = (e) => {
	let { activeOperation: t, addPathToActiveOperation: n, deletePathFromActiveOperation: i, activeTab: a } = useLaboratory(), o = useMemo(() => e.operation ?? t ?? null, [e.operation, t]), s = useMemo(() => e.path.join("."), [e.path]), c = useMemo(() => e.openPaths.includes(s) || !!e.forcedOpenPaths?.has(s), [
		e.openPaths,
		e.forcedOpenPaths,
		s
	]), d = useCallback((t) => {
		e.setOpenPaths(t ? [...e.openPaths, s] : e.openPaths.filter((e) => e !== s));
	}, [s, e]), f = useMemo(() => isPathInQuery(o?.query ?? "", s), [o?.query, s]), g = useMemo(() => e.field.args ?? [], [e.field]), y = useMemo(() => g.some((e) => isArgInQuery(o?.query ?? "", s, e.name)), [
		o?.query,
		g,
		s
	]), b = useMemo(() => splitIdentifier(e.field.name).some((t) => e.searchValue?.toLowerCase().includes(t.toLowerCase())), [e.searchValue, e.field.name]);
	return e.isSearchActive && e.visiblePaths && !e.visiblePaths.has(s) ? null : e.disableChildren ? /* @__PURE__ */ jsxs(Button, {
		variant: "ghost",
		className: cn("text-muted-foreground bg-card p-1! group sticky top-0 z-10 w-full justify-start overflow-hidden text-xs", { "text-foreground-primary": f }),
		style: { top: `${(e.path.length - 2) * 32}px` },
		size: "sm",
		children: [
			/* @__PURE__ */ jsx("div", { className: "bg-card absolute left-0 top-0 -z-20 size-full" }),
			/* @__PURE__ */ jsx("div", { className: "group-hover:bg-accent/50 absolute left-0 top-0 -z-10 size-full transition-colors" }),
			/* @__PURE__ */ jsx(Checkbox, {
				onClick: (e) => e.stopPropagation(),
				checked: f,
				disabled: a?.type !== "operation" || e.isReadOnly,
				onCheckedChange: (e) => {
					e ? (d(!0), n(s)) : i(s);
				}
			}),
			/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
			e.label ?? /* @__PURE__ */ jsx("span", {
				className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": b }),
				children: e.field.name
			}),
			": ",
			/* @__PURE__ */ jsx(GraphQLType, { type: e.field.type })
		]
	}) : g.length > 0 ? /* @__PURE__ */ jsxs(Collapsible, {
		open: c,
		onOpenChange: d,
		children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
			asChild: !0,
			children: /* @__PURE__ */ jsxs(Button, {
				variant: "ghost",
				className: cn("text-muted-foreground bg-card p-1! group sticky top-0 z-10 w-full justify-start overflow-hidden text-xs", { "text-foreground-primary": f }),
				style: { top: `${(e.path.length - 2) * 32}px` },
				size: "sm",
				children: [
					/* @__PURE__ */ jsx("div", { className: "bg-card absolute left-0 top-0 -z-20 size-full" }),
					/* @__PURE__ */ jsx("div", { className: "group-hover:bg-accent/50 absolute left-0 top-0 -z-10 size-full transition-colors" }),
					/* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-muted-foreground size-4 transition-all", { "-rotate-90": !c }) }),
					/* @__PURE__ */ jsx(Checkbox, {
						onClick: (e) => e.stopPropagation(),
						checked: f,
						disabled: a?.type !== "operation" || e.isReadOnly,
						onCheckedChange: (e) => {
							e ? (d(!0), n(s)) : i(s);
						}
					}),
					/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
					e.label ?? /* @__PURE__ */ jsx("span", {
						className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": b }),
						children: e.field.name
					}),
					": ",
					/* @__PURE__ */ jsx(GraphQLType, { type: e.field.type })
				]
			})
		}), /* @__PURE__ */ jsx(CollapsibleContent, {
			className: "border-border relative z-0 ml-3 flex flex-col border-l pl-2",
			children: c && /* @__PURE__ */ jsx("div", { children: g.length > 0 && /* @__PURE__ */ jsxs(Collapsible, { children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
				asChild: !0,
				children: /* @__PURE__ */ jsxs(Button, {
					variant: "ghost",
					className: cn("text-muted-foreground bg-card p-1! group sticky top-0 z-10 w-full justify-start overflow-hidden text-xs", { "text-foreground-primary": y }),
					style: { top: `${(e.path.length - 1) * 32}px` },
					size: "sm",
					children: [
						/* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-muted-foreground size-4 transition-all", { "-rotate-90": !c }) }),
						/* @__PURE__ */ jsx(Checkbox, {
							onClick: (e) => e.stopPropagation(),
							checked: y,
							disabled: !0
						}),
						/* @__PURE__ */ jsx(CuboidIcon, { className: "size-4 text-rose-400" }),
						"[arguments]"
					]
				})
			}), /* @__PURE__ */ jsx(CollapsibleContent, {
				className: "border-border ml-3 flex flex-col border-l pl-2",
				children: g.map((t) => /* @__PURE__ */ jsx(BuilderArgument, {
					field: t,
					path: [...e.path],
					isReadOnly: e.isReadOnly,
					operation: o
				}, t.name))
			})] }) })
		})]
	}, e.field.name) : /* @__PURE__ */ jsxs(Button, {
		variant: "ghost",
		className: cn("text-muted-foreground p-1! w-full justify-start text-xs", { "text-foreground-primary": f }),
		size: "sm",
		children: [
			/* @__PURE__ */ jsx("div", { className: "size-4" }),
			/* @__PURE__ */ jsx(Checkbox, {
				onClick: (e) => e.stopPropagation(),
				checked: f,
				disabled: a?.type !== "operation",
				onCheckedChange: (t) => {
					t ? n(e.path.join(".")) : i(e.path.join("."));
				}
			}),
			/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
			e.label ?? /* @__PURE__ */ jsx("span", {
				className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": b }),
				children: e.field.name
			}),
			": ",
			/* @__PURE__ */ jsx(GraphQLType, { type: e.field.type })
		]
	}, e.field.name);
}, BuilderObjectField = (e) => {
	let { schema: t, activeOperation: n, addPathToActiveOperation: i, deletePathFromActiveOperation: a, activeTab: o } = useLaboratory(), s = useMemo(() => e.operation ?? n ?? null, [e.operation, n]), c = useMemo(() => e.path.join("."), [e.path]), d = useMemo(() => e.openPaths.includes(c) || !!e.forcedOpenPaths?.has(c), [
		e.openPaths,
		e.forcedOpenPaths,
		c
	]), f = useCallback((t) => {
		e.setOpenPaths(t ? [...e.openPaths, c] : e.openPaths.filter((e) => e !== c));
	}, [c, e]), g = useMemo(() => Object.values((t?.getType(e.field.type.toString().replace(/\[|\]|!/g, "")))?.getFields?.() ?? {}), [t, e.field.type]), y = useMemo(() => e.field.args ?? [], [e.field]), b = useMemo(() => y.some((t) => isArgInQuery(s?.query ?? "", e.path.join("."), t.name)), [
		s?.query,
		y,
		e.path
	]), x = useMemo(() => isPathInQuery(s?.query ?? "", c), [s?.query, c]), S = useMemo(() => splitIdentifier(e.field.name).some((t) => e.searchValue?.toLowerCase().includes(t.toLowerCase())), [e.searchValue, e.field.name]);
	return e.isSearchActive && e.visiblePaths && !e.visiblePaths.has(c) ? null : e.disableChildren ? /* @__PURE__ */ jsxs(Button, {
		variant: "ghost",
		className: cn("text-muted-foreground bg-card p-1! group sticky top-0 z-10 w-full justify-start overflow-hidden text-xs", { "text-foreground-primary": x }),
		style: { top: `${(e.path.length - 2) * 32}px` },
		size: "sm",
		children: [
			/* @__PURE__ */ jsx("div", { className: "bg-card absolute left-0 top-0 -z-20 size-full" }),
			/* @__PURE__ */ jsx("div", { className: "group-hover:bg-accent/50 absolute left-0 top-0 -z-10 size-full transition-colors" }),
			/* @__PURE__ */ jsx(Checkbox, {
				onClick: (e) => e.stopPropagation(),
				checked: x,
				disabled: o?.type !== "operation" || e.isReadOnly,
				onCheckedChange: (e) => {
					e ? (f(!0), i(c)) : a(c);
				}
			}),
			/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
			e.label ?? /* @__PURE__ */ jsx("span", {
				className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": S }),
				children: e.field.name
			}),
			": ",
			/* @__PURE__ */ jsx(GraphQLType, { type: e.field.type })
		]
	}) : /* @__PURE__ */ jsxs(Collapsible, {
		open: d,
		onOpenChange: f,
		children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
			asChild: !0,
			children: /* @__PURE__ */ jsxs(Button, {
				variant: "ghost",
				className: cn("text-muted-foreground bg-card p-1! group sticky top-0 z-10 w-full justify-start overflow-hidden text-xs", { "text-foreground-primary": x }),
				style: { top: `${(e.path.length - 2) * 32}px` },
				size: "sm",
				children: [
					/* @__PURE__ */ jsx("div", { className: "bg-card absolute left-0 top-0 -z-20 size-full" }),
					/* @__PURE__ */ jsx("div", { className: "group-hover:bg-accent/50 absolute left-0 top-0 -z-10 size-full transition-colors" }),
					/* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-muted-foreground size-4 transition-all", { "-rotate-90": !d }) }),
					/* @__PURE__ */ jsx(Checkbox, {
						onClick: (e) => e.stopPropagation(),
						checked: x,
						disabled: o?.type !== "operation" || e.isReadOnly,
						onCheckedChange: (e) => {
							e ? (f(!0), i(c)) : a(c);
						}
					}),
					/* @__PURE__ */ jsx(BoxIcon, { className: "size-4 text-rose-400" }),
					e.label ?? /* @__PURE__ */ jsx("span", {
						className: cn({ "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5": S }),
						children: e.field.name
					}),
					": ",
					/* @__PURE__ */ jsx(GraphQLType, { type: e.field.type })
				]
			})
		}), /* @__PURE__ */ jsx(CollapsibleContent, {
			className: "border-border relative z-0 ml-4 flex flex-col border-l pl-1",
			children: d && /* @__PURE__ */ jsxs("div", { children: [y.length > 0 && /* @__PURE__ */ jsxs(Collapsible, { children: [/* @__PURE__ */ jsx(CollapsibleTrigger, {
				asChild: !0,
				children: /* @__PURE__ */ jsxs(Button, {
					variant: "ghost",
					className: cn("text-muted-foreground bg-card p-1! group sticky top-0 z-10 w-full justify-start overflow-hidden text-xs", { "text-foreground-primary": b }),
					style: { top: `${(e.path.length - 1) * 32}px` },
					size: "sm",
					children: [
						/* @__PURE__ */ jsx(ChevronDownIcon, { className: cn("text-muted-foreground size-4 transition-all", { "-rotate-90": !d }) }),
						/* @__PURE__ */ jsx(Checkbox, {
							onClick: (e) => e.stopPropagation(),
							checked: b,
							disabled: !0
						}),
						/* @__PURE__ */ jsx(CuboidIcon, { className: "size-4 text-rose-400" }),
						"[arguments]"
					]
				})
			}), /* @__PURE__ */ jsx(CollapsibleContent, {
				className: "border-border ml-4 flex flex-col border-l pl-1",
				children: y.map((t) => /* @__PURE__ */ jsx(BuilderArgument, {
					field: t,
					path: [...e.path],
					operation: s
				}, t.name))
			})] }), g?.map((t) => /* @__PURE__ */ jsx(BuilderField, {
				field: t,
				path: [...e.path, t.name],
				openPaths: e.openPaths,
				setOpenPaths: e.setOpenPaths,
				visiblePaths: e.visiblePaths,
				forcedOpenPaths: e.forcedOpenPaths,
				isSearchActive: e.isSearchActive,
				isReadOnly: e.isReadOnly,
				operation: s,
				searchValue: e.searchValue
			}, t.name))] })
		})]
	}, e.field.name);
}, BuilderField = (e) => {
	let { schema: t } = useLaboratory(), n = t?.getType(e.field.type.toString().replace(/\[|\]|!/g, ""));
	return !n || n instanceof GraphQLScalarType || n instanceof GraphQLEnumType || n instanceof GraphQLUnionType ? /* @__PURE__ */ jsx(BuilderScalarField, {
		field: e.field,
		path: e.path,
		openPaths: e.openPaths,
		setOpenPaths: e.setOpenPaths,
		visiblePaths: e.visiblePaths,
		forcedOpenPaths: e.forcedOpenPaths,
		isSearchActive: e.isSearchActive,
		isReadOnly: e.isReadOnly,
		operation: e.operation,
		searchValue: e.searchValue,
		label: e.label,
		disableChildren: e.disableChildren
	}) : /* @__PURE__ */ jsx(BuilderObjectField, {
		field: e.field,
		path: e.path,
		openPaths: e.openPaths,
		setOpenPaths: e.setOpenPaths,
		visiblePaths: e.visiblePaths,
		forcedOpenPaths: e.forcedOpenPaths,
		isSearchActive: e.isSearchActive,
		isReadOnly: e.isReadOnly,
		operation: e.operation,
		searchValue: e.searchValue,
		label: e.label,
		disableChildren: e.disableChildren
	});
};
var BuilderSearchResultMode = /* @__PURE__ */ function(e) {
	return e.LIST = "list", e.TREE = "tree", e;
}(BuilderSearchResultMode || {});
const BuilderSearchResults = (e) => e.mode === BuilderSearchResultMode.LIST ? e.matchedPaths.map((t) => {
	let n = getFieldByPath(t, e.schema);
	return n ? /* @__PURE__ */ jsx(BuilderField, {
		field: n,
		path: [t],
		openPaths: e.openPaths,
		setOpenPaths: e.setOpenPaths,
		visiblePaths: e.visiblePaths,
		forcedOpenPaths: e.forcedOpenPaths,
		isSearchActive: e.isSearchActive,
		isReadOnly: e.isReadOnly,
		operation: e.operation,
		searchValue: e.searchValue,
		disableChildren: !0,
		label: /* @__PURE__ */ jsx("span", { children: t.split(".").map((n, i) => splitIdentifier(n).some((t) => e.searchValue.toLowerCase().includes(t.toLowerCase())) ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
			className: "text-primary-foreground bg-primary -mx-0.5 rounded-sm px-0.5",
			children: n
		}), i < t.split(".").length - 1 && "."] }, i) : /* @__PURE__ */ jsxs("span", { children: [n, i < t.split(".").length - 1 && "."] }, i)) })
	}, t) : null;
}) : e.fields.filter((t) => e.visiblePaths?.has(`${e.tab}.${t.name}`)).map((t) => /* @__PURE__ */ jsx(BuilderField, {
	field: t,
	path: [e.tab, t.name],
	openPaths: e.openPaths,
	setOpenPaths: e.setOpenPaths,
	visiblePaths: e.visiblePaths,
	forcedOpenPaths: e.forcedOpenPaths,
	isSearchActive: e.isSearchActive,
	isReadOnly: e.isReadOnly,
	operation: e.operation,
	searchValue: e.searchValue
}, t.name)), Builder = (e) => {
	let { schema: t, activeOperation: n, endpoint: i, setEndpoint: a, defaultEndpoint: o } = useLaboratory(), [s, c] = useState(i ?? ""), [d, f] = useState(""), g = useDeferredValue(d[d.length - 1] === "." ? d.slice(0, -1) : d), [y, b] = useState([]), [x, S] = useState(OperationTypeNode.QUERY), C = useMemo(() => e.operation ?? n ?? null, [e.operation, n]);
	useEffect(() => {
		if (t) {
			let e = getOpenPaths(C?.query ?? "");
			e.length > 0 && (b(e), S(e[0]));
		}
	}, [t, C?.query]);
	let w = useMemo(() => Object.values(t?.getQueryType()?.getFields?.() ?? {}), [t]), E = useMemo(() => Object.values(t?.getMutationType()?.getFields?.() ?? {}), [t]), O = useMemo(() => Object.values(t?.getSubscriptionType()?.getFields?.() ?? {}), [t]), A = g.trim().length > 0, j = useMemo(() => !t || !A ? null : searchSchemaPaths(t, g, {
		maxDepth: 8,
		maxMatches: 100,
		maxNodes: 1e4,
		operationTypes: [x]
	}), [
		t,
		g,
		A,
		x
	]);
	console.log(j);
	let M = A ? j?.visiblePaths ?? null : null, F = A && g.includes(".") ? j?.forcedOpenPaths ?? null : null, [I, R] = useState(BuilderSearchResultMode.TREE), zv = useMemo(() => (0, import_lodash$1.throttle)((e) => {
		a(e);
	}, 1e3), [a]);
	useEffect(() => {
		zv(s);
	}, [s, zv]);
	let V = useCallback(() => {
		c(i ?? ""), a(o ?? "");
	}, [o, c]);
	return /* @__PURE__ */ jsxs("div", {
		className: "bg-card flex size-full flex-col overflow-hidden",
		children: [
			/* @__PURE__ */ jsxs("div", {
				className: "flex items-center px-3 pt-3",
				children: [/* @__PURE__ */ jsx("span", {
					className: "text-base font-medium",
					children: "Builder"
				}), /* @__PURE__ */ jsx("div", {
					className: "ml-auto flex items-center",
					children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
						asChild: !0,
						children: /* @__PURE__ */ jsx(Button, {
							onClick: () => b([]),
							variant: "ghost",
							size: "icon-sm",
							className: "p-1! size-6 rounded-sm",
							disabled: y.length === 0,
							children: /* @__PURE__ */ jsx(CopyMinusIcon, { className: "text-muted-foreground size-4" })
						})
					}), /* @__PURE__ */ jsx(TooltipContent, { children: "Collapse all" })] })
				})]
			}),
			/* @__PURE__ */ jsx("div", {
				className: "px-3 pt-3",
				children: /* @__PURE__ */ jsxs(InputGroup, { children: [
					/* @__PURE__ */ jsx(InputGroupInput, {
						placeholder: "Enter endpoint",
						value: s,
						onChange: (e) => c(e.currentTarget.value)
					}),
					/* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(GraphQLIcon, {}) }),
					o && /* @__PURE__ */ jsx(InputGroupAddon, {
						align: "inline-end",
						children: /* @__PURE__ */ jsx(InputGroupButton, {
							className: "rounded-full",
							size: "icon-xs",
							onClick: V,
							children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(RotateCcwIcon, { className: "size-4" }) }), /* @__PURE__ */ jsx(TooltipContent, { children: "Restore default endpoint" })] })
						})
					})
				] })
			}),
			/* @__PURE__ */ jsx("div", {
				className: "flex-1 overflow-hidden",
				children: t ? /* @__PURE__ */ jsxs(Tabs, {
					value: x,
					onValueChange: (e) => S(e),
					className: "flex size-full flex-col gap-0",
					children: [
						/* @__PURE__ */ jsx("div", {
							className: "border-border flex items-center border-b p-3",
							children: /* @__PURE__ */ jsxs(TabsList, {
								className: "w-full",
								children: [
									/* @__PURE__ */ jsx(TabsTrigger, {
										value: "query",
										disabled: w.length === 0,
										className: "text-xs",
										children: "Query"
									}),
									/* @__PURE__ */ jsx(TabsTrigger, {
										value: "mutation",
										disabled: E.length === 0,
										className: "text-xs",
										children: "Mutation"
									}),
									/* @__PURE__ */ jsx(TabsTrigger, {
										value: "subscription",
										disabled: O.length === 0,
										className: "text-xs",
										children: "Subscription"
									})
								]
							})
						}),
						t && /* @__PURE__ */ jsx("div", {
							className: "border-border sticky top-0 z-10 border-b p-3",
							children: /* @__PURE__ */ jsxs(InputGroup, {
								className: "pr-0",
								children: [
									/* @__PURE__ */ jsx(InputGroupInput, {
										placeholder: "Search fields",
										value: d,
										onChange: (e) => f(e.currentTarget.value)
									}),
									/* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, { className: "text-muted-foreground size-4" }) }),
									/* @__PURE__ */ jsx(InputGroupAddon, {
										align: "inline-end",
										className: "py-0 pr-1.5",
										children: /* @__PURE__ */ jsxs(ToggleGroup, {
											type: "single",
											variant: "outline",
											defaultValue: I,
											onValueChange: (e) => R(e),
											children: [/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(ToggleGroupItem, {
												value: BuilderSearchResultMode.TREE,
												"aria-label": "Toggle tree",
												className: "h-6 !rounded-l-sm !rounded-r-none border-r-0 p-2",
												children: /* @__PURE__ */ jsx(ListTreeIcon, { className: "size-4" })
											}) }), /* @__PURE__ */ jsx(TooltipContent, { children: "Tree" })] }), /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(ToggleGroupItem, {
												value: BuilderSearchResultMode.LIST,
												"aria-label": "Toggle list",
												className: "h-6 !rounded-l-none !rounded-r-sm p-2",
												children: /* @__PURE__ */ jsx(TextAlignStartIcon, { className: "size-4" })
											}) }), /* @__PURE__ */ jsx(TooltipContent, { children: "List" })] })]
										})
									})
								]
							})
						}),
						/* @__PURE__ */ jsx("div", {
							className: "flex-1 overflow-hidden",
							children: /* @__PURE__ */ jsxs(ScrollArea, {
								className: "h-full font-mono",
								children: [
									/* @__PURE__ */ jsxs("div", {
										className: "p-3",
										children: [
											/* @__PURE__ */ jsx(TabsContent, {
												value: "query",
												children: A ? /* @__PURE__ */ jsx(BuilderSearchResults, {
													type: "query",
													fields: w,
													openPaths: y,
													setOpenPaths: b,
													visiblePaths: M,
													matchedPaths: j?.matchedPaths ?? [],
													forcedOpenPaths: j?.forcedOpenPaths ?? null,
													isSearchActive: A,
													mode: I,
													isReadOnly: e.isReadOnly ?? !1,
													operation: C,
													searchValue: g,
													schema: t,
													tab: x
												}) : w.map((t) => /* @__PURE__ */ jsx(BuilderField, {
													field: t,
													path: ["query", t.name],
													openPaths: y,
													setOpenPaths: b,
													visiblePaths: M,
													forcedOpenPaths: F,
													isSearchActive: A,
													isReadOnly: e.isReadOnly,
													operation: C,
													searchValue: g
												}, t.name))
											}),
											/* @__PURE__ */ jsx(TabsContent, {
												value: "mutation",
												children: A ? /* @__PURE__ */ jsx(BuilderSearchResults, {
													type: "mutation",
													fields: E,
													openPaths: y,
													setOpenPaths: b,
													visiblePaths: M,
													matchedPaths: j?.matchedPaths ?? [],
													forcedOpenPaths: j?.forcedOpenPaths ?? null,
													isSearchActive: A,
													mode: I,
													isReadOnly: e.isReadOnly ?? !1,
													operation: C,
													searchValue: g,
													schema: t,
													tab: x
												}) : E.map((t) => /* @__PURE__ */ jsx(BuilderField, {
													field: t,
													path: ["mutation", t.name],
													openPaths: y,
													setOpenPaths: b,
													visiblePaths: M,
													forcedOpenPaths: F,
													isSearchActive: A,
													isReadOnly: e.isReadOnly,
													operation: C,
													searchValue: g
												}, t.name))
											}),
											/* @__PURE__ */ jsx(TabsContent, {
												value: "subscription",
												children: A ? /* @__PURE__ */ jsx(BuilderSearchResults, {
													type: "subscription",
													fields: O,
													openPaths: y,
													setOpenPaths: b,
													visiblePaths: M,
													matchedPaths: j?.matchedPaths ?? [],
													forcedOpenPaths: j?.forcedOpenPaths ?? null,
													isSearchActive: A,
													mode: I,
													isReadOnly: e.isReadOnly ?? !1,
													operation: C,
													searchValue: g,
													schema: t,
													tab: x
												}) : O.map((t) => /* @__PURE__ */ jsx(BuilderField, {
													field: t,
													path: ["subscription", t.name],
													openPaths: y,
													setOpenPaths: b,
													visiblePaths: M,
													forcedOpenPaths: F,
													isSearchActive: A,
													isReadOnly: e.isReadOnly,
													operation: C,
													searchValue: g
												}, t.name))
											})
										]
									}),
									/* @__PURE__ */ jsx(ScrollBar, { className: "relative z-50" }),
									/* @__PURE__ */ jsx(ScrollBar, {
										orientation: "horizontal",
										className: "relative z-50"
									})
								]
							})
						})
					]
				}, C?.id) : /* @__PURE__ */ jsx(Empty, {
					className: "px-0! h-96 w-full",
					children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
						/* @__PURE__ */ jsx(EmptyMedia, {
							variant: "icon",
							children: /* @__PURE__ */ jsx(FolderIcon, { className: "text-muted-foreground size-6" })
						}),
						/* @__PURE__ */ jsx(EmptyTitle, {
							className: "text-base",
							children: "No endpoint selected"
						}),
						/* @__PURE__ */ jsx(EmptyDescription, {
							className: "text-xs",
							children: "You haven't selected any endpoint yet. Get started by selecting an endpoint."
						})
					] })
				})
			})
		]
	});
};
var variablesUri = Uri.file("variables.json"), Variables = (e) => {
	let { activeOperation: t, updateActiveOperation: n } = useLaboratory(), i = useMemo(() => e.operation ?? t ?? null, [e.operation, t]);
	return /* @__PURE__ */ jsx(Editor, {
		uri: variablesUri,
		value: i?.variables ?? "",
		language: "json",
		onChange: (e) => {
			n({ variables: e ?? "" });
		},
		options: { readOnly: e.isReadOnly }
	});
}, Headers = (e) => {
	let { activeOperation: t, updateActiveOperation: n } = useLaboratory(), i = useMemo(() => e.operation ?? t ?? null, [e.operation, t]);
	return /* @__PURE__ */ jsx(Editor, {
		uri: Uri.file("headers.json"),
		value: i?.headers ?? "",
		onChange: (e) => {
			n({ headers: e ?? "" });
		},
		options: { readOnly: e.isReadOnly }
	});
}, Extensions = (e) => {
	let { activeOperation: t, updateActiveOperation: n } = useLaboratory(), i = useMemo(() => e.operation ?? t ?? null, [e.operation, t]);
	return /* @__PURE__ */ jsx(Editor, {
		uri: Uri.file("extensions.json"),
		value: i?.extensions ?? "",
		onChange: (e) => {
			n({ extensions: e ?? "" });
		},
		options: { readOnly: e.isReadOnly }
	});
};
const ResponseBody = ({ historyItem: e }) => /* @__PURE__ */ jsx(Editor, {
	value: JSON.stringify(JSON.parse(e?.response ?? "{}"), null, 2),
	defaultLanguage: "json",
	theme: "hive-laboratory",
	options: { readOnly: !0 }
}), ResponseHeaders = ({ historyItem: e }) => /* @__PURE__ */ jsx(Editor, {
	value: JSON.stringify(JSON.parse(e?.headers ?? "{}"), null, 2),
	defaultLanguage: "json",
	theme: "hive-laboratory"
}), ResponsePreflight = ({ historyItem: e }) => /* @__PURE__ */ jsxs(ScrollArea, {
	className: "h-full",
	children: [/* @__PURE__ */ jsx("div", {
		className: "flex flex-col gap-1.5 whitespace-pre-wrap p-3",
		children: e?.preflightLogs?.map((e, t) => /* @__PURE__ */ jsxs("div", {
			className: "gap-2 font-mono",
			children: [
				/* @__PURE__ */ jsx("span", {
					className: "text-muted-foreground text-xs",
					children: e.createdAt
				}),
				" ",
				/* @__PURE__ */ jsx("span", {
					className: cn("text-xs font-medium", {
						"text-blue-400": e.level === "info",
						"text-green-400": e.level === "log",
						"text-yellow-400": e.level === "warn",
						"text-red-400": e.level === "error",
						"text-gray-400": e.level === "system"
					}),
					children: e.level.toUpperCase()
				}),
				" ",
				/* @__PURE__ */ jsx("span", {
					className: "text-xs",
					children: e.message.join(" ")
				})
			]
		}, t))
	}), /* @__PURE__ */ jsx(ScrollBar, {})]
}), ResponseSubscription = ({ historyItem: e }) => {
	let { isActiveOperationLoading: t } = useLaboratory();
	return /* @__PURE__ */ jsxs("div", {
		className: "flex h-full flex-col",
		children: [/* @__PURE__ */ jsxs("div", {
			className: "border-border flex h-12 border-b p-3 text-base font-medium",
			children: ["Subscription", /* @__PURE__ */ jsx("div", {
				className: "ml-auto flex items-center gap-2",
				children: t ? /* @__PURE__ */ jsx(Badge, {
					variant: "default",
					className: "bg-green-400/10 text-green-500",
					children: "Listening"
				}) : /* @__PURE__ */ jsx(Badge, {
					variant: "default",
					className: "bg-red-400/10 text-red-500",
					children: "Not listening"
				})
			})]
		}), /* @__PURE__ */ jsx("div", {
			className: "flex-1 overflow-hidden",
			children: /* @__PURE__ */ jsxs(ScrollArea, {
				className: "h-full",
				children: [/* @__PURE__ */ jsx("div", {
					className: "flex flex-col overflow-hidden",
					children: e?.responses.sort((e, t) => new Date(t.createdAt).getTime() - new Date(e.createdAt).getTime()).map((e, t) => {
						let n = [
							`// ${e.createdAt}`,
							"",
							JSON.stringify(JSON.parse(e.data), null, 2)
						].join("\n"), i = 20.5 * n.split("\n").length;
						return /* @__PURE__ */ jsx("div", {
							className: "border-border border-b",
							style: { height: `${i}px` },
							children: /* @__PURE__ */ jsx(Editor, {
								value: n,
								defaultLanguage: "json",
								theme: "hive-laboratory",
								options: {
									readOnly: !0,
									scrollBeyondLastLine: !1,
									scrollbar: {
										vertical: "hidden",
										handleMouseWheel: !1,
										alwaysConsumeMouseWheel: !1
									}
								}
							}, e.createdAt)
						}, t);
					})
				}), /* @__PURE__ */ jsx(ScrollBar, {})]
			})
		})]
	});
}, Response$1 = ({ historyItem: e }) => {
	let t = useMemo(() => e ? e.status ? e.status < 200 || e.status >= 300 || "response" in e && JSON.parse(e.response).errors : !0 : !1, [e]);
	return /* @__PURE__ */ jsxs(Tabs, {
		defaultValue: "response",
		className: "grid size-full grid-rows-[auto_1fr]",
		children: [
			/* @__PURE__ */ jsxs(TabsList, {
				className: "h-[49.5px] w-full justify-start rounded-none border-b bg-transparent p-3",
				children: [
					/* @__PURE__ */ jsx(TabsTrigger, {
						value: "response",
						className: "grow-0 rounded-sm",
						children: "Response"
					}),
					/* @__PURE__ */ jsx(TabsTrigger, {
						value: "headers",
						className: "grow-0 rounded-sm",
						children: "Headers"
					}),
					e?.preflightLogs && e?.preflightLogs.length > 0 && /* @__PURE__ */ jsx(TabsTrigger, {
						value: "preflight",
						className: "grow-0 rounded-sm",
						children: "Preflight"
					}),
					e ? /* @__PURE__ */ jsxs("div", {
						className: "ml-auto flex items-center gap-2",
						children: [
							e?.status && /* @__PURE__ */ jsxs(Badge, {
								className: cn("bg-green-400/10 text-green-500", { "bg-red-400/10 text-red-500": t }),
								children: [jsx(t ? CircleXIcon : CircleCheckIcon, { className: "size-3" }), /* @__PURE__ */ jsx("span", { children: e.status })]
							}),
							e?.duration && /* @__PURE__ */ jsxs(Badge, {
								variant: "outline",
								className: "bg-card",
								children: [/* @__PURE__ */ jsx(ClockIcon, { className: "size-3" }), /* @__PURE__ */ jsxs("span", { children: [Math.round(e.duration), "ms"] })]
							}),
							e?.size && /* @__PURE__ */ jsxs(Badge, {
								variant: "outline",
								className: "bg-card",
								children: [/* @__PURE__ */ jsx(FileTextIcon, { className: "size-3" }), /* @__PURE__ */ jsxs("span", { children: [Math.round(e.size / 1024), "KB"] })]
							})
						]
					}) : null
				]
			}),
			/* @__PURE__ */ jsx(TabsContent, {
				value: "response",
				className: "overflow-hidden",
				children: /* @__PURE__ */ jsx(ResponseBody, { historyItem: e })
			}),
			/* @__PURE__ */ jsx(TabsContent, {
				value: "headers",
				className: "overflow-hidden",
				children: /* @__PURE__ */ jsx(ResponseHeaders, { historyItem: e })
			}),
			/* @__PURE__ */ jsx(TabsContent, {
				value: "preflight",
				className: "overflow-hidden",
				children: /* @__PURE__ */ jsx(ResponsePreflight, { historyItem: e })
			})
		]
	});
};
var saveToCollectionFormSchema = z.object({ collectionId: z.string().min(1, "Collection is required") });
const Query = (e) => {
	let { endpoint: t, runActiveOperation: n, activeOperation: i, isActiveOperationLoading: a, updateActiveOperation: s, collections: c, addOperationToCollection: d, addHistory: f, stopActiveOperation: g, addResponseToHistory: y, isActiveOperationSubscription: b, runPreflight: x, addTab: S, setActiveTab: C, addOperation: w, checkPermissions: E, preflight: O, setPreflight: A, plugins: j, pluginsState: M, setPluginsState: F } = useLaboratory(), I = useMemo(() => e.operation ?? i ?? null, [e.operation, i]), R = useCallback(async () => {
		if (!I || !t) return;
		let i = await x?.(j, M);
		if (F(i?.pluginsState ?? {}), i?.status === "error") {
			let t = f({
				headers: "{}",
				operation: I,
				preflightLogs: i?.logs ?? [],
				response: "{\n          \"errors\": [\n            {\n              \"message\": \"Preflight failed check logs for more details\"\n            }\n          ]\n        }",
				createdAt: (/* @__PURE__ */ new Date()).toISOString()
			});
			e.onAfterOperationRun?.(t);
			return;
		}
		if (b) {
			let a = f({
				responses: [],
				operation: I,
				preflightLogs: i?.logs ?? [],
				createdAt: (/* @__PURE__ */ new Date()).toISOString()
			});
			n(t, {
				env: i?.env,
				headers: i?.headers,
				onResponse: (e) => {
					y(a.id, e);
				}
			}), e.onAfterOperationRun?.(a);
		} else {
			let a = performance.now(), o = await n(t, {
				env: i?.env,
				headers: i?.headers
			});
			if (!o) return;
			let s = o.status, c = performance.now() - a, d = await o.text(), g = d.length, y = f({
				status: s,
				duration: c,
				size: g,
				headers: JSON.stringify(Object.fromEntries(o.headers.entries()), null, 2),
				operation: I,
				preflightLogs: i?.logs ?? [],
				response: d,
				createdAt: (/* @__PURE__ */ new Date()).toISOString()
			});
			e.onAfterOperationRun?.(y);
		}
	}, [
		I,
		t,
		b,
		f,
		n,
		e,
		y,
		x,
		M
	]);
	useEffect(() => {
		let e = (e) => {
			e.key === "Enter" && (e.metaKey || e.ctrlKey) && (e.preventDefault(), e.stopPropagation(), R());
		};
		return document.addEventListener("keydown", e, { capture: !0 }), () => document.removeEventListener("keydown", e, { capture: !0 });
	}, [R]);
	let [zv, V] = useState(!1), Bv = useForm({
		defaultValues: { collectionId: "" },
		validators: { onSubmit: saveToCollectionFormSchema },
		onSubmit: ({ value: e }) => {
			I && (d(e.collectionId, {
				id: I.id ?? "",
				name: I.name ?? "",
				query: I.query ?? "",
				variables: I.variables ?? "",
				headers: I.headers ?? "",
				extensions: I.extensions ?? "",
				description: ""
			}), V(!1));
		}
	}), Vv = useCallback(() => {
		Bv.reset({ collectionId: c[0]?.id ?? "" }), V(!0);
	}, [Bv, c]), Hv = useMemo(() => c.some((e) => e.operations.some((e) => e.id === I?.id)), [I?.id, c]), Uv = useCallback((e) => {
		let t = compressToEncodedURIComponent(JSON.stringify({
			n: I?.name,
			q: I?.query,
			v: e.variables ? I?.variables : void 0,
			h: e.headers ? I?.headers : void 0,
			e: e.extensions ? I?.extensions : void 0
		}));
		navigator.clipboard.writeText(`${window.location.origin}${window.location.pathname}?share=${t}`), toast.success("Operation copied to clipboard");
	}, [I]);
	return /* @__PURE__ */ jsxs("div", {
		className: "grid size-full grid-rows-[auto_1fr] overflow-hidden pb-0",
		children: [
			/* @__PURE__ */ jsx(Dialog, {
				open: zv,
				onOpenChange: V,
				children: /* @__PURE__ */ jsxs(DialogContent, {
					className: "sm:max-w-[425px]",
					children: [
						/* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Add collection" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Add a new collection of operations to your laboratory." })] }),
						/* @__PURE__ */ jsx("div", {
							className: "grid gap-4",
							children: /* @__PURE__ */ jsx("form", {
								id: "save-to-collection",
								onSubmit: (e) => {
									e.preventDefault(), Bv.handleSubmit();
								},
								children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(Bv.Field, {
									name: "collectionId",
									children: (e) => {
										let t = e.state.meta.isTouched && !e.state.meta.isValid;
										return /* @__PURE__ */ jsxs(Field, {
											"data-invalid": t,
											children: [/* @__PURE__ */ jsx(FieldLabel, {
												htmlFor: e.name,
												children: "Collection"
											}), /* @__PURE__ */ jsxs(Select, {
												name: e.name,
												value: e.state.value,
												onValueChange: e.handleChange,
												children: [/* @__PURE__ */ jsx(SelectTrigger, {
													id: e.name,
													"aria-invalid": t,
													children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select collection" })
												}), /* @__PURE__ */ jsx(SelectContent, { children: c.map((e) => /* @__PURE__ */ jsx(SelectItem, {
													value: e.id,
													children: e.name
												}, e.id)) })]
											})]
										});
									}
								}) })
							})
						}),
						/* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(DialogClose, {
							asChild: !0,
							children: /* @__PURE__ */ jsx(Button, {
								variant: "outline",
								children: "Cancel"
							})
						}), /* @__PURE__ */ jsx(Button, {
							type: "submit",
							form: "save-to-collection",
							children: "Save to collection"
						})] })
					]
				})
			}),
			/* @__PURE__ */ jsxs("div", {
				className: "border-border flex w-full items-center gap-2 overflow-hidden border-b p-3",
				children: [
					/* @__PURE__ */ jsx("span", {
						className: "text-base font-medium",
						children: "Operation"
					}),
					E?.("collectionsOperations:create") && /* @__PURE__ */ jsxs(Toggle, {
						"aria-label": "Save operation",
						size: "sm",
						variant: "default",
						pressed: Hv,
						disabled: Hv,
						className: "data-[state=on]:*:[svg]:fill-yellow-500 data-[state=on]:*:[svg]:stroke-yellow-500 h-6 data-[state=on]:bg-transparent",
						onClick: Vv,
						children: [/* @__PURE__ */ jsx(BookmarkIcon, { className: "size-4" }), Hv ? "Saved" : "Save"]
					}),
					/* @__PURE__ */ jsxs("div", {
						className: "ml-auto flex items-center gap-2",
						children: [
							/* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger$1, { children: /* @__PURE__ */ jsxs(Button, {
								variant: "outline",
								size: "sm",
								className: "h-6 rounded-sm",
								children: ["Share", /* @__PURE__ */ jsx(MoreHorizontalIcon, { className: "size-4" })]
							}) }), /* @__PURE__ */ jsxs(DropdownMenuContent, {
								align: "end",
								children: [
									/* @__PURE__ */ jsx(DropdownMenuItem, {
										onClick: () => Uv({ variables: !0 }),
										children: "Share with variables"
									}),
									/* @__PURE__ */ jsx(DropdownMenuItem, {
										onClick: () => Uv({
											variables: !0,
											extensions: !0
										}),
										children: "Share with variables and extensions"
									}),
									/* @__PURE__ */ jsx(DropdownMenuItem, {
										onClick: () => Uv({
											variables: !0,
											headers: !0,
											extensions: !0
										}),
										children: "Share with variables, extensions, headers"
									})
								]
							})] }),
							/* @__PURE__ */ jsxs(Toggle, {
								"aria-label": O?.enabled ? "Disable preflight" : "Enable preflight",
								size: "sm",
								variant: "default",
								pressed: O?.enabled,
								className: "hover:text-accent-foreground bg-input/30 border-input hover:bg-input/50 h-6 rounded-sm border shadow-sm data-[state=on]:bg-transparent",
								onClick: () => {
									A({
										...O ?? {
											script: "",
											enabled: !0
										},
										enabled: !O?.enabled
									});
								},
								children: [O?.enabled ? /* @__PURE__ */ jsx(PowerIcon, { className: "size-4 text-green-500" }) : /* @__PURE__ */ jsx(PowerOffIcon, { className: "size-4 text-red-500" }), "Preflight"]
							}),
							e.isReadOnly ? /* @__PURE__ */ jsxs(Button, {
								variant: "default",
								size: "sm",
								className: "h-6 rounded-sm",
								onClick: () => {
									I && C(S({
										type: "operation",
										data: w(I)
									}));
								},
								children: [/* @__PURE__ */ jsx(SquarePenIcon, { className: "size-4" }), "Edit"]
							}) : /* @__PURE__ */ jsx(Button, {
								variant: "default",
								size: "sm",
								className: "h-6 rounded-sm",
								onClick: () => {
									a ? g?.() : R();
								},
								disabled: !I || !t,
								children: a ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Spinner, { className: "size-4" }), /* @__PURE__ */ jsx("span", { children: "Stop" })] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(PlayIcon, { className: "size-4" }), /* @__PURE__ */ jsx("span", { children: "Run" })] })
							})
						]
					})
				]
			}),
			/* @__PURE__ */ jsx(Editor, {
				uri: Uri.file(`operation_${t}.graphql`),
				variablesUri,
				value: I?.query ?? "",
				onChange: (e) => {
					s({ query: e ?? "" });
				},
				language: "graphql",
				theme: "hive-laboratory",
				options: { readOnly: e.isReadOnly }
			})
		]
	});
}, Operation = (e) => {
	let { activeOperation: t, history: n } = useLaboratory(), i = useMemo(() => e.operation ?? t ?? null, [e.operation, t]), a = useMemo(() => e.historyItem ?? n.filter((e) => e.operation.id === i?.id).sort((e, t) => new Date(t.createdAt).getTime() - new Date(e.createdAt).getTime())[0] ?? null, [
		n,
		e.historyItem,
		i?.id
	]), o = useMemo(() => !!e.historyItem, [e.historyItem]);
	return /* @__PURE__ */ jsx("div", {
		className: "bg-card size-full",
		children: /* @__PURE__ */ jsxs(ResizablePanelGroup, {
			direction: "horizontal",
			className: "size-full",
			children: [
				/* @__PURE__ */ jsx(ResizablePanel, {
					defaultSize: 25,
					children: /* @__PURE__ */ jsx(Builder, {
						operation: i,
						isReadOnly: o
					})
				}),
				/* @__PURE__ */ jsx(ResizableHandle, {}),
				/* @__PURE__ */ jsx(ResizablePanel, {
					minSize: 10,
					defaultSize: 40,
					children: /* @__PURE__ */ jsxs(ResizablePanelGroup, {
						direction: "vertical",
						children: [
							/* @__PURE__ */ jsx(ResizablePanel, {
								defaultSize: 70,
								children: /* @__PURE__ */ jsx(Query, {
									operation: i,
									isReadOnly: o
								})
							}),
							/* @__PURE__ */ jsx(ResizableHandle, {}),
							/* @__PURE__ */ jsx(ResizablePanel, {
								minSize: 10,
								defaultSize: 30,
								children: /* @__PURE__ */ jsxs(Tabs, {
									className: "grid size-full grid-rows-[auto_1fr]",
									defaultValue: "variables",
									children: [
										/* @__PURE__ */ jsxs(TabsList, {
											className: "h-[49.5px] w-full justify-start rounded-none border-b bg-transparent p-3",
											children: [
												/* @__PURE__ */ jsx(TabsTrigger, {
													value: "variables",
													className: "grow-0 rounded-sm",
													children: "Variables"
												}),
												/* @__PURE__ */ jsx(TabsTrigger, {
													value: "headers",
													className: "grow-0 rounded-sm",
													children: "Headers"
												}),
												/* @__PURE__ */ jsx(TabsTrigger, {
													value: "extensions",
													className: "grow-0 rounded-sm",
													children: "Extensions"
												})
											]
										}),
										/* @__PURE__ */ jsx(TabsContent, {
											value: "variables",
											className: "overflow-hidden",
											children: /* @__PURE__ */ jsx(Variables, {
												operation: i,
												isReadOnly: o
											})
										}),
										/* @__PURE__ */ jsx(TabsContent, {
											value: "headers",
											className: "overflow-hidden",
											children: /* @__PURE__ */ jsx(Headers, {
												operation: i,
												isReadOnly: o
											})
										}),
										/* @__PURE__ */ jsx(TabsContent, {
											value: "extensions",
											className: "overflow-hidden",
											children: /* @__PURE__ */ jsx(Extensions, {
												operation: i,
												isReadOnly: o
											})
										})
									]
								})
							})
						]
					})
				}),
				/* @__PURE__ */ jsx(ResizableHandle, {}),
				/* @__PURE__ */ jsx(ResizablePanel, {
					minSize: 10,
					defaultSize: 35,
					children: a ? /* @__PURE__ */ jsx(Fragment$1, { children: "responses" in a ? /* @__PURE__ */ jsx(ResponseSubscription, { historyItem: a }) : /* @__PURE__ */ jsx(Response$1, { historyItem: a }) }) : /* @__PURE__ */ jsx(Empty, {
						className: "size-full",
						children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
							/* @__PURE__ */ jsx(EmptyMedia, {
								variant: "icon",
								children: /* @__PURE__ */ jsx(HistoryIcon, { className: "text-muted-foreground size-6" })
							}),
							/* @__PURE__ */ jsx(EmptyTitle, { children: "No history yet" }),
							/* @__PURE__ */ jsx(EmptyDescription, { children: "No response available yet. Run your operation to see the response here." })
						] })
					})
				})
			]
		})
	});
}, HistoryItem = () => {
	let { activeTab: e, history: t } = useLaboratory(), n = useMemo(() => e?.type === "history" ? t.find((t) => t.id === e.data.id) ?? null : null, [t, e]);
	return n ? /* @__PURE__ */ jsx(Operation, {
		operation: n.operation,
		historyItem: n
	}) : null;
}, Preflight = () => {
	let { preflight: e, setLastTestResult: t, setPreflight: n, env: i, setEnv: a, openPreflightPromptModal: o, checkPermissions: s, plugins: c, pluginsState: d, setPluginsState: f } = useLaboratory(), g = useCallback(async () => {
		if (!e?.script) return;
		let n = await runIsolatedLabScript(e?.script ?? "", i ?? { variables: {} }, (e, t) => new Promise((n) => {
			o?.({
				placeholder: e,
				defaultValue: t,
				onSubmit: (e) => {
					n(e);
				}
			});
		}), c, d);
		a(n?.env ?? { variables: {} }), f(n?.pluginsState ?? {}), t(n);
	}, [
		i,
		a,
		e,
		t,
		o
	]);
	return /* @__PURE__ */ jsxs(ResizablePanelGroup, {
		direction: "horizontal",
		className: "size-full",
		children: [
			/* @__PURE__ */ jsx(ResizablePanel, {
				defaultSize: 50,
				className: "bg-card",
				children: /* @__PURE__ */ jsxs("div", {
					className: "grid size-full grid-rows-[auto_1fr] pb-0",
					children: [/* @__PURE__ */ jsxs("div", {
						className: "border-border flex w-full items-center gap-2 border-b p-3",
						children: [/* @__PURE__ */ jsx("span", {
							className: "text-base font-medium",
							children: "Preflight"
						}), /* @__PURE__ */ jsx("div", {
							className: "ml-auto flex items-center gap-2",
							children: /* @__PURE__ */ jsxs(Button, {
								variant: "default",
								size: "sm",
								className: "h-6 rounded-sm",
								onClick: g,
								children: [/* @__PURE__ */ jsx(PlayIcon, { className: "size-4" }), /* @__PURE__ */ jsx("span", { children: "Test" })]
							})
						})]
					}), /* @__PURE__ */ jsx("div", {
						className: "size-full",
						children: /* @__PURE__ */ jsx(Editor, {
							value: e?.script ?? "",
							onChange: (t) => {
								n({
									...e ?? {
										script: "",
										enabled: !0
									},
									script: t ?? ""
								});
							},
							language: "typescript",
							extraLibs: [`
                  interface Lab {
                    environment: {
                      set: (key: string, value: string) => void;
                      get: (key: string) => string;
                      delete: (key: string) => void;
                    };
                    request: {
                      headers: Headers;
                    };
                    prompt: (placeholder: string, defaultValue: string) => Promise<string | null>;
                    CryptoJS: typeof CryptoJS;
                    plugins: {
                      ${c.filter((e) => e.preflight?.lab?.definition).map((e) => e.preflight?.lab?.definition).join("\n")}
                    }
                  }

                  declare namespace CryptoJS {
                    namespace lib {
                      interface WordArray {
                        words: number[];
                        sigBytes: number;
                        toString(encoder?: Encoder): string;
                        concat(wordArray: WordArray): WordArray;
                        clone(): WordArray;
                      }
                      interface CipherParams {
                        ciphertext: WordArray;
                        key: WordArray;
                        iv: WordArray;
                        salt: WordArray;
                        toString(formatter?: Format): string;
                      }
                    }
                    namespace enc {
                      interface Encoder {
                        stringify(wordArray: lib.WordArray): string;
                        parse(str: string): lib.WordArray;
                      }
                      const Hex: Encoder;
                      const Latin1: Encoder;
                      const Utf8: Encoder;
                      const Base64: Encoder;
                    }
                    namespace algo {
                      interface HasherStatic {
                        create(cfg?: object): Hasher;
                      }
                      interface Hasher {
                        update(messageUpdate: lib.WordArray | string): Hasher;
                        finalize(messageUpdate?: lib.WordArray | string): lib.WordArray;
                      }
                      const MD5: HasherStatic;
                      const SHA1: HasherStatic;
                      const SHA256: HasherStatic;
                      const SHA224: HasherStatic;
                      const SHA512: HasherStatic;
                      const SHA384: HasherStatic;
                      const SHA3: HasherStatic;
                      const RIPEMD160: HasherStatic;
                      interface CipherStatic {
                        createEncryptor(key: lib.WordArray, cfg?: CipherOption): Cipher;
                        createDecryptor(key: lib.WordArray, cfg?: CipherOption): Cipher;
                      }
                      interface Cipher {
                        process(dataUpdate: lib.WordArray | string): lib.WordArray;
                        finalize(dataUpdate?: lib.WordArray | string): lib.WordArray;
                      }
                      interface CipherHelper {
                        encrypt(message: lib.WordArray | string, key: lib.WordArray | string, cfg?: CipherOption): lib.CipherParams;
                        decrypt(ciphertext: lib.CipherParams | string, key: lib.WordArray | string, cfg?: CipherOption): lib.WordArray;
                      }
                      const AES: CipherStatic;
                      const DES: CipherStatic;
                      const TripleDES: CipherStatic;
                      const RC4: CipherStatic;
                    }
                    namespace mode {
                      interface BlockCipherMode {
                        createEncryptor(cipher: algo.Cipher, iv: number[]): Mode;
                        createDecryptor(cipher: algo.Cipher, iv: number[]): Mode;
                      }
                      const CBC: BlockCipherMode;
                      const CFB: BlockCipherMode;
                      const CTR: BlockCipherMode;
                      const OFB: BlockCipherMode;
                      const ECB: BlockCipherMode;
                    }
                    namespace pad {
                      interface Padding {
                        pad(data: lib.WordArray, blockSize: number): void;
                        unpad(data: lib.WordArray): void;
                      }
                      const Pkcs7: Padding;
                      const AnsiX923: Padding;
                      const Iso10126: Padding;
                      const Iso97971: Padding;
                      const ZeroPadding: Padding;
                      const NoPadding: Padding;
                    }
                    namespace format {
                      interface Format {
                        stringify(cipherParams: lib.CipherParams): string;
                        parse(str: string): lib.CipherParams;
                      }
                      const OpenSSL: Format;
                      const Hex: Format;
                    }
                    interface CipherOption {
                      iv?: lib.WordArray;
                      mode?: mode.BlockCipherMode;
                      padding?: pad.Padding;
                      format?: format.Format;
                      [key: string]: any;
                    }
                    interface Mode {
                      processBlock(words: number[], offset: number): void;
                    }
                    type HasherHelper = (message: lib.WordArray | string, cfg?: object) => lib.WordArray;
                    type HmacHasherHelper = (message: lib.WordArray | string, key: lib.WordArray | string) => lib.WordArray;
                    type CipherHelper = {
                      encrypt(message: lib.WordArray | string, key: lib.WordArray | string, cfg?: CipherOption): lib.CipherParams;
                      decrypt(ciphertext: lib.CipherParams | string, key: lib.WordArray | string, cfg?: CipherOption): lib.WordArray;
                    };
                    const MD5: HasherHelper;
                    const SHA1: HasherHelper;
                    const SHA256: HasherHelper;
                    const SHA224: HasherHelper;
                    const SHA512: HasherHelper;
                    const SHA384: HasherHelper;
                    const SHA3: HasherHelper;
                    const RIPEMD160: HasherHelper;
                    const HmacMD5: HmacHasherHelper;
                    const HmacSHA1: HmacHasherHelper;
                    const HmacSHA256: HmacHasherHelper;
                    const HmacSHA224: HmacHasherHelper;
                    const HmacSHA512: HmacHasherHelper;
                    const HmacSHA384: HmacHasherHelper;
                    const HmacSHA3: HmacHasherHelper;
                    const HmacRIPEMD160: HmacHasherHelper;
                    const AES: CipherHelper;
                    const DES: CipherHelper;
                    const TripleDES: CipherHelper;
                    const RC4: CipherHelper;
                    const RC4Drop: CipherHelper;
                    const Rabbit: CipherHelper;
                    const RabbitLegacy: CipherHelper;
                    function PBKDF2(password: lib.WordArray | string, salt: lib.WordArray | string, cfg?: { keySize?: number; hasher?: algo.HasherStatic; iterations?: number }): lib.WordArray;
                    function EvpKDF(password: lib.WordArray | string, salt: lib.WordArray | string, cfg?: { keySize: number; hasher?: algo.HasherStatic; iterations: number }): lib.WordArray;
                  }

                  declare var lab: Lab;
                  declare var CryptoJS: typeof CryptoJS;
                  `],
							options: { readOnly: !s?.("preflight:update") }
						})
					})]
				})
			}),
			/* @__PURE__ */ jsx(ResizableHandle, {}),
			/* @__PURE__ */ jsx(ResizablePanel, {
				minSize: 10,
				defaultSize: 50,
				className: "bg-card",
				children: e?.lastTestResult?.logs && e?.lastTestResult?.logs.length > 0 ? /* @__PURE__ */ jsxs("div", {
					className: "grid size-full grid-rows-[auto_1fr] pb-0",
					children: [/* @__PURE__ */ jsxs("div", {
						className: "border-border flex h-12 w-full items-center gap-2 border-b p-3",
						children: [/* @__PURE__ */ jsx("span", {
							className: "text-base font-medium",
							children: "Logs"
						}), /* @__PURE__ */ jsx("div", { className: "ml-auto flex items-center gap-2" })]
					}), /* @__PURE__ */ jsxs(ScrollArea, {
						className: "h-full",
						children: [/* @__PURE__ */ jsx("div", {
							className: "flex flex-col gap-1.5 whitespace-pre-wrap p-3",
							children: e?.lastTestResult?.logs.map((e, t) => /* @__PURE__ */ jsxs("div", {
								className: "gap-2 font-mono",
								children: [
									/* @__PURE__ */ jsx("span", {
										className: "text-muted-foreground text-xs",
										children: e.createdAt
									}),
									" ",
									/* @__PURE__ */ jsx("span", {
										className: cn("text-xs font-medium", {
											"text-blue-400": e.level === "info",
											"text-green-400": e.level === "log",
											"text-yellow-400": e.level === "warn",
											"text-red-400": e.level === "error",
											"text-gray-400": e.level === "system"
										}),
										children: e.level.toUpperCase()
									}),
									" ",
									/* @__PURE__ */ jsx("span", {
										className: "text-xs",
										children: e.message.join(" ")
									})
								]
							}, t))
						}), /* @__PURE__ */ jsx(ScrollBar, {})]
					})]
				}) : /* @__PURE__ */ jsx(Empty, {
					className: "size-full",
					children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
						/* @__PURE__ */ jsx(EmptyMedia, {
							variant: "icon",
							children: /* @__PURE__ */ jsx(HistoryIcon, { className: "text-muted-foreground size-6" })
						}),
						/* @__PURE__ */ jsx(EmptyTitle, { children: "No logs yet" }),
						/* @__PURE__ */ jsx(EmptyDescription, { children: "No logs available yet. Run your preflight to see the logs here." })
					] })
				})
			})
		]
	});
};
function Card({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "card",
		className: cn("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm", e),
		...t
	});
}
function CardHeader({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "card-header",
		className: cn("[.border-b]:pb-6 grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-[>[data-slot=card-action]]:grid-cols-[1fr_auto]", e),
		...t
	});
}
function CardTitle({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "card-title",
		className: cn("font-semibold leading-none", e),
		...t
	});
}
function CardDescription({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "card-description",
		className: cn("text-muted-foreground text-sm", e),
		...t
	});
}
function CardContent({ className: e,...t }) {
	return /* @__PURE__ */ jsx("div", {
		"data-slot": "card-content",
		className: cn("px-6", e),
		...t
	});
}
var settingsFormSchema = z.object({ fetch: z.object({ credentials: z.enum([
	"include",
	"omit",
	"same-origin"
]) }) });
const Settings = () => {
	let { settings: e, setSettings: t } = useLaboratory(), n = useForm({
		defaultValues: e,
		validators: { onSubmit: settingsFormSchema },
		onSubmit: ({ value: e }) => {
			t(e);
		}
	});
	return /* @__PURE__ */ jsx("div", {
		className: "bg-card size-full p-3",
		children: /* @__PURE__ */ jsx("form", {
			id: "settings-form",
			onSubmit: n.handleSubmit,
			onChange: n.handleSubmit,
			className: "mx-auto max-w-2xl",
			children: /* @__PURE__ */ jsxs(Card, { children: [/* @__PURE__ */ jsxs(CardHeader, { children: [/* @__PURE__ */ jsx(CardTitle, { children: "Fetch" }), /* @__PURE__ */ jsx(CardDescription, { children: "Configure the fetch options for the laboratory." })] }), /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(n.Field, {
				name: "fetch.credentials",
				children: (e) => {
					let t = e.state.meta.isTouched && !e.state.meta.isValid;
					return /* @__PURE__ */ jsxs(Field, {
						"data-invalid": t,
						children: [/* @__PURE__ */ jsx(FieldLabel, {
							htmlFor: e.name,
							children: "Credentials"
						}), /* @__PURE__ */ jsxs(Select, {
							name: e.name,
							value: e.state.value,
							onValueChange: (t) => e.handleChange(t),
							children: [/* @__PURE__ */ jsx(SelectTrigger, {
								id: e.name,
								"aria-invalid": t,
								children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select credentials" })
							}), /* @__PURE__ */ jsxs(SelectContent, { children: [
								/* @__PURE__ */ jsx(SelectItem, {
									value: "include",
									children: "Include"
								}),
								/* @__PURE__ */ jsx(SelectItem, {
									value: "omit",
									children: "Omit"
								}),
								/* @__PURE__ */ jsx(SelectItem, {
									value: "same-origin",
									children: "Same-origin"
								})
							] })]
						})]
					});
				}
			}) }) })] })
		})
	});
};
function ContextMenu({ ...e }) {
	return /* @__PURE__ */ jsx(Root2$1, {
		"data-slot": "context-menu",
		...e
	});
}
function ContextMenuTrigger({ ...e }) {
	return /* @__PURE__ */ jsx(Trigger, {
		"data-slot": "context-menu-trigger",
		...e
	});
}
function ContextMenuContent({ className: e,...t }) {
	let [n, i] = useState(null);
	return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Portal2, {
		container: n,
		children: /* @__PURE__ */ jsx(Content2, {
			"data-slot": "context-menu-content",
			className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 max-h-(--radix-context-menu-content-available-height) origin-(--radix-context-menu-content-transform-origin) z-50 min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border p-1 shadow-md", e),
			...t
		})
	}), /* @__PURE__ */ jsx("div", {
		ref: i,
		style: { display: "contents" }
	})] });
}
function ContextMenuItem({ className: e, inset: t, variant: n = "default",...i }) {
	return /* @__PURE__ */ jsx(Item2$1, {
		"data-slot": "context-menu-item",
		"data-inset": t,
		"data-variant": n,
		className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden data-disabled:pointer-events-none data-inset:pl-8 data-disabled:opacity-50 relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", e),
		...i
	});
}
function useCombinedRefs() {
	var e = [...arguments];
	return useMemo(() => (t) => {
		e.forEach((e) => e(t));
	}, e);
}
var canUseDOM = typeof window < "u" && window.document !== void 0 && window.document.createElement !== void 0;
function isWindow(e) {
	let t = Object.prototype.toString.call(e);
	return t === "[object Window]" || t === "[object global]";
}
function isNode(e) {
	return "nodeType" in e;
}
function getWindow(e) {
	return e ? isWindow(e) ? e : isNode(e) ? e.ownerDocument?.defaultView ?? window : window : window;
}
function isDocument(e) {
	let { Document: t } = getWindow(e);
	return e instanceof t;
}
function isHTMLElement(e) {
	return isWindow(e) ? !1 : e instanceof getWindow(e).HTMLElement;
}
function isSVGElement(e) {
	return e instanceof getWindow(e).SVGElement;
}
function getOwnerDocument(e) {
	return e ? isWindow(e) ? e.document : isNode(e) ? isDocument(e) ? e : isHTMLElement(e) || isSVGElement(e) ? e.ownerDocument : document : document : document;
}
var useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;
function useEvent(e) {
	let t = useRef(e);
	return useIsomorphicLayoutEffect(() => {
		t.current = e;
	}), useCallback(function() {
		var e = [...arguments];
		return t.current == null ? void 0 : t.current(...e);
	}, []);
}
function useInterval() {
	let e = useRef(null), t = useCallback((t, n) => {
		e.current = setInterval(t, n);
	}, []), n = useCallback(() => {
		e.current !== null && (clearInterval(e.current), e.current = null);
	}, []);
	return [t, n];
}
function useLatestValue(e, t) {
	t === void 0 && (t = [e]);
	let n = useRef(e);
	return useIsomorphicLayoutEffect(() => {
		n.current !== e && (n.current = e);
	}, t), n;
}
function useLazyMemo(e, t) {
	let n = useRef();
	return useMemo(() => {
		let t = e(n.current);
		return n.current = t, t;
	}, [...t]);
}
function useNodeRef(e) {
	let t = useEvent(e), n = useRef(null), i = useCallback((e) => {
		e !== n.current && t?.(e, n.current), n.current = e;
	}, []);
	return [n, i];
}
function usePrevious(e) {
	let t = useRef();
	return useEffect(() => {
		t.current = e;
	}, [e]), t.current;
}
var ids = {};
function useUniqueId(e, t) {
	return useMemo(() => {
		if (t) return t;
		let n = ids[e] == null ? 0 : ids[e] + 1;
		return ids[e] = n, e + "-" + n;
	}, [e, t]);
}
function createAdjustmentFn(e) {
	return function(t) {
		return [...arguments].slice(1).reduce((t, n) => {
			let i = Object.entries(n);
			for (let [n, a] of i) {
				let i = t[n];
				i != null && (t[n] = i + e * a);
			}
			return t;
		}, { ...t });
	};
}
var add = /* @__PURE__ */ createAdjustmentFn(1), subtract = /* @__PURE__ */ createAdjustmentFn(-1);
function hasViewportRelativeCoordinates(e) {
	return "clientX" in e && "clientY" in e;
}
function isKeyboardEvent(e) {
	if (!e) return !1;
	let { KeyboardEvent: t } = getWindow(e.target);
	return t && e instanceof t;
}
function isTouchEvent(e) {
	if (!e) return !1;
	let { TouchEvent: t } = getWindow(e.target);
	return t && e instanceof t;
}
function getEventCoordinates(e) {
	if (isTouchEvent(e)) {
		if (e.touches && e.touches.length) {
			let { clientX: t, clientY: n } = e.touches[0];
			return {
				x: t,
				y: n
			};
		} else if (e.changedTouches && e.changedTouches.length) {
			let { clientX: t, clientY: n } = e.changedTouches[0];
			return {
				x: t,
				y: n
			};
		}
	}
	return hasViewportRelativeCoordinates(e) ? {
		x: e.clientX,
		y: e.clientY
	} : null;
}
var CSS$1 = /* @__PURE__ */ Object.freeze({
	Translate: { toString(e) {
		if (!e) return;
		let { x: t, y: n } = e;
		return "translate3d(" + (t ? Math.round(t) : 0) + "px, " + (n ? Math.round(n) : 0) + "px, 0)";
	} },
	Scale: { toString(e) {
		if (!e) return;
		let { scaleX: t, scaleY: n } = e;
		return "scaleX(" + t + ") scaleY(" + n + ")";
	} },
	Transform: { toString(e) {
		if (e) return [CSS$1.Translate.toString(e), CSS$1.Scale.toString(e)].join(" ");
	} },
	Transition: { toString(e) {
		let { property: t, duration: n, easing: i } = e;
		return t + " " + n + "ms " + i;
	} }
}), SELECTOR = "a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";
function findFirstFocusableNode(e) {
	return e.matches(SELECTOR) ? e : e.querySelector(SELECTOR);
}
var hiddenStyles = { display: "none" };
function HiddenText(e) {
	let { id: t, value: n } = e;
	return React.createElement("div", {
		id: t,
		style: hiddenStyles
	}, n);
}
function LiveRegion(e) {
	let { id: t, announcement: n, ariaLiveType: i = "assertive" } = e;
	return React.createElement("div", {
		id: t,
		style: {
			position: "fixed",
			top: 0,
			left: 0,
			width: 1,
			height: 1,
			margin: -1,
			border: 0,
			padding: 0,
			overflow: "hidden",
			clip: "rect(0 0 0 0)",
			clipPath: "inset(100%)",
			whiteSpace: "nowrap"
		},
		role: "status",
		"aria-live": i,
		"aria-atomic": !0
	}, n);
}
function useAnnouncement() {
	let [e, t] = useState("");
	return {
		announce: useCallback((e) => {
			e != null && t(e);
		}, []),
		announcement: e
	};
}
var DndMonitorContext = /* @__PURE__ */ createContext(null);
function useDndMonitor(e) {
	let t = useContext(DndMonitorContext);
	useEffect(() => {
		if (!t) throw Error("useDndMonitor must be used within a children of <DndContext>");
		return t(e);
	}, [e, t]);
}
function useDndMonitorProvider() {
	let [e] = useState(() => /* @__PURE__ */ new Set()), t = useCallback((t) => (e.add(t), () => e.delete(t)), [e]);
	return [useCallback((t) => {
		let { type: n, event: i } = t;
		e.forEach((e) => e[n]?.call(e, i));
	}, [e]), t];
}
var defaultScreenReaderInstructions = { draggable: "\n    To pick up a draggable item, press the space bar.\n    While dragging, use the arrow keys to move the item.\n    Press space again to drop the item in its new position, or press escape to cancel.\n  " }, defaultAnnouncements = {
	onDragStart(e) {
		let { active: t } = e;
		return "Picked up draggable item " + t.id + ".";
	},
	onDragOver(e) {
		let { active: t, over: n } = e;
		return n ? "Draggable item " + t.id + " was moved over droppable area " + n.id + "." : "Draggable item " + t.id + " is no longer over a droppable area.";
	},
	onDragEnd(e) {
		let { active: t, over: n } = e;
		return n ? "Draggable item " + t.id + " was dropped over droppable area " + n.id : "Draggable item " + t.id + " was dropped.";
	},
	onDragCancel(e) {
		let { active: t } = e;
		return "Dragging was cancelled. Draggable item " + t.id + " was dropped.";
	}
};
function Accessibility(e) {
	let { announcements: t = defaultAnnouncements, container: n, hiddenTextDescribedById: i, screenReaderInstructions: a = defaultScreenReaderInstructions } = e, { announce: o, announcement: s } = useAnnouncement(), c = useUniqueId("DndLiveRegion"), [d, f] = useState(!1);
	if (useEffect(() => {
		f(!0);
	}, []), useDndMonitor(useMemo(() => ({
		onDragStart(e) {
			let { active: n } = e;
			o(t.onDragStart({ active: n }));
		},
		onDragMove(e) {
			let { active: n, over: i } = e;
			t.onDragMove && o(t.onDragMove({
				active: n,
				over: i
			}));
		},
		onDragOver(e) {
			let { active: n, over: i } = e;
			o(t.onDragOver({
				active: n,
				over: i
			}));
		},
		onDragEnd(e) {
			let { active: n, over: i } = e;
			o(t.onDragEnd({
				active: n,
				over: i
			}));
		},
		onDragCancel(e) {
			let { active: n, over: i } = e;
			o(t.onDragCancel({
				active: n,
				over: i
			}));
		}
	}), [o, t])), !d) return null;
	let g = React.createElement(React.Fragment, null, React.createElement(HiddenText, {
		id: i,
		value: a.draggable
	}), React.createElement(LiveRegion, {
		id: c,
		announcement: s
	}));
	return n ? createPortal(g, n) : g;
}
var Action;
(function(e) {
	e.DragStart = "dragStart", e.DragMove = "dragMove", e.DragEnd = "dragEnd", e.DragCancel = "dragCancel", e.DragOver = "dragOver", e.RegisterDroppable = "registerDroppable", e.SetDroppableDisabled = "setDroppableDisabled", e.UnregisterDroppable = "unregisterDroppable";
})(Action ||= {});
function noop() {}
function useSensor(e, t) {
	return useMemo(() => ({
		sensor: e,
		options: t ?? {}
	}), [e, t]);
}
function useSensors() {
	var e = [...arguments];
	return useMemo(() => [...e].filter((e) => e != null), [...e]);
}
var defaultCoordinates = /* @__PURE__ */ Object.freeze({
	x: 0,
	y: 0
});
function distanceBetween(e, t) {
	return Math.sqrt((e.x - t.x) ** 2 + (e.y - t.y) ** 2);
}
function getRelativeTransformOrigin(e, t) {
	let n = getEventCoordinates(e);
	if (!n) return "0 0";
	let i = {
		x: (n.x - t.left) / t.width * 100,
		y: (n.y - t.top) / t.height * 100
	};
	return i.x + "% " + i.y + "%";
}
function sortCollisionsAsc(e, t) {
	let { data: { value: n } } = e, { data: { value: i } } = t;
	return n - i;
}
function sortCollisionsDesc(e, t) {
	let { data: { value: n } } = e, { data: { value: i } } = t;
	return i - n;
}
function cornersOfRectangle(e) {
	let { left: t, top: n, height: i, width: a } = e;
	return [
		{
			x: t,
			y: n
		},
		{
			x: t + a,
			y: n
		},
		{
			x: t,
			y: n + i
		},
		{
			x: t + a,
			y: n + i
		}
	];
}
function getFirstCollision(e, t) {
	if (!e || e.length === 0) return null;
	let [n] = e;
	return t ? n[t] : n;
}
function centerOfRectangle(e, t, n) {
	return t === void 0 && (t = e.left), n === void 0 && (n = e.top), {
		x: t + e.width * .5,
		y: n + e.height * .5
	};
}
var closestCenter = (e) => {
	let { collisionRect: t, droppableRects: n, droppableContainers: i } = e, a = centerOfRectangle(t, t.left, t.top), o = [];
	for (let e of i) {
		let { id: t } = e, i = n.get(t);
		if (i) {
			let n = distanceBetween(centerOfRectangle(i), a);
			o.push({
				id: t,
				data: {
					droppableContainer: e,
					value: n
				}
			});
		}
	}
	return o.sort(sortCollisionsAsc);
}, closestCorners = (e) => {
	let { collisionRect: t, droppableRects: n, droppableContainers: i } = e, a = cornersOfRectangle(t), o = [];
	for (let e of i) {
		let { id: t } = e, i = n.get(t);
		if (i) {
			let n = cornersOfRectangle(i), s = a.reduce((e, t, i) => e + distanceBetween(n[i], t), 0), c = Number((s / 4).toFixed(4));
			o.push({
				id: t,
				data: {
					droppableContainer: e,
					value: c
				}
			});
		}
	}
	return o.sort(sortCollisionsAsc);
};
function getIntersectionRatio(e, t) {
	let n = Math.max(t.top, e.top), i = Math.max(t.left, e.left), a = Math.min(t.left + t.width, e.left + e.width), o = Math.min(t.top + t.height, e.top + e.height), s = a - i, c = o - n;
	if (i < a && n < o) {
		let n = t.width * t.height, i = e.width * e.height, a = s * c, o = a / (n + i - a);
		return Number(o.toFixed(4));
	}
	return 0;
}
var rectIntersection = (e) => {
	let { collisionRect: t, droppableRects: n, droppableContainers: i } = e, a = [];
	for (let e of i) {
		let { id: i } = e, o = n.get(i);
		if (o) {
			let n = getIntersectionRatio(o, t);
			n > 0 && a.push({
				id: i,
				data: {
					droppableContainer: e,
					value: n
				}
			});
		}
	}
	return a.sort(sortCollisionsDesc);
};
function adjustScale(e, t, n) {
	return {
		...e,
		scaleX: t && n ? t.width / n.width : 1,
		scaleY: t && n ? t.height / n.height : 1
	};
}
function getRectDelta(e, t) {
	return e && t ? {
		x: e.left - t.left,
		y: e.top - t.top
	} : defaultCoordinates;
}
function createRectAdjustmentFn(e) {
	return function(t) {
		return [...arguments].slice(1).reduce((t, n) => ({
			...t,
			top: t.top + e * n.y,
			bottom: t.bottom + e * n.y,
			left: t.left + e * n.x,
			right: t.right + e * n.x
		}), { ...t });
	};
}
var getAdjustedRect = /* @__PURE__ */ createRectAdjustmentFn(1);
function parseTransform(e) {
	if (e.startsWith("matrix3d(")) {
		let t = e.slice(9, -1).split(/, /);
		return {
			x: +t[12],
			y: +t[13],
			scaleX: +t[0],
			scaleY: +t[5]
		};
	} else if (e.startsWith("matrix(")) {
		let t = e.slice(7, -1).split(/, /);
		return {
			x: +t[4],
			y: +t[5],
			scaleX: +t[0],
			scaleY: +t[3]
		};
	}
	return null;
}
function inverseTransform(e, t, n) {
	let i = parseTransform(t);
	if (!i) return e;
	let { scaleX: a, scaleY: o, x: s, y: c } = i, d = e.left - s - (1 - a) * parseFloat(n), f = e.top - c - (1 - o) * parseFloat(n.slice(n.indexOf(" ") + 1)), g = a ? e.width / a : e.width, y = o ? e.height / o : e.height;
	return {
		width: g,
		height: y,
		top: f,
		right: d + g,
		bottom: f + y,
		left: d
	};
}
var defaultOptions = { ignoreTransform: !1 };
function getClientRect(e, t) {
	t === void 0 && (t = defaultOptions);
	let n = e.getBoundingClientRect();
	if (t.ignoreTransform) {
		let { transform: t, transformOrigin: i } = getWindow(e).getComputedStyle(e);
		t && (n = inverseTransform(n, t, i));
	}
	let { top: i, left: a, width: o, height: s, bottom: c, right: d } = n;
	return {
		top: i,
		left: a,
		width: o,
		height: s,
		bottom: c,
		right: d
	};
}
function getTransformAgnosticClientRect(e) {
	return getClientRect(e, { ignoreTransform: !0 });
}
function getWindowClientRect(e) {
	let t = e.innerWidth, n = e.innerHeight;
	return {
		top: 0,
		left: 0,
		right: t,
		bottom: n,
		width: t,
		height: n
	};
}
function isFixed(e, t) {
	return t === void 0 && (t = getWindow(e).getComputedStyle(e)), t.position === "fixed";
}
function isScrollable(e, t) {
	t === void 0 && (t = getWindow(e).getComputedStyle(e));
	let n = /(auto|scroll|overlay)/;
	return [
		"overflow",
		"overflowX",
		"overflowY"
	].some((e) => {
		let i = t[e];
		return typeof i == "string" ? n.test(i) : !1;
	});
}
function getScrollableAncestors(e, t) {
	let n = [];
	function i(a) {
		if (t != null && n.length >= t || !a) return n;
		if (isDocument(a) && a.scrollingElement != null && !n.includes(a.scrollingElement)) return n.push(a.scrollingElement), n;
		if (!isHTMLElement(a) || isSVGElement(a) || n.includes(a)) return n;
		let o = getWindow(e).getComputedStyle(a);
		return a !== e && isScrollable(a, o) && n.push(a), isFixed(a, o) ? n : i(a.parentNode);
	}
	return e ? i(e) : n;
}
function getFirstScrollableAncestor(e) {
	let [t] = getScrollableAncestors(e, 1);
	return t ?? null;
}
function getScrollableElement(e) {
	return !canUseDOM || !e ? null : isWindow(e) ? e : isNode(e) ? isDocument(e) || e === getOwnerDocument(e).scrollingElement ? window : isHTMLElement(e) ? e : null : null;
}
function getScrollXCoordinate(e) {
	return isWindow(e) ? e.scrollX : e.scrollLeft;
}
function getScrollYCoordinate(e) {
	return isWindow(e) ? e.scrollY : e.scrollTop;
}
function getScrollCoordinates(e) {
	return {
		x: getScrollXCoordinate(e),
		y: getScrollYCoordinate(e)
	};
}
var Direction;
(function(e) {
	e[e.Forward = 1] = "Forward", e[e.Backward = -1] = "Backward";
})(Direction ||= {});
function isDocumentScrollingElement(e) {
	return !canUseDOM || !e ? !1 : e === document.scrollingElement;
}
function getScrollPosition(e) {
	let t = {
		x: 0,
		y: 0
	}, n = isDocumentScrollingElement(e) ? {
		height: window.innerHeight,
		width: window.innerWidth
	} : {
		height: e.clientHeight,
		width: e.clientWidth
	}, i = {
		x: e.scrollWidth - n.width,
		y: e.scrollHeight - n.height
	}, a = e.scrollTop <= t.y, o = e.scrollLeft <= t.x, s = e.scrollTop >= i.y, c = e.scrollLeft >= i.x;
	return {
		isTop: a,
		isLeft: o,
		isBottom: s,
		isRight: c,
		maxScroll: i,
		minScroll: t
	};
}
var defaultThreshold = {
	x: .2,
	y: .2
};
function getScrollDirectionAndSpeed(e, t, n, i, a) {
	let { top: o, left: s, right: c, bottom: d } = n;
	i === void 0 && (i = 10), a === void 0 && (a = defaultThreshold);
	let { isTop: f, isBottom: g, isLeft: y, isRight: b } = getScrollPosition(e), x = {
		x: 0,
		y: 0
	}, S = {
		x: 0,
		y: 0
	}, C = {
		height: t.height * a.y,
		width: t.width * a.x
	};
	return !f && o <= t.top + C.height ? (x.y = Direction.Backward, S.y = i * Math.abs((t.top + C.height - o) / C.height)) : !g && d >= t.bottom - C.height && (x.y = Direction.Forward, S.y = i * Math.abs((t.bottom - C.height - d) / C.height)), !b && c >= t.right - C.width ? (x.x = Direction.Forward, S.x = i * Math.abs((t.right - C.width - c) / C.width)) : !y && s <= t.left + C.width && (x.x = Direction.Backward, S.x = i * Math.abs((t.left + C.width - s) / C.width)), {
		direction: x,
		speed: S
	};
}
function getScrollElementRect(e) {
	if (e === document.scrollingElement) {
		let { innerWidth: e, innerHeight: t } = window;
		return {
			top: 0,
			left: 0,
			right: e,
			bottom: t,
			width: e,
			height: t
		};
	}
	let { top: t, left: n, right: i, bottom: a } = e.getBoundingClientRect();
	return {
		top: t,
		left: n,
		right: i,
		bottom: a,
		width: e.clientWidth,
		height: e.clientHeight
	};
}
function getScrollOffsets(e) {
	return e.reduce((e, t) => add(e, getScrollCoordinates(t)), defaultCoordinates);
}
function getScrollXOffset(e) {
	return e.reduce((e, t) => e + getScrollXCoordinate(t), 0);
}
function getScrollYOffset(e) {
	return e.reduce((e, t) => e + getScrollYCoordinate(t), 0);
}
function scrollIntoViewIfNeeded(e, t) {
	if (t === void 0 && (t = getClientRect), !e) return;
	let { top: n, left: i, bottom: a, right: o } = t(e);
	getFirstScrollableAncestor(e) && (a <= 0 || o <= 0 || n >= window.innerHeight || i >= window.innerWidth) && e.scrollIntoView({
		block: "center",
		inline: "center"
	});
}
var properties = [[
	"x",
	["left", "right"],
	getScrollXOffset
], [
	"y",
	["top", "bottom"],
	getScrollYOffset
]], Rect = class {
	constructor(e, t) {
		this.rect = void 0, this.width = void 0, this.height = void 0, this.top = void 0, this.bottom = void 0, this.right = void 0, this.left = void 0;
		let n = getScrollableAncestors(t), i = getScrollOffsets(n);
		this.rect = { ...e }, this.width = e.width, this.height = e.height;
		for (let [e, t, a] of properties) for (let o of t) Object.defineProperty(this, o, {
			get: () => {
				let t = a(n), s = i[e] - t;
				return this.rect[o] + s;
			},
			enumerable: !0
		});
		Object.defineProperty(this, "rect", { enumerable: !1 });
	}
}, Listeners = class {
	constructor(e) {
		this.target = void 0, this.listeners = [], this.removeAll = () => {
			this.listeners.forEach((e) => this.target?.removeEventListener(...e));
		}, this.target = e;
	}
	add(e, t, n) {
		var i;
		(i = this.target) == null || i.addEventListener(e, t, n), this.listeners.push([
			e,
			t,
			n
		]);
	}
};
function getEventListenerTarget(e) {
	let { EventTarget: t } = getWindow(e);
	return e instanceof t ? e : getOwnerDocument(e);
}
function hasExceededDistance(e, t) {
	let n = Math.abs(e.x), i = Math.abs(e.y);
	return typeof t == "number" ? Math.sqrt(n ** 2 + i ** 2) > t : "x" in t && "y" in t ? n > t.x && i > t.y : "x" in t ? n > t.x : "y" in t ? i > t.y : !1;
}
var EventName;
(function(e) {
	e.Click = "click", e.DragStart = "dragstart", e.Keydown = "keydown", e.ContextMenu = "contextmenu", e.Resize = "resize", e.SelectionChange = "selectionchange", e.VisibilityChange = "visibilitychange";
})(EventName ||= {});
function preventDefault(e) {
	e.preventDefault();
}
function stopPropagation(e) {
	e.stopPropagation();
}
var KeyboardCode;
(function(e) {
	e.Space = "Space", e.Down = "ArrowDown", e.Right = "ArrowRight", e.Left = "ArrowLeft", e.Up = "ArrowUp", e.Esc = "Escape", e.Enter = "Enter", e.Tab = "Tab";
})(KeyboardCode ||= {});
var defaultKeyboardCodes = {
	start: [KeyboardCode.Space, KeyboardCode.Enter],
	cancel: [KeyboardCode.Esc],
	end: [
		KeyboardCode.Space,
		KeyboardCode.Enter,
		KeyboardCode.Tab
	]
}, defaultKeyboardCoordinateGetter = (e, t) => {
	let { currentCoordinates: n } = t;
	switch (e.code) {
		case KeyboardCode.Right: return {
			...n,
			x: n.x + 25
		};
		case KeyboardCode.Left: return {
			...n,
			x: n.x - 25
		};
		case KeyboardCode.Down: return {
			...n,
			y: n.y + 25
		};
		case KeyboardCode.Up: return {
			...n,
			y: n.y - 25
		};
	}
}, KeyboardSensor = class {
	constructor(e) {
		this.props = void 0, this.autoScrollEnabled = !1, this.referenceCoordinates = void 0, this.listeners = void 0, this.windowListeners = void 0, this.props = e;
		let { event: { target: t } } = e;
		this.props = e, this.listeners = new Listeners(getOwnerDocument(t)), this.windowListeners = new Listeners(getWindow(t)), this.handleKeyDown = this.handleKeyDown.bind(this), this.handleCancel = this.handleCancel.bind(this), this.attach();
	}
	attach() {
		this.handleStart(), this.windowListeners.add(EventName.Resize, this.handleCancel), this.windowListeners.add(EventName.VisibilityChange, this.handleCancel), setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));
	}
	handleStart() {
		let { activeNode: e, onStart: t } = this.props, n = e.node.current;
		n && scrollIntoViewIfNeeded(n), t(defaultCoordinates);
	}
	handleKeyDown(e) {
		if (isKeyboardEvent(e)) {
			let { active: t, context: n, options: i } = this.props, { keyboardCodes: a = defaultKeyboardCodes, coordinateGetter: o = defaultKeyboardCoordinateGetter, scrollBehavior: s = "smooth" } = i, { code: c } = e;
			if (a.end.includes(c)) {
				this.handleEnd(e);
				return;
			}
			if (a.cancel.includes(c)) {
				this.handleCancel(e);
				return;
			}
			let { collisionRect: d } = n.current, f = d ? {
				x: d.left,
				y: d.top
			} : defaultCoordinates;
			this.referenceCoordinates ||= f;
			let g = o(e, {
				active: t,
				context: n.current,
				currentCoordinates: f
			});
			if (g) {
				let t = subtract(g, f), i = {
					x: 0,
					y: 0
				}, { scrollableAncestors: a } = n.current;
				for (let n of a) {
					let a = e.code, { isTop: o, isRight: c, isLeft: d, isBottom: f, maxScroll: y, minScroll: b } = getScrollPosition(n), x = getScrollElementRect(n), S = {
						x: Math.min(a === KeyboardCode.Right ? x.right - x.width / 2 : x.right, Math.max(a === KeyboardCode.Right ? x.left : x.left + x.width / 2, g.x)),
						y: Math.min(a === KeyboardCode.Down ? x.bottom - x.height / 2 : x.bottom, Math.max(a === KeyboardCode.Down ? x.top : x.top + x.height / 2, g.y))
					}, C = a === KeyboardCode.Right && !c || a === KeyboardCode.Left && !d, w = a === KeyboardCode.Down && !f || a === KeyboardCode.Up && !o;
					if (C && S.x !== g.x) {
						let e = n.scrollLeft + t.x, o = a === KeyboardCode.Right && e <= y.x || a === KeyboardCode.Left && e >= b.x;
						if (o && !t.y) {
							n.scrollTo({
								left: e,
								behavior: s
							});
							return;
						}
						o ? i.x = n.scrollLeft - e : i.x = a === KeyboardCode.Right ? n.scrollLeft - y.x : n.scrollLeft - b.x, i.x && n.scrollBy({
							left: -i.x,
							behavior: s
						});
						break;
					} else if (w && S.y !== g.y) {
						let e = n.scrollTop + t.y, o = a === KeyboardCode.Down && e <= y.y || a === KeyboardCode.Up && e >= b.y;
						if (o && !t.x) {
							n.scrollTo({
								top: e,
								behavior: s
							});
							return;
						}
						o ? i.y = n.scrollTop - e : i.y = a === KeyboardCode.Down ? n.scrollTop - y.y : n.scrollTop - b.y, i.y && n.scrollBy({
							top: -i.y,
							behavior: s
						});
						break;
					}
				}
				this.handleMove(e, add(subtract(g, this.referenceCoordinates), i));
			}
		}
	}
	handleMove(e, t) {
		let { onMove: n } = this.props;
		e.preventDefault(), n(t);
	}
	handleEnd(e) {
		let { onEnd: t } = this.props;
		e.preventDefault(), this.detach(), t();
	}
	handleCancel(e) {
		let { onCancel: t } = this.props;
		e.preventDefault(), this.detach(), t();
	}
	detach() {
		this.listeners.removeAll(), this.windowListeners.removeAll();
	}
};
KeyboardSensor.activators = [{
	eventName: "onKeyDown",
	handler: (e, t, n) => {
		let { keyboardCodes: i = defaultKeyboardCodes, onActivation: a } = t, { active: o } = n, { code: s } = e.nativeEvent;
		if (i.start.includes(s)) {
			let t = o.activatorNode.current;
			return t && e.target !== t ? !1 : (e.preventDefault(), a?.({ event: e.nativeEvent }), !0);
		}
		return !1;
	}
}];
function isDistanceConstraint(e) {
	return !!(e && "distance" in e);
}
function isDelayConstraint(e) {
	return !!(e && "delay" in e);
}
var AbstractPointerSensor = class {
	constructor(e, t, n) {
		n === void 0 && (n = getEventListenerTarget(e.event.target)), this.props = void 0, this.events = void 0, this.autoScrollEnabled = !0, this.document = void 0, this.activated = !1, this.initialCoordinates = void 0, this.timeoutId = null, this.listeners = void 0, this.documentListeners = void 0, this.windowListeners = void 0, this.props = e, this.events = t;
		let { event: i } = e, { target: a } = i;
		this.props = e, this.events = t, this.document = getOwnerDocument(a), this.documentListeners = new Listeners(this.document), this.listeners = new Listeners(n), this.windowListeners = new Listeners(getWindow(a)), this.initialCoordinates = getEventCoordinates(i) ?? defaultCoordinates, this.handleStart = this.handleStart.bind(this), this.handleMove = this.handleMove.bind(this), this.handleEnd = this.handleEnd.bind(this), this.handleCancel = this.handleCancel.bind(this), this.handleKeydown = this.handleKeydown.bind(this), this.removeTextSelection = this.removeTextSelection.bind(this), this.attach();
	}
	attach() {
		let { events: e, props: { options: { activationConstraint: t, bypassActivationConstraint: n } } } = this;
		if (this.listeners.add(e.move.name, this.handleMove, { passive: !1 }), this.listeners.add(e.end.name, this.handleEnd), e.cancel && this.listeners.add(e.cancel.name, this.handleCancel), this.windowListeners.add(EventName.Resize, this.handleCancel), this.windowListeners.add(EventName.DragStart, preventDefault), this.windowListeners.add(EventName.VisibilityChange, this.handleCancel), this.windowListeners.add(EventName.ContextMenu, preventDefault), this.documentListeners.add(EventName.Keydown, this.handleKeydown), t) {
			if (n != null && n({
				event: this.props.event,
				activeNode: this.props.activeNode,
				options: this.props.options
			})) return this.handleStart();
			if (isDelayConstraint(t)) {
				this.timeoutId = setTimeout(this.handleStart, t.delay), this.handlePending(t);
				return;
			}
			if (isDistanceConstraint(t)) {
				this.handlePending(t);
				return;
			}
		}
		this.handleStart();
	}
	detach() {
		this.listeners.removeAll(), this.windowListeners.removeAll(), setTimeout(this.documentListeners.removeAll, 50), this.timeoutId !== null && (clearTimeout(this.timeoutId), this.timeoutId = null);
	}
	handlePending(e, t) {
		let { active: n, onPending: i } = this.props;
		i(n, e, this.initialCoordinates, t);
	}
	handleStart() {
		let { initialCoordinates: e } = this, { onStart: t } = this.props;
		e && (this.activated = !0, this.documentListeners.add(EventName.Click, stopPropagation, { capture: !0 }), this.removeTextSelection(), this.documentListeners.add(EventName.SelectionChange, this.removeTextSelection), t(e));
	}
	handleMove(e) {
		let { activated: t, initialCoordinates: n, props: i } = this, { onMove: a, options: { activationConstraint: o } } = i;
		if (!n) return;
		let s = getEventCoordinates(e) ?? defaultCoordinates, c = subtract(n, s);
		if (!t && o) {
			if (isDistanceConstraint(o)) {
				if (o.tolerance != null && hasExceededDistance(c, o.tolerance)) return this.handleCancel();
				if (hasExceededDistance(c, o.distance)) return this.handleStart();
			}
			if (isDelayConstraint(o) && hasExceededDistance(c, o.tolerance)) return this.handleCancel();
			this.handlePending(o, c);
			return;
		}
		e.cancelable && e.preventDefault(), a(s);
	}
	handleEnd() {
		let { onAbort: e, onEnd: t } = this.props;
		this.detach(), this.activated || e(this.props.active), t();
	}
	handleCancel() {
		let { onAbort: e, onCancel: t } = this.props;
		this.detach(), this.activated || e(this.props.active), t();
	}
	handleKeydown(e) {
		e.code === KeyboardCode.Esc && this.handleCancel();
	}
	removeTextSelection() {
		var e;
		(e = this.document.getSelection()) == null || e.removeAllRanges();
	}
}, events = {
	cancel: { name: "pointercancel" },
	move: { name: "pointermove" },
	end: { name: "pointerup" }
}, PointerSensor = class extends AbstractPointerSensor {
	constructor(e) {
		let { event: t } = e, n = getOwnerDocument(t.target);
		super(e, events, n);
	}
};
PointerSensor.activators = [{
	eventName: "onPointerDown",
	handler: (e, t) => {
		let { nativeEvent: n } = e, { onActivation: i } = t;
		return !n.isPrimary || n.button !== 0 ? !1 : (i?.({ event: n }), !0);
	}
}];
var events$1 = {
	move: { name: "mousemove" },
	end: { name: "mouseup" }
}, MouseButton;
(function(e) {
	e[e.RightClick = 2] = "RightClick";
})(MouseButton ||= {});
var MouseSensor = class extends AbstractPointerSensor {
	constructor(e) {
		super(e, events$1, getOwnerDocument(e.event.target));
	}
};
MouseSensor.activators = [{
	eventName: "onMouseDown",
	handler: (e, t) => {
		let { nativeEvent: n } = e, { onActivation: i } = t;
		return n.button === MouseButton.RightClick ? !1 : (i?.({ event: n }), !0);
	}
}];
var events$2 = {
	cancel: { name: "touchcancel" },
	move: { name: "touchmove" },
	end: { name: "touchend" }
}, TouchSensor = class extends AbstractPointerSensor {
	constructor(e) {
		super(e, events$2);
	}
	static setup() {
		return window.addEventListener(events$2.move.name, e, {
			capture: !1,
			passive: !1
		}), function() {
			window.removeEventListener(events$2.move.name, e);
		};
		function e() {}
	}
};
TouchSensor.activators = [{
	eventName: "onTouchStart",
	handler: (e, t) => {
		let { nativeEvent: n } = e, { onActivation: i } = t, { touches: a } = n;
		return a.length > 1 ? !1 : (i?.({ event: n }), !0);
	}
}];
var AutoScrollActivator;
(function(e) {
	e[e.Pointer = 0] = "Pointer", e[e.DraggableRect = 1] = "DraggableRect";
})(AutoScrollActivator ||= {});
var TraversalOrder;
(function(e) {
	e[e.TreeOrder = 0] = "TreeOrder", e[e.ReversedTreeOrder = 1] = "ReversedTreeOrder";
})(TraversalOrder ||= {});
function useAutoScroller(e) {
	let { acceleration: t, activator: n = AutoScrollActivator.Pointer, canScroll: i, draggingRect: a, enabled: o, interval: s = 5, order: c = TraversalOrder.TreeOrder, pointerCoordinates: d, scrollableAncestors: f, scrollableAncestorRects: g, delta: y, threshold: b } = e, x = useScrollIntent({
		delta: y,
		disabled: !o
	}), [S, C] = useInterval(), w = useRef({
		x: 0,
		y: 0
	}), E = useRef({
		x: 0,
		y: 0
	}), O = useMemo(() => {
		switch (n) {
			case AutoScrollActivator.Pointer: return d ? {
				top: d.y,
				bottom: d.y,
				left: d.x,
				right: d.x
			} : null;
			case AutoScrollActivator.DraggableRect: return a;
		}
	}, [
		n,
		a,
		d
	]), A = useRef(null), j = useCallback(() => {
		let e = A.current;
		if (!e) return;
		let t = w.current.x * E.current.x, n = w.current.y * E.current.y;
		e.scrollBy(t, n);
	}, []), M = useMemo(() => c === TraversalOrder.TreeOrder ? [...f].reverse() : f, [c, f]);
	useEffect(() => {
		if (!o || !f.length || !O) {
			C();
			return;
		}
		for (let e of M) {
			if (i?.(e) === !1) continue;
			let n = f.indexOf(e), a = g[n];
			if (!a) continue;
			let { direction: o, speed: c } = getScrollDirectionAndSpeed(e, a, O, t, b);
			for (let e of ["x", "y"]) x[e][o[e]] || (c[e] = 0, o[e] = 0);
			if (c.x > 0 || c.y > 0) {
				C(), A.current = e, S(j, s), w.current = c, E.current = o;
				return;
			}
		}
		w.current = {
			x: 0,
			y: 0
		}, E.current = {
			x: 0,
			y: 0
		}, C();
	}, [
		t,
		j,
		i,
		C,
		o,
		s,
		JSON.stringify(O),
		JSON.stringify(x),
		S,
		f,
		M,
		g,
		JSON.stringify(b)
	]);
}
var defaultScrollIntent = {
	x: {
		[Direction.Backward]: !1,
		[Direction.Forward]: !1
	},
	y: {
		[Direction.Backward]: !1,
		[Direction.Forward]: !1
	}
};
function useScrollIntent(e) {
	let { delta: t, disabled: n } = e, i = usePrevious(t);
	return useLazyMemo((e) => {
		if (n || !i || !e) return defaultScrollIntent;
		let a = {
			x: Math.sign(t.x - i.x),
			y: Math.sign(t.y - i.y)
		};
		return {
			x: {
				[Direction.Backward]: e.x[Direction.Backward] || a.x === -1,
				[Direction.Forward]: e.x[Direction.Forward] || a.x === 1
			},
			y: {
				[Direction.Backward]: e.y[Direction.Backward] || a.y === -1,
				[Direction.Forward]: e.y[Direction.Forward] || a.y === 1
			}
		};
	}, [
		n,
		t,
		i
	]);
}
function useCachedNode(e, t) {
	let n = t == null ? void 0 : e.get(t), i = n ? n.node.current : null;
	return useLazyMemo((e) => t == null ? null : i ?? e ?? null, [i, t]);
}
function useCombineActivators(e, t) {
	return useMemo(() => e.reduce((e, n) => {
		let { sensor: i } = n, a = i.activators.map((e) => ({
			eventName: e.eventName,
			handler: t(e.handler, n)
		}));
		return [...e, ...a];
	}, []), [e, t]);
}
var MeasuringStrategy;
(function(e) {
	e[e.Always = 0] = "Always", e[e.BeforeDragging = 1] = "BeforeDragging", e[e.WhileDragging = 2] = "WhileDragging";
})(MeasuringStrategy ||= {});
var MeasuringFrequency;
(function(e) {
	e.Optimized = "optimized";
})(MeasuringFrequency ||= {});
var defaultValue = /* @__PURE__ */ new Map();
function useDroppableMeasuring(e, t) {
	let { dragging: n, dependencies: i, config: a } = t, [o, s] = useState(null), { frequency: c, measure: d, strategy: f } = a, g = useRef(e), y = w(), b = useLatestValue(y), x = useCallback(function(e) {
		e === void 0 && (e = []), !b.current && s((t) => t === null ? e : t.concat(e.filter((e) => !t.includes(e))));
	}, [b]), S = useRef(null), C = useLazyMemo((t) => {
		if (y && !n) return defaultValue;
		if (!t || t === defaultValue || g.current !== e || o != null) {
			let t = /* @__PURE__ */ new Map();
			for (let n of e) {
				if (!n) continue;
				if (o && o.length > 0 && !o.includes(n.id) && n.rect.current) {
					t.set(n.id, n.rect.current);
					continue;
				}
				let e = n.node.current, i = e ? new Rect(d(e), e) : null;
				n.rect.current = i, i && t.set(n.id, i);
			}
			return t;
		}
		return t;
	}, [
		e,
		o,
		n,
		y,
		d
	]);
	return useEffect(() => {
		g.current = e;
	}, [e]), useEffect(() => {
		y || x();
	}, [n, y]), useEffect(() => {
		o && o.length > 0 && s(null);
	}, [JSON.stringify(o)]), useEffect(() => {
		y || typeof c != "number" || S.current !== null || (S.current = setTimeout(() => {
			x(), S.current = null;
		}, c));
	}, [
		c,
		y,
		x,
		...i
	]), {
		droppableRects: C,
		measureDroppableContainers: x,
		measuringScheduled: o != null
	};
	function w() {
		switch (f) {
			case MeasuringStrategy.Always: return !1;
			case MeasuringStrategy.BeforeDragging: return n;
			default: return !n;
		}
	}
}
function useInitialValue(e, t) {
	return useLazyMemo((n) => e ? n || (typeof t == "function" ? t(e) : e) : null, [t, e]);
}
function useInitialRect(e, t) {
	return useInitialValue(e, t);
}
function useMutationObserver(e) {
	let { callback: t, disabled: n } = e, i = useEvent(t), a = useMemo(() => {
		if (n || typeof window > "u" || window.MutationObserver === void 0) return;
		let { MutationObserver: e } = window;
		return new e(i);
	}, [i, n]);
	return useEffect(() => () => a?.disconnect(), [a]), a;
}
function useResizeObserver(e) {
	let { callback: t, disabled: n } = e, i = useEvent(t), a = useMemo(() => {
		if (n || typeof window > "u" || window.ResizeObserver === void 0) return;
		let { ResizeObserver: e } = window;
		return new e(i);
	}, [n]);
	return useEffect(() => () => a?.disconnect(), [a]), a;
}
function defaultMeasure(e) {
	return new Rect(getClientRect(e), e);
}
function useRect(e, t, n) {
	t === void 0 && (t = defaultMeasure);
	let [i, a] = useState(null);
	function o() {
		a((i) => {
			if (!e) return null;
			if (e.isConnected === !1) return i ?? n ?? null;
			let a = t(e);
			return JSON.stringify(i) === JSON.stringify(a) ? i : a;
		});
	}
	let s = useMutationObserver({ callback(t) {
		if (e) for (let n of t) {
			let { type: t, target: i } = n;
			if (t === "childList" && i instanceof HTMLElement && i.contains(e)) {
				o();
				break;
			}
		}
	} }), c = useResizeObserver({ callback: o });
	return useIsomorphicLayoutEffect(() => {
		o(), e ? (c?.observe(e), s?.observe(document.body, {
			childList: !0,
			subtree: !0
		})) : (c?.disconnect(), s?.disconnect());
	}, [e]), i;
}
function useRectDelta(e) {
	let t = useInitialValue(e);
	return getRectDelta(e, t);
}
var defaultValue$1 = [];
function useScrollableAncestors(e) {
	let t = useRef(e), n = useLazyMemo((n) => e ? n && n !== defaultValue$1 && e && t.current && e.parentNode === t.current.parentNode ? n : getScrollableAncestors(e) : defaultValue$1, [e]);
	return useEffect(() => {
		t.current = e;
	}, [e]), n;
}
function useScrollOffsets(e) {
	let [t, n] = useState(null), i = useRef(e), a = useCallback((e) => {
		let t = getScrollableElement(e.target);
		t && n((e) => e ? (e.set(t, getScrollCoordinates(t)), new Map(e)) : null);
	}, []);
	return useEffect(() => {
		let t = i.current;
		if (e !== t) {
			o(t);
			let s = e.map((e) => {
				let t = getScrollableElement(e);
				return t ? (t.addEventListener("scroll", a, { passive: !0 }), [t, getScrollCoordinates(t)]) : null;
			}).filter((e) => e != null);
			n(s.length ? new Map(s) : null), i.current = e;
		}
		return () => {
			o(e), o(t);
		};
		function o(e) {
			e.forEach((e) => {
				getScrollableElement(e)?.removeEventListener("scroll", a);
			});
		}
	}, [a, e]), useMemo(() => e.length ? t ? Array.from(t.values()).reduce((e, t) => add(e, t), defaultCoordinates) : getScrollOffsets(e) : defaultCoordinates, [e, t]);
}
function useScrollOffsetsDelta(e, t) {
	t === void 0 && (t = []);
	let n = useRef(null);
	return useEffect(() => {
		n.current = null;
	}, t), useEffect(() => {
		let t = e !== defaultCoordinates;
		t && !n.current && (n.current = e), !t && n.current && (n.current = null);
	}, [e]), n.current ? subtract(e, n.current) : defaultCoordinates;
}
function useSensorSetup(e) {
	useEffect(() => {
		if (!canUseDOM) return;
		let t = e.map((e) => {
			let { sensor: t } = e;
			return t.setup == null ? void 0 : t.setup();
		});
		return () => {
			for (let e of t) e?.();
		};
	}, e.map((e) => {
		let { sensor: t } = e;
		return t;
	}));
}
function useSyntheticListeners(e, t) {
	return useMemo(() => e.reduce((e, n) => {
		let { eventName: i, handler: a } = n;
		return e[i] = (e) => {
			a(e, t);
		}, e;
	}, {}), [e, t]);
}
function useWindowRect(e) {
	return useMemo(() => e ? getWindowClientRect(e) : null, [e]);
}
var defaultValue$2 = [];
function useRects(e, t) {
	t === void 0 && (t = getClientRect);
	let [n] = e, i = useWindowRect(n ? getWindow(n) : null), [a, o] = useState(defaultValue$2);
	function s() {
		o(() => e.length ? e.map((e) => isDocumentScrollingElement(e) ? i : new Rect(t(e), e)) : defaultValue$2);
	}
	let c = useResizeObserver({ callback: s });
	return useIsomorphicLayoutEffect(() => {
		c?.disconnect(), s(), e.forEach((e) => c?.observe(e));
	}, [e]), a;
}
function getMeasurableNode(e) {
	if (!e) return null;
	if (e.children.length > 1) return e;
	let t = e.children[0];
	return isHTMLElement(t) ? t : e;
}
function useDragOverlayMeasuring(e) {
	let { measure: t } = e, [n, i] = useState(null), a = useCallback((e) => {
		for (let { target: n } of e) if (isHTMLElement(n)) {
			i((e) => {
				let i = t(n);
				return e ? {
					...e,
					width: i.width,
					height: i.height
				} : i;
			});
			break;
		}
	}, [t]), o = useResizeObserver({ callback: a }), s = useCallback((e) => {
		let n = getMeasurableNode(e);
		o?.disconnect(), n && o?.observe(n), i(n ? t(n) : null);
	}, [t, o]), [c, d] = useNodeRef(s);
	return useMemo(() => ({
		nodeRef: c,
		rect: n,
		setRef: d
	}), [
		n,
		c,
		d
	]);
}
var defaultSensors = [{
	sensor: PointerSensor,
	options: {}
}, {
	sensor: KeyboardSensor,
	options: {}
}], defaultData = { current: {} }, defaultMeasuringConfiguration = {
	draggable: { measure: getTransformAgnosticClientRect },
	droppable: {
		measure: getTransformAgnosticClientRect,
		strategy: MeasuringStrategy.WhileDragging,
		frequency: MeasuringFrequency.Optimized
	},
	dragOverlay: { measure: getClientRect }
}, DroppableContainersMap = class extends Map {
	get(e) {
		return e == null ? void 0 : super.get(e) ?? void 0;
	}
	toArray() {
		return Array.from(this.values());
	}
	getEnabled() {
		return this.toArray().filter((e) => {
			let { disabled: t } = e;
			return !t;
		});
	}
	getNodeFor(e) {
		return this.get(e)?.node.current ?? void 0;
	}
}, defaultPublicContext = {
	activatorEvent: null,
	active: null,
	activeNode: null,
	activeNodeRect: null,
	collisions: null,
	containerNodeRect: null,
	draggableNodes: /* @__PURE__ */ new Map(),
	droppableRects: /* @__PURE__ */ new Map(),
	droppableContainers: /* @__PURE__ */ new DroppableContainersMap(),
	over: null,
	dragOverlay: {
		nodeRef: { current: null },
		rect: null,
		setRef: noop
	},
	scrollableAncestors: [],
	scrollableAncestorRects: [],
	measuringConfiguration: defaultMeasuringConfiguration,
	measureDroppableContainers: noop,
	windowRect: null,
	measuringScheduled: !1
}, defaultInternalContext = {
	activatorEvent: null,
	activators: [],
	active: null,
	activeNodeRect: null,
	ariaDescribedById: { draggable: "" },
	dispatch: noop,
	draggableNodes: /* @__PURE__ */ new Map(),
	over: null,
	measureDroppableContainers: noop
}, InternalContext = /* @__PURE__ */ createContext(defaultInternalContext), PublicContext = /* @__PURE__ */ createContext(defaultPublicContext);
function getInitialState() {
	return {
		draggable: {
			active: null,
			initialCoordinates: {
				x: 0,
				y: 0
			},
			nodes: /* @__PURE__ */ new Map(),
			translate: {
				x: 0,
				y: 0
			}
		},
		droppable: { containers: new DroppableContainersMap() }
	};
}
function reducer(e, t) {
	switch (t.type) {
		case Action.DragStart: return {
			...e,
			draggable: {
				...e.draggable,
				initialCoordinates: t.initialCoordinates,
				active: t.active
			}
		};
		case Action.DragMove: return e.draggable.active == null ? e : {
			...e,
			draggable: {
				...e.draggable,
				translate: {
					x: t.coordinates.x - e.draggable.initialCoordinates.x,
					y: t.coordinates.y - e.draggable.initialCoordinates.y
				}
			}
		};
		case Action.DragEnd:
		case Action.DragCancel: return {
			...e,
			draggable: {
				...e.draggable,
				active: null,
				initialCoordinates: {
					x: 0,
					y: 0
				},
				translate: {
					x: 0,
					y: 0
				}
			}
		};
		case Action.RegisterDroppable: {
			let { element: n } = t, { id: i } = n, a = new DroppableContainersMap(e.droppable.containers);
			return a.set(i, n), {
				...e,
				droppable: {
					...e.droppable,
					containers: a
				}
			};
		}
		case Action.SetDroppableDisabled: {
			let { id: n, key: i, disabled: a } = t, o = e.droppable.containers.get(n);
			if (!o || i !== o.key) return e;
			let s = new DroppableContainersMap(e.droppable.containers);
			return s.set(n, {
				...o,
				disabled: a
			}), {
				...e,
				droppable: {
					...e.droppable,
					containers: s
				}
			};
		}
		case Action.UnregisterDroppable: {
			let { id: n, key: i } = t, a = e.droppable.containers.get(n);
			if (!a || i !== a.key) return e;
			let o = new DroppableContainersMap(e.droppable.containers);
			return o.delete(n), {
				...e,
				droppable: {
					...e.droppable,
					containers: o
				}
			};
		}
		default: return e;
	}
}
function RestoreFocus(e) {
	let { disabled: t } = e, { active: n, activatorEvent: i, draggableNodes: a } = useContext(InternalContext), o = usePrevious(i), s = usePrevious(n?.id);
	return useEffect(() => {
		if (!t && !i && o && s != null) {
			if (!isKeyboardEvent(o) || document.activeElement === o.target) return;
			let e = a.get(s);
			if (!e) return;
			let { activatorNode: t, node: n } = e;
			if (!t.current && !n.current) return;
			requestAnimationFrame(() => {
				for (let e of [t.current, n.current]) {
					if (!e) continue;
					let t = findFirstFocusableNode(e);
					if (t) {
						t.focus();
						break;
					}
				}
			});
		}
	}, [
		i,
		t,
		a,
		s,
		o
	]), null;
}
function applyModifiers(e, t) {
	let { transform: n,...i } = t;
	return e != null && e.length ? e.reduce((e, t) => t({
		transform: e,
		...i
	}), n) : n;
}
function useMeasuringConfiguration(e) {
	return useMemo(() => ({
		draggable: {
			...defaultMeasuringConfiguration.draggable,
			...e?.draggable
		},
		droppable: {
			...defaultMeasuringConfiguration.droppable,
			...e?.droppable
		},
		dragOverlay: {
			...defaultMeasuringConfiguration.dragOverlay,
			...e?.dragOverlay
		}
	}), [
		e?.draggable,
		e?.droppable,
		e?.dragOverlay
	]);
}
function useLayoutShiftScrollCompensation(e) {
	let { activeNode: t, measure: n, initialRect: i, config: a = !0 } = e, o = useRef(!1), { x: s, y: c } = typeof a == "boolean" ? {
		x: a,
		y: a
	} : a;
	useIsomorphicLayoutEffect(() => {
		if (!s && !c || !t) {
			o.current = !1;
			return;
		}
		if (o.current || !i) return;
		let e = t?.node.current;
		if (!e || e.isConnected === !1) return;
		let a = n(e), d = getRectDelta(a, i);
		if (s || (d.x = 0), c || (d.y = 0), o.current = !0, Math.abs(d.x) > 0 || Math.abs(d.y) > 0) {
			let t = getFirstScrollableAncestor(e);
			t && t.scrollBy({
				top: d.y,
				left: d.x
			});
		}
	}, [
		t,
		s,
		c,
		i,
		n
	]);
}
var ActiveDraggableContext = /* @__PURE__ */ createContext({
	...defaultCoordinates,
	scaleX: 1,
	scaleY: 1
}), Status;
(function(e) {
	e[e.Uninitialized = 0] = "Uninitialized", e[e.Initializing = 1] = "Initializing", e[e.Initialized = 2] = "Initialized";
})(Status ||= {});
var DndContext = /* @__PURE__ */ memo(function(e) {
	let { id: t, accessibility: n, autoScroll: i = !0, children: a, sensors: o = defaultSensors, collisionDetection: s = rectIntersection, measuring: c, modifiers: d,...f } = e, [g, y] = useReducer(reducer, void 0, getInitialState), [b, x] = useDndMonitorProvider(), [S, C] = useState(Status.Uninitialized), w = S === Status.Initialized, { draggable: { active: E, nodes: O, translate: A }, droppable: { containers: j } } = g, M = E == null ? null : O.get(E), F = useRef({
		initial: null,
		translated: null
	}), I = useMemo(() => E == null ? null : {
		id: E,
		data: M?.data ?? defaultData,
		rect: F
	}, [E, M]), R = useRef(null), [zv, V] = useState(null), [Bv, Vv] = useState(null), Hv = useLatestValue(f, Object.values(f)), Uv = useUniqueId("DndDescribedBy", t), Wv = useMemo(() => j.getEnabled(), [j]), Gv = useMeasuringConfiguration(c), { droppableRects: Kv, measureDroppableContainers: q, measuringScheduled: qv } = useDroppableMeasuring(Wv, {
		dragging: w,
		dependencies: [A.x, A.y],
		config: Gv.droppable
	}), Jv = useCachedNode(O, E), Yv = useMemo(() => Bv ? getEventCoordinates(Bv) : null, [Bv]), Xv = Ly(), Zv = useInitialRect(Jv, Gv.draggable.measure);
	useLayoutShiftScrollCompensation({
		activeNode: E == null ? null : O.get(E),
		config: Xv.layoutShiftCompensation,
		initialRect: Zv,
		measure: Gv.draggable.measure
	});
	let Qv = useRect(Jv, Gv.draggable.measure, Zv), $v = useRect(Jv ? Jv.parentElement : null), ey = useRef({
		activatorEvent: null,
		active: null,
		activeNode: Jv,
		collisionRect: null,
		collisions: null,
		droppableRects: Kv,
		draggableNodes: O,
		draggingNode: null,
		draggingNodeRect: null,
		droppableContainers: j,
		over: null,
		scrollableAncestors: [],
		scrollAdjustedTranslate: null
	}), ty = j.getNodeFor(ey.current.over?.id), ny = useDragOverlayMeasuring({ measure: Gv.dragOverlay.measure }), ry = ny.nodeRef.current ?? Jv, iy = w ? ny.rect ?? Qv : null, ay = !!(ny.nodeRef.current && ny.rect), oy = useRectDelta(ay ? null : Qv), sy = useWindowRect(ry ? getWindow(ry) : null), ly = useScrollableAncestors(w ? ty ?? Jv : null), uy = useRects(ly), dy = applyModifiers(d, {
		transform: {
			x: A.x - oy.x,
			y: A.y - oy.y,
			scaleX: 1,
			scaleY: 1
		},
		activatorEvent: Bv,
		active: I,
		activeNodeRect: Qv,
		containerNodeRect: $v,
		draggingNodeRect: iy,
		over: ey.current.over,
		overlayNodeRect: ny.rect,
		scrollableAncestors: ly,
		scrollableAncestorRects: uy,
		windowRect: sy
	}), fy = Yv ? add(Yv, A) : null, py = useScrollOffsets(ly), my = useScrollOffsetsDelta(py), gy = useScrollOffsetsDelta(py, [Qv]), _y = add(dy, my), yy = iy ? getAdjustedRect(iy, dy) : null, by = I && yy ? s({
		active: I,
		collisionRect: yy,
		droppableRects: Kv,
		droppableContainers: Wv,
		pointerCoordinates: fy
	}) : null, xy = getFirstCollision(by, "id"), [Ey, Dy] = useState(null), Oy = ay ? dy : add(dy, gy), Ay = adjustScale(Oy, Ey?.rect ?? null, Qv), jy = useRef(null), My = useCallback((e, t) => {
		let { sensor: n, options: i } = t;
		if (R.current == null) return;
		let a = O.get(R.current);
		if (!a) return;
		let o = e.nativeEvent;
		jy.current = new n({
			active: R.current,
			activeNode: a,
			event: o,
			options: i,
			context: ey,
			onAbort(e) {
				if (!O.get(e)) return;
				let { onDragAbort: t } = Hv.current, n = { id: e };
				t?.(n), b({
					type: "onDragAbort",
					event: n
				});
			},
			onPending(e, t, n, i) {
				if (!O.get(e)) return;
				let { onDragPending: a } = Hv.current, o = {
					id: e,
					constraint: t,
					initialCoordinates: n,
					offset: i
				};
				a?.(o), b({
					type: "onDragPending",
					event: o
				});
			},
			onStart(e) {
				let t = R.current;
				if (t == null) return;
				let n = O.get(t);
				if (!n) return;
				let { onDragStart: i } = Hv.current, a = {
					activatorEvent: o,
					active: {
						id: t,
						data: n.data,
						rect: F
					}
				};
				unstable_batchedUpdates(() => {
					i?.(a), C(Status.Initializing), y({
						type: Action.DragStart,
						initialCoordinates: e,
						active: t
					}), b({
						type: "onDragStart",
						event: a
					}), V(jy.current), Vv(o);
				});
			},
			onMove(e) {
				y({
					type: Action.DragMove,
					coordinates: e
				});
			},
			onEnd: s(Action.DragEnd),
			onCancel: s(Action.DragCancel)
		});
		function s(e) {
			return async function() {
				let { active: t, collisions: n, over: i, scrollAdjustedTranslate: a } = ey.current, s = null;
				if (t && a) {
					let { cancelDrop: c } = Hv.current;
					s = {
						activatorEvent: o,
						active: t,
						collisions: n,
						delta: a,
						over: i
					}, e === Action.DragEnd && typeof c == "function" && await Promise.resolve(c(s)) && (e = Action.DragCancel);
				}
				R.current = null, unstable_batchedUpdates(() => {
					y({ type: e }), C(Status.Uninitialized), Dy(null), V(null), Vv(null), jy.current = null;
					let t = e === Action.DragEnd ? "onDragEnd" : "onDragCancel";
					if (s) {
						let e = Hv.current[t];
						e?.(s), b({
							type: t,
							event: s
						});
					}
				});
			};
		}
	}, [O]), Ny = useCallback((e, t) => (n, i) => {
		let a = n.nativeEvent, o = O.get(i);
		if (R.current !== null || !o || a.dndKit || a.defaultPrevented) return;
		let s = { active: o };
		e(n, t.options, s) === !0 && (a.dndKit = { capturedBy: t.sensor }, R.current = i, My(n, t));
	}, [O, My]), Py = useCombineActivators(o, Ny);
	useSensorSetup(o), useIsomorphicLayoutEffect(() => {
		Qv && S === Status.Initializing && C(Status.Initialized);
	}, [Qv, S]), useEffect(() => {
		let { onDragMove: e } = Hv.current, { active: t, activatorEvent: n, collisions: i, over: a } = ey.current;
		if (!t || !n) return;
		let o = {
			active: t,
			activatorEvent: n,
			collisions: i,
			delta: {
				x: _y.x,
				y: _y.y
			},
			over: a
		};
		unstable_batchedUpdates(() => {
			e?.(o), b({
				type: "onDragMove",
				event: o
			});
		});
	}, [_y.x, _y.y]), useEffect(() => {
		let { active: e, activatorEvent: t, collisions: n, droppableContainers: i, scrollAdjustedTranslate: a } = ey.current;
		if (!e || R.current == null || !t || !a) return;
		let { onDragOver: o } = Hv.current, s = i.get(xy), c = s && s.rect.current ? {
			id: s.id,
			rect: s.rect.current,
			data: s.data,
			disabled: s.disabled
		} : null, d = {
			active: e,
			activatorEvent: t,
			collisions: n,
			delta: {
				x: a.x,
				y: a.y
			},
			over: c
		};
		unstable_batchedUpdates(() => {
			Dy(c), o?.(d), b({
				type: "onDragOver",
				event: d
			});
		});
	}, [xy]), useIsomorphicLayoutEffect(() => {
		ey.current = {
			activatorEvent: Bv,
			active: I,
			activeNode: Jv,
			collisionRect: yy,
			collisions: by,
			droppableRects: Kv,
			draggableNodes: O,
			draggingNode: ry,
			draggingNodeRect: iy,
			droppableContainers: j,
			over: Ey,
			scrollableAncestors: ly,
			scrollAdjustedTranslate: _y
		}, F.current = {
			initial: iy,
			translated: yy
		};
	}, [
		I,
		Jv,
		by,
		yy,
		O,
		ry,
		iy,
		Kv,
		j,
		Ey,
		ly,
		_y
	]), useAutoScroller({
		...Xv,
		delta: A,
		draggingRect: yy,
		pointerCoordinates: fy,
		scrollableAncestors: ly,
		scrollableAncestorRects: uy
	});
	let Fy = useMemo(() => ({
		active: I,
		activeNode: Jv,
		activeNodeRect: Qv,
		activatorEvent: Bv,
		collisions: by,
		containerNodeRect: $v,
		dragOverlay: ny,
		draggableNodes: O,
		droppableContainers: j,
		droppableRects: Kv,
		over: Ey,
		measureDroppableContainers: q,
		scrollableAncestors: ly,
		scrollableAncestorRects: uy,
		measuringConfiguration: Gv,
		measuringScheduled: qv,
		windowRect: sy
	}), [
		I,
		Jv,
		Qv,
		Bv,
		by,
		$v,
		ny,
		O,
		j,
		Kv,
		Ey,
		q,
		ly,
		uy,
		Gv,
		qv,
		sy
	]), Iy = useMemo(() => ({
		activatorEvent: Bv,
		activators: Py,
		active: I,
		activeNodeRect: Qv,
		ariaDescribedById: { draggable: Uv },
		dispatch: y,
		draggableNodes: O,
		over: Ey,
		measureDroppableContainers: q
	}), [
		Bv,
		Py,
		I,
		Qv,
		y,
		Uv,
		O,
		Ey,
		q
	]);
	return React.createElement(DndMonitorContext.Provider, { value: x }, React.createElement(InternalContext.Provider, { value: Iy }, React.createElement(PublicContext.Provider, { value: Fy }, React.createElement(ActiveDraggableContext.Provider, { value: Ay }, a)), React.createElement(RestoreFocus, { disabled: n?.restoreFocus === !1 })), React.createElement(Accessibility, {
		...n,
		hiddenTextDescribedById: Uv
	}));
	function Ly() {
		let e = zv?.autoScrollEnabled === !1, t = typeof i == "object" ? i.enabled === !1 : i === !1, n = w && !e && !t;
		return typeof i == "object" ? {
			...i,
			enabled: n
		} : { enabled: n };
	}
}), NullContext = /* @__PURE__ */ createContext(null), defaultRole = "button", ID_PREFIX$1 = "Draggable";
function useDraggable(e) {
	let { id: t, data: n, disabled: i = !1, attributes: a } = e, o = useUniqueId(ID_PREFIX$1), { activators: s, activatorEvent: c, active: d, activeNodeRect: f, ariaDescribedById: g, draggableNodes: y, over: b } = useContext(InternalContext), { role: x = defaultRole, roleDescription: S = "draggable", tabIndex: C = 0 } = a ?? {}, w = d?.id === t, E = useContext(w ? ActiveDraggableContext : NullContext), [O, A] = useNodeRef(), [j, M] = useNodeRef(), F = useSyntheticListeners(s, t), I = useLatestValue(n);
	useIsomorphicLayoutEffect(() => (y.set(t, {
		id: t,
		key: o,
		node: O,
		activatorNode: j,
		data: I
	}), () => {
		let e = y.get(t);
		e && e.key === o && y.delete(t);
	}), [y, t]);
	let R = useMemo(() => ({
		role: x,
		tabIndex: C,
		"aria-disabled": i,
		"aria-pressed": w && x === defaultRole ? !0 : void 0,
		"aria-roledescription": S,
		"aria-describedby": g.draggable
	}), [
		i,
		x,
		C,
		w,
		S,
		g.draggable
	]);
	return {
		active: d,
		activatorEvent: c,
		activeNodeRect: f,
		attributes: R,
		isDragging: w,
		listeners: i ? void 0 : F,
		node: O,
		over: b,
		setNodeRef: A,
		setActivatorNodeRef: M,
		transform: E
	};
}
function useDndContext() {
	return useContext(PublicContext);
}
var ID_PREFIX$1$1 = "Droppable", defaultResizeObserverConfig = { timeout: 25 };
function useDroppable(e) {
	let { data: t, disabled: n = !1, id: i, resizeObserverConfig: a } = e, o = useUniqueId(ID_PREFIX$1$1), { active: s, dispatch: c, over: d, measureDroppableContainers: f } = useContext(InternalContext), g = useRef({ disabled: n }), y = useRef(!1), b = useRef(null), x = useRef(null), { disabled: S, updateMeasurementsFor: C, timeout: w } = {
		...defaultResizeObserverConfig,
		...a
	}, E = useLatestValue(C ?? i), O = useCallback(() => {
		if (!y.current) {
			y.current = !0;
			return;
		}
		x.current != null && clearTimeout(x.current), x.current = setTimeout(() => {
			f(Array.isArray(E.current) ? E.current : [E.current]), x.current = null;
		}, w);
	}, [w]), A = useResizeObserver({
		callback: O,
		disabled: S || !s
	}), j = useCallback((e, t) => {
		A && (t && (A.unobserve(t), y.current = !1), e && A.observe(e));
	}, [A]), [M, F] = useNodeRef(j), I = useLatestValue(t);
	return useEffect(() => {
		!A || !M.current || (A.disconnect(), y.current = !1, A.observe(M.current));
	}, [M, A]), useEffect(() => (c({
		type: Action.RegisterDroppable,
		element: {
			id: i,
			key: o,
			disabled: n,
			node: M,
			rect: b,
			data: I
		}
	}), () => c({
		type: Action.UnregisterDroppable,
		key: o,
		id: i
	})), [i]), useEffect(() => {
		n !== g.current.disabled && (c({
			type: Action.SetDroppableDisabled,
			id: i,
			key: o,
			disabled: n
		}), g.current.disabled = n);
	}, [
		i,
		o,
		n,
		c
	]), {
		active: s,
		rect: b,
		isOver: d?.id === i,
		node: M,
		over: d,
		setNodeRef: F
	};
}
function AnimationManager(e) {
	let { animation: t, children: n } = e, [i, a] = useState(null), [o, s] = useState(null), c = usePrevious(n);
	return !n && !i && c && a(c), useIsomorphicLayoutEffect(() => {
		if (!o) return;
		let e = i?.key, n = i?.props.id;
		if (e == null || n == null) {
			a(null);
			return;
		}
		Promise.resolve(t(n, o)).then(() => {
			a(null);
		});
	}, [
		t,
		i,
		o
	]), React.createElement(React.Fragment, null, n, i ? cloneElement(i, { ref: s }) : null);
}
var defaultTransform = {
	x: 0,
	y: 0,
	scaleX: 1,
	scaleY: 1
};
function NullifiedContextProvider(e) {
	let { children: t } = e;
	return React.createElement(InternalContext.Provider, { value: defaultInternalContext }, React.createElement(ActiveDraggableContext.Provider, { value: defaultTransform }, t));
}
var baseStyles = {
	position: "fixed",
	touchAction: "none"
}, defaultTransition$1 = (e) => isKeyboardEvent(e) ? "transform 250ms ease" : void 0, PositionedOverlay = /* @__PURE__ */ forwardRef((e, t) => {
	let { as: n, activatorEvent: i, adjustScale: a, children: o, className: s, rect: c, style: d, transform: f, transition: g = defaultTransition$1 } = e;
	if (!c) return null;
	let y = a ? f : {
		...f,
		scaleX: 1,
		scaleY: 1
	}, b = {
		...baseStyles,
		width: c.width,
		height: c.height,
		top: c.top,
		left: c.left,
		transform: CSS$1.Transform.toString(y),
		transformOrigin: a && i ? getRelativeTransformOrigin(i, c) : void 0,
		transition: typeof g == "function" ? g(i) : g,
		...d
	};
	return React.createElement(n, {
		className: s,
		style: b,
		ref: t
	}, o);
}), defaultDropAnimationSideEffects = (e) => (t) => {
	let { active: n, dragOverlay: i } = t, a = {}, { styles: o, className: s } = e;
	if (o != null && o.active) for (let [e, t] of Object.entries(o.active)) t !== void 0 && (a[e] = n.node.style.getPropertyValue(e), n.node.style.setProperty(e, t));
	if (o != null && o.dragOverlay) for (let [e, t] of Object.entries(o.dragOverlay)) t !== void 0 && i.node.style.setProperty(e, t);
	return s != null && s.active && n.node.classList.add(s.active), s != null && s.dragOverlay && i.node.classList.add(s.dragOverlay), function() {
		for (let [e, t] of Object.entries(a)) n.node.style.setProperty(e, t);
		s != null && s.active && n.node.classList.remove(s.active);
	};
}, defaultDropAnimationConfiguration = {
	duration: 250,
	easing: "ease",
	keyframes: (e) => {
		let { transform: { initial: t, final: n } } = e;
		return [{ transform: CSS$1.Transform.toString(t) }, { transform: CSS$1.Transform.toString(n) }];
	},
	sideEffects: /* @__PURE__ */ defaultDropAnimationSideEffects({ styles: { active: { opacity: "0" } } })
};
function useDropAnimation(e) {
	let { config: t, draggableNodes: n, droppableContainers: i, measuringConfiguration: a } = e;
	return useEvent((e, o) => {
		if (t === null) return;
		let s = n.get(e);
		if (!s) return;
		let c = s.node.current;
		if (!c) return;
		let d = getMeasurableNode(o);
		if (!d) return;
		let { transform: f } = getWindow(o).getComputedStyle(o), g = parseTransform(f);
		if (!g) return;
		let y = typeof t == "function" ? t : createDefaultDropAnimation(t);
		return scrollIntoViewIfNeeded(c, a.draggable.measure), y({
			active: {
				id: e,
				data: s.data,
				node: c,
				rect: a.draggable.measure(c)
			},
			draggableNodes: n,
			dragOverlay: {
				node: o,
				rect: a.dragOverlay.measure(d)
			},
			droppableContainers: i,
			measuringConfiguration: a,
			transform: g
		});
	});
}
function createDefaultDropAnimation(e) {
	let { duration: t, easing: n, sideEffects: i, keyframes: a } = {
		...defaultDropAnimationConfiguration,
		...e
	};
	return (e) => {
		let { active: o, dragOverlay: s, transform: c,...d } = e;
		if (!t) return;
		let f = {
			x: s.rect.left - o.rect.left,
			y: s.rect.top - o.rect.top
		}, g = {
			scaleX: c.scaleX === 1 ? 1 : o.rect.width * c.scaleX / s.rect.width,
			scaleY: c.scaleY === 1 ? 1 : o.rect.height * c.scaleY / s.rect.height
		}, y = {
			x: c.x - f.x,
			y: c.y - f.y,
			...g
		}, b = a({
			...d,
			active: o,
			dragOverlay: s,
			transform: {
				initial: c,
				final: y
			}
		}), [x] = b, S = b[b.length - 1];
		if (JSON.stringify(x) === JSON.stringify(S)) return;
		let C = i?.({
			active: o,
			dragOverlay: s,
			...d
		}), w = s.node.animate(b, {
			duration: t,
			easing: n,
			fill: "forwards"
		});
		return new Promise((e) => {
			w.onfinish = () => {
				C?.(), e();
			};
		});
	};
}
var key = 0;
function useKey(e) {
	return useMemo(() => {
		if (e != null) return key++, key;
	}, [e]);
}
var DragOverlay = /* @__PURE__ */ React.memo((e) => {
	let { adjustScale: t = !1, children: n, dropAnimation: i, style: a, transition: o, modifiers: s, wrapperElement: c = "div", className: d, zIndex: f = 999 } = e, { activatorEvent: g, active: y, activeNodeRect: b, containerNodeRect: x, draggableNodes: S, droppableContainers: C, dragOverlay: w, over: E, measuringConfiguration: O, scrollableAncestors: A, scrollableAncestorRects: j, windowRect: M } = useDndContext(), F = useContext(ActiveDraggableContext), I = useKey(y?.id), R = applyModifiers(s, {
		activatorEvent: g,
		active: y,
		activeNodeRect: b,
		containerNodeRect: x,
		draggingNodeRect: w.rect,
		over: E,
		overlayNodeRect: w.rect,
		scrollableAncestors: A,
		scrollableAncestorRects: j,
		transform: F,
		windowRect: M
	}), zv = useInitialValue(b), V = useDropAnimation({
		config: i,
		draggableNodes: S,
		droppableContainers: C,
		measuringConfiguration: O
	}), Bv = zv ? w.setRef : void 0;
	return React.createElement(NullifiedContextProvider, null, React.createElement(AnimationManager, { animation: V }, y && I ? React.createElement(PositionedOverlay, {
		key: I,
		id: y.id,
		ref: Bv,
		as: c,
		activatorEvent: g,
		adjustScale: t,
		className: d,
		transition: o,
		rect: zv,
		style: {
			zIndex: f,
			...a
		},
		transform: R
	}, n) : null));
}), restrictToHorizontalAxis = (e) => {
	let { transform: t } = e;
	return {
		...t,
		y: 0
	};
};
function restrictToBoundingRect(e, t, n) {
	let i = { ...e };
	return t.top + e.y <= n.top ? i.y = n.top - t.top : t.bottom + e.y >= n.top + n.height && (i.y = n.top + n.height - t.bottom), t.left + e.x <= n.left ? i.x = n.left - t.left : t.right + e.x >= n.left + n.width && (i.x = n.left + n.width - t.right), i;
}
var restrictToParentElement = (e) => {
	let { containerNodeRect: t, draggingNodeRect: n, transform: i } = e;
	return !n || !t ? i : restrictToBoundingRect(i, n, t);
}, restrictToVerticalAxis = (e) => {
	let { transform: t } = e;
	return {
		...t,
		x: 0
	};
};
function arrayMove(e, t, n) {
	let i = e.slice();
	return i.splice(n < 0 ? i.length + n : n, 0, i.splice(t, 1)[0]), i;
}
function getSortedRects(e, t) {
	return e.reduce((e, n, i) => {
		let a = t.get(n);
		return a && (e[i] = a), e;
	}, Array(e.length));
}
function isValidIndex(e) {
	return e !== null && e >= 0;
}
function itemsEqual(e, t) {
	if (e === t) return !0;
	if (e.length !== t.length) return !1;
	for (let n = 0; n < e.length; n++) if (e[n] !== t[n]) return !1;
	return !0;
}
function normalizeDisabled(e) {
	return typeof e == "boolean" ? {
		draggable: e,
		droppable: e
	} : e;
}
var defaultScale = {
	scaleX: 1,
	scaleY: 1
}, horizontalListSortingStrategy = (e) => {
	let { rects: t, activeNodeRect: n, activeIndex: i, overIndex: a, index: o } = e, s = t[i] ?? n;
	if (!s) return null;
	let c = getItemGap(t, o, i);
	if (o === i) {
		let e = t[a];
		return e ? {
			x: i < a ? e.left + e.width - (s.left + s.width) : e.left - s.left,
			y: 0,
			...defaultScale
		} : null;
	}
	return o > i && o <= a ? {
		x: -s.width - c,
		y: 0,
		...defaultScale
	} : o < i && o >= a ? {
		x: s.width + c,
		y: 0,
		...defaultScale
	} : {
		x: 0,
		y: 0,
		...defaultScale
	};
};
function getItemGap(e, t, n) {
	let i = e[t], a = e[t - 1], o = e[t + 1];
	return !i || !a && !o ? 0 : n < t ? a ? i.left - (a.left + a.width) : o.left - (i.left + i.width) : o ? o.left - (i.left + i.width) : i.left - (a.left + a.width);
}
var rectSortingStrategy = (e) => {
	let { rects: t, activeIndex: n, overIndex: i, index: a } = e, o = arrayMove(t, i, n), s = t[a], c = o[a];
	return !c || !s ? null : {
		x: c.left - s.left,
		y: c.top - s.top,
		scaleX: c.width / s.width,
		scaleY: c.height / s.height
	};
}, defaultScale$1 = {
	scaleX: 1,
	scaleY: 1
}, verticalListSortingStrategy = (e) => {
	let { activeIndex: t, activeNodeRect: n, index: i, rects: a, overIndex: o } = e, s = a[t] ?? n;
	if (!s) return null;
	if (i === t) {
		let e = a[o];
		return e ? {
			x: 0,
			y: t < o ? e.top + e.height - (s.top + s.height) : e.top - s.top,
			...defaultScale$1
		} : null;
	}
	let c = getItemGap$1(a, i, t);
	return i > t && i <= o ? {
		x: 0,
		y: -s.height - c,
		...defaultScale$1
	} : i < t && i >= o ? {
		x: 0,
		y: s.height + c,
		...defaultScale$1
	} : {
		x: 0,
		y: 0,
		...defaultScale$1
	};
};
function getItemGap$1(e, t, n) {
	let i = e[t], a = e[t - 1], o = e[t + 1];
	return i ? n < t ? a ? i.top - (a.top + a.height) : o ? o.top - (i.top + i.height) : 0 : o ? o.top - (i.top + i.height) : a ? i.top - (a.top + a.height) : 0 : 0;
}
var ID_PREFIX = "Sortable", Context = /* @__PURE__ */ React.createContext({
	activeIndex: -1,
	containerId: ID_PREFIX,
	disableTransforms: !1,
	items: [],
	overIndex: -1,
	useDragOverlay: !1,
	sortedRects: [],
	strategy: rectSortingStrategy,
	disabled: {
		draggable: !1,
		droppable: !1
	}
});
function SortableContext(e) {
	let { children: t, id: n, items: i, strategy: a = rectSortingStrategy, disabled: o = !1 } = e, { active: s, dragOverlay: c, droppableRects: d, over: f, measureDroppableContainers: g } = useDndContext(), y = useUniqueId(ID_PREFIX, n), b = c.rect !== null, x = useMemo(() => i.map((e) => typeof e == "object" && "id" in e ? e.id : e), [i]), S = s != null, C = s ? x.indexOf(s.id) : -1, w = f ? x.indexOf(f.id) : -1, E = useRef(x), O = !itemsEqual(x, E.current), A = w !== -1 && C === -1 || O, j = normalizeDisabled(o);
	useIsomorphicLayoutEffect(() => {
		O && S && g(x);
	}, [
		O,
		x,
		S,
		g
	]), useEffect(() => {
		E.current = x;
	}, [x]);
	let M = useMemo(() => ({
		activeIndex: C,
		containerId: y,
		disabled: j,
		disableTransforms: A,
		items: x,
		overIndex: w,
		useDragOverlay: b,
		sortedRects: getSortedRects(x, d),
		strategy: a
	}), [
		C,
		y,
		j.draggable,
		j.droppable,
		A,
		x,
		w,
		d,
		b,
		a
	]);
	return React.createElement(Context.Provider, { value: M }, t);
}
var defaultNewIndexGetter = (e) => {
	let { id: t, items: n, activeIndex: i, overIndex: a } = e;
	return arrayMove(n, i, a).indexOf(t);
}, defaultAnimateLayoutChanges = (e) => {
	let { containerId: t, isSorting: n, wasDragging: i, index: a, items: o, newIndex: s, previousItems: c, previousContainerId: d, transition: f } = e;
	return !f || !i || c !== o && a === s ? !1 : n ? !0 : s !== a && t === d;
}, defaultTransition = {
	duration: 200,
	easing: "ease"
}, transitionProperty = "transform", disabledTransition = /* @__PURE__ */ CSS$1.Transition.toString({
	property: transitionProperty,
	duration: 0,
	easing: "linear"
}), defaultAttributes = { roleDescription: "sortable" };
function useDerivedTransform(e) {
	let { disabled: t, index: n, node: i, rect: a } = e, [o, s] = useState(null), c = useRef(n);
	return useIsomorphicLayoutEffect(() => {
		if (!t && n !== c.current && i.current) {
			let e = a.current;
			if (e) {
				let t = getClientRect(i.current, { ignoreTransform: !0 }), n = {
					x: e.left - t.left,
					y: e.top - t.top,
					scaleX: e.width / t.width,
					scaleY: e.height / t.height
				};
				(n.x || n.y) && s(n);
			}
		}
		n !== c.current && (c.current = n);
	}, [
		t,
		n,
		i,
		a
	]), useEffect(() => {
		o && s(null);
	}, [o]), o;
}
function useSortable(e) {
	let { animateLayoutChanges: t = defaultAnimateLayoutChanges, attributes: n, disabled: i, data: a, getNewIndex: o = defaultNewIndexGetter, id: s, strategy: c, resizeObserverConfig: d, transition: f = defaultTransition } = e, { items: g, containerId: y, activeIndex: b, disabled: x, disableTransforms: S, sortedRects: C, overIndex: w, useDragOverlay: E, strategy: O } = useContext(Context), A = normalizeLocalDisabled(i, x), j = g.indexOf(s), M = useMemo(() => ({
		sortable: {
			containerId: y,
			index: j,
			items: g
		},
		...a
	}), [
		y,
		a,
		j,
		g
	]), F = useMemo(() => g.slice(g.indexOf(s)), [g, s]), { rect: I, node: R, isOver: zv, setNodeRef: V } = useDroppable({
		id: s,
		data: M,
		disabled: A.droppable,
		resizeObserverConfig: {
			updateMeasurementsFor: F,
			...d
		}
	}), { active: Bv, activatorEvent: Vv, activeNodeRect: Hv, attributes: Uv, setNodeRef: Wv, listeners: Gv, isDragging: Kv, over: q, setActivatorNodeRef: qv, transform: Jv } = useDraggable({
		id: s,
		data: M,
		attributes: {
			...defaultAttributes,
			...n
		},
		disabled: A.draggable
	}), Yv = useCombinedRefs(V, Wv), Xv = !!Bv, Zv = Xv && !S && isValidIndex(b) && isValidIndex(w), Qv = !E && Kv, $v = Zv ? (Qv && Zv ? Jv : null) ?? (c ?? O)({
		rects: C,
		activeNodeRect: Hv,
		activeIndex: b,
		overIndex: w,
		index: j
	}) : null, ey = isValidIndex(b) && isValidIndex(w) ? o({
		id: s,
		items: g,
		activeIndex: b,
		overIndex: w
	}) : j, ty = Bv?.id, ny = useRef({
		activeId: ty,
		items: g,
		newIndex: ey,
		containerId: y
	}), ry = g !== ny.current.items, iy = t({
		active: Bv,
		containerId: y,
		isDragging: Kv,
		isSorting: Xv,
		id: s,
		index: j,
		items: g,
		newIndex: ny.current.newIndex,
		previousItems: ny.current.items,
		previousContainerId: ny.current.containerId,
		transition: f,
		wasDragging: ny.current.activeId != null
	}), ay = useDerivedTransform({
		disabled: !iy,
		index: j,
		node: R,
		rect: I
	});
	return useEffect(() => {
		Xv && ny.current.newIndex !== ey && (ny.current.newIndex = ey), y !== ny.current.containerId && (ny.current.containerId = y), g !== ny.current.items && (ny.current.items = g);
	}, [
		Xv,
		ey,
		y,
		g
	]), useEffect(() => {
		if (ty === ny.current.activeId) return;
		if (ty != null && ny.current.activeId == null) {
			ny.current.activeId = ty;
			return;
		}
		let e = setTimeout(() => {
			ny.current.activeId = ty;
		}, 50);
		return () => clearTimeout(e);
	}, [ty]), {
		active: Bv,
		activeIndex: b,
		attributes: Uv,
		data: M,
		rect: I,
		index: j,
		newIndex: ey,
		items: g,
		isOver: zv,
		isSorting: Xv,
		isDragging: Kv,
		listeners: Gv,
		node: R,
		overIndex: w,
		over: q,
		setNodeRef: Yv,
		setActivatorNodeRef: qv,
		setDroppableNodeRef: V,
		setDraggableNodeRef: Wv,
		transform: ay ?? $v,
		transition: oy()
	};
	function oy() {
		if (ay || ry && ny.current.newIndex === j) return disabledTransition;
		if (!(Qv && !isKeyboardEvent(Vv) || !f) && (Xv || iy)) return CSS$1.Transition.toString({
			...f,
			property: transitionProperty
		});
	}
}
function normalizeLocalDisabled(e, t) {
	return typeof e == "boolean" ? {
		draggable: e,
		droppable: !1
	} : {
		draggable: e?.draggable ?? t.draggable,
		droppable: e?.droppable ?? t.droppable
	};
}
function hasSortableData(e) {
	if (!e) return !1;
	let t = e.data.current;
	return !!(t && "sortable" in t && typeof t.sortable == "object" && "containerId" in t.sortable && "items" in t.sortable && "index" in t.sortable);
}
var directions = [
	KeyboardCode.Down,
	KeyboardCode.Right,
	KeyboardCode.Up,
	KeyboardCode.Left
], sortableKeyboardCoordinates = (e, t) => {
	let { context: { active: n, collisionRect: i, droppableRects: a, droppableContainers: o, over: s, scrollableAncestors: c } } = t;
	if (directions.includes(e.code)) {
		if (e.preventDefault(), !n || !i) return;
		let t = [];
		o.getEnabled().forEach((n) => {
			if (!n || n != null && n.disabled) return;
			let o = a.get(n.id);
			if (o) switch (e.code) {
				case KeyboardCode.Down:
					i.top < o.top && t.push(n);
					break;
				case KeyboardCode.Up:
					i.top > o.top && t.push(n);
					break;
				case KeyboardCode.Left:
					i.left > o.left && t.push(n);
					break;
				case KeyboardCode.Right:
					i.left < o.left && t.push(n);
					break;
			}
		});
		let d = closestCorners({
			active: n,
			collisionRect: i,
			droppableRects: a,
			droppableContainers: t,
			pointerCoordinates: null
		}), f = getFirstCollision(d, "id");
		if (f === s?.id && d.length > 1 && (f = d[1].id), f != null) {
			let e = o.get(n.id), t = o.get(f), s = t ? a.get(t.id) : null, d = t?.node.current;
			if (d && s && e && t) {
				let n = getScrollableAncestors(d).some((e, t) => c[t] !== e), a = isSameContainer(e, t), o = isAfter(e, t), f = n || !a ? {
					x: 0,
					y: 0
				} : {
					x: o ? i.width - s.width : 0,
					y: o ? i.height - s.height : 0
				}, g = {
					x: s.left,
					y: s.top
				};
				return f.x && f.y ? g : subtract(g, f);
			}
		}
	}
};
function isSameContainer(e, t) {
	return !hasSortableData(e) || !hasSortableData(t) ? !1 : e.data.current.sortable.containerId === t.data.current.sortable.containerId;
}
function isAfter(e, t) {
	return !hasSortableData(e) || !hasSortableData(t) || !isSameContainer(e, t) ? !1 : e.data.current.sortable.index < t.data.current.sortable.index;
}
function setRef(e, t) {
	if (typeof e == "function") return e(t);
	e != null && (e.current = t);
}
function composeRefs(...e) {
	return (t) => {
		let n = !1, i = e.map((e) => {
			let i = setRef(e, t);
			return !n && typeof i == "function" && (n = !0), i;
		});
		if (n) return () => {
			for (let t = 0; t < i.length; t++) {
				let n = i[t];
				typeof n == "function" ? n() : setRef(e[t], null);
			}
		};
	};
}
function useComposedRefs(...e) {
	return useCallback(composeRefs(...e), e);
}
var orientationConfig = {
	vertical: {
		modifiers: [restrictToVerticalAxis, restrictToParentElement],
		strategy: verticalListSortingStrategy,
		collisionDetection: closestCenter
	},
	horizontal: {
		modifiers: [restrictToHorizontalAxis, restrictToParentElement],
		strategy: horizontalListSortingStrategy,
		collisionDetection: closestCenter
	},
	mixed: {
		modifiers: [restrictToParentElement],
		strategy: void 0,
		collisionDetection: closestCorners
	}
}, ROOT_NAME = "Sortable", CONTENT_NAME = "SortableContent", ITEM_NAME = "SortableItem", OVERLAY_NAME = "SortableOverlay", SortableRootContext = createContext(null);
function useSortableContext(e) {
	let t = useContext(SortableRootContext);
	if (!t) throw Error(`\`${e}\` must be used within \`${ROOT_NAME}\``);
	return t;
}
function SortableRoot(e) {
	let { value: t, onValueChange: n, collisionDetection: i, modifiers: a, strategy: o, onMove: s, orientation: c = "vertical", flatCursor: d = !1, getItemValue: f, accessibility: g,...y } = e, b = useId(), [x, S] = useState(null), C = useSensors(useSensor(MouseSensor), useSensor(TouchSensor), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })), w = useMemo(() => orientationConfig[c], [c]), E = useCallback((e) => {
		if (typeof e == "object" && !f) throw Error("getItemValue is required when using array of objects");
		return f ? f(e) : e;
	}, [f]), O = useMemo(() => t.map((e) => E(e)), [t, E]), A = useCallback((e) => {
		y.onDragStart?.(e), !e.activatorEvent.defaultPrevented && S(e.active.id);
	}, [y.onDragStart]), j = useCallback((e) => {
		if (y.onDragEnd?.(e), e.activatorEvent.defaultPrevented) return;
		let { active: i, over: a } = e;
		if (a && i.id !== a?.id) {
			let o = t.findIndex((e) => E(e) === i.id), c = t.findIndex((e) => E(e) === a.id);
			s ? s({
				...e,
				activeIndex: o,
				overIndex: c
			}) : n?.(arrayMove(t, o, c));
		}
		S(null);
	}, [
		t,
		n,
		s,
		E,
		y.onDragEnd
	]), M = useCallback((e) => {
		y.onDragCancel?.(e), !e.activatorEvent.defaultPrevented && S(null);
	}, [y.onDragCancel]), F = useMemo(() => ({
		onDragStart({ active: e }) {
			return `Grabbed sortable item "${e.id.toString()}". Current position is ${e.data.current?.sortable.index + 1} of ${t.length}. Use arrow keys to move, space to drop.`;
		},
		onDragOver({ active: e, over: n }) {
			if (n) {
				let i = n.data.current?.sortable.index ?? 0, a = e.data.current?.sortable.index ?? 0, o = i > a ? "down" : "up";
				return `Sortable item "${e.id.toString()}" moved ${o} to position ${i + 1} of ${t.length}.`;
			}
			return "Sortable item is no longer over a droppable area. Press escape to cancel.";
		},
		onDragEnd({ active: e, over: n }) {
			let i = e.id.toString();
			if (n) {
				let e = n.data.current?.sortable.index ?? 0;
				return `Sortable item "${i}" dropped at position ${e + 1} of ${t.length}.`;
			}
			return `Sortable item "${i}" dropped. No changes were made.`;
		},
		onDragCancel({ active: e }) {
			let n = e.data.current?.sortable.index ?? 0;
			return `Sorting cancelled. Sortable item "${e.id.toString()}" returned to position ${n + 1} of ${t.length}.`;
		},
		onDragMove({ active: e, over: n }) {
			if (n) {
				let i = n.data.current?.sortable.index ?? 0, a = e.data.current?.sortable.index ?? 0, o = i > a ? "down" : "up";
				return `Sortable item "${e.id.toString()}" is moving ${o} to position ${i + 1} of ${t.length}.`;
			}
			return "Sortable item is no longer over a droppable area. Press escape to cancel.";
		}
	}), [t]), I = useMemo(() => ({ draggable: `
        To pick up a sortable item, press space or enter.
        While dragging, use the ${c === "vertical" ? "up and down" : c === "horizontal" ? "left and right" : "arrow"} keys to move the item.
        Press space or enter again to drop the item in its new position, or press escape to cancel.
      ` }), [c]), R = useMemo(() => ({
		id: b,
		items: O,
		modifiers: a ?? w.modifiers,
		strategy: o ?? w.strategy,
		activeId: x,
		setActiveId: S,
		getItemValue: E,
		flatCursor: d
	}), [
		b,
		O,
		a,
		o,
		w.modifiers,
		w.strategy,
		x,
		E,
		d
	]);
	return /* @__PURE__ */ jsx(SortableRootContext.Provider, {
		value: R,
		children: /* @__PURE__ */ jsx(DndContext, {
			collisionDetection: i ?? w.collisionDetection,
			modifiers: a ?? w.modifiers,
			sensors: C,
			...y,
			id: b,
			onDragStart: A,
			onDragEnd: j,
			onDragCancel: M,
			accessibility: {
				announcements: F,
				screenReaderInstructions: I,
				...g
			}
		})
	});
}
var SortableContentContext = createContext(!1);
function SortableContent(e) {
	let { strategy: t, asChild: n, withoutSlot: i, children: a, ref: o,...s } = e, c = useSortableContext(CONTENT_NAME), d = n ? Slot : "div";
	return /* @__PURE__ */ jsx(SortableContentContext.Provider, {
		value: !0,
		children: /* @__PURE__ */ jsx(SortableContext, {
			items: c.items,
			strategy: t ?? c.strategy,
			children: i ? a : /* @__PURE__ */ jsx(d, {
				"data-slot": "sortable-content",
				...s,
				ref: o,
				children: a
			})
		})
	});
}
var SortableItemContext = createContext(null);
function SortableItem(e) {
	let { value: t, style: n, asHandle: i, asChild: a, disabled: o, className: s, ref: c,...d } = e, f = useContext(SortableContentContext), g = useContext(SortableOverlayContext);
	if (!f && !g) throw Error(`\`${ITEM_NAME}\` must be used within \`${CONTENT_NAME}\` or \`${OVERLAY_NAME}\``);
	if (t === "") throw Error(`\`${ITEM_NAME}\` value cannot be an empty string`);
	let y = useSortableContext(ITEM_NAME), b = useId(), { attributes: x, listeners: S, setNodeRef: C, setActivatorNodeRef: w, transform: E, transition: O, isDragging: A } = useSortable({
		id: t,
		disabled: o
	}), j = useComposedRefs(c, (e) => {
		o || (C(e), i && w(e));
	}), M = useMemo(() => ({
		transform: CSS$1.Translate.toString(E),
		transition: O,
		...n
	}), [
		E,
		O,
		n
	]), F = useMemo(() => ({
		id: b,
		attributes: x,
		listeners: S,
		setActivatorNodeRef: w,
		isDragging: A,
		disabled: o
	}), [
		b,
		x,
		S,
		w,
		A,
		o
	]), I = a ? Slot : "div";
	return /* @__PURE__ */ jsx(SortableItemContext.Provider, {
		value: F,
		children: /* @__PURE__ */ jsx(I, {
			id: b,
			"data-disabled": o,
			"data-dragging": A ? "" : void 0,
			"data-slot": "sortable-item",
			...d,
			...i && !o ? x : {},
			...i && !o ? S : {},
			ref: j,
			style: M,
			className: cn("focus-visible:ring-ring focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-offset-1", {
				"touch-none select-none": i,
				"cursor-default": y.flatCursor,
				"data-dragging:cursor-grabbing": !y.flatCursor,
				"cursor-grab": !A && i && !y.flatCursor,
				"opacity-50": A,
				"pointer-events-none opacity-50": o
			}, s)
		})
	});
}
var SortableOverlayContext = createContext(!1), dropAnimation = { sideEffects: defaultDropAnimationSideEffects({ styles: { active: { opacity: "0.4" } } }) };
function SortableOverlay(e) {
	let { container: t, children: n,...i } = e, a = useSortableContext(OVERLAY_NAME), [o, s] = useState(!1);
	useLayoutEffect(() => s(!0), []);
	let c = t ?? (o ? globalThis.document?.body : null);
	return c ? ReactDOM$2.createPortal(/* @__PURE__ */ jsx(DragOverlay, {
		dropAnimation,
		modifiers: a.modifiers,
		className: cn(!a.flatCursor && "cursor-grabbing"),
		...i,
		children: /* @__PURE__ */ jsx(SortableOverlayContext.Provider, {
			value: !0,
			children: a.activeId ? typeof n == "function" ? n({ value: a.activeId }) : n : null
		})
	}), c) : null;
}
var import_lodash = /* @__PURE__ */ __toESM(require_lodash());
const Tab = (e) => {
	let { history: t, operations: n, tests: i, plugins: a } = useLaboratory(), o = useLaboratory(), s = useRef(!1), c = useRef(null);
	useEffect(() => {
		function e() {
			c.current &&= (clearTimeout(c.current), null), s.current = !1;
		}
		return document.addEventListener("mouseup", e), () => {
			document.removeEventListener("mouseup", e);
		};
	}, []);
	let d = useMemo(() => e.activeTab?.id === e.item.id, [e.activeTab, e.item]), f = useMemo(() => e.item.type === "history" ? t.find((t) => e.item.type === "history" && t.id === e.item.data.id) : null, [t, e.item]), g = useMemo(() => e.item.type === "operation" ? n.find((t) => t.id === e.item.data.id) : null, [e.item, n]), y = useMemo(() => e.item.type === "test" ? i.find((t) => t.id === e.item.data.id) : null, [e.item, i]), b = useMemo(() => f ? "status" in f && f.status < 200 || "status" in f && f.status >= 300 || "response" in f && JSON.parse(f.response).errors : !1, [f]), x = useCallback(() => {
		e.handleDeleteTab(e.item.id);
	}, [e]), S = useCallback(() => {
		e.handleDeleteAllTabs();
	}, [e]), C = useCallback(() => {
		e.handleDeleteOtherTabs(e.item.id);
	}, [e]), w = useMemo(() => {
		if (e.item.type === "operation") {
			let e = g?.name || getOperationName(g?.query || "") || "Untitled";
			if (e === "Untitled") {
				let t = (0, import_lodash.capitalize)(getOperationType(g?.query || "") || "query");
				return e + t;
			}
			return e;
		}
		if (e.item.type === "history") {
			let e = f?.operation.name || getOperationName(f?.operation.query || "") || "Untitled";
			if (e === "Untitled") {
				let t = (0, import_lodash.capitalize)(getOperationType(f?.operation.query || "") || "query");
				return e + t;
			}
			return e;
		}
		if (e.item.type === "preflight") return "Preflight";
		if (e.item.type === "env") return "Environment Variables";
		if (e.item.type === "settings") return "Settings";
		if (e.item.type === "test") return y?.name || "Untitled";
		let t = null;
		for (let n of a) for (let i of n.tabs ?? []) if (i.type === e.item.type) {
			t = i;
			break;
		}
		return t ? typeof t.name == "function" ? t.name(o, {}) : t.name : "Untitled";
	}, [
		e.item,
		f,
		g,
		y
	]), E = useMemo(() => {
		if (e.item.type === "operation") return /* @__PURE__ */ jsx(GraphQLIcon, { className: "size-4 text-pink-500" });
		if (e.item.type === "preflight") return /* @__PURE__ */ jsx(ScrollTextIcon, { className: "size-4 text-teal-400" });
		if (e.item.type === "env") return /* @__PURE__ */ jsx(GlobeIcon, { className: "size-4 text-blue-400" });
		if (e.item.type === "history") return /* @__PURE__ */ jsx(HistoryIcon, { className: cn("size-4 text-indigo-400", {
			"text-green-500": !b,
			"text-red-500": b
		}) });
		if (e.item.type === "settings") return /* @__PURE__ */ jsx(SettingsIcon, { className: "size-4 text-gray-400" });
		if (e.item.type === "test") return /* @__PURE__ */ jsx(FlaskConicalIcon, { className: "size-4 text-lime-400" });
		let t = null;
		for (let n of a) for (let i of n.tabs ?? []) if (i.type === e.item.type) {
			t = i;
			break;
		}
		return t ? typeof t.icon == "function" ? t.icon(o, {}) : t.icon : /* @__PURE__ */ jsx(FileIcon, { className: "text-muted-foreground size-4" });
	}, [e.item, b]);
	return /* @__PURE__ */ jsxs(ContextMenu, { children: [/* @__PURE__ */ jsx(ContextMenuTrigger, {
		asChild: !0,
		children: /* @__PURE__ */ jsxs(SortableItem, {
			value: e.item.id,
			asHandle: !0,
			className: cn("data-dragging:opacity-0 flex h-12 w-max items-stretch", e.isOverlay && "bg-background", e.isOverlay && !d && "h-12"),
			children: [/* @__PURE__ */ jsx("div", {
				onMouseDown: (e) => {
					if (s.current) return;
					e.preventDefault();
					let t = { ...e };
					c.current = setTimeout(() => {
						s.current = !0, t.currentTarget.dispatchEvent(new MouseEvent("mousedown", { ...t }));
					}, 200);
				},
				children: /* @__PURE__ */ jsxs("div", {
					className: cn("text-muted-foreground hover:text-foreground group relative flex h-full cursor-pointer items-center gap-2 border-t-2 border-transparent px-3 pb-1 text-sm transition-all", e.activeTab?.id === e.item.id && "border-primary bg-card text-foreground"),
					onClick: () => {
						e.setActiveTab(e.item);
					},
					onMouseUp: () => {
						c.current &&= (clearTimeout(c.current), null), s.current = !1;
					},
					children: [
						E,
						w,
						e.isOperationLoading(e.item.id) && /* @__PURE__ */ jsx(Spinner, { className: "size-3" }),
						e.item.readOnly && /* @__PURE__ */ jsx(LockIcon, { className: "size-3 text-gray-400" }),
						/* @__PURE__ */ jsx(XIcon, {
							className: "text-muted-foreground size-3",
							onMouseDown: (e) => {
								e.stopPropagation();
							},
							onClick: (t) => {
								t.stopPropagation(), e.handleDeleteTab(e.item.id);
							}
						})
					]
				})
			}), /* @__PURE__ */ jsx("div", { className: "bg-border mb-px w-px" })]
		})
	}), /* @__PURE__ */ jsxs(ContextMenuContent, { children: [
		/* @__PURE__ */ jsx(ContextMenuItem, {
			onClick: x,
			children: "Close"
		}),
		/* @__PURE__ */ jsx(ContextMenuItem, {
			onClick: C,
			children: "Close other"
		}),
		/* @__PURE__ */ jsx(ContextMenuItem, {
			onClick: S,
			children: "Close all"
		})
	] })] });
}, Tabs$1 = ({ className: e }) => {
	let { tabs: t, setTabs: n, activeTab: i, addTab: a, deleteTab: o, operations: s, setActiveTab: c, addOperation: d, setOperations: f, deleteOperation: g, isOperationLoading: y, goToFullScreen: b, exitFullScreen: x, isFullScreen: S } = useLaboratory(), C = useCallback(() => {
		let e = d({
			name: "",
			query: "",
			variables: "",
			headers: "",
			extensions: ""
		}), t = a({
			type: "operation",
			data: e
		});
		c(t);
	}, [
		d,
		a,
		c
	]), w = useCallback((e) => {
		let n = t.findIndex((t) => t.id === e);
		if (n === -1) return;
		let i = t[n];
		i.type === "operation" && g(i.data.id), o(i.id), c(n === 0 ? t[1] ?? null : n > 0 ? t[n - 1] ?? null : t[0] ?? null);
	}, [
		t,
		o,
		g,
		c
	]), E = useCallback(() => {
		f([]), n([]);
	}, [f, n]), O = useCallback((e) => {
		let i = t.find((t) => t.id === e);
		if (i) {
			let a = t.filter((t) => t.id !== e).filter((e) => e.type === "operation").map((e) => e.data.id);
			f(s.filter((e) => !a.includes(e.id))), n([i]), c(i);
		}
	}, [
		t,
		f,
		s,
		n,
		c
	]);
	return /* @__PURE__ */ jsxs("div", {
		className: cn("relative z-10 grid size-full grid-cols-[1fr_auto] overflow-hidden", e),
		children: [
			/* @__PURE__ */ jsx("div", { className: "bg-border absolute bottom-0 left-0 -z-10 h-px w-full" }),
			/* @__PURE__ */ jsx("div", {
				className: "overflow-hidden",
				children: /* @__PURE__ */ jsxs(ScrollArea, {
					className: "size-full whitespace-nowrap",
					children: [/* @__PURE__ */ jsxs("div", {
						className: "flex items-stretch",
						children: [/* @__PURE__ */ jsxs(SortableRoot, {
							value: t,
							onValueChange: n,
							getItemValue: (e) => e.id,
							orientation: "horizontal",
							children: [/* @__PURE__ */ jsx(SortableContent, {
								className: "flex w-max items-stretch",
								children: t.map((e) => /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx(Tab, {
									item: e,
									activeTab: i,
									setActiveTab: c,
									isOperationLoading: y,
									handleDeleteTab: w,
									handleDeleteAllTabs: E,
									handleDeleteOtherTabs: O
								}, e.id) }))
							}), /* @__PURE__ */ jsx(SortableOverlay, { children: (e) => {
								let n = t.find((t) => t.id === e.value);
								return n ? /* @__PURE__ */ jsx(Tab, {
									item: n,
									activeTab: i,
									setActiveTab: c,
									isOperationLoading: y,
									handleDeleteTab: w,
									isOverlay: !0,
									handleDeleteAllTabs: E,
									handleDeleteOtherTabs: O
								}) : null;
							} })]
						}), /* @__PURE__ */ jsx("div", {
							className: "group ml-2 flex h-12 items-center border-b-2 border-transparent",
							children: /* @__PURE__ */ jsxs(Button, {
								variant: "ghost",
								size: "sm",
								className: "text-primary hover:text-primary",
								onClick: C,
								children: [/* @__PURE__ */ jsx(CirclePlus, { className: "size-4" }), "Add operation"]
							})
						})]
					}), /* @__PURE__ */ jsx(ScrollBar, { orientation: "horizontal" })]
				})
			}),
			/* @__PURE__ */ jsx("div", {
				className: "group flex h-12 items-center border-l px-2",
				children: S ? /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(Button, {
					variant: "ghost",
					size: "sm",
					onClick: x,
					children: /* @__PURE__ */ jsx(MinimizeIcon, { className: "size-4" })
				}) }), /* @__PURE__ */ jsx(TooltipContent, {
					side: "bottom",
					children: "Exit full screen"
				})] }) : /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { children: /* @__PURE__ */ jsx(Button, {
					variant: "ghost",
					size: "sm",
					onClick: b,
					children: /* @__PURE__ */ jsx(MaximizeIcon, { className: "size-4" })
				}) }), /* @__PURE__ */ jsx(TooltipContent, {
					side: "bottom",
					children: "Go to full screen"
				})] })
			})
		]
	});
};
var ShadowRootContainer = (e) => {
	let t = useRef(null), [n, i] = useState(null);
	return useLayoutEffect(() => {
		!t.current || n || i(t.current.attachShadow({ mode: "open" }));
	}, [n]), useLayoutEffect(() => {
		n && document.head.querySelectorAll("style").forEach((e) => {
			e.textContent?.includes("[data-sonner-toaster]") && n.append(e.cloneNode(!0));
		});
	}, [n]), /* @__PURE__ */ jsx("div", {
		ref: t,
		className: "hive-laboratory-host size-full",
		children: n ? createPortal(e.children, n) : null
	});
}, addCollectionFormSchema = z$1.object({ name: z$1.string().min(1, "Name is required") }), updateEndpointFormSchema = z$1.object({ endpoint: z$1.string().min(1, "Endpoint is required") }), addTestFormSchema = z$1.object({ name: z$1.string().min(1, "Name is required") }), PreflightPromptModal = (e) => {
	let t = useForm({
		defaultValues: { value: e.defaultValue || null },
		validators: { onSubmit: z$1.object({ value: z$1.string().min(1, "Value is required").nullable() }) },
		onSubmit: ({ value: n }) => {
			e.onSubmit?.(n.value || null), e.onOpenChange(!1), t.reset();
		}
	});
	return /* @__PURE__ */ jsx(Dialog, {
		open: e.open,
		onOpenChange: (n) => {
			t.state.isSubmitted || t.handleSubmit(), e.onOpenChange(n);
		},
		children: /* @__PURE__ */ jsxs(DialogContent, { children: [
			/* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: "Preflight prompt" }) }),
			/* @__PURE__ */ jsx(DialogDescription, { children: "Enter values for the preflight script." }),
			/* @__PURE__ */ jsx("form", {
				id: "preflight-prompt-form",
				onSubmit: (e) => {
					e.preventDefault(), t.handleSubmit();
				},
				children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(t.Field, {
					name: "value",
					children: (t) => {
						let n = t.state.meta.isTouched && !t.state.meta.isValid;
						return /* @__PURE__ */ jsxs(Field, {
							"data-invalid": n,
							children: [/* @__PURE__ */ jsx(Input, {
								id: t.name,
								name: t.name,
								value: t.state.value || "",
								onBlur: t.handleBlur,
								onChange: (e) => t.handleChange(e.target.value),
								"aria-invalid": n,
								placeholder: e.placeholder,
								autoComplete: "off"
							}), n && /* @__PURE__ */ jsx(FieldError, { errors: t.state.meta.errors })]
						});
					}
				}) })
			}),
			/* @__PURE__ */ jsx(DialogFooter, { children: /* @__PURE__ */ jsx(Button, {
				type: "submit",
				form: "preflight-prompt-form",
				onClick: () => {
					t.handleSubmit();
				},
				children: "Submit"
			}) })
		] })
	});
}, LaboratoryContent = () => {
	let { activeTab: e, addOperation: t, collections: n, addTab: i, setActiveTab: a, preflight: o, tabs: s, env: c, plugins: d, pluginsState: f, setPluginsState: g } = useLaboratory(), y = useLaboratory(), [b, x] = useState(n.length > 0 ? "collections" : null), [S, C] = useState(!1), w = useMemo(() => {
		switch (e?.type) {
			case "operation": return /* @__PURE__ */ jsx(Operation, {});
			case "preflight": return /* @__PURE__ */ jsx(Preflight, {});
			case "env": return /* @__PURE__ */ jsx(Env, {});
			case "history": return /* @__PURE__ */ jsx(HistoryItem, {});
			case "settings": return /* @__PURE__ */ jsx(Settings, {});
			default: {
				let n = null, o = null;
				for (let t of d) for (let i of t.tabs ?? []) if (i.type === e?.type) {
					o = i, n = t.id;
					break;
				}
				return o && n ? o.component(e, y, f[n] ?? {}, (e) => g({
					...f,
					[n]: e
				})) : /* @__PURE__ */ jsxs(Empty, {
					className: "px-0! w-full",
					children: [/* @__PURE__ */ jsxs(EmptyHeader, { children: [
						/* @__PURE__ */ jsx(EmptyMedia, {
							variant: "icon",
							children: /* @__PURE__ */ jsx(FileIcon, { className: "text-muted-foreground size-6" })
						}),
						/* @__PURE__ */ jsx(EmptyTitle, { children: "No operation selected" }),
						/* @__PURE__ */ jsx(EmptyDescription, { children: "You haven't selected any operation yet. Get started by selecting an operation or add a new one." })
					] }), /* @__PURE__ */ jsx(EmptyContent, { children: /* @__PURE__ */ jsx(Button, {
						size: "sm",
						onClick: () => {
							let e = t({
								name: "",
								query: "",
								variables: "",
								headers: "",
								extensions: ""
							}), n = i({
								type: "operation",
								data: e
							});
							a(n);
						},
						children: "Add operation"
					}) })]
				});
			}
		}
	}, [
		e?.type,
		t,
		i,
		a
	]);
	return /* @__PURE__ */ jsxs("div", {
		className: "flex size-full",
		children: [
			/* @__PURE__ */ jsx(Command, {
				open: S,
				onOpenChange: C
			}),
			/* @__PURE__ */ jsxs("div", {
				className: "flex h-full w-12 flex-col",
				children: [
					/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
						asChild: !0,
						children: /* @__PURE__ */ jsx("div", {
							className: cn("relative z-10 flex aspect-square h-12 w-full items-center justify-center border-l-2 border-transparent", { "border-primary": b === "collections" }),
							children: /* @__PURE__ */ jsx(Button, {
								variant: "ghost",
								size: "icon",
								onClick: () => x(b === "collections" ? null : "collections"),
								className: cn("text-muted-foreground hover:text-foreground", { "text-foreground": b === "collections" }),
								children: /* @__PURE__ */ jsx(FoldersIcon, { className: "size-5" })
							})
						})
					}), /* @__PURE__ */ jsx(TooltipContent, {
						side: "right",
						children: "Collections"
					})] }),
					/* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
						asChild: !0,
						children: /* @__PURE__ */ jsx("div", {
							className: cn("relative z-10 flex aspect-square h-12 w-full items-center justify-center border-l-2 border-transparent", { "border-primary": b === "history" }),
							children: /* @__PURE__ */ jsx(Button, {
								variant: "ghost",
								size: "icon",
								onClick: () => x(b === "history" ? null : "history"),
								className: cn("text-muted-foreground hover:text-foreground", { "text-foreground": b === "history" }),
								children: /* @__PURE__ */ jsx(HistoryIcon, { className: "size-5" })
							})
						})
					}), /* @__PURE__ */ jsx(TooltipContent, {
						side: "right",
						children: "History"
					})] }),
					/* @__PURE__ */ jsx("div", {
						className: cn("relative z-10 mt-auto flex aspect-square h-12 w-full items-center justify-center border-l-2 border-transparent", { "border-primary": b === "settings" }),
						children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, { children: /* @__PURE__ */ jsx(TooltipTrigger, {
							asChild: !0,
							children: /* @__PURE__ */ jsx(Button, {
								variant: "ghost",
								size: "icon",
								onClick: () => x(b === "history" ? null : "history"),
								className: cn("text-muted-foreground hover:text-foreground", { "text-foreground": b === "history" }),
								children: /* @__PURE__ */ jsx(SettingsIcon, { className: "size-5" })
							})
						}) }), /* @__PURE__ */ jsxs(DropdownMenuContent, {
							className: "mb-2 w-56",
							align: "start",
							side: "right",
							children: [
								/* @__PURE__ */ jsx(DropdownMenuGroup, { children: /* @__PURE__ */ jsxs(DropdownMenuItem, {
									onSelect: () => C(!0),
									children: ["Command Palette...", /* @__PURE__ */ jsx(DropdownMenuShortcut, { children: "⌘J" })]
								}) }),
								/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
								/* @__PURE__ */ jsx(DropdownMenuItem, {
									onSelect: () => {
										let e = s.find((e) => e.type === "env") ?? i({
											type: "env",
											data: c ?? { variables: {} }
										});
										a(e);
									},
									children: "Environment Variables"
								}),
								/* @__PURE__ */ jsx(DropdownMenuItem, {
									onSelect: () => {
										let e = s.find((e) => e.type === "preflight") ?? i({
											type: "preflight",
											data: o ?? { script: "" }
										});
										a(e);
									},
									children: "Preflight Script"
								}),
								/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
								/* @__PURE__ */ jsx(DropdownMenuItem, {
									onSelect: () => {
										let e = s.find((e) => e.type === "settings") ?? i({
											type: "settings",
											data: {}
										});
										a(e);
									},
									children: "Settings"
								})
							]
						})] }), /* @__PURE__ */ jsx(TooltipContent, {
							side: "right",
							children: "Settings"
						})] })
					})
				]
			}),
			/* @__PURE__ */ jsxs(ResizablePanelGroup, {
				direction: "horizontal",
				className: "h-full flex-1",
				children: [
					/* @__PURE__ */ jsxs(ResizablePanel, {
						minSize: 10,
						defaultSize: 17,
						hidden: !b,
						className: "border-l",
						children: [b === "collections" && /* @__PURE__ */ jsx(Collections, {}), b === "history" && /* @__PURE__ */ jsx(History, {})]
					}),
					/* @__PURE__ */ jsx(ResizableHandle, {}),
					/* @__PURE__ */ jsxs(ResizablePanel, {
						minSize: 10,
						defaultSize: 83,
						className: "flex flex-col",
						children: [/* @__PURE__ */ jsx("div", {
							className: "w-full",
							children: /* @__PURE__ */ jsx(Tabs$1, {})
						}), /* @__PURE__ */ jsx("div", {
							className: "bg-card flex-1 overflow-hidden",
							children: w
						})]
					})
				]
			})
		]
	});
};
const Laboratory = (e) => {
	let t = useCallback((t) => {
		let [n, i] = t.split(":");
		return e.permissions?.[n]?.[i] ?? !0;
	}, [e.permissions]), n = useSettings(e), i = useEnv(e), a = usePreflight({
		...e,
		envApi: i
	}), o = usePlugins(e), s = useTests(e), c = useTabs(e), d = useEndpoint(e), f = useCollections({
		...e,
		tabsApi: c
	}), g = useOperations({
		...e,
		collectionsApi: f,
		tabsApi: c,
		envApi: i,
		preflightApi: a,
		settingsApi: n,
		pluginsApi: o,
		checkPermissions: t
	}), y = useHistory(e), [b, x] = useState(!1), [S, C] = useState(!1), [w, E] = useState(!1), O = useCallback(() => {
		x(!0);
	}, []), A = useCallback(() => {
		C(!0);
	}, []), j = useCallback(() => {
		E(!0);
	}, []), M = useForm({
		defaultValues: { name: "" },
		validators: { onSubmit: addCollectionFormSchema },
		onSubmit: ({ value: e }) => {
			f.addCollection({ name: e.name }), x(!1);
		}
	}), F = useForm({
		defaultValues: { endpoint: d.endpoint ?? "" },
		validators: { onSubmit: updateEndpointFormSchema },
		onSubmit: ({ value: e }) => {
			d.setEndpoint(e.endpoint), C(!1);
		}
	}), I = useForm({
		defaultValues: { name: "" },
		validators: { onSubmit: addTestFormSchema },
		onSubmit: ({ value: e }) => {
			s.addTest({ name: e.name }), E(!1);
		}
	}), [R, zv] = useState(!1), [V, Bv] = useState({
		placeholder: "",
		defaultValue: void 0,
		onSubmit: void 0
	}), Vv = useCallback((e) => {
		Bv({
			placeholder: e.placeholder,
			defaultValue: e.defaultValue,
			onSubmit: e.onSubmit
		}), setTimeout(() => {
			zv(!0);
		}, 200);
	}, []), Hv = useRef(null), [Uv, Wv] = useState(!1), Gv = useCallback(() => {
		Wv(!0);
	}, []), Kv = useCallback(() => {
		Wv(!1);
	}, []);
	return /* @__PURE__ */ jsxs(ShadowRootContainer, { children: [/* @__PURE__ */ jsx("style", { children: `${src_default}\n${editor_main_default}` }), /* @__PURE__ */ jsxs("div", {
		className: cn("hive-laboratory bg-background size-full", e.theme, { "fixed inset-0 z-50": Uv }),
		ref: Hv,
		children: [
			/* @__PURE__ */ jsx(Toaster, {
				richColors: !0,
				closeButton: !0,
				position: "top-right",
				theme: e.theme
			}),
			/* @__PURE__ */ jsx(Dialog, {
				open: S,
				onOpenChange: C,
				children: /* @__PURE__ */ jsxs(DialogContent, {
					className: "sm:max-w-[425px]",
					children: [
						/* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Update endpoint" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Update the endpoint of your laboratory." })] }),
						/* @__PURE__ */ jsx("div", {
							className: "grid gap-4",
							children: /* @__PURE__ */ jsx("form", {
								id: "update-endpoint-form",
								onSubmit: (e) => {
									e.preventDefault(), F.handleSubmit();
								},
								children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(F.Field, {
									name: "endpoint",
									children: (e) => {
										let t = e.state.meta.isTouched && !e.state.meta.isValid;
										return /* @__PURE__ */ jsx(Input, {
											id: e.name,
											name: e.name,
											value: e.state.value,
											onBlur: e.handleBlur,
											onChange: (t) => e.handleChange(t.target.value),
											"aria-invalid": t,
											placeholder: "Enter endpoint",
											autoComplete: "off"
										});
									}
								}) })
							})
						}),
						/* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(DialogClose, {
							asChild: !0,
							children: /* @__PURE__ */ jsx(Button, {
								variant: "outline",
								children: "Cancel"
							})
						}), /* @__PURE__ */ jsx(Button, {
							type: "submit",
							form: "update-endpoint-form",
							children: "Update endpoint"
						})] })
					]
				})
			}),
			/* @__PURE__ */ jsx(PreflightPromptModal, {
				open: R,
				onOpenChange: zv,
				...V
			}),
			/* @__PURE__ */ jsx(Dialog, {
				open: b,
				onOpenChange: x,
				children: /* @__PURE__ */ jsxs(DialogContent, {
					className: "sm:max-w-[425px]",
					children: [
						/* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Add collection" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Add a new collection of operations to your laboratory." })] }),
						/* @__PURE__ */ jsx("div", {
							className: "grid gap-4",
							children: /* @__PURE__ */ jsx("form", {
								id: "add-collection-form",
								onSubmit: (e) => {
									e.preventDefault(), M.handleSubmit();
								},
								children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(M.Field, {
									name: "name",
									children: (e) => {
										let t = e.state.meta.isTouched && !e.state.meta.isValid;
										return /* @__PURE__ */ jsxs(Field, {
											"data-invalid": t,
											children: [
												/* @__PURE__ */ jsx(FieldLabel, {
													htmlFor: e.name,
													children: "Name"
												}),
												/* @__PURE__ */ jsx(Input, {
													id: e.name,
													name: e.name,
													value: e.state.value,
													onBlur: e.handleBlur,
													onChange: (t) => e.handleChange(t.target.value),
													"aria-invalid": t,
													placeholder: "Enter name of the collection",
													autoComplete: "off"
												}),
												t && /* @__PURE__ */ jsx(FieldError, { errors: e.state.meta.errors })
											]
										});
									}
								}) })
							})
						}),
						/* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(DialogClose, {
							asChild: !0,
							children: /* @__PURE__ */ jsx(Button, {
								variant: "outline",
								children: "Cancel"
							})
						}), /* @__PURE__ */ jsx(Button, {
							type: "submit",
							form: "add-collection-form",
							children: "Add collection"
						})] })
					]
				})
			}),
			/* @__PURE__ */ jsx(Dialog, {
				open: w,
				onOpenChange: E,
				children: /* @__PURE__ */ jsxs(DialogContent, {
					className: "sm:max-w-[425px]",
					children: [
						/* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Add test" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Add a new test to your laboratory." })] }),
						/* @__PURE__ */ jsx("div", {
							className: "grid gap-4",
							children: /* @__PURE__ */ jsx("form", {
								id: "add-test-form",
								onSubmit: (e) => {
									e.preventDefault(), I.handleSubmit();
								},
								children: /* @__PURE__ */ jsx(FieldGroup, { children: /* @__PURE__ */ jsx(I.Field, {
									name: "name",
									children: (e) => {
										let t = e.state.meta.isTouched && !e.state.meta.isValid;
										return /* @__PURE__ */ jsxs(Field, {
											"data-invalid": t,
											children: [
												/* @__PURE__ */ jsx(FieldLabel, {
													htmlFor: e.name,
													children: "Name"
												}),
												/* @__PURE__ */ jsx(Input, {
													id: e.name,
													name: e.name,
													value: e.state.value,
													onBlur: e.handleBlur,
													onChange: (t) => e.handleChange(t.target.value),
													"aria-invalid": t,
													placeholder: "Enter name of the test",
													autoComplete: "off"
												}),
												t && /* @__PURE__ */ jsx(FieldError, { errors: e.state.meta.errors })
											]
										});
									}
								}) })
							})
						}),
						/* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(DialogClose, {
							asChild: !0,
							children: /* @__PURE__ */ jsx(Button, {
								variant: "outline",
								children: "Cancel"
							})
						}), /* @__PURE__ */ jsx(Button, {
							type: "submit",
							form: "add-test-form",
							children: "Add test"
						})] })
					]
				})
			}),
			/* @__PURE__ */ jsx(LaboratoryProvider, {
				...e,
				...s,
				...n,
				...o,
				...i,
				...a,
				...c,
				...d,
				...f,
				...g,
				...y,
				container: Hv.current,
				openAddCollectionDialog: O,
				openUpdateEndpointDialog: A,
				openAddTestDialog: j,
				openPreflightPromptModal: Vv,
				goToFullScreen: Gv,
				exitFullScreen: Kv,
				isFullScreen: Uv,
				checkPermissions: t,
				children: /* @__PURE__ */ jsx(LaboratoryContent, {})
			})
		]
	})] });
}, renderLaboratory = (e) => {
	let t = "hive-laboratory", n = (e) => {
		let n = localStorage.getItem(`${t}:${e}`);
		return n ? JSON.parse(n) : null;
	}, i = (e, n) => {
		localStorage.setItem(`${t}:${e}`, JSON.stringify(n));
	};
	if (!e) throw Error("Laboratory element not found");
	return ReactDOM.createRoot(e).render(/* @__PURE__ */ jsx(Laboratory, {
		theme: "dark",
		defaultEndpoint: n("endpoint") ?? window.location.origin + window.location.pathname,
		onEndpointChange: (e) => {
			i("endpoint", e ?? "");
		},
		defaultCollections: n("collections") ?? [],
		onCollectionsChange: (e) => {
			i("collections", e);
		},
		defaultTabs: n("tabs") ?? [],
		onTabsChange: (e) => {
			i("tabs", e);
		},
		defaultOperations: n("operations") ?? [],
		onOperationsChange: (e) => {
			i("operations", e);
		},
		defaultActiveTabId: n("activeTabId") ?? null,
		onActiveTabIdChange: (e) => {
			i("activeTabId", e ?? "");
		},
		defaultPreflight: n("preflight") ?? null,
		onPreflightChange: (e) => {
			i("preflight", e ?? "");
		},
		defaultEnv: n("env") ?? null,
		onEnvChange: (e) => {
			i("env", e ?? "");
		},
		defaultSettings: n("settings") ?? null,
		onSettingsChange: (e) => {
			i("settings", e ?? "");
		},
		defaultHistory: n("history") ?? [],
		onHistoryChange: (e) => {
			i("history", e);
		}
	}));
};
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Editor, Laboratory, LaboratoryProvider, Tabs, TabsContent, TabsList, TabsTrigger, renderLaboratory, runIsolatedLabScript, useCollections, useEndpoint, useEnv, useHistory, useLaboratory, useOperations, usePlugins, usePreflight, useSettings, useTabs, useTests };