sanity-plugin-media

6.1.16.1.2
dist/index.js.map
~dist/index.js.mapModified
+1−1
Index: package/dist/index.js.map
===================================================================
--- package/dist/index.js.map
+++ package/dist/index.js.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.js","names":["ReactNode","createContext","useContext","useMemo","AssetSourceComponentProps","ContextProps","isMultiSelect","onSelect","Props","children","AssetSourceDispatchContext","undefined","AssetBrowserDispatchProvider","props","$","_c","t0","t1","contextValue","t2","useAssetSourceActions","context","Error","useEffect","useState","useRootPortalElement","$","_c","container","_temp","t0","t1","classList","add","document","body","appendChild","removeChild","createElement","TypedUseSelectorHook","useSelector","RootReducerState","useTypedSelector","SanityClient","useClient","useVersionedClient","$","_c","t0","Symbol","for","apiVersion","OrderDirection","ORDER_DICTIONARY","Record","asc","desc","_createdAt","_updatedAt","mimeType","originalFilename","size","getOrderTitle","field","direction","groq","SearchFacetDivider","SearchFacetInputProps","SearchFacetName","SearchFacetOperators","divider","type","inputs","Record","altText","assetTypes","field","name","operatorType","operatorTypes","title","value","creditLine","description","folder","fileName","height","inCurrentDocument","options","selectOnly","inUse","isOpaque","orientation","size","modifier","modifiers","fieldModifier","fieldName","tag","width","operators","doesNotInclude","fn","undefined","label","doesNotReference","_field","empty","_value","hideInput","equalTo","greaterThan","greaterThanOrEqualTo","includes","is","isNot","lessThan","lessThanOrEqualTo","notEmpty","references","AssetSourceComponentProps","divider","inputs","SearchFacetInputProps","SearchFacetDivider","SearchFacetGroup","OrderDirection","SUPPORTED_ASSET_TYPES","const","ORDER_OPTIONS","direction","field","FACETS","tag","inUse","inCurrentDocument","title","folder","altText","creditLine","description","isOpaque","fileName","size","type","orientation","width","height","GRID_TEMPLATE_COLUMNS","SMALL","LARGE","FOLDERS_PANEL_WIDTH","FOLDER_DOCUMENT_NAME","PANEL_HEIGHT","TAG_DOCUMENT_NAME","TAGS_PANEL_WIDTH","iif","Observable","of","throwError","delay","mergeMap","debugThrottle","throttled","source","T","pipe","v","Math","random","message","statusCode","groq","operators","TAG_DOCUMENT_NAME","AssetType","SearchFacetInputProps","buildExcludeTagsFragment","excludeTagSlugs","serializedExcludeTagSlugs","length","JSON","stringify","undefined","constructFilter","assetTypes","currentFolderId","searchFacets","searchQuery","documentAssetTypes","map","type","baseFilter","excludeTagsFragment","searchFacetFragments","reduce","acc","facet","field","modifier","modifiers","operatorType","value","operator","currentModifier","find","m","name","facetField","fieldModifier","fragment","fn","push","options","currentOptionValue","l","folderFilter","constructedQuery","trim","join","Asset","AssetRef","_ref","_type","ImageNode","asset","findImageAssets","document","Record","newAsset","assetToReplaceId","matchedTopLevelFields","Set","repointNestedImages","map","field","node","topLevelField","candidate","assetRef","hasMatchingAssetRef","_id","add","key","value","Object","entries","SanityClient","groq","from","Observable","of","throwError","mergeMap","TAG_DOCUMENT_NAME","HttpError","checkTagName","client","name","source","T","pipe","fetch","existingTagCount","message","statusCode","TagSelectOption","TagItem","getTagSelectOptions","tags","reduce","acc","val","tag","push","label","name","current","value","_id","createAction","AssetItem","HttpError","Tag","ASSETS_ACTIONS","tagsAddComplete","prepare","assets","tag","payload","tagsAddError","error","tagsAddRequest","tagsRemoveComplete","tagsRemoveError","tagsRemoveRequest","createAction","AssetItem","DIALOG_ACTIONS","showFolderCreate","prepare","parentFolderId","payload","showFolderMove","assets","folderId","showFolderRename","showTagCreate","showTagEdit","tagId","createSelector","createSlice","isAnyOf","PayloadAction","ClientError","Transaction","groq","Selector","ofType","from","Observable","of","bufferTime","catchError","filter","mergeMap","switchMap","withLatestFrom","TAG_DOCUMENT_NAME","checkTagName","debugThrottle","Asset","HttpError","MyEpic","TagSelectOption","Tag","TagItem","getTagSelectOptions","ASSETS_ACTIONS","DIALOG_ACTIONS","RootReducerState","TagsReducerState","allIds","byIds","Record","creating","creatingError","fetchCount","fetching","fetchingError","panelVisible","initialState","undefined","tagsSlice","name","extraReducers","builder","addCase","showTagCreate","state","showTagEdit","action","tagId","payload","error","addMatcher","tagsAddComplete","tagsAddError","tagsRemoveComplete","tagsRemoveError","tag","_id","updating","tagsAddRequest","tagsRemoveRequest","reducers","createComplete","assetId","includes","push","_type","picked","createError","createRequest","_action","deleteComplete","deleteIndex","indexOf","splice","deleteError","deleteRequest","Object","keys","forEach","key","fetchComplete","tags","length","fetchError","fetchRequest","reducer","query","prepare","listenerCreateQueue","_state","listenerCreateQueueComplete","listenerDeleteQueue","listenerDeleteQueueComplete","tagIds","listenerUpdateQueue","listenerUpdateQueueComplete","panelVisibleSet","sort","a","b","tagA","current","tagB","updateComplete","closeDialogId","updateError","updateRequest","formData","tagsCreateEpic","action$","state$","client","pipe","actions","match","debug","badConnection","observable","create","result","message","statusCode","tagsDeleteEpic","fetch","tagName","assets","patches","map","asset","id","patch","ifRevisionID","_rev","unset","transaction","reduce","tx","delete","commit","tagsFetchEpic","items","tagsListenerCreateQueueEpic","tagsListenerDeleteQueueEpic","tagsListenerUpdateQueueEpic","tagsSortEpic","type","tagsUpdateEpic","set","updatedTag","selectTagsByIds","selectTagsAllIds","selectTags","selectTagById","selectTagSelectOptions","opt","media","acc","v","tagItem","_ref","tagsActions","PayloadAction","createSelector","createSlice","uuid","EMPTY","of","filter","mergeMap","withLatestFrom","MyEpic","SearchFacetInputProps","SearchFacetOperatorType","WithId","tagsActions","RootReducerState","SearchState","facets","query","initialState","searchSlice","name","reducers","facetsAdd","state","action","facet","push","payload","id","facetsClear","facetsRemoveByName","facetName","facetsRemoveByTag","tagId","type","operatorType","value","facetsRemoveById","facetId","facetsUpdate","modifier","find","f","facetsUpdateById","forEach","index","querySet","searchQuery","searchFacetTagUpdateEpic","action$","state$","pipe","updateComplete","match","tag","currentSearchFacetTag","search","tagItem","tags","byIds","_id","actions","label","current","selectIsSearchFacetTag","_state","searchFacets","some","searchActions","reducer","createAction","SanityAssetDocument","SanityImageAssetDocument","UPLOADS_ACTIONS","uploadComplete","prepare","asset","payload","createSelector","createSlice","PayloadAction","AttributeSet","ClientError","Patch","SanityDocument","Transaction","groq","nanoid","Selector","ofType","EMPTY","from","of","bufferTime","catchError","concatMap","debounceTime","filter","mergeMap","switchMap","withLatestFrom","getOrderTitle","ORDER_OPTIONS","debugThrottle","Asset","AssetItem","AssetType","BrowserView","HttpError","MyEpic","Order","OrderDirection","Tag","constructFilter","findImageAssets","searchActions","RootReducerState","UPLOADS_ACTIONS","ASSETS_ACTIONS","ItemError","description","id","referencingIDs","type","AssetsReducerState","allIds","assetTypes","byIds","Record","excludeTagSlugs","fetchCount","fetching","fetchingError","lastPicked","order","pageIndex","pageSize","view","defaultOrder","direction","field","initialState","undefined","title","assetsSlice","name","extraReducers","builder","addCase","uploadComplete","state","action","asset","payload","_id","_type","picked","updating","tagsAddComplete","assets","forEach","tagsAddError","tagsAddRequest","tagsRemoveComplete","tagsRemoveError","tagsRemoveRequest","reducers","clear","deleteComplete","assetIds","deleteIndex","indexOf","splice","Math","floor","length","deleteError","error","itemErrors","response","body","items","map","item","deleteRequest","closeDialogId","Object","keys","key","fetchComplete","includes","push","existing","fetchError","folderSetComplete","folderId","assetId","opt","media","folder","_ref","_weak","folderSetError","message","folderSetRequest","fetchRequest","reducer","_action","params","query","prepare","queryFilter","selector","sort","replace","pipe","insertUploads","results","entries","hash","listenerCreateQueue","_state","listenerCreateQueueComplete","listenerDeleteQueue","listenerDeleteQueueComplete","listenerUpdateQueue","listenerUpdateQueueComplete","loadNextPage","loadPageIndex","orderSet","pick","pickAll","pickClear","values","pickRange","endId","startId","startIndex","findIndex","endIndex","indices","a","b","slice","tagA","tagB","updateComplete","updateError","updateImageReferences","updateImageReferencesComplete","updateRequest","formData","viewSet","assetsDeleteEpic","action$","_state$","client","assetsActions","match","observable","delete","JSON","stringify","assetsFetchEpic","state$","debug","badConnection","fetch","result","statusCode","assetsFetchPageIndexEpic","start","end","documentId","selected","document","documentAssetIds","constructedFilter","currentFolderId","folders","searchFacets","search","facets","searchQuery","assetsFetchNextPageEpic","assetsFetchAfterDeleteAllEpic","nextPageIndex","filterAssetWithoutTag","tag","tagIndex","tags","t","patchOperationTagAppend","patch","setIfMissing","append","_key","patchOperationTagUnset","ifRevisionId","_rev","unset","patchOperationFolderSet","nextPatch","set","assetsOrderSetEpic","assetsSearchEpic","facetsAdd","facetsClear","facetsRemoveById","facetsRemoveByName","facetsRemoveByTag","facetsUpdate","facetsUpdateById","querySet","assetsListenerCreateQueueEpic","actions","assetsListenerDeleteQueueEpic","assetsListenerUpdateQueueEpic","assetsSortEpic","assetsTagsAddEpic","pickedAssets","selectAssetsPicked","pickedAssetsFiltered","transaction","reduce","tx","pickedAsset","commit","assetsTagsRemoveEpic","assetsFolderSetEpic","assetsFolderSetRefreshEpic","assetsUnpickEpic","assetsUpdateEpic","updatedAsset","assetsUpdateImageReferencesEpic","documents","patchedCount","clonedDocument","parse","assetsToReplace","patchSet","assign","originalAsset","selectAssetsByIds","selectAssetsAllIds","selectAssetById","selectAssets","selectAssetsLength","selectAssetsPickedLength","assetsPicked","createSelector","createSlice","PayloadAction","ClientError","Patch","groq","nanoid","from","of","catchError","debounceTime","filter","map","mergeMap","switchMap","withLatestFrom","FOLDER_DOCUMENT_NAME","debugThrottle","FolderDoc","FolderTreeItem","FolderTreeNode","HttpError","MyEpic","buildExcludeTagsFragment","assetsActions","RootReducerState","UPLOADS_ACTIONS","FoldersReducerState","byId","Record","childrenByParentId","rootIds","exactCountByFolderId","unfiledCount","currentFolderId","currentFolderUnfiled","panelVisible","fetching","fetchCount","fetchingError","creating","creatingError","deletingId","deleteError","renaming","renameError","initialState","undefined","indexFolders","folders","forEach","folder","_id","parentKey","parentId","push","sortByName","ids","sort","a","b","name","localeCompare","numeric","sensitivity","Object","values","foldersSlice","reducers","createComplete","state","_action","createError","action","error","payload","createRequest","currentFolderClear","currentFolderSet","folderId","currentFolderShowUnfiled","deleteComplete","deletedIds","clearedCurrentFolder","removed","Set","has","deleteRequest","fetchComplete","length","fetchError","fetchRequest","panelVisibleSet","renameComplete","renameRequest","foldersFetchEpic","action$","state$","client","pipe","actions","match","debug","badConnection","assetTypes","assets","type","excludeTagsFragment","excludeTagSlugs","excludeTagsClause","observable","fetch","count","JSON","stringify","result","f","folderIds","Boolean","message","statusCode","foldersRefreshEpic","folderSetComplete","listenerCreateQueueComplete","listenerDeleteQueueComplete","listenerUpdateQueueComplete","updateComplete","uploadComplete","foldersCurrentFolderEpic","clear","pickClear","loadPageIndex","pageIndex","patchOperationAssetFolderUnset","patch","unset","patchOperationFolderParentSet","set","parent","_ref","_type","_weak","foldersCreateEpic","trim","siblingIds","collision","some","id","toLowerCase","newId","doc","create","foldersDeleteEpic","childFolderIds","tx","transaction","asset","childFolderId","delete","commit","foldersRenameEpic","selectById","selectChildrenByParentId","selectRootIds","selectExactCountByFolderId","selectCurrentFolderId","selectCurrentFolderUnfiled","buildFolderPath","segments","cursor","seen","add","unshift","join","selectFolderPathById","_state","selectFolderTree","buildNode","children","exactCount","totalCount","reduce","sum","child","path","selectCurrentFolderSegments","chain","depth","FoldersIndex","selectFoldersIndex","selectCurrentFolderChildren","split","stack","cur","pop","kids","selectCanDeleteFolder","foldersActions","reducer","createSlice","PayloadAction","pluralize","ofType","EMPTY","of","filter","mergeMap","AssetItem","Dialog","MyEpic","Tag","assetsActions","ASSETS_ACTIONS","foldersActions","tagsActions","DIALOG_ACTIONS","DialogReducerState","items","initialState","dialogSlice","name","extraReducers","builder","addCase","showFolderCreate","state","action","parentFolderId","payload","push","id","type","showFolderMove","assets","folderId","showFolderRename","showTagCreate","showTagEdit","tagId","createComplete","item","renameComplete","reducers","clear","inlineTagCreate","assetId","tag","forEach","lastCreatedTag","label","current","value","_id","inlineTagRemove","tagIds","lastRemovedTagIds","remove","showConfirmAssetsTagAdd","assetsPicked","closeDialogId","suffix","length","confirmCallbackAction","tagsAddRequest","confirmText","title","headerTitle","tone","showConfirmAssetsTagRemove","tagsRemoveRequest","showConfirmDeleteAssets","deleteRequest","map","assetItem","asset","description","showConfirmDeleteFolder","folderName","showConfirmDeleteTag","showAllAssetsDialog","some","showAssetEdit","showSearchFacets","showFolders","showTags","dialogClearOnAssetUpdateEpic","action$","pipe","deleteComplete","folderSetComplete","updateComplete","dialogId","actions","dialogTagCreateEpic","match","dialogTagDeleteEpic","listenerDeleteQueueComplete","dialogActions","reducer","createGlobalStyle","css","customScrollbar","GlobalStyle","PropsWithChildren","createContext","useContext","useMemo","DropzoneOptions","MediaToolOptions","Locale","ContextProps","dropzone","Pick","components","createTagsOnUpload","creditLine","directUploads","excludeTagSlugs","locales","ToolOptionsContext","Props","options","ToolOptionsProvider","children","value","creditLineExcludeSources","excludeSources","Array","isArray","maxSize","maximumUploadSize","details","enabled","excludeTags","length","useToolOptions","context","Error","z","localizedStringSchema","locales","id","length","string","trim","optional","shape","Record","ZodTypeAny","locale","object","passthrough","tagOptionSchema","label","min","message","value","getAssetFormSchema","altText","creditLine","description","opt","media","tags","array","nullable","originalFilename","title","assetFormSchema","tagFormSchema","name","folderFormSchema","SanityDocument","getUniqueDocuments","documents","draftIds","reduce","acc","doc","_id","startsWith","concat","slice","filteredDocuments","filter","includes","ImageAsset","imageDprUrl","asset","options","width","height","dpi","window","devicePixelRatio","Math","round","imgH","max","undefined","imgW","urlParams","URLSearchParams","append","toString","url","FormData","Record","sanitizeFormData","formData","Object","keys","reduce","acc","key","val","constructor","Array","length","trim","Asset","FileAsset","ImageAsset","isFileAsset","asset","_type","isImageAsset","zodResolver","FieldValues","Resolver","zodFormResolver","schema","TFieldValues","Parameters","ImageAsset","getAssetResolution","asset","metadata","dimensions","width","height","PopoverProps","usePortal","usePortalPopoverProps","$","_c","portal","t0","element","animate","constrainSize","floatingBoundary","referenceBoundary","ClipboardIcon","Button","Popover","Text","copy","useEffect","useRef","useState","usePortalPopoverProps","Props","disabled","url","ButtonAssetCopy","t0","$","_c","popoverProps","refPopoverTimeout","popoverVisible","setPopoverVisible","t1","current","clearTimeout","setTimeout","handleClick","t2","t3","Symbol","for","t4","t5","t6","DownloadIcon","Box","Button","Flex","Inline","Stack","Text","format","filesize","ReactNode","Asset","AssetItem","getAssetResolution","isImageAsset","ButtonAssetCopy","Props","asset","item","Row","t0","$","_c","label","value","t1","Symbol","for","opacity","width","t2","t3","textAlign","t4","t5","AssetMetadata","props","exif","metadata","originalFilename","url","window","location","href","handleDownload","size","base","round","mimeType","t6","extension","toUpperCase","t7","t8","t9","t10","DateTimeOriginal","FNumber","FocalLength","ExposureTime","ISO","background","height","Date","t11","updating","t12","t13","t14","t15","t16","Dialog","SanityDialog","ComponentProps","props","$","_c","t0","Symbol","for","position","t1","SanityDocument","Box","Button","Card","Stack","Text","Preview","SchemaType","useSchema","useIntentLink","Props","documents","isLoading","DocumentList","t0","$","_c","schema","t1","Symbol","for","length","map","doc","_id","get","_type","t2","ReferringDocument","props","schemaType","intent","params","id","onClick","width","Box","Flex","Theme","MouseEvent","defaultStyles","FileIcon","ReactFileIcon","DefaultExtensionType","styled","css","Props","extension","onClick","e","width","Container","theme","sanity","fonts","text","family","props","$","_c","t0","Symbol","for","height","t1","t2","t3","t4","Flex","Asset","FileIcon","Props","asset","FileAssetPreview","props","$","_c","mimeType","search","t0","Symbol","for","height","t1","width","t2","url","extension","Box","Button","Text","Tooltip","format","ReactNode","Props","disabled","isValid","lastUpdated","onClick","FormSubmitButton","props","$","_c","content","t0","Symbol","for","t1","Date","t2","maxWidth","t3","window","hues","ThemeColorSchemeKey","studioTheme","SCHEME_COLORS","bg","dark","gray","hex","light","bg2","inputEnabledBorder","color","default","input","enabled","border","inputHoveredBorder","hovered","mutedHoveredBg","primary","muted","mutedHoveredFg","fg","mutedSelectedBg","selected","spotBlue","spot","blue","SchemeColorKey","getSchemeColor","scheme","colorKey","ThemeColorSchemeKey","MouseEvent","styled","css","getSchemeColor","Props","onClick","e","$showCheckerboard","$scheme","src","style","Image","img","attrs","crossOrigin","const","props","ErrorOutlineIcon","Box","Inline","Text","Tooltip","styled","Props","description","error","label","name","StyledErrorOutlineIcon","theme","color","sanity","spot","red","FormFieldInputLabel","props","$","_c","t0","t1","marginRight","t2","t3","t4","AddIcon","ChevronDownIcon","CloseIcon","Box","Card","Flex","rem","studioTheme","Text","ThemeColorSchemeKey","components","StylesConfig","Virtuoso","getSchemeColor","radius","themeRadius","space","themeSpace","reactSelectStyles","scheme","control","styles","isFocused","boxShadow","indicatorsContainer","isDisabled","opacity","input","color","fontFamily","fonts","text","family","marginLeft","menuList","multiValue","backgroundColor","borderRadius","multiValueLabel","fontSize","padding","multiValueRemove","noOptionsMessage","lineHeight","option","placeholder","valueContainer","margin","DropdownIndicator","props","$","_c","t0","Symbol","for","t1","Menu","children","MenuList","Array","isArray","height","length","index","item","t2","MultiValueLabel","MultiValueRemove","Option","data","__isNew__","marginRight","reactSelectComponents","IndicatorSeparator","Box","Controller","CreatableSelect","useColorSchemeValue","useTypedSelector","reactSelectComponents","reactSelectStyles","TagSelectOption","FormFieldInputLabel","Props","control","description","disabled","error","label","name","onCreateTag","tagName","options","value","placeholder","FormFieldInputTags","props","$","_c","scheme","creating","_temp","tagsFetching","_temp2","t0","Symbol","for","zIndex","t1","t2","t3","field","onBlur","onChange","controllerValue","_temp3","t4","state","tags","state_0","fetching","Box","TextInput","ChangeEventHandler","FocusEventHandler","Ref","FormFieldInputLabel","Props","description","disabled","error","label","name","onBlur","HTMLInputElement","onChange","placeholder","value","ref","FormFieldInputText","props","$","_c","rest","t0","t1","t2","Box","TextArea","ChangeEventHandler","FocusEventHandler","Ref","FormFieldInputLabel","Props","description","disabled","error","label","name","onBlur","HTMLTextAreaElement","onChange","placeholder","rows","value","ref","FormFieldInputTextarea","props","$","_c","rest","t0","t1","t2","FolderIcon","TrashIcon","Box","Button","Card","Flex","Stack","Tab","TabList","TabPanel","Text","useState","Control","FieldErrors","UseFormRegister","Asset","AssetFormData","Locale","TagSelectOption","FormFieldInputLabel","FormFieldInputTags","FormFieldInputText","FormFieldInputTextarea","LocalizedErrors","Record","message","toStringField","value","found","Object","values","find","v","undefined","truncateFolderPath","path","segments","split","filter","Boolean","length","slice","join","DetailsProps","formUpdating","handleCreateTag","title","control","errors","register","allTagOptions","assetTagOptions","currentAsset","folderPath","folderMissing","onChangeFolder","onRemoveFolder","creditLine","enabled","excludeSources","locales","Details","hasLocales","activeLocaleTab","setActiveLocaleTab","folderId","opt","media","folder","_ref","folderLabel","tags","minWidth","overflowX","whiteSpace","overflowY","originalFilename","map","locale","idx","id","const","altText","description","includes","name","MutationEvent","Box","Button","Card","Flex","Stack","Tab","TabList","TabPanel","Text","groq","ReactNode","useCallback","useEffect","useMemo","useRef","useState","SubmitHandler","useForm","useFormState","useDispatch","WithReferringDocuments","useColorSchemeValue","useDocumentStore","useToolOptions","getAssetFormSchema","useTypedSelector","useVersionedClient","assetsActions","selectAssetById","dialogActions","DIALOG_ACTIONS","selectFolderPathById","selectTags","selectTagSelectOptions","tagsActions","Asset","AssetFormData","DialogAssetEditProps","TagSelectOption","getTagSelectOptions","getUniqueDocuments","imageDprUrl","sanitizeFormData","isFileAsset","isImageAsset","zodFormResolver","AssetMetadata","Dialog","DocumentList","FileAssetPreview","FormSubmitButton","Image","Details","DetailsProps","renderDefaultDetails","props","Props","children","dialog","DialogAssetEdit","$","_c","t0","assetId","id","lastCreatedTag","lastRemovedTagIds","client","scheme","documentStore","dispatch","t1","state","String","assetItem","tags","assetUpdatedPrev","undefined","assetSnapshot","setAssetSnapshot","asset","tabSection","setTabSection","currentAsset","t2","allTagOptions","t3","assetTagOptions","currentFolderId","opt","media","folder","_ref","t4","state_0","currentFolderPath","creditLine","components","t5","locales","t6","details","CustomDetails","t7","imageDescription","raw","metadata","image","ImageDescription","length","makeLocaleObj","field","t8","fallback","obj","i","locale","altText","description","originalFilename","title","flattenField","_temp2","generateDefaultValues","t9","t10","t11","defaultValues","mode","resolver","control","getValues","handleSubmit","register","reset","setValue","t12","errors","isDirty","isValid","formUpdating","updating","t13","remove","handleClose","t14","showConfirmDeleteAssets","assets","closeDialogId","_id","handleDelete","t15","Symbol","for","update","result","transition","handleAssetUpdate","t16","tagName","createRequest","name","handleCreateTag","t17","showFolderMove","folderId","handleChangeFolder","t18","folderSetRequest","handleRemoveFolder","t19","bb0","isLocaleObj","_temp3","fields","_type","anyLocalized","some","f","configuredIds","Set","map","_temp4","f_0","Object","keys","k","has","hasOrphanedLocales","t20","cleanField","field_1","Array","isArray","obj_0","Record","sorted","sort","k_0","find","_temp5","configuredIds_0","_temp6","cleaned","key","val","entries","patch","set","commit","handleCleanupLocales","t21","formData","sanitizedFormData","updateRequest","_temp7","onSubmit","t22","subscriptionAsset","listen","subscribe","unsubscribe","t23","t24","t25","t26","existingTags","updatedTags","concat","shouldDirty","t27","t28","existingTags_0","updatedTags_0","filter","tag_0","includes","tag","value","t29","current","_updatedAt","t30","t31","t32","t33","t34","t35","t36","t37","t38","t39","footer","t40","t41","folderPath","folderMissing","onChangeFolder","onRemoveFolder","detailsProps","t42","t43","t44","t45","isLoading","referringDocuments","uniqueReferringDocuments","display","t46","aspectRatio","t47","t48","isOpaque","height","width","t49","t50","t51","t52","t53","_temp","v","field_0","fallback_0","values","v_0","l","v_1","l_0","_weak","createSelector","CardAssetData","CardFolderData","CardUploadData","selectCurrentFolderChildren","RootReducerState","selectCombinedItems","state","assets","allIds","uploads","assetIds","uploadIds","folderChildren","assetItems","map","id","type","folderItems","folder","folderId","name","path","totalCount","uploadItems","combinedItems","isHotkey","RefObject","useCallback","useEffect","useRef","useKeyPress","hotkey","onPress","$","_c","keyPressed","t0","e","current","downHandler","t1","Symbol","for","upHandler","t2","t3","window","addEventListener","removeEventListener","CheckmarkCircleIcon","EditIcon","WarningFilledIcon","Box","Checkbox","Container","Flex","Spinner","Text","Theme","ThemeColorSchemeKey","Tooltip","useToast","memo","MouseEvent","RefObject","useDispatch","useColorSchemeValue","styled","css","PANEL_HEIGHT","useAssetSourceActions","useKeyPress","useTypedSelector","assetsActions","selectAssetById","selectAssetsPicked","dialogActions","getSchemeColor","imageDprUrl","isFileAsset","isImageAsset","FileIcon","Image","Props","id","selected","source","CardWrapper","CardContainer","$picked","theme","$updating","sanity","color","spot","orange","ContextActionContainer","$scheme","StyledWarningOutlineIcon","red","CardAsset","props","$","_c","scheme","toast","shiftPressed","dispatch","lastPicked","_temp","assetsPicked","t0","state_0","state","item","t1","state_1","dialog","items","find","_temp2","type","assetId","undefined","dialogReplaceAssetId","asset","error","isOpaque","metadata","picked","updating","assetToReplaceId","length","_id","t2","state_2","assetToReplace","isMultiSelect","onSelect","t3","updateImageReferences","push","status","title","clear","handleReplaceAsset","t4","e","stopPropagation","kind","value","current","pickRange","startId","endId","pick","showAssetEdit","handleAssetClick","t5","e_0","handleContextActionClick","opacityContainer","opacityPreview","t6","t7","cursor","position","t8","t9","height","opacity","t10","extension","t11","width","draggable","transition","t12","t13","left","top","t14","t15","t16","t17","flexShrink","pointerEvents","transform","t18","originalFilename","t19","t20","right","t21","assets","d","Box","Card","Flex","Stack","Text","useDispatch","useColorSchemeValue","css","styled","foldersActions","getSchemeColor","Props","folderId","name","totalCount","CardWrapper","FolderCard","FolderGlyph","theme","sanity","color","spot","yellow","CardFolder","t0","$","_c","dispatch","scheme","t1","currentFolderSet","t2","t3","background","border","t4","Symbol","for","t5","lineHeight","minHeight","wordBreak","t6","t7","t8","t9","t10","t11","Observable","from","of","mergeMap","PREVIEW_WIDTH","createBlob","img","HTMLImageElement","Promise","Blob","resolve","imageAspect","width","height","canvas","HTMLCanvasElement","document","createElement","Math","max","ctx","getContext","drawImage","toBlob","err","console","warn","createImageEl","file","File","blobUrlLarge","window","URL","createObjectURL","Image","onload","revokeObjectURL","src","generatePreviewBlobUrl","imageEl","blob","Error","generatePreviewBlobUrl$","pipe","Subject","Subscription","Observable","from","first","mergeMap","DEFAULT_CONCURRENCY","remove","array","Array","T","item","index","indexOf","splice","createThrottler","concurrency","currentSubscriptions","pendingObservables","ready$","request","observable","observer","length","scheduleAndWait$","pipe","subscribe","subscription","push","unsubscribe","next","shift","asObservable","obs","withMaxConcurrency","func","args","throttler","SanityAssetDocument","SanityClient","SanityImageAssetDocument","Observable","of","throwError","map","mergeMap","HttpError","withMaxConcurrency","fetchExisting$","client","type","hash","observable","fetch","documentType","readFile$","file","File","ArrayBuffer","subscriber","reader","FileReader","onload","next","result","complete","onerror","err","error","readAsArrayBuffer","abort","hexFromBuffer","buffer","Array","prototype","call","Uint8Array","x","toString","slice","join","hashFile$","window","crypto","subtle","message","statusCode","pipe","arrayBuffer","digest","uploadSanityAsset$","assetType","existingAsset","assets","upload","extract","preserveFilename","event","asset","body","document","id","_id","uploadAsset$","createSelector","createSlice","PayloadAction","ClientError","SanityAssetDocument","SanityImageAssetDocument","groq","empty","from","merge","of","catchError","delay","filter","mergeMap","takeUntil","withLatestFrom","HttpError","MyEpic","SanityUploadProgressEvent","UploadItem","constructFilter","generatePreviewBlobUrl$","hashFile$","uploadAsset$","assetsActions","RootReducerState","UPLOADS_ACTIONS","UploadsReducerState","allIds","byIds","Record","initialState","uploadsSlice","name","extraReducers","builder","addCase","uploadComplete","state","action","asset","payload","sha1hash","status","reducers","checkRequest","_state","_action","assets","checkComplete","results","assetHashes","Object","keys","forEach","hash","deleteIndex","indexOf","splice","blobUrl","objectUrl","window","URL","revokeObjectURL","previewReady","uploadCancel","uploadError","error","uploadRequest","file","File","forceAsAssetType","uploadProgress","event","uploadHash","percent","uploadStart","uploadItem","includes","push","uploadsAssetStartEpic","action$","_state$","client","pipe","uploadsActions","match","url","assetType","v","type","folderId","patch","_id","setIfMissing","opt","set","_ref","_type","_weak","commit","stage","message","statusCode","uploadsAssetUploadEpic","state$","exists","uploads","folders","currentFolderId","size","uploadsCompleteQueueEpic","uploadsCheckRequestEpic","documentIds","map","constructedFilter","assetTypes","excludeTagSlugs","searchFacets","search","facets","searchQuery","query","observable","fetch","resultHashes","checkedResults","reduce","acc","insertUploads","selectUploadById","uploadId","actions","reducer","CloseIcon","Box","Button","Flex","Text","filesize","useDispatch","useColorSchemeValue","styled","PANEL_HEIGHT","useTypedSelector","selectUploadById","uploadsActions","getSchemeColor","FileIcon","Image","Props","id","CardWrapper","CardUpload","props","$","_c","scheme","dispatch","t0","state","item","t1","size","base","round","fileSize","percentLoaded","Math","percent","isComplete","status","isUploading","isQueued","t2","hash","uploadCancel","handleCancelUpload","t3","t4","background","border","height","position","t5","t6","bottom","left","width","transform","transformOrigin","transition","t7","Symbol","for","t8","assetType","objectUrl","opacity","t9","t10","top","boxShadow","t11","t12","t13","name","t14","flexShrink","t15","t16","t17","memo","VirtuosoGrid","styled","useTypedSelector","CardAssetData","CardFolderData","CardUploadData","CardAsset","CardFolder","CardUpload","Props","items","onLoadMore","source","CARD_HEIGHT","CARD_WIDTH","VirtualCell","t0","$","_c","item","selected","type","t1","id","folderId","name","totalCount","StyledItemContainer","div","ItemContainer","props","ref","rest","context","StyledListContainer","ListContainer","AssetGridVirtualized","selectedAssets","_temp","map","_temp2","selectedIds","length","index","t2","Symbol","for","Item","List","t3","index_0","item_0","includes","t4","overflowX","overflowY","t5","state","assets","asset","_id","Box","Text","useEffect","useRef","useState","useDispatch","useStore","useTypedSelector","assetsActions","foldersActions","searchActions","selectCombinedItems","RootReducerState","SearchFacetInputProps","WithId","isImageAsset","AssetGridVirtualized","omitFacetId","facet","id","_id","withoutId","ReplaceAssetsOverview","$","_c","dispatch","store","combinedItems","assetsById","_temp","fetchCount","_temp2","fetching","_temp3","fetchingError","_temp4","pageSize","_temp5","searchQuery","_temp6","searchFacets","_temp7","currentFolderId","_temp8","currentFolderUnfiled","_temp9","assetToReplaceId","_temp1","savedBrowserStateRef","t0","length","Boolean","awaitingRefetch","setAwaitingRefetch","t1","t2","dialog","dialog_0","folders","search","getState","query","facets","dialogItem","items","find","_temp10","current","assetId","type","undefined","folderId","folderUnfiled","querySet","facetsClear","currentFolderClear","saved","hadScope","facetsAdd","currentFolderSet","currentFolderShowUnfiled","pick","picked","t3","t4","previousIds","assets","allIds","awaitingSettle","subscribe","isFetching","listCleared","scopeActive","t5","t6","item_1","item","asset","filter","reducedItems","hasFetchedOnce","hasMorePages","isEmpty","t7","loadNextPage","t8","handleLoadMoreItems","t9","state","byIds","state_0","state_1","state_2","state_3","state_4","state_5","state_6","state_7","_temp0","state_8","item_0","Box","ReactNode","useCallback","useDispatch","dialogActions","DialogAllAssetsProps","Dialog","ReplaceAssetsOverview","Props","children","dialog","DialogAllAssets","props","$","_c","t0","id","dispatch","t1","clear","handleClose","t2","Symbol","for","height","t3","WarningOutlineIcon","Box","Button","Flex","Stack","Text","ReactNode","useDispatch","dialogActions","DialogConfirmProps","Dialog","Props","children","dialog","DialogConfirm","props","$","_c","dispatch","t0","id","remove","handleClose","t1","closeDialogId","confirmCallbackAction","handleConfirm","t2","confirmText","tone","Footer","t3","headerTitle","Header","t4","t5","t6","title","t7","description","t8","t9","Box","Flex","Text","ReactNode","useEffect","SubmitHandler","useForm","useDispatch","folderFormSchema","useTypedSelector","dialogActions","foldersActions","selectFolderPathById","DialogFolderCreateProps","FolderFormData","sanitizeFormData","zodFormResolver","Dialog","FormFieldInputText","FormSubmitButton","Props","children","dialog","DialogFolderCreate","props","$","_c","t0","parentFolderId","id","dispatch","creating","_temp","creatingError","_temp2","t1","state_1","state","parentPath","t2","Symbol","for","name","t3","defaultValues","mode","resolver","formState","t4","handleSubmit","register","setError","errors","isDirty","isValid","t5","clear","handleClose","t6","formData","sanitizedFormData","createRequest","parentId","onSubmit","t7","t8","message","t9","Footer","t10","t11","t12","display","t13","t14","t15","t16","t17","t18","folders","state_0","Box","Button","Flex","Inline","Stack","Text","Tree","TreeItem","pluralize","ReactNode","useMemo","useState","useDispatch","useTypedSelector","assetsActions","dialogActions","selectFolderTree","DialogFolderMoveProps","FolderTreeNode","Dialog","getExpandedIdSet","folderId","byId","Record","parentId","expanded","Set","cursor","node","add","Props","children","dialog","FolderNodeProps","expandedIds","onSelect","selectedId","FolderNode","t0","$","_c","hasChildren","length","selected","id","t1","has","t2","t3","name","totalCount","t4","t5","map","childNode","t6","FolderTreeProps","folderTree","FolderTree","DialogFolderMove","dispatch","_temp","assets","setSelectedId","selectedFolder","remove","handleClose","folderSetRequest","closeDialogId","handleMove","t7","t8","t9","t10","t11","t12","t13","t14","t15","Symbol","for","maxHeight","overflowY","t16","t17","t18","t19","t20","t21","state","folders","Box","Flex","Text","ReactNode","useEffect","SubmitHandler","useForm","useDispatch","folderFormSchema","useTypedSelector","dialogActions","foldersActions","selectFolderPathById","DialogFolderRenameProps","FolderFormData","sanitizeFormData","zodFormResolver","Dialog","FormFieldInputText","FormSubmitButton","Props","children","dialog","DialogFolderRename","t0","$","_c","folderId","id","dispatch","renaming","_temp","renameError","_temp2","t1","state_1","state","folders","byId","folder","t2","state_2","folderPath","currentName","name","t3","includes","slice","lastIndexOf","parentPath","t4","t5","Symbol","for","t6","defaultValues","mode","resolver","formState","t7","handleSubmit","register","setError","errors","isDirty","isValid","t8","remove","handleClose","t9","formData","sanitizedFormData","renameRequest","onSubmit","t10","t11","message","t12","t13","t14","t15","t16","display","t17","t18","t19","t20","t21","t22","t23","state_0","AddIcon","EditIcon","FolderIcon","TrashIcon","Box","Button","Container","Flex","Inline","Label","Text","Tooltip","Tree","TreeItem","ReactNode","useMemo","useDispatch","PANEL_HEIGHT","useTypedSelector","dialogActions","DIALOG_ACTIONS","foldersActions","selectCanDeleteFolder","selectFolderTree","FolderTreeNode","getExpandedIdSet","folderId","byId","Record","parentId","expanded","Set","cursor","node","add","FolderNodeProps","currentFolderId","expandedIds","onSelect","FolderHeaderActionProps","disabled","icon","onClick","tone","tooltip","FolderHeaderAction","t0","$","_c","t1","t2","undefined","t3","t4","t5","window","FolderItemTextProps","name","totalCount","FolderItemText","Symbol","for","boxSizing","display","maxWidth","minWidth","overflow","paddingRight","position","width","alignItems","paddingLeft","gap","flexShrink","lineHeight","textOverflow","whiteSpace","t6","fontSize","opacity","right","top","transform","t7","t8","FolderNode","hasChildren","children","length","selected","id","has","map","childNode","FolderView","dispatch","_temp","_temp2","canDeleteFolder","fetching","_temp3","folderTree","currentFolder","Array","from","join","treeKey","hasFolders","currentFolderSet","handleFolderSelect","showConfirmDeleteFolder","folderName","handleFolderDelete","borderBottom","height","showFolderRename","t9","t10","showFolderCreate","parentFolderId","t11","t12","t13","t14","currentFolderClear","t15","t16","t17","t18","t19","t20","t21","t22","state","folders","state_0","state_1","Box","ReactNode","useCallback","useDispatch","dialogActions","DialogFoldersProps","Dialog","FolderView","Props","children","dialog","DialogFolders","props","$","_c","t0","id","dispatch","t1","clear","handleClose","t2","Symbol","for","height","minHeight","t3","CloseIcon","Box","Flex","Label","rem","Text","ThemeColorSchemeKey","ReactNode","useDispatch","useColorSchemeValue","styled","css","searchActions","SearchFacetInputProps","WithId","getSchemeColor","Props","children","facet","Container","$scheme","theme","sanity","radius","SearchFacet","props","$","_c","scheme","dispatch","t0","id","facetsRemoveById","facetId","handleClose","t1","Symbol","for","t2","t3","t4","t5","t6","whiteSpace","t7","title","t8","t9","t10","t11","TextInput","ChangeEvent","Props","onValueChange","value","TextInputNumber","props","$","_c","remainingProps","t0","t1","t2","e","val","target","regex","test","parseInt","handleChange","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","operators","usePortalPopoverProps","searchActions","SearchFacetInputNumberModifier","SearchFacetInputNumberProps","SearchFacetOperatorType","WithId","SearchFacet","TextInputNumber","Props","facet","SearchFacetNumber","t0","$","_c","dispatch","popoverProps","modifiers","t1","modifier","find","name","selectedModifier","t2","id","operatorType","facetsUpdateById","handleOperatorItemClick","t3","modifier_0","handleModifierClick","t4","value","handleValueChange","selectedOperatorType","t5","operatorTypes","label","map","operatorType_0","index","selected","t6","Symbol","for","maxWidth","t7","t8","t9","title","modifier_1","selected_0","t10","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","operators","usePortalPopoverProps","searchActions","SearchFacetInputSelectListItemProps","SearchFacetInputSelectProps","SearchFacetOperatorType","WithId","SearchFacet","Props","facet","SearchFacetSelect","t0","$","_c","dispatch","popoverProps","options","t1","value","find","v","name","selectedItem","t2","option","facetsUpdate","handleListItemClick","t3","operatorType","handleOperatorItemClick","selectedOperatorType","t4","operatorTypes","label","map","operatorType_0","index","selected","t5","title","t6","t7","item","selected_0","t8","t9","t10","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","TextInput","ChangeEvent","useDispatch","operators","usePortalPopoverProps","searchActions","SearchFacetInputStringProps","SearchFacetOperatorType","WithId","SearchFacet","Props","facet","SearchFacetString","t0","$","_c","dispatch","popoverProps","t1","id","operatorType","facetsUpdateById","handleOperatorItemClick","t2","e","value","target","handleChange","selectedOperatorType","t3","operatorTypes","label","map","operatorType_0","index","selected","t4","hideInput","maxWidth","t5","CloseIcon","Box","Card","rem","studioTheme","Text","ThemeColorSchemeKey","components","StylesConfig","Virtuoso","getSchemeColor","fonts","text","sizes","themeTextSizes","radius","themeRadius","space","themeSpace","reactSelectStyles","scheme","control","styles","isDisabled","isFocused","boxShadow","fontSize","input","color","fontFamily","family","marginLeft","menuList","padding","noOptionsMessage","lineHeight","option","backgroundColor","placeholder","paddingLeft","singleValue","alignItems","display","height","valueContainer","margin","ClearIndicator","props","$","_c","t0","Symbol","for","transform","t1","t2","Menu","children","MenuList","Array","isArray","length","index","item","NoOptionsMessage","Option","SingleValue","reactSelectComponents","DropdownIndicator","IndicatorSeparator","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","Select","useColorSchemeValue","operators","useToolOptions","usePortalPopoverProps","useTypedSelector","searchActions","selectTags","reactSelectComponents","reactSelectStyles","TagSelectOption","SearchFacetInputSearchableProps","SearchFacetOperatorType","WithId","getTagSelectOptions","SearchFacet","Props","facet","SearchFacetTags","t0","$","_c","scheme","dispatch","excludeTagSlugs","tagsAll","_temp","t1","length","filter","t","includes","tag","name","current","tags","tagsFetching","_temp2","t2","allTagOptions","popoverProps","t3","id","option","facetsUpdateById","value","handleChange","t4","operatorType","handleOperatorItemClick","selectedOperatorType","t5","operatorTypes","label","map","operatorType_0","index","selected","minWidth","t6","hideInput","width","_temp3","t7","state","state_0","fetching","Box","Flex","Inline","rem","Theme","styled","css","useTypedSelector","SearchFacetNumber","SearchFacetSelect","SearchFacetString","SearchFacetTags","Props","layout","StackContainer","theme","sanity","space","SearchFacets","props","$","_c","t0","undefined","searchFacets","_temp","t1","map","_temp2","Items","length","t2","Error","state","search","facets","facet","key","id","type","AddIcon","Button","Flex","Menu","MenuButton","MenuDivider","MenuGroup","MenuItem","useDispatch","FACETS","useToolOptions","usePortalPopoverProps","useTypedSelector","searchActions","SearchFacetDivider","SearchFacetGroup","SearchFacetInputProps","SearchFacetsControl","$","_c","dispatch","assetTypes","_temp","searchFacets","_temp2","selectedDocument","_temp3","popoverProps","creditLine","isTool","T0","T1","T2","t0","t1","t2","enabled","t3","facet","type","name","selectOnly","matchingAssetTypes","filter","assetType","includes","length","filteredFacets","_temp4","hasSearchFacets","renderMenuFacets","facets_0","t4","level","undefined","facets","map","facet_1","index_0","index","title","disabled","operatorTypes","find","v","facetsAdd","t5","placement","t6","facetsClear","t7","state","assets","state_0","search","state_1","selected","document","facet_0","previousFacet","Box","ReactNode","useCallback","useDispatch","dialogActions","DialogSearchFacetsProps","Dialog","SearchFacets","SearchFacetsControl","Props","children","dialog","DialogSearchFacets","props","$","_c","t0","id","dispatch","t1","clear","handleClose","t2","Symbol","for","t3","Box","Flex","ReactNode","useEffect","SubmitHandler","useForm","useDispatch","tagFormSchema","useTypedSelector","dialogActions","tagsActions","DialogTagCreateProps","TagFormData","sanitizeFormData","zodFormResolver","Dialog","FormFieldInputText","FormSubmitButton","Props","children","dialog","DialogTagCreate","props","$","_c","t0","id","dispatch","creating","_temp","creatingError","_temp2","t1","Symbol","for","name","t2","defaultValues","mode","resolver","formState","t3","handleSubmit","register","setError","errors","isDirty","isValid","formUpdating","t4","clear","handleClose","t5","formData","sanitizedFormData","createRequest","onSubmit","t6","t7","message","t8","Footer","t9","t10","t11","display","t12","t13","t14","t15","t16","state","tags","state_0","MutationEvent","Box","Button","Card","Flex","Text","groq","ReactNode","useCallback","useEffect","useState","SubmitHandler","useForm","useDispatch","tagFormSchema","useTypedSelector","useVersionedClient","dialogActions","selectTagById","tagsActions","DialogTagEditProps","Tag","TagFormData","sanitizeFormData","zodFormResolver","Dialog","FormFieldInputText","FormSubmitButton","Props","children","dialog","DialogTagEdit","props","$","_c","t0","id","tagId","client","dispatch","t1","state","String","tagItem","tagSnapshot","setTagSnapshot","tag","currentTag","generateDefaultValues","_temp","t2","t3","t4","Symbol","for","t5","defaultValues","mode","resolver","formState","t6","handleSubmit","register","reset","setError","errors","isDirty","isValid","formUpdating","updating","t7","remove","handleClose","t8","formData","sanitizedFormData","updateRequest","closeDialogId","_id","name","_type","current","onSubmit","t9","showConfirmDeleteTag","handleDelete","t10","update","result","transition","handleTagUpdate","t11","error","message","t12","t13","t14","subscriptionAsset","listen","subscribe","unsubscribe","t15","t16","t17","_updatedAt","Footer","t18","t19","t20","t21","display","t22","t23","t24","t25","t26","ArrowDownIcon","ArrowUpIcon","CloseIcon","EditIcon","SearchIcon","TrashIcon","Box","Button","Container","Flex","Text","Tooltip","ReactNode","useDispatch","styled","inputs","PANEL_HEIGHT","useTypedSelector","selectAssetsPicked","dialogActions","DIALOG_ACTIONS","searchActions","selectIsSearchFacetTag","SearchFacetInputSearchableProps","TagActions","TagItem","Props","actions","tag","TagContainer","ButtonContainer","TagButtonProps","disabled","icon","onClick","tone","tooltip","TagButton","props","$","_c","t0","t1","t2","window","Tag","dispatch","assetsPicked","_id","state","isSearchFacetTag","facetsRemoveByTag","tagId","handleSearchFacetTagRemove","showConfirmAssetsTagAdd","handleShowAddTagToAssetsDialog","t3","showConfirmAssetsTagRemove","handleShowRemoveTagFromAssetsDialog","t4","showConfirmDeleteTag","handleShowTagDeleteDialog","t5","showTagEdit","handleShowTagEditDialog","t6","name","current","searchFacet","value","label","facetsUpdate","operatorType","facetsAdd","facet","handleSearchFacetTagAddOrUpdate","t7","updating","t8","opacity","userSelect","t9","t10","t11","Symbol","for","flexShrink","t12","includes","t13","t14","t15","t16","t17","t18","Flex","Label","memo","useState","Virtuoso","PANEL_HEIGHT","useTypedSelector","selectAssetsPicked","TagActions","TagItem","Tag","VirtualRow","t0","$","_c","isScrolling","item","t1","Symbol","for","height","t2","t3","undefined","actions","tag","_id","TagsVirtualized","tags","assetsPicked","setIsScrolling","items","pickedTagIds","reduce","_temp2","pickedTagIdsUnique","Set","acc_0","tagId","tagIsInEveryAsset","every","assetItem","tagIndex","asset","opt","media","findIndex","tag_0","_ref","acc","appliedToAll","push","appliedToSome","tagIdsSegmented","tagsAppliedToAll","filter","tag_1","includes","map","_temp3","tagsAppliedToSome","tag_2","_temp4","tagsUnused","tag_3","_temp5","length","_temp6","index","index_0","flex","overflowX","t4","_temp","val","assetTagIds","concat","tagItem","tagItem_0","tagItem_1","tagItem_2","ComposeIcon","Box","Button","Flex","Inline","Label","useDispatch","useColorSchemeValue","PANEL_HEIGHT","useTypedSelector","DIALOG_ACTIONS","getSchemeColor","Props","allowCreate","light","title","TagViewHeader","t0","$","_c","scheme","dispatch","tagsCreating","_temp","tagsFetching","_temp2","t1","showTagCreate","handleTagCreate","t2","t3","background","borderBottom","flexShrink","height","t4","t5","opacity","t6","t7","boxShadow","t8","state","tags","creating","state_0","fetching","Box","Flex","Text","useToolOptions","useTypedSelector","selectAssetsPickedLength","selectTags","TagsVirtualized","TagViewHeader","TagView","$","_c","numPickedAssets","excludeTagSlugs","tagsAll","t0","length","filter","t","includes","tag","name","current","tags","fetching","_temp","fetchCount","_temp2","fetchComplete","hasTags","hasPicked","t1","t2","t3","t4","t5","state","state_0","Box","ReactNode","useCallback","useDispatch","dialogActions","DialogTagsProps","Dialog","TagView","Props","children","dialog","DialogTags","props","$","_c","t0","id","dispatch","t1","clear","handleClose","t2","Symbol","for","height","minHeight","t3","useTypedSelector","Dialog","DialogAssetEdit","DialogAllAssets","DialogConfirm","DialogFolderCreate","DialogFolderMove","DialogFolderRename","DialogFolders","DialogSearchFacets","DialogTagCreate","DialogTagEdit","DialogTags","Dialogs","$","_c","currentDialogs","_temp","t0","renderDialogs","dialogs","index","length","dialog","childDialogs","type","state","items","useToast","useEffect","useTypedSelector","Notifications","$","_c","items","_temp","toast","t0","t1","length","lastItem","push","closable","status","title","state","notifications","PayloadAction","createSlice","DebugReducerState","badConnection","enabled","initialState","debugSlice","name","reducers","setBadConnection","state","action","payload","toggleEnabled","debugActions","actions","reducer","PayloadAction","createSlice","pluralize","AnyAction","ofType","of","bufferTime","filter","mergeMap","HttpError","ImageAsset","MyEpic","assetsActions","ASSETS_ACTIONS","foldersActions","tagsActions","uploadsActions","Notification","asset","status","title","NotificationsReducerState","items","messageFromGenericErrorPayload","payload","error","String","message","initialState","notificationsSlice","name","reducers","add","state","action","push","notificationsAssetsDeleteCompleteEpic","action$","pipe","deleteComplete","match","assetIds","deletedCount","length","actions","notificationsAssetsDeleteErrorEpic","deleteError","count","notificationsAssetsUploadCompleteEpic","checkComplete","results","Object","keys","notificationsAssetsTagsAddCompleteEpic","tagsAddComplete","assets","notificationsAssetsTagsRemoveCompleteEpic","tagsRemoveComplete","notificationsAssetsUpdateCompleteEpic","updateComplete","updatedCount","notificationsGenericErrorEpic","fetchError","type","updateError","createError","renameError","uploadError","notificationsTagCreateCompleteEpic","createComplete","notificationsTagDeleteCompleteEpic","notificationsTagUpdateCompleteEpic","notificationsFolderCreateCompleteEpic","notificationsFolderDeleteCompleteEpic","notificationsFolderRenameCompleteEpic","renameComplete","notificationsActions","reducer","createSlice","SanityAssetDocument","SanityDocument","SanityImageAssetDocument","SelectedReducerState","assets","document","documentAssetIds","initialState","undefined","selectedSlice","name","reducers","reducer","Reducer","StateFromReducersMapObject","combineReducers","combineEpics","assetsReducer","assetsDeleteEpic","assetsFetchAfterDeleteAllEpic","assetsFetchEpic","assetsFolderSetEpic","assetsFolderSetRefreshEpic","assetsFetchNextPageEpic","assetsFetchPageIndexEpic","assetsListenerCreateQueueEpic","assetsListenerDeleteQueueEpic","assetsListenerUpdateQueueEpic","assetsOrderSetEpic","assetsSearchEpic","assetsSortEpic","assetsTagsAddEpic","assetsTagsRemoveEpic","assetsUnpickEpic","assetsUpdateEpic","assetsUpdateImageReferencesEpic","debugReducer","dialogReducer","dialogClearOnAssetUpdateEpic","dialogTagCreateEpic","dialogTagDeleteEpic","foldersReducer","foldersCurrentFolderEpic","foldersCreateEpic","foldersDeleteEpic","foldersFetchEpic","foldersRefreshEpic","foldersRenameEpic","notificationsReducer","notificationsAssetsDeleteErrorEpic","notificationsAssetsDeleteCompleteEpic","notificationsAssetsTagsAddCompleteEpic","notificationsAssetsTagsRemoveCompleteEpic","notificationsAssetsUpdateCompleteEpic","notificationsFolderCreateCompleteEpic","notificationsFolderDeleteCompleteEpic","notificationsFolderRenameCompleteEpic","notificationsGenericErrorEpic","notificationsTagCreateCompleteEpic","notificationsTagDeleteCompleteEpic","notificationsTagUpdateCompleteEpic","searchReducer","searchFacetTagUpdateEpic","selectedReducer","tagsReducer","tagsCreateEpic","tagsDeleteEpic","tagsFetchEpic","tagsListenerCreateQueueEpic","tagsListenerDeleteQueueEpic","tagsListenerUpdateQueueEpic","tagsSortEpic","tagsUpdateEpic","uploadsReducer","uploadsAssetStartEpic","uploadsAssetUploadEpic","uploadsCheckRequestEpic","uploadsCompleteQueueEpic","rootEpic","reducers","assets","debug","dialog","folders","notifications","search","selected","tags","uploads","ReducersMapObject","rootReducer","SanityDocument","isPlainObject","value","Array","isArray","getAssetIds","node","Record","acc","forEach","v","_type","_ref","push","Object","values","val","getDocumentAssetIds","document","assetIds","Set","sort","SUPPORTED_ASSET_TYPES","AssetType","isSupportedAssetType","assetType","supported","includes","AnyAction","configureStore","Store","SanityClient","ReactNode","useState","Provider","createEpicMiddleware","AssetSourceComponentProps","SanityDocument","rootEpic","rootReducer","initialState","assetsInitialState","RootReducerState","getDocumentAssetIds","isSupportedAssetType","Props","assetType","children","client","document","excludeTagSlugs","selectedAssets","createReduxStore","props","epicMiddleware","dependencies","store","reducer","middleware","getDefaultMiddleware","serializableCheck","thunk","prepend","devTools","preloadedState","assets","assetTypes","length","debug","badConnection","enabled","dialog","items","folders","byId","childrenByParentId","rootIds","exactCountByFolderId","unfiledCount","currentFolderId","currentFolderUnfiled","panelVisible","fetching","fetchCount","creating","renaming","notifications","search","facets","query","selected","documentAssetIds","tags","allIds","byIds","uploads","run","ReduxProvider","t0","$","_c","t1","t2","PortalProvider","useEffect","useRef","useDispatch","AssetSourceComponentProps","SanityDocument","useFormValue","AssetBrowserDispatchProvider","useRootPortalElement","useTypedSelector","useVersionedClient","assetsActions","dialogActions","foldersActions","tagsActions","GlobalStyle","constructFilter","Dialogs","Notifications","ReduxProvider","EditAssetDialog","t0","$","_c","assetId","onClose","dispatch","openDialogCount","_temp","hasOpenedRef","t1","t2","queryFilter","assetTypes","searchFacets","fetchRequest","params","showAssetEdit","t3","t4","current","t5","Symbol","for","EditAssetTool","props","selectedAssets","portalElement","currentDocument","client","_id","undefined","t6","t7","onSelect","t8","assetType","state","dialog","items","length","ThLargeIcon","ThListIcon","Button","Inline","useDispatch","useTypedSelector","assetsActions","ButtonViewGroup","$","_c","dispatch","view","_temp","t0","Symbol","for","whiteSpace","t1","t2","viewSet","t3","borderBottomRightRadius","borderTopRightRadius","t4","t5","t6","t7","borderBottomLeftRadius","borderTopLeftRadius","t8","t9","state","assets","SortIcon","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","getOrderTitle","ORDER_OPTIONS","usePortalPopoverProps","useTypedSelector","assetsActions","OrderSelect","$","_c","dispatch","order","_temp","popoverProps","t0","direction","field","t1","t2","map","item","index","selected","orderSet","minWidth","t3","t4","state","assets","Box","useNProgress","Props","loading","Progress","props","$","_c","t0","animationDuration","isAnimating","isFinished","progress","t1","t2","t3","opacity","transition","t4","t5","t6","height","background","position","left","top","width","t7","TagIcon","$","_c","t0","Symbol","for","CloseIcon","SearchIcon","Box","Flex","TextInput","ChangeEvent","useDispatch","useTypedSelector","searchActions","TextInputSearch","$","_c","searchQuery","_temp","dispatch","t0","e","querySet","currentTarget","value","handleChange","t1","handleClear","t2","Symbol","for","position","t3","t4","length","cursor","height","opacity","right","top","width","zIndex","t5","state","search","query","FolderIcon","Box","Button","Flex","Inline","useMediaIndex","useDispatch","useTypedSelector","dialogActions","foldersActions","tagsActions","ButtonViewGroup","OrderSelect","Progress","SearchFacets","SearchFacetsControl","TagIcon","TextInputSearch","Controls","$","_c","dispatch","fetching","_temp","foldersPanelVisible","_temp2","pageIndex","_temp3","searchFacets","_temp4","tagsPanelVisible","_temp5","mediaIndex","t0","showSearchFacets","handleShowSearchFacetDialog","t1","showFolders","handleShowFoldersDialog","t2","showTags","handleShowTagsDialog","t3","panelVisibleSet","panelVisible","toggleFoldersPanel","t4","toggleTagsPanelToggle","t5","Symbol","for","borderBottom","zIndex","t6","t7","t8","alignItems","flex","height","justifyContent","position","width","t9","minWidth","t10","t11","t12","t13","t14","whiteSpace","t15","length","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","transform","t31","t32","t33","t34","t35","t36","state","assets","state_0","folders","state_1","state_2","search","facets","state_3","tags","PlugIcon","Box","Flex","Switch","Text","Tooltip","ChangeEvent","useDispatch","useKeyPress","useTypedSelector","debugActions","DebugControls","$","_c","dispatch","badConnection","_temp","debugEnabled","_temp2","t0","e","checked","target","setBadConnection","handleChange","t1","toggleEnabled","handleToggleControls","t2","Symbol","for","bottom","left","pointerEvents","position","width","t3","t4","t5","t6","t7","t8","t9","state","debug","state_0","enabled","Box","Button","Inline","Text","useDispatch","useTypedSelector","foldersActions","selectCurrentFolderSegments","FolderBreadcrumbs","$","_c","dispatch","currentFolderId","_temp","segments","t0","Symbol","for","t1","currentFolderClear","t2","t3","segment","id","currentFolderSet","folderId","name","map","state","folders","Box","FOLDERS_PANEL_WIDTH","useTypedSelector","FolderView","FolderPanel","$","_c","foldersPanelVisible","_temp","t0","Symbol","for","position","width","t1","borderRight","height","left","overflowX","overflowY","top","state","folders","panelVisible","ReactNode","createContext","useContext","useMemo","ContextProps","open","Props","children","DropzoneDispatchContext","undefined","DropzoneDispatchProvider","props","$","_c","t0","contextValue","t1","useDropzoneActions","context","Error","ArrowRightIcon","CloseIcon","UploadIcon","Box","Button","Flex","Inline","Text","pluralize","useAssetSourceActions","useDropzoneActions","useToolOptions","useTypedSelector","Props","onClose","Header","props","$","_c","open","onSelect","assetTypes","_temp","selectedDocument","_temp2","directUploads","t0","Symbol","for","whiteSpace","t1","join","t2","t3","margin","textTransform","_type","t4","t5","length","t6","flexShrink","t7","t8","state","assets","state_0","selected","document","ChevronDownIcon","ChevronUpIcon","Box","Label","useDispatch","useTypedSelector","assetsActions","Props","field","title","TableHeaderItem","props","$","_c","dispatch","order","_temp","isActive","t0","direction","orderSet","handleClick","t1","t2","undefined","t3","t4","cursor","display","whiteSpace","t5","Symbol","for","marginRight","t6","t7","t8","t9","t10","state","assets","Checkbox","Flex","Grid","ThemeColorSchemeKey","useMediaIndex","MouseEvent","useDispatch","useColorSchemeValue","styled","css","GRID_TEMPLATE_COLUMNS","PANEL_HEIGHT","useAssetSourceActions","useTypedSelector","assetsActions","selectAssetsLength","selectAssetsPickedLength","getSchemeColor","TableHeaderItem","ContextActionContainer","$scheme","TableHeader","$","_c","scheme","dispatch","fetching","_temp","itemsLength","numPickedAssets","mediaIndex","onSelect","allSelected","t0","e","stopPropagation","pickClear","pickAll","handleContextActionClick","t1","t2","t3","t4","alignItems","background","borderBottom","gridColumnGap","gridTemplateColumns","LARGE","height","letterSpacing","position","textTransform","top","visibility","width","zIndex","t5","pointerEvents","transform","t10","t11","t12","t13","t6","t7","t8","t9","Symbol","for","t14","state","assets","CheckmarkCircleIcon","EditIcon","WarningFilledIcon","Box","Checkbox","Container","Flex","Grid","Spinner","Text","ThemeColorSchemeKey","Tooltip","useMediaIndex","formatRelative","filesize","memo","MouseEvent","RefObject","useCallback","useEffect","useRef","useState","useDispatch","WithReferringDocuments","useColorSchemeValue","styled","css","GRID_TEMPLATE_COLUMNS","useAssetSourceActions","useKeyPress","useTypedSelector","assetsActions","selectAssetById","dialogActions","getAssetResolution","getSchemeColor","getUniqueDocuments","imageDprUrl","isFileAsset","isImageAsset","FileIcon","Image","REFERENCE_COUNT_VISIBILITY_DELAY","Props","id","selected","ContainerGrid","$selected","$scheme","$updating","ContextActionContainer","StyledWarningIcon","theme","color","sanity","spot","red","TableRowAsset","props","$","_c","scheme","shiftPressed","referenceCountVisible","setReferenceCountVisible","refCountVisibleTimeout","dispatch","lastPicked","_temp","t0","state_0","state","item","mediaIndex","asset","error","isOpaque","metadata","picked","updating","isMultiSelect","onSelect","t1","e","stopPropagation","showAssetEdit","assetId","_id","current","pickRange","startId","endId","pick","handleContextActionClick","t2","e_0","kind","value","handleClick","opacityCell","opacityPreview","t3","t4","Symbol","for","setTimeout","clearTimeout","t5","undefined","t6","t7","SMALL","LARGE","t8","t9","gridColumnGap","gridRowGap","gridTemplateColumns","gridTemplateRows","t10","t11","alignItems","gridColumn","gridRowStart","gridRowEnd","height","justifyContent","opacity","position","t12","flexShrink","pointerEvents","transform","t13","t14","width","t15","t16","t17","extension","t18","t19","t20","left","top","t21","t22","t23","t24","t25","gridRow","t26","lineHeight","t27","originalFilename","t28","t29","t30","t31","t32","t33","t34","t35","t36","t37","t38","display","t39","t40","mimeType","t41","t42","t43","t44","t45","size","base","round","t46","t47","t48","t49","t50","t51","t52","t53","_updatedAt","Date","t54","t55","t56","t57","t58","t59","_temp2","t60","t61","t62","t63","t64","t65","t66","assets","isLoading","referringDocuments","uniqueDocuments","Array","isArray","length","Box","Flex","Grid","Stack","Text","useMediaIndex","useDispatch","useColorSchemeValue","css","styled","GRID_TEMPLATE_COLUMNS","foldersActions","getSchemeColor","Props","folderId","name","totalCount","ContainerGrid","theme","sanity","color","card","enabled","bg","FolderBadge","spot","yellow","TableRowFolder","t0","$","_c","dispatch","mediaIndex","scheme","t1","currentFolderSet","t2","t3","t4","SMALL","LARGE","t5","t6","background","gridColumnGap","gridTemplateColumns","gridTemplateRows","t7","Symbol","for","t8","gridColumn","height","width","t9","t10","t11","t12","gridRow","t13","lineHeight","t14","t15","t16","t17","t18","t19","display","t20","t21","t22","t23","t24","t25","t26","t27","t28","CloseIcon","Box","Button","Flex","Grid","Stack","Text","useMediaIndex","filesize","useDispatch","useColorSchemeValue","GRID_TEMPLATE_COLUMNS","useTypedSelector","selectUploadById","uploadsActions","getSchemeColor","FileIcon","Image","Props","id","TableRowUpload","props","$","_c","scheme","dispatch","t0","state","item","mediaIndex","t1","size","base","round","fileSize","percentLoaded","Math","percent","isComplete","status","isUploading","isQueued","t2","hash","uploadCancel","handleCancelUpload","t3","t4","t5","SMALL","LARGE","t6","t7","alignItems","background","gridColumnGap","gridRowGap","gridTemplateColumns","gridTemplateRows","height","position","t8","t9","bottom","left","width","transform","transformOrigin","transition","t10","t11","t12","gridColumn","gridRowStart","gridRowEnd","t13","Symbol","for","t14","assetType","objectUrl","opacity","t15","t16","top","boxShadow","t17","t18","t19","t20","t21","t22","gridRow","marginLeft","t23","name","t24","t25","t26","t27","Box","memo","GroupedVirtuoso","useTypedSelector","CardAssetData","CardFolderData","CardUploadData","TableHeader","TableRowAsset","TableRowFolder","TableRowUpload","Props","items","onLoadMore","VirtualRow","t0","$","_c","item","selected","type","t1","Symbol","for","height","t2","id","folderId","name","totalCount","AssetTableVirtualized","props","selectedAssets","_temp","map","_temp2","selectedIds","length","index","Array","fill","t3","index_0","item_0","includes","t4","overflowX","t5","_temp3","state","assets","asset","_id","Box","Text","useMediaIndex","useEffect","useDispatch","useTypedSelector","assetsActions","foldersActions","selectCombinedItems","tagsActions","AssetGridVirtualized","AssetTableVirtualized","Items","$","_c","dispatch","fetchCount","_temp","fetching","_temp2","foldersPanelVisible","_temp3","tagsPanelVisible","_temp4","view","_temp5","combinedItems","mediaIndex","hasFetchedOnce","hasItems","length","t0","loadNextPage","handleLoadMoreItems","t1","t2","panelVisibleSet","panelVisible","isEmpty","t3","Symbol","for","width","t4","state","assets","state_0","state_1","folders","state_2","tags","state_3","Box","Button","Flex","Label","pluralize","useDispatch","useColorSchemeValue","PANEL_HEIGHT","useAssetSourceActions","useTypedSelector","assetsActions","selectAssetsPicked","dialogActions","DIALOG_ACTIONS","getSchemeColor","isImageAsset","PickedBar","$","_c","scheme","dispatch","assetsPicked","currentFolderId","_temp","isMultiSelect","onSelect","t0","length","asset","canReplace","t1","pickClear","handlePickClear","t2","showConfirmDeleteAssets","assets","handleDeletePicked","t3","_id","assetId","showAllAssetsDialog","handleReplaceImages","t4","showFolderMove","folderId","handleMovePicked","t5","folderSetRequest","handleRemovePickedFromFolder","t6","pickedAssetIds","map","_temp2","handleInsertPicked","t7","t8","background","borderBottom","height","position","width","t9","Symbol","for","color","t10","t11","t12","t13","boxShadow","t14","t15","t16","t17","t18","t19","t20","state","folders","item","kind","const","value","Box","TAGS_PANEL_WIDTH","useTypedSelector","TagView","TagsPanel","$","_c","tagsPanelVisible","_temp","t0","Symbol","for","position","width","t1","borderLeft","height","overflowX","overflowY","right","top","state","tags","panelVisible","white","Flex","Text","ReactNode","DropEvent","DropzoneOptions","useDropzone","useDispatch","styled","useAssetSourceActions","DropzoneDispatchProvider","useToolOptions","useTypedSelector","notificationsActions","uploadsActions","Props","children","UploadContainer","div","DragActiveContainer","filterFiles","fileList","FileList","files","Array","from","filteredFiles","File","file","slice","arrayBuffer","push","UploadDropzone","props","$","_c","dropzone","t0","directUploads","maxSize","onSelect","dispatch","assetTypes","_temp","isImageAssetType","length","t1","acceptedFiles","forEach","uploadRequest","forceAsAssetType","undefined","handleDrop","t2","rejections","errorCodes","flatMap","_temp3","includes","add","status","title","handleDropRejected","t3","event","type","dataTransfer","target","HTMLInputElement","handleFileGetter","t4","t5","t6","t7","accept","getFilesFromEvent","noClick","noDrag","onDrop","onDropRejected","disabled","getRootProps","getInputProps","isDragActive","open","t8","t9","t10","t11","color","hex","t12","t13","state","assets","_temp2","code","errors","map","MutationEvent","SanityClient","groq","useEffect","useDispatch","useSelector","Dispatch","AssetSourceComponentProps","inputs","FOLDER_DOCUMENT_NAME","TAG_DOCUMENT_NAME","assetsActions","foldersActions","searchActions","tagsActions","RootReducerState","Asset","Tag","getMediaTagNames","schemaType","mediaTags","options","length","unique","Set","map","t","trim","filter","Boolean","Array","from","createAssetHandler","dispatch","update","documentId","result","transition","listenerCreateQueue","asset","listenerDeleteQueue","assetId","listenerUpdateQueue","createTagHandler","tag","tagId","useBrowserInit","client","tagsByIds","state","tags","byIds","tagsFetchCount","fetchCount","tagNames","hasMediaTags","facetsClear","fetchRequest","assetSubscription","listen","subscribe","tagSubscription","folderSubscription","unsubscribe","tagFacetInput","type","resolvedTags","name","Object","values","find","item","current","NonNullable","tagItem","facetsAdd","facet","operatorType","value","label","_id","Card","Flex","PortalProvider","useState","AssetSourceComponentProps","SanityDocument","AssetBrowserDispatchProvider","useToolOptions","useVersionedClient","GlobalStyle","Controls","DebugControls","Dialogs","FolderBreadcrumbs","FolderPanel","Header","Items","Notifications","PickedBar","ReduxProvider","TagsPanel","UploadDropzone","useBrowserInit","Props","assetType","document","isMultiSelect","onClose","onSelect","selectedAssets","schemaType","BrowserContent","t0","$","_c","client","portalElement","setPortalElement","t1","t2","Symbol","for","t3","t4","t5","t6","t7","t8","position","t9","t10","Browser","props","excludeTagSlugs","Box","Portal","PortalProvider","useLayer","SyntheticEvent","AssetSourceComponentProps","SanityDocument","useFormValue","useKeyPress","useRootPortalElement","Browser","FormBuilderTool","props","$","_c","onClose","portalElement","t0","Symbol","for","currentDocument","selectionType","schemaJsonType","schemaType","jsonType","isMultiSelect","handleStopPropagation","_temp","zIndex","t1","bottom","height","left","position","top","width","t2","t3","t4","event","nativeEvent","stopImmediatePropagation","stopPropagation","Flex","Browser","Tool","$","_c","t0","Symbol","for","FolderIcon","FOLDER_DOCUMENT_NAME","title","icon","name","type","fields","to","weak","preview","select","parentName","prepare","selection","media","subtitle","undefined","TagIcon","TAG_DOCUMENT_NAME","title","icon","name","type","fields","preview","select","prepare","selection","media","current","EditIcon","ImageIcon","AssetSource","Tool","SanityTool","definePlugin","EditAssetTool","FormBuilderTool","ToolOptionsProvider","mediaFolder","mediaTag","MediaToolOptions","plugin","icon","name","title","mediaAssetSource","component","editMediaAssetSource","tool","__internalApplicationType","media","options","studio","components","layout","props","renderDefault","form","file","assetSources","prev","image","schema","types","tools","SanityClient","groq","nanoid","TAG_DOCUMENT_NAME","Tag","ApplyMediaTagsOptions","client","assetId","mediaTags","createTagsOnUpload","pendingByAsset","Map","Promise","applyMediaTags","options","chain","get","resolve","then","doApplyMediaTags","cleanup","catch","finally","delete","set","length","resolvedTags","all","map","tagName","existingTag","fetch","newTag","create","_type","name","current","validTags","filter","tag","existing","tagIds","useCdn","existingIds","Set","tagReferences","has","_id","_key","_ref","const","_weak","patch","setIfMissing","opt","append","commit","useToast","useEffect","useRef","InputProps","useToolOptions","useVersionedClient","applyMediaTags","AssetValue","_type","asset","_ref","AutoTagInputProps","mediaTags","AutoTagInput","props","$","_c","renderDefault","schemaType","value","mediaTagsProp","toast","options","client","createTagsOnUpload","prevAssetRef","undefined","isInitialMount","currentAssetRef","t0","t1","current","previousRef","length","assetId","catch","err","console","error","label","push","closable","status","title","join","t2","t3","FieldDefinitionBase","FileDefinition","ImageDefinition","WidenInitialValue","WidenValidation","AutoTagInput","ImageMediaFieldConfig","Omit","name","mediaTags","options","FileMediaFieldConfig","ImageMediaFieldResult","components","input","FileMediaFieldResult","mediaField","config","rest","Record"],"sources":["../src/contexts/AssetSourceDispatchContext.tsx","../src/hooks/useRootPortalElement.ts","../src/hooks/useTypedSelector.ts","../src/hooks/useVersionedClient.ts","../src/config/orders.ts","../src/config/searchFacets.ts","../src/constants.ts","../src/operators/debugThrottle.ts","../src/utils/constructFilter.ts","../src/utils/ReplaceImages.ts","../src/operators/checkTagName.ts","../src/utils/getTagSelectOptions.ts","../src/modules/assets/actions.ts","../src/modules/dialog/actions.ts","../src/modules/tags/index.ts","../src/modules/search/index.ts","../src/modules/uploads/actions.ts","../src/modules/assets/index.ts","../src/modules/folders/index.ts","../src/modules/dialog/index.ts","../src/styled/GlobalStyles/index.tsx","../src/contexts/ToolOptionsContext.tsx","../src/formSchema/index.ts","../src/utils/getUniqueDocuments.ts","../src/utils/imageDprUrl.ts","../src/utils/sanitizeFormData.ts","../src/utils/typeGuards.ts","../src/utils/zodFormResolver.ts","../src/utils/getAssetResolution.ts","../src/hooks/usePortalPopoverProps.ts","../src/components/ButtonAssetCopy/index.tsx","../src/components/AssetMetadata/index.tsx","../src/components/Dialog/index.tsx","../src/components/DocumentList/index.tsx","../src/components/FileIcon/index.tsx","../src/components/FileAssetPreview/index.tsx","../src/components/FormSubmitButton/index.tsx","../src/utils/getSchemeColor.ts","../src/components/Image/index.tsx","../src/components/FormFieldInputLabel/index.tsx","../src/styled/react-select/creatable.tsx","../src/components/FormFieldInputTags/index.tsx","../src/components/FormFieldInputText/index.tsx","../src/components/FormFieldInputTextarea/index.tsx","../src/components/DialogAssetEdit/Details.tsx","../src/components/DialogAssetEdit/index.tsx","../src/modules/selectors.ts","../src/hooks/useKeyPress.ts","../src/components/CardAsset/index.tsx","../src/components/CardFolder/index.tsx","../src/utils/generatePreviewBlobUrl.ts","../src/utils/withMaxConcurrency.ts","../src/utils/uploadSanityAsset.ts","../src/modules/uploads/index.ts","../src/components/CardUpload/index.tsx","../src/components/AssetGridVirtualized/index.tsx","../src/components/ReplaceAssetsOverView/index.tsx","../src/components/DialogAssetsOverView/index.tsx","../src/components/DialogConfirm/index.tsx","../src/components/DialogFolderCreate/index.tsx","../src/components/DialogFolderMove/index.tsx","../src/components/DialogFolderRename/index.tsx","../src/components/FolderView/index.tsx","../src/components/DialogFolders/index.tsx","../src/components/SearchFacet/index.tsx","../src/components/TextInputNumber/index.tsx","../src/components/SearchFacetNumber/index.tsx","../src/components/SearchFacetSelect/index.tsx","../src/components/SearchFacetString/index.tsx","../src/styled/react-select/single.tsx","../src/components/SearchFacetTags/index.tsx","../src/components/SearchFacets/index.tsx","../src/components/SearchFacetsControl/index.tsx","../src/components/DialogSearchFacets/index.tsx","../src/components/DialogTagCreate/index.tsx","../src/components/DialogTagEdit/index.tsx","../src/components/Tag/index.tsx","../src/components/TagsVirtualized/index.tsx","../src/components/TagViewHeader/index.tsx","../src/components/TagView/index.tsx","../src/components/DialogTags/index.tsx","../src/components/Dialogs/index.tsx","../src/components/Notifications/index.tsx","../src/modules/debug/index.ts","../src/modules/notifications/index.ts","../src/modules/selected/index.ts","../src/modules/index.ts","../src/utils/getDocumentAssetIds.ts","../src/utils/isSupportedAssetType.ts","../src/components/ReduxProvider/index.tsx","../src/components/EditAssetTool/index.tsx","../src/components/ButtonViewGroup/index.tsx","../src/components/OrderSelect/index.tsx","../src/components/Progress/index.tsx","../src/components/TagIcon/index.tsx","../src/components/TextInputSearch/index.tsx","../src/components/Controls/index.tsx","../src/components/DebugControls/index.tsx","../src/components/FolderBreadcrumbs/index.tsx","../src/components/FolderPanel/index.tsx","../src/contexts/DropzoneDispatchContext.tsx","../src/components/Header/index.tsx","../src/components/TableHeaderItem/index.tsx","../src/components/TableHeader/index.tsx","../src/components/TableRowAsset/index.tsx","../src/components/TableRowFolder/index.tsx","../src/components/TableRowUpload/index.tsx","../src/components/AssetTableVirtualized/index.tsx","../src/components/Items/index.tsx","../src/components/PickedBar/index.tsx","../src/components/TagsPanel/index.tsx","../src/components/UploadDropzone/index.tsx","../src/components/Browser/useBrowserInit.ts","../src/components/Browser/index.tsx","../src/components/FormBuilderTool/index.tsx","../src/components/Tool/index.tsx","../src/schemas/folder.ts","../src/schemas/tag.ts","../src/plugin.tsx","../src/utils/applyMediaTags.ts","../src/components/AutoTagInputWrapper/index.tsx","../src/utils/mediaField.ts"],"sourcesContent":["import {type ReactNode, createContext, useContext, useMemo} from 'react'\nimport type {AssetSourceComponentProps} from 'sanity'\n\ntype ContextProps = {\n  isMultiSelect: boolean\n  onSelect?: AssetSourceComponentProps['onSelect']\n}\n\ntype Props = {\n  children: ReactNode\n  isMultiSelect?: boolean\n  onSelect?: AssetSourceComponentProps['onSelect']\n}\n\nconst AssetSourceDispatchContext = createContext<ContextProps | undefined>(undefined)\n\nexport const AssetBrowserDispatchProvider = (props: Props) => {\n  const {children, isMultiSelect = false, onSelect} = props\n\n  const contextValue: ContextProps = useMemo(\n    () => ({\n      isMultiSelect,\n      onSelect,\n    }),\n    [isMultiSelect, onSelect],\n  )\n\n  return (\n    <AssetSourceDispatchContext.Provider value={contextValue}>\n      {children}\n    </AssetSourceDispatchContext.Provider>\n  )\n}\n\nexport const useAssetSourceActions = () => {\n  const context = useContext(AssetSourceDispatchContext)\n  if (context === undefined) {\n    throw new Error('useAssetSourceActions must be used within an AssetSourceDispatchProvider')\n  }\n  return context\n}\n","import {useEffect, useState} from 'react'\n\n/**\n * Creates a detached `.media-portal` element appended to `document.body` for the\n * lifetime of the component, used as a portal target for the plugin's dialogs\n * and overlays. The element is removed on unmount.\n */\nconst useRootPortalElement = (): HTMLDivElement => {\n  const [container] = useState(() => document.createElement('div'))\n\n  useEffect(() => {\n    container.classList.add('media-portal')\n    document.body.appendChild(container)\n    return () => {\n      document.body.removeChild(container)\n    }\n  }, [container])\n\n  return container\n}\n\nexport default useRootPortalElement\n","import {type TypedUseSelectorHook, useSelector} from 'react-redux'\n\nimport type {RootReducerState} from '../modules/types'\n\nconst useTypedSelector: TypedUseSelectorHook<RootReducerState> = useSelector\n\nexport default useTypedSelector\n","import type {SanityClient} from '@sanity/client'\nimport {useClient} from 'sanity'\n\nconst useVersionedClient = (): SanityClient => useClient({apiVersion: '2025-10-02'})\n\nexport default useVersionedClient\n","import type {OrderDirection} from '../types'\n\nconst ORDER_DICTIONARY: Record<string, {asc: string; desc: string}> = {\n  _createdAt: {\n    asc: 'Last created: Oldest first',\n    desc: 'Last created: Newest first',\n  },\n  _updatedAt: {\n    asc: 'Last updated: Oldest first',\n    desc: 'Last updated: Newest first',\n  },\n  mimeType: {\n    asc: 'MIME type: A to Z',\n    desc: 'MIME type: Z to A',\n  },\n  originalFilename: {\n    asc: 'File name: A to Z',\n    desc: 'File name: Z to A',\n  },\n  size: {\n    asc: 'File size: Smallest first',\n    desc: 'File size: Largest first',\n  },\n}\n\nexport const getOrderTitle = (field: string, direction: OrderDirection): string => {\n  return ORDER_DICTIONARY[field]![direction]\n}\n","import groq from 'groq'\n\nimport type {\n  SearchFacetDivider,\n  SearchFacetInputProps,\n  SearchFacetName,\n  SearchFacetOperators,\n} from '../types'\n\nexport const divider: SearchFacetDivider = {type: 'divider'}\n\nexport const inputs: Record<SearchFacetName, SearchFacetInputProps> = {\n  altText: {\n    assetTypes: ['file', 'image'],\n    field: 'altText',\n    name: 'altText',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Alt text',\n    type: 'string',\n    value: '',\n  },\n  creditLine: {\n    assetTypes: ['file', 'image'],\n    field: 'creditLine',\n    name: 'creditLine',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Credit',\n    type: 'string',\n    value: '',\n  },\n  description: {\n    assetTypes: ['file', 'image'],\n    field: 'description',\n    name: 'description',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Description',\n    type: 'string',\n    value: '',\n  },\n  folder: {\n    assetTypes: ['file', 'image'],\n    field: 'opt.media.folder._ref',\n    name: 'folder',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty'],\n    title: 'Folder',\n    type: 'string',\n    value: '',\n  },\n  fileName: {\n    assetTypes: ['file', 'image'],\n    field: 'originalFilename',\n    name: 'filename',\n    operatorType: 'includes',\n    operatorTypes: ['includes', 'doesNotInclude'],\n    title: 'File name',\n    type: 'string',\n    value: '',\n  },\n  height: {\n    assetTypes: ['image'],\n    field: 'metadata.dimensions.height',\n    name: 'height',\n    operatorType: 'greaterThan',\n    operatorTypes: [\n      'greaterThan',\n      'greaterThanOrEqualTo',\n      'lessThan',\n      'lessThanOrEqualTo',\n      null,\n      'equalTo',\n    ],\n    title: 'Height',\n    type: 'number',\n    value: 400,\n  },\n  inCurrentDocument: {\n    assetTypes: ['file', 'image'],\n    name: 'inCurrentDocument',\n    operatorType: 'is',\n    options: [\n      {\n        name: 'true',\n        title: 'True',\n        value: groq`_id in $documentAssetIds`,\n      },\n      {\n        name: 'false',\n        title: 'False',\n        value: groq`!(_id in $documentAssetIds)`,\n      },\n    ],\n    selectOnly: true,\n    title: 'In use in current document',\n    type: 'select',\n    value: 'true',\n  },\n  inUse: {\n    assetTypes: ['file', 'image'],\n    name: 'inUse',\n    operatorType: 'is',\n    options: [\n      {\n        name: 'true',\n        title: 'True',\n        value: groq`count(*[references(^._id)]) > 0`,\n      },\n      {\n        name: 'false',\n        title: 'False',\n        value: groq`count(*[references(^._id)]) == 0`,\n      },\n    ],\n    title: 'In use',\n    type: 'select',\n    value: 'true',\n  },\n  isOpaque: {\n    assetTypes: ['image'],\n    field: 'metadata.isOpaque',\n    name: 'isOpaque',\n    operatorType: 'equalTo',\n    options: [\n      {\n        name: 'true',\n        title: 'True',\n        value: `false`,\n      },\n      {\n        name: 'false',\n        title: 'False',\n        value: `true`,\n      },\n    ],\n    title: 'Has transparency',\n    type: 'select',\n    value: 'true',\n  },\n  orientation: {\n    assetTypes: ['image'],\n    name: 'orientation',\n    operatorType: 'is',\n    operatorTypes: ['is', 'isNot'],\n    options: [\n      {\n        name: 'portrait',\n        title: 'Portrait',\n        value: 'metadata.dimensions.aspectRatio < 1',\n      },\n      {\n        name: 'landscape',\n        title: 'Landscape',\n        value: 'metadata.dimensions.aspectRatio > 1',\n      },\n      {\n        name: 'square',\n        title: 'Square',\n        value: 'metadata.dimensions.aspectRatio == 1',\n      },\n    ],\n    title: 'Orientation',\n    type: 'select',\n    value: 'portrait',\n  },\n  size: {\n    assetTypes: ['file', 'image'],\n    field: 'size',\n    modifier: 'kb',\n    modifiers: [\n      {\n        name: 'kb',\n        title: 'KB',\n        fieldModifier: (fieldName) => `round(${fieldName} / 1000)`,\n      },\n      {\n        name: 'mb',\n        title: 'MB',\n        fieldModifier: (fieldName) => `round(${fieldName} / 1000000)`,\n      },\n    ],\n    name: 'size',\n    operatorType: 'greaterThan',\n    operatorTypes: [\n      'greaterThan',\n      'greaterThanOrEqualTo',\n      'lessThan',\n      'lessThanOrEqualTo',\n      null,\n      'equalTo',\n    ],\n    title: 'File size',\n    type: 'number',\n    value: 0,\n  },\n  tag: {\n    assetTypes: ['file', 'image'],\n    field: 'opt.media.tags',\n    name: 'tag',\n    operatorType: 'references',\n    operatorTypes: ['references', 'doesNotReference', null, 'empty', 'notEmpty'],\n    title: 'Tags',\n    type: 'searchable',\n  },\n  title: {\n    assetTypes: ['file', 'image'],\n    field: 'title',\n    name: 'title',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Title',\n    type: 'string',\n    value: '',\n  },\n  type: {\n    assetTypes: ['file', 'image'],\n    name: 'type',\n    operatorType: 'is',\n    operatorTypes: ['is', 'isNot'],\n    options: [\n      {\n        name: 'image',\n        title: 'Image',\n        value: 'mimeType match \"image*\"',\n      },\n      {\n        name: 'video',\n        title: 'Video',\n        value: 'mimeType match \"video*\"',\n      },\n      {\n        name: 'audio',\n        title: 'Audio',\n        value: 'mimeType match \"audio*\"',\n      },\n      {\n        name: 'pdf',\n        title: 'PDF',\n        value: 'mimeType == \"application/pdf\"',\n      },\n    ],\n    title: 'File type',\n    type: 'select',\n    value: 'image',\n  },\n  width: {\n    assetTypes: ['image'],\n    field: 'metadata.dimensions.width',\n    name: 'width',\n    operatorType: 'greaterThan',\n    operatorTypes: [\n      'greaterThan',\n      'greaterThanOrEqualTo',\n      'lessThan',\n      'lessThanOrEqualTo',\n      null,\n      'equalTo',\n    ],\n    title: 'Width',\n    type: 'number',\n    value: 400,\n  },\n}\n\nexport const operators: SearchFacetOperators = {\n  doesNotInclude: {\n    fn: (value, field) => (value ? `!(${field} match '*${value}*')` : undefined),\n    label: 'does not include',\n  },\n  doesNotReference: {\n    fn: (value, _field) => (value ? `!references('${value}')` : undefined),\n    label: 'does not include',\n  },\n  empty: {\n    fn: (_value, field) => `!defined(${field})`,\n    hideInput: true,\n    label: 'is empty',\n  },\n  equalTo: {\n    fn: (value, field) => (value ? `${field} == ${value}` : undefined),\n    label: 'is equal to',\n  },\n  greaterThan: {\n    fn: (value, field) => (value ? `${field} > ${value}` : undefined),\n    label: 'is greater than',\n  },\n  greaterThanOrEqualTo: {\n    fn: (value, field) => (value ? `${field} >= ${value}` : undefined),\n    label: 'is greater than or equal to',\n  },\n  includes: {\n    fn: (value, field) => (value ? `${field} match '*${value}*'` : undefined),\n    label: 'includes',\n  },\n  is: {\n    fn: (value, _field) => `${value}`,\n    label: 'is',\n  },\n  isNot: {\n    fn: (value, _field) => `!(${value})`,\n    label: 'is not',\n  },\n  lessThan: {\n    fn: (value, field) => (value ? `${field} < ${value}` : undefined),\n    label: 'is less than',\n  },\n  lessThanOrEqualTo: {\n    fn: (value, field) => (value ? `${field} <= ${value}` : undefined),\n    label: 'is less than or equal to',\n  },\n  notEmpty: {\n    fn: (_value, field) => `defined(${field})`,\n    hideInput: true,\n    label: 'is not empty',\n  },\n  references: {\n    fn: (value, _field) => (value ? `references('${value}')` : undefined),\n    label: 'includes',\n  },\n}\n","import type {AssetSourceComponentProps} from 'sanity'\n\nimport {divider, inputs} from './config/searchFacets'\nimport type {\n  SearchFacetInputProps,\n  SearchFacetDivider,\n  SearchFacetGroup,\n  OrderDirection,\n} from './types'\n\nexport const SUPPORTED_ASSET_TYPES = [\n  'file',\n  'image',\n] as const satisfies AssetSourceComponentProps['assetType'][]\n\n// Sort order dropdown options\n// null values are represented as menu dividers\nexport const ORDER_OPTIONS: ({direction: OrderDirection; field: string} | null)[] = [\n  {\n    direction: 'desc',\n    field: '_createdAt',\n  },\n  {\n    direction: 'asc',\n    field: '_createdAt',\n  },\n  // Divider\n  null,\n  {\n    direction: 'desc',\n    field: '_updatedAt',\n  },\n  {\n    direction: 'asc' as OrderDirection,\n    field: '_updatedAt',\n  },\n  // Divider\n  null,\n  {\n    direction: 'asc',\n    field: 'originalFilename',\n  },\n  {\n    direction: 'desc',\n    field: 'originalFilename',\n  },\n  // Divider\n  null,\n  {\n    direction: 'desc',\n    field: 'size',\n  },\n  {\n    direction: 'asc',\n    field: 'size',\n  },\n]\n\nexport const FACETS: (SearchFacetDivider | SearchFacetGroup | SearchFacetInputProps)[] = [\n  inputs.tag,\n  divider,\n  inputs.inUse,\n  inputs.inCurrentDocument,\n  divider,\n  inputs.title,\n  inputs.folder,\n  inputs.altText,\n  inputs.creditLine,\n  inputs.description,\n  divider,\n  inputs.isOpaque,\n  divider,\n  inputs.fileName,\n  inputs.size,\n  inputs.type,\n  divider,\n  inputs.orientation,\n  inputs.width,\n  inputs.height,\n]\n\nexport const GRID_TEMPLATE_COLUMNS = {\n  SMALL: '3rem 100px auto 1.5rem',\n  LARGE: '3rem 100px auto 5.5rem 5.5rem 3.5rem 8.5rem 4.75rem 2rem',\n}\nexport const FOLDERS_PANEL_WIDTH = 260 // px\nexport const FOLDER_DOCUMENT_NAME = 'media.folder'\nexport const PANEL_HEIGHT = 32 // px\nexport const TAG_DOCUMENT_NAME = 'media.tag'\nexport const TAGS_PANEL_WIDTH = 250 // px\n","import {iif, type Observable, of, throwError} from 'rxjs'\nimport {delay, mergeMap} from 'rxjs/operators'\n\nconst debugThrottle = (throttled?: boolean) => {\n  return function <T>(source: Observable<T>): Observable<T> {\n    return iif(\n      () => !!throttled,\n      source.pipe(\n        delay(3000),\n        mergeMap((v) => {\n          if (Math.random() > 0.5) {\n            return throwError({\n              message: 'Test error',\n              statusCode: 500,\n            })\n          }\n          return of(v)\n        }),\n      ),\n      source,\n    )\n  }\n}\n\nexport default debugThrottle\n","import groq from 'groq'\n\nimport {operators} from '../config/searchFacets'\nimport {TAG_DOCUMENT_NAME} from '../constants'\nimport type {AssetType, SearchFacetInputProps} from '../types'\n\n/** GROQ fragment that excludes assets tagged with any of the given media.tag slugs. */\nexport const buildExcludeTagsFragment = (excludeTagSlugs?: string[]): string | undefined => {\n  const serializedExcludeTagSlugs = excludeTagSlugs?.length\n    ? JSON.stringify(excludeTagSlugs)\n    : undefined\n\n  return serializedExcludeTagSlugs\n    ? groq`!(defined(opt.media.tags) && count(opt.media.tags[@._ref in *[_type == \"${TAG_DOCUMENT_NAME}\" && name.current in ${serializedExcludeTagSlugs}]._id]) > 0)`\n    : undefined\n}\n\nconst constructFilter = ({\n  assetTypes,\n  currentFolderId,\n  excludeTagSlugs,\n  searchFacets,\n  searchQuery,\n}: {\n  assetTypes: AssetType[]\n  currentFolderId?: string | null\n  excludeTagSlugs?: string[]\n  searchFacets: SearchFacetInputProps[]\n  searchQuery?: string\n}): string => {\n  // Fetch asset types depending on current context.\n  // Either limit to a specific type (if being used as a custom asset source) or fetch both files and images (if being used as a tool)\n  // Sanity will crash if you try and insert incompatible asset types into fields!\n  const documentAssetTypes = assetTypes.map((type) => `sanity.${type}Asset`)\n\n  const baseFilter = groq`\n    _type in ${JSON.stringify(documentAssetTypes)} && !(_id in path(\"drafts.**\"))\n  `\n\n  const excludeTagsFragment = buildExcludeTagsFragment(excludeTagSlugs)\n\n  const searchFacetFragments = searchFacets.reduce((acc: string[], facet) => {\n    if (facet.type === 'number') {\n      const {field, modifier, modifiers, operatorType, value} = facet\n      const operator = operators[operatorType]\n\n      // Get current modifier\n      const currentModifier = modifiers?.find((m) => m.name === modifier)\n\n      // Apply field modifier function (if present)\n      const facetField = currentModifier?.fieldModifier\n        ? currentModifier.fieldModifier(field)\n        : field\n\n      const fragment = operator.fn(value, facetField)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    if (facet.type === 'searchable') {\n      const {field, operatorType, value} = facet\n      const operator = operators[operatorType]\n\n      const fragment = operator.fn(value?.value, field)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    if (facet.type === 'select') {\n      const {field, operatorType, options, value} = facet\n      const operator = operators[operatorType]\n\n      const currentOptionValue = options?.find((l) => l.name === value)?.value\n\n      const fragment = operator.fn(currentOptionValue, field)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    if (facet.type === 'string') {\n      const {field, operatorType, value} = facet\n      const operator = operators[operatorType]\n\n      const fragment = operator.fn(value, field)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    return acc\n  }, [])\n\n  // All assets (no folder selected) should not apply a folder filter. A specific\n  // folder shows only assets pointing at it.\n  const folderFilter: string | undefined = currentFolderId\n    ? `opt.media.folder._ref == ${JSON.stringify(currentFolderId)}`\n    : undefined\n\n  // Join separate filter fragments\n  const constructedQuery = [\n    // Base filter\n    baseFilter,\n    ...(excludeTagsFragment ? [excludeTagsFragment] : []),\n    // Search query (if present)\n    // NOTE: Currently this only searches direct fields on sanity.fileAsset/sanity.imageAsset and NOT referenced tags\n    // It's possible to add this by adding the following line to the searchQuery, but it's quite slow\n    // references(*[_type == \"media.tag\" && name.current == \"${searchQuery.trim()}\"]._id)\n    ...(searchQuery\n      ? [\n          groq`[_id, altText, assetId, creditLine, description, originalFilename, title, url] match '*${searchQuery.trim()}*'`,\n        ]\n      : []),\n    ...(folderFilter ? [folderFilter] : []),\n    // Search facets\n    ...searchFacetFragments,\n  ].join(' && ')\n\n  return constructedQuery\n}\n\nexport default constructFilter\n","import type {Asset} from '../types'\n\ntype AssetRef = {\n  _ref?: unknown\n  _type?: unknown\n}\n\ntype ImageNode = {\n  _type?: unknown\n  asset?: AssetRef\n}\n\n/**\n * Re-points every image asset in `document` that references `assetToReplaceId`\n * at `newAsset`, mutating the document in place, and returns one patch object\n * per affected top-level field in the form `{[field]: <full mutated field value>}`.\n *\n * Each patch carries the entire (mutated) top-level field value rather than just\n * the matched image node, so `client.patch().set()` updates the references\n * without discarding sibling data — including deeply nested image fields.\n *\n * NOTE: ported from sanity-plugin-media#236. Because of GROQ limitations the\n * matching image objects are filtered out of the document manually rather than\n * via a projection.\n */\nexport function findImageAssets(\n  document: Record<string, unknown>,\n  newAsset: Asset,\n  assetToReplaceId: string,\n): Record<string, unknown>[] {\n  const matchedTopLevelFields = new Set<string>()\n  repointNestedImages(document, newAsset, assetToReplaceId, '', matchedTopLevelFields)\n  return [...matchedTopLevelFields].map((field) => ({[field]: document[field]}))\n}\n\nfunction repointNestedImages(\n  node: unknown,\n  newAsset: Asset,\n  assetToReplaceId: string,\n  topLevelField: string,\n  matchedTopLevelFields: Set<string>,\n): void {\n  if (typeof node !== 'object' || node === null) {\n    return\n  }\n\n  const candidate = node as ImageNode\n  // Match built-in `image` nodes and custom image schema types (e.g. `mainImage`),\n  // which store their type name in `_type` rather than `\"image\"`. Skip file fields.\n  const assetRef = candidate.asset\n  const hasMatchingAssetRef = assetRef?._type === 'reference' && assetRef._ref === assetToReplaceId\n  if (hasMatchingAssetRef && candidate._type !== 'file' && assetRef) {\n    assetRef._ref = newAsset._id\n    if (topLevelField) {\n      matchedTopLevelFields.add(topLevelField)\n    }\n  }\n\n  for (const [key, value] of Object.entries(node as Record<string, unknown>)) {\n    if (typeof value === 'object' && value !== null) {\n      // Once we descend past the document root, keep attributing matches to the\n      // top-level field so the patch replaces that whole field.\n      repointNestedImages(\n        value,\n        newAsset,\n        assetToReplaceId,\n        topLevelField || key,\n        matchedTopLevelFields,\n      )\n    }\n  }\n}\n","import type {SanityClient} from '@sanity/client'\nimport groq from 'groq'\nimport {from, Observable, of, throwError} from 'rxjs'\nimport {mergeMap} from 'rxjs/operators'\n\nimport {TAG_DOCUMENT_NAME} from '../constants'\nimport type {HttpError} from '../types'\n\nconst checkTagName = (client: SanityClient, name: string) => {\n  return function <T>(source: Observable<T>): Observable<boolean> {\n    return source.pipe(\n      mergeMap(() => {\n        return from(\n          client.fetch(groq`count(*[_type == \"${TAG_DOCUMENT_NAME}\" && name.current == $name])`, {\n            name,\n          }),\n        ) as Observable<number>\n      }),\n      mergeMap((existingTagCount: number) => {\n        if (existingTagCount > 0) {\n          return throwError({\n            message: 'Tag already exists',\n            statusCode: 409,\n          } satisfies HttpError)\n        }\n\n        return of(true)\n      }),\n    )\n  }\n}\n\nexport default checkTagName\n","import type {TagSelectOption, TagItem} from '../types'\n\nconst getTagSelectOptions = (tags: TagItem[]): TagSelectOption[] => {\n  return tags.reduce((acc: TagSelectOption[], val) => {\n    const tag = val?.tag\n    if (tag) {\n      acc.push({\n        label: tag?.name?.current,\n        value: tag?._id,\n      })\n    }\n    return acc\n  }, [])\n}\n\nexport default getTagSelectOptions\n","import {createAction} from '@reduxjs/toolkit'\n\nimport type {AssetItem, HttpError, Tag} from '../../types'\n\nexport const ASSETS_ACTIONS = {\n  tagsAddComplete: createAction(\n    'actions/tagsAddComplete',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n  tagsAddError: createAction(\n    'actions/tagsAddError',\n    function prepare({assets, error, tag}: {assets: AssetItem[]; error: HttpError; tag: Tag}) {\n      return {payload: {assets, error, tag}}\n    },\n  ),\n  tagsAddRequest: createAction(\n    'actions/tagsAddRequest',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n  tagsRemoveComplete: createAction(\n    'actions/tagsRemoveComplete',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n  tagsRemoveError: createAction(\n    'actions/tagsRemoveError',\n    function prepare({assets, error, tag}: {assets: AssetItem[]; error: HttpError; tag: Tag}) {\n      return {payload: {assets, error, tag}}\n    },\n  ),\n  tagsRemoveRequest: createAction(\n    'actions/tagsRemoveRequest',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n}\n","import {createAction} from '@reduxjs/toolkit'\n\nimport type {AssetItem} from '../../types'\n\nexport const DIALOG_ACTIONS = {\n  showFolderCreate: createAction(\n    'dialog/showFolderCreate',\n    function prepare({parentFolderId}: {parentFolderId?: string | null} = {}) {\n      return {\n        payload: {parentFolderId},\n      }\n    },\n  ),\n  showFolderMove: createAction(\n    'dialog/showFolderMove',\n    function prepare({assets, folderId}: {assets: AssetItem[]; folderId?: string | null}) {\n      return {\n        payload: {assets, folderId},\n      }\n    },\n  ),\n  showFolderRename: createAction(\n    'dialog/showFolderRename',\n    function prepare({folderId}: {folderId: string}) {\n      return {\n        payload: {folderId},\n      }\n    },\n  ),\n  showTagCreate: createAction('dialog/showTagCreate'),\n  showTagEdit: createAction('dialog/showTagEdit', function prepare({tagId}: {tagId: string}) {\n    return {\n      payload: {tagId},\n    }\n  }),\n}\n","import {createSelector, createSlice, isAnyOf, type PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, Transaction} from '@sanity/client'\nimport groq from 'groq'\nimport type {Selector} from 'react-redux'\nimport {ofType} from 'redux-observable'\nimport {from, Observable, of} from 'rxjs'\nimport {bufferTime, catchError, filter, mergeMap, switchMap, withLatestFrom} from 'rxjs/operators'\n\nimport {TAG_DOCUMENT_NAME} from '../../constants'\nimport checkTagName from '../../operators/checkTagName'\nimport debugThrottle from '../../operators/debugThrottle'\nimport type {Asset, HttpError, MyEpic, TagSelectOption, Tag, TagItem} from '../../types'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {DIALOG_ACTIONS} from '../dialog/actions'\nimport type {RootReducerState} from '../types'\n\ntype TagsReducerState = {\n  allIds: string[]\n  byIds: Record<string, TagItem>\n  creating: boolean\n  creatingError?: HttpError\n  fetchCount: number\n  fetching: boolean\n  fetchingError?: HttpError\n  // totalCount: number\n  panelVisible: boolean\n}\n\nconst initialState = {\n  allIds: [],\n  byIds: {},\n  creating: false,\n  creatingError: undefined,\n  fetchCount: -1,\n  fetching: false,\n  fetchingError: undefined,\n  panelVisible: true,\n} as TagsReducerState\n\nconst tagsSlice = createSlice({\n  name: 'tags',\n  initialState,\n  extraReducers: (builder) => {\n    builder\n      .addCase(DIALOG_ACTIONS.showTagCreate, (state) => {\n        delete state.creatingError\n      })\n      .addCase(DIALOG_ACTIONS.showTagEdit, (state, action) => {\n        const {tagId} = action.payload\n        delete state.byIds[tagId]!.error\n      })\n      .addMatcher(\n        isAnyOf(\n          ASSETS_ACTIONS.tagsAddComplete,\n          ASSETS_ACTIONS.tagsAddError,\n          ASSETS_ACTIONS.tagsRemoveComplete,\n          ASSETS_ACTIONS.tagsRemoveError,\n        ),\n        (state, action) => {\n          const {tag} = action.payload\n          state.byIds[tag._id]!.updating = false\n        },\n      )\n      .addMatcher(\n        isAnyOf(ASSETS_ACTIONS.tagsAddRequest, ASSETS_ACTIONS.tagsRemoveRequest),\n        (state, action) => {\n          const {tag} = action.payload\n          state.byIds[tag._id]!.updating = true\n        },\n      )\n  },\n  reducers: {\n    createComplete(state, action: PayloadAction<{assetId?: string; tag: Tag}>) {\n      const {tag} = action.payload\n      state.creating = false\n      if (!state.allIds.includes(tag._id)) {\n        state.allIds.push(tag._id)\n      }\n      state.byIds[tag._id] = {\n        _type: 'tag',\n        picked: false,\n        tag,\n        updating: false,\n      }\n    },\n    createError(state, action: PayloadAction<{error: HttpError; name: string}>) {\n      state.creating = false\n      state.creatingError = action.payload.error\n    },\n    createRequest(state, _action: PayloadAction<{assetId?: string; name: string}>) {\n      state.creating = true\n      delete state.creatingError\n    },\n    deleteComplete(state, action: PayloadAction<{tagId: string}>) {\n      const {tagId} = action.payload\n      const deleteIndex = state.allIds.indexOf(tagId)\n      if (deleteIndex >= 0) {\n        state.allIds.splice(deleteIndex, 1)\n      }\n      delete state.byIds[tagId]\n    },\n    deleteError(state, action: PayloadAction<{error: HttpError; tag: Tag}>) {\n      const {error, tag} = action.payload\n\n      const tagId = tag?._id\n      state.byIds[tagId]!.error = error\n      state.byIds[tagId]!.updating = false\n    },\n    deleteRequest(state, action: PayloadAction<{tag: Tag}>) {\n      const tagId = action.payload?.tag?._id\n      state.byIds[tagId]!.picked = false\n      state.byIds[tagId]!.updating = true\n\n      Object.keys(state.byIds).forEach((key) => {\n        delete state.byIds[key]!.error\n      })\n    },\n    fetchComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n      const {tags} = action.payload\n\n      tags?.forEach((tag) => {\n        state.allIds.push(tag._id)\n        state.byIds[tag._id] = {\n          _type: 'tag',\n          picked: false,\n          tag,\n          updating: false,\n        }\n      })\n\n      state.fetching = false\n      state.fetchCount = tags.length || 0\n      delete state.fetchingError\n    },\n    fetchError(state, action: PayloadAction<{error: HttpError}>) {\n      const {error} = action.payload\n      state.fetching = false\n      state.fetchingError = error\n    },\n    fetchRequest: {\n      reducer: (state, _action: PayloadAction<{query: string}>) => {\n        state.fetching = true\n        delete state.fetchingError\n      },\n      prepare: () => {\n        // Construct query\n        const query = groq`\n          {\n            \"items\": *[\n              _type == \"${TAG_DOCUMENT_NAME}\"\n              && !(_id in path(\"drafts.**\"))\n            ] {\n              _createdAt,\n              _updatedAt,\n              _id,\n              _rev,\n              _type,\n              name\n            } | order(name.current asc),\n          }\n        `\n        return {payload: {query}}\n      },\n    },\n    // Queue batch tag creation\n    listenerCreateQueue(_state, _action: PayloadAction<{tag: Tag}>) {\n      //\n    },\n    // Apply created tags (via sanity real-time events)\n    listenerCreateQueueComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n      const {tags} = action.payload\n\n      tags?.forEach((tag) => {\n        state.byIds[tag._id] = {\n          _type: 'tag',\n          picked: false,\n          tag,\n          updating: false,\n        }\n        if (!state.allIds.includes(tag._id)) {\n          state.allIds.push(tag._id)\n        }\n      })\n    },\n    // Queue batch tag deletion\n    listenerDeleteQueue(_state, _action: PayloadAction<{tagId: string}>) {\n      //\n    },\n    // Apply deleted tags (via sanity real-time events)\n    listenerDeleteQueueComplete(state, action: PayloadAction<{tagIds: string[]}>) {\n      const {tagIds} = action.payload\n\n      tagIds?.forEach((tagId) => {\n        const deleteIndex = state.allIds.indexOf(tagId)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n        delete state.byIds[tagId]\n      })\n    },\n    // Queue batch tag updates\n    listenerUpdateQueue(_state, _action: PayloadAction<{tag: Tag}>) {\n      //\n    },\n    // Apply updated tags (via sanity real-time events)\n    listenerUpdateQueueComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n      const {tags} = action.payload\n\n      tags?.forEach((tag) => {\n        if (state.byIds[tag._id]) {\n          state.byIds[tag._id]!.tag = tag\n        }\n      })\n    },\n    // Set tag panel visibility\n    panelVisibleSet(state, action: PayloadAction<{panelVisible: boolean}>) {\n      const {panelVisible} = action.payload\n      state.panelVisible = panelVisible\n    },\n    // Sort all tags by name\n    sort(state) {\n      state.allIds.sort((a, b) => {\n        const tagA = state.byIds[a]!.tag.name.current\n        const tagB = state.byIds[b]!.tag.name.current\n\n        if (tagA < tagB) {\n          return -1\n        } else if (tagA > tagB) {\n          return 1\n        }\n        return 0\n      })\n    },\n    updateComplete(state, action: PayloadAction<{closeDialogId?: string; tag: Tag}>) {\n      const {tag} = action.payload\n      state.byIds[tag._id]!.tag = tag\n      state.byIds[tag._id]!.updating = false\n    },\n    updateError(state, action: PayloadAction<{tag: Tag; error: HttpError}>) {\n      const {error, tag} = action.payload\n      const tagId = tag?._id\n      state.byIds[tagId]!.error = error\n      state.byIds[tagId]!.updating = false\n    },\n    updateRequest(\n      state,\n      action: PayloadAction<{\n        closeDialogId?: string\n        formData: Record<string, any>\n        tag: Tag\n      }>,\n    ) {\n      const {tag} = action.payload\n      state.byIds[tag?._id]!.updating = true\n    },\n  },\n})\n\n// Epics\n\n// On tag create request:\n// - async check to see if tag already exists\n// - throw if tag already exists\n// - otherwise, create new tag\nexport const tagsCreateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.createRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assetId, name} = action.payload\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        checkTagName(client, name),\n        mergeMap(() =>\n          client.observable.create({\n            _type: TAG_DOCUMENT_NAME,\n            name: {\n              _type: 'slug',\n              current: name,\n            },\n          }),\n        ),\n        mergeMap((result) => of(tagsSlice.actions.createComplete({assetId, tag: result as Tag}))),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.createError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              name,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// On tag delete request\n// - find referenced assets\n// - remove tag from referenced assets in a sanity transaction\nexport const tagsDeleteEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.deleteRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {tag} = action.payload\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Fetch assets which reference this tag\n        mergeMap(() =>\n          client.observable.fetch<Asset[]>(\n            groq`*[\n              _type in [\"sanity.fileAsset\", \"sanity.imageAsset\"]\n              && references(*[_type == \"media.tag\" && name.current == $tagName]._id)\n            ] {\n              _id,\n              _rev,\n              opt\n            }`,\n            {tagName: tag.name.current},\n          ),\n        ),\n        // Create transaction which remove tag references from all matched assets and delete tag\n        mergeMap((assets) => {\n          const patches = assets.map((asset) => ({\n            id: asset._id,\n            patch: {\n              // this will cause the transaction to fail if the document has been modified since it was fetched.\n              ifRevisionID: asset._rev,\n              unset: [`opt.media.tags[_ref == \"${tag._id}\"]`],\n            },\n          }))\n\n          const transaction: Transaction = patches.reduce(\n            (tx, patch) => tx.patch(patch.id, patch.patch),\n            client.transaction(),\n          )\n\n          transaction.delete(tag._id)\n\n          return from(transaction.commit())\n        }),\n        // Dispatch complete action\n        mergeMap(() => of(tagsSlice.actions.deleteComplete({tagId: tag._id}))),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.deleteError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// Async fetch tags\nexport const tagsFetchEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.fetchRequest.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) => {\n      const {query} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Fetch tags\n        mergeMap(() =>\n          client.observable.fetch<{\n            items: Tag[]\n          }>(query),\n        ),\n        // Dispatch complete action\n        mergeMap((result) => {\n          const {items} = result\n          return of(tagsSlice.actions.fetchComplete({tags: items}))\n        }),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.fetchError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// TODO: merge all buffer epics\n// Buffer tag creation via sanity subscriber\nexport const tagsListenerCreateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsSlice.actions.listenerCreateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const tags = actions?.map((action) => action.payload.tag)\n      return of(tagsSlice.actions.listenerCreateQueueComplete({tags}))\n    }),\n  )\n\n// TODO: merge all buffer epics\n// Buffer tag deletion via sanity subscriber\nexport const tagsListenerDeleteQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsSlice.actions.listenerDeleteQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const tagIds = actions?.map((action) => action.payload.tagId)\n      return of(tagsSlice.actions.listenerDeleteQueueComplete({tagIds}))\n    }),\n  )\n\n// TODO: merge all buffer epics\n// Buffer tag update via sanity subscriber\nexport const tagsListenerUpdateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsSlice.actions.listenerUpdateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const tags = actions?.map((action) => action.payload.tag)\n      return of(tagsSlice.actions.listenerUpdateQueueComplete({tags}))\n    }),\n  )\n\n// On successful tag creation or updates:\n// - Re-sort all tags\nexport const tagsSortEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      tagsSlice.actions.listenerCreateQueueComplete.type,\n      tagsSlice.actions.listenerUpdateQueueComplete.type,\n    ),\n    bufferTime(1000),\n    filter((actions) => actions.length > 0),\n    mergeMap(() => of(tagsSlice.actions.sort())),\n  )\n\n// On tag update request\n// - check if tag name already exists\n// - throw if tag already exists\n// - otherwise, patch document\nexport const tagsUpdateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.updateRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {closeDialogId, formData, tag} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Check if tag name is available, throw early if not\n        checkTagName(client, formData?.['name']?.current),\n        // Patch document (Update tag)\n        mergeMap(\n          () =>\n            from(\n              client\n                .patch(tag._id)\n                .set({name: {_type: 'slug', current: formData?.['name'].current}})\n                .commit(),\n            ) as Observable<Tag>,\n        ),\n        // Dispatch complete action\n        mergeMap((updatedTag: Tag) => {\n          return of(\n            tagsSlice.actions.updateComplete({\n              closeDialogId,\n              tag: updatedTag,\n            }),\n          )\n        }),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.updateError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// Selectors\n\nconst selectTagsByIds = (state: RootReducerState) => state.tags.byIds\n\nconst selectTagsAllIds = (state: RootReducerState) => state.tags.allIds\n\nexport const selectTags: Selector<RootReducerState, TagItem[]> = createSelector(\n  [selectTagsByIds, selectTagsAllIds],\n  (byIds, allIds) => allIds.map((id) => byIds[id]!),\n)\n\nexport const selectTagById = createSelector(\n  [selectTagsByIds, (_state: RootReducerState, tagId: string) => tagId],\n  (byIds, tagId) => byIds[tagId],\n)\n\n// TODO: use createSelector\n// Map tag references to react-select options, skipping over items with no linked tags\nexport const selectTagSelectOptions =\n  (asset?: Asset) =>\n  (state: RootReducerState): TagSelectOption[] | null => {\n    const tags = asset?.opt?.media?.tags?.reduce((acc: TagItem[], v) => {\n      const tagItem = state.tags.byIds[v._ref]\n      if (tagItem?.tag) {\n        acc.push(tagItem)\n      }\n      return acc\n    }, [])\n\n    if (tags && tags?.length > 0) {\n      return getTagSelectOptions(tags)\n    }\n\n    return null\n  }\n\nexport const tagsActions = {...tagsSlice.actions}\n\nexport default tagsSlice.reducer\n","import {type PayloadAction, createSelector, createSlice} from '@reduxjs/toolkit'\nimport {uuid} from '@sanity/uuid'\nimport {EMPTY, of} from 'rxjs'\nimport {filter, mergeMap, withLatestFrom} from 'rxjs/operators'\n\nimport type {MyEpic, SearchFacetInputProps, SearchFacetOperatorType, WithId} from '../../types'\nimport {tagsActions} from '../tags'\nimport type {RootReducerState} from '../types'\n\n// TODO: don't store non-serializable data in the search store\n// (The main offender is `fieldModifier` which is currently a function)\n\ntype SearchState = {\n  facets: WithId<SearchFacetInputProps>[]\n  query: string\n}\n\nconst initialState = {\n  facets: [],\n  query: '',\n} as SearchState\n\nconst searchSlice = createSlice({\n  name: 'search',\n  initialState,\n  reducers: {\n    // Add search facet\n    facetsAdd(state, action: PayloadAction<{facet: SearchFacetInputProps}>) {\n      state.facets.push({...action.payload.facet, id: uuid()})\n    },\n    // Clear all search facets\n    facetsClear(state) {\n      state.facets = []\n    },\n    // Remove search facet by name\n    facetsRemoveByName(state, action: PayloadAction<{facetName: string}>) {\n      state.facets = state.facets.filter((facet) => facet.name !== action.payload.facetName)\n    },\n    // Remove search facet by name\n    facetsRemoveByTag(state, action: PayloadAction<{tagId: string}>) {\n      state.facets = state.facets.filter(\n        (facet) =>\n          !(\n            facet.name === 'tag' &&\n            facet.type === 'searchable' &&\n            (facet.operatorType === 'references' || facet.operatorType === 'doesNotReference') &&\n            facet.value?.value === action.payload.tagId\n          ),\n      )\n    },\n    // Remove search facet by name\n    facetsRemoveById(state, action: PayloadAction<{facetId: string}>) {\n      state.facets = state.facets.filter((facet) => facet.id !== action.payload.facetId)\n    },\n    // Update an existing search facet\n    facetsUpdate(\n      state,\n      action: PayloadAction<{\n        modifier?: string\n        name: string\n        operatorType?: SearchFacetOperatorType\n        value?: any // TODO: type correctly\n      }>,\n    ) {\n      const {modifier, name, operatorType, value} = action.payload\n\n      const facet = state.facets.find((f) => f.name === name)\n\n      if (!facet) {\n        return\n      }\n\n      if (facet.type === 'number' && modifier) {\n        facet.modifier = modifier\n      }\n      if (operatorType) {\n        facet.operatorType = operatorType\n      }\n      if (typeof value !== 'undefined') {\n        facet.value = value\n      }\n\n      state.facets = state.facets.filter((f) => f.name !== facet.name || f.id === facet.id)\n    },\n    // Update an existing search facet\n    facetsUpdateById(\n      state,\n      action: PayloadAction<{\n        modifier?: string\n        id: string\n        operatorType?: SearchFacetOperatorType\n        value?: any // TODO: type correctly\n      }>,\n    ) {\n      const {modifier, id, operatorType, value} = action.payload\n\n      state.facets.forEach((facet, index) => {\n        if (facet.id === id) {\n          if (facet.type === 'number' && modifier) {\n            facet.modifier = modifier\n          }\n          if (operatorType) {\n            facet.operatorType = operatorType\n          }\n          if (typeof value !== 'undefined') {\n            state.facets[index]!.value = value\n          }\n        }\n      })\n    },\n    // Update existing search query\n    querySet(state, action: PayloadAction<{searchQuery: string}>) {\n      state.query = action.payload?.searchQuery\n    },\n  },\n})\n\n// Epics\n\n// On tag update success -> update existing tag search facet (if present)\nexport const searchFacetTagUpdateEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(tagsActions.updateComplete.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {tag} = action.payload\n\n      const currentSearchFacetTag = state.search.facets?.find((facet) => facet.name === 'tag')\n      const tagItem = state.tags.byIds[tag._id]\n\n      if (currentSearchFacetTag?.type === 'searchable') {\n        if (currentSearchFacetTag.value?.value === tag._id) {\n          return of(\n            searchSlice.actions.facetsUpdate({\n              name: 'tag',\n              value: {\n                label: tagItem?.tag?.name?.current,\n                value: tagItem?.tag?._id,\n              },\n            }),\n          )\n        }\n      }\n\n      return EMPTY\n    }),\n  )\n\n// Selectors\nexport const selectIsSearchFacetTag = createSelector(\n  [\n    (state: RootReducerState) => state.search.facets,\n    (_state: RootReducerState, tagId: string) => tagId,\n  ],\n  (searchFacets, tagId) =>\n    searchFacets.some(\n      (facet) =>\n        facet.name === 'tag' &&\n        facet.type === 'searchable' &&\n        (facet.operatorType === 'references' || facet.operatorType === 'doesNotReference') &&\n        facet.value?.value === tagId,\n    ),\n)\n\nexport const searchActions = {...searchSlice.actions}\n\nexport default searchSlice.reducer\n","import {createAction} from '@reduxjs/toolkit'\nimport type {SanityAssetDocument, SanityImageAssetDocument} from '@sanity/client'\n\nexport const UPLOADS_ACTIONS = {\n  uploadComplete: createAction(\n    'uploads/uploadComplete',\n    function prepare({asset}: {asset: SanityAssetDocument | SanityImageAssetDocument}) {\n      return {\n        payload: {asset},\n      }\n    },\n  ),\n}\n","import {createSelector, createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport type {AttributeSet, ClientError, Patch, SanityDocument, Transaction} from '@sanity/client'\nimport groq from 'groq'\nimport {nanoid} from 'nanoid'\nimport type {Selector} from 'react-redux'\nimport {ofType} from 'redux-observable'\nimport {EMPTY, from, of} from 'rxjs'\nimport {\n  bufferTime,\n  catchError,\n  concatMap,\n  debounceTime,\n  filter,\n  mergeMap,\n  switchMap,\n  withLatestFrom,\n} from 'rxjs/operators'\n\nimport {getOrderTitle} from '../../config/orders'\nimport {ORDER_OPTIONS} from '../../constants'\nimport debugThrottle from '../../operators/debugThrottle'\nimport type {\n  Asset,\n  AssetItem,\n  AssetType,\n  BrowserView,\n  HttpError,\n  MyEpic,\n  Order,\n  OrderDirection,\n  Tag,\n} from '../../types'\nimport constructFilter from '../../utils/constructFilter'\nimport {findImageAssets} from '../../utils/ReplaceImages'\nimport {searchActions} from '../search'\nimport type {RootReducerState} from '../types'\nimport {UPLOADS_ACTIONS} from '../uploads/actions'\nimport {ASSETS_ACTIONS} from './actions'\ntype ItemError = {\n  description: string\n  id: string\n  referencingIDs: string[]\n  type: string // 'documentHasExistingReferencesError'\n}\n\nexport type AssetsReducerState = {\n  allIds: string[]\n  assetTypes: AssetType[]\n  byIds: Record<string, AssetItem>\n  excludeTagSlugs: string[]\n  fetchCount: number\n  fetching: boolean\n  fetchingError?: HttpError\n  lastPicked?: string\n  order: Order\n  pageIndex: number\n  pageSize: number\n  view: BrowserView\n  // totalCount: number\n}\n\nconst defaultOrder = ORDER_OPTIONS[0] as {\n  direction: OrderDirection\n  field: string\n}\n\n/**\n * NOTE:\n * `fetchCount` returns the number of items retrieved in the most recent fetch.\n * This is a temporary workaround to be able to determine when there are no more items to retrieve.\n * Typically this would be done by deriving the total number of assets upfront, but currently such\n * queries in GROQ aren't fast enough to use on large datasets (1000s of entries).\n *\n * TODO:\n * When the query engine has been improved and above queries are faster, remove all instances of\n * of `fetchCount` and reinstate `totalCount` across the board.\n */\n\nexport const initialState = {\n  allIds: [],\n  assetTypes: [],\n  byIds: {},\n  excludeTagSlugs: [],\n  fetchCount: -1,\n  fetching: false,\n  fetchingError: undefined,\n  lastPicked: undefined,\n  order: {\n    direction: defaultOrder.direction,\n    field: defaultOrder.field,\n    title: getOrderTitle(defaultOrder.field, defaultOrder.direction),\n  },\n  pageIndex: 0,\n  pageSize: 100,\n  // totalCount: -1,\n  view: 'grid',\n} as AssetsReducerState\n\nconst assetsSlice = createSlice({\n  name: 'assets',\n  initialState,\n  extraReducers: (builder) => {\n    builder //\n      .addCase(UPLOADS_ACTIONS.uploadComplete, (state, action) => {\n        const {asset} = action.payload\n\n        state.byIds[asset._id] = {\n          _type: 'asset',\n          asset: asset as Asset,\n          picked: false,\n          updating: false,\n        }\n      })\n      .addCase(ASSETS_ACTIONS.tagsAddComplete, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsAddError, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsAddRequest, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = true\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsRemoveComplete, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsRemoveError, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsRemoveRequest, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = true\n        })\n      })\n  },\n  reducers: {\n    // Clear asset order\n    clear(state) {\n      state.allIds = []\n    },\n    // Remove assets and update page index\n    deleteComplete(state, action: PayloadAction<{assetIds: string[]}>) {\n      const {assetIds} = action.payload\n\n      assetIds?.forEach((id) => {\n        const deleteIndex = state.allIds.indexOf(id)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n        delete state.byIds[id]\n      })\n\n      state.pageIndex = Math.floor(state.allIds.length / state.pageSize) - 1\n    },\n    deleteError(state, action: PayloadAction<{assetIds: string[]; error: ClientError}>) {\n      const {assetIds, error} = action.payload\n      const itemErrors: ItemError[] = error?.response?.body?.error?.items?.map(\n        (item: any) => item.error,\n      )\n\n      assetIds?.forEach((id) => {\n        state.byIds[id]!.updating = false\n      })\n      itemErrors?.forEach((item) => {\n        state.byIds[item.id]!.error = item.description\n      })\n    },\n    deleteRequest(state, action: PayloadAction<{assets: Asset[]; closeDialogId?: string}>) {\n      const {assets} = action.payload\n      assets.forEach((asset) => {\n        state.byIds[asset?._id]!.updating = true\n      })\n\n      Object.keys(state.byIds).forEach((key) => {\n        delete state.byIds[key]!.error\n      })\n    },\n    fetchComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n      const assets = action.payload?.assets || []\n\n      if (assets) {\n        assets.forEach((asset) => {\n          if (!state.allIds.includes(asset._id)) {\n            state.allIds.push(asset._id)\n          }\n          const existing = state.byIds[asset._id]\n          // Preserve pick/updating across search refreshes (e.g. replace dialog clearing filters)\n          state.byIds[asset._id] = {\n            _type: 'asset',\n            asset: asset,\n            picked: existing?.picked ?? false,\n            updating: existing?.updating ?? false,\n            ...(existing?.error ? {error: existing.error} : {}),\n          }\n        })\n      }\n\n      state.fetching = false\n      state.fetchCount = assets.length || 0\n      delete state.fetchingError\n    },\n    fetchError(state, action: PayloadAction<HttpError>) {\n      const error = action.payload\n      state.fetching = false\n      state.fetchingError = error\n    },\n    folderSetComplete(\n      state,\n      action: PayloadAction<{assetIds: string[]; folderId: string | null; closeDialogId?: string}>,\n    ) {\n      const {assetIds, folderId} = action.payload\n\n      assetIds.forEach((assetId) => {\n        if (state.byIds[assetId]?.asset) {\n          state.byIds[assetId].asset.opt = state.byIds[assetId].asset.opt || {}\n          state.byIds[assetId].asset.opt.media = state.byIds[assetId].asset.opt.media || {}\n          state.byIds[assetId].asset.opt.media.folder = folderId\n            ? {_ref: folderId, _type: 'reference', _weak: true}\n            : undefined\n          state.byIds[assetId].updating = false\n        }\n      })\n    },\n    folderSetError(state, action: PayloadAction<{assetIds: string[]; error: HttpError}>) {\n      const {assetIds, error} = action.payload\n\n      assetIds.forEach((assetId) => {\n        if (state.byIds[assetId]) {\n          state.byIds[assetId].error = error.message\n          state.byIds[assetId].updating = false\n        }\n      })\n    },\n    folderSetRequest(\n      state,\n      action: PayloadAction<{\n        assets: AssetItem[]\n        folderId: string | null\n        closeDialogId?: string\n      }>,\n    ) {\n      action.payload.assets.forEach((asset) => {\n        const item = state.byIds[asset.asset._id]\n        if (item) {\n          item.updating = true\n        }\n      })\n    },\n    fetchRequest: {\n      reducer: (state, _action: PayloadAction<{params: Record<string, any>; query: string}>) => {\n        state.fetching = true\n        delete state.fetchingError\n      },\n      prepare: ({\n        params = {},\n        queryFilter,\n        selector = ``,\n        sort = groq`order(_updatedAt desc)`,\n      }: {\n        params?: Record<string, any>\n        queryFilter: string\n        replace?: boolean\n        selector?: string\n        sort?: string\n      }) => {\n        const pipe = sort || selector ? '|' : ''\n\n        // Construct query\n        const query = groq`\n          {\n            \"items\": *[${queryFilter}] {\n              _id,\n              _type,\n              _createdAt,\n              _updatedAt,\n              altText,\n              creditLine,\n              description,\n              extension,\n              metadata {\n                dimensions,\n                exif,\n                image,\n                isOpaque,\n              },\n              mimeType,\n              opt {\n                media\n              },\n              originalFilename,\n              size,\n              source {\n                name,\n                id,\n                url,\n              },\n              title,\n              url\n            } ${pipe} ${sort} ${selector},\n          }\n        `\n\n        return {payload: {params, query}}\n      },\n    },\n    insertUploads(state, action: PayloadAction<{results: Record<string, string | null>}>) {\n      const {results} = action.payload\n\n      Object.entries(results).forEach(([hash, assetId]) => {\n        if (assetId && !state.allIds.includes(hash)) {\n          state.allIds.push(assetId)\n        }\n      })\n    },\n    listenerCreateQueue(_state, _action: PayloadAction<{asset: Asset}>) {\n      //\n    },\n    listenerCreateQueueComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n      const {assets} = action.payload\n      assets?.forEach((asset) => {\n        if (state.byIds[asset?._id]?.asset) {\n          state.byIds[asset._id]!.asset = asset\n        }\n      })\n    },\n    listenerDeleteQueue(_state, _action: PayloadAction<{assetId: string}>) {\n      //\n    },\n    listenerDeleteQueueComplete(state, action: PayloadAction<{assetIds: string[]}>) {\n      const {assetIds} = action.payload\n      assetIds?.forEach((assetId) => {\n        const deleteIndex = state.allIds.indexOf(assetId)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n        delete state.byIds[assetId]\n      })\n    },\n    listenerUpdateQueue(_state, _action: PayloadAction<{asset: Asset}>) {\n      //\n    },\n    listenerUpdateQueueComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n      const {assets} = action.payload\n      assets?.forEach((asset) => {\n        if (state.byIds[asset?._id]?.asset) {\n          state.byIds[asset._id]!.asset = asset\n        }\n      })\n    },\n    loadNextPage() {\n      //\n    },\n    loadPageIndex(state, action: PayloadAction<{pageIndex: number}>) {\n      //\n      state.pageIndex = action.payload.pageIndex\n    },\n    orderSet(state, action: PayloadAction<{order: Order}>) {\n      state.order = action.payload?.order\n      state.pageIndex = 0\n    },\n    pick(state, action: PayloadAction<{assetId: string; picked: boolean}>) {\n      const {assetId, picked} = action.payload\n      const item = state.byIds[assetId]\n      if (!item) {\n        return\n      }\n\n      item.picked = picked\n      state.lastPicked = picked ? assetId : undefined\n    },\n    pickAll(state) {\n      state.allIds.forEach((id) => {\n        state.byIds[id]!.picked = true\n      })\n    },\n    pickClear(state) {\n      state.lastPicked = undefined\n      Object.values(state.byIds).forEach((asset) => {\n        state.byIds[asset.asset._id]!.picked = false\n      })\n    },\n    pickRange(state, action: PayloadAction<{endId: string; startId: string}>) {\n      const startIndex = state.allIds.findIndex((id) => id === action.payload.startId)\n      const endIndex = state.allIds.findIndex((id) => id === action.payload.endId)\n\n      // Sort numerically, ascending order\n      const indices = [startIndex, endIndex].sort((a, b) => a - b)\n\n      state.allIds.slice(indices[0], indices[1]! + 1).forEach((key) => {\n        state.byIds[key]!.picked = true\n      })\n      state.lastPicked = state.allIds[endIndex]\n    },\n    sort(state) {\n      state.allIds.sort((a, b) => {\n        const tagA = state.byIds[a]!.asset[state.order.field]\n        const tagB = state.byIds[b]!.asset[state.order.field]\n\n        if (tagA < tagB) {\n          return state.order.direction === 'asc' ? -1 : 1\n        } else if (tagA > tagB) {\n          return state.order.direction === 'asc' ? 1 : -1\n        }\n        return 0\n      })\n    },\n    updateComplete(state, action: PayloadAction<{asset: Asset; closeDialogId?: string}>) {\n      const {asset} = action.payload\n      state.byIds[asset._id]!.updating = false\n      state.byIds[asset._id]!.asset = asset\n    },\n    updateError(state, action: PayloadAction<{asset: Asset; error: HttpError}>) {\n      const {asset, error} = action.payload\n\n      const assetId = asset?._id\n      state.byIds[assetId]!.error = error.message\n      state.byIds[assetId]!.updating = false\n    },\n    updateImageReferences(state, action: PayloadAction<{asset: Asset; id: string}>) {\n      const {id: assetId} = action.payload\n      const item = state.byIds[assetId]\n      if (!item) {\n        return\n      }\n      item.updating = true\n      delete item.error\n    },\n    updateImageReferencesComplete(state, action: PayloadAction<{id: string}>) {\n      const {id} = action.payload\n      const item = state.byIds[id]\n      if (!item) {\n        return\n      }\n      item.updating = false\n      delete item.error\n    },\n    updateRequest(\n      state,\n      action: PayloadAction<{asset: Asset; closeDialogId?: string; formData: Record<string, any>}>,\n    ) {\n      const assetId = action.payload?.asset?._id\n      state.byIds[assetId]!.updating = true\n    },\n    viewSet(state, action: PayloadAction<{view: BrowserView}>) {\n      state.view = action.payload?.view\n    },\n  },\n})\n\n// Epics\n\nexport const assetsDeleteEpic: MyEpic = (action$, _state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.deleteRequest.match),\n    mergeMap((action) => {\n      const {assets} = action.payload\n      const assetIds = assets.map((asset) => asset._id)\n      return of(assets).pipe(\n        mergeMap(() =>\n          client.observable.delete({\n            query: groq`*[_id in ${JSON.stringify(assetIds)}]`,\n          }),\n        ),\n        mergeMap(() => of(assetsActions.deleteComplete({assetIds}))),\n        catchError((error: ClientError) => {\n          return of(assetsActions.deleteError({assetIds, error}))\n        }),\n      )\n    }),\n  )\n\nexport const assetsFetchEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.fetchRequest.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) => {\n      const params = action.payload?.params\n      const query = action.payload?.query\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() =>\n          client.observable.fetch<{\n            items: Asset[]\n          }>(query, params),\n        ),\n        mergeMap((result) => {\n          const {\n            items,\n            // totalCount\n          } = result\n          return of(assetsActions.fetchComplete({assets: items}))\n        }),\n        catchError((error: ClientError) =>\n          of(\n            assetsActions.fetchError({\n              message: error?.message || 'Internal error',\n              statusCode: error?.statusCode || 500,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const assetsFetchPageIndexEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(assetsActions.loadPageIndex.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) => {\n      const pageSize = state.assets.pageSize\n      const start = action.payload.pageIndex * pageSize\n      const end = start + pageSize\n\n      // Document ID can be null when operating on pristine / unsaved drafts\n      const documentId = state?.selected.document?._id\n      const documentAssetIds = state?.selected?.documentAssetIds\n\n      const constructedFilter = constructFilter({\n        assetTypes: state.assets.assetTypes,\n        currentFolderId: state.folders.currentFolderId,\n        excludeTagSlugs: state.assets.excludeTagSlugs,\n        searchFacets: state.search.facets,\n        searchQuery: state.search.query,\n      })\n\n      const params = {\n        ...(documentId ? {documentId} : {}),\n        documentAssetIds,\n      }\n\n      return of(\n        assetsActions.fetchRequest({\n          params,\n          queryFilter: constructedFilter,\n          selector: groq`[${start}...${end}]`,\n          sort: groq`order(${state.assets?.order?.field} ${state.assets?.order?.direction})`,\n        }),\n      )\n    }),\n  )\n\nexport const assetsFetchNextPageEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(assetsActions.loadNextPage.match),\n    withLatestFrom(state$),\n    switchMap(([_action, state]) =>\n      of(assetsActions.loadPageIndex({pageIndex: state.assets.pageIndex + 1})),\n    ),\n  )\n\nexport const assetsFetchAfterDeleteAllEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(assetsActions.deleteComplete.match),\n    withLatestFrom(state$),\n    switchMap(([_action, state]) => {\n      if (state.assets.allIds.length === 0) {\n        const nextPageIndex = Math.floor(state.assets.allIds.length / state.assets.pageSize)\n        return of(assetsActions.loadPageIndex({pageIndex: nextPageIndex}))\n      }\n\n      return EMPTY\n    }),\n  )\n\nconst filterAssetWithoutTag = (tag: Tag) => (asset: AssetItem) => {\n  const tagIndex = asset?.asset?.opt?.media?.tags?.findIndex((t) => t._ref === tag?._id) ?? -1\n  return tagIndex < 0\n}\n\nconst patchOperationTagAppend =\n  ({tag}: {tag: Tag}) =>\n  (patch: Patch) =>\n    patch\n      .setIfMissing({opt: {}})\n      .setIfMissing({'opt.media': {}})\n      .setIfMissing({'opt.media.tags': []})\n      .append('opt.media.tags', [{_key: nanoid(), _ref: tag?._id, _type: 'reference', _weak: true}])\n\nconst patchOperationTagUnset =\n  ({asset, tag}: {asset: AssetItem; tag: Tag}) =>\n  (patch: Patch) =>\n    patch.ifRevisionId(asset?.asset?._rev).unset([`opt.media.tags[_ref == \"${tag._id}\"]`])\n\nconst patchOperationFolderSet =\n  ({asset, folderId}: {asset: AssetItem; folderId: string | null}) =>\n  (patch: Patch) => {\n    const nextPatch = patch.ifRevisionId(asset?.asset?._rev).setIfMissing({opt: {}}).setIfMissing({\n      'opt.media': {},\n    })\n\n    if (folderId) {\n      return nextPatch.set({\n        'opt.media.folder': {_ref: folderId, _type: 'reference', _weak: true},\n      })\n    }\n\n    return nextPatch.unset(['opt.media.folder'])\n  }\n\nexport const assetsOrderSetEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.orderSet.match),\n    mergeMap(() => {\n      return of(\n        assetsActions.clear(), //\n        assetsActions.loadPageIndex({pageIndex: 0}),\n      )\n    }),\n  )\n\nexport const assetsSearchEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      searchActions.facetsAdd.type,\n      searchActions.facetsClear.type,\n      searchActions.facetsRemoveById.type,\n      searchActions.facetsRemoveByName.type,\n      searchActions.facetsRemoveByTag.type,\n      searchActions.facetsUpdate.type,\n      searchActions.facetsUpdateById.type,\n      searchActions.querySet.type,\n    ),\n    debounceTime(400),\n    mergeMap(() => {\n      return of(\n        assetsActions.clear(), //\n        assetsActions.loadPageIndex({pageIndex: 0}),\n      )\n    }),\n  )\n\nexport const assetsListenerCreateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.listenerCreateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const assets = actions?.map((action) => action.payload.asset)\n      return of(assetsActions.listenerCreateQueueComplete({assets}))\n    }),\n  )\n\nexport const assetsListenerDeleteQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.listenerDeleteQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const assetIds = actions?.map((action) => action.payload.assetId)\n      return of(assetsActions.listenerDeleteQueueComplete({assetIds}))\n    }),\n  )\n\nexport const assetsListenerUpdateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.listenerUpdateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const assets = actions?.map((action) => action.payload.asset)\n      return of(assetsActions.listenerUpdateQueueComplete({assets}))\n    }),\n  )\n\n// Re-sort on all updates (immediate and batched listener events)\nexport const assetsSortEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.insertUploads.type,\n      assetsActions.listenerUpdateQueueComplete.type,\n      assetsActions.updateComplete.type,\n    ),\n    mergeMap(() => of(assetsActions.sort())),\n  )\n\nexport const assetsTagsAddEpic: MyEpic = (action$, state$, {client}) => {\n  return action$.pipe(\n    filter(ASSETS_ACTIONS.tagsAddRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets, tag} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Add tag references to all picked assets\n        mergeMap(() => {\n          const pickedAssets = selectAssetsPicked(state)\n\n          // Filter out picked assets which already include tag\n          const pickedAssetsFiltered = pickedAssets?.filter(filterAssetWithoutTag(tag))\n\n          const transaction: Transaction = pickedAssetsFiltered.reduce(\n            (tx, pickedAsset) => tx.patch(pickedAsset?.asset?._id, patchOperationTagAppend({tag})),\n            client.transaction(),\n          )\n\n          return from(transaction.commit())\n        }),\n        // Dispatch complete action\n        mergeMap(() => of(ASSETS_ACTIONS.tagsAddComplete({assets, tag}))),\n        catchError((error: ClientError) =>\n          of(\n            ASSETS_ACTIONS.tagsAddError({\n              assets,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n}\n\nexport const assetsTagsRemoveEpic: MyEpic = (action$, state$, {client}) => {\n  return action$.pipe(\n    filter(ASSETS_ACTIONS.tagsRemoveRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets, tag} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Remove tag references from all picked assets\n        mergeMap(() => {\n          const pickedAssets = selectAssetsPicked(state)\n\n          const transaction: Transaction = pickedAssets.reduce(\n            (tx, pickedAsset) =>\n              tx.patch(pickedAsset?.asset?._id, patchOperationTagUnset({asset: pickedAsset, tag})),\n            client.transaction(),\n          )\n\n          return from(transaction.commit())\n        }),\n        // Dispatch complete action\n        mergeMap(() => of(ASSETS_ACTIONS.tagsRemoveComplete({assets, tag}))),\n        catchError((error: ClientError) =>\n          of(\n            ASSETS_ACTIONS.tagsRemoveError({\n              assets,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n}\n\nexport const assetsFolderSetEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.folderSetRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets, closeDialogId, folderId} = action.payload\n      const assetIds = assets.map((asset) => asset.asset._id)\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() => {\n          const transaction: Transaction = assets.reduce(\n            (tx, asset) => tx.patch(asset.asset._id, patchOperationFolderSet({asset, folderId})),\n            client.transaction(),\n          )\n\n          return from(transaction.commit())\n        }),\n        mergeMap(() =>\n          of(\n            assetsActions.folderSetComplete({\n              assetIds,\n              closeDialogId,\n              folderId,\n            }),\n          ),\n        ),\n        catchError((error: ClientError) =>\n          of(\n            assetsActions.folderSetError({\n              assetIds,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const assetsFolderSetRefreshEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.folderSetComplete.match),\n    mergeMap(() =>\n      of(\n        assetsActions.pickClear(),\n        assetsActions.clear(),\n        assetsActions.loadPageIndex({pageIndex: 0}),\n      ),\n    ),\n  )\n\nexport const assetsUnpickEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.orderSet.type,\n      assetsActions.viewSet.type,\n      searchActions.facetsAdd.type,\n      searchActions.facetsClear.type,\n      searchActions.facetsRemoveById.type,\n      searchActions.facetsRemoveByName.type,\n      searchActions.facetsRemoveByTag.type,\n      searchActions.facetsUpdate.type,\n      searchActions.facetsUpdateById.type,\n      searchActions.querySet.type,\n    ),\n    mergeMap(() => {\n      return of(assetsActions.pickClear())\n    }),\n  )\n\nexport const assetsUpdateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.updateRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {asset, closeDialogId, formData} = action.payload\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() =>\n          from(\n            client\n              .patch(asset._id)\n              .setIfMissing({opt: {}})\n              .setIfMissing({'opt.media': {}})\n              .set(formData)\n              .commit(),\n          ),\n        ),\n        mergeMap((updatedAsset: any) =>\n          of(\n            assetsActions.updateComplete({\n              asset: updatedAsset,\n              closeDialogId,\n            }),\n          ),\n        ),\n        catchError((error: ClientError) =>\n          of(\n            assetsActions.updateError({\n              asset,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const assetsUpdateImageReferencesEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.updateImageReferences.match),\n    withLatestFrom(state$),\n    // Queue replaces so a later action still runs (exhaustMap would drop it after\n    // the reducer already set `updating`, leaving a stuck spinner). Same-asset\n    // double-clicks are blocked in the UI when the original is already updating.\n    concatMap(([action, state]) => {\n      const {asset, id} = action.payload\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() => client.observable.fetch<SanityDocument[]>(groq`*[references($id)]`, {id})),\n        mergeMap((documents) => {\n          // Patch every referencing document in one transaction so we never leave\n          // references split across old/new assets if a later commit would fail.\n          let patchedCount = 0\n          const transaction: Transaction = documents.reduce((tx, document) => {\n            const clonedDocument = JSON.parse(JSON.stringify(document)) as Record<string, unknown>\n            const assetsToReplace = findImageAssets(clonedDocument, asset, id)\n            if (assetsToReplace.length === 0) {\n              return tx\n            }\n            patchedCount += 1\n            const patchSet = Object.assign({}, ...assetsToReplace) as AttributeSet\n            return tx.patch(document._id, (patch) =>\n              patch.ifRevisionId(document._rev).set(patchSet),\n            )\n          }, client.transaction())\n\n          if (patchedCount === 0) {\n            return of(assetsActions.updateImageReferencesComplete({id}))\n          }\n\n          return from(transaction.commit()).pipe(\n            mergeMap(() => of(assetsActions.updateImageReferencesComplete({id}))),\n          )\n        }),\n        catchError((error: ClientError) => {\n          // The asset marked as `updating` is the original (being replaced), keyed\n          // by `id` — not the replacement `asset` that was clicked. Attach the error\n          // to (and clear the spinner on) the original asset.\n          const originalAsset = state.assets.byIds[id]?.asset ?? asset\n          return of(\n            assetsActions.updateError({\n              asset: originalAsset,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          )\n        }),\n      )\n    }),\n  )\n\n// Selectors\n\nconst selectAssetsByIds = (state: RootReducerState) => state.assets.byIds\n\nconst selectAssetsAllIds = (state: RootReducerState) => state.assets.allIds\n\nexport const selectAssetById = createSelector(\n  [\n    (state: RootReducerState) => state.assets.byIds,\n    (_state: RootReducerState, assetId: string) => assetId,\n  ],\n  (byIds, assetId) => {\n    const asset = byIds[assetId]\n    return asset ? asset : undefined\n  },\n)\n\nconst selectAssets: Selector<RootReducerState, AssetItem[]> = createSelector(\n  [selectAssetsByIds, selectAssetsAllIds],\n  (byIds, allIds) => allIds.map((id) => byIds[id]!),\n)\n\nexport const selectAssetsLength = createSelector([selectAssets], (assets) => assets.length)\n\nexport const selectAssetsPicked = createSelector([selectAssets], (assets) =>\n  assets.filter((item) => item?.picked),\n)\n\nexport const selectAssetsPickedLength = createSelector(\n  [selectAssetsPicked],\n  (assetsPicked) => assetsPicked.length,\n)\n\nexport const assetsActions = {...assetsSlice.actions}\n\nexport default assetsSlice.reducer\n","import {createSelector, createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, Patch} from '@sanity/client'\nimport groq from 'groq'\nimport {nanoid} from 'nanoid'\nimport {from, of} from 'rxjs'\nimport {\n  catchError,\n  debounceTime,\n  filter,\n  map,\n  mergeMap,\n  switchMap,\n  withLatestFrom,\n} from 'rxjs/operators'\n\nimport {FOLDER_DOCUMENT_NAME} from '../../constants'\nimport debugThrottle from '../../operators/debugThrottle'\nimport type {FolderDoc, FolderTreeItem, FolderTreeNode, HttpError, MyEpic} from '../../types'\nimport {buildExcludeTagsFragment} from '../../utils/constructFilter'\nimport {assetsActions} from '../assets'\nimport type {RootReducerState} from '../types'\nimport {UPLOADS_ACTIONS} from '../uploads/actions'\n\ntype FoldersReducerState = {\n  byId: Record<string, FolderDoc>\n  childrenByParentId: Record<string, string[]>\n  rootIds: string[]\n  exactCountByFolderId: Record<string, number>\n  unfiledCount: number\n  currentFolderId: string | null\n  currentFolderUnfiled: boolean\n  panelVisible: boolean\n  fetching: boolean\n  fetchCount: number\n  fetchingError?: HttpError\n  creating: boolean\n  creatingError?: HttpError\n  deletingId?: string\n  deleteError?: HttpError\n  renaming: boolean\n  renameError?: HttpError\n}\n\nconst initialState: FoldersReducerState = {\n  byId: {},\n  childrenByParentId: {},\n  rootIds: [],\n  exactCountByFolderId: {},\n  unfiledCount: 0,\n  currentFolderId: null,\n  currentFolderUnfiled: false,\n  panelVisible: false,\n  fetching: false,\n  fetchCount: -1,\n  fetchingError: undefined,\n  creating: false,\n  creatingError: undefined,\n  deletingId: undefined,\n  deleteError: undefined,\n  renaming: false,\n  renameError: undefined,\n}\n\nconst indexFolders = (folders: FolderDoc[]) => {\n  const byId: Record<string, FolderDoc> = {}\n  const childrenByParentId: Record<string, string[]> = {}\n  const rootIds: string[] = []\n\n  folders.forEach((folder) => {\n    byId[folder._id] = folder\n  })\n\n  // Resolve parent ids that reference unknown folders to null (defensive — orphan folders surface at root).\n  folders.forEach((folder) => {\n    const parentKey = folder.parentId && byId[folder.parentId] ? folder.parentId : null\n    if (parentKey === null) {\n      rootIds.push(folder._id)\n    } else {\n      if (!childrenByParentId[parentKey]) {\n        childrenByParentId[parentKey] = []\n      }\n      childrenByParentId[parentKey].push(folder._id)\n    }\n  })\n\n  const sortByName = (ids: string[]) =>\n    ids.sort((a, b) =>\n      (byId[a]?.name || '').localeCompare(byId[b]?.name || '', undefined, {\n        numeric: true,\n        sensitivity: 'base',\n      }),\n    )\n\n  sortByName(rootIds)\n  Object.values(childrenByParentId).forEach((ids) => sortByName(ids))\n\n  return {byId, childrenByParentId, rootIds}\n}\n\nconst foldersSlice = createSlice({\n  name: 'folders',\n  initialState,\n  reducers: {\n    createComplete(state, _action: PayloadAction<{folder: FolderDoc}>) {\n      state.creating = false\n    },\n    createError(state, action: PayloadAction<{error: HttpError}>) {\n      state.creating = false\n      state.creatingError = action.payload.error\n    },\n    createRequest(state, _action: PayloadAction<{name: string; parentId?: string | null}>) {\n      state.creating = true\n      delete state.creatingError\n    },\n    currentFolderClear(state) {\n      state.currentFolderId = null\n      state.currentFolderUnfiled = false\n    },\n    currentFolderSet(state, action: PayloadAction<{folderId: string}>) {\n      state.currentFolderId = action.payload.folderId\n      state.currentFolderUnfiled = false\n    },\n    currentFolderShowUnfiled(state) {\n      state.currentFolderId = null\n      state.currentFolderUnfiled = true\n    },\n    deleteComplete(\n      state,\n      action: PayloadAction<{\n        folderId: string\n        deletedIds: string[]\n        clearedCurrentFolder?: boolean\n      }>,\n    ) {\n      state.deletingId = undefined\n      const removed = new Set(action.payload.deletedIds)\n      if (state.currentFolderId && removed.has(state.currentFolderId)) {\n        state.currentFolderId = null\n        state.currentFolderUnfiled = false\n      }\n    },\n    deleteError(state, action: PayloadAction<{error: HttpError; folderId: string}>) {\n      state.deletingId = undefined\n      state.deleteError = action.payload.error\n    },\n    deleteRequest(state, action: PayloadAction<{folderId: string}>) {\n      state.deletingId = action.payload.folderId\n      delete state.deleteError\n    },\n    fetchComplete(\n      state,\n      action: PayloadAction<{\n        folders: FolderDoc[]\n        exactCountByFolderId: Record<string, number>\n        unfiledCount: number\n        clearedCurrentFolder?: boolean\n      }>,\n    ) {\n      const {byId, childrenByParentId, rootIds} = indexFolders(action.payload.folders)\n      state.byId = byId\n      state.childrenByParentId = childrenByParentId\n      state.rootIds = rootIds\n      state.exactCountByFolderId = action.payload.exactCountByFolderId\n      state.unfiledCount = action.payload.unfiledCount\n      state.fetching = false\n      state.fetchCount = action.payload.folders.length\n      delete state.fetchingError\n\n      if (state.currentFolderId && !byId[state.currentFolderId]) {\n        state.currentFolderId = null\n        state.currentFolderUnfiled = false\n      }\n    },\n    fetchError(state, action: PayloadAction<{error: HttpError}>) {\n      state.fetching = false\n      state.fetchingError = action.payload.error\n    },\n    fetchRequest(state) {\n      state.fetching = true\n      delete state.fetchingError\n    },\n    panelVisibleSet(state, action: PayloadAction<{panelVisible: boolean}>) {\n      state.panelVisible = action.payload.panelVisible\n    },\n    renameComplete(state, _action: PayloadAction<{folderId: string; name: string}>) {\n      state.renaming = false\n    },\n    renameError(state, action: PayloadAction<{error: HttpError}>) {\n      state.renaming = false\n      state.renameError = action.payload.error\n    },\n    renameRequest(state, _action: PayloadAction<{folderId: string; name: string}>) {\n      state.renaming = true\n      delete state.renameError\n    },\n  },\n})\n\nexport const foldersFetchEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(foldersSlice.actions.fetchRequest.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) =>\n      of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() => {\n          const assetTypes = state.assets.assetTypes.map((type) => `sanity.${type}Asset`)\n          const excludeTagsFragment = buildExcludeTagsFragment(state.assets.excludeTagSlugs)\n          const excludeTagsClause = excludeTagsFragment ? `&& ${excludeTagsFragment}` : ''\n          return client.observable.fetch<{\n            folders: {_id: string; name?: string; parentId?: string | null; count: number}[]\n            unfiledCount: number\n          }>(\n            groq`{\n              \"folders\": *[\n                _type == \"${FOLDER_DOCUMENT_NAME}\"\n                && !(_id in path(\"drafts.**\"))\n              ] {\n                _id,\n                name,\n                \"parentId\": parent._ref,\n                \"count\": count(*[\n                  _type in ${JSON.stringify(assetTypes)}\n                  && !(_id in path(\"drafts.**\"))\n                  && opt.media.folder._ref == ^._id\n                  ${excludeTagsClause}\n                ])\n              },\n              \"unfiledCount\": count(*[\n                _type in ${JSON.stringify(assetTypes)}\n                && !(_id in path(\"drafts.**\"))\n                && !defined(opt.media.folder._ref)\n                ${excludeTagsClause}\n              ])\n            }`,\n          )\n        }),\n        mergeMap((result) => {\n          const folders: FolderDoc[] = result.folders.map((f) => ({\n            _id: f._id,\n            name: f.name || '',\n            parentId: f.parentId || null,\n          }))\n          const exactCountByFolderId: Record<string, number> = {}\n          result.folders.forEach(({_id, count}) => {\n            exactCountByFolderId[_id] = count\n          })\n          const folderIds = new Set(folders.map((folder) => folder._id))\n          const clearedCurrentFolder = Boolean(\n            state.folders.currentFolderId && !folderIds.has(state.folders.currentFolderId),\n          )\n          return of(\n            foldersSlice.actions.fetchComplete({\n              folders,\n              exactCountByFolderId,\n              unfiledCount: result.unfiledCount,\n              clearedCurrentFolder,\n            }),\n          )\n        }),\n        catchError((error: ClientError) =>\n          of(\n            foldersSlice.actions.fetchError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      ),\n    ),\n  )\n\nexport const foldersRefreshEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(\n      (action) =>\n        assetsActions.deleteComplete.match(action) ||\n        assetsActions.folderSetComplete.match(action) ||\n        foldersSlice.actions.createComplete.match(action) ||\n        foldersSlice.actions.deleteComplete.match(action) ||\n        foldersSlice.actions.renameComplete.match(action) ||\n        assetsActions.listenerCreateQueueComplete.match(action) ||\n        assetsActions.listenerDeleteQueueComplete.match(action) ||\n        assetsActions.listenerUpdateQueueComplete.match(action) ||\n        assetsActions.updateComplete.match(action) ||\n        UPLOADS_ACTIONS.uploadComplete.match(action),\n    ),\n    debounceTime(300),\n    mergeMap(() => of(foldersSlice.actions.fetchRequest())),\n  )\n\nexport const foldersCurrentFolderEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(\n      (action) =>\n        foldersSlice.actions.currentFolderClear.match(action) ||\n        foldersSlice.actions.currentFolderSet.match(action) ||\n        foldersSlice.actions.currentFolderShowUnfiled.match(action) ||\n        (foldersSlice.actions.deleteComplete.match(action) &&\n          Boolean(action.payload.clearedCurrentFolder)) ||\n        (foldersSlice.actions.fetchComplete.match(action) &&\n          Boolean(action.payload.clearedCurrentFolder)),\n    ),\n    mergeMap(() =>\n      of(\n        assetsActions.clear(),\n        assetsActions.pickClear(),\n        assetsActions.loadPageIndex({pageIndex: 0}),\n      ),\n    ),\n  )\n\nconst patchOperationAssetFolderUnset = (patch: Patch) => patch.unset(['opt.media.folder'])\n\nconst patchOperationFolderParentSet =\n  ({parentId}: {parentId: string | null}) =>\n  (patch: Patch) => {\n    if (parentId) {\n      return patch.set({parent: {_ref: parentId, _type: 'reference', _weak: true}})\n    }\n\n    return patch.unset(['parent'])\n  }\n\nexport const foldersCreateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(foldersSlice.actions.createRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const name = action.payload.name.trim()\n      const parentId = action.payload.parentId || null\n\n      if (!name) {\n        return of(\n          foldersSlice.actions.createError({\n            error: {message: 'Folder name cannot be empty', statusCode: 400},\n          }),\n        )\n      }\n\n      const siblingIds = parentId\n        ? state.folders.childrenByParentId[parentId] || []\n        : state.folders.rootIds\n      const collision = siblingIds.some(\n        (id) => state.folders.byId[id]?.name.toLowerCase() === name.toLowerCase(),\n      )\n      if (collision) {\n        return of(\n          foldersSlice.actions.createError({\n            error: {message: 'A folder with this name already exists here', statusCode: 409},\n          }),\n        )\n      }\n\n      const newId = `${FOLDER_DOCUMENT_NAME}.${nanoid()}`\n      const doc: {\n        _id: string\n        _type: string\n        name: string\n        parent?: {_ref: string; _type: 'reference'; _weak: true}\n      } = {\n        _id: newId,\n        _type: FOLDER_DOCUMENT_NAME,\n        name,\n      }\n      if (parentId) {\n        doc.parent = {_ref: parentId, _type: 'reference', _weak: true}\n      }\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() => client.observable.create(doc)),\n        mergeMap(() =>\n          of(\n            foldersSlice.actions.createComplete({folder: {_id: newId, name, parentId}}),\n            foldersSlice.actions.currentFolderSet({folderId: newId}),\n          ),\n        ),\n        catchError((error: ClientError) =>\n          of(\n            foldersSlice.actions.createError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const foldersDeleteEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(foldersSlice.actions.deleteRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const folderId = action.payload.folderId\n      const childFolderIds = state.folders.childrenByParentId[folderId] || []\n      const parentId = state.folders.byId[folderId]?.parentId ?? null\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() =>\n          client.observable.fetch<{assets: {_id: string}[]}>(\n            groq`{\n              \"assets\": *[\n                _type in ${JSON.stringify(\n                  state.assets.assetTypes.map((type) => `sanity.${type}Asset`),\n                )}\n                && !(_id in path(\"drafts.**\"))\n                && opt.media.folder._ref == $folderId\n              ] {\n                _id\n              }\n            }`,\n            {folderId},\n          ),\n        ),\n        mergeMap((result) => {\n          const tx = client.transaction()\n          // Deleting a folder only removes the folder document. Assets keep living in the\n          // library with their folder assignment cleared, and direct child folders are promoted\n          // to the deleted folder's parent (or root).\n          result.assets.forEach((asset) => tx.patch(asset._id, patchOperationAssetFolderUnset))\n          childFolderIds.forEach((childFolderId) =>\n            tx.patch(childFolderId, patchOperationFolderParentSet({parentId})),\n          )\n          tx.delete(folderId)\n\n          return from(tx.commit()).pipe(\n            map(() =>\n              foldersSlice.actions.deleteComplete({\n                folderId,\n                deletedIds: [folderId],\n                clearedCurrentFolder: state.folders.currentFolderId === folderId,\n              }),\n            ),\n          )\n        }),\n        catchError((error: ClientError) =>\n          of(\n            foldersSlice.actions.deleteError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              folderId,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const foldersRenameEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(foldersSlice.actions.renameRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {folderId} = action.payload\n      const name = action.payload.name.trim()\n      const folder = state.folders.byId[folderId]\n\n      if (!folder) {\n        return of(\n          foldersSlice.actions.renameError({\n            error: {message: 'Folder not found', statusCode: 404},\n          }),\n        )\n      }\n\n      if (!name) {\n        return of(\n          foldersSlice.actions.renameError({\n            error: {message: 'Folder name cannot be empty', statusCode: 400},\n          }),\n        )\n      }\n\n      if (name === folder.name) {\n        return of(\n          foldersSlice.actions.renameError({\n            error: {message: 'Folder name has not changed', statusCode: 400},\n          }),\n        )\n      }\n\n      const siblingIds = folder.parentId\n        ? state.folders.childrenByParentId[folder.parentId] || []\n        : state.folders.rootIds\n      const collision = siblingIds.some(\n        (id) =>\n          id !== folderId && state.folders.byId[id]?.name.toLowerCase() === name.toLowerCase(),\n      )\n      if (collision) {\n        return of(\n          foldersSlice.actions.renameError({\n            error: {message: 'A folder with this name already exists here', statusCode: 409},\n          }),\n        )\n      }\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() => client.observable.patch(folderId).set({name}).commit()),\n        mergeMap(() => of(foldersSlice.actions.renameComplete({folderId, name}))),\n        catchError((error: ClientError) =>\n          of(\n            foldersSlice.actions.renameError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nconst selectById = (state: RootReducerState) => state.folders.byId\nconst selectChildrenByParentId = (state: RootReducerState) => state.folders.childrenByParentId\nconst selectRootIds = (state: RootReducerState) => state.folders.rootIds\nconst selectExactCountByFolderId = (state: RootReducerState) => state.folders.exactCountByFolderId\nconst selectCurrentFolderId = (state: RootReducerState) => state.folders.currentFolderId\nconst selectCurrentFolderUnfiled = (state: RootReducerState) => state.folders.currentFolderUnfiled\n\nconst buildFolderPath = (folderId: string, byId: Record<string, FolderDoc>): string => {\n  const segments: string[] = []\n  let cursor: string | null = folderId\n  const seen = new Set<string>()\n  while (cursor && !seen.has(cursor)) {\n    const folder: FolderDoc | undefined = byId[cursor]\n    if (!folder) break\n    seen.add(cursor)\n    segments.unshift(folder.name)\n    cursor = folder.parentId\n  }\n  return segments.join('/')\n}\n\nexport const selectFolderPathById = createSelector(\n  [selectById, (_state: RootReducerState, folderId: string | null | undefined) => folderId],\n  (byId, folderId) => (folderId ? buildFolderPath(folderId, byId) : ''),\n)\n\nexport const selectFolderTree = createSelector(\n  [selectById, selectChildrenByParentId, selectRootIds, selectExactCountByFolderId],\n  (byId, childrenByParentId, rootIds, exactCountByFolderId): FolderTreeNode[] => {\n    const buildNode = (folderId: string): FolderTreeNode => {\n      const folder = byId[folderId]\n      const children = (childrenByParentId[folderId] || []).map(buildNode)\n      const exactCount = exactCountByFolderId[folderId] || 0\n      const totalCount = children.reduce((sum, child) => sum + child.totalCount, exactCount)\n      return {\n        children,\n        exactCount,\n        id: folderId,\n        name: folder?.name || '',\n        parentId: folder?.parentId ?? null,\n        path: buildFolderPath(folderId, byId),\n        totalCount,\n      }\n    }\n\n    return rootIds.map(buildNode)\n  },\n)\n\nexport const selectCurrentFolderSegments = createSelector(\n  [selectById, selectCurrentFolderId],\n  (byId, currentFolderId): FolderTreeItem[] => {\n    if (!currentFolderId) return []\n    const chain: string[] = []\n    let cursor: string | null = currentFolderId\n    const seen = new Set<string>()\n    while (cursor && !seen.has(cursor)) {\n      const folder: FolderDoc | undefined = byId[cursor]\n      if (!folder) break\n      seen.add(cursor)\n      chain.unshift(cursor)\n      cursor = folder.parentId\n    }\n    return chain.map((id, depth) => ({\n      depth,\n      exactCount: 0,\n      id,\n      name: byId[id]?.name || '',\n      parentId: byId[id]?.parentId ?? null,\n      path: buildFolderPath(id, byId),\n      totalCount: 0,\n    }))\n  },\n)\n\ntype FoldersIndex = {\n  byId: Record<string, FolderDoc>\n  childrenByParentId: Record<string, string[]>\n  rootIds: string[]\n  exactCountByFolderId: Record<string, number>\n}\n\nconst selectFoldersIndex = createSelector(\n  [selectById, selectChildrenByParentId, selectRootIds, selectExactCountByFolderId],\n  (byId, childrenByParentId, rootIds, exactCountByFolderId): FoldersIndex => ({\n    byId,\n    childrenByParentId,\n    rootIds,\n    exactCountByFolderId,\n  }),\n)\n\nexport const selectCurrentFolderChildren = createSelector(\n  [selectFoldersIndex, selectCurrentFolderId, selectCurrentFolderUnfiled],\n  (\n    {byId, childrenByParentId, rootIds, exactCountByFolderId},\n    currentFolderId,\n    currentFolderUnfiled,\n  ): FolderTreeItem[] => {\n    if (currentFolderUnfiled || !currentFolderId) return []\n    const ids = currentFolderId ? childrenByParentId[currentFolderId] || [] : rootIds\n    const depth = currentFolderId ? buildFolderPath(currentFolderId, byId).split('/').length : 0\n    return ids.map((id) => {\n      const folder = byId[id]\n      // Sum totalCount over the subtree.\n      const stack = [id]\n      let totalCount = 0\n      while (stack.length) {\n        const cur = stack.pop()!\n        totalCount += exactCountByFolderId[cur] || 0\n        const kids = childrenByParentId[cur]\n        if (kids) stack.push(...kids)\n      }\n      return {\n        depth,\n        exactCount: exactCountByFolderId[id] || 0,\n        id,\n        name: folder?.name || '',\n        parentId: folder?.parentId ?? null,\n        path: buildFolderPath(id, byId),\n        totalCount,\n      }\n    })\n  },\n)\n\nexport const selectCanDeleteFolder = createSelector(\n  [selectCurrentFolderId],\n  (currentFolderId) => !!currentFolderId,\n)\n\nexport const foldersActions = {...foldersSlice.actions}\n\nexport default foldersSlice.reducer\n","import {createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport pluralize from 'pluralize'\nimport {ofType} from 'redux-observable'\nimport {EMPTY, of} from 'rxjs'\nimport {filter, mergeMap} from 'rxjs/operators'\n\nimport type {AssetItem, Dialog, MyEpic, Tag} from '../../types'\nimport {assetsActions} from '../assets'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {foldersActions} from '../folders'\nimport {tagsActions} from '../tags'\nimport {DIALOG_ACTIONS} from './actions'\n\ntype DialogReducerState = {\n  items: Dialog[]\n}\n\nconst initialState = {\n  items: [],\n} as DialogReducerState\n\nconst dialogSlice = createSlice({\n  name: 'dialog',\n  initialState,\n  extraReducers: (builder) => {\n    builder\n      .addCase(DIALOG_ACTIONS.showFolderCreate, (state, action) => {\n        const {parentFolderId} = action.payload\n        state.items.push({\n          parentFolderId,\n          id: 'folderCreate',\n          type: 'folderCreate',\n        })\n      })\n      .addCase(DIALOG_ACTIONS.showFolderMove, (state, action) => {\n        const {assets, folderId} = action.payload\n        state.items.push({\n          assets,\n          folderId,\n          id: 'folderMove',\n          type: 'folderMove',\n        })\n      })\n      .addCase(DIALOG_ACTIONS.showFolderRename, (state, action) => {\n        const {folderId} = action.payload\n        state.items.push({\n          folderId,\n          id: 'folderRename',\n          type: 'folderRename',\n        })\n      })\n      .addCase(DIALOG_ACTIONS.showTagCreate, (state) => {\n        state.items.push({\n          id: 'tagCreate',\n          type: 'tagCreate',\n        })\n      })\n      .addCase(DIALOG_ACTIONS.showTagEdit, (state, action) => {\n        const {tagId} = action.payload\n        state.items.push({\n          id: tagId,\n          tagId,\n          type: 'tagEdit',\n        })\n      })\n      .addCase(foldersActions.createComplete, (state) => {\n        state.items = state.items.filter((item) => item.id !== 'folderCreate')\n      })\n      .addCase(foldersActions.renameComplete, (state) => {\n        state.items = state.items.filter((item) => item.id !== 'folderRename')\n      })\n  },\n  reducers: {\n    // Clear all dialogs\n    clear(state) {\n      state.items = []\n    },\n    // Add newly created inline tag to assetEdit dialog\n    inlineTagCreate(state, action: PayloadAction<{assetId: string; tag: Tag}>) {\n      const {assetId, tag} = action.payload\n\n      state.items.forEach((item) => {\n        if (item.type === 'assetEdit' && item.assetId === assetId) {\n          item.lastCreatedTag = {\n            label: tag.name.current,\n            value: tag._id,\n          }\n        }\n      })\n    },\n    // Remove inline tags from assetEdit dialog\n    inlineTagRemove(state, action: PayloadAction<{tagIds: string[]}>) {\n      const {tagIds} = action.payload\n\n      state.items.forEach((item) => {\n        if (item.type === 'assetEdit') {\n          item.lastRemovedTagIds = tagIds\n        }\n      })\n    },\n    // Remove dialog by id\n    remove(state, action: PayloadAction<{id: string}>) {\n      const id = action.payload?.id\n      state.items = state.items.filter((item) => item.id !== id)\n    },\n    showConfirmAssetsTagAdd(\n      state,\n      action: PayloadAction<{\n        assetsPicked: AssetItem[]\n        closeDialogId?: string\n        tag: Tag\n      }>,\n    ) {\n      const {assetsPicked, closeDialogId, tag} = action.payload\n\n      const suffix = `${assetsPicked.length} ${pluralize('asset', assetsPicked.length)}`\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: ASSETS_ACTIONS.tagsAddRequest({\n          assets: assetsPicked,\n          tag,\n        }),\n        confirmText: `Yes, add tag to ${suffix}`,\n        title: `Add tag ${tag.name.current} to ${suffix}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm tag addition',\n        tone: 'primary',\n        type: 'confirm',\n      })\n    },\n    showConfirmAssetsTagRemove(\n      state,\n      action: PayloadAction<{\n        assetsPicked: AssetItem[]\n        closeDialogId?: string\n        tag: Tag\n      }>,\n    ) {\n      const {assetsPicked, closeDialogId, tag} = action.payload\n\n      const suffix = `${assetsPicked.length} ${pluralize('asset', assetsPicked.length)}`\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: ASSETS_ACTIONS.tagsRemoveRequest({assets: assetsPicked, tag}),\n        confirmText: `Yes, remove tag from ${suffix}`,\n        headerTitle: 'Confirm tag removal',\n        id: 'confirm',\n        title: `Remove tag ${tag.name.current} from ${suffix}?`,\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showConfirmDeleteAssets(\n      state,\n      action: PayloadAction<{assets: AssetItem[]; closeDialogId?: string}>,\n    ) {\n      const {assets, closeDialogId} = action.payload\n\n      const suffix = `${assets.length} ${pluralize('asset', assets.length)}`\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: assetsActions.deleteRequest({\n          assets: assets.map((assetItem) => assetItem.asset),\n        }),\n        confirmText: `Yes, delete ${suffix}`,\n        description: 'This operation cannot be reversed. Are you sure you want to continue?',\n        title: `Permanently delete ${suffix}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm deletion',\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showConfirmDeleteFolder(\n      state,\n      action: PayloadAction<{closeDialogId?: string; folderId: string; folderName: string}>,\n    ) {\n      const {closeDialogId, folderId, folderName} = action.payload\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: foldersActions.deleteRequest({folderId}),\n        confirmText: `Yes, delete folder`,\n        description:\n          'This deletes only the selected folder. Assets in this folder will stay in the library and have their folder assignment removed. Nested folders will move up one level.',\n        title: `Delete ${folderName}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm folder deletion',\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showConfirmDeleteTag(state, action: PayloadAction<{closeDialogId?: string; tag: Tag}>) {\n      const {closeDialogId, tag} = action.payload\n\n      const suffix = 'tag'\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: tagsActions.deleteRequest({tag}),\n        confirmText: `Yes, delete ${suffix}`,\n        description: 'This operation cannot be reversed. Are you sure you want to continue?',\n        title: `Permanently delete ${suffix}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm deletion',\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showAllAssetsDialog(state, action: PayloadAction<{assetId: string}>) {\n      if (state.items.some((item) => item.type === 'dialogAllAssets')) {\n        return\n      }\n      state.items.push({\n        assetId: action.payload.assetId,\n        id: 'dialogAllAssets',\n        type: 'dialogAllAssets',\n      })\n    },\n    showAssetEdit(state, action: PayloadAction<{assetId: string}>) {\n      const {assetId} = action.payload\n      state.items.push({\n        assetId,\n        id: assetId,\n        type: 'assetEdit',\n      })\n    },\n    showSearchFacets(state) {\n      state.items.push({\n        id: 'searchFacets',\n        type: 'searchFacets',\n      })\n    },\n    showFolders(state) {\n      state.items.push({\n        id: 'folders',\n        type: 'folders',\n      })\n    },\n    showTags(state) {\n      state.items.push({\n        id: 'tags',\n        type: 'tags',\n      })\n    },\n  },\n})\n\n// Epics\n\nexport const dialogClearOnAssetUpdateEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.deleteComplete.type,\n      assetsActions.folderSetComplete.type,\n      assetsActions.updateComplete.type,\n      tagsActions.deleteComplete.type,\n      tagsActions.updateComplete.type,\n    ),\n    filter(\n      (action: {\n        payload: {closeDialogId?: string}\n      }): action is PayloadAction<{closeDialogId?: string}> => !!action?.payload?.closeDialogId,\n    ),\n    mergeMap((action) => {\n      const dialogId = action?.payload?.closeDialogId\n      if (dialogId) {\n        return of(dialogSlice.actions.remove({id: dialogId}))\n      }\n      return EMPTY\n    }),\n  )\n\nexport const dialogTagCreateEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.createComplete.match),\n    mergeMap((action) => {\n      const {assetId, tag} = action?.payload || {}\n\n      if (assetId) {\n        return of(dialogSlice.actions.inlineTagCreate({tag, assetId}))\n      }\n\n      if (tag._id) {\n        return of(dialogSlice.actions.remove({id: 'tagCreate'}))\n      }\n\n      return EMPTY\n    }),\n  )\n\nexport const dialogTagDeleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.listenerDeleteQueueComplete.match),\n    mergeMap((action) => {\n      const {tagIds} = action?.payload || {}\n\n      return of(dialogSlice.actions.inlineTagRemove({tagIds}))\n    }),\n  )\n\nexport const dialogActions = {...dialogSlice.actions}\n\nexport default dialogSlice.reducer\n","import {createGlobalStyle, css} from 'styled-components'\n\nconst customScrollbar = css`\n  ::-webkit-scrollbar {\n    width: 14px;\n  }\n\n  ::-webkit-scrollbar-thumb {\n    border-radius: 10px;\n    border: 4px solid rgba(0, 0, 0, 0);\n    background: var(--card-border-color);\n    background-clip: padding-box;\n\n    &:hover {\n      background: var(--card-muted-fg-color);\n      background-clip: padding-box;\n    }\n  }\n`\n\nconst GlobalStyle = createGlobalStyle`\n  .media__custom-scrollbar {\n    ${customScrollbar}\n  }\n\n  // @sanity/ui overrides\n\n  // Custom scrollbar on Box (used in Dialogs)\n  div[data-ui=\"Box\"] {\n    ${customScrollbar}\n  }\n\n  // Dialog background color\n  div[data-ui=\"Dialog\"] {\n    background-color: rgba(15, 17, 18, 0.9);\n  }\n\n`\n\nexport default GlobalStyle\n","import {type PropsWithChildren, createContext, useContext, useMemo} from 'react'\nimport type {DropzoneOptions} from 'react-dropzone'\n\nimport type {MediaToolOptions, Locale} from '../types'\n\ntype ContextProps = {\n  dropzone: Pick<DropzoneOptions, 'maxSize'>\n  components: MediaToolOptions['components']\n  createTagsOnUpload: boolean\n  creditLine: MediaToolOptions['creditLine']\n  directUploads: MediaToolOptions['directUploads']\n  excludeTagSlugs: string[]\n  locales?: Locale[]\n}\n\nconst ToolOptionsContext = createContext<ContextProps | null>(null)\n\ntype Props = {\n  options?: MediaToolOptions | void\n}\n\nexport const ToolOptionsProvider = ({options, children}: PropsWithChildren<Props>) => {\n  // oxlint-disable-next-line react-compiler\n  const value = useMemo<ContextProps>(() => {\n    let creditLineExcludeSources\n\n    if (options?.creditLine?.excludeSources) {\n      creditLineExcludeSources = Array.isArray(options?.creditLine?.excludeSources)\n        ? options.creditLine.excludeSources\n        : [options?.creditLine?.excludeSources]\n    }\n\n    return {\n      dropzone: {maxSize: options?.maximumUploadSize},\n      components: {\n        details: options?.components?.details,\n      },\n      createTagsOnUpload: options?.createTagsOnUpload ?? true,\n      creditLine: {\n        enabled: options?.creditLine?.enabled || false,\n        excludeSources: creditLineExcludeSources,\n      },\n      directUploads: options?.directUploads ?? true,\n      excludeTagSlugs: options?.excludeTags?.length ? [...options.excludeTags] : [],\n      locales: options?.locales,\n    }\n  }, [\n    options?.creditLine?.enabled,\n    options?.components,\n    options?.createTagsOnUpload,\n    options?.creditLine?.excludeSources,\n    options?.excludeTags,\n    options?.maximumUploadSize,\n    options?.directUploads,\n    options?.locales,\n  ])\n\n  return <ToolOptionsContext.Provider value={value}>{children}</ToolOptionsContext.Provider>\n}\n\nexport const useToolOptions = () => {\n  const context = useContext(ToolOptionsContext)\n\n  if (!context) {\n    throw new Error('useToolOptions must be used within an ToolOptionsProvider')\n  }\n\n  return context\n}\n","import * as z from 'zod'\n\n// Helper to generate localized string schema\nfunction localizedStringSchema(locales?: {id: string}[]) {\n  if (!locales || locales.length === 0) {\n    return z.string().trim().optional()\n  }\n  const shape: Record<string, z.ZodTypeAny> = {}\n  for (const locale of locales) {\n    shape[locale.id] = z.string().trim().optional()\n  }\n  return z.object(shape).passthrough()\n}\n\nexport const tagOptionSchema = z.object({\n  label: z.string().trim().min(1, {message: 'Label cannot be empty'}),\n  value: z.string().trim().min(1, {message: 'Value cannot be empty'}),\n})\n\nexport function getAssetFormSchema(locales?: {id: string}[]) {\n  return z.object({\n    altText: localizedStringSchema(locales),\n    creditLine: localizedStringSchema(locales),\n    description: localizedStringSchema(locales),\n    opt: z.object({\n      media: z.object({\n        tags: z.array(tagOptionSchema).nullable(),\n      }),\n    }),\n    originalFilename: z.string().trim().min(1, {message: 'Filename cannot be empty'}),\n    title: localizedStringSchema(locales),\n  })\n}\n\nexport const assetFormSchema = getAssetFormSchema()\n\nexport const tagFormSchema = z.object({\n  name: z.string().min(1, {message: 'Name cannot be empty'}),\n})\n\nexport const folderFormSchema = z.object({\n  name: z.string().trim().min(1, {message: 'Name cannot be empty'}),\n})\n","import type {SanityDocument} from '@sanity/client'\n\nexport function getUniqueDocuments(documents: SanityDocument[]): SanityDocument[] {\n  const draftIds = documents.reduce(\n    (acc: string[], doc: SanityDocument) =>\n      doc._id.startsWith('drafts.') ? acc.concat(doc._id.slice(7)) : acc,\n    [],\n  )\n\n  const filteredDocuments: SanityDocument[] = documents.filter(\n    (doc: SanityDocument) => !draftIds.includes(doc._id),\n  )\n\n  return filteredDocuments\n}\n","import type {ImageAsset} from '../types'\n\nconst imageDprUrl = (\n  asset: ImageAsset,\n  options: {\n    width: number\n    height?: number\n  },\n): string => {\n  const dpi =\n    typeof window === 'undefined' || !window.devicePixelRatio\n      ? 1\n      : Math.round(window.devicePixelRatio)\n  const imgH = options?.height ? options?.height * Math.max(1, dpi) : undefined\n  const imgW = options.width * Math.max(1, dpi)\n\n  const urlParams = new URLSearchParams()\n  urlParams.append('fit', 'max')\n  urlParams.append('w', imgW.toString())\n  if (imgH) {\n    urlParams.append('h', imgH.toString())\n  }\n\n  return `${asset.url}?${urlParams.toString()}`\n}\n\nexport default imageDprUrl\n","// Recursively sanitize form data:\n// - convert empty strings, undefined values and empty arrays to null (to correctly unset / delete fields)\n// - trim whitespace on string fleids\n\ntype FormData = Record<string, any>\n\nconst sanitizeFormData = (formData: FormData): FormData => {\n  return Object.keys(formData).reduce((acc: FormData, key) => {\n    const val = formData[key]\n\n    // TODO: refactor\n    if (typeof val === 'object' && val !== null && val.constructor !== Array) {\n      acc[key] = sanitizeFormData(val)\n    } else if (val === '' || typeof val === 'undefined' || val?.length === 0) {\n      acc[key] = null\n    } else if (typeof val === 'string' && val) {\n      acc[key] = formData[key].trim()\n    } else {\n      acc[key] = formData[key]\n    }\n\n    return acc\n  }, {})\n}\n\nexport default sanitizeFormData\n","import type {Asset, FileAsset, ImageAsset} from '../types'\n\nexport const isFileAsset = (asset: Asset): asset is FileAsset => {\n  return (asset as FileAsset)._type === 'sanity.fileAsset'\n}\n\nexport const isImageAsset = (asset: Asset): asset is ImageAsset => {\n  return (asset as ImageAsset)._type === 'sanity.imageAsset'\n}\n","import {zodResolver} from '@hookform/resolvers/zod'\nimport type {FieldValues, Resolver} from 'react-hook-form'\n\n/**\n * `@hookform/resolvers/zod` resolves its own `zod` typings through dependency\n * hoisting, which in this monorepo lands on zod v4, while this plugin authors its\n * form schemas with zod v3. The resolver accepts v3 schema instances correctly at\n * runtime, so this thin wrapper only bridges the type-only v3/v4 mismatch. The\n * react-hook-form field types stay fully checked at the call sites.\n */\nexport default function zodFormResolver<TFieldValues extends FieldValues>(\n  schema: unknown,\n): Resolver<TFieldValues> {\n  return zodResolver(\n    schema as Parameters<typeof zodResolver>[0],\n  ) as unknown as Resolver<TFieldValues>\n}\n","import type {ImageAsset} from '../types'\n\nconst getAssetResolution = (asset: ImageAsset) => {\n  return `${asset.metadata.dimensions.width}x${asset.metadata.dimensions.height}px`\n}\n\nexport default getAssetResolution\n","import {type PopoverProps, usePortal} from '@sanity/ui'\n\nexport function usePortalPopoverProps(): PopoverProps {\n  const portal = usePortal()\n\n  return {\n    animate: true,\n    constrainSize: true,\n    floatingBoundary: portal.element,\n    portal: true,\n    referenceBoundary: portal.element,\n  }\n}\n","import {ClipboardIcon} from '@sanity/icons/Clipboard'\nimport {Button, Popover, Text} from '@sanity/ui'\nimport copy from 'copy-to-clipboard'\nimport {useEffect, useRef, useState} from 'react'\n\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\n\ntype Props = {\n  disabled?: boolean\n  url: string\n}\n\nconst ButtonAssetCopy = ({disabled, url}: Props) => {\n  const popoverProps = usePortalPopoverProps()\n  const refPopoverTimeout = useRef<ReturnType<typeof window.setTimeout>>(null)\n  const [popoverVisible, setPopoverVisible] = useState(false)\n\n  const handleClick = () => {\n    if (refPopoverTimeout.current) {\n      clearTimeout(refPopoverTimeout.current)\n    }\n\n    setPopoverVisible(true)\n    copy(url)\n\n    refPopoverTimeout.current = setTimeout(() => {\n      setPopoverVisible(false)\n    }, 1250)\n  }\n\n  // Effects\n  useEffect(() => {\n    return () => {\n      if (refPopoverTimeout.current) {\n        clearTimeout(refPopoverTimeout.current)\n      }\n    }\n  }, [])\n\n  return (\n    <Popover\n      content={\n        <Text muted size={1}>\n          Copied!\n        </Text>\n      }\n      open={popoverVisible}\n      padding={2}\n      placement=\"top\"\n      radius={1}\n      {...popoverProps}\n    >\n      <Button\n        disabled={disabled}\n        fontSize={1}\n        icon={ClipboardIcon}\n        mode=\"ghost\"\n        onClick={handleClick}\n        text=\"Copy URL\"\n      />\n    </Popover>\n  )\n}\n\nexport default ButtonAssetCopy\n","import {DownloadIcon} from '@sanity/icons/Download'\nimport {Box, Button, Flex, Inline, Stack, Text} from '@sanity/ui'\nimport {format} from 'date-fns/format'\nimport filesize from 'filesize'\nimport {type ReactNode} from 'react'\n\nimport type {Asset, AssetItem} from '../../types'\nimport getAssetResolution from '../../utils/getAssetResolution'\nimport {isImageAsset} from '../../utils/typeGuards'\nimport ButtonAssetCopy from '../ButtonAssetCopy'\n\ntype Props = {\n  asset: Asset\n  item?: AssetItem\n}\n\nconst Row = ({label, value}: {label: string; value: ReactNode}) => {\n  return (\n    <Flex justify=\"space-between\">\n      <Text\n        size={1}\n        style={{\n          opacity: 0.8,\n          width: '40%',\n        }}\n        textOverflow=\"ellipsis\"\n      >\n        {label}\n      </Text>\n      <Text\n        size={1}\n        style={{\n          opacity: 0.4,\n          textAlign: 'right',\n          width: '60%',\n        }}\n        textOverflow=\"ellipsis\"\n      >\n        {value}\n      </Text>\n    </Flex>\n  )\n}\n\nconst AssetMetadata = (props: Props) => {\n  const {asset, item} = props\n\n  const exif = asset?.metadata?.exif\n\n  // Callbacks\n  const handleDownload = () => {\n    window.location.href = `${asset.url}?dl=${asset.originalFilename}`\n  }\n\n  return (\n    <Box marginTop={3}>\n      {/* Base */}\n      <Box>\n        <Stack space={3}>\n          <Row label=\"Size\" value={filesize(asset?.size, {base: 10, round: 0})} />\n          <Row label=\"MIME type\" value={asset?.mimeType} />\n          <Row label=\"Extension\" value={asset?.extension?.toUpperCase()} />\n          {isImageAsset(asset) && <Row label=\"Dimensions\" value={getAssetResolution(asset)} />}\n        </Stack>\n      </Box>\n      {/* EXIF */}\n      {exif &&\n        (exif.DateTimeOriginal ||\n          exif.FNumber ||\n          exif.FocalLength ||\n          exif.ExposureTime ||\n          exif.ISO) && (\n          <>\n            {/* Divider */}\n            <Box\n              marginY={4}\n              style={{\n                background: 'var(--card-border-color)',\n                height: '1px',\n                width: '100%',\n              }}\n            />\n            <Box>\n              <Stack space={3}>\n                {exif.ISO && <Row label=\"ISO\" value={exif.ISO} />}\n                {exif.FNumber && <Row label=\"Aperture\" value={`ƒ/${exif.FNumber}`} />}\n                {exif.FocalLength && <Row label=\"Focal length\" value={`${exif.FocalLength}mm`} />}\n                {exif.ExposureTime && (\n                  <Row label=\"Exposure time\" value={`1/${1 / exif.ExposureTime}`} />\n                )}\n                {exif.DateTimeOriginal && (\n                  <Row\n                    label=\"Original date\"\n                    value={format(new Date(exif.DateTimeOriginal), 'PPp')}\n                  />\n                )}\n              </Stack>\n            </Box>\n          </>\n        )}\n\n      {/* Asset actions */}\n      <Box marginTop={5}>\n        <Inline space={2}>\n          {/* Download */}\n          <Button\n            disabled={!item || item?.updating}\n            fontSize={1}\n            icon={DownloadIcon}\n            mode=\"ghost\"\n            onClick={handleDownload}\n            text=\"Download\"\n          />\n          {/* Copy to clipboard */}\n          <ButtonAssetCopy disabled={!item || item?.updating} url={asset.url} />\n        </Inline>\n      </Box>\n    </Box>\n  )\n}\n\nexport default AssetMetadata\n","import {Dialog as SanityDialog} from '@sanity/ui'\nimport {type ComponentProps} from 'react'\n\nconst Dialog = (props: ComponentProps<typeof SanityDialog>) => {\n  // HACK: Temporarily force fixed positioning on all @sanity/ui <Dialog /> components.\n  // The studio is currently setting absolute positioning on all root-level dialogs on the mobile breakpoint,\n  // causing unwanted scroll behaviour.\n  return <SanityDialog {...props} style={{position: 'fixed'}} />\n}\n\nexport default Dialog\n","import type {SanityDocument} from '@sanity/client'\nimport {Box, Button, Card, Stack, Text} from '@sanity/ui'\nimport {Preview, type SchemaType, useSchema} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\ntype Props = {\n  documents: SanityDocument[]\n  isLoading: boolean\n}\n\nconst DocumentList = ({documents, isLoading}: Props) => {\n  const schema = useSchema()\n\n  if (isLoading) {\n    return (\n      <Text muted size={1}>\n        Loading...\n      </Text>\n    )\n  }\n\n  if (documents.length === 0) {\n    return (\n      <Text muted size={1}>\n        No documents are referencing this asset\n      </Text>\n    )\n  }\n\n  return (\n    <Card flex={1} marginBottom={2} padding={2} radius={2} shadow={1}>\n      <Stack space={2}>\n        {documents?.map((doc) => (\n          <ReferringDocument doc={doc} key={doc._id} schemaType={schema.get(doc._type)} />\n        ))}\n      </Stack>\n    </Card>\n  )\n}\n\nconst ReferringDocument = (props: {doc: SanityDocument; schemaType?: SchemaType}) => {\n  const {doc, schemaType} = props\n\n  const {onClick} = useIntentLink({\n    intent: 'edit',\n    params: {id: doc._id},\n  })\n\n  return schemaType ? (\n    <Button key={doc._id} mode=\"bleed\" onClick={onClick} padding={2} style={{width: '100%'}}>\n      <Preview layout=\"default\" schemaType={schemaType} value={doc} />\n    </Button>\n  ) : (\n    <Box padding={2}>\n      <Text size={1}>\n        A document of the unknown type <em>{doc._type}</em>\n      </Text>\n    </Box>\n  )\n}\n\nexport default DocumentList\n","import {Box, Flex, type Theme} from '@sanity/ui'\nimport {type MouseEvent} from 'react'\nimport {defaultStyles, FileIcon as ReactFileIcon} from 'react-file-icon'\nimport type {DefaultExtensionType} from 'react-file-icon'\nimport {styled, css} from 'styled-components'\n\ntype Props = {\n  extension?: string\n  onClick?: (e: MouseEvent) => void\n  width: string\n}\n\n// Force react-file-icon styles\nconst Container = styled(Box)(({theme}: {theme: Theme}) => {\n  return css`\n    text {\n      font-family: ${theme.sanity.fonts.text.family} !important;\n      font-size: 8px !important;\n      font-weight: 500 !important;\n    }\n  `\n})\n\nconst FileIcon = (props: Props) => {\n  const {extension, onClick, width} = props\n\n  return (\n    <Flex align=\"center\" justify=\"center\" onClick={onClick} style={{height: '100%'}}>\n      <Container style={{width}}>\n        {extension ? (\n          <ReactFileIcon\n            extension={extension}\n            {...defaultStyles[extension as DefaultExtensionType]}\n          />\n        ) : (\n          <ReactFileIcon />\n        )}\n      </Container>\n    </Flex>\n  )\n}\n\nexport default FileIcon\n","import {Flex} from '@sanity/ui'\n\nimport type {Asset} from '../../types'\nimport FileIcon from '../FileIcon'\n\ntype Props = {\n  asset: Asset\n}\n\nconst FileAssetPreview = (props: Props) => {\n  const {asset} = props\n\n  if (asset.mimeType.search('audio') === 0) {\n    return (\n      <Flex align=\"center\" justify=\"center\" style={{height: '100%'}}>\n        <audio controls src={asset.url} style={{width: '100%'}} />\n      </Flex>\n    )\n  }\n\n  if (asset.mimeType.search('video') === 0) {\n    return (\n      <video\n        controls\n        src={asset.url}\n        style={{\n          height: '100%',\n          width: '100%',\n        }}\n      />\n    )\n  }\n\n  return <FileIcon extension={asset.extension} width=\"50%\" />\n}\n\nexport default FileAssetPreview\n","import {Box, Button, Text, Tooltip} from '@sanity/ui'\nimport {format} from 'date-fns/format'\nimport {type ReactNode} from 'react'\n\ntype Props = {\n  disabled: boolean\n  isValid: boolean\n  lastUpdated?: string\n  onClick: () => void\n}\n\nconst FormSubmitButton = (props: Props) => {\n  const {disabled, isValid, lastUpdated, onClick} = props\n\n  let content: ReactNode\n  if (isValid) {\n    if (lastUpdated) {\n      content = (\n        <>\n          Last updated\n          <br /> {format(new Date(lastUpdated), 'PPp')}\n        </>\n      )\n    } else {\n      content = 'No unpublished changes'\n    }\n  } else {\n    content =\n      'There are validation errors that need to be fixed before this document can be published'\n  }\n\n  return (\n    <Tooltip\n      animate\n      content={\n        <Box padding={3} style={{maxWidth: '185px'}}>\n          <Text muted size={1}>\n            {content}\n          </Text>\n        </Box>\n      }\n      disabled={'ontouchstart' in window}\n      placement=\"top\"\n      portal\n    >\n      <Box>\n        <Button\n          disabled={disabled}\n          fontSize={1}\n          onClick={onClick}\n          text=\"Save and close\"\n          tone=\"primary\"\n        />\n      </Box>\n    </Tooltip>\n  )\n}\n\nexport default FormSubmitButton\n","import {hues} from '@sanity/color'\nimport {type ThemeColorSchemeKey, studioTheme} from '@sanity/ui'\n\nconst SCHEME_COLORS = {\n  bg: {\n    dark: hues.gray[950].hex,\n    light: hues.gray[50].hex,\n  },\n  bg2: {\n    dark: hues.gray[900].hex,\n    light: hues.gray[100].hex,\n  },\n  inputEnabledBorder: {\n    dark: studioTheme.color.dark.default.input.default.enabled.border,\n    light: studioTheme.color.light.default.input.default.enabled.border,\n  },\n  inputHoveredBorder: {\n    dark: studioTheme.color.dark.default.input.default.hovered.border,\n    light: studioTheme.color.light.default.input.default.hovered.border,\n  },\n  mutedHoveredBg: {\n    dark: studioTheme.color.dark.primary.muted.primary.hovered.bg,\n    light: studioTheme.color.light.primary.muted.primary.hovered.bg,\n  },\n  mutedHoveredFg: {\n    dark: studioTheme.color.dark.primary.muted.primary.hovered.fg,\n    light: studioTheme.color.light.primary.muted.primary.hovered.fg,\n  },\n  mutedSelectedBg: {\n    dark: studioTheme.color.dark.primary.muted.primary.selected.bg,\n    light: studioTheme.color.light.primary.muted.primary.selected.bg,\n  },\n  spotBlue: {\n    dark: studioTheme.color.dark.primary.spot.blue,\n    light: studioTheme.color.light.primary.spot.blue,\n  },\n}\n\ntype SchemeColorKey = keyof typeof SCHEME_COLORS\n\nexport function getSchemeColor(scheme: ThemeColorSchemeKey, colorKey: SchemeColorKey): string {\n  return SCHEME_COLORS[colorKey]?.[scheme]\n}\n","import type {ThemeColorSchemeKey} from '@sanity/ui'\nimport type {MouseEvent} from 'react'\nimport {styled, css} from 'styled-components'\n\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  onClick?: (e: MouseEvent) => void\n  $showCheckerboard?: boolean\n  $scheme?: ThemeColorSchemeKey\n  src: string\n  style?: any\n}\n\nconst Image = styled.img.attrs({crossOrigin: 'anonymous' as const})<Props>`\n  --checkerboard-color: ${(props) =>\n    props.$scheme ? getSchemeColor(props.$scheme, 'bg2') : 'inherit'};\n\n  display: block;\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n\n  ${(props) =>\n    props.$showCheckerboard &&\n    css`\n      background-image:\n        linear-gradient(45deg, var(--checkerboard-color) 25%, transparent 25%),\n        linear-gradient(-45deg, var(--checkerboard-color) 25%, transparent 25%),\n        linear-gradient(45deg, transparent 75%, var(--checkerboard-color) 75%),\n        linear-gradient(-45deg, transparent 75%, var(--checkerboard-color) 75%);\n      background-size: 20px 20px;\n      background-position:\n        0 0,\n        0 10px,\n        10px -10px,\n        -10px 0;\n    `}\n`\n\nexport default Image\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Inline, Text, Tooltip} from '@sanity/ui'\nimport {styled} from 'styled-components'\n\ntype Props = {\n  description?: string\n  error?: string\n  label: string\n  name: string\n}\n\nconst StyledErrorOutlineIcon = styled(ErrorOutlineIcon)(({theme}) => {\n  return {\n    color: theme.sanity.color.spot.red,\n  }\n})\n\nconst FormFieldInputLabel = (props: Props) => {\n  const {description, error, label, name} = props\n\n  return (\n    <>\n      {/* Label */}\n      <Box marginY={3}>\n        <Inline space={2}>\n          <Text as=\"label\" htmlFor={name} size={1} weight=\"semibold\">\n            {label}\n          </Text>\n\n          {/* Error icon + tooltip */}\n          {error && (\n            <Text size={1}>\n              <Tooltip\n                animate\n                content={\n                  <Box padding={2}>\n                    <Text muted size={1}>\n                      <StyledErrorOutlineIcon style={{marginRight: '0.1em'}} />\n                      {error}\n                    </Text>\n                  </Box>\n                }\n                fallbackPlacements={['top', 'left']}\n                placement=\"right\"\n                portal\n              >\n                <StyledErrorOutlineIcon />\n              </Tooltip>\n            </Text>\n          )}\n        </Inline>\n      </Box>\n\n      {/* Description */}\n      {description && (\n        <Box marginY={3}>\n          <Text as=\"label\" htmlFor={name} muted size={1}>\n            {description}\n          </Text>\n        </Box>\n      )}\n    </>\n  )\n}\n\nexport default FormFieldInputLabel\n","import {AddIcon} from '@sanity/icons/Add'\nimport {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Card, Flex, rem, studioTheme, Text, type ThemeColorSchemeKey} from '@sanity/ui'\nimport {components, type StylesConfig} from 'react-select'\nimport {Virtuoso} from 'react-virtuoso'\n\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\nconst {radius: themeRadius, space: themeSpace} = studioTheme\n\nexport const reactSelectStyles = (scheme: ThemeColorSchemeKey): StylesConfig => {\n  return {\n    control: (styles, {isFocused}) => {\n      let boxShadow = `inset 0 0 0 1px var(--card-border-color)`\n      if (isFocused) {\n        boxShadow = `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputEnabledBorder')},\n        0 0 0 1px var(--card-bg-color),\n        0 0 0 3px var(--card-focus-ring-color) !important`\n      }\n\n      return {\n        ...styles,\n        'backgroundColor': 'var(--card-bg-color)',\n        'color': 'inherit',\n        'border': 'none',\n        'borderRadius': themeRadius[1],\n        boxShadow,\n        'margin': 0,\n        'minHeight': '35px',\n        'outline': 'none',\n        'padding': rem(themeSpace[1]!),\n        'transition': 'none',\n        '&:hover': {\n          boxShadow: `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputHoveredBorder')}`,\n        },\n      }\n    },\n    indicatorsContainer: (styles, {isDisabled}) => ({\n      ...styles,\n      opacity: isDisabled ? 0.25 : 1,\n    }),\n    input: (styles) => ({\n      ...styles,\n      color: 'var(--card-fg-color)',\n      fontFamily: studioTheme.fonts.text.family,\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    menuList: (styles) => ({\n      ...styles,\n    }),\n    multiValue: (styles, {isDisabled}) => ({\n      ...styles,\n      backgroundColor: getSchemeColor(scheme, 'mutedHoveredBg'),\n      borderRadius: themeRadius[2],\n      opacity: isDisabled ? 0.5 : 1,\n    }),\n    multiValueLabel: () => ({\n      color: getSchemeColor(scheme, 'mutedHoveredFg'),\n      fontSize: 'inherit',\n      padding: 0,\n    }),\n    multiValueRemove: (styles) => ({\n      ...styles,\n      'borderTopLeftRadius': 0,\n      'borderBottomLeftRadius': 0,\n      'svg': {color: getSchemeColor(scheme, 'mutedHoveredFg')},\n      '&:hover': {\n        backgroundColor: getSchemeColor(scheme, 'mutedSelectedBg'),\n      },\n    }),\n    noOptionsMessage: (styles) => ({\n      ...styles,\n      fontFamily: studioTheme.fonts.text.family,\n      lineHeight: '1em',\n    }),\n    option: (styles, {isFocused}) => ({\n      ...styles,\n      'backgroundColor': isFocused ? getSchemeColor(scheme, 'spotBlue') : 'transparent',\n      'borderRadius': themeRadius[2],\n      'color': isFocused ? getSchemeColor(scheme, 'bg') : 'inherit',\n      'padding': `${rem(themeSpace[1]!)} ${rem(themeSpace[2]!)}`,\n      '&:hover': {\n        backgroundColor: getSchemeColor(scheme, 'spotBlue'),\n        color: getSchemeColor(scheme, 'bg'),\n      },\n    }),\n    placeholder: (styles) => ({\n      ...styles,\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    valueContainer: (styles) => ({\n      ...styles,\n      margin: 0,\n      padding: 0,\n    }),\n  }\n}\n\nconst DropdownIndicator = (props: any) => {\n  return (\n    <components.DropdownIndicator {...props}>\n      <Box paddingX={2}>\n        <Text size={1}>\n          <ChevronDownIcon />\n        </Text>\n      </Box>\n    </components.DropdownIndicator>\n  )\n}\n\nconst Menu = (props: any) => {\n  return (\n    <components.Menu {...props}>\n      <Card radius={1} shadow={2}>\n        {props.children}\n      </Card>\n    </components.Menu>\n  )\n}\n\nconst MenuList = (props: any) => {\n  const {children} = props\n\n  const MAX_ROWS = 5\n  const OPTION_HEIGHT = 37\n\n  if (Array.isArray(children)) {\n    const height =\n      children.length > MAX_ROWS ? OPTION_HEIGHT * MAX_ROWS : children.length * OPTION_HEIGHT\n\n    return (\n      <Virtuoso\n        className=\"media__custom-scrollbar\"\n        itemContent={(index) => {\n          const item = children[index]\n          return <Option {...item.props} />\n        }}\n        style={{height}}\n        totalCount={children.length}\n      />\n    )\n  }\n  return <components.MenuList {...props}>{children}</components.MenuList>\n}\n\nconst MultiValueLabel = (props: any) => {\n  return (\n    <Box padding={2} paddingRight={1}>\n      <Text size={1} weight=\"medium\">\n        <components.MultiValueLabel {...props} />\n      </Text>\n    </Box>\n  )\n}\n\nconst MultiValueRemove = (props: any) => {\n  return (\n    <components.MultiValueRemove {...props}>\n      <CloseIcon color=\"#1f2123\" />\n    </components.MultiValueRemove>\n  )\n}\n\nconst Option = (props: any) => {\n  return (\n    <Box paddingX={1} paddingY={1}>\n      <components.Option {...props}>\n        <Flex align=\"center\">\n          {props.data.__isNew__ && <AddIcon style={{marginRight: '3px'}} />}\n          {props.children}\n        </Flex>\n      </components.Option>\n    </Box>\n  )\n}\n\nexport const reactSelectComponents = {\n  DropdownIndicator,\n  IndicatorSeparator: null,\n  Menu,\n  MenuList,\n  MultiValueLabel,\n  MultiValueRemove,\n  Option,\n}\n","import {Box} from '@sanity/ui'\nimport {Controller} from 'react-hook-form'\nimport CreatableSelect from 'react-select/creatable'\nimport {useColorSchemeValue} from 'sanity'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {reactSelectComponents, reactSelectStyles} from '../../styled/react-select/creatable'\nimport type {TagSelectOption} from '../../types'\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n  control: any\n  description?: string\n  disabled?: boolean\n  error?: string\n  label: string\n  name: string\n  onCreateTag: (tagName: string) => void\n  options: {\n    label: string\n    value: string\n  }[]\n  placeholder?: string\n  value?: TagSelectOption[] | null\n}\n\nconst FormFieldInputTags = (props: Props) => {\n  const {\n    control,\n    description,\n    disabled,\n    error,\n    label,\n    name,\n    onCreateTag,\n    options,\n    placeholder,\n    value,\n  } = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const creating = useTypedSelector((state) => state.tags.creating)\n  const tagsFetching = useTypedSelector((state) => state.tags.fetching)\n\n  return (\n    <Box\n      // HACK: force stacking context to ensure react-select dropdown sits above other fields\n      style={{zIndex: 2}}\n    >\n      {/* Label */}\n      <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n\n      {/* Select */}\n      <Controller\n        control={control}\n        defaultValue={value}\n        name={name}\n        render={({field}) => {\n          const {onBlur, onChange, value: controllerValue} = field\n          // TODO: investigate overriding `onChange` and updating form state manually.\n          // `opt.media.tags` is initialised with `null` as a defaultValue in react-hook-form\n          // Ideally, we'd be able to set `opt.media.tags` as null when all items are cleared, rather than\n          // setting it to an empty array (which is currently causing false positives in denoting whether the form is dirty)\n          //\n          // To illustrate this issue:\n          // - Edit an asset with no tags\n          // - Add a new tag (either an existing one, or create one inline)\n          // - Remove the tag you've just created\n          //\n          // At this point, the form will still be marked as dirty when it shouldnt be\n          return (\n            <CreatableSelect\n              components={reactSelectComponents}\n              instanceId=\"tags\"\n              isClearable={false} // TODO: re-enable when we're able to correctly (manually) re-validate on clear\n              isDisabled={creating || disabled || tagsFetching}\n              isLoading={creating}\n              isMulti\n              name={name}\n              noOptionsMessage={() => 'No tags'}\n              onBlur={onBlur}\n              onChange={onChange}\n              onCreateOption={onCreateTag}\n              options={options}\n              placeholder={tagsFetching ? 'Loading...' : placeholder}\n              styles={reactSelectStyles(scheme)}\n              value={controllerValue}\n            />\n          )\n        }}\n      />\n    </Box>\n  )\n}\n\nexport default FormFieldInputTags\n","import {Box, TextInput} from '@sanity/ui'\nimport {type ChangeEventHandler, type FocusEventHandler, type Ref} from 'react'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n  description?: string\n  disabled?: boolean\n  error?: string\n  label: string\n  name: string\n  onBlur?: FocusEventHandler<HTMLInputElement>\n  onChange?: ChangeEventHandler<HTMLInputElement>\n  placeholder?: string\n  value?: string\n  ref?: Ref<HTMLInputElement>\n}\n\nconst FormFieldInputText = (props: Props) => {\n  const {\n    description,\n    disabled,\n    error,\n    label,\n    name,\n    onBlur,\n    onChange,\n    placeholder,\n    value,\n    ref,\n    ...rest\n  } = props\n\n  return (\n    <Box>\n      {/* Label */}\n      <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n      {/* Input */}\n      <TextInput\n        {...rest}\n        autoComplete=\"off\"\n        autoFocus\n        defaultValue={value}\n        disabled={disabled}\n        id={name}\n        name={name}\n        onBlur={onBlur}\n        onChange={onChange}\n        placeholder={placeholder}\n        ref={ref}\n      />\n    </Box>\n  )\n}\n\nexport default FormFieldInputText\n","import {Box, TextArea} from '@sanity/ui'\nimport {type ChangeEventHandler, type FocusEventHandler, type Ref} from 'react'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n  description?: string\n  disabled?: boolean\n  error?: string\n  label: string\n  name: string\n  onBlur?: FocusEventHandler<HTMLTextAreaElement>\n  onChange?: ChangeEventHandler<HTMLTextAreaElement>\n  placeholder?: string\n  rows?: number\n  value?: string\n  ref?: Ref<HTMLTextAreaElement>\n}\n\nconst FormFieldInputTextarea = (props: Props) => {\n  const {\n    description,\n    disabled,\n    error,\n    label,\n    name,\n    onBlur,\n    onChange,\n    placeholder,\n    rows,\n    value,\n    ref,\n    ...rest\n  } = props\n\n  return (\n    <Box>\n      {/* Label */}\n      <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n\n      {/* Input */}\n      <TextArea\n        {...rest}\n        autoComplete=\"off\"\n        defaultValue={value}\n        disabled={disabled}\n        id={name}\n        name={name}\n        onBlur={onBlur}\n        onChange={onChange}\n        placeholder={placeholder}\n        ref={ref}\n        rows={rows}\n      />\n    </Box>\n  )\n}\n\nexport default FormFieldInputTextarea\n","import {FolderIcon} from '@sanity/icons/Folder'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {Box, Button, Card, Flex, Stack, Tab, TabList, TabPanel, Text} from '@sanity/ui'\nimport {useState} from 'react'\nimport {type Control, type FieldErrors, type UseFormRegister} from 'react-hook-form'\n\nimport type {Asset, AssetFormData, Locale, TagSelectOption} from '../../types'\nimport FormFieldInputLabel from '../FormFieldInputLabel'\nimport FormFieldInputTags from '../FormFieldInputTags'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormFieldInputTextarea from '../FormFieldInputTextarea'\n\ntype LocalizedErrors = Record<string, {message?: string} | undefined>\n\n// When locales are not configured, extract a plain string from a potentially localized field\nfunction toStringField(value: unknown): string | undefined {\n  if (typeof value === 'string') return value\n  if (typeof value === 'object' && value !== null) {\n    const found = Object.values(value as Record<string, string>).find((v) => v)\n    return found || undefined\n  }\n  return undefined\n}\n\nfunction truncateFolderPath(path?: string): string | undefined {\n  const segments = path?.split('/').filter(Boolean)\n  if (!segments || segments.length <= 3) return path\n  return [segments[0], '...', ...segments.slice(-2)].join('/')\n}\n\nexport type DetailsProps = {\n  formUpdating: boolean\n  handleCreateTag: (title: string) => void\n  control: Control<AssetFormData>\n  errors: FieldErrors<AssetFormData>\n  register: UseFormRegister<AssetFormData>\n  allTagOptions: TagSelectOption[]\n  assetTagOptions: TagSelectOption[] | null\n  currentAsset: Asset\n  folderPath?: string\n  folderMissing?: boolean\n  onChangeFolder: () => void\n  onRemoveFolder: () => void\n  creditLine?: {\n    enabled: boolean\n    excludeSources?: string | string[] | undefined\n  }\n  locales?: Locale[]\n}\n\nexport default function Details({\n  formUpdating,\n  handleCreateTag,\n  control,\n  errors,\n  register,\n  allTagOptions,\n  assetTagOptions,\n  currentAsset,\n  folderPath,\n  folderMissing,\n  onChangeFolder,\n  onRemoveFolder,\n  creditLine,\n  locales,\n}: DetailsProps) {\n  'use no memo'\n  // React Compiler memoizes the register() field JSX using asset-derived deps only.\n  // That can leave Save stuck disabled while the DOM still updates (uncontrolled inputs).\n  // Tags work because they use Controller; string fields use register and need this opt-out.\n\n  const hasLocales = locales && locales.length > 0\n  const [activeLocaleTab, setActiveLocaleTab] = useState(0)\n  const folderId = currentAsset?.opt?.media?.folder?._ref\n  const folderLabel =\n    truncateFolderPath(folderPath) || (folderMissing ? 'Folder no longer exists' : 'No folder')\n\n  return (\n    <Stack space={3}>\n      {/* Tags */}\n      <FormFieldInputTags\n        control={control}\n        disabled={formUpdating}\n        error={errors?.opt?.media?.tags?.message}\n        label=\"Tags\"\n        name=\"opt.media.tags\"\n        onCreateTag={handleCreateTag}\n        options={allTagOptions}\n        placeholder=\"Select or create...\"\n        value={assetTagOptions}\n      />\n      {/* Folder */}\n      <Box>\n        <FormFieldInputLabel label=\"Folder\" name=\"folder\" />\n        <Card border padding={2} radius={2}>\n          <Flex align=\"center\" gap={3} justify=\"space-between\">\n            <Flex\n              align=\"center\"\n              gap={2}\n              flex={1}\n              style={{minWidth: 0, overflowX: 'auto', whiteSpace: 'nowrap', overflowY: 'hidden'}}\n            >\n              <FolderIcon />\n              <Text muted={!folderId} size={1}>\n                {folderLabel}\n              </Text>\n            </Flex>\n            {folderId && (\n              <Button\n                aria-label=\"Remove from folder\"\n                disabled={formUpdating}\n                fontSize={1}\n                icon={TrashIcon}\n                mode=\"bleed\"\n                onClick={onRemoveFolder}\n                padding={2}\n                tone=\"critical\"\n                type=\"button\"\n              />\n            )}\n            <Button\n              padding={2}\n              disabled={formUpdating}\n              fontSize={1}\n              mode=\"ghost\"\n              onClick={onChangeFolder}\n              text={folderId ? 'Change folder' : 'Add to folder'}\n              type=\"button\"\n            />\n          </Flex>\n        </Card>\n      </Box>\n      {/* Filename */}\n      <FormFieldInputText\n        {...register('originalFilename')}\n        disabled={formUpdating}\n        error={errors?.originalFilename?.message}\n        label=\"Filename\"\n        name=\"originalFilename\"\n        value={currentAsset?.originalFilename}\n      />\n      {/* Localized fields grouped by language */}\n      {hasLocales ? (\n        <Card marginTop={2} shadow={1} padding={3} radius={1}>\n          <Stack space={2}>\n            <TabList space={2}>\n              {locales.map((locale, idx) => (\n                <Tab\n                  key={locale.id}\n                  id={`locale-tab-${locale.id}`}\n                  aria-controls={`locale-panel-${locale.id}`}\n                  selected={activeLocaleTab === idx}\n                  onClick={() => setActiveLocaleTab(idx)}\n                  label={locale.title}\n                />\n              ))}\n            </TabList>\n            {locales.map((locale, idx) => (\n              <TabPanel\n                key={locale.id}\n                id={`locale-panel-${locale.id}`}\n                aria-labelledby={`locale-tab-${locale.id}`}\n                hidden={activeLocaleTab !== idx}\n              >\n                <Stack space={3}>\n                  <FormFieldInputText\n                    {...register(`title.${locale.id}` as const)}\n                    disabled={formUpdating}\n                    error={(errors?.title as LocalizedErrors)?.[locale.id]?.message}\n                    label=\"Title\"\n                    name={`title.${locale.id}`}\n                  />\n                  <FormFieldInputText\n                    {...register(`altText.${locale.id}` as const)}\n                    disabled={formUpdating}\n                    error={(errors?.altText as LocalizedErrors)?.[locale.id]?.message}\n                    label=\"Alt Text\"\n                    name={`altText.${locale.id}`}\n                  />\n                  <FormFieldInputTextarea\n                    {...register(`description.${locale.id}` as const)}\n                    disabled={formUpdating}\n                    error={(errors?.description as LocalizedErrors)?.[locale.id]?.message}\n                    label=\"Description\"\n                    name={`description.${locale.id}`}\n                    rows={5}\n                  />\n                  {creditLine?.enabled && (\n                    <FormFieldInputText\n                      {...register(`creditLine.${locale.id}` as const)}\n                      error={(errors?.creditLine as LocalizedErrors)?.[locale.id]?.message}\n                      label=\"Credit\"\n                      name={`creditLine.${locale.id}`}\n                      disabled={\n                        formUpdating ||\n                        creditLine?.excludeSources?.includes(currentAsset?.['source']?.name)\n                      }\n                    />\n                  )}\n                </Stack>\n              </TabPanel>\n            ))}\n          </Stack>\n        </Card>\n      ) : (\n        <>\n          <FormFieldInputText\n            {...register('title')}\n            disabled={formUpdating}\n            error={errors?.title?.message}\n            label=\"Title\"\n            name=\"title\"\n            value={toStringField(currentAsset?.title)}\n          />\n          <FormFieldInputText\n            {...register('altText')}\n            disabled={formUpdating}\n            error={errors?.altText?.message}\n            label=\"Alt Text\"\n            name=\"altText\"\n            value={toStringField(currentAsset?.altText)}\n          />\n          <FormFieldInputTextarea\n            {...register('description')}\n            disabled={formUpdating}\n            error={errors?.description?.message}\n            label=\"Description\"\n            name=\"description\"\n            rows={5}\n          />\n          {creditLine?.enabled && (\n            <FormFieldInputText\n              {...register('creditLine')}\n              error={errors?.creditLine?.message}\n              label=\"Credit\"\n              name=\"creditLine\"\n              value={toStringField(currentAsset?.creditLine)}\n              disabled={\n                formUpdating || creditLine?.excludeSources?.includes(currentAsset?.['source']?.name)\n              }\n            />\n          )}\n        </>\n      )}\n    </Stack>\n  )\n}\n","import type {MutationEvent} from '@sanity/client'\nimport {Box, Button, Card, Flex, Stack, Tab, TabList, TabPanel, Text} from '@sanity/ui'\nimport groq from 'groq'\nimport {type ReactNode, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {type SubmitHandler, useForm, useFormState} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\nimport {WithReferringDocuments, useColorSchemeValue, useDocumentStore} from 'sanity'\n\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport {getAssetFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {assetsActions, selectAssetById} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {selectFolderPathById} from '../../modules/folders'\nimport {selectTags, selectTagSelectOptions, tagsActions} from '../../modules/tags'\nimport type {Asset, AssetFormData, DialogAssetEditProps, TagSelectOption} from '../../types'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport {getUniqueDocuments} from '../../utils/getUniqueDocuments'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport AssetMetadata from '../AssetMetadata'\nimport Dialog from '../Dialog'\nimport DocumentList from '../DocumentList'\nimport FileAssetPreview from '../FileAssetPreview'\nimport FormSubmitButton from '../FormSubmitButton'\nimport Image from '../Image'\nimport Details, {type DetailsProps} from './Details'\n\nfunction renderDefaultDetails(props: DetailsProps) {\n  return <Details {...props} />\n}\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogAssetEditProps\n}\n\nconst DialogAssetEdit = (props: Props) => {\n  const {\n    children,\n    dialog: {assetId, id, lastCreatedTag, lastRemovedTagIds},\n  } = props\n\n  const client = useVersionedClient()\n  const scheme = useColorSchemeValue()\n\n  const documentStore = useDocumentStore()\n\n  const dispatch = useDispatch()\n  const assetItem = useTypedSelector((state) => selectAssetById(state, String(assetId))) // TODO: check casting\n  const tags = useTypedSelector(selectTags)\n\n  const assetUpdatedPrev = useRef<string | undefined>(undefined)\n\n  // Generate a snapshot of the current asset\n  const [assetSnapshot, setAssetSnapshot] = useState(assetItem?.asset)\n  const [tabSection, setTabSection] = useState<'details' | 'references'>('details')\n\n  const currentAsset = assetItem ? assetItem?.asset : assetSnapshot\n  const allTagOptions = getTagSelectOptions(tags)\n\n  const assetTagOptions = useTypedSelector(selectTagSelectOptions(currentAsset))\n  const currentFolderId = currentAsset?.opt?.media?.folder?._ref ?? null\n  const currentFolderPath = useTypedSelector((state) =>\n    selectFolderPathById(state, currentFolderId),\n  )\n\n  // Check if credit line options are configured\n  const {creditLine, components: {details: CustomDetails} = {}, locales} = useToolOptions()\n\n  const generateDefaultValues = useCallback(\n    (asset?: Asset): AssetFormData => {\n      let imageDescription: string | undefined\n      if (asset && isImageAsset(asset)) {\n        const raw = asset.metadata?.image?.['ImageDescription']\n        if (typeof raw === 'string') {\n          imageDescription = raw\n        }\n      }\n\n      if (locales && locales.length > 0) {\n        const makeLocaleObj = (field?: Record<string, string> | string, fallback = '') => {\n          const obj: Record<string, string> = {}\n          for (let i = 0; i < locales.length; i++) {\n            const locale = locales[i]!\n            // Prefer key presence over truthiness so an intentional empty string\n            // (e.g. `{en: ''}`) is preserved and does not fall through to EXIF.\n            if (typeof field === 'object' && field && locale.id in field) {\n              obj[locale.id] = field[locale.id] ?? ''\n            } else if (typeof field === 'string') {\n              // Only populate the first locale to avoid spreading a legacy value\n              // across all languages; the user should fill in other translations manually\n              obj[locale.id] = i === 0 ? field : ''\n            } else if (typeof field === 'object' && field) {\n              // Localized object present but this locale key is missing: leave empty.\n              // Do not apply EXIF fallback to partial translations.\n              obj[locale.id] = ''\n            } else {\n              // No description set at all — EXIF fallback only for the first locale.\n              obj[locale.id] = i === 0 ? fallback : ''\n            }\n          }\n          return obj\n        }\n        return {\n          altText: makeLocaleObj(asset?.altText),\n          creditLine: makeLocaleObj(asset?.creditLine),\n          description: makeLocaleObj(asset?.description, imageDescription),\n          originalFilename: asset?.originalFilename || '',\n          opt: {media: {tags: assetTagOptions}},\n          title: makeLocaleObj(asset?.title),\n        }\n      }\n      // Normalize: if a field is a localized object but locales are disabled, pick first non-empty value\n      const flattenField = (field: unknown, fallback = ''): string => {\n        if (typeof field === 'string') return field\n        if (typeof field === 'object' && field !== null) {\n          const values = Object.values(field as Record<string, string>)\n          return values.find((v) => v) || fallback\n        }\n        return fallback\n      }\n      return {\n        altText: flattenField(asset?.altText),\n        creditLine: flattenField(asset?.creditLine),\n        description: flattenField(asset?.description, imageDescription),\n        originalFilename: asset?.originalFilename || '',\n        opt: {media: {tags: assetTagOptions}},\n        title: flattenField(asset?.title),\n      }\n    },\n    [assetTagOptions, locales],\n  )\n\n  const {control, getValues, handleSubmit, register, reset, setValue} = useForm<AssetFormData>({\n    defaultValues: generateDefaultValues(assetItem?.asset),\n    mode: 'onChange',\n    resolver: zodFormResolver<AssetFormData>(getAssetFormSchema(locales)),\n  })\n\n  // Subscribe via useFormState so React Compiler cannot skip formState Proxy reads\n  // that gate the Save button (isDirty / isValid).\n  const {errors, isDirty, isValid} = useFormState({control})\n\n  const formUpdating = !assetItem || assetItem?.updating\n\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.remove({id}))\n  }, [dispatch, id])\n\n  const handleDelete = useCallback(() => {\n    if (!assetItem?.asset) {\n      return\n    }\n\n    dispatch(\n      dialogActions.showConfirmDeleteAssets({\n        assets: [assetItem],\n        closeDialogId: assetItem?.asset._id,\n      }),\n    )\n  }, [assetItem, dispatch])\n\n  const handleAssetUpdate = useCallback((update: MutationEvent) => {\n    const {result, transition} = update\n    if (result && transition === 'update') {\n      // Regenerate asset snapshot\n      setAssetSnapshot(result as Asset)\n    }\n  }, [])\n\n  const handleCreateTag = useCallback(\n    (tagName: string) => {\n      // Dispatch action to create new tag\n      dispatch(\n        tagsActions.createRequest({\n          assetId: currentAsset?._id,\n          name: tagName,\n        }),\n      )\n    },\n    [currentAsset?._id, dispatch],\n  )\n\n  const handleChangeFolder = useCallback(() => {\n    if (!assetItem) {\n      return\n    }\n\n    dispatch(DIALOG_ACTIONS.showFolderMove({assets: [assetItem], folderId: currentFolderId}))\n  }, [assetItem, currentFolderId, dispatch])\n\n  const handleRemoveFolder = useCallback(() => {\n    if (!assetItem || !currentFolderId) {\n      return\n    }\n\n    dispatch(assetsActions.folderSetRequest({assets: [assetItem], folderId: null}))\n  }, [assetItem, currentFolderId, dispatch])\n\n  // Detect if asset has localized fields (objects) with keys not in the configured locales\n  const hasOrphanedLocales = useMemo(() => {\n    if (!currentAsset) return false\n    const isLocaleObj = (v: unknown) => typeof v === 'object' && v !== null && !Array.isArray(v)\n    const fields = [\n      currentAsset.title,\n      currentAsset.altText,\n      currentAsset.description,\n      ...(currentAsset._type === 'sanity.imageAsset' ? [currentAsset.creditLine] : []),\n    ]\n    const anyLocalized = fields.some((f) => isLocaleObj(f))\n    if (!anyLocalized) return false\n    if (!locales || locales.length === 0) return true\n    const configuredIds = new Set(locales.map((l) => l.id))\n    return fields.some((f) => {\n      if (!isLocaleObj(f)) return false\n      return Object.keys(f as object).some((k) => !configuredIds.has(k))\n    })\n  }, [currentAsset, locales])\n\n  const handleCleanupLocales = useCallback(async () => {\n    if (!currentAsset) return\n\n    const cleanField = (field: unknown): unknown => {\n      if (typeof field !== 'object' || field === null || Array.isArray(field)) return field\n      const obj = field as Record<string, string>\n      if (!locales || locales.length === 0) {\n        // Pick the first non-empty value sorted by key for determinism\n        const sorted = Object.keys(obj).sort()\n        return sorted.map((k) => obj[k]).find((v) => v) || ''\n      }\n      const configuredIds = new Set(locales.map((l) => l.id))\n      const cleaned: Record<string, string> = {}\n      for (const [key, val] of Object.entries(obj)) {\n        if (configuredIds.has(key)) cleaned[key] = val\n      }\n      return cleaned\n    }\n\n    await client\n      .patch(currentAsset._id)\n      .set({\n        title: cleanField(currentAsset.title),\n        altText: cleanField(currentAsset.altText),\n        description: cleanField(currentAsset.description),\n        ...(currentAsset._type === 'sanity.imageAsset' && {\n          creditLine: cleanField(currentAsset.creditLine),\n        }),\n      })\n      .commit()\n  }, [client, currentAsset, locales])\n\n  // Submit react-hook-form\n  const onSubmit: SubmitHandler<AssetFormData> = useCallback(\n    (formData) => {\n      if (!assetItem?.asset) {\n        return\n      }\n\n      const sanitizedFormData = sanitizeFormData(formData)\n\n      // Keep an intentionally cleared description as '' (not null) so the EXIF\n      // ImageDescription fallback does not refill it the next time the dialog opens.\n      if (formData.description === '') {\n        sanitizedFormData['description'] = ''\n      }\n\n      dispatch(\n        assetsActions.updateRequest({\n          asset: assetItem?.asset,\n          closeDialogId: assetItem?.asset._id,\n          formData: {\n            ...sanitizedFormData,\n            // Map tags to sanity references\n            opt: {\n              media: {\n                ...sanitizedFormData['opt'].media,\n                tags:\n                  sanitizedFormData['opt'].media.tags?.map((tag: TagSelectOption) => ({\n                    _ref: tag.value,\n                    _type: 'reference',\n                    _weak: true,\n                  })) || null,\n              },\n            },\n          },\n        }),\n      )\n    },\n    [assetItem?.asset, dispatch],\n  )\n\n  // Listen for asset mutations and update snapshot\n  useEffect(() => {\n    if (!assetItem?.asset) {\n      return undefined\n    }\n\n    // Remember that Sanity listeners ignore joins, order clauses and projections\n    const subscriptionAsset = client\n      .listen(groq`*[_id == $id]`, {id: assetItem?.asset._id})\n      .subscribe(handleAssetUpdate)\n\n    return () => {\n      subscriptionAsset?.unsubscribe()\n    }\n  }, [assetItem?.asset, client, handleAssetUpdate])\n\n  // Update tags form field (react-select) when a new _inline_ tag has been created\n  useEffect(() => {\n    if (lastCreatedTag) {\n      const existingTags = (getValues('opt.media.tags') as TagSelectOption[]) || []\n      const updatedTags = existingTags.concat([lastCreatedTag])\n      setValue('opt.media.tags', updatedTags, {shouldDirty: true})\n    }\n  }, [getValues, lastCreatedTag, setValue])\n\n  // Update tags form field (react-select) when an _inline_ tag has been removed elsewhere\n  useEffect(() => {\n    if (lastRemovedTagIds) {\n      const existingTags = (getValues('opt.media.tags') as TagSelectOption[]) || []\n      const updatedTags = existingTags.filter((tag) => {\n        return !lastRemovedTagIds.includes(tag.value)\n      })\n\n      setValue('opt.media.tags', updatedTags, {shouldDirty: true})\n    }\n  }, [getValues, lastRemovedTagIds, setValue])\n\n  // Reset react-hook-form local state on mount and every time the asset has been updated elsewhere\n  useEffect(() => {\n    if (assetUpdatedPrev.current !== assetItem?.asset._updatedAt) {\n      reset(generateDefaultValues(assetItem?.asset))\n    }\n    assetUpdatedPrev.current = assetItem?.asset._updatedAt\n  }, [assetItem?.asset, generateDefaultValues, reset])\n\n  const footer = (\n    <Box padding={3}>\n      <Stack space={3}>\n        {hasOrphanedLocales && (\n          <Card padding={3} radius={2} shadow={1} tone=\"caution\">\n            <Flex align=\"center\" justify=\"space-between\" gap={3}>\n              <Text size={1}>\n                This asset has localized fields that are no longer configured. Clean them up to\n                avoid validation errors.\n              </Text>\n              <Button\n                fontSize={1}\n                mode=\"ghost\"\n                onClick={handleCleanupLocales}\n                text=\"Cleanup localized fields\"\n                tone=\"caution\"\n              />\n            </Flex>\n          </Card>\n        )}\n        <Flex justify=\"space-between\">\n          {/* Delete button */}\n          <Button\n            disabled={formUpdating}\n            fontSize={1}\n            mode=\"bleed\"\n            onClick={handleDelete}\n            text=\"Delete\"\n            tone=\"critical\"\n          />\n\n          {/* Submit button */}\n          <FormSubmitButton\n            disabled={formUpdating || !isDirty || !isValid || hasOrphanedLocales}\n            isValid={isValid}\n            lastUpdated={currentAsset?._updatedAt}\n            onClick={handleSubmit(onSubmit)}\n          />\n        </Flex>\n      </Stack>\n    </Box>\n  )\n\n  if (!currentAsset) {\n    return null\n  }\n\n  const detailsProps = {\n    control,\n    errors,\n    formUpdating,\n    register,\n    setValue,\n    assetTagOptions,\n    allTagOptions,\n    handleCreateTag,\n    currentAsset,\n    folderPath: currentFolderPath,\n    folderMissing: !!currentFolderId && !currentFolderPath,\n    onChangeFolder: handleChangeFolder,\n    onRemoveFolder: handleRemoveFolder,\n    creditLine,\n    locales,\n  }\n\n  return (\n    <Dialog animate footer={footer} header=\"Asset details\" id={id} onClose={handleClose} width={3}>\n      {/*\n        We reverse direction to ensure the download button doesn't appear (in the DOM) before other tabbable items.\n        This ensures that the dialog doesn't scroll down to the download button (which on smaller screens, can sometimes\n        be below the fold).\n      */}\n      <Flex direction={['column-reverse', 'column-reverse', 'row-reverse']}>\n        <Box flex={1} marginTop={[5, 5, 0]} padding={4}>\n          <WithReferringDocuments documentStore={documentStore} id={currentAsset._id}>\n            {({isLoading, referringDocuments}) => {\n              const uniqueReferringDocuments = getUniqueDocuments(referringDocuments)\n              return (\n                <>\n                  {/* Tabs */}\n                  <TabList space={2}>\n                    <Tab\n                      aria-controls=\"details-panel\"\n                      disabled={formUpdating}\n                      id=\"details-tab\"\n                      label=\"Details\"\n                      onClick={() => setTabSection('details')}\n                      selected={tabSection === 'details'}\n                      size={2}\n                    />\n                    <Tab\n                      aria-controls=\"references-panel\"\n                      disabled={formUpdating}\n                      id=\"references-tab\"\n                      label={`References${\n                        !isLoading && Array.isArray(uniqueReferringDocuments)\n                          ? ` (${uniqueReferringDocuments.length})`\n                          : ''\n                      }`}\n                      onClick={() => setTabSection('references')}\n                      selected={tabSection === 'references'}\n                      size={2}\n                    />\n                  </TabList>\n\n                  {/* Form fields */}\n                  <Box as=\"form\" marginTop={4} onSubmit={handleSubmit(onSubmit)}>\n                    {/* Deleted notification */}\n                    {!assetItem && (\n                      <Card marginBottom={3} padding={3} radius={2} shadow={1} tone=\"critical\">\n                        <Text size={1}>This file cannot be found – it may have been deleted.</Text>\n                      </Card>\n                    )}\n\n                    {/* Hidden button to enable enter key submissions */}\n                    <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n                    {/* Panel: details */}\n                    <TabPanel\n                      aria-labelledby=\"details\"\n                      hidden={tabSection !== 'details'}\n                      id=\"details-panel\"\n                    >\n                      {CustomDetails ? (\n                        <CustomDetails\n                          {...detailsProps}\n                          renderDefaultDetails={renderDefaultDetails}\n                        />\n                      ) : (\n                        <Details {...detailsProps} />\n                      )}\n                    </TabPanel>\n\n                    {/* Panel: References */}\n                    <TabPanel\n                      aria-labelledby=\"references\"\n                      hidden={tabSection !== 'references'}\n                      id=\"references-panel\"\n                    >\n                      <Box marginTop={5}>\n                        {assetItem?.asset && (\n                          <DocumentList\n                            documents={uniqueReferringDocuments}\n                            isLoading={isLoading}\n                          />\n                        )}\n                      </Box>\n                    </TabPanel>\n                  </Box>\n                </>\n              )\n            }}\n          </WithReferringDocuments>\n        </Box>\n\n        <Box flex={1} padding={4}>\n          <Box style={{aspectRatio: '1'}}>\n            {/* File */}\n            {isFileAsset(currentAsset) && <FileAssetPreview asset={currentAsset} />}\n\n            {/* Image */}\n            {isImageAsset(currentAsset) && (\n              <Image\n                draggable={false}\n                $scheme={scheme}\n                $showCheckerboard={!currentAsset?.metadata?.isOpaque}\n                src={imageDprUrl(currentAsset, {height: 600, width: 600})}\n              />\n            )}\n          </Box>\n\n          {/* Metadata */}\n          {currentAsset && (\n            <Box marginTop={4}>\n              <AssetMetadata asset={currentAsset} item={assetItem} />\n            </Box>\n          )}\n        </Box>\n      </Flex>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogAssetEdit\n","import {createSelector} from '@reduxjs/toolkit'\n\nimport type {CardAssetData, CardFolderData, CardUploadData} from '../types'\nimport {selectCurrentFolderChildren} from './folders'\nimport type {RootReducerState} from './types'\n\nexport const selectCombinedItems = createSelector(\n  [\n    (state: RootReducerState) => state.assets.allIds,\n    (state: RootReducerState) => state.uploads.allIds,\n    selectCurrentFolderChildren,\n  ],\n  (assetIds, uploadIds, folderChildren) => {\n    const assetItems = assetIds.map((id): CardAssetData => ({id, type: 'asset'}))\n    const folderItems = folderChildren.map(\n      (folder): CardFolderData => ({\n        id: `folder:${folder.id}`,\n        folderId: folder.id,\n        name: folder.name,\n        path: folder.path,\n        totalCount: folder.totalCount,\n        type: 'folder',\n      }),\n    )\n    const uploadItems = uploadIds.map((id): CardUploadData => ({id, type: 'upload'}))\n    const combinedItems: (CardAssetData | CardFolderData | CardUploadData)[] = [\n      ...folderItems,\n      ...uploadItems,\n      ...assetItems,\n    ]\n    return combinedItems\n  },\n)\n","import {isHotkey} from 'is-hotkey-esm'\nimport {type RefObject, useCallback, useEffect, useRef} from 'react'\n\nconst useKeyPress = (hotkey: string, onPress?: () => void): RefObject<boolean> => {\n  const keyPressed = useRef(false)\n\n  // If pressed key is our target key then set to true\n  const downHandler = useCallback(\n    (e: KeyboardEvent) => {\n      if (isHotkey(hotkey, e)) {\n        keyPressed.current = true\n        if (onPress) {\n          onPress()\n        }\n      }\n    },\n    [hotkey, onPress],\n  )\n\n  // If released key is our target key then set to false\n  const upHandler = useCallback(() => {\n    keyPressed.current = false\n  }, [])\n\n  // Add event listeners\n  useEffect(() => {\n    window.addEventListener('keydown', downHandler)\n    window.addEventListener('keyup', upHandler)\n    // Remove event listeners on cleanup\n    return () => {\n      window.removeEventListener('keydown', downHandler)\n      window.removeEventListener('keyup', upHandler)\n    }\n  }, [downHandler, upHandler])\n\n  return keyPressed\n}\n\nexport default useKeyPress\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {WarningFilledIcon} from '@sanity/icons/WarningFilled'\nimport {\n  Box,\n  Checkbox,\n  Container,\n  Flex,\n  Spinner,\n  Text,\n  type Theme,\n  type ThemeColorSchemeKey,\n  Tooltip,\n  useToast,\n} from '@sanity/ui'\nimport {memo, type MouseEvent, type RefObject} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetById, selectAssetsPicked} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\ntype Props = {\n  id: string\n  selected: boolean\n  source?: string\n}\n\nconst CardWrapper = styled(Flex)`\n  box-sizing: border-box;\n  height: 100%;\n  overflow: hidden;\n  position: relative;\n  width: 100%;\n`\n\nconst CardContainer = styled(Flex)<{$picked?: boolean; theme: Theme; $updating?: boolean}>(({\n  $picked,\n  theme,\n  $updating,\n}) => {\n  return css`\n    border: 1px solid transparent;\n    height: 100%;\n    pointer-events: ${$updating ? 'none' : 'auto'};\n    position: relative;\n    transition: all 300ms;\n    user-select: none;\n    width: 100%;\n\n    border: ${\n      $picked ? `1px solid ${theme.sanity.color.spot.orange} !important` : '1px solid inherit'\n    };\n\n    ${\n      !$updating &&\n      css`\n        @media (hover: hover) and (pointer: fine) {\n          &:hover {\n            border: 1px solid var(--card-border-color);\n          }\n        }\n      `\n    }\n  `\n})\n\nconst ContextActionContainer = styled<typeof Flex, {$scheme: ThemeColorSchemeKey}>(Flex)(({\n  $scheme,\n}) => {\n  return css`\n    cursor: pointer;\n    height: ${PANEL_HEIGHT}px;\n    transition: all 300ms;\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${getSchemeColor($scheme, 'bg')};\n      }\n    }\n  `\n})\n\nconst StyledWarningOutlineIcon = styled(WarningFilledIcon)(({theme}) => {\n  return {\n    color: theme.sanity.color.spot.red,\n  }\n})\n\nconst CardAsset = (props: Props) => {\n  const {id, selected, source} = props\n\n  const scheme = useColorSchemeValue()\n  const toast = useToast()\n\n  // Refs\n  const shiftPressed: RefObject<boolean> = useKeyPress('shift')\n\n  // Redux\n  const dispatch = useDispatch()\n  const lastPicked = useTypedSelector((state) => state.assets.lastPicked)\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n  const item = useTypedSelector((state) => selectAssetById(state, id))\n  // Dialog carries the replace target so search refetch (which clears allIds/picks) is safe.\n  const dialogReplaceAssetId = useTypedSelector((state) => {\n    if (source !== 'replace-asset') {\n      return undefined\n    }\n    const dialog = state.dialog.items.find((d) => d.type === 'dialogAllAssets')\n    return dialog?.type === 'dialogAllAssets' ? dialog.assetId : undefined\n  })\n\n  const asset = item?.asset\n  const error = item?.error\n  const isOpaque = item?.asset?.metadata?.isOpaque\n  const picked = item?.picked\n  const updating = item?.updating\n\n  // Prefer dialog assetId; fall back to the single currently-picked asset (not lastPicked).\n  const assetToReplaceId =\n    dialogReplaceAssetId ??\n    (source === 'replace-asset' && assetsPicked.length === 1\n      ? assetsPicked[0]?.asset._id\n      : undefined)\n\n  const assetToReplace = useTypedSelector((state) =>\n    assetToReplaceId ? selectAssetById(state, assetToReplaceId) : undefined,\n  )\n\n  const {isMultiSelect, onSelect} = useAssetSourceActions()\n\n  // Short circuit if no asset is available\n  if (!asset) {\n    return null\n  }\n\n  const handleReplaceAsset = () => {\n    if (!assetToReplaceId || !isImageAsset(asset) || assetToReplace?.updating) {\n      return\n    }\n\n    dispatch(assetsActions.updateImageReferences({asset, id: assetToReplaceId}))\n    toast.push({\n      status: 'info',\n      title:\n        'Updating in progress. Depending on the amount of changes, this could take a few minutes.',\n    })\n    dispatch(dialogActions.clear())\n  }\n\n  // Callbacks\n  const handleAssetClick = (e: MouseEvent<HTMLDivElement>) => {\n    e.stopPropagation()\n\n    if (source === 'replace-asset') {\n      handleReplaceAsset()\n      return\n    }\n\n    if (selected) {\n      return\n    }\n\n    if (onSelect && !isMultiSelect) {\n      onSelect([\n        {\n          kind: 'assetDocumentId',\n          value: asset._id,\n        },\n      ])\n    } else if (onSelect && isMultiSelect) {\n      if (shiftPressed.current && !picked) {\n        dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n      } else {\n        dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n      }\n    } else if (shiftPressed.current) {\n      if (picked) {\n        dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n      } else {\n        dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n      }\n    } else {\n      dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n    }\n  }\n\n  const handleContextActionClick = (e: MouseEvent) => {\n    e.stopPropagation()\n\n    if (source === 'replace-asset') {\n      handleReplaceAsset()\n      return\n    }\n\n    if (selected) {\n      return\n    }\n\n    if (onSelect && !isMultiSelect) {\n      dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n    } else if (shiftPressed.current && !picked) {\n      dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n    } else {\n      dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n    }\n  }\n\n  const opacityContainer = updating ? 0.5 : 1\n  const opacityPreview = selected || updating ? 0.25 : 1\n\n  return (\n    <CardWrapper padding={1}>\n      <CardContainer direction=\"column\" $picked={picked} $updating={item.updating}>\n        {/* Image */}\n        <Box\n          flex={1}\n          style={{\n            cursor: selected ? 'default' : 'pointer',\n            position: 'relative',\n          }}\n        >\n          <div\n            data-testid={`media-asset-card-${asset._id}`}\n            onClick={handleAssetClick}\n            style={{height: '100%', opacity: opacityPreview}}\n          >\n            {/* File icon */}\n            {isFileAsset(asset) && <FileIcon extension={asset.extension} width=\"80px\" />}\n\n            {/* Image */}\n            {isImageAsset(asset) && (\n              <Image\n                draggable={false}\n                $scheme={scheme}\n                $showCheckerboard={!isOpaque}\n                src={imageDprUrl(asset, {height: 250, width: 250})}\n                style={{\n                  draggable: false,\n                  transition: 'opacity 1000ms',\n                }}\n              />\n            )}\n          </div>\n\n          {/* Selected check icon */}\n          {selected && !updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                opacity: opacityContainer,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Text size={2}>\n                <CheckmarkCircleIcon />\n              </Text>\n            </Flex>\n          )}\n\n          {/* Spinner */}\n          {updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Spinner />\n            </Flex>\n          )}\n        </Box>\n\n        {/* Footer */}\n        <ContextActionContainer\n          align=\"center\"\n          onClick={handleContextActionClick}\n          paddingX={1}\n          $scheme={scheme}\n          style={{opacity: opacityContainer}}\n        >\n          {onSelect && !isMultiSelect ? (\n            <EditIcon\n              style={{\n                flexShrink: 0,\n                opacity: 0.5,\n              }}\n            />\n          ) : (\n            <Checkbox\n              checked={picked}\n              readOnly\n              style={{\n                flexShrink: 0,\n                pointerEvents: 'none',\n                transform: 'scale(0.8)',\n              }}\n            />\n          )}\n\n          <Box marginLeft={2}>\n            <Text muted size={0} textOverflow=\"ellipsis\">\n              {asset.originalFilename}\n            </Text>\n          </Box>\n        </ContextActionContainer>\n\n        {/* TODO: DRY */}\n        {/* Error button */}\n        {error && (\n          <Box\n            padding={3}\n            style={{\n              position: 'absolute',\n              right: 0,\n              top: 0,\n            }}\n          >\n            <Tooltip\n              animate\n              content={\n                <Container padding={2} width={0}>\n                  <Text size={1}>{error}</Text>\n                </Container>\n              }\n              placement=\"left\"\n              portal\n            >\n              <Text size={1}>\n                <StyledWarningOutlineIcon color=\"critical\" />\n              </Text>\n            </Tooltip>\n          </Box>\n        )}\n      </CardContainer>\n    </CardWrapper>\n  )\n}\n\nexport default memo(CardAsset)\n","import {Box, Card, Flex, Stack, Text} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {foldersActions} from '../../modules/folders'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  folderId: string\n  name: string\n  totalCount: number\n}\n\nconst CardWrapper = styled(Flex)`\n  box-sizing: border-box;\n  height: 100%;\n  overflow: hidden;\n  position: relative;\n  width: 100%;\n`\n\nconst FolderCard = styled(Card)`\n  cursor: pointer;\n  height: 100%;\n  transition: border-color 200ms ease;\n  width: 100%;\n\n  @media (hover: hover) and (pointer: fine) {\n    &:hover {\n      border-color: var(--card-border-color);\n    }\n  }\n`\n\nconst FolderGlyph = styled(Box)(\n  ({theme}) => css`\n    align-items: flex-end;\n    background: linear-gradient(\n      180deg,\n      ${theme.sanity.color.spot.yellow} 0%,\n      ${theme.sanity.color.spot.yellow} 100%\n    );\n    border-radius: 8px;\n    display: flex;\n    height: 72px;\n    position: relative;\n    width: 96px;\n\n    &::before {\n      background: ${theme.sanity.color.spot.yellow};\n      border-radius: 8px 8px 0 0;\n      content: '';\n      height: 18px;\n      left: 0;\n      position: absolute;\n      top: -8px;\n      width: 38px;\n    }\n  `,\n)\n\nconst CardFolder = ({folderId, name, totalCount}: Props) => {\n  const dispatch = useDispatch()\n  const scheme = useColorSchemeValue()\n\n  return (\n    <CardWrapper padding={1}>\n      <FolderCard\n        onClick={() => dispatch(foldersActions.currentFolderSet({folderId}))}\n        padding={3}\n        radius={2}\n        style={{\n          background: getSchemeColor(scheme, 'bg'),\n          border: '1px solid transparent',\n        }}\n      >\n        <Flex direction=\"column\" height=\"fill\" justify=\"space-between\">\n          <Flex align=\"center\" flex={1} justify=\"center\">\n            <FolderGlyph />\n          </Flex>\n\n          <Stack space={2}>\n            <Text\n              size={1}\n              style={{lineHeight: '1.35em', minHeight: '2.7em', wordBreak: 'break-word'}}\n              weight=\"semibold\"\n            >\n              {name}\n            </Text>\n            <Text muted size={0} style={{lineHeight: '1.2em'}}>\n              {totalCount} item{totalCount === 1 ? '' : 's'}\n            </Text>\n          </Stack>\n        </Flex>\n      </FolderCard>\n    </CardWrapper>\n  )\n}\n\nexport default CardFolder\n","import {Observable, from, of} from 'rxjs'\nimport {mergeMap} from 'rxjs/operators'\n\nconst PREVIEW_WIDTH = 180 // px\n\nconst createBlob = (img: HTMLImageElement): Promise<Blob | null> => {\n  return new Promise((resolve) => {\n    const imageAspect = img.width / img.height\n\n    // Create a canvas element which we'll use to generate a low resolution preview.\n    // Ensure that the canvas is at least 1 pixel high as blob generation will fail otherwise.\n    const canvas: HTMLCanvasElement = document.createElement('canvas')\n    canvas.width = PREVIEW_WIDTH\n    canvas.height = Math.max(PREVIEW_WIDTH / imageAspect, 1)\n\n    // Fail silently if we're unable to generate a preview image.\n    // This can often be the case when trying to render SVGs containing `<foreignObject>` elements.\n    try {\n      const ctx = canvas.getContext('2d')\n      ctx?.drawImage(img, 0, 0, PREVIEW_WIDTH, PREVIEW_WIDTH / imageAspect)\n      canvas.toBlob(resolve, 'image/jpeg')\n    } catch (err) {\n      console.warn(`Unable to generate preview image:`, err)\n    }\n  })\n}\n\nconst createImageEl = (file: File): Promise<HTMLImageElement> => {\n  return new Promise((resolve) => {\n    const blobUrlLarge = window.URL.createObjectURL(file)\n    const img = new Image()\n    img.onload = () => {\n      window.URL.revokeObjectURL(blobUrlLarge)\n      resolve(img)\n    }\n    img.src = blobUrlLarge\n  })\n}\n\nconst generatePreviewBlobUrl = async (file: File): Promise<string> => {\n  const imageEl = await createImageEl(file)\n  const blob = await createBlob(imageEl)\n\n  if (!blob) {\n    throw Error('Unable to generate file Blob')\n  }\n\n  return window.URL.createObjectURL(blob)\n}\n\nexport const generatePreviewBlobUrl$ = (file: File): Observable<string> => {\n  return of(null).pipe(mergeMap(() => from(generatePreviewBlobUrl(file))))\n}\n","import {Subject, Subscription, Observable, from} from 'rxjs'\n// Takes a observable-returning function and returns a new function that limits on the number of\n// concurrent observables.\nimport {first, mergeMap} from 'rxjs/operators'\n\nconst DEFAULT_CONCURRENCY = 4\n\nfunction remove<T>(array: Array<T>, item: T): Array<T> {\n  const index = array.indexOf(item)\n  if (index > -1) {\n    array.splice(index, 1)\n  }\n  return array\n}\n\nexport const createThrottler = (concurrency: number = DEFAULT_CONCURRENCY) => {\n  const currentSubscriptions: Array<Subscription> = []\n  const pendingObservables: Array<Observable<any>> = []\n  const ready$ = new Subject()\n\n  function request(observable: Observable<any>): Observable<any> {\n    return new Observable((observer) => {\n      if (currentSubscriptions.length >= concurrency) {\n        return scheduleAndWait$(observable)\n          .pipe(mergeMap(request)) //\n          .subscribe(observer)\n      }\n      const subscription = observable.subscribe(observer)\n      currentSubscriptions.push(subscription)\n      return () => {\n        remove(currentSubscriptions, subscription)\n        remove(pendingObservables, observable)\n        subscription.unsubscribe()\n        while (pendingObservables.length > 0 && currentSubscriptions.length < concurrency) {\n          ready$.next(pendingObservables.shift())\n        }\n      }\n    })\n  }\n\n  function scheduleAndWait$(observable: Observable<any>): Observable<any> {\n    pendingObservables.push(observable)\n    return ready$.asObservable().pipe(first((obs) => obs === observable))\n  }\n\n  return request\n}\n\nexport const withMaxConcurrency = (\n  func: (...args: any[]) => Observable<any>,\n  concurrency: number = DEFAULT_CONCURRENCY,\n) => {\n  const throttler = createThrottler(concurrency)\n  return (...args: Array<any>) => from(throttler(func(...args)))\n}\n","// Sourced from:\n// https://github.com/sanity-io/sanity/blob/ccb777e115a8cdf20d81a9a2bc9d8c228568faff/packages/%40sanity/form-builder/src/sanity/inputs/client-adapters/assets.ts\n\nimport type {SanityAssetDocument, SanityClient, SanityImageAssetDocument} from '@sanity/client'\nimport {Observable, of, throwError} from 'rxjs'\nimport {map, mergeMap} from 'rxjs/operators'\n\nimport type {HttpError} from '../types'\nimport {withMaxConcurrency} from './withMaxConcurrency'\n\nconst fetchExisting$ = (client: SanityClient, type: string, hash: string) => {\n  return client.observable.fetch('*[_type == $documentType && sha1hash == $hash][0]', {\n    documentType: type,\n    hash,\n  })\n}\n\nconst readFile$ = (file: File): Observable<ArrayBuffer> => {\n  return new Observable((subscriber) => {\n    const reader = new FileReader()\n    reader.onload = () => {\n      subscriber.next(reader.result as ArrayBuffer)\n      subscriber.complete()\n    }\n    reader.onerror = (err) => {\n      subscriber.error(err)\n    }\n    reader.readAsArrayBuffer(file)\n    return () => {\n      reader.abort()\n    }\n  })\n}\n\nconst hexFromBuffer = (buffer: ArrayBuffer): string => {\n  return Array.prototype.map\n    .call(new Uint8Array(buffer), (x) => `00${x.toString(16)}`.slice(-2))\n    .join('')\n}\n\nexport const hashFile$ = (file: File): Observable<string> => {\n  if (!window.crypto || !window.crypto.subtle || !window.FileReader) {\n    return throwError({\n      message: 'Unable to generate hash: uploads are only allowed in secure contexts',\n      statusCode: 500,\n    })\n  }\n  return readFile$(file).pipe(\n    mergeMap((arrayBuffer) => window.crypto.subtle.digest('SHA-1', arrayBuffer)),\n    map(hexFromBuffer),\n  )\n}\n\nconst uploadSanityAsset$ = (\n  client: SanityClient,\n  assetType: 'file' | 'image',\n  file: File,\n  hash: string,\n) => {\n  return of(null).pipe(\n    // NOTE: the sanity api will still dedupe unique files, but this saves us from uploading the asset file entirely\n    mergeMap(() => fetchExisting$(client, `sanity.${assetType}Asset`, hash)),\n    // Cancel if the asset already exists\n    mergeMap((existingAsset: SanityAssetDocument | SanityImageAssetDocument | null) => {\n      if (existingAsset) {\n        return throwError({\n          message: 'Asset already exists',\n          statusCode: 409,\n        } satisfies HttpError)\n      }\n\n      return of(null)\n    }),\n    mergeMap(() => {\n      // Begin upload if no existing asset found\n      return client.observable.assets\n        .upload(assetType, file, {\n          extract: ['blurhash', 'exif', 'image', 'location', 'lqip', 'palette'],\n          preserveFilename: true,\n        })\n        .pipe(\n          map((event) =>\n            event.type === 'response'\n              ? {\n                  // rewrite to a 'complete' event\n                  asset: event.body.document,\n                  id: event.body.document._id,\n                  type: 'complete',\n                }\n              : event,\n          ),\n        )\n    }),\n  )\n}\n\nexport const uploadAsset$ = withMaxConcurrency(uploadSanityAsset$)\n","import {createSelector, createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, SanityAssetDocument, SanityImageAssetDocument} from '@sanity/client'\nimport groq from 'groq'\nimport {empty, from, merge, of} from 'rxjs'\nimport {catchError, delay, filter, mergeMap, takeUntil, withLatestFrom} from 'rxjs/operators'\n\nimport type {HttpError, MyEpic, SanityUploadProgressEvent, UploadItem} from '../../types'\nimport constructFilter from '../../utils/constructFilter'\nimport {generatePreviewBlobUrl$} from '../../utils/generatePreviewBlobUrl'\nimport {hashFile$, uploadAsset$} from '../../utils/uploadSanityAsset'\nimport {assetsActions} from '../assets'\nimport type {RootReducerState} from '../types'\nimport {UPLOADS_ACTIONS} from './actions'\n\nexport type UploadsReducerState = {\n  allIds: string[]\n  byIds: Record<string, UploadItem>\n}\n\nconst initialState = {\n  allIds: [],\n  byIds: {},\n} as UploadsReducerState\n\nconst uploadsSlice = createSlice({\n  name: 'uploads',\n  initialState,\n  extraReducers: (builder) => {\n    builder //\n      .addCase(UPLOADS_ACTIONS.uploadComplete, (state, action) => {\n        const {asset} = action.payload\n        if (state.byIds[asset.sha1hash]) {\n          state.byIds[asset.sha1hash]!.status = 'complete'\n        }\n      })\n  },\n  reducers: {\n    checkRequest(\n      _state,\n      _action: PayloadAction<{assets: (SanityAssetDocument | SanityImageAssetDocument)[]}>,\n    ) {\n      //\n    },\n    checkComplete(state, action: PayloadAction<{results: Record<string, string | null>}>) {\n      const {results} = action.payload\n\n      const assetHashes = Object.keys(results)\n\n      assetHashes.forEach((hash) => {\n        const deleteIndex = state.allIds.indexOf(hash)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n\n        if (state.byIds[hash]) {\n          const blobUrl = state.byIds[hash].objectUrl\n          if (blobUrl) {\n            window.URL.revokeObjectURL(blobUrl)\n          }\n\n          delete state.byIds[hash]\n        }\n      })\n    },\n    previewReady(state, action: PayloadAction<{hash: string; blobUrl: string}>) {\n      const {blobUrl, hash} = action.payload\n      if (state.byIds[hash]) {\n        state.byIds[hash].objectUrl = blobUrl\n      }\n    },\n    uploadCancel(state, action: PayloadAction<{hash: string}>) {\n      const {hash} = action.payload\n      const deleteIndex = state.allIds.indexOf(hash)\n      if (deleteIndex >= 0) {\n        state.allIds.splice(deleteIndex, 1)\n      }\n      if (state.byIds[hash]) {\n        delete state.byIds[hash]\n      }\n    },\n    uploadError(state, action: PayloadAction<{error: HttpError; hash: string}>) {\n      const {hash} = action.payload\n      const deleteIndex = state.allIds.indexOf(hash)\n      if (deleteIndex >= 0) {\n        state.allIds.splice(deleteIndex, 1)\n      }\n      delete state.byIds[hash]\n    },\n    uploadRequest(\n      _state,\n      _action: PayloadAction<{file: File; forceAsAssetType?: 'file' | 'image'}>,\n    ) {\n      //\n    },\n    uploadProgress(\n      state,\n      action: PayloadAction<{event: SanityUploadProgressEvent; uploadHash: string}>,\n    ) {\n      const {event, uploadHash} = action.payload\n      state.byIds[uploadHash]!.percent = event.percent\n      state.byIds[uploadHash]!.status = 'uploading'\n    },\n    uploadStart(state, action: PayloadAction<{file: File; uploadItem: UploadItem}>) {\n      const {uploadItem} = action.payload\n      if (!state.allIds.includes(uploadItem.hash)) {\n        state.allIds.push(uploadItem.hash)\n      }\n      state.byIds[uploadItem.hash] = uploadItem\n    },\n  },\n})\n\n// Epics\n\nexport const uploadsAssetStartEpic: MyEpic = (action$, _state$, {client}) =>\n  action$.pipe(\n    filter(uploadsActions.uploadStart.match),\n    mergeMap((action) => {\n      const {file, uploadItem} = action.payload\n\n      return merge(\n        // Generate low res preview\n        of(null).pipe(\n          mergeMap(() => generatePreviewBlobUrl$(file)),\n          mergeMap((url) => {\n            return of(\n              uploadsActions.previewReady({\n                blobUrl: url,\n                hash: uploadItem.hash,\n              }),\n            )\n          }),\n        ),\n        // Upload asset and receive progress / complete events\n        of(null).pipe(\n          // delay(500000), // debug uploads\n          mergeMap(() => uploadAsset$(client, uploadItem.assetType, file, uploadItem.hash)),\n          takeUntil(\n            action$.pipe(\n              filter(uploadsActions.uploadCancel.match),\n              filter((v) => v.payload.hash === uploadItem.hash),\n            ),\n          ),\n          mergeMap((event) => {\n            if (event?.type === 'complete') {\n              const folderId = uploadItem.folderId || null\n\n              if (!folderId) {\n                return of(\n                  UPLOADS_ACTIONS.uploadComplete({\n                    asset: event.asset,\n                  }),\n                )\n              }\n\n              return from(\n                client\n                  .patch(event.asset._id)\n                  .setIfMissing({opt: {}})\n                  .setIfMissing({'opt.media': {}})\n                  .set({\n                    'opt.media.folder': {_ref: folderId, _type: 'reference', _weak: true},\n                  })\n                  .commit(),\n              ).pipe(\n                mergeMap((asset) =>\n                  of(\n                    UPLOADS_ACTIONS.uploadComplete({\n                      asset: asset as SanityAssetDocument | SanityImageAssetDocument,\n                    }),\n                  ),\n                ),\n              )\n            }\n            if (event?.type === 'progress' && event?.stage === 'upload') {\n              return of(\n                uploadsActions.uploadProgress({\n                  event,\n                  uploadHash: uploadItem.hash,\n                }),\n              )\n            }\n            return empty()\n          }),\n          catchError((error: ClientError) =>\n            of(\n              uploadsActions.uploadError({\n                error: {\n                  message: error?.message || 'Internal error',\n                  statusCode: error?.statusCode || 500,\n                },\n                hash: uploadItem.hash,\n              }),\n            ),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const uploadsAssetUploadEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(uploadsActions.uploadRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {file, forceAsAssetType} = action.payload\n\n      return of(action).pipe(\n        // Generate SHA1 hash from local file\n        // This will throw in insecure contexts (non-localhost / https)\n        mergeMap(() => hashFile$(file)),\n        // Ignore if the file exists and is currently being uploaded\n        filter((hash) => {\n          const exists = !!state.uploads.byIds[hash]\n          return !exists\n        }),\n        // Dispatch start action and begin upload process\n        mergeMap((hash) => {\n          const assetType = forceAsAssetType || (file.type.indexOf('image') >= 0 ? 'image' : 'file')\n          const uploadItem = {\n            _type: 'upload',\n            assetType,\n            folderId: state.folders.currentFolderId,\n            hash,\n            name: file.name,\n            size: file.size,\n            status: 'queued',\n          } as UploadItem\n          return of(uploadsActions.uploadStart({file, uploadItem}))\n        }),\n      )\n    }),\n  )\n\nexport const uploadsCompleteQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(UPLOADS_ACTIONS.uploadComplete.match),\n    mergeMap((action) => {\n      return of(\n        uploadsActions.checkRequest({\n          assets: [action.payload.asset],\n        }),\n      )\n    }),\n  )\n\nexport const uploadsCheckRequestEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(uploadsActions.checkRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets} = action.payload\n\n      const documentIds = assets.map((asset) => asset._id)\n\n      const constructedFilter = constructFilter({\n        assetTypes: state.assets.assetTypes,\n        currentFolderId: state.folders.currentFolderId,\n        excludeTagSlugs: state.assets.excludeTagSlugs,\n        searchFacets: state.search.facets,\n        searchQuery: state.search.query,\n      })\n\n      const query = groq`\n        *[${constructedFilter} && _id in $documentIds].sha1hash\n      `\n\n      return of(action).pipe(\n        delay(1000), // give Sanity some time to register the recently uploaded asset\n        mergeMap(() => client.observable.fetch<string[]>(query, {documentIds})),\n        mergeMap((resultHashes) => {\n          const checkedResults = assets.reduce((acc: Record<string, string | null>, asset) => {\n            acc[asset.sha1hash] = resultHashes.includes(asset.sha1hash) ? asset._id : null\n            return acc\n          }, {})\n\n          return of(\n            uploadsActions.checkComplete({results: checkedResults}), //\n            assetsActions.insertUploads({results: checkedResults}),\n          )\n        }),\n      )\n    }),\n  )\n\n// Selectors\n\nexport const selectUploadById = createSelector(\n  [\n    (state: RootReducerState) => state.uploads.byIds,\n    (_state: RootReducerState, uploadId: string) => uploadId,\n  ],\n  (byIds, uploadId) => byIds[uploadId],\n)\n\nexport const uploadsActions = {...uploadsSlice.actions}\n\nexport default uploadsSlice.reducer\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Button, Flex, Text} from '@sanity/ui'\nimport filesize from 'filesize'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectUploadById, uploadsActions} from '../../modules/uploads'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\ntype Props = {\n  id: string\n}\n\nconst CardWrapper = styled(Flex)`\n  box-sizing: border-box;\n  height: 100%;\n  overflow: hidden;\n  position: relative;\n  width: 100%;\n`\n\nconst CardUpload = (props: Props) => {\n  const {id} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const item = useTypedSelector((state) => selectUploadById(state, id))\n\n  if (!item) {\n    return null\n  }\n\n  const fileSize = filesize(item.size, {base: 10, round: 0})\n  const percentLoaded = Math.round(item.percent || 0) // (0 - 100)\n\n  const isComplete = item.status === 'complete'\n  const isUploading = item.status === 'uploading'\n  const isQueued = item.status === 'queued'\n\n  let status\n  if (isComplete) {\n    status = 'Verifying'\n  }\n  if (isUploading) {\n    status = `${percentLoaded}%`\n  }\n  if (isQueued) {\n    status = 'Queued'\n  }\n\n  // Callbacks\n  const handleCancelUpload = () => {\n    dispatch(uploadsActions.uploadCancel({hash: item.hash}))\n  }\n\n  return (\n    <CardWrapper padding={1}>\n      <Flex\n        direction=\"column\"\n        flex={1}\n        style={{\n          background: getSchemeColor(scheme, 'bg'),\n          border: '1px solid transparent',\n          height: '100%',\n          position: 'relative',\n        }}\n      >\n        {/* Progress bar */}\n        <div\n          style={{\n            background: 'var(--card-fg-color)',\n            bottom: 0,\n            height: '1px',\n            left: 0,\n            position: 'absolute',\n            width: '100%',\n            transform: `scaleX(${percentLoaded * 0.01})`,\n            transformOrigin: 'bottom left',\n            transition: 'all 1000ms ease-out',\n          }}\n        />\n\n        <Box flex={1} style={{position: 'relative'}}>\n          {item.assetType === 'image' && item?.objectUrl && (\n            <Image\n              draggable={false}\n              $scheme={scheme}\n              src={item.objectUrl}\n              style={{\n                opacity: 0.4,\n              }}\n            />\n          )}\n\n          {item.assetType === 'file' && (\n            <div style={{height: '100%', opacity: 0.1}}>\n              <FileIcon width=\"80px\" />\n            </div>\n          )}\n\n          {/*\n          Cancel upload button.\n          Assets will only have a `complete` status _after_ it has been created on your dataset.\n          As such, we also hide the cancel button when `percentLoaded === 100`, as cancelling when the asset\n          has been fully uploaded (even with a status of `progress`) won't stop the asset from being created.\n        */}\n          {!isComplete && percentLoaded !== 100 && (\n            <Flex\n              align=\"center\"\n              direction=\"column\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Button\n                fontSize={4}\n                icon={CloseIcon}\n                mode=\"bleed\"\n                onClick={handleCancelUpload}\n                padding={2}\n                style={{background: 'none', boxShadow: 'none'}}\n                tone=\"critical\"\n              />\n            </Flex>\n          )}\n        </Box>\n\n        {/* Footer */}\n        <Flex\n          align=\"center\"\n          justify=\"space-between\"\n          paddingX={2}\n          style={{height: `${PANEL_HEIGHT}px`}}\n        >\n          <Box flex={1} marginRight={1}>\n            <Text size={0} textOverflow=\"ellipsis\">\n              {item.name} ({fileSize})\n            </Text>\n          </Box>\n          <Text size={0} style={{flexShrink: 0}} weight=\"semibold\">\n            {status}\n          </Text>\n        </Flex>\n      </Flex>\n    </CardWrapper>\n  )\n}\n\nexport default CardUpload\n","import {memo} from 'react'\nimport {VirtuosoGrid} from 'react-virtuoso'\nimport {styled} from 'styled-components'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport type {CardAssetData, CardFolderData, CardUploadData} from '../../types'\nimport CardAsset from '../CardAsset'\nimport CardFolder from '../CardFolder'\nimport CardUpload from '../CardUpload'\n\ntype Props = {\n  items: (CardAssetData | CardFolderData | CardUploadData)[]\n  onLoadMore?: () => void\n  source?: string\n}\n\nconst CARD_HEIGHT = 220\nconst CARD_WIDTH = 240\n\nconst VirtualCell = memo(\n  ({\n    item,\n    selected,\n    source,\n  }: {\n    item: CardAssetData | CardFolderData | CardUploadData\n    selected: boolean\n    source?: string\n  }) => {\n    if (item?.type === 'asset') {\n      return <CardAsset id={item.id} selected={selected} source={source} />\n    }\n\n    if (item?.type === 'folder') {\n      return <CardFolder folderId={item.folderId} name={item.name} totalCount={item.totalCount} />\n    }\n\n    if (item?.type === 'upload') {\n      return <CardUpload id={item.id} />\n    }\n\n    return null\n  },\n)\n\nconst StyledItemContainer = styled.div`\n  height: ${CARD_HEIGHT}px;\n  width: ${CARD_WIDTH}px;\n`\n\nconst ItemContainer = (props: any) => {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- we're doing this to avoid sc warnings about `context` passed as an attribute\n  const {context, ref, ...rest} = props\n  return <StyledItemContainer ref={ref} {...rest} />\n}\n\nconst StyledListContainer = styled.div`\n  display: grid;\n  grid-template-columns: repeat(auto-fill, ${CARD_WIDTH}px);\n  grid-template-rows: repeat(auto-fill, ${CARD_HEIGHT}px);\n  justify-content: center;\n  margin: 0 auto;\n`\n\nconst ListContainer = (props: any) => {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- we're doing this to avoid sc warnings about `context` passed as an attribute\n  const {context, ref, ...rest} = props\n  return <StyledListContainer ref={ref} {...rest} />\n}\n\nconst AssetGridVirtualized = (props: Props) => {\n  const {items, onLoadMore, source} = props\n\n  // Redux\n  const selectedAssets = useTypedSelector((state) => state.selected.assets)\n\n  const selectedIds = (selectedAssets && selectedAssets.map((asset) => asset._id)) || []\n  const totalCount = items?.length\n\n  if (totalCount === 0) {\n    return null\n  }\n\n  return (\n    <VirtuosoGrid\n      className=\"media__custom-scrollbar\"\n      computeItemKey={(index) => {\n        const item = items[index]\n        return item?.id ?? index\n      }}\n      components={{\n        Item: ItemContainer,\n        List: ListContainer,\n      }}\n      endReached={onLoadMore}\n      itemContent={(index) => {\n        const item = items[index]!\n        const selected = selectedIds.includes(item.id)\n        return <VirtualCell item={item} selected={selected} source={source} />\n      }}\n      overscan={48}\n      style={{overflowX: 'hidden', overflowY: 'scroll'}}\n      totalCount={totalCount}\n    />\n  )\n}\n\nexport default AssetGridVirtualized\n","import {Box, Text} from '@sanity/ui'\nimport {useEffect, useRef, useState} from 'react'\nimport {useDispatch, useStore} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\nimport {foldersActions} from '../../modules/folders'\nimport {searchActions} from '../../modules/search'\nimport {selectCombinedItems} from '../../modules/selectors'\nimport type {RootReducerState} from '../../modules/types'\nimport type {SearchFacetInputProps, WithId} from '../../types'\nimport {isImageAsset} from '../../utils/typeGuards'\nimport AssetGridVirtualized from '../AssetGridVirtualized'\n\nfunction omitFacetId(facet: WithId<SearchFacetInputProps>): SearchFacetInputProps {\n  // Strip the runtime `id` so facetsAdd can assign a fresh one on restore.\n  const {id: _id, ...withoutId} = facet\n  void _id\n  return withoutId\n}\n\nconst ReplaceAssetsOverview = () => {\n  const dispatch = useDispatch()\n  const store = useStore<RootReducerState>()\n  const combinedItems = useTypedSelector(selectCombinedItems)\n  const assetsById = useTypedSelector((state) => state.assets.byIds)\n  const fetchCount = useTypedSelector((state) => state.assets.fetchCount)\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const fetchingError = useTypedSelector((state) => state.assets.fetchingError)\n  const pageSize = useTypedSelector((state) => state.assets.pageSize)\n  const searchQuery = useTypedSelector((state) => state.search.query)\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n  const currentFolderId = useTypedSelector((state) => state.folders.currentFolderId)\n  const currentFolderUnfiled = useTypedSelector((state) => state.folders.currentFolderUnfiled)\n\n  // Prefer the dialog's assetId — search refetch clears `allIds` / can drop picks.\n  const assetToReplaceId = useTypedSelector((state) => {\n    const dialog = state.dialog.items.find((item) => item.type === 'dialogAllAssets')\n    return dialog?.type === 'dialogAllAssets' ? dialog.assetId : undefined\n  })\n\n  const savedBrowserStateRef = useRef<{\n    assetId: string | undefined\n    query: string\n    facets: WithId<SearchFacetInputProps>[]\n    folderId: string | null\n    folderUnfiled: boolean\n  } | null>(null)\n\n  // Clearing the search only triggers a refetch after `assetsSearchEpic`'s debounce, so the\n  // stale results stay in the store for a moment. Track that gap to avoid rendering the\n  // empty state before the unscoped results arrive.\n  const [awaitingRefetch, setAwaitingRefetch] = useState(\n    () =>\n      searchQuery.length > 0 ||\n      searchFacets.length > 0 ||\n      Boolean(currentFolderId) ||\n      currentFolderUnfiled,\n  )\n\n  // Clear the browser search, facets and folder scope so the picker is not limited to the\n  // result set the user used to find the asset. Restore them when the dialog closes.\n  useEffect(() => {\n    const {dialog, folders, search} = store.getState()\n    const {query, facets} = search\n    const dialogItem = dialog.items.find((item) => item.type === 'dialogAllAssets')\n\n    savedBrowserStateRef.current = {\n      assetId: dialogItem?.type === 'dialogAllAssets' ? dialogItem.assetId : undefined,\n      query,\n      facets,\n      folderId: folders.currentFolderId,\n      folderUnfiled: folders.currentFolderUnfiled,\n    }\n\n    if (query.length > 0) {\n      dispatch(searchActions.querySet({searchQuery: ''}))\n    }\n    if (facets.length > 0) {\n      dispatch(searchActions.facetsClear())\n    }\n    if (folders.currentFolderId || folders.currentFolderUnfiled) {\n      dispatch(foldersActions.currentFolderClear())\n    }\n\n    return () => {\n      const saved = savedBrowserStateRef.current\n      if (!saved) {\n        return\n      }\n\n      const hadScope =\n        saved.query.length > 0 ||\n        saved.facets.length > 0 ||\n        Boolean(saved.folderId) ||\n        saved.folderUnfiled\n\n      if (saved.query.length > 0) {\n        dispatch(searchActions.querySet({searchQuery: saved.query}))\n      }\n      for (const facet of saved.facets) {\n        dispatch(searchActions.facetsAdd({facet: omitFacetId(facet)}))\n      }\n      if (saved.folderId) {\n        dispatch(foldersActions.currentFolderSet({folderId: saved.folderId}))\n      } else if (saved.folderUnfiled) {\n        dispatch(foldersActions.currentFolderShowUnfiled())\n      }\n\n      // Changing the search or folder runs epics that clear picks — put the asset being\n      // replaced back so closing the dialog keeps the browser selection.\n      if (hadScope && saved.assetId) {\n        dispatch(assetsActions.pick({assetId: saved.assetId, picked: true}))\n      }\n    }\n  }, [dispatch, store])\n\n  // Every rescoped refetch is preceded by `assetsActions.clear()`, so wait for the asset\n  // list to be emptied and the following fetch to settle. Watching `fetching` alone is not\n  // enough: `assetsFetchEpic` uses `switchMap`, so replacing an in-flight request leaves\n  // `fetching` true throughout. Clearing a folder scope and a search at the same time\n  // produces two refetches (the folder one immediately, the search one after its debounce),\n  // so each list clear re-arms the wait rather than resolving it for good.\n  useEffect(() => {\n    let previousIds = store.getState().assets.allIds\n    let awaitingSettle = false\n\n    return store.subscribe(() => {\n      const {allIds, fetching: isFetching} = store.getState().assets\n      const listCleared = allIds !== previousIds && allIds.length === 0\n      previousIds = allIds\n\n      if (listCleared) {\n        awaitingSettle = true\n        setAwaitingRefetch(true)\n        return\n      }\n      if (awaitingSettle && !isFetching) {\n        awaitingSettle = false\n        setAwaitingRefetch(false)\n      }\n    })\n  }, [store])\n\n  const scopeActive =\n    searchQuery.length > 0 ||\n    searchFacets.length > 0 ||\n    Boolean(currentFolderId) ||\n    currentFolderUnfiled\n\n  // Only image assets can replace image refs; exclude uploads and the asset being replaced.\n  const reducedItems = combinedItems.filter((item) => {\n    if (item.type !== 'asset' || item.id === assetToReplaceId) {\n      return false\n    }\n    const asset = assetsById[item.id]?.asset\n    return asset ? isImageAsset(asset) : false\n  })\n\n  const hasFetchedOnce = fetchCount >= 0\n  const hasMorePages = fetchCount === pageSize\n  // Don't treat a scoped / stale / mid-fetch / incomplete page as \"no replacements\".\n  const isEmpty =\n    reducedItems.length === 0 &&\n    hasFetchedOnce &&\n    !fetching &&\n    !scopeActive &&\n    !awaitingRefetch &&\n    !hasMorePages\n\n  // Keep loading pages until we find image candidates or exhaust results. A failed fetch\n  // leaves `fetchCount` untouched, so stop paging on error instead of retrying forever.\n  useEffect(() => {\n    if (\n      scopeActive ||\n      fetching ||\n      awaitingRefetch ||\n      fetchingError ||\n      reducedItems.length > 0 ||\n      !hasFetchedOnce ||\n      !hasMorePages\n    ) {\n      return\n    }\n    dispatch(assetsActions.loadNextPage())\n  }, [\n    dispatch,\n    scopeActive,\n    fetching,\n    awaitingRefetch,\n    fetchingError,\n    reducedItems.length,\n    hasFetchedOnce,\n    hasMorePages,\n  ])\n\n  const handleLoadMoreItems = () => {\n    if (!fetching) {\n      dispatch(assetsActions.loadNextPage())\n    }\n  }\n\n  return (\n    <Box height=\"fill\">\n      {isEmpty ? (\n        <Box padding={5}>\n          <Text size={1} weight=\"semibold\">\n            There are no replacement images\n          </Text>\n        </Box>\n      ) : (\n        <Box height=\"fill\">\n          <AssetGridVirtualized\n            items={reducedItems}\n            onLoadMore={handleLoadMoreItems}\n            source=\"replace-asset\"\n          />\n        </Box>\n      )}\n    </Box>\n  )\n}\n\nexport default ReplaceAssetsOverview\n","import {Box} from '@sanity/ui'\nimport {type ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogAllAssetsProps} from '../../types'\nimport Dialog from '../Dialog'\nimport ReplaceAssetsOverview from '../ReplaceAssetsOverView'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogAllAssetsProps\n}\n\nconst DialogAllAssets = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.clear())\n  }, [dispatch])\n\n  return (\n    <Dialog header=\"Choose a replacement image\" id={id} onClose={handleClose} width={3}>\n      <Box padding={4} style={{height: '50vh'}}>\n        <ReplaceAssetsOverview />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogAllAssets\n","import {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Button, Flex, Stack, Text} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogConfirmProps} from '../../types'\nimport Dialog from '../Dialog'\n\ntype Props = {\n  children?: ReactNode\n  dialog: DialogConfirmProps\n}\n\nconst DialogConfirm = (props: Props) => {\n  const {children, dialog} = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = () => {\n    dispatch(dialogActions.remove({id: dialog?.id}))\n  }\n\n  const handleConfirm = () => {\n    // Close target dialog, if provided\n    if (dialog?.closeDialogId) {\n      dispatch(dialogActions.remove({id: dialog?.closeDialogId}))\n    }\n\n    if (dialog?.confirmCallbackAction) {\n      dispatch(dialog.confirmCallbackAction)\n    }\n\n    // Close self\n    handleClose()\n  }\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"space-between\">\n        <Button fontSize={1} mode=\"bleed\" onClick={handleClose} text=\"Cancel\" />\n        <Button\n          fontSize={1}\n          onClick={handleConfirm}\n          text={dialog?.confirmText}\n          tone={dialog?.tone}\n        />\n      </Flex>\n    </Box>\n  )\n\n  const Header = () => (\n    <Flex align=\"center\">\n      <Box paddingX={1}>\n        <WarningOutlineIcon />\n      </Box>\n      <Box marginLeft={2}>{dialog?.headerTitle}</Box>\n    </Flex>\n  )\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      // oxlint-disable-next-line react/react-compiler\n      header={<Header />}\n      id=\"confirm\"\n      onClose={handleClose}\n      width={1}\n    >\n      <Box paddingX={4} paddingY={4}>\n        <Stack space={3}>\n          {dialog?.title && <Text size={1}>{dialog.title}</Text>}\n          {dialog?.description && (\n            <Text muted size={1}>\n              <em>{dialog.description}</em>\n            </Text>\n          )}\n        </Stack>\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogConfirm\n","import {Box, Flex, Text} from '@sanity/ui'\nimport {type ReactNode, useEffect} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\n\nimport {folderFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {foldersActions, selectFolderPathById} from '../../modules/folders'\nimport type {DialogFolderCreateProps, FolderFormData} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogFolderCreateProps\n}\n\nconst DialogFolderCreate = (props: Props) => {\n  const {\n    children,\n    dialog: {parentFolderId, id},\n  } = props\n\n  const dispatch = useDispatch()\n  const creating = useTypedSelector((state) => state.folders.creating)\n  const creatingError = useTypedSelector((state) => state.folders.creatingError)\n  const parentPath = useTypedSelector((state) => selectFolderPathById(state, parentFolderId))\n\n  const {\n    formState: {errors, isDirty, isValid},\n    handleSubmit,\n    register,\n    setError,\n  } = useForm<FolderFormData>({\n    defaultValues: {\n      name: '',\n    },\n    mode: 'onChange',\n    resolver: zodFormResolver<FolderFormData>(folderFormSchema),\n  })\n\n  const handleClose = () => {\n    dispatch(dialogActions.clear())\n  }\n\n  const onSubmit: SubmitHandler<FolderFormData> = (formData) => {\n    const sanitizedFormData = sanitizeFormData(formData)\n    dispatch(\n      foldersActions.createRequest({\n        name: sanitizedFormData['name'],\n        parentId: parentFolderId || null,\n      }),\n    )\n  }\n\n  useEffect(() => {\n    if (creatingError) {\n      setError('name', {message: creatingError.message})\n    }\n  }, [creatingError, setError])\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"flex-end\">\n        <FormSubmitButton\n          disabled={creating || !isDirty || !isValid}\n          isValid={isValid}\n          onClick={handleSubmit(onSubmit)}\n        />\n      </Flex>\n    </Box>\n  )\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      header=\"Create Folder\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n        <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n        {parentPath && (\n          <Box marginBottom={3}>\n            <Text muted size={1}>\n              Creating inside {parentPath}\n            </Text>\n          </Box>\n        )}\n\n        <FormFieldInputText\n          {...register('name')}\n          disabled={creating}\n          error={errors?.name?.message}\n          label=\"Folder name\"\n          name=\"name\"\n        />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogFolderCreate\n","import {Box, Button, Flex, Inline, Stack, Text, Tree, TreeItem} from '@sanity/ui'\nimport pluralize from 'pluralize'\nimport {type ReactNode, useMemo, useState} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {selectFolderTree} from '../../modules/folders'\nimport type {DialogFolderMoveProps, FolderTreeNode} from '../../types'\nimport Dialog from '../Dialog'\n\nconst getExpandedIdSet = (\n  folderId: string | null,\n  byId: Record<string, {parentId: string | null}>,\n) => {\n  const expanded = new Set<string>()\n  let cursor: string | null = folderId\n  while (cursor) {\n    const node = byId[cursor]\n    if (!node) break\n    expanded.add(cursor)\n    cursor = node.parentId\n  }\n  return expanded\n}\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogFolderMoveProps\n}\n\ntype FolderNodeProps = {\n  expandedIds: Set<string>\n  node: FolderTreeNode\n  onSelect: (folderId: string) => void\n  selectedId: string | null\n}\n\nconst FolderNode = ({expandedIds, node, onSelect, selectedId}: FolderNodeProps) => {\n  const hasChildren = node.children.length > 0\n  const selected = selectedId === node.id\n\n  return (\n    <TreeItem\n      expanded={expandedIds.has(node.id)}\n      id={node.id}\n      onClick={() => onSelect(node.id)}\n      selected={selected}\n      text={`${node.name} (${node.totalCount})`}\n      weight={selected ? 'semibold' : 'medium'}\n    >\n      {hasChildren &&\n        node.children.map((childNode) => (\n          <FolderNode\n            expandedIds={expandedIds}\n            key={childNode.id}\n            node={childNode}\n            onSelect={onSelect}\n            selectedId={selectedId}\n          />\n        ))}\n    </TreeItem>\n  )\n}\n\ntype FolderTreeProps = {\n  expandedIds: Set<string>\n  folderTree: FolderTreeNode[]\n  onSelect: (folderId: string) => void\n  selectedId: string | null\n}\n\nconst FolderTree = ({expandedIds, folderTree, onSelect, selectedId}: FolderTreeProps) => (\n  <Tree gap={1}>\n    {folderTree.map((node) => (\n      <FolderNode\n        expandedIds={expandedIds}\n        key={node.id}\n        node={node}\n        onSelect={onSelect}\n        selectedId={selectedId}\n      />\n    ))}\n  </Tree>\n)\n\nconst DialogFolderMove = ({children, dialog}: Props) => {\n  const dispatch = useDispatch()\n  const folderTree = useTypedSelector(selectFolderTree)\n  const byId = useTypedSelector((state) => state.folders.byId)\n  const {assets, folderId, id} = dialog\n  const [selectedId, setSelectedId] = useState<string | null>(folderId || null)\n  const selectedFolder = selectedId ? byId[selectedId] : null\n  const expandedIds = useMemo(() => getExpandedIdSet(folderId || null, byId), [byId, folderId])\n\n  const handleClose = () => {\n    dispatch(dialogActions.remove({id}))\n  }\n\n  const handleMove = () => {\n    if (!selectedId) {\n      return\n    }\n\n    dispatch(\n      assetsActions.folderSetRequest({\n        assets,\n        closeDialogId: id,\n        folderId: selectedId,\n      }),\n    )\n  }\n\n  return (\n    <Dialog\n      animate\n      footer={\n        <Box padding={3}>\n          <Flex justify=\"flex-end\" gap={2}>\n            <Button mode=\"ghost\" onClick={handleClose} text=\"Cancel\" />\n            <Button\n              disabled={!selectedId}\n              mode=\"default\"\n              onClick={handleMove}\n              text={`Move ${assets.length} ${pluralize('asset', assets.length)}`}\n              tone=\"primary\"\n            />\n          </Flex>\n        </Box>\n      }\n      header=\"Move to Folder\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      <Stack padding={4} space={4}>\n        <Text size={1}>\n          Move {assets.length} {pluralize('asset', assets.length)} to a folder.\n        </Text>\n\n        <Box style={{maxHeight: '22rem', overflowY: 'auto'}} paddingY={2}>\n          <FolderTree\n            expandedIds={expandedIds}\n            folderTree={folderTree}\n            onSelect={setSelectedId}\n            selectedId={selectedId}\n          />\n\n          {folderTree.length === 0 && (\n            <Box marginTop={3}>\n              <Text muted size={1}>\n                No folders yet.\n              </Text>\n            </Box>\n          )}\n        </Box>\n\n        {selectedFolder && (\n          <Inline space={2}>\n            <Text muted size={1}>\n              Destination:\n            </Text>\n            <Text size={1} weight=\"semibold\">\n              {selectedFolder.name}\n            </Text>\n          </Inline>\n        )}\n      </Stack>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogFolderMove\n","import {Box, Flex, Text} from '@sanity/ui'\nimport {type ReactNode, useEffect} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\n\nimport {folderFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {foldersActions, selectFolderPathById} from '../../modules/folders'\nimport type {DialogFolderRenameProps, FolderFormData} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogFolderRenameProps\n}\n\nconst DialogFolderRename = ({children, dialog}: Props) => {\n  const {folderId, id} = dialog\n  const dispatch = useDispatch()\n  const renaming = useTypedSelector((state) => state.folders.renaming)\n  const renameError = useTypedSelector((state) => state.folders.renameError)\n  const folder = useTypedSelector((state) => state.folders.byId[folderId])\n  const folderPath = useTypedSelector((state) => selectFolderPathById(state, folderId))\n  const currentName = folder?.name || ''\n  const parentPath = folderPath.includes('/')\n    ? folderPath.slice(0, folderPath.lastIndexOf('/'))\n    : null\n\n  const {\n    formState: {errors, isDirty, isValid},\n    handleSubmit,\n    register,\n    setError,\n  } = useForm<FolderFormData>({\n    defaultValues: {\n      name: currentName,\n    },\n    mode: 'onChange',\n    resolver: zodFormResolver<FolderFormData>(folderFormSchema),\n  })\n\n  const handleClose = () => {\n    dispatch(dialogActions.remove({id}))\n  }\n\n  const onSubmit: SubmitHandler<FolderFormData> = (formData) => {\n    const sanitizedFormData = sanitizeFormData(formData)\n    dispatch(\n      foldersActions.renameRequest({\n        name: sanitizedFormData['name'],\n        folderId,\n      }),\n    )\n  }\n\n  useEffect(() => {\n    if (renameError) {\n      setError('name', {message: renameError.message})\n    }\n  }, [renameError, setError])\n\n  return (\n    <Dialog\n      animate\n      footer={\n        <Box padding={3}>\n          <Flex justify=\"flex-end\">\n            <FormSubmitButton\n              disabled={renaming || !isDirty || !isValid}\n              isValid={isValid}\n              onClick={handleSubmit(onSubmit)}\n            />\n          </Flex>\n        </Box>\n      }\n      header=\"Rename Folder\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n        <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n        <Box marginBottom={3}>\n          <Text muted size={1}>\n            {parentPath ? `Renaming inside ${parentPath}` : 'Renaming at root'}\n          </Text>\n        </Box>\n\n        <FormFieldInputText\n          {...register('name')}\n          disabled={renaming}\n          error={errors?.name?.message}\n          label=\"Folder name\"\n          name=\"name\"\n        />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogFolderRename\n","import {AddIcon} from '@sanity/icons/Add'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {FolderIcon} from '@sanity/icons/Folder'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {\n  Box,\n  Button,\n  Container,\n  Flex,\n  Inline,\n  Label,\n  Text,\n  Tooltip,\n  Tree,\n  TreeItem,\n} from '@sanity/ui'\nimport {type ReactNode, useMemo} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {foldersActions, selectCanDeleteFolder, selectFolderTree} from '../../modules/folders'\nimport type {FolderTreeNode} from '../../types'\n\nconst getExpandedIdSet = (\n  folderId: string | null,\n  byId: Record<string, {parentId: string | null}>,\n) => {\n  const expanded = new Set<string>()\n  let cursor: string | null = folderId\n  while (cursor) {\n    const node = byId[cursor]\n    if (!node) break\n    expanded.add(cursor)\n    cursor = node.parentId\n  }\n  return expanded\n}\n\ntype FolderNodeProps = {\n  currentFolderId: string | null\n  expandedIds: Set<string>\n  node: FolderTreeNode\n  onSelect: (folderId: string) => void\n}\n\ntype FolderHeaderActionProps = {\n  disabled?: boolean\n  icon: ReactNode\n  onClick: () => void\n  tone?: 'critical' | 'default' | 'primary'\n  tooltip: string\n}\n\nconst FolderHeaderAction = ({\n  disabled = false,\n  icon,\n  onClick,\n  tone = 'default',\n  tooltip,\n}: FolderHeaderActionProps) => (\n  <Tooltip\n    animate\n    content={\n      <Container padding={2} width={0}>\n        <Text muted size={1}>\n          {tooltip}\n        </Text>\n      </Container>\n    }\n    disabled={typeof window !== 'undefined' && 'ontouchstart' in window}\n    placement=\"top\"\n    portal\n  >\n    <Button\n      aria-label={tooltip}\n      disabled={disabled}\n      fontSize={1}\n      icon={icon}\n      mode=\"bleed\"\n      onClick={onClick}\n      padding={2}\n      tone={tone}\n    />\n  </Tooltip>\n)\n\ntype FolderItemTextProps = {\n  name: string\n  totalCount: number\n}\n\n/**\n * this uses some hacky css to get the desired layout\n * The tree item is a text container, so we need to use a span to wrap the content\n */\nconst FolderItemText = ({name, totalCount}: FolderItemTextProps) => (\n  <span\n    style={{\n      boxSizing: 'border-box',\n      display: 'block',\n      maxWidth: '100%',\n      minWidth: 0,\n      overflow: 'hidden',\n      paddingRight: '2rem',\n      position: 'relative',\n      width: '100%',\n    }}\n  >\n    <span\n      style={{\n        alignItems: 'center',\n        display: 'flex',\n        paddingLeft: '0.25rem',\n        gap: '0.5rem',\n        minWidth: 0,\n        overflow: 'hidden',\n      }}\n    >\n      <span style={{display: 'inline-flex', flexShrink: 0, lineHeight: 0}}>\n        <FolderIcon />\n      </span>\n      <span\n        style={{\n          display: 'block',\n          minWidth: 0,\n          overflow: 'hidden',\n          textOverflow: 'ellipsis',\n          whiteSpace: 'nowrap',\n        }}\n      >\n        {name}\n      </span>\n    </span>\n    <span\n      style={{\n        fontSize: '0.75rem',\n        opacity: 0.78,\n        position: 'absolute',\n        right: 0,\n        top: '50%',\n        transform: 'translateY(-50%)',\n      }}\n    >\n      {totalCount}\n    </span>\n  </span>\n)\n\nconst FolderNode = ({currentFolderId, expandedIds, node, onSelect}: FolderNodeProps) => {\n  const hasChildren = node.children.length > 0\n  const selected = currentFolderId === node.id\n\n  return (\n    <TreeItem\n      expanded={expandedIds.has(node.id)}\n      id={node.id}\n      onClick={() => onSelect(node.id)}\n      selected={selected}\n      text={<FolderItemText name={node.name} totalCount={node.totalCount} />}\n      weight={selected ? 'semibold' : 'medium'}\n    >\n      {hasChildren &&\n        node.children.map((childNode) => (\n          <FolderNode\n            currentFolderId={currentFolderId}\n            expandedIds={expandedIds}\n            key={childNode.id}\n            node={childNode}\n            onSelect={onSelect}\n          />\n        ))}\n    </TreeItem>\n  )\n}\n\nconst FolderView = () => {\n  const dispatch = useDispatch()\n  const currentFolderId = useTypedSelector((state) => state.folders.currentFolderId)\n  const byId = useTypedSelector((state) => state.folders.byId)\n  const canDeleteFolder = useTypedSelector(selectCanDeleteFolder)\n  const fetching = useTypedSelector((state) => state.folders.fetching)\n  const folderTree = useTypedSelector(selectFolderTree)\n  const currentFolder = currentFolderId ? byId[currentFolderId] : null\n  const expandedIds = useMemo(\n    () => getExpandedIdSet(currentFolderId, byId),\n    [byId, currentFolderId],\n  )\n  const treeKey = useMemo(() => Array.from(expandedIds).join('|') || 'root', [expandedIds])\n\n  const hasFolders = folderTree.length > 0\n\n  const handleFolderSelect = (folderId: string) => {\n    dispatch(foldersActions.currentFolderSet({folderId}))\n  }\n\n  const handleFolderDelete = () => {\n    if (!currentFolderId || !currentFolder) {\n      return\n    }\n\n    dispatch(\n      dialogActions.showConfirmDeleteFolder({\n        folderId: currentFolderId,\n        folderName: currentFolder.name,\n      }),\n    )\n  }\n\n  return (\n    <Flex direction=\"column\" flex={1} height=\"fill\">\n      <Flex\n        align=\"center\"\n        justify=\"space-between\"\n        paddingX={3}\n        style={{\n          borderBottom: '1px solid var(--card-border-color)',\n          flexShrink: 0,\n          height: `${PANEL_HEIGHT}px`,\n        }}\n      >\n        <Box flex={1}>\n          <Inline space={2}>\n            <Label size={0}>Folders</Label>\n            {fetching && (\n              <Label size={0} style={{opacity: 0.3}}>\n                Loading...\n              </Label>\n            )}\n          </Inline>\n        </Box>\n\n        <Inline space={1}>\n          {currentFolderId && (\n            <FolderHeaderAction\n              icon={<EditIcon />}\n              onClick={() => dispatch(DIALOG_ACTIONS.showFolderRename({folderId: currentFolderId}))}\n              tone=\"primary\"\n              tooltip=\"Rename folder\"\n            />\n          )}\n\n          <FolderHeaderAction\n            icon={<AddIcon />}\n            onClick={() =>\n              dispatch(DIALOG_ACTIONS.showFolderCreate({parentFolderId: currentFolderId || null}))\n            }\n            tone=\"primary\"\n            tooltip=\"Create folder\"\n          />\n\n          {currentFolderId && canDeleteFolder && (\n            <FolderHeaderAction\n              icon={<TrashIcon />}\n              onClick={handleFolderDelete}\n              tone=\"critical\"\n              tooltip=\"Delete folder\"\n            />\n          )}\n        </Inline>\n      </Flex>\n\n      <Box padding={2}>\n        <Box>\n          <Tree gap={1} key={treeKey}>\n            <TreeItem\n              id=\"__all-assets\"\n              onClick={() => dispatch(foldersActions.currentFolderClear())}\n              selected={currentFolderId === null}\n              text=\"All assets\"\n              weight={currentFolderId === null ? 'semibold' : 'medium'}\n            />\n\n            {folderTree.map((node) => (\n              <FolderNode\n                currentFolderId={currentFolderId}\n                expandedIds={expandedIds}\n                key={node.id}\n                node={node}\n                onSelect={handleFolderSelect}\n              />\n            ))}\n          </Tree>\n\n          {!hasFolders && !fetching && (\n            <Box marginTop={3} paddingX={1}>\n              <Text muted size={1}>\n                <em>No folders</em>\n              </Text>\n            </Box>\n          )}\n        </Box>\n      </Box>\n    </Flex>\n  )\n}\n\nexport default FolderView\n","import {Box} from '@sanity/ui'\nimport {type ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogFoldersProps} from '../../types'\nimport Dialog from '../Dialog'\nimport FolderView from '../FolderView'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogFoldersProps\n}\n\nconst DialogFolders = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  const dispatch = useDispatch()\n\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.clear())\n  }, [dispatch])\n\n  return (\n    <Dialog animate header=\"Folders\" id={id} onClose={handleClose} width={1}>\n      <Box\n        style={{\n          height: '100%',\n          minHeight: '420px',\n        }}\n      >\n        <FolderView />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogFolders\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Flex, Label, rem, Text, type ThemeColorSchemeKey} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {searchActions} from '../../modules/search'\nimport type {SearchFacetInputProps, WithId} from '../../types'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  children: ReactNode\n  facet: WithId<SearchFacetInputProps>\n}\n\nconst Container = styled<typeof Box, {$scheme: ThemeColorSchemeKey}>(Box)(({$scheme, theme}) => {\n  return css`\n    background: ${getSchemeColor($scheme, 'bg')};\n    border-radius: ${rem(theme.sanity.radius[2]!)};\n  `\n})\n\nconst SearchFacet = (props: Props) => {\n  const {children, facet} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n\n  const handleClose = () => {\n    dispatch(searchActions.facetsRemoveById({facetId: facet.id}))\n  }\n\n  return (\n    <Container padding={[2, 2, 1]} $scheme={scheme}>\n      <Flex align={['flex-start', 'flex-start', 'center']} direction={['column', 'column', 'row']}>\n        {/* Title */}\n        <Box paddingBottom={[3, 3, 0]} paddingLeft={1} paddingRight={2} paddingTop={[1, 1, 0]}>\n          <Label\n            size={0}\n            style={{\n              whiteSpace: 'nowrap',\n            }}\n          >\n            {facet.title}\n          </Label>\n        </Box>\n\n        <Flex align=\"center\">\n          {children}\n\n          {/* Close button */}\n          <Box marginLeft={1} paddingX={2}>\n            <Text muted size={0}>\n              <CloseIcon onClick={handleClose} />\n            </Text>\n          </Box>\n        </Flex>\n      </Flex>\n    </Container>\n  )\n}\n\nexport default SearchFacet\n","import {TextInput} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\n\n// TODO: use correct type\ntype Props = any & {\n  onValueChange: (value: number) => void\n  value?: number\n}\n\nconst TextInputNumber = (props: Props) => {\n  const {onValueChange, value, ...remainingProps} = props\n\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    const val = e.target.value\n    const regex = /^[0-9\\b]+$/\n\n    // Test for number and strip leading zeroes\n    if (val === '' || regex.test(val)) {\n      onValueChange(parseInt(val, 10) || '')\n    }\n  }\n\n  return (\n    <TextInput\n      {...remainingProps}\n      onChange={handleChange} //\n      value={value ?? ''}\n    />\n  )\n}\n\nexport default TextInputNumber\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport type {\n  SearchFacetInputNumberModifier,\n  SearchFacetInputNumberProps,\n  SearchFacetOperatorType,\n  WithId,\n} from '../../types'\nimport SearchFacet from '../SearchFacet'\nimport TextInputNumber from '../TextInputNumber'\n\ntype Props = {\n  facet: WithId<SearchFacetInputNumberProps>\n}\n\nconst SearchFacetNumber = ({facet}: Props) => {\n  // Redux\n  const dispatch = useDispatch()\n\n  const popoverProps = usePortalPopoverProps()\n\n  const modifiers = facet?.modifiers\n  const selectedModifier = facet?.modifier\n    ? modifiers?.find((modifier) => modifier.name === facet?.modifier)\n    : modifiers?.[0]\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, operatorType}))\n  }\n\n  const handleModifierClick = (modifier: SearchFacetInputNumberModifier) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, modifier: modifier.name}))\n  }\n\n  const handleValueChange = (value: number) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, value}))\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet.operatorType ?? 'greaterThan'\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={operators[selectedOperatorType].label}\n            />\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* Value */}\n      <Box marginX={1} style={{maxWidth: '50px'}}>\n        <TextInputNumber\n          fontSize={1}\n          onValueChange={handleValueChange}\n          padding={2}\n          radius={2}\n          width={2}\n          value={facet?.value}\n        />\n      </Box>\n\n      {/* Modifiers */}\n      {modifiers && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={selectedModifier?.title}\n            />\n          }\n          id=\"modifier\"\n          menu={\n            <Menu>\n              {modifiers.map((modifier) => {\n                const selected = modifier.name === facet.modifier\n                return (\n                  <MenuItem\n                    disabled={selected}\n                    fontSize={1}\n                    key={modifier.name}\n                    onClick={() => handleModifierClick(modifier)}\n                    padding={2}\n                    text={modifier.title}\n                  />\n                )\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetNumber\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport type {\n  SearchFacetInputSelectListItemProps,\n  SearchFacetInputSelectProps,\n  SearchFacetOperatorType,\n  WithId,\n} from '../../types'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n  facet: WithId<SearchFacetInputSelectProps>\n}\n\nconst SearchFacetSelect = ({facet}: Props) => {\n  // Redux\n  const dispatch = useDispatch()\n\n  const popoverProps = usePortalPopoverProps()\n\n  const options = facet?.options\n\n  const selectedItem = options?.find((v) => v.name === facet?.value)\n\n  const handleListItemClick = (option: SearchFacetInputSelectListItemProps) => {\n    dispatch(searchActions.facetsUpdate({name: facet.name, value: option.name}))\n  }\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(searchActions.facetsUpdate({name: facet.name, operatorType}))\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet?.operatorType ?? 'is'\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Box marginRight={1}>\n              <Button\n                fontSize={1}\n                iconRight={SelectIcon}\n                padding={2}\n                text={operators[selectedOperatorType].label}\n              />\n            </Box>\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* List */}\n      <MenuButton\n        button={\n          <Button fontSize={1} iconRight={SelectIcon} padding={2} text={selectedItem?.title} />\n        }\n        id=\"list\"\n        menu={\n          <Menu>\n            {options?.map((item) => {\n              const selected = item.name === selectedItem?.name\n              return (\n                <MenuItem\n                  disabled={selected}\n                  fontSize={1}\n                  key={item.name}\n                  onClick={() => handleListItemClick(item)}\n                  padding={2}\n                  text={item.title}\n                />\n              )\n            })}\n          </Menu>\n        }\n        popover={popoverProps}\n      />\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetSelect\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem, TextInput} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport type {SearchFacetInputStringProps, SearchFacetOperatorType, WithId} from '../../types'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n  facet: WithId<SearchFacetInputStringProps>\n}\n\nconst SearchFacetString = ({facet}: Props) => {\n  // Redux\n  const dispatch = useDispatch()\n\n  const popoverProps = usePortalPopoverProps()\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, operatorType}))\n  }\n\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, value: e.target.value}))\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet.operatorType\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={operators[selectedOperatorType].label}\n            />\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* Value */}\n      {!operators[selectedOperatorType].hideInput && (\n        <Box marginLeft={1} style={{maxWidth: '125px'}}>\n          <TextInput\n            fontSize={1}\n            onChange={handleChange}\n            padding={2}\n            radius={2}\n            width={2}\n            value={facet?.value}\n          />\n        </Box>\n      )}\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetString\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Card, rem, studioTheme, Text, type ThemeColorSchemeKey} from '@sanity/ui'\nimport {components, type StylesConfig} from 'react-select'\nimport {Virtuoso} from 'react-virtuoso'\n\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\nconst {\n  fonts: {\n    text: {sizes: themeTextSizes},\n  },\n  radius: themeRadius,\n  space: themeSpace,\n} = studioTheme\n\nexport const reactSelectStyles = (scheme: ThemeColorSchemeKey): StylesConfig => {\n  return {\n    control: (styles, {isDisabled, isFocused}) => {\n      let boxShadow = `inset 0 0 0 1px var(--card-border-color)`\n      if (isFocused) {\n        boxShadow = `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputEnabledBorder')},\n        0 0 0 1px ${getSchemeColor(scheme, 'bg2')},\n        0 0 0 3px var(--card-focus-ring-color) !important`\n      }\n\n      return {\n        ...styles,\n        'backgroundColor': 'var(--card-bg-color)',\n        'color': 'inherit',\n        'border': 'none',\n        'borderRadius': themeRadius[2],\n        boxShadow,\n        'fontSize': themeTextSizes[1]!.fontSize,\n        'minHeight': '25px',\n        'opacity': isDisabled ? 0.5 : 'inherit',\n        'outline': 'none',\n        'transition': 'none',\n        '&:hover': {\n          boxShadow: `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputHoveredBorder')}`,\n        },\n      }\n    },\n    input: (styles) => ({\n      ...styles,\n      color: 'var(--card-fg-color)',\n      fontFamily: studioTheme.fonts.text.family,\n      fontSize: themeTextSizes[1]!.fontSize,\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    menuList: (styles) => ({\n      ...styles,\n      padding: 0,\n    }),\n    noOptionsMessage: (styles) => ({\n      ...styles,\n      fontFamily: studioTheme.fonts.text.family,\n      fontSize: themeTextSizes[1]!.fontSize,\n      lineHeight: '1em',\n    }),\n    option: (styles, {isFocused}) => ({\n      ...styles,\n      'backgroundColor': isFocused ? getSchemeColor(scheme, 'spotBlue') : 'transparent',\n      'borderRadius': themeRadius[2],\n      'color': isFocused ? getSchemeColor(scheme, 'bg') : 'inherit',\n      'fontSize': themeTextSizes[1]!.fontSize,\n      'lineHeight': '1em',\n      'margin': 0,\n      'padding': rem(themeSpace[1]!),\n      '&:hover': {\n        backgroundColor: getSchemeColor(scheme, 'spotBlue'),\n        color: getSchemeColor(scheme, 'bg'),\n      },\n    }),\n    placeholder: (styles) => ({\n      ...styles,\n      fontSize: themeTextSizes[1]!.fontSize,\n      marginLeft: rem(themeSpace[2]!),\n      paddingLeft: 0,\n    }),\n    singleValue: (styles) => ({\n      ...styles,\n      alignItems: 'center',\n      display: 'inline-flex',\n      height: '100%',\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    valueContainer: (styles) => ({\n      ...styles,\n      margin: 0,\n      padding: 0,\n    }),\n  }\n}\n\nconst ClearIndicator = (props: any) => {\n  return (\n    <components.ClearIndicator {...props}>\n      <Box\n        paddingRight={1}\n        style={{\n          transform: 'scale(0.85)',\n        }}\n      >\n        <Text muted size={0}>\n          <CloseIcon />\n        </Text>\n      </Box>\n    </components.ClearIndicator>\n  )\n}\n\nconst Menu = (props: any) => {\n  return (\n    <components.Menu {...props}>\n      <Card radius={1} shadow={2}>\n        {props.children}\n      </Card>\n    </components.Menu>\n  )\n}\n\nconst MenuList = (props: any) => {\n  const {children} = props\n\n  const MAX_ROWS = 5\n  const OPTION_HEIGHT = 33\n\n  if (Array.isArray(children)) {\n    const height =\n      children.length > MAX_ROWS ? OPTION_HEIGHT * MAX_ROWS : children.length * OPTION_HEIGHT\n\n    return (\n      <Virtuoso\n        className=\"media__custom-scrollbar\"\n        itemContent={(index) => {\n          const item = children[index]\n          return <Option {...item.props} />\n        }}\n        style={{height}}\n        totalCount={children.length}\n      />\n    )\n  }\n  return <components.MenuList {...props}>{children}</components.MenuList>\n}\n\nconst NoOptionsMessage = (props: any) => {\n  return <components.NoOptionsMessage {...props}>{props.children}</components.NoOptionsMessage>\n}\n\nconst Option = (props: any) => {\n  return (\n    <Box padding={1}>\n      <components.Option {...props}>\n        <Box paddingY={1}>\n          <Text size={1} style={{color: 'inherit'}} textOverflow=\"ellipsis\">\n            {props.children}\n          </Text>\n        </Box>\n      </components.Option>\n    </Box>\n  )\n}\n\nconst SingleValue = (props: any) => {\n  return (\n    <components.SingleValue {...props}>\n      <Text size={1} textOverflow=\"ellipsis\">\n        {props.children}\n      </Text>\n    </components.SingleValue>\n  )\n}\n\nexport const reactSelectComponents = {\n  ClearIndicator,\n  DropdownIndicator: null,\n  IndicatorSeparator: null,\n  Menu,\n  MenuList,\n  NoOptionsMessage,\n  Option,\n  SingleValue,\n}\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\nimport Select from 'react-select'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {operators} from '../../config/searchFacets'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\nimport {selectTags} from '../../modules/tags'\nimport {reactSelectComponents, reactSelectStyles} from '../../styled/react-select/single'\nimport type {\n  TagSelectOption,\n  SearchFacetInputSearchableProps,\n  SearchFacetOperatorType,\n  WithId,\n} from '../../types'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n  facet: WithId<SearchFacetInputSearchableProps>\n}\n\nconst SearchFacetTags = ({facet}: Props) => {\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const {excludeTagSlugs} = useToolOptions()\n  const tagsAll = useTypedSelector((state) => selectTags(state))\n  const tags =\n    excludeTagSlugs.length > 0\n      ? tagsAll.filter((t) => !excludeTagSlugs.includes(t.tag.name.current))\n      : tagsAll\n  const tagsFetching = useTypedSelector((state) => state.tags.fetching)\n  const allTagOptions = getTagSelectOptions(tags)\n\n  const popoverProps = usePortalPopoverProps()\n\n  const handleChange = (option: TagSelectOption) => {\n    dispatch(\n      searchActions.facetsUpdateById({\n        id: facet.id,\n        value: option,\n      }),\n    )\n  }\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(\n      searchActions.facetsUpdateById({\n        id: facet.id,\n        operatorType,\n      }),\n    )\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet.operatorType\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={operators[selectedOperatorType].label}\n            />\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      space={4}\n                      style={{minWidth: '150px'}}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* Value */}\n      {!operators[selectedOperatorType].hideInput && (\n        <Box marginX={1} style={{width: '160px'}}>\n          <Select\n            components={reactSelectComponents}\n            instanceId=\"facet-searchable\"\n            isClearable\n            isDisabled={tagsFetching}\n            isSearchable\n            name=\"tags\"\n            noOptionsMessage={() => 'No tags'}\n            onChange={(value: any) => handleChange(value as TagSelectOption)}\n            options={allTagOptions}\n            placeholder={tagsFetching ? 'Loading...' : 'Select...'}\n            styles={reactSelectStyles(scheme)}\n            value={facet?.value}\n          />\n        </Box>\n      )}\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetTags\n","import {Box, Flex, Inline, rem, type Theme} from '@sanity/ui'\nimport {styled, css} from 'styled-components'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport SearchFacetNumber from '../SearchFacetNumber'\nimport SearchFacetSelect from '../SearchFacetSelect'\nimport SearchFacetString from '../SearchFacetString'\nimport SearchFacetTags from '../SearchFacetTags'\n\ntype Props = {\n  layout?: 'inline' | 'stack'\n}\n\nconst StackContainer = styled(Flex)(({theme}: {theme: Theme}) => {\n  return css`\n    > * {\n      margin-bottom: ${rem(theme.sanity.space[2]!)};\n    }\n  `\n})\n\nconst SearchFacets = (props: Props) => {\n  const {layout = 'inline'} = props\n\n  // Redux\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n\n  const Items = searchFacets.map((facet) => {\n    const key = facet.id\n    if (facet.type === 'number') {\n      return <SearchFacetNumber facet={facet} key={key} />\n    }\n\n    if (facet.type === 'searchable') {\n      return <SearchFacetTags facet={facet} key={key} />\n    }\n\n    if (facet.type === 'select') {\n      return <SearchFacetSelect facet={facet} key={key} />\n    }\n\n    if (facet.type === 'string') {\n      return <SearchFacetString facet={facet} key={key} />\n    }\n\n    return null\n  })\n\n  if (layout === 'inline') {\n    if (searchFacets.length === 0) {\n      return null\n    }\n\n    return (\n      <Box marginBottom={2}>\n        <Inline space={2}>{Items}</Inline>\n      </Box>\n    )\n  }\n\n  if (layout === 'stack') {\n    return (\n      <StackContainer align=\"flex-start\" direction=\"column\">\n        {Items}\n      </StackContainer>\n    )\n  }\n\n  throw Error('Invalid layout')\n}\n\nexport default SearchFacets\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Button, Flex, Menu, MenuButton, MenuDivider, MenuGroup, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport {FACETS} from '../../constants'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\nimport type {SearchFacetDivider, SearchFacetGroup, SearchFacetInputProps} from '../../types'\n\nconst SearchFacetsControl = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const assetTypes = useTypedSelector((state) => state.assets.assetTypes)\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n  const selectedDocument = useTypedSelector((state) => state.selected.document)\n\n  const popoverProps = usePortalPopoverProps()\n\n  const {creditLine} = useToolOptions()\n\n  const isTool = !selectedDocument\n\n  const filteredFacets = FACETS\n    // Filter facets based on current context, whether it's invoked as a tool, or via selection through via custom asset source.\n    .filter((facet) => {\n      // Remove credit line filter if it's not enabled\n      if (!creditLine?.enabled && facet?.type === 'string' && facet?.name === 'creditLine') {\n        return false\n      }\n\n      if (facet.type === 'group' || facet.type === 'divider') {\n        return true\n      }\n\n      if (isTool) {\n        return !facet?.selectOnly\n      }\n\n      const matchingAssetTypes = facet.assetTypes.filter((assetType) =>\n        assetTypes.includes(assetType),\n      )\n      return matchingAssetTypes.length > 0\n    })\n    // Remove adjacent and leading / trailing dividers\n    .filter((facet, index, facets) => {\n      const previousFacet = facets[index - 1]\n      // Ignore leading + trailing dividers\n      if (facet.type === 'divider' && (index === 0 || index === facets.length - 1)) {\n        return false\n      }\n      // Ignore adjacent dividers\n      if (facet.type === 'divider' && previousFacet?.type === 'divider') {\n        return false\n      }\n      return true\n    })\n\n  const hasSearchFacets = filteredFacets.length > 0\n\n  const renderMenuFacets = (\n    facets: (SearchFacetDivider | SearchFacetGroup | SearchFacetInputProps)[],\n    level: number = 0,\n  ) => {\n    return (\n      <>\n        {facets?.map((facet, index) => {\n          if (facet.type === 'divider') {\n            return <MenuDivider key={index} />\n          }\n\n          // Recursively render menu facets\n          if (facet.type === 'group') {\n            return (\n              <MenuGroup key={`group-${level}-${index}`} text={facet.title} title={facet.title}>\n                {renderMenuFacets(facet.facets, level + 1)}\n              </MenuGroup>\n            )\n          }\n\n          if (facet) {\n            const disabled =\n              !facet.operatorTypes && !!searchFacets.find((v) => v.name === facet.name)\n\n            return (\n              <MenuItem\n                disabled={disabled}\n                fontSize={1}\n                key={facet.name}\n                onClick={() => dispatch(searchActions.facetsAdd({facet}))}\n                padding={2}\n                text={facet.title}\n              />\n            )\n          }\n\n          return null\n        })}\n      </>\n    )\n  }\n\n  return (\n    <Flex>\n      {/* Add filter button */}\n      <MenuButton\n        button={\n          <Button\n            disabled={!hasSearchFacets}\n            fontSize={1}\n            icon={AddIcon}\n            mode=\"bleed\"\n            space={2}\n            text=\"Add filter\"\n            tone=\"primary\"\n          />\n        }\n        id=\"facets\"\n        menu={<Menu>{renderMenuFacets(filteredFacets)}</Menu>}\n        popover={{\n          ...popoverProps,\n          placement: 'right-start',\n        }}\n      />\n\n      {/* Clear facets button */}\n      {searchFacets.length > 0 && (\n        <Button\n          fontSize={1}\n          mode=\"bleed\"\n          onClick={() => dispatch(searchActions.facetsClear())}\n          text=\"Clear\"\n        />\n      )}\n    </Flex>\n  )\n}\n\nexport default SearchFacetsControl\n","import {Box} from '@sanity/ui'\nimport {type ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogSearchFacetsProps} from '../../types'\nimport Dialog from '../Dialog'\nimport SearchFacets from '../SearchFacets'\nimport SearchFacetsControl from '../SearchFacetsControl'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogSearchFacetsProps\n}\n\nconst DialogSearchFacets = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.clear())\n  }, [dispatch])\n\n  return (\n    <Dialog animate header=\"Filters\" id={id} onClose={handleClose} width={1}>\n      <Box padding={3}>\n        <SearchFacets layout=\"stack\" />\n        <SearchFacetsControl />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogSearchFacets\n","import {Box, Flex} from '@sanity/ui'\nimport {type ReactNode, useEffect} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\n\nimport {tagFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {tagsActions} from '../../modules/tags'\nimport type {DialogTagCreateProps, TagFormData} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogTagCreateProps\n}\n\nconst DialogTagCreate = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  const dispatch = useDispatch()\n\n  const creating = useTypedSelector((state) => state.tags.creating)\n  const creatingError = useTypedSelector((state) => state.tags.creatingError)\n\n  const {\n    // Read the formState before render to subscribe the form state through Proxy\n    formState: {errors, isDirty, isValid},\n    handleSubmit,\n    register,\n    setError,\n  } = useForm<TagFormData>({\n    defaultValues: {\n      name: '',\n    },\n    mode: 'onChange',\n    resolver: zodFormResolver<TagFormData>(tagFormSchema),\n  })\n\n  const formUpdating = creating\n\n  const handleClose = () => {\n    dispatch(dialogActions.clear())\n  }\n\n  // - submit react-hook-form\n  const onSubmit: SubmitHandler<TagFormData> = (formData) => {\n    const sanitizedFormData = sanitizeFormData(formData)\n\n    dispatch(tagsActions.createRequest({name: sanitizedFormData['name']}))\n  }\n\n  useEffect(() => {\n    if (creatingError) {\n      setError('name', {\n        message: creatingError?.message,\n      })\n    }\n  }, [creatingError, setError])\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"flex-end\">\n        {/* Submit button */}\n        <FormSubmitButton\n          disabled={formUpdating || !isDirty || !isValid}\n          isValid={isValid}\n          onClick={handleSubmit(onSubmit)}\n        />\n      </Flex>\n    </Box>\n  )\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      header=\"Create Tag\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      {/* Form fields */}\n      <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n        {/* Hidden button to enable enter key submissions */}\n        <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n        {/* Title */}\n        <FormFieldInputText\n          {...register('name')}\n          disabled={formUpdating}\n          error={errors?.name?.message}\n          label=\"Name\"\n          name=\"name\"\n        />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogTagCreate\n","import type {MutationEvent} from '@sanity/client'\nimport {Box, Button, Card, Flex, Text} from '@sanity/ui'\nimport groq from 'groq'\nimport {type ReactNode, useCallback, useEffect, useState} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\n\nimport {tagFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {dialogActions} from '../../modules/dialog'\nimport {selectTagById, tagsActions} from '../../modules/tags'\nimport type {DialogTagEditProps, Tag, TagFormData} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogTagEditProps\n}\n\nconst DialogTagEdit = (props: Props) => {\n  const {\n    children,\n    dialog: {id, tagId},\n  } = props\n\n  const client = useVersionedClient()\n\n  const dispatch = useDispatch()\n  const tagItem = useTypedSelector((state) => selectTagById(state, String(tagId))) // TODO: double check string cast\n\n  // - Generate a snapshot of the current tag\n  const [tagSnapshot, setTagSnapshot] = useState(tagItem?.tag)\n\n  const currentTag = tagItem ? tagItem?.tag : tagSnapshot\n  const generateDefaultValues = useCallback(\n    (tag?: Tag) => ({\n      name: tag?.name?.current || '',\n    }),\n    [],\n  )\n\n  const {\n    // Read the formState before render to subscribe the form state through Proxy\n    formState: {errors, isDirty, isValid},\n    handleSubmit,\n    register,\n    reset,\n    setError,\n  } = useForm<TagFormData>({\n    defaultValues: generateDefaultValues(tagItem?.tag),\n    mode: 'onChange',\n    resolver: zodFormResolver<TagFormData>(tagFormSchema),\n  })\n\n  const formUpdating = !tagItem || tagItem?.updating\n\n  const handleClose = () => {\n    dispatch(dialogActions.remove({id}))\n  }\n\n  // Submit react-hook-form\n  const onSubmit: SubmitHandler<TagFormData> = (formData) => {\n    if (!tagItem?.tag) {\n      return\n    }\n    const sanitizedFormData = sanitizeFormData(formData)\n    dispatch(\n      tagsActions.updateRequest({\n        closeDialogId: tagItem?.tag?._id,\n        formData: {\n          name: {\n            _type: 'slug',\n            current: sanitizedFormData['name'],\n          },\n        },\n        tag: tagItem?.tag,\n      }),\n    )\n  }\n\n  const handleDelete = () => {\n    if (!tagItem?.tag) {\n      return\n    }\n\n    dispatch(\n      dialogActions.showConfirmDeleteTag({\n        closeDialogId: tagItem?.tag?._id,\n        tag: tagItem?.tag,\n      }),\n    )\n  }\n\n  const handleTagUpdate = useCallback(\n    (update: MutationEvent) => {\n      const {result, transition} = update\n      if (result && transition === 'update') {\n        // Regenerate snapshot\n        setTagSnapshot(result as Tag)\n        // Reset react-hook-form\n        reset(generateDefaultValues(result as Tag))\n      }\n    },\n    [reset, generateDefaultValues],\n  )\n\n  useEffect(() => {\n    if (tagItem?.error) {\n      setError('name', {\n        message: tagItem.error?.message,\n      })\n    }\n  }, [setError, tagItem?.error])\n\n  // - Listen for asset mutations and update snapshot\n  useEffect(() => {\n    if (!tagItem?.tag) {\n      return undefined\n    }\n\n    // Remember that Sanity listeners ignore joins, order clauses and projections\n    const subscriptionAsset = client\n      .listen(groq`*[_id == $id]`, {id: tagItem?.tag._id})\n      .subscribe(handleTagUpdate)\n\n    return () => {\n      subscriptionAsset?.unsubscribe()\n    }\n  }, [client, handleTagUpdate, tagItem?.tag])\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"space-between\">\n        {/* Delete button */}\n        <Button\n          disabled={formUpdating}\n          fontSize={1}\n          mode=\"bleed\"\n          onClick={handleDelete}\n          text=\"Delete\"\n          tone=\"critical\"\n        />\n\n        {/* Submit button */}\n        <FormSubmitButton\n          disabled={formUpdating || !isDirty || !isValid}\n          isValid={isValid}\n          lastUpdated={tagItem?.tag?._updatedAt}\n          onClick={handleSubmit(onSubmit)}\n        />\n      </Flex>\n    </Box>\n  )\n\n  if (!currentTag) {\n    return null\n  }\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      header=\"Edit Tag\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      {/* Form fields */}\n      <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n        {/* Deleted notification */}\n        {!tagItem && (\n          <Card marginBottom={3} padding={3} radius={2} shadow={1} tone=\"critical\">\n            <Text size={1}>This tag cannot be found – it may have been deleted.</Text>\n          </Card>\n        )}\n\n        {/* Hidden button to enable enter key submissions */}\n        <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n        {/* Title */}\n        <FormFieldInputText\n          {...register('name')}\n          disabled={formUpdating}\n          error={errors?.name?.message}\n          label=\"Name\"\n          name=\"name\"\n        />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogTagEdit\n","import {ArrowDownIcon} from '@sanity/icons/ArrowDown'\nimport {ArrowUpIcon} from '@sanity/icons/ArrowUp'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {Box, Button, Container, Flex, Text, Tooltip} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {styled} from 'styled-components'\n\nimport {inputs} from '../../config/searchFacets'\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPicked} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {searchActions, selectIsSearchFacetTag} from '../../modules/search'\nimport type {SearchFacetInputSearchableProps, TagActions, TagItem} from '../../types'\n\ntype Props = {\n  actions?: TagActions[]\n  tag: TagItem\n}\n\nconst TagContainer = styled(Flex)`\n  height: ${PANEL_HEIGHT}px;\n`\n\nconst ButtonContainer = styled(Flex)`\n  @media (pointer: fine) {\n    visibility: hidden;\n  }\n\n  @media (hover: hover) and (pointer: fine) {\n    ${TagContainer}:hover & {\n      visibility: visible;\n    }\n  }\n`\n\ntype TagButtonProps = {\n  disabled?: boolean\n  icon: ReactNode\n  onClick: () => void\n  tone?: 'critical' | 'primary'\n  tooltip: string\n}\n\nconst TagButton = (props: TagButtonProps) => {\n  const {disabled, icon, onClick, tone, tooltip} = props\n\n  return (\n    <Tooltip\n      animate\n      content={\n        <Container padding={2} width={0}>\n          <Text muted size={1}>\n            {tooltip}\n          </Text>\n        </Container>\n      }\n      disabled={'ontouchstart' in window}\n      placement=\"top\"\n      portal\n    >\n      <Button\n        disabled={disabled}\n        fontSize={1}\n        icon={icon}\n        mode=\"bleed\"\n        onClick={onClick}\n        padding={2}\n        tone={tone}\n      />\n    </Tooltip>\n  )\n}\n\nconst Tag = (props: Props) => {\n  const {actions, tag} = props\n\n  // Redux\n  const dispatch = useDispatch()\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n  const isSearchFacetTag = useTypedSelector((state) => selectIsSearchFacetTag(state, tag?.tag?._id))\n\n  // Callbacks\n  const handleSearchFacetTagRemove = () => {\n    dispatch(searchActions.facetsRemoveByTag({tagId: tag.tag._id}))\n  }\n\n  const handleShowAddTagToAssetsDialog = () => {\n    dispatch(dialogActions.showConfirmAssetsTagAdd({assetsPicked, tag: tag.tag}))\n  }\n\n  const handleShowRemoveTagFromAssetsDialog = () => {\n    dispatch(dialogActions.showConfirmAssetsTagRemove({assetsPicked, tag: tag.tag}))\n  }\n\n  const handleShowTagDeleteDialog = () => {\n    dispatch(dialogActions.showConfirmDeleteTag({tag: tag.tag}))\n  }\n\n  const handleShowTagEditDialog = () => {\n    dispatch(DIALOG_ACTIONS.showTagEdit({tagId: tag?.tag?._id}))\n  }\n\n  const handleSearchFacetTagAddOrUpdate = () => {\n    const searchFacet = {\n      ...inputs.tag,\n      value: {\n        label: tag?.tag?.name?.current,\n        value: tag?.tag?._id,\n      },\n    } as SearchFacetInputSearchableProps\n\n    if (isSearchFacetTag) {\n      dispatch(\n        searchActions.facetsUpdate({\n          name: 'tag',\n          operatorType: 'references',\n          value: searchFacet.value,\n        }),\n      )\n    } else {\n      dispatch(searchActions.facetsAdd({facet: searchFacet}))\n    }\n  }\n\n  return (\n    <TagContainer align=\"center\" flex={1} justify=\"space-between\" paddingLeft={3}>\n      <Box flex={1}>\n        <Text\n          muted\n          size={1}\n          style={{\n            opacity: tag?.updating ? 0.5 : 1.0,\n            userSelect: 'none',\n          }}\n          textOverflow=\"ellipsis\"\n        >\n          {tag?.tag?.name?.current}\n        </Text>\n      </Box>\n\n      <ButtonContainer align=\"center\" style={{flexShrink: 0}}>\n        {/* Search facet toggle */}\n        {actions?.includes('search') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={isSearchFacetTag ? <CloseIcon /> : <SearchIcon />}\n            onClick={\n              isSearchFacetTag ? handleSearchFacetTagRemove : handleSearchFacetTagAddOrUpdate\n            }\n            tooltip={isSearchFacetTag ? 'Remove filter' : 'Filter by tag'}\n          />\n        )}\n        {/* Edit icon */}\n        {actions?.includes('edit') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<EditIcon />}\n            onClick={handleShowTagEditDialog}\n            tone=\"primary\"\n            tooltip=\"Edit tag\"\n          />\n        )}\n        {/* Apply to all */}\n        {actions?.includes('applyAll') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<ArrowUpIcon />}\n            onClick={handleShowAddTagToAssetsDialog}\n            tone=\"primary\"\n            tooltip=\"Add tag to selected assets\"\n          />\n        )}\n        {/* Remove from all */}\n        {actions?.includes('removeAll') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<ArrowDownIcon />}\n            onClick={handleShowRemoveTagFromAssetsDialog}\n            tone=\"critical\"\n            tooltip=\"Remove tag from selected assets\"\n          />\n        )}\n\n        {/* Delete icon */}\n        {actions?.includes('delete') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<TrashIcon />}\n            onClick={handleShowTagDeleteDialog}\n            tone=\"critical\"\n            tooltip=\"Delete tag\"\n          />\n        )}\n      </ButtonContainer>\n    </TagContainer>\n  )\n}\n\nexport default Tag\n","import {Flex, Label} from '@sanity/ui'\nimport {memo, useState} from 'react'\nimport {Virtuoso} from 'react-virtuoso'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPicked} from '../../modules/assets'\nimport type {TagActions, TagItem} from '../../types'\nimport Tag from '../Tag'\n\nconst VirtualRow = memo(\n  ({\n    isScrolling,\n    item,\n  }: {\n    isScrolling?: boolean\n    item:\n      | string\n      | (TagItem & {\n          actions: TagActions[]\n        })\n  }) => {\n    // Render label\n    if (typeof item === 'string') {\n      return (\n        <Flex\n          align=\"center\"\n          justify=\"space-between\"\n          key={item}\n          paddingX={3}\n          style={{height: `${PANEL_HEIGHT}px`}}\n        >\n          <Label size={0}>{item}</Label>\n        </Flex>\n      )\n    }\n\n    // Render tag - only display actions if we're not in the process of scrolling\n    return <Tag actions={isScrolling ? undefined : item.actions} key={item.tag?._id} tag={item} />\n  },\n)\n\nconst TagsVirtualized = ({tags}: {tags: TagItem[]}) => {\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n\n  // State\n  const [isScrolling, setIsScrolling] = useState(false)\n\n  // TODO: refactor, there's most certainly a more performant way to do this\n\n  // Filter out all tag IDS used (across all) and dedupe\n  const pickedTagIds = assetsPicked?.reduce((acc: string[], val) => {\n    const assetTagIds = val?.asset?.opt?.media?.tags?.map((tag) => tag._ref) || []\n    acc = acc.concat(assetTagIds)\n    return acc\n  }, [])\n  const pickedTagIdsUnique = [...new Set(pickedTagIds)]\n\n  // Segment tags into two buckets:\n  // 1. those which exist in all picked assets ('applied to all')\n  // 2. those which exist in some picked assets ('applied to some')\n  const tagIdsSegmented = pickedTagIdsUnique.reduce(\n    (acc: {appliedToAll: string[]; appliedToSome: string[]}, tagId) => {\n      const tagIsInEveryAsset = assetsPicked.every((assetItem) => {\n        const tagIndex =\n          assetItem.asset.opt?.media?.tags?.findIndex((tag) => tag._ref === tagId) ?? -1\n        return tagIndex >= 0\n      })\n\n      if (tagIsInEveryAsset) {\n        acc.appliedToAll.push(tagId)\n      } else {\n        acc.appliedToSome.push(tagId)\n      }\n\n      return acc\n    },\n    {\n      appliedToAll: [],\n      appliedToSome: [],\n    },\n  )\n\n  const tagsAppliedToAll = tags\n    .filter((tag) => tagIdsSegmented.appliedToAll.includes(tag.tag._id))\n    .map((tagItem) => ({\n      ...tagItem,\n      actions: ['delete', 'edit', 'removeAll', 'search'] as TagActions[],\n    }))\n  const tagsAppliedToSome = tags\n    .filter((tag) => tagIdsSegmented.appliedToSome.includes(tag.tag._id))\n    .map((tagItem) => ({\n      ...tagItem,\n      actions: ['applyAll', 'delete', 'edit', 'removeAll', 'search'] as TagActions[],\n    }))\n  const tagsUnused = tags\n    .filter((tag) => !pickedTagIdsUnique.includes(tag.tag._id))\n    .map((tagItem) => ({\n      ...tagItem,\n      actions: ['applyAll', 'delete', 'edit', 'search'] as TagActions[],\n    }))\n\n  let items: (\n    | string\n    | (TagItem & {\n        actions: TagActions[]\n      })\n  )[] = []\n  if (assetsPicked.length === 0) {\n    items = tags.map((tagItem) => ({\n      ...tagItem,\n      actions: ['delete', 'edit', 'search'] as TagActions[],\n    }))\n  } else {\n    if (tagsAppliedToAll?.length > 0) {\n      items = [\n        ...items, //\n        assetsPicked.length === 1 ? 'Used' : 'Used by all',\n        ...tagsAppliedToAll,\n      ]\n    }\n    if (tagsAppliedToSome?.length > 0) {\n      items = [\n        ...items, //\n        'Used by some',\n        ...tagsAppliedToSome,\n      ]\n    }\n    if (tagsUnused?.length > 0) {\n      items = [\n        ...items, //\n        'Unused',\n        ...tagsUnused,\n      ]\n    }\n  }\n\n  return (\n    <Virtuoso\n      className=\"media__custom-scrollbar\"\n      computeItemKey={(index) => {\n        const item = items[index]\n        if (typeof item === 'string') {\n          return item\n        }\n        return item!.tag._id\n      }}\n      isScrolling={setIsScrolling}\n      itemContent={(index) => {\n        return <VirtualRow isScrolling={isScrolling} item={items[index]!} />\n      }}\n      style={{flex: 1, overflowX: 'hidden'}}\n      totalCount={items.length}\n    />\n  )\n}\n\nexport default TagsVirtualized\n","import {ComposeIcon} from '@sanity/icons/Compose'\nimport {Box, Button, Flex, Inline, Label} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  allowCreate?: boolean\n  light?: boolean\n  title: string\n}\n\nconst TagViewHeader = ({allowCreate, light, title}: Props) => {\n  const scheme = useColorSchemeValue()\n\n  const dispatch = useDispatch()\n  const tagsCreating = useTypedSelector((state) => state.tags.creating)\n  const tagsFetching = useTypedSelector((state) => state.tags.fetching)\n\n  const handleTagCreate = () => {\n    dispatch(DIALOG_ACTIONS.showTagCreate())\n  }\n\n  return (\n    <>\n      <Flex\n        align=\"center\"\n        justify=\"space-between\"\n        paddingLeft={3}\n        style={{\n          background: light ? getSchemeColor(scheme, 'bg') : 'inherit',\n          borderBottom: '1px solid var(--card-border-color)',\n          flexShrink: 0,\n          height: `${PANEL_HEIGHT}px`,\n        }}\n      >\n        <Inline space={2}>\n          <Label size={0}>{title}</Label>\n          {tagsFetching && (\n            <Label size={0} style={{opacity: 0.3}}>\n              Loading...\n            </Label>\n          )}\n        </Inline>\n        {/* Create new tag button */}\n        {allowCreate && (\n          <Box marginRight={1}>\n            <Button\n              disabled={tagsCreating}\n              fontSize={1} //\n              icon={ComposeIcon}\n              mode=\"bleed\"\n              onClick={handleTagCreate}\n              style={{\n                background: 'transparent',\n                boxShadow: 'none',\n              }}\n            />\n          </Box>\n        )}\n      </Flex>\n    </>\n  )\n}\n\nexport default TagViewHeader\n","import {Box, Flex, Text} from '@sanity/ui'\n\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPickedLength} from '../../modules/assets'\nimport {selectTags} from '../../modules/tags'\nimport TagsVirtualized from '../TagsVirtualized'\nimport TagViewHeader from '../TagViewHeader'\n\nconst TagView = () => {\n  const numPickedAssets = useTypedSelector(selectAssetsPickedLength)\n  const {excludeTagSlugs} = useToolOptions()\n  const tagsAll = useTypedSelector(selectTags)\n  const tags =\n    excludeTagSlugs.length > 0\n      ? tagsAll.filter((t) => !excludeTagSlugs.includes(t.tag.name.current))\n      : tagsAll\n  const fetching = useTypedSelector((state) => state.tags.fetching)\n  const fetchCount = useTypedSelector((state) => state.tags.fetchCount)\n  const fetchComplete = fetchCount !== -1\n  const hasTags = !fetching && tags?.length > 0\n  const hasPicked = !!(numPickedAssets > 0)\n\n  return (\n    <Flex direction=\"column\" flex={1} height=\"fill\">\n      <TagViewHeader\n        allowCreate\n        light={hasPicked}\n        title={hasPicked ? 'Tags (in selection)' : 'Tags'}\n      />\n\n      {fetchComplete && !hasTags && (\n        <Box padding={3}>\n          <Text muted size={1}>\n            <em>No tags</em>\n          </Text>\n        </Box>\n      )}\n\n      {hasTags && <TagsVirtualized tags={tags} />}\n    </Flex>\n  )\n}\n\nexport default TagView\n","import {Box} from '@sanity/ui'\nimport {type ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogTagsProps} from '../../types'\nimport Dialog from '../Dialog'\nimport TagView from '../TagView'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogTagsProps\n}\n\nconst DialogTags = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.clear())\n  }, [dispatch])\n\n  return (\n    <Dialog animate header=\"All Tags\" id={id} onClose={handleClose} width={1}>\n      <Box\n        style={{\n          height: '100%',\n          minHeight: '420px', // explicit height required as <TagView> is virtualized\n        }}\n      >\n        <TagView />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogTags\n","import useTypedSelector from '../../hooks/useTypedSelector'\nimport type {Dialog} from '../../types'\nimport DialogAssetEdit from '../DialogAssetEdit'\nimport DialogAllAssets from '../DialogAssetsOverView'\nimport DialogConfirm from '../DialogConfirm'\nimport DialogFolderCreate from '../DialogFolderCreate'\nimport DialogFolderMove from '../DialogFolderMove'\nimport DialogFolderRename from '../DialogFolderRename'\nimport DialogFolders from '../DialogFolders'\nimport DialogSearchFacets from '../DialogSearchFacets'\nimport DialogTagCreate from '../DialogTagCreate'\nimport DialogTagEdit from '../DialogTagEdit'\nimport DialogTags from '../DialogTags'\n\nconst Dialogs = () => {\n  // Redux\n  const currentDialogs = useTypedSelector((state) => state.dialog.items)\n\n  const renderDialogs = (dialogs: Dialog[], index: number) => {\n    if (dialogs.length === 0 || index >= dialogs.length) {\n      return null\n    }\n\n    const dialog = dialogs[index]!\n    const childDialogs = renderDialogs(dialogs, index + 1)\n\n    if (dialog.type === 'assetEdit') {\n      return (\n        <DialogAssetEdit dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogAssetEdit>\n      )\n    }\n\n    if (dialog.type === 'confirm') {\n      return (\n        <DialogConfirm dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogConfirm>\n      )\n    }\n\n    if (dialog.type === 'folderCreate') {\n      return (\n        <DialogFolderCreate dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogFolderCreate>\n      )\n    }\n\n    if (dialog.type === 'folderMove') {\n      return (\n        <DialogFolderMove dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogFolderMove>\n      )\n    }\n\n    if (dialog.type === 'folderRename') {\n      return (\n        <DialogFolderRename dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogFolderRename>\n      )\n    }\n\n    if (dialog.type === 'folders') {\n      return (\n        <DialogFolders dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogFolders>\n      )\n    }\n\n    if (dialog.type === 'searchFacets') {\n      return (\n        <DialogSearchFacets dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogSearchFacets>\n      )\n    }\n\n    if (dialog.type === 'tagCreate') {\n      return (\n        <DialogTagCreate dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogTagCreate>\n      )\n    }\n\n    if (dialog.type === 'tagEdit') {\n      return (\n        <DialogTagEdit dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogTagEdit>\n      )\n    }\n\n    if (dialog.type === 'tags') {\n      return (\n        <DialogTags dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogTags>\n      )\n    }\n\n    if (dialog.type === 'dialogAllAssets') {\n      return (\n        <DialogAllAssets dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogAllAssets>\n      )\n    }\n\n    return null\n  }\n\n  return renderDialogs(currentDialogs, 0)\n}\n\nexport default Dialogs\n","import {useToast} from '@sanity/ui'\nimport {useEffect} from 'react'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\n\nconst Notifications = () => {\n  const items = useTypedSelector((state) => state.notifications.items)\n  const toast = useToast()\n\n  useEffect(() => {\n    if (items.length > 0) {\n      const lastItem = items[items.length - 1]!\n      toast.push({\n        closable: true,\n        status: lastItem.status,\n        title: lastItem.title,\n      })\n    }\n  }, [items, toast])\n\n  return null\n}\n\nexport default Notifications\n","import {type PayloadAction, createSlice} from '@reduxjs/toolkit'\n\ntype DebugReducerState = {\n  badConnection: boolean\n  enabled: boolean\n}\n\nconst initialState = {\n  badConnection: false,\n  enabled: false,\n} as DebugReducerState\n\nconst debugSlice = createSlice({\n  name: 'debug',\n  initialState,\n  reducers: {\n    setBadConnection(state, action: PayloadAction<boolean>) {\n      state.badConnection = action.payload\n    },\n    toggleEnabled(state) {\n      state.enabled = !state.enabled\n    },\n  },\n})\n\nexport const debugActions = {...debugSlice.actions}\n\nexport default debugSlice.reducer\n","import {type PayloadAction, createSlice} from '@reduxjs/toolkit'\nimport pluralize from 'pluralize'\nimport type {AnyAction} from 'redux'\nimport {ofType} from 'redux-observable'\nimport {of} from 'rxjs'\nimport {bufferTime, filter, mergeMap} from 'rxjs/operators'\n\nimport type {HttpError, ImageAsset, MyEpic} from '../../types'\nimport {assetsActions} from '../assets'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {foldersActions} from '../folders'\nimport {tagsActions} from '../tags'\nimport {uploadsActions} from '../uploads'\n\ntype Notification = {\n  asset?: ImageAsset\n  status?: 'error' | 'warning' | 'success' | 'info'\n  title?: string\n}\n\ntype NotificationsReducerState = {\n  items: Notification[]\n}\n\nfunction messageFromGenericErrorPayload(payload: unknown): string {\n  if (!payload || typeof payload !== 'object') {\n    return 'Unknown error'\n  }\n  if (\n    'error' in payload &&\n    payload.error &&\n    typeof payload.error === 'object' &&\n    payload.error !== null &&\n    'message' in payload.error\n  ) {\n    return String((payload.error as HttpError).message)\n  }\n  if ('message' in payload && typeof (payload as HttpError).message === 'string') {\n    return String((payload as HttpError).message)\n  }\n  return 'Unknown error'\n}\n\nconst initialState = {\n  items: [],\n} as NotificationsReducerState\n\nconst notificationsSlice = createSlice({\n  name: 'notifications',\n  initialState,\n  reducers: {\n    add(state, action: PayloadAction<Notification>) {\n      const {asset, status, title} = action.payload\n      state.items.push({\n        asset,\n        status,\n        title,\n      })\n    },\n  },\n})\n\n// Epics\n\nexport const notificationsAssetsDeleteCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.deleteComplete.match),\n    mergeMap((action) => {\n      const {assetIds} = action.payload\n      const deletedCount = assetIds.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `${deletedCount} ${pluralize('asset', deletedCount)} deleted`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsDeleteErrorEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.deleteError.match),\n    mergeMap((action) => {\n      const {assetIds} = action.payload\n      const count = assetIds.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'error',\n          title: `Unable to delete ${count} ${pluralize(\n            'asset',\n            count,\n          )}. Please review any asset errors and try again.`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsUploadCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(uploadsActions.checkComplete.match),\n    mergeMap((action) => {\n      const {results} = action.payload\n\n      const count = Object.keys(results).length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `Uploaded ${count} ${pluralize('asset', count)}`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsTagsAddCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(ASSETS_ACTIONS.tagsAddComplete.match),\n    mergeMap((action) => {\n      const count = action?.payload?.assets?.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `Tag added to ${count} ${pluralize('asset', count)}`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsTagsRemoveCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(ASSETS_ACTIONS.tagsRemoveComplete.match),\n    mergeMap((action) => {\n      const count = action?.payload?.assets?.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `Tag removed from ${count} ${pluralize('asset', count)}`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsUpdateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.updateComplete.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const updatedCount = actions.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `${updatedCount} ${pluralize('asset', updatedCount)} updated`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsGenericErrorEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.fetchError.type,\n      assetsActions.updateError.type,\n      tagsActions.createError.type,\n      tagsActions.deleteError.type,\n      tagsActions.fetchError.type,\n      tagsActions.updateError.type,\n      foldersActions.createError.type,\n      foldersActions.deleteError.type,\n      foldersActions.renameError.type,\n      uploadsActions.uploadError.type,\n    ),\n    mergeMap((action: AnyAction) => {\n      const title = `An error occurred: ${messageFromGenericErrorPayload(action['payload'])}`\n      return of(\n        notificationsSlice.actions.add({\n          status: 'error',\n          title,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsTagCreateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.createComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag created`}))),\n  )\n\nexport const notificationsTagDeleteCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.deleteComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag deleted`}))),\n  )\n\nexport const notificationsTagUpdateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.updateComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag updated`}))),\n  )\n\nexport const notificationsFolderCreateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(foldersActions.createComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Folder created`}))),\n  )\n\nexport const notificationsFolderDeleteCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(foldersActions.deleteComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Folder deleted`}))),\n  )\n\nexport const notificationsFolderRenameCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(foldersActions.renameComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Folder renamed`}))),\n  )\n\nexport const notificationsActions = {...notificationsSlice.actions}\n\nexport default notificationsSlice.reducer\n","import {createSlice} from '@reduxjs/toolkit'\nimport type {SanityAssetDocument, SanityDocument, SanityImageAssetDocument} from '@sanity/client'\n\ntype SelectedReducerState = {\n  assets: (SanityAssetDocument | SanityImageAssetDocument)[]\n  document?: SanityDocument\n  documentAssetIds?: string[]\n}\n\nconst initialState = {\n  assets: [],\n  document: undefined,\n  documentAssetIds: [],\n} as SelectedReducerState\n\nconst selectedSlice = createSlice({\n  name: 'selected',\n  initialState,\n  reducers: {},\n})\n\nexport default selectedSlice.reducer\n","import {type Reducer, type StateFromReducersMapObject, combineReducers} from '@reduxjs/toolkit'\nimport {combineEpics} from 'redux-observable'\n\nimport assetsReducer, {\n  assetsDeleteEpic,\n  assetsFetchAfterDeleteAllEpic,\n  assetsFetchEpic,\n  assetsFolderSetEpic,\n  assetsFolderSetRefreshEpic,\n  assetsFetchNextPageEpic,\n  assetsFetchPageIndexEpic,\n  assetsListenerCreateQueueEpic,\n  assetsListenerDeleteQueueEpic,\n  assetsListenerUpdateQueueEpic,\n  assetsOrderSetEpic,\n  assetsSearchEpic,\n  assetsSortEpic,\n  assetsTagsAddEpic,\n  assetsTagsRemoveEpic,\n  assetsUnpickEpic,\n  assetsUpdateEpic,\n  assetsUpdateImageReferencesEpic,\n} from './assets'\nimport debugReducer from './debug'\nimport dialogReducer, {\n  dialogClearOnAssetUpdateEpic,\n  dialogTagCreateEpic,\n  dialogTagDeleteEpic,\n} from './dialog'\nimport foldersReducer, {\n  foldersCurrentFolderEpic,\n  foldersCreateEpic,\n  foldersDeleteEpic,\n  foldersFetchEpic,\n  foldersRefreshEpic,\n  foldersRenameEpic,\n} from './folders'\nimport notificationsReducer, {\n  notificationsAssetsDeleteErrorEpic,\n  notificationsAssetsDeleteCompleteEpic,\n  notificationsAssetsTagsAddCompleteEpic,\n  notificationsAssetsTagsRemoveCompleteEpic,\n  notificationsAssetsUpdateCompleteEpic,\n  notificationsFolderCreateCompleteEpic,\n  notificationsFolderDeleteCompleteEpic,\n  notificationsFolderRenameCompleteEpic,\n  notificationsGenericErrorEpic,\n  notificationsTagCreateCompleteEpic,\n  notificationsTagDeleteCompleteEpic,\n  notificationsTagUpdateCompleteEpic,\n} from './notifications'\nimport searchReducer, {searchFacetTagUpdateEpic} from './search'\nimport selectedReducer from './selected'\nimport tagsReducer, {\n  tagsCreateEpic,\n  tagsDeleteEpic,\n  tagsFetchEpic,\n  tagsListenerCreateQueueEpic,\n  tagsListenerDeleteQueueEpic,\n  tagsListenerUpdateQueueEpic,\n  tagsSortEpic,\n  tagsUpdateEpic,\n} from './tags'\nimport uploadsReducer, {\n  uploadsAssetStartEpic,\n  uploadsAssetUploadEpic,\n  uploadsCheckRequestEpic,\n  uploadsCompleteQueueEpic,\n} from './uploads'\n\nexport const rootEpic = combineEpics(\n  assetsDeleteEpic,\n  assetsFetchEpic,\n  assetsFetchAfterDeleteAllEpic,\n  assetsFetchNextPageEpic,\n  assetsFetchPageIndexEpic,\n  assetsFolderSetEpic,\n  assetsFolderSetRefreshEpic,\n  assetsListenerCreateQueueEpic,\n  assetsListenerDeleteQueueEpic,\n  assetsListenerUpdateQueueEpic,\n  assetsOrderSetEpic,\n  assetsSearchEpic,\n  assetsSortEpic,\n  assetsTagsAddEpic,\n  assetsTagsRemoveEpic,\n  assetsUnpickEpic,\n  assetsUpdateEpic,\n  assetsUpdateImageReferencesEpic,\n  dialogClearOnAssetUpdateEpic,\n  dialogTagCreateEpic,\n  dialogTagDeleteEpic,\n  foldersCurrentFolderEpic,\n  foldersCreateEpic,\n  foldersDeleteEpic,\n  foldersFetchEpic,\n  foldersRefreshEpic,\n  foldersRenameEpic,\n  notificationsAssetsDeleteErrorEpic,\n  notificationsAssetsDeleteCompleteEpic,\n  notificationsAssetsTagsAddCompleteEpic,\n  notificationsAssetsTagsRemoveCompleteEpic,\n  notificationsAssetsUpdateCompleteEpic,\n  notificationsFolderCreateCompleteEpic,\n  notificationsFolderDeleteCompleteEpic,\n  notificationsFolderRenameCompleteEpic,\n  notificationsGenericErrorEpic,\n  notificationsTagCreateCompleteEpic,\n  notificationsTagDeleteCompleteEpic,\n  notificationsTagUpdateCompleteEpic,\n  searchFacetTagUpdateEpic,\n  tagsCreateEpic,\n  tagsDeleteEpic,\n  tagsFetchEpic,\n  tagsListenerCreateQueueEpic,\n  tagsListenerDeleteQueueEpic,\n  tagsListenerUpdateQueueEpic,\n  tagsSortEpic,\n  tagsUpdateEpic,\n  uploadsAssetStartEpic,\n  uploadsAssetUploadEpic,\n  uploadsCheckRequestEpic,\n  uploadsCompleteQueueEpic,\n)\n\nconst reducers = {\n  assets: assetsReducer,\n  debug: debugReducer,\n  dialog: dialogReducer,\n  folders: foldersReducer,\n  notifications: notificationsReducer,\n  search: searchReducer,\n  selected: selectedReducer,\n  tags: tagsReducer,\n  uploads: uploadsReducer,\n}\n\ntype ReducersMapObject = typeof reducers\n\n// Workaround to avoid `$CombinedState` ts errors\n// source: https://github.com/reduxjs/redux-toolkit/issues/2068#issuecomment-1130796500\n// TODO: remove once we use `redux-toolkit` v2\nexport const rootReducer: Reducer<StateFromReducersMapObject<ReducersMapObject>> =\n  combineReducers(reducers)\n","import type {SanityDocument} from '@sanity/client'\n\nconst isPlainObject = (value: any) =>\n  value !== null && typeof value === 'object' && !Array.isArray(value)\n\n// Recursively search node for any linked asset ids (`asset._type === 'reference'`)\nconst getAssetIds = (node: Record<string, any>, acc: string[] = []) => {\n  if (Array.isArray(node)) {\n    node.forEach((v) => {\n      getAssetIds(v, acc)\n    })\n  }\n\n  if (isPlainObject(node)) {\n    if (node?.['asset']?._type === 'reference' && node?.['asset']?._ref) {\n      acc.push(node['asset']._ref)\n    }\n\n    Object.values(node).forEach((val) => {\n      getAssetIds(val, acc)\n    })\n  }\n\n  return acc\n}\n\n// Retrieve all linked asset ids from a Sanity document\nconst getDocumentAssetIds = (document: SanityDocument): string[] => {\n  const assetIds = getAssetIds(document)\n\n  // Sort and dedupe\n  return [...new Set(assetIds.sort())]\n}\n\nexport default getDocumentAssetIds\n","import {SUPPORTED_ASSET_TYPES} from '../constants'\nimport type {AssetType} from '../types'\n\n/**\n * Determines whether or not the provided asset type (eg 'image', 'file', 'arbitrary')\n * is a supported asset type for this plugin.\n *\n * @param assetType - The asset type to check.\n * @returns True if the asset type is supported, false otherwise.\n * @internal\n */\nexport function isSupportedAssetType(assetType?: string): assetType is AssetType {\n  const supported: string[] = SUPPORTED_ASSET_TYPES\n  return assetType ? supported.includes(assetType) : false\n}\n","import {type AnyAction, configureStore, type Store} from '@reduxjs/toolkit'\nimport type {SanityClient} from '@sanity/client'\nimport {type ReactNode, useState} from 'react'\nimport {Provider} from 'react-redux'\nimport {createEpicMiddleware} from 'redux-observable'\nimport type {AssetSourceComponentProps, SanityDocument} from 'sanity'\n\nimport {rootEpic, rootReducer} from '../../modules'\nimport {initialState as assetsInitialState} from '../../modules/assets'\n// import {assetsActions} from '../../modules/assets'\n// import {searchActions} from '../../modules/search'\n// import {uploadsActions} from '../../modules/uploads'\nimport type {RootReducerState} from '../../modules/types'\nimport getDocumentAssetIds from '../../utils/getDocumentAssetIds'\nimport {isSupportedAssetType} from '../../utils/isSupportedAssetType'\n\ntype Props = {\n  assetType?: AssetSourceComponentProps['assetType']\n  children?: ReactNode\n  client: SanityClient\n  document?: SanityDocument\n  excludeTagSlugs?: string[]\n  selectedAssets?: AssetSourceComponentProps['selectedAssets']\n}\n\nfunction createReduxStore(props: Props): Store {\n  const epicMiddleware = createEpicMiddleware<AnyAction, AnyAction, RootReducerState>({\n    dependencies: {\n      client: props.client,\n    },\n  })\n\n  const store = configureStore({\n    reducer: rootReducer,\n    middleware: (getDefaultMiddleware) =>\n      getDefaultMiddleware({\n        /*\n        serializableCheck: {\n          ignoredActions: [\n            assetsActions.deleteError.type,\n            uploadsActions.uploadRequest.type,\n            uploadsActions.uploadStart.type,\n          ]\n        },\n        */\n        // TODO: remove once we're no longer storing non-serializable data in the store\n        serializableCheck: false,\n        thunk: false,\n      }).prepend(epicMiddleware),\n    devTools: true,\n    preloadedState: {\n      assets: {\n        ...assetsInitialState,\n        assetTypes: isSupportedAssetType(props?.assetType) ? [props.assetType] : ['file', 'image'],\n        excludeTagSlugs: props.excludeTagSlugs?.length ? [...props.excludeTagSlugs] : [],\n      },\n      debug: {\n        badConnection: false,\n        enabled: false,\n      },\n      dialog: {items: []},\n      folders: {\n        byId: {},\n        childrenByParentId: {},\n        rootIds: [],\n        exactCountByFolderId: {},\n        unfiledCount: 0,\n        currentFolderId: null,\n        currentFolderUnfiled: false,\n        panelVisible: false,\n        fetching: false,\n        fetchCount: -1,\n        creating: false,\n        renaming: false,\n      },\n      notifications: {items: []},\n      search: {facets: [], query: ''},\n      selected: {\n        assets: props.selectedAssets || [],\n        document: props.document,\n        documentAssetIds: props.document ? getDocumentAssetIds(props.document) : [],\n      },\n      tags: {\n        allIds: [],\n        byIds: {},\n        creating: false,\n        fetchCount: -1,\n        fetching: false,\n        panelVisible: true,\n      },\n      uploads: {\n        allIds: [],\n        byIds: {},\n      },\n    },\n  })\n\n  epicMiddleware.run(rootEpic)\n\n  return store\n}\n\nfunction ReduxProvider({children, ...props}: Props) {\n  const [store] = useState(() => createReduxStore(props))\n\n  return <Provider store={store}>{children}</Provider>\n}\n\nexport default ReduxProvider\n","import {PortalProvider} from '@sanity/ui'\nimport {useEffect, useRef} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {type AssetSourceComponentProps, type SanityDocument, useFormValue} from 'sanity'\n\nimport {AssetBrowserDispatchProvider} from '../../contexts/AssetSourceDispatchContext'\nimport useRootPortalElement from '../../hooks/useRootPortalElement'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {assetsActions} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {foldersActions} from '../../modules/folders'\nimport {tagsActions} from '../../modules/tags'\nimport GlobalStyle from '../../styled/GlobalStyles'\nimport constructFilter from '../../utils/constructFilter'\nimport Dialogs from '../Dialogs'\nimport Notifications from '../Notifications'\nimport ReduxProvider from '../ReduxProvider'\n\n/**\n * Fetches the already-selected asset into the store and opens the `assetEdit`\n * dialog for it. Once that dialog (and any nested dialogs, e.g. delete confirm)\n * are dismissed, the asset source itself is closed via `onClose`.\n *\n * Tracking the dialog lifecycle through redux is what allows the source to be\n * reopened: closing the inner dialog only removes it from the store, so without\n * this the source would stay mounted (showing nothing) and could not be opened\n * a second time.\n */\nconst EditAssetDialog = ({assetId, onClose}: {assetId: string; onClose: () => void}) => {\n  const dispatch = useDispatch()\n  const openDialogCount = useTypedSelector((state) => state.dialog.items.length)\n  const hasOpenedRef = useRef(false)\n\n  useEffect(() => {\n    // Only fetch the single asset being edited, then open its edit dialog.\n    const queryFilter = `${constructFilter({\n      assetTypes: ['file', 'image'],\n      searchFacets: [],\n    })} && _id == $assetId`\n\n    dispatch(assetsActions.fetchRequest({params: {assetId}, queryFilter}))\n\n    // Tags and folders must be loaded into the store so the edit dialog can\n    // resolve the asset's existing tag references and folder path (mirroring\n    // `useBrowserInit`). Without this, `selectTagSelectOptions` resolves no tags\n    // and saving would patch `opt.media.tags` to null, wiping existing tags.\n    dispatch(tagsActions.fetchRequest())\n    dispatch(foldersActions.fetchRequest())\n\n    dispatch(dialogActions.showAssetEdit({assetId}))\n  }, [assetId, dispatch])\n\n  useEffect(() => {\n    if (openDialogCount > 0) {\n      hasOpenedRef.current = true\n    } else if (hasOpenedRef.current) {\n      onClose()\n    }\n  }, [openDialogCount, onClose])\n\n  return (\n    <>\n      <Dialogs />\n      <Notifications />\n    </>\n  )\n}\n\nconst EditAssetTool = (props: AssetSourceComponentProps) => {\n  const {onClose, selectedAssets} = props\n\n  const portalElement = useRootPortalElement()\n\n  // `useFormValue` can return null/undefined (e.g. on a pristine/unsaved draft).\n  const currentDocument = useFormValue([]) as SanityDocument | null | undefined\n\n  const client = useVersionedClient()\n\n  const assetId = selectedAssets[0]?._id\n\n  // Nothing to edit (e.g. opened on an empty field) – close the source again.\n  useEffect(() => {\n    if (!assetId) {\n      onClose()\n    }\n  }, [assetId, onClose])\n\n  if (!assetId) {\n    return null\n  }\n\n  return (\n    <ReduxProvider\n      assetType={props.assetType}\n      client={client}\n      document={currentDocument ?? undefined}\n      selectedAssets={selectedAssets}\n    >\n      <AssetBrowserDispatchProvider onSelect={props.onSelect}>\n        <GlobalStyle />\n        <PortalProvider element={portalElement}>\n          <EditAssetDialog assetId={assetId} onClose={onClose} />\n        </PortalProvider>\n      </AssetBrowserDispatchProvider>\n    </ReduxProvider>\n  )\n}\n\nexport default EditAssetTool\n","import {ThLargeIcon} from '@sanity/icons/ThLarge'\nimport {ThListIcon} from '@sanity/icons/ThList'\nimport {Button, Inline} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\nconst ButtonViewGroup = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const view = useTypedSelector((state) => state.assets.view)\n\n  return (\n    <Inline space={0} style={{whiteSpace: 'nowrap'}}>\n      <Button\n        fontSize={1}\n        icon={ThLargeIcon}\n        mode={view === 'grid' ? 'default' : 'ghost'}\n        onClick={() => dispatch(assetsActions.viewSet({view: 'grid'}))}\n        style={{\n          borderBottomRightRadius: 0,\n          borderTopRightRadius: 0,\n        }}\n      />\n      <Button\n        fontSize={1}\n        icon={ThListIcon}\n        mode={view === 'table' ? 'default' : 'ghost'}\n        onClick={() => dispatch(assetsActions.viewSet({view: 'table'}))}\n        style={{\n          borderBottomLeftRadius: 0,\n          borderTopLeftRadius: 0,\n        }}\n      />\n    </Inline>\n  )\n}\n\nexport default ButtonViewGroup\n","import {SortIcon} from '@sanity/icons/Sort'\nimport {Button, Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport {getOrderTitle} from '../../config/orders'\nimport {ORDER_OPTIONS} from '../../constants'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\nconst OrderSelect = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const order = useTypedSelector((state) => state.assets.order)\n\n  const popoverProps = usePortalPopoverProps()\n\n  return (\n    <MenuButton\n      button={\n        <Button\n          fontSize={1}\n          icon={SortIcon}\n          mode=\"bleed\"\n          padding={3}\n          text={getOrderTitle(order.field, order.direction)}\n        />\n      }\n      id=\"order\"\n      menu={\n        <Menu>\n          {ORDER_OPTIONS?.map((item, index) => {\n            if (item) {\n              const selected = order.field === item.field && order.direction === item.direction\n              return (\n                <MenuItem\n                  disabled={selected}\n                  fontSize={1}\n                  iconRight={selected}\n                  key={index}\n                  onClick={() =>\n                    dispatch(\n                      assetsActions.orderSet({\n                        order: {direction: item.direction, field: item.field},\n                      }),\n                    )\n                  }\n                  padding={2}\n                  selected={selected}\n                  space={4}\n                  style={{minWidth: '200px'}}\n                  text={getOrderTitle(item.field, item.direction)}\n                />\n              )\n            }\n\n            return <MenuDivider key={index} />\n          })}\n        </Menu>\n      }\n      popover={popoverProps}\n    />\n  )\n}\n\nexport default OrderSelect\n","import {Box} from '@sanity/ui'\nimport {useNProgress} from '@tanem/react-nprogress'\n\ntype Props = {\n  loading?: boolean\n}\n\nconst Progress = (props: Props) => {\n  const {loading} = props\n\n  const {animationDuration, isFinished, progress} = useNProgress({\n    animationDuration: 300,\n    isAnimating: loading,\n  })\n\n  return (\n    <Box\n      style={{\n        opacity: isFinished ? 0 : 1,\n        transition: `opacity ${animationDuration}ms linear`,\n      }}\n    >\n      <Box\n        style={{\n          height: '1px',\n          background: 'rgba(255, 255, 255, 0.5)',\n          position: 'absolute',\n          left: 0,\n          top: 0,\n          transition: `width ${animationDuration}ms linear`,\n          width: `${progress * 100}%`,\n        }}\n      />\n    </Box>\n  )\n}\n\nexport default Progress\n","const TagIcon = () => (\n  <svg\n    data-sanity-icon=\"media__tag\" // For icon usage with @sanity/ui <Button />\n    fill=\"currentColor\"\n    height=\"1em\"\n    stroke=\"currentColor\"\n    strokeWidth=\"0\"\n    viewBox=\"0 0 512 512\"\n    width=\"1em\"\n  >\n    <path\n      d=\"M435.25 48h-122.9a14.46 14.46 0 00-10.2 4.2L56.45 297.9a28.85 28.85 0 000 40.7l117 117a28.85 28.85 0 0040.7 0L459.75 210a14.46 14.46 0 004.2-10.2v-123a28.66 28.66 0 00-28.7-28.8z\"\n      fill=\"none\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"32\"\n    />\n    <path d=\"M384 160a32 32 0 1132-32 32 32 0 01-32 32z\" />\n  </svg>\n)\n\nexport default TagIcon\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {Box, Flex, TextInput} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\n\nconst TextInputSearch = () => {\n  // Redux\n  const searchQuery = useTypedSelector((state) => state.search.query)\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    dispatch(searchActions.querySet({searchQuery: e.currentTarget.value}))\n  }\n\n  const handleClear = () => {\n    dispatch(searchActions.querySet({searchQuery: ''}))\n  }\n\n  return (\n    <Box style={{position: 'relative'}}>\n      <TextInput\n        fontSize={1}\n        icon={SearchIcon}\n        onChange={handleChange}\n        placeholder=\"Search\"\n        radius={2}\n        value={searchQuery}\n      />\n\n      {/* Clear form button */}\n      {searchQuery.length > 0 && (\n        <Flex\n          align=\"center\"\n          justify=\"center\"\n          onClick={handleClear}\n          style={{\n            cursor: 'pointer',\n            height: '100%',\n            opacity: 0.75,\n            position: 'absolute',\n            right: 0,\n            top: 0,\n            width: '2em',\n            zIndex: 1, // force stacking context\n          }}\n        >\n          <CloseIcon />\n        </Flex>\n      )}\n    </Box>\n  )\n}\n\nexport default TextInputSearch\n","import {FolderIcon} from '@sanity/icons/Folder'\nimport {Box, Button, Flex, Inline, useMediaIndex} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {foldersActions} from '../../modules/folders'\nimport {tagsActions} from '../../modules/tags'\nimport ButtonViewGroup from '../ButtonViewGroup'\nimport OrderSelect from '../OrderSelect'\nimport Progress from '../Progress'\nimport SearchFacets from '../SearchFacets'\nimport SearchFacetsControl from '../SearchFacetsControl'\nimport TagIcon from '../TagIcon'\nimport TextInputSearch from '../TextInputSearch'\n\nconst Controls = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const foldersPanelVisible = useTypedSelector((state) => state.folders.panelVisible)\n  const pageIndex = useTypedSelector((state) => state.assets.pageIndex)\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n  const tagsPanelVisible = useTypedSelector((state) => state.tags.panelVisible)\n\n  const mediaIndex = useMediaIndex()\n\n  // Callbacks\n  const handleShowSearchFacetDialog = () => {\n    dispatch(dialogActions.showSearchFacets())\n  }\n\n  const handleShowFoldersDialog = () => {\n    dispatch(dialogActions.showFolders())\n  }\n\n  const handleShowTagsDialog = () => {\n    dispatch(dialogActions.showTags())\n  }\n\n  const toggleFoldersPanel = () => {\n    dispatch(foldersActions.panelVisibleSet({panelVisible: !foldersPanelVisible}))\n  }\n\n  const toggleTagsPanelToggle = () => {\n    dispatch(tagsActions.panelVisibleSet({panelVisible: !tagsPanelVisible}))\n  }\n\n  return (\n    <Box\n      paddingY={2}\n      style={{\n        borderBottom: '1px solid var(--card-border-color)',\n        zIndex: 2,\n      }}\n    >\n      {/* Rows: search / filters / orders  */}\n      <Box marginBottom={2}>\n        <Flex\n          align=\"flex-start\"\n          direction={['column', 'column', 'column', 'column', 'row']}\n          justify=\"space-between\"\n        >\n          {/* Search + Filters */}\n          <Flex\n            flex={1}\n            style={{\n              alignItems: 'flex-start',\n              flex: 1,\n              height: '100%',\n              justifyContent: mediaIndex < 2 ? 'space-between' : 'flex-start',\n              position: 'relative',\n              width: '100%',\n            }}\n          >\n            <Box marginX={2} style={{minWidth: '200px'}}>\n              {/* Search */}\n              <TextInputSearch />\n            </Box>\n\n            <Box display={['none', 'none', 'block']}>\n              <SearchFacets />\n\n              {/* Search Facets Control (add / clear) */}\n              <Inline space={2}>\n                <SearchFacetsControl />\n              </Inline>\n            </Box>\n\n            <Box display={['block', 'block', 'none']} marginX={2}>\n              <Inline space={2} style={{whiteSpace: 'nowrap'}}>\n                {/* Filters button (small) */}\n                <Button\n                  fontSize={1}\n                  mode=\"ghost\"\n                  onClick={handleShowSearchFacetDialog}\n                  text={`Filters${searchFacets.length > 0 ? ` (${searchFacets.length})` : ''}`}\n                  tone=\"primary\"\n                />\n\n                {/* Tags button (small) */}\n                <Button\n                  fontSize={1}\n                  mode=\"ghost\"\n                  onClick={handleShowTagsDialog}\n                  text={`Tags`}\n                  tone=\"primary\"\n                />\n\n                {/* Folders button (small) */}\n                <Button\n                  fontSize={1}\n                  mode=\"ghost\"\n                  onClick={handleShowFoldersDialog}\n                  text=\"Folders\"\n                  tone=\"primary\"\n                />\n              </Inline>\n            </Box>\n          </Flex>\n        </Flex>\n      </Box>\n\n      <Box>\n        <Flex align=\"center\" justify={['space-between']}>\n          {/* Folders + Views */}\n          <Box marginX={2}>\n            <Inline space={2} style={{whiteSpace: 'nowrap'}}>\n              <Box display={['none', 'none', 'block']}>\n                <Button\n                  aria-label=\"Toggle folders panel\"\n                  fontSize={1}\n                  icon={FolderIcon}\n                  mode={foldersPanelVisible ? 'default' : 'ghost'}\n                  onClick={toggleFoldersPanel}\n                />\n              </Box>\n              <ButtonViewGroup />\n            </Inline>\n          </Box>\n\n          <Flex marginX={2}>\n            {/* Orders */}\n            <OrderSelect />\n            {/* Tags panel toggle */}\n            <Box display={['none', 'none', 'block']} marginLeft={2}>\n              <Button\n                fontSize={1}\n                icon={\n                  <Box style={{transform: 'scale(0.75)'}}>\n                    <TagIcon />\n                  </Box>\n                }\n                onClick={toggleTagsPanelToggle}\n                mode={tagsPanelVisible ? 'default' : 'ghost'}\n                text={tagsPanelVisible ? 'Tags' : ''}\n              />\n            </Box>\n          </Flex>\n        </Flex>\n      </Box>\n\n      {/* Progress bar */}\n      <Progress key={pageIndex} loading={fetching} />\n    </Box>\n  )\n}\n\nexport default Controls\n","import {PlugIcon} from '@sanity/icons/Plug'\nimport {Box, Flex, Switch, Text, Tooltip} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {debugActions} from '../../modules/debug'\n\nconst DebugControls = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const badConnection = useTypedSelector((state) => state.debug.badConnection)\n  const debugEnabled = useTypedSelector((state) => state.debug.enabled)\n\n  // Callbacks\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    const checked = e.target.checked\n\n    dispatch(debugActions.setBadConnection(checked))\n  }\n\n  const handleToggleControls = () => {\n    dispatch(debugActions.toggleEnabled())\n  }\n\n  // Close on escape key press\n  useKeyPress('alt+ctrl+shift+/', handleToggleControls)\n\n  if (!debugEnabled) {\n    return null\n  }\n\n  return (\n    <Box\n      padding={4}\n      style={{\n        bottom: 0,\n        left: 0,\n        pointerEvents: 'none',\n        position: 'fixed',\n        width: '100%',\n      }}\n    >\n      {/* Bad connection toggle */}\n      <Flex align=\"center\">\n        <Box marginRight={3}>\n          <Text muted size={1}>\n            <PlugIcon />\n          </Text>\n        </Box>\n        <Tooltip\n          animate\n          content={\n            <Box padding={2}>\n              <Text muted size={1}>\n                {badConnection\n                  ? 'Bad connection: +3000ms & 50% chance to fail'\n                  : 'No connection throttling'}\n              </Text>\n            </Box>\n          }\n          fallbackPlacements={['right', 'left']}\n          placement=\"bottom\"\n          portal\n        >\n          <Switch\n            checked={badConnection}\n            onChange={handleChange}\n            style={{\n              pointerEvents: 'auto',\n            }}\n          />\n        </Tooltip>\n      </Flex>\n    </Box>\n  )\n}\n\nexport default DebugControls\n","import {Box, Button, Inline, Text} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {foldersActions, selectCurrentFolderSegments} from '../../modules/folders'\n\nconst FolderBreadcrumbs = () => {\n  const dispatch = useDispatch()\n  const currentFolderId = useTypedSelector((state) => state.folders.currentFolderId)\n  const segments = useTypedSelector(selectCurrentFolderSegments)\n\n  if (!currentFolderId) {\n    return null\n  }\n\n  return (\n    <Box display={['block', 'block', 'none']} padding={2}>\n      <Inline space={1}>\n        <Button\n          fontSize={1}\n          padding={2}\n          mode=\"bleed\"\n          onClick={() => dispatch(foldersActions.currentFolderClear())}\n          text=\"All assets\"\n        />\n\n        {segments.map((segment) => (\n          <Inline key={segment.id} space={1}>\n            <Text muted size={1}>\n              /\n            </Text>\n            <Button\n              fontSize={1}\n              padding={2}\n              mode={currentFolderId === segment.id ? 'default' : 'bleed'}\n              onClick={() => dispatch(foldersActions.currentFolderSet({folderId: segment.id}))}\n              text={segment.name}\n            />\n          </Inline>\n        ))}\n      </Inline>\n    </Box>\n  )\n}\n\nexport default FolderBreadcrumbs\n","import {Box} from '@sanity/ui'\n\nimport {FOLDERS_PANEL_WIDTH} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport FolderView from '../FolderView'\n\nconst FolderPanel = () => {\n  const foldersPanelVisible = useTypedSelector((state) => state.folders.panelVisible)\n\n  if (!foldersPanelVisible) {\n    return null\n  }\n\n  return (\n    <Box\n      style={{\n        position: 'relative',\n        width: FOLDERS_PANEL_WIDTH,\n      }}\n    >\n      <Box\n        className=\"media__custom-scrollbar\"\n        style={{\n          borderRight: '1px solid var(--card-border-color)',\n          height: '100%',\n          left: 0,\n          overflowX: 'hidden',\n          overflowY: 'auto',\n          position: 'absolute',\n          top: 0,\n          width: '100%',\n        }}\n      >\n        <FolderView />\n      </Box>\n    </Box>\n  )\n}\n\nexport default FolderPanel\n","import {type ReactNode, createContext, useContext, useMemo} from 'react'\n\ntype ContextProps = {\n  open: () => void\n}\n\ntype Props = {\n  children: ReactNode\n  open: () => void\n}\n\nconst DropzoneDispatchContext = createContext<ContextProps | undefined>(undefined)\n\nexport const DropzoneDispatchProvider = (props: Props) => {\n  const {children, open} = props\n\n  const contextValue: ContextProps = useMemo(() => ({open}), [open])\n\n  return (\n    <DropzoneDispatchContext.Provider value={contextValue}>\n      {children}\n    </DropzoneDispatchContext.Provider>\n  )\n}\n\nexport const useDropzoneActions = () => {\n  const context = useContext(DropzoneDispatchContext)\n  if (context === undefined) {\n    throw new Error('useDropzoneActions must be used within an DropzoneDispatchProvider')\n  }\n  return context\n}\n","import {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {UploadIcon} from '@sanity/icons/Upload'\nimport {Box, Button, Flex, Inline, Text} from '@sanity/ui'\nimport pluralize from 'pluralize'\n\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport {useDropzoneActions} from '../../contexts/DropzoneDispatchContext'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\n\ntype Props = {\n  onClose?: () => void\n}\n\nconst Header = (props: Props) => {\n  const {onClose} = props\n\n  const {open} = useDropzoneActions()\n  const {onSelect} = useAssetSourceActions()\n\n  // Redux\n  const assetTypes = useTypedSelector((state) => state.assets.assetTypes)\n  const selectedDocument = useTypedSelector((state) => state.selected.document)\n\n  const {directUploads} = useToolOptions()\n\n  // Row: Current document / close button\n  return (\n    <Box paddingY={2}>\n      <Flex align=\"center\" justify=\"space-between\">\n        {/* Label */}\n        <Box flex={1} marginX={3}>\n          <Inline style={{whiteSpace: 'nowrap'}}>\n            <Text textOverflow=\"ellipsis\" weight=\"semibold\">\n              <span>{onSelect ? `Insert ${assetTypes.join(' or ')}` : 'Browse Assets'}</span>\n            </Text>\n\n            {selectedDocument && (\n              <Box display={['none', 'none', 'block']}>\n                <Text>\n                  <span style={{margin: '0 0.5em'}}>\n                    <ArrowRightIcon />\n                  </span>\n                  <span style={{textTransform: 'capitalize'}}>{selectedDocument._type}</span>\n                </Text>\n              </Box>\n            )}\n          </Inline>\n        </Box>\n\n        <Flex marginX={2}>\n          {/* Upload */}\n          {directUploads && (\n            <Button\n              fontSize={1}\n              icon={UploadIcon}\n              mode=\"bleed\"\n              onClick={open}\n              text={`Upload ${assetTypes.length === 1 ? pluralize(assetTypes[0]!) : 'assets'}`}\n            />\n          )}\n\n          {/* Close */}\n          {onClose && (\n            <Box style={{flexShrink: 0}}>\n              <Button\n                disabled={!onClose}\n                icon={CloseIcon}\n                mode=\"bleed\"\n                onClick={onClose}\n                radius={2}\n              />\n            </Box>\n          )}\n        </Flex>\n      </Flex>\n    </Box>\n  )\n}\n\nexport default Header\n","import {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {ChevronUpIcon} from '@sanity/icons/ChevronUp'\nimport {Box, Label} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\ntype Props = {\n  field?: string\n  title?: string\n}\n\nconst TableHeaderItem = (props: Props) => {\n  const {field, title} = props\n\n  // Redux\n  const dispatch = useDispatch()\n  const order = useTypedSelector((state) => state.assets.order)\n\n  const isActive = order.field === field\n\n  // Callbacks\n  const handleClick = () => {\n    if (!field || !title) {\n      return\n    }\n\n    if (isActive) {\n      const direction = order.direction === 'asc' ? 'desc' : 'asc'\n      dispatch(assetsActions.orderSet({order: {field, direction}}))\n    } else {\n      dispatch(assetsActions.orderSet({order: {field, direction: 'asc'}}))\n    }\n  }\n\n  return (\n    <Label muted={!field} size={0}>\n      <Box\n        onClick={field ? handleClick : undefined}\n        style={{\n          cursor: field ? 'pointer' : 'default',\n          display: 'inline',\n          whiteSpace: 'nowrap',\n        }}\n      >\n        <span\n          style={{\n            marginRight: '0.4em',\n          }}\n        >\n          {title}\n        </span>\n\n        {isActive && order?.direction === 'asc' && <ChevronUpIcon />}\n        {isActive && order?.direction === 'desc' && <ChevronDownIcon />}\n      </Box>\n    </Label>\n  )\n}\n\nexport default TableHeaderItem\n","import {Checkbox, Flex, Grid, type ThemeColorSchemeKey, useMediaIndex} from '@sanity/ui'\nimport {type MouseEvent} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {GRID_TEMPLATE_COLUMNS, PANEL_HEIGHT} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetsLength, selectAssetsPickedLength} from '../../modules/assets'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport TableHeaderItem from '../TableHeaderItem'\n\n// TODO: DRY\nconst ContextActionContainer = styled<typeof Flex, {$scheme: ThemeColorSchemeKey}>(Flex)(({\n  $scheme,\n}) => {\n  return css`\n    cursor: pointer;\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${getSchemeColor($scheme, 'bg')};\n      }\n    }\n  `\n})\n\nconst TableHeader = () => {\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const itemsLength = useTypedSelector(selectAssetsLength)\n  const numPickedAssets = useTypedSelector(selectAssetsPickedLength)\n\n  const mediaIndex = useMediaIndex()\n  const {onSelect} = useAssetSourceActions()\n\n  const allSelected = numPickedAssets === itemsLength\n\n  // Callbacks\n  const handleContextActionClick = (e: MouseEvent) => {\n    e.stopPropagation()\n\n    if (allSelected) {\n      dispatch(assetsActions.pickClear())\n    } else {\n      dispatch(assetsActions.pickAll())\n    }\n  }\n\n  // Note that even though we hide the table header on smaller breakpoints, we never set it to\n  // `display: none`, as doing so causes issues with react-virtuoso.\n  // Instead, we give it 0 height and hide it with `visibility: hidden`.\n  return (\n    <Grid\n      style={{\n        alignItems: 'center',\n        background: 'var(--card-bg-color)',\n        borderBottom: '1px solid var(--card-border-color)',\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridTemplateColumns: GRID_TEMPLATE_COLUMNS.LARGE,\n        height: mediaIndex < 3 ? 0 : `${PANEL_HEIGHT}px`,\n        letterSpacing: '0.025em',\n        position: 'sticky',\n        textTransform: 'uppercase',\n        top: 0,\n        visibility: mediaIndex < 3 ? 'hidden' : 'visible',\n        width: '100%',\n        zIndex: 1, // force stacking context\n      }}\n    >\n      {onSelect ? (\n        <TableHeaderItem />\n      ) : (\n        <ContextActionContainer\n          align=\"center\"\n          justify=\"center\"\n          onClick={handleContextActionClick}\n          $scheme={scheme}\n          style={{\n            height: '100%',\n            position: 'relative',\n          }}\n        >\n          <Checkbox\n            checked={!fetching && allSelected}\n            readOnly\n            style={{\n              pointerEvents: 'none', // TODO: consider alternative for usability\n              transform: 'scale(0.8)',\n            }}\n          />\n        </ContextActionContainer>\n      )}\n\n      <TableHeaderItem />\n      <TableHeaderItem field=\"originalFilename\" title=\"Filename\" />\n      <TableHeaderItem title=\"Resolution\" />\n      <TableHeaderItem field=\"mimeType\" title=\"MIME type\" />\n      <TableHeaderItem field=\"size\" title=\"Size\" />\n      <TableHeaderItem field=\"_updatedAt\" title=\"Last updated\" />\n      <TableHeaderItem title=\"References\" />\n      <TableHeaderItem />\n    </Grid>\n  )\n}\n\nexport default TableHeader\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {WarningFilledIcon} from '@sanity/icons/WarningFilled'\nimport {\n  Box,\n  Checkbox,\n  Container,\n  Flex,\n  Grid,\n  Spinner,\n  Text,\n  type ThemeColorSchemeKey,\n  Tooltip,\n  useMediaIndex,\n} from '@sanity/ui'\nimport {formatRelative} from 'date-fns/formatRelative'\nimport filesize from 'filesize'\nimport {\n  memo,\n  type MouseEvent,\n  type RefObject,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {WithReferringDocuments, useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {GRID_TEMPLATE_COLUMNS} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetById} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport getAssetResolution from '../../utils/getAssetResolution'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport {getUniqueDocuments} from '../../utils/getUniqueDocuments'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\n// Duration (ms) to wait before reference counts (and associated listeners) are rendered\nconst REFERENCE_COUNT_VISIBILITY_DELAY = 750\n\ntype Props = {\n  id: string\n  selected: boolean\n}\n\nconst ContainerGrid = styled<\n  typeof Grid,\n  {$selected?: boolean; $scheme: ThemeColorSchemeKey; $updating?: boolean}\n>(Grid)(({$scheme, $selected, $updating}) => {\n  return css`\n    align-items: center;\n    cursor: ${$selected ? 'default' : 'pointer'};\n    height: 100%;\n    pointer-events: ${$updating ? 'none' : 'auto'};\n    user-select: none;\n    white-space: nowrap;\n\n    ${\n      !$updating &&\n      css`\n        @media (hover: hover) and (pointer: fine) {\n          &:hover {\n            background: ${getSchemeColor($scheme, 'bg')};\n          }\n        }\n      `\n    }\n  `\n})\n\nconst ContextActionContainer = styled<typeof Flex, {$scheme: ThemeColorSchemeKey}>(Flex)(({\n  $scheme,\n}) => {\n  return css`\n    cursor: pointer;\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${getSchemeColor($scheme, 'bg2')};\n      }\n    }\n  `\n})\n\nconst StyledWarningIcon = styled(WarningFilledIcon)(({theme}) => {\n  return {\n    color: theme.sanity.color.spot.red,\n  }\n})\n\nconst TableRowAsset = (props: Props) => {\n  const {id, selected} = props\n\n  const scheme = useColorSchemeValue()\n\n  const shiftPressed: RefObject<boolean> = useKeyPress('shift')\n\n  const [referenceCountVisible, setReferenceCountVisible] = useState(false)\n  const refCountVisibleTimeout = useRef<ReturnType<typeof window.setTimeout>>(null)\n\n  const dispatch = useDispatch()\n  const lastPicked = useTypedSelector((state) => state.assets.lastPicked)\n  const item = useTypedSelector((state) => selectAssetById(state, id))\n\n  const mediaIndex = useMediaIndex()\n\n  const asset = item?.asset\n  const error = item?.error\n  const isOpaque = item?.asset?.metadata?.isOpaque\n  const picked = item?.picked\n  const updating = item?.updating\n\n  const {isMultiSelect, onSelect} = useAssetSourceActions()\n\n  const handleContextActionClick = useCallback(\n    (e: MouseEvent<HTMLDivElement>) => {\n      e.stopPropagation()\n\n      if (!asset) return\n      if (selected) return\n      if (onSelect && !isMultiSelect) {\n        dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n      } else if (shiftPressed.current && !picked) {\n        dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n      } else {\n        dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n      }\n    },\n    [asset, dispatch, isMultiSelect, lastPicked, onSelect, picked, selected, shiftPressed],\n  )\n\n  const handleClick = useCallback(\n    (e: MouseEvent<HTMLDivElement>) => {\n      e.stopPropagation()\n\n      if (!asset) return\n      if (selected) return\n      if (onSelect && !isMultiSelect) {\n        onSelect([{kind: 'assetDocumentId', value: asset._id}])\n      } else if (onSelect && isMultiSelect) {\n        if (shiftPressed.current && !picked) {\n          dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n        } else {\n          dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n        }\n      } else if (shiftPressed.current) {\n        if (picked) {\n          dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n        } else {\n          dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n        }\n      } else {\n        dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n      }\n    },\n    [asset, dispatch, isMultiSelect, lastPicked, onSelect, picked, selected, shiftPressed],\n  )\n\n  const opacityCell = updating ? 0.5 : 1\n  const opacityPreview = selected || updating ? 0.1 : 1\n\n  // Display reference count after an initial delay to prevent over-eager fetching\n  useEffect(() => {\n    refCountVisibleTimeout.current = setTimeout(\n      () => setReferenceCountVisible(true),\n      REFERENCE_COUNT_VISIBILITY_DELAY,\n    )\n    return () => {\n      if (refCountVisibleTimeout.current) {\n        clearTimeout(refCountVisibleTimeout.current)\n      }\n    }\n  }, [])\n\n  // Short circuit if no asset is available\n  if (!asset) {\n    return null\n  }\n\n  return (\n    <ContainerGrid\n      onClick={selected ? undefined : handleClick}\n      $scheme={scheme}\n      $selected={selected}\n      style={{\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridRowGap: 0,\n        gridTemplateColumns:\n          mediaIndex < 3 ? GRID_TEMPLATE_COLUMNS.SMALL : GRID_TEMPLATE_COLUMNS.LARGE,\n        gridTemplateRows: mediaIndex < 3 ? 'auto' : '1fr',\n      }}\n      $updating={item.updating}\n    >\n      {/* Picked checkbox */}\n      <ContextActionContainer\n        onClick={handleContextActionClick}\n        $scheme={scheme}\n        style={{\n          alignItems: 'center',\n          gridColumn: 1,\n          gridRowStart: 1,\n          gridRowEnd: 'span 5',\n          height: '100%',\n          justifyContent: 'center',\n          opacity: opacityCell,\n          position: 'relative',\n        }}\n      >\n        {onSelect && !isMultiSelect ? (\n          <EditIcon\n            style={{\n              flexShrink: 0,\n              opacity: 0.5,\n            }}\n          />\n        ) : (\n          <Checkbox\n            checked={picked}\n            readOnly\n            style={{\n              pointerEvents: 'none', // TODO: consider alternative for usability\n              transform: 'scale(0.8)',\n            }}\n          />\n        )}\n      </ContextActionContainer>\n\n      {/* Preview image + spinner */}\n      <Box\n        style={{\n          gridColumn: 2,\n          gridRowStart: 1,\n          gridRowEnd: 'span 5',\n          height: '90px',\n          width: '100px',\n        }}\n      >\n        <Flex align=\"center\" justify=\"center\" style={{height: '100%', position: 'relative'}}>\n          <Box style={{height: '100%', opacity: opacityPreview, position: 'relative'}}>\n            {/* File icon */}\n            {isFileAsset(asset) && <FileIcon extension={asset.extension} width=\"40px\" />}\n\n            {/* Image */}\n            {isImageAsset(asset) && (\n              <Image\n                draggable={false}\n                $scheme={scheme}\n                $showCheckerboard={!isOpaque}\n                src={imageDprUrl(asset, {height: 100, width: 100})}\n              />\n            )}\n          </Box>\n\n          {/* Spinner */}\n          {updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Spinner />\n            </Flex>\n          )}\n\n          {/* Selected check icon */}\n          {selected && !updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Text size={2}>\n                <CheckmarkCircleIcon />\n              </Text>\n            </Flex>\n          )}\n        </Flex>\n      </Box>\n\n      {/* Filename */}\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{\n          gridColumn: 3,\n          gridRow: mediaIndex < 3 ? 2 : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {asset.originalFilename}\n        </Text>\n      </Box>\n\n      {/* Resolution */}\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{\n          gridColumn: mediaIndex < 3 ? 3 : 4,\n          gridRow: mediaIndex < 3 ? 3 : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {isImageAsset(asset) && getAssetResolution(asset)}\n        </Text>\n      </Box>\n\n      {/* MIME type */}\n      <Box\n        style={{\n          display: mediaIndex < 3 ? 'none' : 'block',\n          gridColumn: 5,\n          gridRow: 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {asset.mimeType}\n        </Text>\n      </Box>\n\n      {/* Size */}\n      <Box\n        style={{\n          display: mediaIndex < 3 ? 'none' : 'block',\n          gridColumn: 6,\n          gridRow: 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {filesize(asset.size, {base: 10, round: 0})}\n        </Text>\n      </Box>\n\n      {/* Last updated */}\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{\n          gridColumn: mediaIndex < 3 ? 3 : 7,\n          gridRow: mediaIndex < 3 ? 4 : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {formatRelative(new Date(asset._updatedAt), new Date())}\n        </Text>\n      </Box>\n\n      {/* References */}\n      <Box\n        style={{\n          display: mediaIndex < 3 ? 'none' : 'block',\n          gridColumn: 8,\n          gridRow: 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {referenceCountVisible ? (\n            <WithReferringDocuments id={id}>\n              {({isLoading, referringDocuments}) => {\n                const uniqueDocuments = getUniqueDocuments(referringDocuments)\n                return isLoading ? (\n                  <>-</>\n                ) : (\n                  <>{Array.isArray(uniqueDocuments) ? uniqueDocuments.length : 0}</>\n                )\n              }}\n            </WithReferringDocuments>\n          ) : (\n            <>-</>\n          )}\n        </Text>\n      </Box>\n\n      {/* Error */}\n      <Flex\n        align=\"center\"\n        justify=\"center\"\n        style={{\n          gridColumn: mediaIndex < 3 ? 4 : 9,\n          gridRowStart: '1',\n          gridRowEnd: mediaIndex < 3 ? 'span 5' : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        {/* TODO: DRY */}\n        {/* Error button */}\n        {error && (\n          <Box padding={2}>\n            <Tooltip\n              animate\n              content={\n                <Container padding={2} width={0}>\n                  <Text size={1}>{error}</Text>\n                </Container>\n              }\n              placement=\"left\"\n              portal\n            >\n              <Text size={1}>\n                <StyledWarningIcon color=\"critical\" />\n              </Text>\n            </Tooltip>\n          </Box>\n        )}\n      </Flex>\n    </ContainerGrid>\n  )\n}\n\nexport default memo(TableRowAsset)\n","import {Box, Flex, Grid, Stack, Text, useMediaIndex} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {GRID_TEMPLATE_COLUMNS} from '../../constants'\nimport {foldersActions} from '../../modules/folders'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  folderId: string\n  name: string\n  totalCount: number\n}\n\nconst ContainerGrid = styled(Grid)(\n  ({theme}) => css`\n    align-items: center;\n    cursor: pointer;\n    height: 100%;\n    user-select: none;\n    white-space: nowrap;\n\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${theme.sanity.color.card.enabled.bg};\n      }\n    }\n  `,\n)\n\nconst FolderBadge = styled(Box)(\n  ({theme}) => css`\n    background: ${theme.sanity.color.spot.yellow};\n    border-radius: 6px;\n    height: 42px;\n    position: relative;\n    width: 52px;\n\n    &::before {\n      background: ${theme.sanity.color.spot.yellow};\n      border-radius: 6px 6px 0 0;\n      content: '';\n      height: 12px;\n      left: 0;\n      position: absolute;\n      top: -6px;\n      width: 18px;\n    }\n  `,\n)\n\nconst TableRowFolder = ({folderId, name, totalCount}: Props) => {\n  const dispatch = useDispatch()\n  const mediaIndex = useMediaIndex()\n  const scheme = useColorSchemeValue()\n\n  return (\n    <ContainerGrid\n      onClick={() => dispatch(foldersActions.currentFolderSet({folderId}))}\n      style={{\n        background: getSchemeColor(scheme, 'bg'),\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridTemplateColumns:\n          mediaIndex < 3 ? GRID_TEMPLATE_COLUMNS.SMALL : GRID_TEMPLATE_COLUMNS.LARGE,\n        gridTemplateRows: mediaIndex < 3 ? 'auto' : '1fr',\n      }}\n    >\n      <Box />\n      <Flex align=\"center\" justify=\"center\" style={{gridColumn: 2, height: '90px', width: '100px'}}>\n        <FolderBadge />\n      </Flex>\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{gridColumn: mediaIndex < 3 ? 3 : 3, gridRow: mediaIndex < 3 ? '2/4' : 'auto'}}\n      >\n        <Stack space={2}>\n          <Text size={1} style={{lineHeight: '1.2em'}} textOverflow=\"ellipsis\" weight=\"semibold\">\n            {name}\n          </Text>\n          <Text muted size={0} style={{lineHeight: '1.1em'}}>\n            Folder\n          </Text>\n        </Stack>\n      </Box>\n      <Box style={{display: mediaIndex < 3 ? 'none' : 'block', gridColumn: 7}}>\n        <Text muted size={1}>\n          {totalCount} item{totalCount === 1 ? '' : 's'}\n        </Text>\n      </Box>\n      <Box style={{display: mediaIndex < 3 ? 'none' : 'block', gridColumn: 8}}>\n        <Text muted size={1}>\n          Open folder\n        </Text>\n      </Box>\n      <Box />\n    </ContainerGrid>\n  )\n}\n\nexport default TableRowFolder\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Button, Flex, Grid, Stack, Text, useMediaIndex} from '@sanity/ui'\nimport filesize from 'filesize'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {GRID_TEMPLATE_COLUMNS} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectUploadById, uploadsActions} from '../../modules/uploads'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\ntype Props = {\n  id: string\n}\n\nconst TableRowUpload = (props: Props) => {\n  const {id} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const item = useTypedSelector((state) => selectUploadById(state, id))\n\n  const mediaIndex = useMediaIndex()\n\n  if (!item) {\n    return null\n  }\n\n  const fileSize = filesize(item.size, {base: 10, round: 0})\n  const percentLoaded = Math.round(item.percent || 0) // (0 - 100)\n\n  const isComplete = item.status === 'complete'\n  const isUploading = item.status === 'uploading'\n  const isQueued = item.status === 'queued'\n\n  let status\n  if (isComplete) {\n    status = 'Verifying'\n  }\n  if (isUploading) {\n    status = `${percentLoaded}%`\n  }\n  if (isQueued) {\n    status = 'Queued'\n  }\n\n  // Callbacks\n  const handleCancelUpload = () => {\n    dispatch(uploadsActions.uploadCancel({hash: item.hash}))\n  }\n\n  return (\n    <Grid\n      style={{\n        alignItems: 'center',\n        background: getSchemeColor(scheme, 'bg'),\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridRowGap: 0,\n        gridTemplateColumns:\n          mediaIndex < 3 ? GRID_TEMPLATE_COLUMNS.SMALL : GRID_TEMPLATE_COLUMNS.LARGE,\n        gridTemplateRows: mediaIndex < 3 ? 'auto' : '1fr',\n        height: '100%',\n        position: 'relative',\n      }}\n    >\n      {/* Progress bar */}\n      <div\n        style={{\n          background: 'var(--card-fg-color)',\n          bottom: 0,\n          height: '1px',\n          left: 0,\n          position: 'absolute',\n          width: '100%',\n          transform: `scaleX(${percentLoaded * 0.01})`,\n          transformOrigin: 'bottom left',\n          transition: 'all 1000ms ease-out',\n        }}\n      />\n\n      {/* Image */}\n      <Box\n        style={{\n          gridColumn: 2,\n          gridRowStart: mediaIndex < 3 ? 1 : 'auto',\n          gridRowEnd: mediaIndex < 3 ? 'span 4' : 'auto',\n          height: '90px',\n          width: '100px',\n        }}\n      >\n        <Box style={{height: '100%', position: 'relative'}}>\n          {item.assetType === 'image' && item?.objectUrl && (\n            <Image\n              draggable={false}\n              $scheme={scheme}\n              src={item.objectUrl}\n              style={{opacity: 0.25}}\n            />\n          )}\n\n          {item.assetType === 'file' && (\n            <div style={{height: '100%', opacity: 0.1}}>\n              <FileIcon width=\"40px\" />\n            </div>\n          )}\n\n          {/*\n            Cancel upload button.\n            Assets will only have a `complete` status _after_ it has been created on your dataset.\n            As such, we also hide the cancel button when `percentLoaded === 100`, as cancelling when the asset\n            has been fully uploaded (even with a status of `progress`) won't stop the asset from being created.\n          */}\n          {!isComplete && percentLoaded !== 100 && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                position: 'absolute',\n                height: '100%',\n                left: 0,\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Button\n                fontSize={3}\n                icon={CloseIcon}\n                mode=\"bleed\"\n                onClick={handleCancelUpload}\n                padding={2}\n                style={{background: 'none', boxShadow: 'none'}}\n                tone=\"critical\"\n              />\n            </Flex>\n          )}\n        </Box>\n      </Box>\n\n      {/* Filename */}\n      <Box\n        style={{\n          gridColumn: mediaIndex < 3 ? 3 : '3/8',\n          gridRow: mediaIndex < 3 ? '2/4' : 'auto',\n          marginLeft: mediaIndex < 3 ? 3 : 0,\n        }}\n      >\n        <Stack space={3}>\n          <Text muted size={1} textOverflow=\"ellipsis\">\n            {item.name} ({fileSize})\n          </Text>\n          <Text size={1} textOverflow=\"ellipsis\" weight=\"semibold\">\n            {status}\n          </Text>\n        </Stack>\n      </Box>\n    </Grid>\n  )\n}\n\nexport default TableRowUpload\n","import {Box} from '@sanity/ui'\nimport {memo} from 'react'\nimport {GroupedVirtuoso} from 'react-virtuoso'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport type {CardAssetData, CardFolderData, CardUploadData} from '../../types'\nimport TableHeader from '../TableHeader'\nimport TableRowAsset from '../TableRowAsset'\nimport TableRowFolder from '../TableRowFolder'\nimport TableRowUpload from '../TableRowUpload'\n\ntype Props = {\n  items: (CardAssetData | CardFolderData | CardUploadData)[]\n  onLoadMore?: () => void\n}\n\nconst VirtualRow = memo(\n  ({\n    item,\n    selected,\n  }: {\n    item: CardAssetData | CardFolderData | CardUploadData\n    selected: boolean\n  }) => {\n    if (item?.type === 'asset') {\n      return (\n        <Box style={{height: '100px'}}>\n          <TableRowAsset id={item.id} selected={selected} />\n        </Box>\n      )\n    }\n\n    if (item?.type === 'folder') {\n      return (\n        <Box style={{height: '100px'}}>\n          <TableRowFolder folderId={item.folderId} name={item.name} totalCount={item.totalCount} />\n        </Box>\n      )\n    }\n\n    if (item?.type === 'upload') {\n      return (\n        <Box style={{height: '100px'}}>\n          <TableRowUpload id={item.id} />\n        </Box>\n      )\n    }\n\n    return null\n  },\n)\n\nconst AssetTableVirtualized = (props: Props) => {\n  const {items, onLoadMore} = props\n\n  // Redux\n  const selectedAssets = useTypedSelector((state) => state.selected.assets)\n\n  const selectedIds = (selectedAssets && selectedAssets.map((asset) => asset._id)) || []\n  const totalCount = items?.length\n\n  if (totalCount === 0) {\n    return null\n  }\n\n  return (\n    <GroupedVirtuoso\n      className=\"media__custom-scrollbar\"\n      computeItemKey={(index) => {\n        const item = items[index]\n        return item?.id || index\n      }}\n      endReached={onLoadMore}\n      groupCounts={Array(1).fill(totalCount)}\n      groupContent={() => {\n        return <TableHeader />\n      }}\n      itemContent={(index) => {\n        const item = items[index]\n        const selected = selectedIds.includes(item?.id || '')\n        return <VirtualRow item={item!} selected={selected} />\n      }}\n      style={{overflowX: 'hidden'}}\n    />\n  )\n}\n\nexport default AssetTableVirtualized\n","import {Box, Text, useMediaIndex} from '@sanity/ui'\nimport {useEffect} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\nimport {foldersActions} from '../../modules/folders'\nimport {selectCombinedItems} from '../../modules/selectors'\nimport {tagsActions} from '../../modules/tags'\nimport AssetGridVirtualized from '../AssetGridVirtualized'\nimport AssetTableVirtualized from '../AssetTableVirtualized'\n\nconst Items = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const fetchCount = useTypedSelector((state) => state.assets.fetchCount)\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const foldersPanelVisible = useTypedSelector((state) => state.folders.panelVisible)\n  const tagsPanelVisible = useTypedSelector((state) => state.tags.panelVisible)\n  const view = useTypedSelector((state) => state.assets.view)\n  const combinedItems = useTypedSelector(selectCombinedItems)\n\n  const mediaIndex = useMediaIndex()\n\n  const hasFetchedOnce = fetchCount >= 0\n  const hasItems = combinedItems.length > 0\n\n  // Only load 1 page of items at a time.\n  const handleLoadMoreItems = () => {\n    if (!fetching) {\n      dispatch(assetsActions.loadNextPage())\n    }\n  }\n\n  // Effects\n\n  // - Hide folders/tags panels on smaller breakpoints\n  useEffect(() => {\n    if (mediaIndex <= 1 && foldersPanelVisible) {\n      dispatch(foldersActions.panelVisibleSet({panelVisible: false}))\n    }\n\n    if (mediaIndex <= 1 && tagsPanelVisible) {\n      dispatch(tagsActions.panelVisibleSet({panelVisible: false}))\n    }\n  }, [dispatch, foldersPanelVisible, mediaIndex, tagsPanelVisible])\n\n  const isEmpty = !hasItems && hasFetchedOnce && !fetching\n\n  return (\n    <Box flex={1} style={{width: '100%'}}>\n      {isEmpty ? (\n        <Box padding={4}>\n          <Text size={1} weight=\"semibold\">\n            No results for the current query\n          </Text>\n        </Box>\n      ) : (\n        <>\n          {view === 'grid' && (\n            <AssetGridVirtualized items={combinedItems} onLoadMore={handleLoadMoreItems} />\n          )}\n\n          {view === 'table' && (\n            <AssetTableVirtualized items={combinedItems} onLoadMore={handleLoadMoreItems} />\n          )}\n        </>\n      )}\n    </Box>\n  )\n}\n\nexport default Items\n","import {Box, Button, Flex, Label} from '@sanity/ui'\nimport pluralize from 'pluralize'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetsPicked} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport {isImageAsset} from '../../utils/typeGuards'\n\nconst PickedBar = () => {\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n  const currentFolderId = useTypedSelector((state) => state.folders.currentFolderId)\n  const {isMultiSelect, onSelect} = useAssetSourceActions()\n\n  // Replace only rewrites image field refs — only offer it for a single image asset.\n  const canReplace =\n    assetsPicked.length === 1 && !!assetsPicked[0] && isImageAsset(assetsPicked[0].asset)\n\n  // Callbacks\n  const handlePickClear = () => {\n    dispatch(assetsActions.pickClear())\n  }\n\n  const handleDeletePicked = () => {\n    dispatch(dialogActions.showConfirmDeleteAssets({assets: assetsPicked}))\n  }\n\n  const handleReplaceImages = () => {\n    const assetId = assetsPicked[0]?.asset._id\n    if (!assetId) {\n      return\n    }\n    dispatch(dialogActions.showAllAssetsDialog({assetId}))\n  }\n\n  const handleMovePicked = () =>\n    dispatch(DIALOG_ACTIONS.showFolderMove({assets: assetsPicked, folderId: currentFolderId}))\n\n  const handleRemovePickedFromFolder = () =>\n    dispatch(assetsActions.folderSetRequest({assets: assetsPicked, folderId: null}))\n\n  const handleInsertPicked = () => {\n    if (!onSelect) {\n      return\n    }\n\n    const pickedAssetIds = assetsPicked.map((item) => ({\n      kind: 'assetDocumentId' as const,\n      value: item.asset._id,\n    }))\n\n    if (pickedAssetIds.length === 0) {\n      return\n    }\n\n    onSelect(pickedAssetIds)\n  }\n\n  if (assetsPicked.length === 0) {\n    return null\n  }\n\n  return (\n    <Flex\n      align=\"center\"\n      justify=\"flex-start\"\n      style={{\n        background: getSchemeColor(scheme, 'bg'),\n        borderBottom: '1px solid var(--card-border-color)',\n        height: `${PANEL_HEIGHT}px`,\n        position: 'relative',\n        width: '100%',\n      }}\n    >\n      <Flex align=\"center\" paddingX={3}>\n        <Box paddingRight={2}>\n          <Label size={0} style={{color: 'inherit'}}>\n            {assetsPicked.length} {pluralize('asset', assetsPicked.length)} selected\n          </Label>\n        </Box>\n\n        {/* Deselect button */}\n        <Button\n          mode=\"bleed\"\n          onClick={handlePickClear}\n          padding={2}\n          style={{background: 'none', boxShadow: 'none'}}\n          tone=\"default\"\n        >\n          <Label size={0}>Deselect</Label>\n        </Button>\n\n        {onSelect && isMultiSelect ? (\n          <Button\n            mode=\"bleed\"\n            onClick={handleInsertPicked}\n            padding={2}\n            style={{background: 'none', boxShadow: 'none'}}\n            tone=\"primary\"\n          >\n            <Label size={0}>Insert selected</Label>\n          </Button>\n        ) : (\n          <Button\n            mode=\"bleed\"\n            onClick={handleDeletePicked}\n            padding={2}\n            style={{background: 'none', boxShadow: 'none'}}\n            tone=\"critical\"\n          >\n            <Label size={0}>Delete</Label>\n          </Button>\n        )}\n\n        {/* Replace button */}\n        {canReplace && (\n          <Button\n            mode=\"bleed\"\n            onClick={handleReplaceImages}\n            padding={2}\n            style={{background: 'none', boxShadow: 'none'}}\n            tone=\"default\"\n          >\n            <Label size={0}>Replace</Label>\n          </Button>\n        )}\n\n        {!onSelect && (\n          <>\n            <Button\n              mode=\"bleed\"\n              onClick={handleMovePicked}\n              padding={2}\n              style={{background: 'none', boxShadow: 'none'}}\n              tone=\"primary\"\n            >\n              <Label size={0}>Move to folder</Label>\n            </Button>\n            {currentFolderId && (\n              <Button\n                mode=\"bleed\"\n                onClick={handleRemovePickedFromFolder}\n                padding={2}\n                style={{background: 'none', boxShadow: 'none'}}\n                tone=\"critical\"\n              >\n                <Label size={0}>Remove from folder</Label>\n              </Button>\n            )}\n          </>\n        )}\n      </Flex>\n    </Flex>\n  )\n}\n\nexport default PickedBar\n","import {Box} from '@sanity/ui'\n\nimport {TAGS_PANEL_WIDTH} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport TagView from '../TagView'\n\nconst TagsPanel = () => {\n  const tagsPanelVisible = useTypedSelector((state) => state.tags.panelVisible)\n\n  if (!tagsPanelVisible) {\n    return null\n  }\n\n  return (\n    <Box\n      style={{\n        position: 'relative',\n        width: TAGS_PANEL_WIDTH,\n      }}\n    >\n      <Box\n        className=\"media__custom-scrollbar\"\n        style={{\n          borderLeft: '1px solid var(--card-border-color)',\n          height: '100%',\n          overflowX: 'hidden',\n          overflowY: 'auto',\n          position: 'absolute',\n          right: 0,\n          top: 0,\n          width: '100%',\n        }}\n      >\n        <TagView />\n      </Box>\n    </Box>\n  )\n}\n\nexport default TagsPanel\n","import {white} from '@sanity/color'\nimport {Flex, Text} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {type DropEvent, type DropzoneOptions, useDropzone} from 'react-dropzone'\nimport {useDispatch} from 'react-redux'\nimport {styled} from 'styled-components'\n\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport {DropzoneDispatchProvider} from '../../contexts/DropzoneDispatchContext'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {notificationsActions} from '../../modules/notifications'\nimport {uploadsActions} from '../../modules/uploads'\n\ntype Props = {\n  children: ReactNode\n}\n\nconst UploadContainer = styled.div`\n  color: white;\n  height: 100%;\n  min-height: 100%;\n  right: 0;\n  top: 0;\n  width: 100%;\n\n  &:focus {\n    outline: none;\n  }\n`\n\nconst DragActiveContainer = styled.div`\n  align-items: center;\n  background: rgba(0, 0, 0, 0.75);\n  display: flex;\n  height: 100%;\n  justify-content: center;\n  position: absolute;\n  right: 0;\n  top: 0;\n  width: 100%;\n  z-index: 3;\n`\n\n// Iterate through all files and only return non-folders / packages.\n// We check for files by reading the first byte of the file\nasync function filterFiles(fileList: FileList) {\n  const files = Array.from(fileList)\n\n  const filteredFiles: File[] = []\n\n  for (const file of files) {\n    try {\n      await file.slice(0, 1).arrayBuffer()\n      filteredFiles.push(file)\n    } catch {\n      // do nothing: file is a package or folder\n    }\n  }\n\n  return filteredFiles\n}\n\nconst UploadDropzone = (props: Props) => {\n  const {children} = props\n\n  const {\n    dropzone: {maxSize},\n    directUploads,\n  } = useToolOptions()\n\n  const {onSelect} = useAssetSourceActions()\n\n  // Redux\n  const dispatch = useDispatch()\n  const assetTypes = useTypedSelector((state) => state.assets.assetTypes)\n\n  const isImageAssetType = assetTypes.length === 1 && assetTypes[0] === 'image'\n\n  // Callbacks\n  const handleDrop = async (acceptedFiles: File[]) => {\n    acceptedFiles.forEach((file) =>\n      dispatch(\n        uploadsActions.uploadRequest({\n          file,\n          forceAsAssetType: assetTypes.length === 1 ? assetTypes[0] : undefined,\n        }),\n      ),\n    )\n  }\n\n  const handleDropRejected: DropzoneOptions['onDropRejected'] = (rejections) => {\n    const errorCodes = rejections.flatMap(({errors}) => errors.map(({code}) => code))\n\n    if (errorCodes.includes('file-too-large')) {\n      dispatch(\n        notificationsActions.add({\n          status: 'error',\n          title: 'One or more files exceed the maximum upload size.',\n        }),\n      )\n    }\n  }\n\n  // Use custom file selector to obtain files on file drop + change events (excluding folders and packages)\n  const handleFileGetter = async (event: DropEvent) => {\n    let fileList: FileList | undefined\n    if (event.type === 'drop' && 'dataTransfer' in event) {\n      fileList = event?.dataTransfer?.files\n    }\n    if (event.type === 'change') {\n      const target = event?.target as HTMLInputElement\n      if (target?.files) {\n        fileList = target.files\n      }\n    }\n\n    if (!fileList) {\n      return []\n    }\n\n    // Filter out non-folders / packages\n    const files: File[] = await filterFiles(fileList)\n\n    // Dispatch error if some files have been filtered out\n    if (fileList?.length !== files.length) {\n      dispatch(\n        notificationsActions.add({\n          status: 'error',\n          title: `Unable to upload some items (folders and packages aren't supported)`,\n        }),\n      )\n    }\n\n    return files\n  }\n\n  // Limit file picking to only images if we're specifically within an image selection context (e.g. picking from image fields)\n  const {getRootProps, getInputProps, isDragActive, open} = useDropzone({\n    accept: isImageAssetType ? 'image/*' : '',\n    getFilesFromEvent: handleFileGetter,\n    noClick: true,\n    // HACK: Disable drag and drop functionality when in a selecting context\n    // (This is currently due to Sanity's native image input taking precedence with drag and drop)\n    noDrag: !!onSelect,\n    onDrop: handleDrop,\n    maxSize,\n    onDropRejected: handleDropRejected,\n    disabled: !directUploads,\n  })\n\n  return (\n    <DropzoneDispatchProvider open={open}>\n      <UploadContainer {...getRootProps()}>\n        <input {...getInputProps()} />\n\n        {isDragActive && (\n          <DragActiveContainer>\n            <Flex direction=\"column\" justify=\"center\" style={{color: white.hex}}>\n              <Text size={3} style={{color: 'inherit'}}>\n                Drop files to upload\n              </Text>\n            </Flex>\n          </DragActiveContainer>\n        )}\n\n        {children}\n      </UploadContainer>\n    </DropzoneDispatchProvider>\n  )\n}\n\nexport default UploadDropzone\n","import type {MutationEvent, SanityClient} from '@sanity/client'\nimport groq from 'groq'\nimport {useEffect} from 'react'\nimport {useDispatch, useSelector} from 'react-redux'\nimport type {Dispatch} from 'redux'\nimport type {AssetSourceComponentProps} from 'sanity'\n\nimport {inputs} from '../../config/searchFacets'\nimport {FOLDER_DOCUMENT_NAME, TAG_DOCUMENT_NAME} from '../../constants'\nimport {assetsActions} from '../../modules/assets'\nimport {foldersActions} from '../../modules/folders'\nimport {searchActions} from '../../modules/search'\nimport {tagsActions} from '../../modules/tags'\nimport type {RootReducerState} from '../../modules/types'\nimport type {Asset, Tag} from '../../types'\n\nfunction getMediaTagNames(schemaType?: AssetSourceComponentProps['schemaType']): string[] {\n  const mediaTags = (schemaType?.options as {mediaTags?: string[]} | undefined)?.mediaTags\n  if (!mediaTags?.length) return []\n  const unique = new Set(\n    mediaTags.map((t) => t?.trim()).filter((t): t is string => Boolean(t?.length)),\n  )\n  return Array.from(unique)\n}\n\nfunction createAssetHandler(dispatch: Dispatch) {\n  return (update: MutationEvent) => {\n    const {documentId, result, transition} = update\n\n    switch (transition) {\n      case 'appear':\n        dispatch(assetsActions.listenerCreateQueue({asset: result as Asset}))\n        break\n      case 'disappear':\n        dispatch(assetsActions.listenerDeleteQueue({assetId: documentId}))\n        break\n      case 'update':\n        dispatch(assetsActions.listenerUpdateQueue({asset: result as Asset}))\n        break\n      default:\n        break\n    }\n  }\n}\n\nfunction createTagHandler(dispatch: Dispatch) {\n  return (update: MutationEvent) => {\n    const {documentId, result, transition} = update\n\n    switch (transition) {\n      case 'appear':\n        dispatch(tagsActions.listenerCreateQueue({tag: result as Tag}))\n        break\n      case 'disappear':\n        dispatch(tagsActions.listenerDeleteQueue({tagId: documentId}))\n        break\n      case 'update':\n        dispatch(tagsActions.listenerUpdateQueue({tag: result as Tag}))\n        break\n      default:\n        break\n    }\n  }\n}\n\nexport function useBrowserInit(\n  client: SanityClient,\n  schemaType?: AssetSourceComponentProps['schemaType'],\n): void {\n  const dispatch = useDispatch()\n  const tagsByIds = useSelector((state: RootReducerState) => state.tags.byIds)\n  const tagsFetchCount = useSelector((state: RootReducerState) => state.tags.fetchCount)\n\n  const tagNames = getMediaTagNames(schemaType)\n  const hasMediaTags = tagNames.length > 0\n\n  useEffect(() => {\n    if (!hasMediaTags) {\n      dispatch(searchActions.facetsClear())\n    }\n\n    dispatch(tagsActions.fetchRequest())\n\n    // Fetch all folders\n    dispatch(foldersActions.fetchRequest())\n\n    const assetSubscription = client\n      .listen(\n        groq`*[_type in [\"sanity.fileAsset\", \"sanity.imageAsset\"] && !(_id in path(\"drafts.**\"))]`,\n      )\n      .subscribe(createAssetHandler(dispatch))\n\n    const tagSubscription = client\n      .listen(groq`*[_type == \"${TAG_DOCUMENT_NAME}\" && !(_id in path(\"drafts.**\"))]`)\n      .subscribe(createTagHandler(dispatch))\n\n    const folderSubscription = client\n      .listen(groq`*[_type == \"${FOLDER_DOCUMENT_NAME}\" && !(_id in path(\"drafts.**\"))]`)\n      .subscribe(() => dispatch(foldersActions.fetchRequest()))\n\n    return () => {\n      assetSubscription.unsubscribe()\n      tagSubscription.unsubscribe()\n      folderSubscription.unsubscribe()\n    }\n  }, [client, dispatch, hasMediaTags])\n\n  // When mediaTags are configured, wait for the tag fetch to complete then apply facets.\n  // Dispatching clear + add synchronously keeps all actions within assetsSearchEpic's\n  // 400ms debounce window, so the browser performs exactly one asset fetch on open.\n  useEffect(() => {\n    if (!hasMediaTags || tagsFetchCount < 0) return\n\n    const tagFacetInput = inputs.tag\n    if (tagFacetInput.type !== 'searchable') return\n\n    const resolvedTags = tagNames\n      .map((name) => Object.values(tagsByIds).find((item) => item.tag.name.current === name))\n      .filter((item): item is NonNullable<typeof item> => Boolean(item))\n\n    dispatch(searchActions.facetsClear())\n\n    for (const tagItem of resolvedTags) {\n      dispatch(\n        searchActions.facetsAdd({\n          facet: {\n            ...tagFacetInput,\n            operatorType: 'references',\n            value: {label: tagItem.tag.name.current, value: tagItem.tag._id},\n          },\n        }),\n      )\n    }\n  }, [tagsFetchCount, hasMediaTags]) // eslint-disable-line react-hooks/exhaustive-deps\n}\n","import {Card, Flex, PortalProvider} from '@sanity/ui'\nimport {useState} from 'react'\nimport {type AssetSourceComponentProps, type SanityDocument} from 'sanity'\n\nimport {AssetBrowserDispatchProvider} from '../../contexts/AssetSourceDispatchContext'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport GlobalStyle from '../../styled/GlobalStyles'\nimport Controls from '../Controls'\nimport DebugControls from '../DebugControls'\nimport Dialogs from '../Dialogs'\nimport FolderBreadcrumbs from '../FolderBreadcrumbs'\nimport FolderPanel from '../FolderPanel'\nimport Header from '../Header'\nimport Items from '../Items'\nimport Notifications from '../Notifications'\nimport PickedBar from '../PickedBar'\nimport ReduxProvider from '../ReduxProvider'\nimport TagsPanel from '../TagsPanel'\nimport UploadDropzone from '../UploadDropzone'\nimport {useBrowserInit} from './useBrowserInit'\n\ntype Props = {\n  assetType?: AssetSourceComponentProps['assetType']\n  document?: SanityDocument\n  isMultiSelect?: boolean\n  onClose?: AssetSourceComponentProps['onClose']\n  onSelect?: AssetSourceComponentProps['onSelect']\n  selectedAssets?: AssetSourceComponentProps['selectedAssets']\n  schemaType?: AssetSourceComponentProps['schemaType']\n}\n\nconst BrowserContent = ({\n  onClose,\n  schemaType,\n}: {\n  onClose?: AssetSourceComponentProps['onClose']\n  schemaType?: AssetSourceComponentProps['schemaType']\n}) => {\n  const client = useVersionedClient()\n  const [portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n\n  useBrowserInit(client, schemaType)\n\n  return (\n    <PortalProvider element={portalElement}>\n      <UploadDropzone>\n        <Dialogs />\n        <Notifications />\n\n        <Card data-testid=\"media-browser\" display=\"flex\" height=\"fill\" ref={setPortalElement}>\n          <Flex direction=\"column\" flex={1}>\n            {/* Header */}\n            <Header onClose={onClose} />\n\n            {/* Browser Controls */}\n            <Controls />\n\n            <FolderBreadcrumbs />\n\n            <Flex flex={1}>\n              <FolderPanel />\n              <Flex align=\"flex-end\" direction=\"column\" flex={1} style={{position: 'relative'}}>\n                <PickedBar />\n                <Items />\n              </Flex>\n              <TagsPanel />\n            </Flex>\n\n            {/* Debug */}\n            <DebugControls />\n          </Flex>\n        </Card>\n      </UploadDropzone>\n    </PortalProvider>\n  )\n}\n\nconst Browser = (props: Props) => {\n  const client = useVersionedClient()\n  const {excludeTagSlugs} = useToolOptions()\n\n  return (\n    <ReduxProvider\n      assetType={props?.assetType}\n      client={client}\n      document={props?.document}\n      excludeTagSlugs={excludeTagSlugs}\n      selectedAssets={props?.selectedAssets}\n    >\n      <AssetBrowserDispatchProvider isMultiSelect={props?.isMultiSelect} onSelect={props?.onSelect}>\n        <GlobalStyle />\n        <BrowserContent onClose={props?.onClose} schemaType={props?.schemaType} />\n      </AssetBrowserDispatchProvider>\n    </ReduxProvider>\n  )\n}\n\nexport default Browser\n","import {Box, Portal, PortalProvider, useLayer} from '@sanity/ui'\nimport {type SyntheticEvent} from 'react'\nimport {type AssetSourceComponentProps, type SanityDocument, useFormValue} from 'sanity'\n\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useRootPortalElement from '../../hooks/useRootPortalElement'\nimport Browser from '../Browser'\n\nconst FormBuilderTool = (props: AssetSourceComponentProps) => {\n  const {onClose} = props\n\n  const portalElement = useRootPortalElement()\n\n  // Get current Sanity document\n  const currentDocument = useFormValue([]) as SanityDocument\n  const selectionType = (props as unknown as {selectionType?: string})?.selectionType\n  const schemaJsonType = (props?.schemaType as {jsonType?: string} | undefined)?.jsonType\n  const isMultiSelect = selectionType === 'multiple' || schemaJsonType === 'array'\n\n  // Close on escape key press\n  useKeyPress('escape', onClose)\n\n  // Stop propagation and prevent document mouse events from firing.\n  // This is a bit of a hack to make this work with `editModal = 'popover'` and prevent Sanity's <Popover /> component from\n  // prematurely closing, as it attaches events on `document` to detect outside clicks.\n  const handleStopPropagation = (event: SyntheticEvent) => {\n    event.nativeEvent.stopImmediatePropagation()\n    event.stopPropagation()\n  }\n\n  const {zIndex} = useLayer()\n\n  return (\n    <PortalProvider element={portalElement}>\n      <Portal>\n        <Box\n          onDragEnter={handleStopPropagation}\n          onDragLeave={handleStopPropagation}\n          onDragOver={handleStopPropagation}\n          onDrop={handleStopPropagation}\n          onMouseUp={handleStopPropagation}\n          style={{\n            bottom: 0,\n            height: 'auto',\n            left: 0,\n            position: 'fixed',\n            top: 0,\n            width: '100%',\n            zIndex,\n          }}\n        >\n          <Browser\n            document={currentDocument}\n            isMultiSelect={isMultiSelect}\n            schemaType={props.schemaType}\n            {...props}\n          />\n        </Box>\n      </Portal>\n    </PortalProvider>\n  )\n}\n\nexport default FormBuilderTool\n","import {Flex} from '@sanity/ui'\n\nimport Browser from '../Browser'\n\nconst Tool = () => {\n  return (\n    <Flex direction=\"column\" height=\"fill\" flex={1}>\n      <Browser />\n    </Flex>\n  )\n}\n\nexport default Tool\n","import {FolderIcon} from '@sanity/icons/Folder'\n\nimport {FOLDER_DOCUMENT_NAME} from '../constants'\n\nexport default {\n  title: 'Media Folder',\n  icon: FolderIcon,\n  name: FOLDER_DOCUMENT_NAME,\n  type: 'document',\n  fields: [\n    {\n      title: 'Name',\n      name: 'name',\n      type: 'string',\n    },\n    {\n      title: 'Parent',\n      name: 'parent',\n      type: 'reference',\n      to: [{type: FOLDER_DOCUMENT_NAME}],\n      weak: true,\n    },\n  ],\n  preview: {\n    select: {\n      name: 'name',\n      parentName: 'parent.name',\n    },\n    prepare(selection: {name?: string; parentName?: string}): {\n      media: typeof FolderIcon\n      subtitle?: string\n      title: string\n    } {\n      const {name, parentName} = selection\n      return {\n        media: FolderIcon,\n        title: name || 'Folder',\n        subtitle: parentName ? `in ${parentName}` : undefined,\n      }\n    },\n  },\n}\n","import TagIcon from '../components/TagIcon'\nimport {TAG_DOCUMENT_NAME} from '../constants'\n\nexport default {\n  title: 'Media Tag',\n  icon: TagIcon,\n  name: TAG_DOCUMENT_NAME,\n  type: 'document',\n  fields: [\n    {\n      title: 'Name',\n      name: 'name',\n      type: 'slug',\n    },\n  ],\n  preview: {\n    select: {\n      name: 'name',\n    },\n    prepare(selection: any) {\n      const {name} = selection\n      return {\n        media: TagIcon,\n        title: name?.current,\n      }\n    },\n  },\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {ImageIcon} from '@sanity/icons/Image'\nimport {type AssetSource, type Tool as SanityTool, definePlugin} from 'sanity'\n\nimport EditAssetTool from './components/EditAssetTool'\nimport FormBuilderTool from './components/FormBuilderTool'\nimport Tool from './components/Tool'\nimport {ToolOptionsProvider} from './contexts/ToolOptionsContext'\nimport mediaFolder from './schemas/folder'\nimport mediaTag from './schemas/tag'\nimport type {MediaToolOptions} from './types'\n\nconst plugin = {\n  icon: ImageIcon,\n  name: 'media',\n  title: 'Media',\n}\n\nexport const mediaAssetSource = {\n  ...plugin,\n  component: FormBuilderTool,\n} satisfies AssetSource\n\nconst editMediaAssetSource = {\n  icon: EditIcon,\n  name: 'edit-media',\n  title: 'Edit Media',\n  component: EditAssetTool,\n} satisfies AssetSource\n\nconst tool = {\n  ...plugin,\n  component: Tool,\n  __internalApplicationType: 'sanity/media',\n} satisfies SanityTool\n\nexport const media = definePlugin<MediaToolOptions | void>((options) => ({\n  name: 'media',\n  studio: {\n    components: {\n      layout: (props) => (\n        <ToolOptionsProvider options={options}>{props.renderDefault(props)}</ToolOptionsProvider>\n      ),\n    },\n  },\n  form: {\n    file: {\n      assetSources: (prev) => {\n        return [...prev, mediaAssetSource, editMediaAssetSource]\n      },\n    },\n    image: {\n      assetSources: (prev) => {\n        return [...prev, mediaAssetSource, editMediaAssetSource]\n      },\n    },\n  },\n  schema: {\n    types: [mediaTag, mediaFolder],\n  },\n  tools: (prev) => {\n    return [...prev, tool]\n  },\n}))\n","import type {SanityClient} from '@sanity/client'\nimport groq from 'groq'\nimport {nanoid} from 'nanoid'\n\nimport {TAG_DOCUMENT_NAME} from '../constants'\nimport type {Tag} from '../types'\n\ntype ApplyMediaTagsOptions = {\n  client: SanityClient\n  assetId: string\n  mediaTags: string[]\n  createTagsOnUpload?: boolean\n}\n\n// Serialize calls per asset so concurrent fields reading the same asset\n// don't race each other — the second call always runs after the first commits.\nconst pendingByAsset = new Map<string, Promise<void>>()\n\nexport function applyMediaTags(options: ApplyMediaTagsOptions): Promise<void> {\n  const {assetId} = options\n  const chain = (pendingByAsset.get(assetId) ?? Promise.resolve()).then(() =>\n    doApplyMediaTags(options),\n  )\n  const cleanup = chain\n    .catch(() => {})\n    .finally(() => {\n      if (pendingByAsset.get(assetId) === cleanup) pendingByAsset.delete(assetId)\n    })\n  pendingByAsset.set(assetId, cleanup)\n  return chain\n}\n\nasync function doApplyMediaTags({\n  client,\n  assetId,\n  mediaTags,\n  createTagsOnUpload = true,\n}: ApplyMediaTagsOptions): Promise<void> {\n  if (!mediaTags || mediaTags.length === 0) return\n\n  const resolvedTags = await Promise.all(\n    mediaTags.map(async (tagName) => {\n      const existingTag = await client.fetch<Tag | null>(\n        groq`*[_type == \"${TAG_DOCUMENT_NAME}\" && name.current == $tagName][0]`,\n        {tagName},\n      )\n      if (existingTag) return existingTag\n      if (createTagsOnUpload) {\n        const newTag = await client.create({\n          _type: TAG_DOCUMENT_NAME,\n          name: {_type: 'slug', current: tagName},\n        })\n        return newTag as Tag\n      }\n      return null\n    }),\n  )\n\n  const validTags = resolvedTags.filter((tag): tag is Tag => tag !== null)\n  if (validTags.length === 0) return\n\n  const existing = await client.fetch<{tagIds: string[]} | null>(\n    groq`*[_id == $assetId][0]{'tagIds': opt.media.tags[]._ref}`,\n    {assetId},\n    {useCdn: false}, // bypass CDN cache so we see the latest committed tag refs\n  )\n  const existingIds = new Set(existing?.tagIds ?? [])\n\n  const tagReferences = validTags\n    .filter((tag) => !existingIds.has(tag._id))\n    .map((tag) => ({\n      _key: nanoid(),\n      _ref: tag._id,\n      _type: 'reference' as const,\n      _weak: true,\n    }))\n\n  if (tagReferences.length === 0) return\n\n  await client\n    .patch(assetId)\n    .setIfMissing({opt: {}})\n    .setIfMissing({'opt.media': {}})\n    .setIfMissing({'opt.media.tags': []})\n    .append('opt.media.tags', tagReferences)\n    .commit()\n}\n","import {useToast} from '@sanity/ui'\nimport {useEffect, useRef} from 'react'\nimport {type InputProps} from 'sanity'\n\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {applyMediaTags} from '../../utils/applyMediaTags'\n\ntype AssetValue = {\n  _type: 'image' | 'file'\n  asset?: {\n    _ref: string\n    _type: 'reference'\n  }\n}\n\nexport type AutoTagInputProps = InputProps & {\n  mediaTags?: string[]\n}\n\n/**\n * Input component that automatically applies media tags when an asset is selected or uploaded.\n *\n * Apply explicitly to image/file fields that should be auto-tagged:\n * ```ts\n * import {AutoTagInput} from 'sanity-plugin-media'\n *\n * defineField({\n *   type: 'image',\n *   options: { mediaTags: ['product'] },   // also pre-filters the media browser\n *   components: { input: AutoTagInput },\n * })\n * ```\n *\n * Pass `mediaTags` as a prop to override or use without `options`:\n * ```ts\n * components: { input: (props) => <AutoTagInput {...props} mediaTags={['product']} /> }\n * ```\n */\nexport function AutoTagInput(props: AutoTagInputProps) {\n  const {renderDefault, schemaType, value, mediaTags: mediaTagsProp} = props\n  const toast = useToast()\n\n  // Prop takes precedence; fall back to schemaType.options.mediaTags (set for browser pre-filtering)\n  const mediaTags =\n    mediaTagsProp ?? (schemaType?.options as {mediaTags?: string[]} | undefined)?.mediaTags\n\n  const client = useVersionedClient()\n  const {createTagsOnUpload} = useToolOptions()\n\n  const prevAssetRef = useRef<string | undefined>(undefined)\n  const isInitialMount = useRef(true)\n\n  const currentAssetRef = (value as AssetValue | undefined)?.asset?._ref\n\n  useEffect(() => {\n    if (isInitialMount.current) {\n      isInitialMount.current = false\n      prevAssetRef.current = currentAssetRef\n      return\n    }\n\n    const previousRef = prevAssetRef.current\n    prevAssetRef.current = currentAssetRef\n\n    if (!mediaTags?.length || !currentAssetRef || currentAssetRef === previousRef) return\n\n    applyMediaTags({\n      client,\n      assetId: currentAssetRef,\n      mediaTags,\n      createTagsOnUpload,\n    }).catch((err) => {\n      console.error('[sanity-plugin-media] Failed to apply auto-tags:', err)\n      const label = mediaTags.length === 1 ? 'tag' : 'tags'\n      toast.push({\n        closable: true,\n        status: 'error',\n        title: `Failed to apply the media ${label} ${mediaTags.join(', ')}`,\n      })\n    })\n  }, [currentAssetRef, mediaTags, client, createTagsOnUpload, toast])\n\n  return renderDefault(props as InputProps)\n}\n","import type {\n  FieldDefinitionBase,\n  FileDefinition,\n  ImageDefinition,\n  WidenInitialValue,\n  WidenValidation,\n} from 'sanity'\n\nimport {AutoTagInput} from '../components/AutoTagInputWrapper'\n\ntype ImageMediaFieldConfig = Omit<ImageDefinition, 'options'> &\n  FieldDefinitionBase & {\n    name: string\n    mediaTags: string[]\n    options?: ImageDefinition['options']\n  }\n\ntype FileMediaFieldConfig = Omit<FileDefinition, 'options'> &\n  FieldDefinitionBase & {\n    name: string\n    mediaTags: string[]\n    options?: FileDefinition['options']\n  }\n\ntype ImageMediaFieldResult = Omit<ImageDefinition, 'options'> &\n  FieldDefinitionBase & {\n    options?: ImageDefinition['options'] & {mediaTags: string[]}\n    components: {input: typeof AutoTagInput}\n  } & WidenValidation &\n  WidenInitialValue\n\ntype FileMediaFieldResult = Omit<FileDefinition, 'options'> &\n  FieldDefinitionBase & {\n    options?: FileDefinition['options'] & {mediaTags: string[]}\n    components: {input: typeof AutoTagInput}\n  } & WidenValidation &\n  WidenInitialValue\n\n/**\n * Defines an image or file field with automatic media tag application when an asset is selected.\n *\n * Pass `mediaTags` at the top level — they are moved into `options.mediaTags` (for media browser\n * pre-filtering) and wire up {@link AutoTagInput} as the field component automatically:\n * ```ts\n * import {mediaField} from 'sanity-plugin-media'\n *\n * mediaField({\n *   name: 'coverImage',\n *   type: 'image',\n *   mediaTags: ['product-cover'],\n *   options: { hotspot: true },\n * })\n * ```\n *\n * For file fields, set `type: 'file'`:\n * ```ts\n * mediaField({ name: 'drawing', type: 'file', mediaTags: ['model-drawing'] })\n * ```\n */\nexport function mediaField(config: ImageMediaFieldConfig): ImageMediaFieldResult\nexport function mediaField(config: FileMediaFieldConfig): FileMediaFieldResult\nexport function mediaField(\n  config: ImageMediaFieldConfig | FileMediaFieldConfig,\n): ImageMediaFieldResult | FileMediaFieldResult {\n  const {mediaTags, options, components, ...rest} = config as ImageMediaFieldConfig & {\n    components?: Record<string, unknown>\n  }\n  return {\n    ...rest,\n    options: {...options, mediaTags},\n    components: {...components, input: AutoTagInput},\n  } as unknown as ImageMediaFieldResult\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAMU,6BAA6BT,cAAwCU,KAAAA,CAAS,GAEvEC,gCAA+BC,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAC1C,EAAAN,UAAAH,eAAAU,IAAAT,aAAoDM,OAAnCP,gBAAAU,OAAAL,KAAAA,KAAAK,IAAqBC;CAAA,AAAAH,EAAA,OAAAR,iBAAAQ,EAAA,OAAAP,YAG7BU,KAAA;EAAAX;EAAAC;CAGP,GAACO,EAAA,KAAAR,eAAAQ,EAAA,KAAAP,UAAAO,EAAA,KAAAG,MAAAA,KAAAH,EAAA;CAJH,IAAAI,eACSD,IAKRE;CAKuC,OALvCL,EAAA,OAAAL,YAAAK,EAAA,OAAAI,gBAGCC,KAAA,oBAAA,2BAAA,UAAA;EAA4CD,OAAAA;EACzCT;CACH,CAAA,GAAsCK,EAAA,KAAAL,UAAAK,EAAA,KAAAI,cAAAJ,EAAA,KAAAK,MAAAA,KAAAL,EAAA,IAFtCK;AAEsC,GAI7BC,8BAAwB;CACnC,IAAAC,UAAgBnB,WAAWQ,0BAA0B;CACrD,IAAIW,YAAYV,KAAAA,GACd,MAAUW,MAAM,0EAA0E;CAC3F,OACMD;AAAO,GChCVI,6BAAuB;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAC3B,CAAAC,aAAoBJ,SAASK,QAAmC,GAACC,IAAAC;CAQlD,OARkDL,EAAA,OAAAE,aAQnDE,KAAAJ,EAAA,IAAAK,KAAAL,EAAA,OANJI,YACRF,UAASI,UAAUC,IAAK,cAAc,GACtCC,SAAQC,KAAKC,YAAaR,SAAS,SAC5B;EACLM,SAAQC,KAAKE,YAAaT,SAAS;CAAC,IAErCG,KAAA,CAACH,SAAS,GAACF,EAAA,KAAAE,WAAAF,EAAA,KAAAI,IAAAJ,EAAA,KAAAK,KANdR,UAAUO,IAMPC,EAAW,GAEPH;AAAS;AAXW,SAAAC,WAAA;CAAA,OACQK,SAAQI,cAAe,KAAK;AAAC;ACJlE,MAAMI,mBAA2DF,aCD3DK,2BAAqB;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAwD,OAAxDF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAA8BF,KAAA,EAAAG,YAAa,aAAY,GAACL,EAAA,KAAAE,MAAAA,KAAAF,EAAA,IAApCF,UAAUI,EAA0B;AAAC,GCD9EK,mBAAgE;CACpEI,YAAY;EACVF,KAAK;EACLC,MAAM;CACR;CACAE,YAAY;EACVH,KAAK;EACLC,MAAM;CACR;CACAG,UAAU;EACRJ,KAAK;EACLC,MAAM;CACR;CACAI,kBAAkB;EAChBL,KAAK;EACLC,MAAM;CACR;CACAK,MAAM;EACJN,KAAK;EACLC,MAAM;CACR;AACF,GAEaM,iBAAiBC,OAAeC,cACpCX,iBAAiBU,MAAM,CAAEC,YCjBrBM,UAA8B,EAACC,MAAM,UAAS,GAE9CC,SAAyD;CACpEE,SAAS;EACPC,YAAY,CAAC,QAAQ,OAAO;EAC5BC,OAAO;EACPC,MAAM;EACNC,cAAc;EACdC,eAAe;GAAC;GAAS;GAAY;GAAM;GAAY;EAAgB;EACvEC,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;CACAC,YAAY;EACVP,YAAY,CAAC,QAAQ,OAAO;EAC5BC,OAAO;EACPC,MAAM;EACNC,cAAc;EACdC,eAAe;GAAC;GAAS;GAAY;GAAM;GAAY;EAAgB;EACvEC,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;CACAE,aAAa;EACXR,YAAY,CAAC,QAAQ,OAAO;EAC5BC,OAAO;EACPC,MAAM;EACNC,cAAc;EACdC,eAAe;GAAC;GAAS;GAAY;GAAM;GAAY;EAAgB;EACvEC,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;CACAG,QAAQ;EACNT,YAAY,CAAC,QAAQ,OAAO;EAC5BC,OAAO;EACPC,MAAM;EACNC,cAAc;EACdC,eAAe,CAAC,SAAS,UAAU;EACnCC,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;CACAI,UAAU;EACRV,YAAY,CAAC,QAAQ,OAAO;EAC5BC,OAAO;EACPC,MAAM;EACNC,cAAc;EACdC,eAAe,CAAC,YAAY,gBAAgB;EAC5CC,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;CACAK,QAAQ;EACNX,YAAY,CAAC,OAAO;EACpBC,OAAO;EACPC,MAAM;EACNC,cAAc;EACdC,eAAe;GACb;GACA;GACA;GACA;GACA;GACA;EAAS;EAEXC,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;CACAM,mBAAmB;EACjBZ,YAAY,CAAC,QAAQ,OAAO;EAC5BE,MAAM;EACNC,cAAc;EACdU,SAAS,CACP;GACEX,MAAM;GACNG,OAAO;GACPC,OAAOhB,IAAI;EACb,GACA;GACEY,MAAM;GACNG,OAAO;GACPC,OAAOhB,IAAI;EACb,CAAC;EAEHwB,YAAY;EACZT,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;CACAS,OAAO;EACLf,YAAY,CAAC,QAAQ,OAAO;EAC5BE,MAAM;EACNC,cAAc;EACdU,SAAS,CACP;GACEX,MAAM;GACNG,OAAO;GACPC,OAAOhB,IAAI;EACb,GACA;GACEY,MAAM;GACNG,OAAO;GACPC,OAAOhB,IAAI;EACb,CAAC;EAEHe,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;CACAU,UAAU;EACRhB,YAAY,CAAC,OAAO;EACpBC,OAAO;EACPC,MAAM;EACNC,cAAc;EACdU,SAAS,CACP;GACEX,MAAM;GACNG,OAAO;GACPC,OAAO;EACT,GACA;GACEJ,MAAM;GACNG,OAAO;GACPC,OAAO;EACT,CAAC;EAEHD,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;CACAW,aAAa;EACXjB,YAAY,CAAC,OAAO;EACpBE,MAAM;EACNC,cAAc;EACdC,eAAe,CAAC,MAAM,OAAO;EAC7BS,SAAS;GACP;IACEX,MAAM;IACNG,OAAO;IACPC,OAAO;GACT;GACA;IACEJ,MAAM;IACNG,OAAO;IACPC,OAAO;GACT;GACA;IACEJ,MAAM;IACNG,OAAO;IACPC,OAAO;GACT;EAAC;EAEHD,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;CACAY,MAAM;EACJlB,YAAY,CAAC,QAAQ,OAAO;EAC5BC,OAAO;EACPkB,UAAU;EACVC,WAAW,CACT;GACElB,MAAM;GACNG,OAAO;GACPgB,gBAAgBC,cAAc,SAASA,UAAS;EAClD,GACA;GACEpB,MAAM;GACNG,OAAO;GACPgB,gBAAgBC,cAAc,SAASA,UAAS;EAClD,CAAC;EAEHpB,MAAM;EACNC,cAAc;EACdC,eAAe;GACb;GACA;GACA;GACA;GACA;GACA;EAAS;EAEXC,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;CACAiB,KAAK;EACHvB,YAAY,CAAC,QAAQ,OAAO;EAC5BC,OAAO;EACPC,MAAM;EACNC,cAAc;EACdC,eAAe;GAAC;GAAc;GAAoB;GAAM;GAAS;EAAU;EAC3EC,OAAO;EACPT,MAAM;CACR;CACAS,OAAO;EACLL,YAAY,CAAC,QAAQ,OAAO;EAC5BC,OAAO;EACPC,MAAM;EACNC,cAAc;EACdC,eAAe;GAAC;GAAS;GAAY;GAAM;GAAY;EAAgB;EACvEC,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;CACAV,MAAM;EACJI,YAAY,CAAC,QAAQ,OAAO;EAC5BE,MAAM;EACNC,cAAc;EACdC,eAAe,CAAC,MAAM,OAAO;EAC7BS,SAAS;GACP;IACEX,MAAM;IACNG,OAAO;IACPC,OAAO;GACT;GACA;IACEJ,MAAM;IACNG,OAAO;IACPC,OAAO;GACT;GACA;IACEJ,MAAM;IACNG,OAAO;IACPC,OAAO;GACT;GACA;IACEJ,MAAM;IACNG,OAAO;IACPC,OAAO;GACT;EAAC;EAEHD,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;CACAkB,OAAO;EACLxB,YAAY,CAAC,OAAO;EACpBC,OAAO;EACPC,MAAM;EACNC,cAAc;EACdC,eAAe;GACb;GACA;GACA;GACA;GACA;GACA;EAAS;EAEXC,OAAO;EACPT,MAAM;EACNU,OAAO;CACT;AACF,GAEamB,YAAkC;CAC7CC,gBAAgB;EACdC,KAAKrB,OAAOL,UAAWK,QAAQ,KAAKL,MAAK,WAAYK,MAAK,OAAQsB,KAAAA;EAClEC,OAAO;CACT;CACAC,kBAAkB;EAChBH,KAAKrB,OAAOyB,WAAYzB,QAAQ,gBAAgBA,MAAK,MAAOsB,KAAAA;EAC5DC,OAAO;CACT;CACAG,OAAO;EACLL,KAAKM,QAAQhC,UAAU,YAAYA,MAAK;EACxCiC,WAAW;EACXL,OAAO;CACT;CACAM,SAAS;EACPR,KAAKrB,OAAOL,UAAWK,QAAQ,GAAGL,MAAK,MAAOK,UAAUsB,KAAAA;EACxDC,OAAO;CACT;CACAO,aAAa;EACXT,KAAKrB,OAAOL,UAAWK,QAAQ,GAAGL,MAAK,KAAMK,UAAUsB,KAAAA;EACvDC,OAAO;CACT;CACAQ,sBAAsB;EACpBV,KAAKrB,OAAOL,UAAWK,QAAQ,GAAGL,MAAK,MAAOK,UAAUsB,KAAAA;EACxDC,OAAO;CACT;CACAS,UAAU;EACRX,KAAKrB,OAAOL,UAAWK,QAAQ,GAAGL,MAAK,WAAYK,MAAK,MAAOsB,KAAAA;EAC/DC,OAAO;CACT;CACAU,IAAI;EACFZ,KAAKrB,OAAOyB,WAAW,GAAGzB;EAC1BuB,OAAO;CACT;CACAW,OAAO;EACLb,KAAKrB,OAAOyB,WAAW,KAAKzB,MAAK;EACjCuB,OAAO;CACT;CACAY,UAAU;EACRd,KAAKrB,OAAOL,UAAWK,QAAQ,GAAGL,MAAK,KAAMK,UAAUsB,KAAAA;EACvDC,OAAO;CACT;CACAa,mBAAmB;EACjBf,KAAKrB,OAAOL,UAAWK,QAAQ,GAAGL,MAAK,MAAOK,UAAUsB,KAAAA;EACxDC,OAAO;CACT;CACAc,UAAU;EACRhB,KAAKM,QAAQhC,UAAU,WAAWA,MAAK;EACvCiC,WAAW;EACXL,OAAO;CACT;CACAe,YAAY;EACVjB,KAAKrB,OAAOyB,WAAYzB,QAAQ,eAAeA,MAAK,MAAOsB,KAAAA;EAC3DC,OAAO;CACT;AACF,GCvTauB,wBAAwB,CACnC,QACA,OAAO,GAKIE,gBAAuE;CAClF;EACEC,WAAW;EACXC,OAAO;CACT;CACA;EACED,WAAW;EACXC,OAAO;CACT;CAEA;CACA;EACED,WAAW;EACXC,OAAO;CACT;CACA;EACED,WAAW;EACXC,OAAO;CACT;CAEA;CACA;EACED,WAAW;EACXC,OAAO;CACT;CACA;EACED,WAAW;EACXC,OAAO;CACT;CAEA;CACA;EACED,WAAW;EACXC,OAAO;CACT;CACA;EACED,WAAW;EACXC,OAAO;CACT;AAAC,GAGUC,SAA4E;CACvFV,OAAOW;CACPZ;CACAC,OAAOY;CACPZ,OAAOa;CACPd;CACAC,OAAOc;CACPd,OAAOe;CACPf,OAAOgB;CACPhB,OAAOiB;CACPjB,OAAOkB;CACPnB;CACAC,OAAOmB;CACPpB;CACAC,OAAOoB;CACPpB,OAAOqB;CACPrB,OAAOsB;CACPvB;CACAC,OAAOuB;CACPvB,OAAOwB;CACPxB,OAAOyB;AAAM,GAGFC,wBAAwB;CACnCC,OAAO;CACPC,OAAO;AACT,GAEaE,uBAAuB,gBAEvBE,oBAAoB,aCrF3BQ,iBAAiBC,cACd,SAAaC,QAAsC;CACxD,OAAOR,UACC,CAAC,CAACO,WACRC,OAAOE,KACLN,MAAM,GAAI,GACVC,UAAUM,MACJC,KAAKC,OAAO,IAAI,KACXV,WAAW;EAChBW,SAAS;EACTC,YAAY;CACd,CAAC,IAEIb,GAAGS,CAAC,CACZ,CACH,GACAH,MACF;AACF,GCdWa,4BAA4BC,oBAAmD;CAC1F,IAAMC,4BAA4BD,iBAAiBE,SAC/CC,KAAKC,UAAUJ,eAAe,IAC9BK,KAAAA;CAEJ,OAAOJ,4BACHP,IAAI,2EAA2EE,kBAAiB,uBAAwBK,0BAAyB,gBACjJI,KAAAA;AACN,GAEMC,mBAAmB,EACvBC,YACAC,iBACAR,iBACAS,cACAC,kBAOY;CAIZ,IAAMC,qBAAqBJ,WAAWK,KAAKC,SAAS,UAAUA,KAAI,MAAO,GAEnEC,aAAapB,IAAI;eACVS,KAAKC,UAAUO,kBAAkB,EAAC;KAGzCI,sBAAsBhB,yBAAyBC,eAAe,GAE9DgB,uBAAuBP,aAAaQ,QAAQC,KAAeC,UAAU;EACzE,IAAIA,MAAMN,SAAS,UAAU;GAC3B,IAAM,EAACO,OAAOC,UAAUC,WAAWC,cAAcC,UAASL,OACpDM,WAAW9B,UAAU4B,eAGrBG,kBAAkBJ,WAAWK,MAAMC,MAAMA,EAAEC,SAASR,QAAQ,GAG5DS,aAAaJ,iBAAiBK,gBAChCL,gBAAgBK,cAAcX,KAAK,IACnCA,OAEEY,WAAWP,SAASQ,GAAGT,OAAOM,UAAU;GAC9C,AAAIE,YACFd,IAAIgB,KAAKF,QAAQ;EAErB;EAEA,IAAIb,MAAMN,SAAS,cAAc;GAC/B,IAAM,EAACO,OAAOG,cAAcC,UAASL,OAG/Ba,WAFWrC,UAAU4B,aAEF,CAACU,GAAGT,OAAOA,OAAOJ,KAAK;GAChD,AAAIY,YACFd,IAAIgB,KAAKF,QAAQ;EAErB;EAEA,IAAIb,MAAMN,SAAS,UAAU;GAC3B,IAAM,EAACO,OAAOG,cAAcY,SAASX,UAASL,OACxCM,WAAW9B,UAAU4B,eAErBa,qBAAqBD,SAASR,MAAMU,MAAMA,EAAER,SAASL,KAAK,CAAC,EAAEA,OAE7DQ,WAAWP,SAASQ,GAAGG,oBAAoBhB,KAAK;GACtD,AAAIY,YACFd,IAAIgB,KAAKF,QAAQ;EAErB;EAEA,IAAIb,MAAMN,SAAS,UAAU;GAC3B,IAAM,EAACO,OAAOG,cAAcC,UAASL,OAG/Ba,WAFWrC,UAAU4B,aAEF,CAACU,GAAGT,OAAOJ,KAAK;GACzC,AAAIY,YACFd,IAAIgB,KAAKF,QAAQ;EAErB;EAEA,OAAOd;CACT,GAAG,CAAA,CAAE,GAICoB,eAAmC9B,kBACrC,4BAA4BL,KAAKC,UAAUI,eAAe,MAC1DH,KAAAA;CAqBJ,OAlByB;EAEvBS;EACA,GAAIC,sBAAsB,CAACA,mBAAmB,IAAI,CAAA;EAKlD,GAAIL,cACA,CACEhB,IAAI,0FAA0FgB,YAAY8B,KAAK,EAAC,GAAI,IAEtH,CAAA;EACJ,GAAIF,eAAe,CAACA,YAAY,IAAI,CAAA;EAEpC,GAAGtB;CAAoB,CACxB,CAACyB,KAAK,MAEAF;AACT;;;;;;;;;;;;;;AChGA,SAAgBS,gBACdC,UACAE,UACAC,kBAC2B;CAC3B,IAAMC,wCAAwB,IAAIC,IAAY;CAE9C,OADAC,oBAAoBN,UAAUE,UAAUC,kBAAkB,IAAIC,qBAAqB,GAC5E,CAAC,GAAGA,qBAAqB,CAAC,CAACG,KAAKC,WAAW,GAAEA,QAAQR,SAASQ,OAAM,EAAE;AAC/E;AAEA,SAASF,oBACPG,MACAP,UACAC,kBACAO,eACAN,uBACM;CACN,IAAI,OAAOK,QAAS,aAAYA,MAC9B;CAGF,IAAME,YAAYF,MAGZG,WAAWD,UAAUb;CAE3B,AAD4Bc,UAAUhB,UAAU,eAAegB,SAASjB,SAASQ,oBACtDQ,UAAUf,UAAU,UAAUgB,aACvDA,SAASjB,OAAOO,SAASY,KACrBJ,iBACFN,sBAAsBW,IAAIL,aAAa;CAI3C,KAAK,IAAM,CAACM,KAAKC,UAAUC,OAAOC,QAAQV,IAA+B,GACvE,AAAI,OAAOQ,SAAU,YAAYA,SAG/BX,oBACEW,OACAf,UACAC,kBACAO,iBAAiBM,KACjBZ,qBACF;AAGN;AC/DA,MAAMyB,gBAAgBC,QAAsBC,SACnC,SAAaC,QAA4C;CAC9D,OAAOA,OAAOE,KACZR,eACSJ,KACLQ,OAAOK,MAAMd,IAAI,qBAAqBM,kBAAiB,+BAAgC,EACrFI,KACF,CAAC,CACH,CACD,GACDL,UAAUU,qBACJA,mBAAmB,IACdX,WAAW;EAChBY,SAAS;EACTC,YAAY;CACd,CAAqB,IAGhBd,GAAG,EAAI,CACf,CACH;AACF,GC3BIiB,uBAAuBC,SACpBA,KAAKC,QAAQC,KAAwBC,QAAQ;CAClD,IAAMC,MAAMD,KAAKC;CAOjB,OANIA,OACFF,IAAIG,KAAK;EACPC,OAAOF,KAAKG,MAAMC;EAClBC,OAAOL,KAAKM;CACd,CAAC,GAEIR;AACT,GAAG,CAAA,CAAE,GCRMa,iBAAiB;CAC5BC,iBAAiBL,aACf,2BACA,SAASM,QAAQ,EAACC,QAAQC,OAAuC;EAC/D,OAAO,EAACC,SAAS;GAACF;GAAQC;EAAG,EAAC;CAChC,CACF;CACAE,cAAcV,aACZ,wBACA,SAASM,QAAQ,EAACC,QAAQI,OAAOH,OAAyD;EACxF,OAAO,EAACC,SAAS;GAACF;GAAQI;GAAOH;EAAG,EAAC;CACvC,CACF;CACAI,gBAAgBZ,aACd,0BACA,SAASM,QAAQ,EAACC,QAAQC,OAAuC;EAC/D,OAAO,EAACC,SAAS;GAACF;GAAQC;EAAG,EAAC;CAChC,CACF;CACAK,oBAAoBb,aAClB,8BACA,SAASM,QAAQ,EAACC,QAAQC,OAAuC;EAC/D,OAAO,EAACC,SAAS;GAACF;GAAQC;EAAG,EAAC;CAChC,CACF;CACAM,iBAAiBd,aACf,2BACA,SAASM,QAAQ,EAACC,QAAQI,OAAOH,OAAyD;EACxF,OAAO,EAACC,SAAS;GAACF;GAAQI;GAAOH;EAAG,EAAC;CACvC,CACF;CACAO,mBAAmBf,aACjB,6BACA,SAASM,QAAQ,EAACC,QAAQC,OAAuC;EAC/D,OAAO,EAACC,SAAS;GAACF;GAAQC;EAAG,EAAC;CAChC,CACF;AACF,GCrCaU,iBAAiB;CAC5BC,kBAAkBH,aAChB,2BACA,SAASI,QAAQ,EAACC,mBAAoD,CAAC,GAAG;EACxE,OAAO,EACLC,SAAS,EAACD,eAAc,EAC1B;CACF,CACF;CACAE,gBAAgBP,aACd,yBACA,SAASI,QAAQ,EAACI,QAAQC,YAA4D;EACpF,OAAO,EACLH,SAAS;GAACE;GAAQC;EAAQ,EAC5B;CACF,CACF;CACAC,kBAAkBV,aAChB,2BACA,SAASI,QAAQ,EAACK,YAA+B;EAC/C,OAAO,EACLH,SAAS,EAACG,SAAQ,EACpB;CACF,CACF;CACAE,eAAeX,aAAa,sBAAsB;CAClDY,aAAaZ,aAAa,sBAAsB,SAASI,QAAQ,EAACS,SAAyB;EACzF,OAAO,EACLP,SAAS,EAACO,MAAK,EACjB;CACF,CAAC;AACH,GCKM4C,YAAY1C,YAAY;CAC5B2C,MAAM;CACNH,cAAAA;EAZAT,QAAQ,CAAA;EACRC,OAAO,CAAC;EACRE,UAAU;EACVC,eAAeM,KAAAA;EACfL,YAAY;EACZC,UAAU;EACVC,eAAeG,KAAAA;EACfF,cAAc;CAKdC;CACAI,gBAAgBC,YAAY;EAC1BA,QACGC,QAAQlB,eAAemB,gBAAgBC,UAAU;GAChD,OAAOA,MAAMb;EACf,CAAC,CAAC,CACDW,QAAQlB,eAAeqB,cAAcD,OAAOE,WAAW;GACtD,IAAM,EAACC,UAASD,OAAOE;GACvB,OAAOJ,MAAMhB,MAAMmB,MAAM,CAAEE;EAC7B,CAAC,CAAC,CACDC,WACCrD,QACE0B,eAAe4B,iBACf5B,eAAe6B,cACf7B,eAAe8B,oBACf9B,eAAe+B,eACjB,IACCV,OAAOE,WAAW;GACjB,IAAM,EAACS,QAAOT,OAAOE;GACrBJ,MAAMhB,MAAM2B,IAAIC,IAAI,CAAEC,WAAW;EACnC,CACF,CAAC,CACAP,WACCrD,QAAQ0B,eAAemC,gBAAgBnC,eAAeoC,iBAAiB,IACtEf,OAAOE,WAAW;GACjB,IAAM,EAACS,QAAOT,OAAOE;GACrBJ,MAAMhB,MAAM2B,IAAIC,IAAI,CAAEC,WAAW;EACnC,CACF;CACJ;CACAG,UAAU;EACRC,eAAejB,OAAOE,QAAqD;GACzE,IAAM,EAACS,QAAOT,OAAOE;GAKrBJ,AAJAA,MAAMd,WAAW,IACZc,MAAMjB,OAAOoC,SAASR,IAAIC,GAAG,KAChCZ,MAAMjB,OAAOqC,KAAKT,IAAIC,GAAG,GAE3BZ,MAAMhB,MAAM2B,IAAIC,OAAO;IACrBS,OAAO;IACPC,QAAQ;IACRX;IACAE,UAAU;GACZ;EACF;EACAU,YAAYvB,OAAOE,QAAyD;GAE1EF,AADAA,MAAMd,WAAW,IACjBc,MAAMb,gBAAgBe,OAAOE,QAAQC;EACvC;EACAmB,cAAcxB,OAAOyB,SAA0D;GAE7E,AADAzB,MAAMd,WAAW,IACjB,OAAOc,MAAMb;EACf;EACAuC,eAAe1B,OAAOE,QAAwC;GAC5D,IAAM,EAACC,UAASD,OAAOE,SACjBuB,cAAc3B,MAAMjB,OAAO6C,QAAQzB,KAAK;GAI9C,AAHIwB,eAAe,KACjB3B,MAAMjB,OAAO8C,OAAOF,aAAa,CAAC,GAEpC,OAAO3B,MAAMhB,MAAMmB;EACrB;EACA2B,YAAY9B,OAAOE,QAAqD;GACtE,IAAM,EAACG,OAAOM,QAAOT,OAAOE,SAEtBD,QAAQQ,KAAKC;GAEnBZ,AADAA,MAAMhB,MAAMmB,MAAM,CAAEE,QAAQA,OAC5BL,MAAMhB,MAAMmB,MAAM,CAAEU,WAAW;EACjC;EACAkB,cAAc/B,OAAOE,QAAmC;GACtD,IAAMC,QAAQD,OAAOE,SAASO,KAAKC;GAInCoB,AAHAhC,MAAMhB,MAAMmB,MAAM,CAAEmB,SAAS,IAC7BtB,MAAMhB,MAAMmB,MAAM,CAAEU,WAAW,IAE/BmB,OAAOC,KAAKjC,MAAMhB,KAAK,CAAC,CAACkD,SAASC,QAAQ;IACxC,OAAOnC,MAAMhB,MAAMmD,IAAI,CAAE9B;GAC3B,CAAC;EACH;EACA+B,cAAcpC,OAAOE,QAAsC;GACzD,IAAM,EAACmC,SAAQnC,OAAOE;GActB,AAZAiC,MAAMH,SAASvB,QAAQ;IAErBX,AADAA,MAAMjB,OAAOqC,KAAKT,IAAIC,GAAG,GACzBZ,MAAMhB,MAAM2B,IAAIC,OAAO;KACrBS,OAAO;KACPC,QAAQ;KACRX;KACAE,UAAU;IACZ;GACF,CAAC,GAEDb,MAAMX,WAAW,IACjBW,MAAMZ,aAAaiD,KAAKC,UAAU,GAClC,OAAOtC,MAAMV;EACf;EACAiD,WAAWvC,OAAOE,QAA2C;GAC3D,IAAM,EAACG,UAASH,OAAOE;GAEvBJ,AADAA,MAAMX,WAAW,IACjBW,MAAMV,gBAAgBe;EACxB;EACAmC,cAAc;GACZC,UAAUzC,OAAOyB,YAA4C;IAE3D,AADAzB,MAAMX,WAAW,IACjB,OAAOW,MAAMV;GACf;GACAqD,gBAiBS,EAACvC,SAAS,EAACsC,OAfJrF,IAAI;;;0BAGAY,kBAAiB;;;;;;;;;;;UAYZ,EAAC;EAE5B;EAEA2E,oBAAoBC,QAAQpB,SAAoC,CAC9D;EAGFqB,4BAA4B9C,OAAOE,QAAsC;GACvE,IAAM,EAACmC,SAAQnC,OAAOE;GAEtBiC,MAAMH,SAASvB,QAAQ;IAOrB,AANAX,MAAMhB,MAAM2B,IAAIC,OAAO;KACrBS,OAAO;KACPC,QAAQ;KACRX;KACAE,UAAU;IACZ,GACKb,MAAMjB,OAAOoC,SAASR,IAAIC,GAAG,KAChCZ,MAAMjB,OAAOqC,KAAKT,IAAIC,GAAG;GAE7B,CAAC;EACH;EAEAmC,oBAAoBF,QAAQpB,SAAyC,CACnE;EAGFuB,4BAA4BhD,OAAOE,QAA2C;GAC5E,IAAM,EAAC+C,WAAU/C,OAAOE;GAExB6C,QAAQf,SAAS/B,UAAU;IACzB,IAAMwB,cAAc3B,MAAMjB,OAAO6C,QAAQzB,KAAK;IAI9C,AAHIwB,eAAe,KACjB3B,MAAMjB,OAAO8C,OAAOF,aAAa,CAAC,GAEpC,OAAO3B,MAAMhB,MAAMmB;GACrB,CAAC;EACH;EAEA+C,oBAAoBL,QAAQpB,SAAoC,CAC9D;EAGF0B,4BAA4BnD,OAAOE,QAAsC;GACvE,IAAM,EAACmC,SAAQnC,OAAOE;GAEtBiC,MAAMH,SAASvB,QAAQ;IACrB,AAAIX,MAAMhB,MAAM2B,IAAIC,SAClBZ,MAAMhB,MAAM2B,IAAIC,IAAI,CAAED,MAAMA;GAEhC,CAAC;EACH;EAEAyC,gBAAgBpD,OAAOE,QAAgD;GACrE,IAAM,EAACX,iBAAgBW,OAAOE;GAC9BJ,MAAMT,eAAeA;EACvB;EAEA8D,KAAKrD,OAAO;GACVA,MAAMjB,OAAOsE,MAAMC,GAAGC,MAAM;IAC1B,IAAMC,OAAOxD,MAAMhB,MAAMsE,EAAE,CAAE3C,IAAIhB,KAAK8D,SAChCC,OAAO1D,MAAMhB,MAAMuE,EAAE,CAAE5C,IAAIhB,KAAK8D;IAOtC,OALID,OAAOE,OACF,KACF,EAAIF,OAAOE;GAIpB,CAAC;EACH;EACAC,eAAe3D,OAAOE,QAA2D;GAC/E,IAAM,EAACS,QAAOT,OAAOE;GAErBJ,AADAA,MAAMhB,MAAM2B,IAAIC,IAAI,CAAED,MAAMA,KAC5BX,MAAMhB,MAAM2B,IAAIC,IAAI,CAAEC,WAAW;EACnC;EACAgD,YAAY7D,OAAOE,QAAqD;GACtE,IAAM,EAACG,OAAOM,QAAOT,OAAOE,SACtBD,QAAQQ,KAAKC;GAEnBZ,AADAA,MAAMhB,MAAMmB,MAAM,CAAEE,QAAQA,OAC5BL,MAAMhB,MAAMmB,MAAM,CAAEU,WAAW;EACjC;EACAiD,cACE9D,OACAE,QAKA;GACA,IAAM,EAACS,QAAOT,OAAOE;GACrBJ,MAAMhB,MAAM2B,KAAKC,IAAI,CAAEC,WAAW;EACpC;CACF;AACF,CAAC,GAQYmD,kBAA0BC,SAASC,QAAQ,EAACC,aACvDF,QAAQG,KACNvG,OAAO6B,UAAU2E,QAAQ7C,cAAc8C,KAAK,GAC5CtG,eAAekG,MAAM,GACrBpG,UAAU,CAACoC,QAAQF,WAAW;CAC5B,IAAM,EAACkB,SAASvB,SAAQO,OAAOE;CAE/B,OAAO1C,GAAGwC,MAAM,CAAC,CAACkE,KAChBjG,cAAc6B,MAAMuE,MAAMC,aAAa,GACvCtG,aAAaiG,QAAQxE,IAAI,GACzB7B,eACEqG,OAAOM,WAAWC,OAAO;EACvBrD,OAAOpD;EACP0B,MAAM;GACJ0B,OAAO;GACPoC,SAAS9D;EACX;CACF,CAAC,CACH,GACA7B,UAAU6G,WAAWjH,GAAGgC,UAAU2E,QAAQpD,eAAe;EAACC;EAASP,KAAKgE;CAAa,CAAC,CAAC,CAAC,GACxF/G,YAAYyC,UACV3C,GACEgC,UAAU2E,QAAQ9C,YAAY;EAC5BlB,OAAO;GACLuE,SAASvE,OAAOuE,WAAW;GAC3BC,YAAYxE,OAAOwE,cAAc;EACnC;EACAlF;CACF,CAAC,CACH,CACF,CACF;AACF,CAAC,CACH,GAKWmF,kBAA0Bb,SAASC,QAAQ,EAACC,aACvDF,QAAQG,KACNvG,OAAO6B,UAAU2E,QAAQtC,cAAcuC,KAAK,GAC5CtG,eAAekG,MAAM,GACrBpG,UAAU,CAACoC,QAAQF,WAAW;CAC5B,IAAM,EAACW,QAAOT,OAAOE;CACrB,OAAO1C,GAAGwC,MAAM,CAAC,CAACkE,KAEhBjG,cAAc6B,MAAMuE,MAAMC,aAAa,GAEvC1G,eACEqG,OAAOM,WAAWM,MAChB1H,IAAI;;;;;;;gBAQJ,EAAC2H,SAASrE,IAAIhB,KAAK8D,QAAO,CAC5B,CACF,GAEA3F,UAAUmH,WAAW;EAUnB,IAAMS,cATUT,OAAOE,KAAKC,WAAW;GACrCC,IAAID,MAAMxE;GACV0E,OAAO;IAELC,cAAcH,MAAMI;IACpBC,OAAO,CAAC,2BAA2B9E,IAAIC,IAAG,GAAI;GAChD;EACF,EAEiCsE,CAAO,CAACS,QACtCC,IAAIN,UAAUM,GAAGN,MAAMA,MAAMD,IAAIC,MAAMA,KAAK,GAC7CnB,OAAOuB,YAAY,CACrB;EAIA,OAFAA,YAAYG,OAAOlF,IAAIC,GAAG,GAEnBpD,KAAKkI,YAAYI,OAAO,CAAC;CAClC,CAAC,GAEDhI,eAAeJ,GAAGgC,UAAU2E,QAAQ3C,eAAe,EAACvB,OAAOQ,IAAIC,IAAG,CAAC,CAAC,CAAC,GACrEhD,YAAYyC,UACV3C,GACEgC,UAAU2E,QAAQvC,YAAY;EAC5BzB,OAAO;GACLuE,SAASvE,OAAOuE,WAAW;GAC3BC,YAAYxE,OAAOwE,cAAc;EACnC;EACAlE;CACF,CAAC,CACH,CACF,CACF;AACF,CAAC,CACH,GAGWoF,iBAAyB9B,SAASC,QAAQ,EAACC,aACtDF,QAAQG,KACNvG,OAAO6B,UAAU2E,QAAQ7B,aAAa8B,KAAK,GAC3CtG,eAAekG,MAAM,GACrBnG,WAAW,CAACmC,QAAQF,WAAW;CAC7B,IAAM,EAAC0C,UAASxC,OAAOE;CAEvB,OAAO1C,GAAGwC,MAAM,CAAC,CAACkE,KAEhBjG,cAAc6B,MAAMuE,MAAMC,aAAa,GAEvC1G,eACEqG,OAAOM,WAAWM,MAEfrC,KAAK,CACV,GAEA5E,UAAU6G,WAAW;EACnB,IAAM,EAACqB,UAASrB;EAChB,OAAOjH,GAAGgC,UAAU2E,QAAQjC,cAAc,EAACC,MAAM2D,MAAK,CAAC,CAAC;CAC1D,CAAC,GACDpI,YAAYyC,UACV3C,GACEgC,UAAU2E,QAAQ9B,WAAW,EAC3BlC,OAAO;EACLuE,SAASvE,OAAOuE,WAAW;EAC3BC,YAAYxE,OAAOwE,cAAc;CACnC,EACF,CAAC,CACH,CACF,CACF;AACF,CAAC,CACH,GAIWoB,+BAAuChC,YAClDA,QAAQG,KACNvG,OAAO6B,UAAU2E,QAAQzB,oBAAoB0B,KAAK,GAClD3G,WAAW,GAAI,GACfE,QAAQwG,YAAYA,QAAQ/B,SAAS,CAAC,GACtCxE,UAAUuG,YAAY;CACpB,IAAMhC,OAAOgC,SAASc,KAAKjF,WAAWA,OAAOE,QAAQO,GAAG;CACxD,OAAOjD,GAAGgC,UAAU2E,QAAQvB,4BAA4B,EAACT,KAAI,CAAC,CAAC;AACjE,CAAC,CACH,GAIW6D,+BAAuCjC,YAClDA,QAAQG,KACNvG,OAAO6B,UAAU2E,QAAQtB,oBAAoBuB,KAAK,GAClD3G,WAAW,GAAI,GACfE,QAAQwG,YAAYA,QAAQ/B,SAAS,CAAC,GACtCxE,UAAUuG,YAAY;CACpB,IAAMpB,SAASoB,SAASc,KAAKjF,WAAWA,OAAOE,QAAQD,KAAK;CAC5D,OAAOzC,GAAGgC,UAAU2E,QAAQrB,4BAA4B,EAACC,OAAM,CAAC,CAAC;AACnE,CAAC,CACH,GAIWkD,+BAAuClC,YAClDA,QAAQG,KACNvG,OAAO6B,UAAU2E,QAAQnB,oBAAoBoB,KAAK,GAClD3G,WAAW,GAAI,GACfE,QAAQwG,YAAYA,QAAQ/B,SAAS,CAAC,GACtCxE,UAAUuG,YAAY;CACpB,IAAMhC,OAAOgC,SAASc,KAAKjF,WAAWA,OAAOE,QAAQO,GAAG;CACxD,OAAOjD,GAAGgC,UAAU2E,QAAQlB,4BAA4B,EAACd,KAAI,CAAC,CAAC;AACjE,CAAC,CACH,GAIW+D,gBAAwBnC,YACnCA,QAAQG,KACN7G,OACEmC,UAAU2E,QAAQvB,4BAA4BuD,MAC9C3G,UAAU2E,QAAQlB,4BAA4BkD,IAChD,GACA1I,WAAW,GAAI,GACfE,QAAQwG,YAAYA,QAAQ/B,SAAS,CAAC,GACtCxE,eAAeJ,GAAGgC,UAAU2E,QAAQhB,KAAK,CAAC,CAAC,CAC7C,GAMWiD,kBAA0BrC,SAASC,QAAQ,EAACC,aACvDF,QAAQG,KACNvG,OAAO6B,UAAU2E,QAAQP,cAAcQ,KAAK,GAC5CtG,eAAekG,MAAM,GACrBpG,UAAU,CAACoC,QAAQF,WAAW;CAC5B,IAAM,EAAC4D,eAAeG,UAAUpD,QAAOT,OAAOE;CAE9C,OAAO1C,GAAGwC,MAAM,CAAC,CAACkE,KAEhBjG,cAAc6B,MAAMuE,MAAMC,aAAa,GAEvCtG,aAAaiG,QAAQJ,UAAW,MAASN,OAAO,GAEhD3F,eAEIN,KACE2G,OACGmB,MAAM3E,IAAIC,GAAG,CAAC,CACd2F,IAAI,EAAC5G,MAAM;EAAC0B,OAAO;EAAQoC,SAASM,UAAW,KAAQN;CAAO,EAAC,CAAC,CAAC,CACjEqC,OAAO,CACZ,CACJ,GAEAhI,UAAU0I,eACD9I,GACLgC,UAAU2E,QAAQV,eAAe;EAC/BC;EACAjD,KAAK6F;CACP,CAAC,CACH,CACD,GACD5I,YAAYyC,UACV3C,GACEgC,UAAU2E,QAAQR,YAAY;EAC5BxD,OAAO;GACLuE,SAASvE,OAAOuE,WAAW;GAC3BC,YAAYxE,OAAOwE,cAAc;EACnC;EACAlE;CACF,CAAC,CACH,CACF,CACF;AACF,CAAC,CACH,GAII8F,mBAAmBzG,UAA4BA,MAAMqC,KAAKrD,OAE1D0H,oBAAoB1G,UAA4BA,MAAMqC,KAAKtD,QAEpD4H,aAAoD5J,eAC/D,CAAC0J,iBAAiBC,gBAAgB,IACjC1H,OAAOD,WAAWA,OAAOoG,KAAKE,OAAOrG,MAAMqG,GAAI,CAClD,GAEauB,gBAAgB7J,eAC3B,CAAC0J,kBAAkB5D,QAA0B1C,UAAkBA,KAAK,IACnEnB,OAAOmB,UAAUnB,MAAMmB,MAC1B,GAIa0G,0BACVzB,WACApF,UAAsD;CACrD,IAAMqC,OAAO+C,OAAO0B,KAAKC,OAAO1E,MAAMsD,QAAQqB,KAAgBC,MAAM;EAClE,IAAMC,UAAUlH,MAAMqC,KAAKrD,MAAMiI,EAAEE;EAInC,OAHID,SAASvG,OACXqG,IAAI5F,KAAK8F,OAAO,GAEXF;CACT,GAAG,CAAA,CAAE;CAML,OAJI3E,QAAQA,MAAMC,SAAS,IAClB5D,oBAAoB2D,IAAI,IAG1B;AACT,GAEW+E,cAAc,EAAC,GAAG1H,UAAU2E,QAAO;AAEhD,IAAA,eAAe3E,UAAU+C;ACrgBzB,MAAM+F,cAAcjB,YAAY;CAC9BkB,MAAM;CACNF,cAAAA;EANAF,QAAQ,CAAA;EACRC,OAAO;CAKPC;CACAG,UAAU;EAERC,UAAUC,OAAOC,QAAuD;GACtED,MAAMP,OAAOU,KAAK;IAAC,GAAGF,OAAOG,QAAQF;IAAOG,IAAIzB,KAAK;GAAC,CAAC;EACzD;EAEA0B,YAAYN,OAAO;GACjBA,MAAMP,SAAS,CAAA;EACjB;EAEAc,mBAAmBP,OAAOC,QAA4C;GACpED,MAAMP,SAASO,MAAMP,OAAOV,QAAQmB,UAAUA,MAAML,SAASI,OAAOG,QAAQI,SAAS;EACvF;EAEAC,kBAAkBT,OAAOC,QAAwC;GAC/DD,MAAMP,SAASO,MAAMP,OAAOV,QACzBmB,UAEGA,MAAML,SAAS,SACfK,MAAMS,SAAS,gBACdT,MAAMU,iBAAiB,gBAAgBV,MAAMU,iBAAiB,sBAC/DV,MAAMW,OAAOA,UAAUZ,OAAOG,QAAQM,KAE5C;EACF;EAEAI,iBAAiBd,OAAOC,QAA0C;GAChED,MAAMP,SAASO,MAAMP,OAAOV,QAAQmB,UAAUA,MAAMG,OAAOJ,OAAOG,QAAQW,OAAO;EACnF;EAEAC,aACEhB,OACAC,QAMA;GACA,IAAM,EAACgB,UAAUpB,MAAMe,cAAcC,UAASZ,OAAOG,SAE/CF,QAAQF,MAAMP,OAAOyB,MAAMC,MAAMA,EAAEtB,SAASA,IAAI;GAEjDK,UAIDA,MAAMS,SAAS,YAAYM,aAC7Bf,MAAMe,WAAWA,WAEfL,iBACFV,MAAMU,eAAeA,eAEZC,UAAU,WACnBX,MAAMW,QAAQA,QAGhBb,MAAMP,SAASO,MAAMP,OAAOV,QAAQoC,MAAMA,EAAEtB,SAASK,MAAML,QAAQsB,EAAEd,OAAOH,MAAMG,EAAE;EACtF;EAEAe,iBACEpB,OACAC,QAMA;GACA,IAAM,EAACgB,UAAUZ,IAAIO,cAAcC,UAASZ,OAAOG;GAEnDJ,MAAMP,OAAO4B,SAASnB,OAAOoB,UAAU;IACrC,AAAIpB,MAAMG,OAAOA,OACXH,MAAMS,SAAS,YAAYM,aAC7Bf,MAAMe,WAAWA,WAEfL,iBACFV,MAAMU,eAAeA,eAEZC,UAAU,WACnBb,MAAMP,OAAO6B,MAAM,CAAET,QAAQA;GAGnC,CAAC;EACH;EAEAU,SAASvB,OAAOC,QAA8C;GAC5DD,MAAMN,QAAQO,OAAOG,SAASoB;EAChC;CACF;AACF,CAAC,GAKYC,4BAAoCC,SAASC,WACxDD,QAAQE,KACN7C,OAAOO,YAAYuC,eAAeC,KAAK,GACvC7C,eAAe0C,MAAM,GACrB3C,UAAU,CAACiB,QAAQD,WAAW;CAC5B,IAAM,EAAC+B,QAAO9B,OAAOG,SAEf4B,wBAAwBhC,MAAMiC,OAAOxC,QAAQyB,MAAMhB,UAAUA,MAAML,SAAS,KAAK,GACjFqC,UAAUlC,MAAMmC,KAAKC,MAAML,IAAIM;CAgBrC,OAdIL,uBAAuBrB,SAAS,gBAC9BqB,sBAAsBnB,OAAOA,UAAUkB,IAAIM,MACtCvD,GACLc,YAAY0C,QAAQtB,aAAa;EAC/BnB,MAAM;EACNgB,OAAO;GACL0B,OAAOL,SAASH,KAAKlC,MAAM2C;GAC3B3B,OAAOqB,SAASH,KAAKM;EACvB;CACF,CAAC,CACH,IAIGxD;AACT,CAAC,CACH,GAGW4D,yBAAyB/D,eACpC,EACGsB,UAA4BA,MAAMiC,OAAOxC,SACzCiD,QAA0BhC,UAAkBA,KAAK,IAEnDiC,cAAcjC,UACbiC,aAAaC,MACV1C,UACCA,MAAML,SAAS,SACfK,MAAMS,SAAS,iBACdT,MAAMU,iBAAiB,gBAAgBV,MAAMU,iBAAiB,uBAC/DV,MAAMW,OAAOA,UAAUH,KAC3B,CACJ,GAEamC,gBAAgB,EAAC,GAAGjD,YAAY0C,QAAO;AAEpD,IAAA,iBAAe1C,YAAYkD;ACnK3B,MAAaI,kBAAkB,EAC7BC,gBAAgBJ,aACd,0BACA,SAASK,QAAQ,EAACC,SAAiE;CACjF,OAAO,EACLC,SAAS,EAACD,MAAK,EACjB;AACF,CACF,EACF,GCiDM8D,eAAepC,cAAc,IAiBtBuC,iBAAe;CAC1BhB,QAAQ,CAAA;CACRC,YAAY,CAAA;CACZC,OAAO,CAAC;CACRE,iBAAiB,CAAA;CACjBC,YAAY;CACZC,UAAU;CACVC,eAAeU,KAAAA;CACfT,YAAYS,KAAAA;CACZR,OAAO;EACLK,WAAWD,aAAaC;EACxBC,OAAOF,aAAaE;EACpBG,OAAO1C,cAAcqC,aAAaE,OAAOF,aAAaC,SAAS;CACjE;CACAJ,WAAW;CACXC,UAAU;CAEVC,MAAM;AACR,GAEMO,cAAcjE,YAAY;CAC9BkE,MAAM;CACNJ,cAAAA;CACAK,gBAAgBC,YAAY;EAC1BA,QACGC,QAAQ/B,gBAAgBgC,iBAAiBC,OAAOC,WAAW;GAC1D,IAAM,EAACC,UAASD,OAAOE;GAEvBH,MAAMvB,MAAMyB,MAAME,OAAO;IACvBC,OAAO;IACAH;IACPI,QAAQ;IACRC,UAAU;GACZ;EACF,CAAC,CAAC,CACDT,QAAQ9B,eAAewC,kBAAkBR,OAAOC,WAAW;GAC1D,IAAM,EAACQ,WAAUR,OAAOE;GACxBM,OAAOC,SAASR,UAAU;IACxBF,MAAMvB,MAAMyB,MAAMA,MAAME,IAAI,CAAEG,WAAW;GAC3C,CAAC;EACH,CAAC,CAAC,CACDT,QAAQ9B,eAAe2C,eAAeX,OAAOC,WAAW;GACvD,IAAM,EAACQ,WAAUR,OAAOE;GACxBM,OAAOC,SAASR,UAAU;IACxBF,MAAMvB,MAAMyB,MAAMA,MAAME,IAAI,CAAEG,WAAW;GAC3C,CAAC;EACH,CAAC,CAAC,CACDT,QAAQ9B,eAAe4C,iBAAiBZ,OAAOC,WAAW;GACzD,IAAM,EAACQ,WAAUR,OAAOE;GACxBM,OAAOC,SAASR,UAAU;IACxBF,MAAMvB,MAAMyB,MAAMA,MAAME,IAAI,CAAEG,WAAW;GAC3C,CAAC;EACH,CAAC,CAAC,CACDT,QAAQ9B,eAAe6C,qBAAqBb,OAAOC,WAAW;GAC7D,IAAM,EAACQ,WAAUR,OAAOE;GACxBM,OAAOC,SAASR,UAAU;IACxBF,MAAMvB,MAAMyB,MAAMA,MAAME,IAAI,CAAEG,WAAW;GAC3C,CAAC;EACH,CAAC,CAAC,CACDT,QAAQ9B,eAAe8C,kBAAkBd,OAAOC,WAAW;GAC1D,IAAM,EAACQ,WAAUR,OAAOE;GACxBM,OAAOC,SAASR,UAAU;IACxBF,MAAMvB,MAAMyB,MAAMA,MAAME,IAAI,CAAEG,WAAW;GAC3C,CAAC;EACH,CAAC,CAAC,CACDT,QAAQ9B,eAAe+C,oBAAoBf,OAAOC,WAAW;GAC5D,IAAM,EAACQ,WAAUR,OAAOE;GACxBM,OAAOC,SAASR,UAAU;IACxBF,MAAMvB,MAAMyB,MAAMA,MAAME,IAAI,CAAEG,WAAW;GAC3C,CAAC;EACH,CAAC;CACL;CACAS,UAAU;EAERC,MAAMjB,OAAO;GACXA,MAAMzB,SAAS,CAAA;EACjB;EAEA2C,eAAelB,OAAOC,QAA6C;GACjE,IAAM,EAACkB,aAAYlB,OAAOE;GAU1BH,AARAmB,UAAUT,SAASvC,OAAO;IACxB,IAAMiD,cAAcpB,MAAMzB,OAAO8C,QAAQlD,EAAE;IAI3C,AAHIiD,eAAe,KACjBpB,MAAMzB,OAAO+C,OAAOF,aAAa,CAAC,GAEpC,OAAOpB,MAAMvB,MAAMN;GACrB,CAAC,GAED6B,MAAMf,YAAYsC,KAAKC,MAAMxB,MAAMzB,OAAOkD,SAASzB,MAAMd,QAAQ,IAAI;EACvE;EACAwC,YAAY1B,OAAOC,QAAiE;GAClF,IAAM,EAACkB,UAAUQ,UAAS1B,OAAOE,SAC3ByB,aAA0BD,OAAOE,UAAUC,MAAMH,OAAOI,OAAOC,KAClEC,SAAcA,KAAKN,KACtB;GAKAC,AAHAT,UAAUT,SAASvC,OAAO;IACxB6B,MAAMvB,MAAMN,GAAG,CAAEoC,WAAW;GAC9B,CAAC,GACDqB,YAAYlB,SAASuB,SAAS;IAC5BjC,MAAMvB,MAAMwD,KAAK9D,GAAG,CAAEwD,QAAQM,KAAK/D;GACrC,CAAC;EACH;EACAgE,cAAclC,OAAOC,QAAkE;GACrF,IAAM,EAACQ,WAAUR,OAAOE;GAKxBiC,AAJA3B,OAAOC,SAASR,UAAU;IACxBF,MAAMvB,MAAMyB,OAAOE,IAAI,CAAEG,WAAW;GACtC,CAAC,GAED6B,OAAOC,KAAKrC,MAAMvB,KAAK,CAAC,CAACiC,SAAS4B,QAAQ;IACxC,OAAOtC,MAAMvB,MAAM6D,IAAI,CAAEX;GAC3B,CAAC;EACH;EACAY,cAAcvC,OAAOC,QAA0C;GAC7D,IAAMQ,SAASR,OAAOE,SAASM,UAAU,CAAA;GAqBzC,AAnBIA,UACFA,OAAOC,SAASR,UAAU;IACxB,AAAKF,MAAMzB,OAAOiE,SAAStC,MAAME,GAAG,KAClCJ,MAAMzB,OAAOkE,KAAKvC,MAAME,GAAG;IAE7B,IAAMsC,WAAW1C,MAAMvB,MAAMyB,MAAME;IAEnCJ,MAAMvB,MAAMyB,MAAME,OAAO;KACvBC,OAAO;KACAH;KACPI,QAAQoC,UAAUpC,UAAU;KAC5BC,UAAUmC,UAAUnC,YAAY;KAChC,GAAImC,UAAUf,QAAQ,EAACA,OAAOe,SAASf,MAAK,IAAI,CAAC;IACnD;GACF,CAAC,GAGH3B,MAAMnB,WAAW,IACjBmB,MAAMpB,aAAa6B,OAAOgB,UAAU,GACpC,OAAOzB,MAAMlB;EACf;EACA6D,WAAW3C,OAAOC,QAAkC;GAClD,IAAM0B,QAAQ1B,OAAOE;GAErBH,AADAA,MAAMnB,WAAW,IACjBmB,MAAMlB,gBAAgB6C;EACxB;EACAiB,kBACE5C,OACAC,QACA;GACA,IAAM,EAACkB,UAAU0B,aAAY5C,OAAOE;GAEpCgB,SAAST,SAASoC,YAAY;IAC5B,AAAI9C,MAAMvB,MAAMqE,QAAQ,EAAE5C,UACxBF,MAAMvB,MAAMqE,QAAQ,CAAC5C,MAAM6C,MAAM/C,MAAMvB,MAAMqE,QAAQ,CAAC5C,MAAM6C,OAAO,CAAC,GACpE/C,MAAMvB,MAAMqE,QAAQ,CAAC5C,MAAM6C,IAAIC,QAAQhD,MAAMvB,MAAMqE,QAAQ,CAAC5C,MAAM6C,IAAIC,SAAS,CAAC,GAChFhD,MAAMvB,MAAMqE,QAAQ,CAAC5C,MAAM6C,IAAIC,MAAMC,SAASJ,WAC1C;KAACK,MAAML;KAAUxC,OAAO;KAAa8C,OAAO;IAAI,IAChD3D,KAAAA,GACJQ,MAAMvB,MAAMqE,QAAQ,CAACvC,WAAW;GAEpC,CAAC;EACH;EACA6C,eAAepD,OAAOC,QAA+D;GACnF,IAAM,EAACkB,UAAUQ,UAAS1B,OAAOE;GAEjCgB,SAAST,SAASoC,YAAY;IAC5B,AAAI9C,MAAMvB,MAAMqE,aACd9C,MAAMvB,MAAMqE,QAAQ,CAACnB,QAAQA,MAAM0B,SACnCrD,MAAMvB,MAAMqE,QAAQ,CAACvC,WAAW;GAEpC,CAAC;EACH;EACA+C,iBACEtD,OACAC,QAKA;GACAA,OAAOE,QAAQM,OAAOC,SAASR,UAAU;IACvC,IAAM+B,OAAOjC,MAAMvB,MAAMyB,MAAMA,MAAME;IACrC,AAAI6B,SACFA,KAAK1B,WAAW;GAEpB,CAAC;EACH;EACAgD,cAAc;GACZC,UAAUxD,OAAOyD,YAAyE;IAExF,AADAzD,MAAMnB,WAAW,IACjB,OAAOmB,MAAMlB;GACf;GACA8E,UAAU,EACRF,SAAS,CAAC,GACVG,aACAC,WAAW,IACXC,OAAO/H,IAAI,gCA6CJ,EAACmE,SAAS;IAACuD;IAAQC,OAlCZ3H,IAAI;;yBAED6H,YAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBALfE,QAAQD,WAAW,MAAM,GAiC1B,GAAIC,KAAI,GAAID,SAAQ;;;GAID,EAAC;EAEpC;EACAI,cAAclE,OAAOC,QAAiE;GACpF,IAAM,EAACkE,YAAWlE,OAAOE;GAEzBiC,OAAOgC,QAAQD,OAAO,CAAC,CAACzD,SAAS,CAAC2D,MAAMvB,aAAa;IACnD,AAAIA,WAAW,CAAC9C,MAAMzB,OAAOiE,SAAS6B,IAAI,KACxCrE,MAAMzB,OAAOkE,KAAKK,OAAO;GAE7B,CAAC;EACH;EACAwB,oBAAoBC,QAAQd,SAAwC,CAClE;EAEFe,4BAA4BxE,OAAOC,QAA0C;GAC3E,IAAM,EAACQ,WAAUR,OAAOE;GACxBM,QAAQC,SAASR,UAAU;IACzB,AAAIF,MAAMvB,MAAMyB,OAAOE,IAAI,EAAEF,UAC3BF,MAAMvB,MAAMyB,MAAME,IAAI,CAAEF,QAAQA;GAEpC,CAAC;EACH;EACAuE,oBAAoBF,QAAQd,SAA2C,CACrE;EAEFiB,4BAA4B1E,OAAOC,QAA6C;GAC9E,IAAM,EAACkB,aAAYlB,OAAOE;GAC1BgB,UAAUT,SAASoC,YAAY;IAC7B,IAAM1B,cAAcpB,MAAMzB,OAAO8C,QAAQyB,OAAO;IAIhD,AAHI1B,eAAe,KACjBpB,MAAMzB,OAAO+C,OAAOF,aAAa,CAAC,GAEpC,OAAOpB,MAAMvB,MAAMqE;GACrB,CAAC;EACH;EACA6B,oBAAoBJ,QAAQd,SAAwC,CAClE;EAEFmB,4BAA4B5E,OAAOC,QAA0C;GAC3E,IAAM,EAACQ,WAAUR,OAAOE;GACxBM,QAAQC,SAASR,UAAU;IACzB,AAAIF,MAAMvB,MAAMyB,OAAOE,IAAI,EAAEF,UAC3BF,MAAMvB,MAAMyB,MAAME,IAAI,CAAEF,QAAQA;GAEpC,CAAC;EACH;EACA2E,eAAe,CACb;EAEFC,cAAc9E,OAAOC,QAA4C;GAE/DD,MAAMf,YAAYgB,OAAOE,QAAQlB;EACnC;EACA8F,SAAS/E,OAAOC,QAAuC;GAErDD,AADAA,MAAMhB,QAAQiB,OAAOE,SAASnB,OAC9BgB,MAAMf,YAAY;EACpB;EACA+F,KAAKhF,OAAOC,QAA2D;GACrE,IAAM,EAAC6C,SAASxC,WAAUL,OAAOE,SAC3B8B,OAAOjC,MAAMvB,MAAMqE;GACpBb,SAILA,KAAK3B,SAASA,QACdN,MAAMjB,aAAauB,SAASwC,UAAUtD,KAAAA;EACxC;EACAyF,QAAQjF,OAAO;GACbA,MAAMzB,OAAOmC,SAASvC,OAAO;IAC3B6B,MAAMvB,MAAMN,GAAG,CAAEmC,SAAS;GAC5B,CAAC;EACH;EACA4E,UAAUlF,OAAO;GAEfoC,AADApC,MAAMjB,aAAaS,KAAAA,GACnB4C,OAAO+C,OAAOnF,MAAMvB,KAAK,CAAC,CAACiC,SAASR,UAAU;IAC5CF,MAAMvB,MAAMyB,MAAMA,MAAME,IAAI,CAAEE,SAAS;GACzC,CAAC;EACH;EACA8E,UAAUpF,OAAOC,QAAyD;GACxE,IAAMsF,aAAavF,MAAMzB,OAAOiH,WAAWrH,OAAOA,OAAO8B,OAAOE,QAAQmF,OAAO,GACzEG,WAAWzF,MAAMzB,OAAOiH,WAAWrH,OAAOA,OAAO8B,OAAOE,QAAQkF,KAAK,GAGrEK,UAAU,CAACH,YAAYE,QAAQ,CAAC,CAAC1B,MAAM4B,GAAGC,MAAMD,IAAIC,CAAC;GAK3D5F,AAHAA,MAAMzB,OAAOsH,MAAMH,QAAQ,IAAIA,QAAQ,KAAM,CAAC,CAAC,CAAChF,SAAS4B,QAAQ;IAC/DtC,MAAMvB,MAAM6D,IAAI,CAAEhC,SAAS;GAC7B,CAAC,GACDN,MAAMjB,aAAaiB,MAAMzB,OAAOkH;EAClC;EACA1B,KAAK/D,OAAO;GACVA,MAAMzB,OAAOwF,MAAM4B,GAAGC,MAAM;IAC1B,IAAME,OAAO9F,MAAMvB,MAAMkH,EAAE,CAAEzF,MAAMF,MAAMhB,MAAMM,QACzCyG,OAAO/F,MAAMvB,MAAMmH,EAAE,CAAE1F,MAAMF,MAAMhB,MAAMM;IAO/C,OALIwG,OAAOC,OACF/F,MAAMhB,MAAMK,cAAc,QAAQ,KAAK,IACrCyG,OAAOC,OACT/F,MAAMhB,MAAMK,cAAc,QAAQ,IAAI,KAExC;GACT,CAAC;EACH;EACA2G,eAAehG,OAAOC,QAA+D;GACnF,IAAM,EAACC,UAASD,OAAOE;GAEvBH,AADAA,MAAMvB,MAAMyB,MAAME,IAAI,CAAEG,WAAW,IACnCP,MAAMvB,MAAMyB,MAAME,IAAI,CAAEF,QAAQA;EAClC;EACA+F,YAAYjG,OAAOC,QAAyD;GAC1E,IAAM,EAACC,OAAOyB,UAAS1B,OAAOE,SAExB2C,UAAU5C,OAAOE;GAEvBJ,AADAA,MAAMvB,MAAMqE,QAAQ,CAAEnB,QAAQA,MAAM0B,SACpCrD,MAAMvB,MAAMqE,QAAQ,CAAEvC,WAAW;EACnC;EACA2F,sBAAsBlG,OAAOC,QAAmD;GAC9E,IAAM,EAAC9B,IAAI2E,YAAW7C,OAAOE,SACvB8B,OAAOjC,MAAMvB,MAAMqE;GACpBb,SAGLA,KAAK1B,WAAW,IAChB,OAAO0B,KAAKN;EACd;EACAwE,8BAA8BnG,OAAOC,QAAqC;GACxE,IAAM,EAAC9B,OAAM8B,OAAOE,SACd8B,OAAOjC,MAAMvB,MAAMN;GACpB8D,SAGLA,KAAK1B,WAAW,IAChB,OAAO0B,KAAKN;EACd;EACAyE,cACEpG,OACAC,QACA;GACA,IAAM6C,UAAU7C,OAAOE,SAASD,OAAOE;GACvCJ,MAAMvB,MAAMqE,QAAQ,CAAEvC,WAAW;EACnC;EACA+F,QAAQtG,OAAOC,QAA4C;GACzDD,MAAMb,OAAOc,OAAOE,SAAShB;EAC/B;CACF;AACF,CAAC,GAIYoH,oBAA4BC,SAASC,SAAS,EAACC,aAC1DF,QAAQvC,KACNtH,OAAOgK,cAAczE,cAAc0E,KAAK,GACxChK,UAAUqD,WAAW;CACnB,IAAM,EAACQ,WAAUR,OAAOE,SAClBgB,WAAWV,OAAOuB,KAAK9B,UAAUA,MAAME,GAAG;CAChD,OAAO9D,GAAGmE,MAAM,CAAC,CAACwD,KAChBrH,eACE8J,OAAOG,WAAWC,OAAO,EACvBnD,OAAO3H,IAAI,YAAY+K,KAAKC,UAAU7F,QAAQ,EAAC,GACjD,CAAC,CACH,GACAvE,eAAeN,GAAGqK,cAAczF,eAAe,EAACC,SAAQ,CAAC,CAAC,CAAC,GAC3D3E,YAAYmF,UACHrF,GAAGqK,cAAcjF,YAAY;EAACP;EAAUQ;CAAK,CAAC,CAAC,CACvD,CACH;AACF,CAAC,CACH,GAEWsF,mBAA2BT,SAASU,QAAQ,EAACR,aACxDF,QAAQvC,KACNtH,OAAOgK,cAAcpD,aAAaqD,KAAK,GACvC9J,eAAeoK,MAAM,GACrBrK,WAAW,CAACoD,QAAQD,WAAW;CAC7B,IAAM0D,SAASzD,OAAOE,SAASuD,QACzBC,QAAQ1D,OAAOE,SAASwD;CAE9B,OAAOrH,GAAG2D,MAAM,CAAC,CAACgE,KAChBhH,cAAc+C,MAAMmH,MAAMC,aAAa,GACvCxK,eACE8J,OAAOG,WAAWQ,MAEf1D,OAAOD,MAAM,CAClB,GACA9G,UAAU0K,WAAW;EACnB,IAAM,EACJvF,UAEEuF;EACJ,OAAOhL,GAAGqK,cAAcpE,cAAc,EAAC9B,QAAQsB,MAAK,CAAC,CAAC;CACxD,CAAC,GACDvF,YAAYmF,UACVrF,GACEqK,cAAchE,WAAW;EACvBU,SAAS1B,OAAO0B,WAAW;EAC3BkE,YAAY5F,OAAO4F,cAAc;CACnC,CAAC,CACH,CACF,CACF;AACF,CAAC,CACH,GAEWC,4BAAoChB,SAASU,WACxDV,QAAQvC,KACNtH,OAAOgK,cAAc7B,cAAc8B,KAAK,GACxC9J,eAAeoK,MAAM,GACrBrK,WAAW,CAACoD,QAAQD,WAAW;CAC7B,IAAMd,WAAWc,MAAMS,OAAOvB,UACxBuI,QAAQxH,OAAOE,QAAQlB,YAAYC,UACnCwI,MAAMD,QAAQvI,UAGdyI,aAAa3H,OAAO4H,SAASC,UAAUzH,KACvC0H,mBAAmB9H,OAAO4H,UAAUE,kBAEpCC,oBAAoBpK,gBAAgB;EACxCa,YAAYwB,MAAMS,OAAOjC;EACzBwJ,iBAAiBhI,MAAMiI,QAAQD;EAC/BrJ,iBAAiBqB,MAAMS,OAAO9B;EAC9BuJ,cAAclI,MAAMmI,OAAOC;EAC3BC,aAAarI,MAAMmI,OAAOxE;CAC5B,CAAC,GAEKD,SAAS;EACb,GAAIiE,aAAa,EAACA,WAAU,IAAI,CAAC;EACjCG;CACF;CAEA,OAAOxL,GACLqK,cAAcpD,aAAa;EACzBG;EACAG,aAAakE;EACbjE,UAAU9H,IAAI,IAAIyL,MAAK,KAAMC,IAAG;EAChC3D,MAAM/H,IAAI,SAASgE,MAAMS,QAAQzB,OAAOM,MAAK,GAAIU,MAAMS,QAAQzB,OAAOK,UAAS;CACjF,CAAC,CACH;AACF,CAAC,CACH,GAEWiJ,2BAAmC9B,SAASU,WACvDV,QAAQvC,KACNtH,OAAOgK,cAAc9B,aAAa+B,KAAK,GACvC9J,eAAeoK,MAAM,GACrBrK,WAAW,CAAC4G,SAASzD,WACnB1D,GAAGqK,cAAc7B,cAAc,EAAC7F,WAAWe,MAAMS,OAAOxB,YAAY,EAAC,CAAC,CAAC,CACzE,CACF,GAEWsJ,iCAAyC/B,SAASU,WAC7DV,QAAQvC,KACNtH,OAAOgK,cAAczF,eAAe0F,KAAK,GACzC9J,eAAeoK,MAAM,GACrBrK,WAAW,CAAC4G,SAASzD,WAAW;CAC9B,IAAIA,MAAMS,OAAOlC,OAAOkD,WAAW,GAAG;EACpC,IAAM+G,gBAAgBjH,KAAKC,MAAMxB,MAAMS,OAAOlC,OAAOkD,SAASzB,MAAMS,OAAOvB,QAAQ;EACnF,OAAO5C,GAAGqK,cAAc7B,cAAc,EAAC7F,WAAWuJ,cAAa,CAAC,CAAC;CACnE;CAEA,OAAOpM;AACT,CAAC,CACH,GAEIqM,yBAAyBC,SAAcxI,WAC1BA,OAAOA,OAAO6C,KAAKC,OAAO4F,MAAMpD,WAAWqD,MAAMA,EAAE3F,SAASwF,KAAKtI,GAAG,KAAK,MACxE,GAGd0I,2BACH,EAACJ,WACDK,UACCA,MACGC,aAAa,EAACjG,KAAK,CAAC,EAAC,CAAC,CAAC,CACvBiG,aAAa,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,CAC/BA,aAAa,EAAC,kBAAkB,CAAA,EAAE,CAAC,CAAC,CACpCC,OAAO,kBAAkB,CAAC;CAACC,MAAMjN,OAAO;CAAGiH,MAAMwF,KAAKtI;CAAKC,OAAO;CAAa8C,OAAO;AAAI,CAAC,CAAC,GAE7FgG,0BACH,EAACjJ,OAAOwI,WACRK,UACCA,MAAMK,aAAalJ,OAAOA,OAAOmJ,IAAI,CAAC,CAACC,MAAM,CAAC,2BAA2BZ,IAAItI,IAAG,GAAI,CAAC,GAEnFmJ,2BACH,EAACrJ,OAAO2C,gBACRkG,UAAiB;CAChB,IAAMS,YAAYT,MAAMK,aAAalJ,OAAOA,OAAOmJ,IAAI,CAAC,CAACL,aAAa,EAACjG,KAAK,CAAC,EAAC,CAAC,CAAC,CAACiG,aAAa,EAC5F,aAAa,CAAC,EAChB,CAAC;CAQD,OANInG,WACK2G,UAAUC,IAAI,EACnB,oBAAoB;EAACvG,MAAML;EAAUxC,OAAO;EAAa8C,OAAO;CAAI,EACtE,CAAC,IAGIqG,UAAUF,MAAM,CAAC,kBAAkB,CAAC;AAC7C,GAEWI,sBAA8BlD,YACzCA,QAAQvC,KACNtH,OAAOgK,cAAc5B,SAAS6B,KAAK,GACnChK,eACSN,GACLqK,cAAc1F,MAAM,GACpB0F,cAAc7B,cAAc,EAAC7F,WAAW,EAAC,CAAC,CAC5C,CACD,CACH,GAEW0K,oBAA4BnD,YACvCA,QAAQvC,KACN9H,OACE0B,cAAc+L,UAAUvL,MACxBR,cAAcgM,YAAYxL,MAC1BR,cAAciM,iBAAiBzL,MAC/BR,cAAckM,mBAAmB1L,MACjCR,cAAcmM,kBAAkB3L,MAChCR,cAAcoM,aAAa5L,MAC3BR,cAAcqM,iBAAiB7L,MAC/BR,cAAcsM,SAAS9L,IACzB,GACA3B,aAAa,GAAG,GAChBE,eACSN,GACLqK,cAAc1F,MAAM,GACpB0F,cAAc7B,cAAc,EAAC7F,WAAW,EAAC,CAAC,CAC5C,CACD,CACH,GAEWmL,iCAAyC5D,YACpDA,QAAQvC,KACNtH,OAAOgK,cAAcrC,oBAAoBsC,KAAK,GAC9CrK,WAAW,GAAI,GACfI,QAAQ0N,YAAYA,QAAQ5I,SAAS,CAAC,GACtC7E,UAAUyN,YAAY;CACpB,IAAM5J,SAAS4J,SAASrI,KAAK/B,WAAWA,OAAOE,QAAQD,KAAK;CAC5D,OAAO5D,GAAGqK,cAAcnC,4BAA4B,EAAC/D,OAAM,CAAC,CAAC;AAC/D,CAAC,CACH,GAEW6J,iCAAyC9D,YACpDA,QAAQvC,KACNtH,OAAOgK,cAAclC,oBAAoBmC,KAAK,GAC9CrK,WAAW,GAAI,GACfI,QAAQ0N,YAAYA,QAAQ5I,SAAS,CAAC,GACtC7E,UAAUyN,YAAY;CACpB,IAAMlJ,WAAWkJ,SAASrI,KAAK/B,WAAWA,OAAOE,QAAQ2C,OAAO;CAChE,OAAOxG,GAAGqK,cAAcjC,4BAA4B,EAACvD,SAAQ,CAAC,CAAC;AACjE,CAAC,CACH,GAEWoJ,iCAAyC/D,YACpDA,QAAQvC,KACNtH,OAAOgK,cAAchC,oBAAoBiC,KAAK,GAC9CrK,WAAW,GAAI,GACfI,QAAQ0N,YAAYA,QAAQ5I,SAAS,CAAC,GACtC7E,UAAUyN,YAAY;CACpB,IAAM5J,SAAS4J,SAASrI,KAAK/B,WAAWA,OAAOE,QAAQD,KAAK;CAC5D,OAAO5D,GAAGqK,cAAc/B,4BAA4B,EAACnE,OAAM,CAAC,CAAC;AAC/D,CAAC,CACH,GAGW+J,kBAA0BhE,YACrCA,QAAQvC,KACN9H,OACEwK,cAAczC,cAAc7F,MAC5BsI,cAAc/B,4BAA4BvG,MAC1CsI,cAAcX,eAAe3H,IAC/B,GACAzB,eAAeN,GAAGqK,cAAc5C,KAAK,CAAC,CAAC,CACzC,GAEW0G,qBAA6BjE,SAASU,QAAQ,EAACR,aACnDF,QAAQvC,KACbtH,OAAOqB,eAAe4C,eAAegG,KAAK,GAC1C9J,eAAeoK,MAAM,GACrBtK,UAAU,CAACqD,QAAQD,WAAW;CAC5B,IAAM,EAACS,QAAQiI,QAAOzI,OAAOE;CAE7B,OAAO7D,GAAG2D,MAAM,CAAC,CAACgE,KAEhBhH,cAAc+C,MAAMmH,MAAMC,aAAa,GAEvCxK,eAAe;EAMb,IAAMiO,eALeF,mBAAmB3K,KAGX0K,CAAY,EAAE/N,OAAO8L,sBAAsBC,GAAG,CAAC,EAAA,CAEtBoC,QACnDC,IAAIC,gBAAgBD,GAAGhC,MAAMiC,aAAa9K,OAAOE,KAAK0I,wBAAwB,EAACJ,IAAG,CAAC,CAAC,GACrFhC,OAAOmE,YAAY,CACrB;EAEA,OAAOxO,KAAKwO,YAAYI,OAAO,CAAC;CAClC,CAAC,GAEDrO,eAAeN,GAAG0B,eAAewC,gBAAgB;EAACC;EAAQiI;CAAG,CAAC,CAAC,CAAC,GAChElM,YAAYmF,UACVrF,GACE0B,eAAe2C,aAAa;EAC1BF;EACAkB,OAAO;GACL0B,SAAS1B,OAAO0B,WAAW;GAC3BkE,YAAY5F,OAAO4F,cAAc;EACnC;EACAmB;CACF,CAAC,CACH,CACF,CACF;AACF,CAAC,CACH,GAGWwC,wBAAgC1E,SAASU,QAAQ,EAACR,aACtDF,QAAQvC,KACbtH,OAAOqB,eAAe+C,kBAAkB6F,KAAK,GAC7C9J,eAAeoK,MAAM,GACrBtK,UAAU,CAACqD,QAAQD,WAAW;CAC5B,IAAM,EAACS,QAAQiI,QAAOzI,OAAOE;CAE7B,OAAO7D,GAAG2D,MAAM,CAAC,CAACgE,KAEhBhH,cAAc+C,MAAMmH,MAAMC,aAAa,GAEvCxK,eAAe;EAGb,IAAMiO,cAFeF,mBAAmB3K,KAEP0K,CAAY,CAACI,QAC3CC,IAAIC,gBACHD,GAAGhC,MAAMiC,aAAa9K,OAAOE,KAAK+I,uBAAuB;GAACjJ,OAAO8K;GAAatC;EAAG,CAAC,CAAC,GACrFhC,OAAOmE,YAAY,CACrB;EAEA,OAAOxO,KAAKwO,YAAYI,OAAO,CAAC;CAClC,CAAC,GAEDrO,eAAeN,GAAG0B,eAAe6C,mBAAmB;EAACJ;EAAQiI;CAAG,CAAC,CAAC,CAAC,GACnElM,YAAYmF,UACVrF,GACE0B,eAAe8C,gBAAgB;EAC7BL;EACAkB,OAAO;GACL0B,SAAS1B,OAAO0B,WAAW;GAC3BkE,YAAY5F,OAAO4F,cAAc;EACnC;EACAmB;CACF,CAAC,CACH,CACF,CACF;AACF,CAAC,CACH,GAGWyC,uBAA+B3E,SAASU,QAAQ,EAACR,aAC5DF,QAAQvC,KACNtH,OAAOgK,cAAcrD,iBAAiBsD,KAAK,GAC3C9J,eAAeoK,MAAM,GACrBtK,UAAU,CAACqD,QAAQD,WAAW;CAC5B,IAAM,EAACS,QAAQ0B,eAAeU,aAAY5C,OAAOE,SAC3CgB,WAAWV,OAAOuB,KAAK9B,UAAUA,MAAMA,MAAME,GAAG;CAEtD,OAAO9D,GAAG2D,MAAM,CAAC,CAACgE,KAChBhH,cAAc+C,MAAMmH,MAAMC,aAAa,GACvCxK,eAAe;EACb,IAAMiO,cAA2BpK,OAAOqK,QACrCC,IAAI7K,UAAU6K,GAAGhC,MAAM7I,MAAMA,MAAME,KAAKmJ,wBAAwB;GAACrJ;GAAO2C;EAAQ,CAAC,CAAC,GACnF6D,OAAOmE,YAAY,CACrB;EAEA,OAAOxO,KAAKwO,YAAYI,OAAO,CAAC;CAClC,CAAC,GACDrO,eACEN,GACEqK,cAAc/D,kBAAkB;EAC9BzB;EACAgB;EACAU;CACF,CAAC,CACH,CACF,GACArG,YAAYmF,UACVrF,GACEqK,cAAcvD,eAAe;EAC3BjC;EACAQ,OAAO;GACL0B,SAAS1B,OAAO0B,WAAW;GAC3BkE,YAAY5F,OAAO4F,cAAc;EACnC;CACF,CAAC,CACH,CACF,CACF;AACF,CAAC,CACH,GAEW6D,8BAAsC5E,YACjDA,QAAQvC,KACNtH,OAAOgK,cAAc/D,kBAAkBgE,KAAK,GAC5ChK,eACEN,GACEqK,cAAczB,UAAU,GACxByB,cAAc1F,MAAM,GACpB0F,cAAc7B,cAAc,EAAC7F,WAAW,EAAC,CAAC,CAC5C,CACF,CACF,GAEWoM,oBAA4B7E,YACvCA,QAAQvC,KACN9H,OACEwK,cAAc5B,SAAS1G,MACvBsI,cAAcL,QAAQjI,MACtBR,cAAc+L,UAAUvL,MACxBR,cAAcgM,YAAYxL,MAC1BR,cAAciM,iBAAiBzL,MAC/BR,cAAckM,mBAAmB1L,MACjCR,cAAcmM,kBAAkB3L,MAChCR,cAAcoM,aAAa5L,MAC3BR,cAAcqM,iBAAiB7L,MAC/BR,cAAcsM,SAAS9L,IACzB,GACAzB,eACSN,GAAGqK,cAAczB,UAAU,CAAC,CACpC,CACH,GAEWoG,oBAA4B9E,SAASU,QAAQ,EAACR,aACzDF,QAAQvC,KACNtH,OAAOgK,cAAcP,cAAcQ,KAAK,GACxC9J,eAAeoK,MAAM,GACrBtK,UAAU,CAACqD,QAAQD,WAAW;CAC5B,IAAM,EAACE,OAAOiC,eAAekE,aAAYpG,OAAOE;CAEhD,OAAO7D,GAAG2D,MAAM,CAAC,CAACgE,KAChBhH,cAAc+C,MAAMmH,MAAMC,aAAa,GACvCxK,eACEP,KACEqK,OACGqC,MAAM7I,MAAME,GAAG,CAAC,CAChB4I,aAAa,EAACjG,KAAK,CAAC,EAAC,CAAC,CAAC,CACvBiG,aAAa,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,CAC/BS,IAAIpD,QAAQ,CAAC,CACb4E,OAAO,CACZ,CACF,GACArO,UAAU2O,iBACRjP,GACEqK,cAAcX,eAAe;EAC3B9F,OAAOqL;EACPpJ;CACF,CAAC,CACH,CACF,GACA3F,YAAYmF,UACVrF,GACEqK,cAAcV,YAAY;EACxB/F;EACAyB,OAAO;GACL0B,SAAS1B,OAAO0B,WAAW;GAC3BkE,YAAY5F,OAAO4F,cAAc;EACnC;CACF,CAAC,CACH,CACF,CACF;AACF,CAAC,CACH,GAEWiE,mCAA2ChF,SAASU,QAAQ,EAACR,aACxEF,QAAQvC,KACNtH,OAAOgK,cAAcT,sBAAsBU,KAAK,GAChD9J,eAAeoK,MAAM,GAIrBzK,WAAW,CAACwD,QAAQD,WAAW;CAC7B,IAAM,EAACE,OAAO/B,OAAM8B,OAAOE;CAE3B,OAAO7D,GAAG2D,MAAM,CAAC,CAACgE,KAChBhH,cAAc+C,MAAMmH,MAAMC,aAAa,GACvCxK,eAAe8J,OAAOG,WAAWQ,MAAwBrL,IAAI,sBAAsB,EAACmC,GAAE,CAAC,CAAC,GACxFvB,UAAU6O,cAAc;EAGtB,IAAIC,eAAe,GACbb,cAA2BY,UAAUX,QAAQC,IAAIlD,aAAa;GAElE,IAAMgE,kBAAkBjO,gBADDmJ,KAAK6E,MAAM7E,KAAKC,UAAUa,QAAQ,CACjB8D,GAAgBzL,OAAO/B,EAAE;GACjE,IAAI0N,gBAAgBpK,WAAW,GAC7B,OAAOsJ;GAETW,gBAAgB;GAChB,IAAMI,WAAW1J,OAAO2J,OAAO,CAAC,GAAG,GAAGF,eAAe;GACrD,OAAOd,GAAGhC,MAAMlB,SAASzH,MAAM2I,UAC7BA,MAAMK,aAAavB,SAASwB,IAAI,CAAC,CAACI,IAAIqC,QAAQ,CAChD;EACF,GAAGpF,OAAOmE,YAAY,CAAC;EAMvB,OAJIa,iBAAiB,IACZpP,GAAGqK,cAAcR,8BAA8B,EAAChI,GAAE,CAAC,CAAC,IAGtD9B,KAAKwO,YAAYI,OAAO,CAAC,CAAC,CAAChH,KAChCrH,eAAeN,GAAGqK,cAAcR,8BAA8B,EAAChI,GAAE,CAAC,CAAC,CAAC,CACtE;CACF,CAAC,GACD3B,YAAYmF,UAAuB;EAIjC,IAAMqK,gBAAgBhM,MAAMS,OAAOhC,MAAMN,GAAG,EAAE+B,SAASA;EACvD,OAAO5D,GACLqK,cAAcV,YAAY;GACxB/F,OAAO8L;GACPrK,OAAO;IACL0B,SAAS1B,OAAO0B,WAAW;IAC3BkE,YAAY5F,OAAO4F,cAAc;GACnC;EACF,CAAC,CACH;CACF,CAAC,CACH;AACF,CAAC,CACH,GAII0E,qBAAqBjM,UAA4BA,MAAMS,OAAOhC,OAE9DyN,sBAAsBlM,UAA4BA,MAAMS,OAAOlC,QAExD4N,kBAAkB3Q,eAC7B,EACGwE,UAA4BA,MAAMS,OAAOhC,QACzC8F,QAA0BzB,YAAoBA,OAAO,IAEvDrE,OAAOqE,YACQrE,MAAMqE,YACGtD,KAAAA,CAE3B,GAEM4M,eAAwD5Q,eAC5D,CAACyQ,mBAAmBC,kBAAkB,IACrCzN,OAAOF,WAAWA,OAAOyD,KAAK7D,OAAOM,MAAMN,GAAI,CAClD,GAEakO,qBAAqB7Q,eAAe,CAAC4Q,YAAY,IAAI3L,WAAWA,OAAOgB,MAAM,GAE7EkJ,qBAAqBnP,eAAe,CAAC4Q,YAAY,IAAI3L,WAChEA,OAAO9D,QAAQsF,SAASA,MAAM3B,MAAM,CACtC,GAEagM,2BAA2B9Q,eACtC,CAACmP,kBAAkB,IAClB4B,iBAAiBA,aAAa9K,MACjC,GAEakF,gBAAgB,EAAC,GAAGjH,YAAY2K,QAAO;AAEpD,IAAA,iBAAe3K,YAAY8D;AC36B3B,MAAM8L,eAAoC;CACxClB,MAAM,CAAC;CACPE,oBAAoB,CAAC;CACrBC,SAAS,CAAA;CACTC,sBAAsB,CAAC;CACvBC,cAAc;CACdC,iBAAiB;CACjBC,sBAAsB;CACtBC,cAAc;CACdC,UAAU;CACVC,YAAY;CACZC,eAAeQ,KAAAA;CACfP,UAAU;CACVC,eAAeM,KAAAA;CACfL,YAAYK,KAAAA;CACZJ,aAAaI,KAAAA;CACbH,UAAU;CACVC,aAAaE,KAAAA;AACf,GAEMC,gBAAgBC,YAAyB;CAC7C,IAAMrB,OAAkC,CAAC,GACnCE,qBAA+C,CAAC,GAChDC,UAAoB,CAAA;CAO1BkB,AALAA,QAAQC,SAASC,WAAW;EAC1BvB,KAAKuB,OAAOC,OAAOD;CACrB,CAAC,GAGDF,QAAQC,SAASC,WAAW;EAC1B,IAAME,YAAYF,OAAOG,YAAY1B,KAAKuB,OAAOG,YAAYH,OAAOG,WAAW;EAC/E,AAAID,cAAc,OAChBtB,QAAQwB,KAAKJ,OAAOC,GAAG,KAElBtB,mBAAmBuB,eACtBvB,mBAAmBuB,aAAa,CAAA,IAElCvB,mBAAmBuB,UAAU,CAACE,KAAKJ,OAAOC,GAAG;CAEjD,CAAC;CAED,IAAMI,cAAcC,QAClBA,IAAIC,MAAMC,GAAGC,OACVhC,KAAK+B,EAAE,EAAEE,QAAQ,GAAA,CAAIC,cAAclC,KAAKgC,EAAE,EAAEC,QAAQ,IAAId,KAAAA,GAAW;EAClEgB,SAAS;EACTC,aAAa;CACf,CAAC,CACH;CAKF,OAHAR,WAAWzB,OAAO,GAClBkC,OAAOC,OAAOpC,kBAAkB,CAAC,CAACoB,SAASO,QAAQD,WAAWC,GAAG,CAAC,GAE3D;EAAC7B;EAAME;EAAoBC;CAAO;AAC3C,GAEMoC,eAAelE,YAAY;CAC/B4D,MAAM;CACNf;CACAsB,UAAU;EACRC,eAAeC,OAAOC,SAA6C;GACjED,MAAM9B,WAAW;EACnB;EACAgC,YAAYF,OAAOG,QAA2C;GAE5DH,AADAA,MAAM9B,WAAW,IACjB8B,MAAM7B,gBAAgBgC,OAAOE,QAAQD;EACvC;EACAE,cAAcN,OAAOC,SAAkE;GAErF,AADAD,MAAM9B,WAAW,IACjB,OAAO8B,MAAM7B;EACf;EACAoC,mBAAmBP,OAAO;GAExBA,AADAA,MAAMpC,kBAAkB,MACxBoC,MAAMnC,uBAAuB;EAC/B;EACA2C,iBAAiBR,OAAOG,QAA2C;GAEjEH,AADAA,MAAMpC,kBAAkBuC,OAAOE,QAAQI,UACvCT,MAAMnC,uBAAuB;EAC/B;EACA6C,yBAAyBV,OAAO;GAE9BA,AADAA,MAAMpC,kBAAkB,MACxBoC,MAAMnC,uBAAuB;EAC/B;EACA8C,eACEX,OACAG,QAKA;GACAH,MAAM5B,aAAaK,KAAAA;GACnB,IAAMqC,UAAU,IAAIC,IAAIZ,OAAOE,QAAQO,UAAU;GACjD,AAAIZ,MAAMpC,mBAAmBkD,QAAQE,IAAIhB,MAAMpC,eAAe,MAC5DoC,MAAMpC,kBAAkB,MACxBoC,MAAMnC,uBAAuB;EAEjC;EACAQ,YAAY2B,OAAOG,QAA6D;GAE9EH,AADAA,MAAM5B,aAAaK,KAAAA,GACnBuB,MAAM3B,cAAc8B,OAAOE,QAAQD;EACrC;EACAa,cAAcjB,OAAOG,QAA2C;GAE9D,AADAH,MAAM5B,aAAa+B,OAAOE,QAAQI,UAClC,OAAOT,MAAM3B;EACf;EACA6C,cACElB,OACAG,QAMA;GACA,IAAM,EAAC7C,MAAME,oBAAoBC,YAAWiB,aAAayB,OAAOE,QAAQ1B,OAAO;GAU/E,AATAqB,MAAM1C,OAAOA,MACb0C,MAAMxC,qBAAqBA,oBAC3BwC,MAAMvC,UAAUA,SAChBuC,MAAMtC,uBAAuByC,OAAOE,QAAQ3C,sBAC5CsC,MAAMrC,eAAewC,OAAOE,QAAQ1C,cACpCqC,MAAMjC,WAAW,IACjBiC,MAAMhC,aAAamC,OAAOE,QAAQ1B,QAAQwC,QAC1C,OAAOnB,MAAM/B,eAET+B,MAAMpC,mBAAmB,CAACN,KAAK0C,MAAMpC,qBACvCoC,MAAMpC,kBAAkB,MACxBoC,MAAMnC,uBAAuB;EAEjC;EACAuD,WAAWpB,OAAOG,QAA2C;GAE3DH,AADAA,MAAMjC,WAAW,IACjBiC,MAAM/B,gBAAgBkC,OAAOE,QAAQD;EACvC;EACAiB,aAAarB,OAAO;GAElB,AADAA,MAAMjC,WAAW,IACjB,OAAOiC,MAAM/B;EACf;EACAqD,gBAAgBtB,OAAOG,QAAgD;GACrEH,MAAMlC,eAAeqC,OAAOE,QAAQvC;EACtC;EACAyD,eAAevB,OAAOC,SAA0D;GAC9ED,MAAM1B,WAAW;EACnB;EACAC,YAAYyB,OAAOG,QAA2C;GAE5DH,AADAA,MAAM1B,WAAW,IACjB0B,MAAMzB,cAAc4B,OAAOE,QAAQD;EACrC;EACAoB,cAAcxB,OAAOC,SAA0D;GAE7E,AADAD,MAAM1B,WAAW,IACjB,OAAO0B,MAAMzB;EACf;CACF;AACF,CAAC,GAEYkD,oBAA4BC,SAASC,QAAQ,EAACC,aACzDF,QAAQG,KACNxF,OAAOwD,aAAaiC,QAAQT,aAAaU,KAAK,GAC9CtF,eAAekF,MAAM,GACrBnF,WAAW,CAAC2D,QAAQH,WAClB9D,GAAGiE,MAAM,CAAC,CAAC0B,KACTlF,cAAcqD,MAAMgC,MAAMC,aAAa,GACvC1F,eAAe;CACb,IAAM2F,aAAalC,MAAMmC,OAAOD,WAAW5F,KAAK8F,SAAS,UAAUA,KAAI,MAAO,GACxEC,sBAAsBpF,yBAAyB+C,MAAMmC,OAAOG,eAAe,GAC3EC,oBAAoBF,sBAAsB,MAAMA,wBAAwB;CAC9E,OAAOT,OAAOY,WAAWC,MAIvB1G,IAAI;;4BAEYW,qBAAoB;;;;;;;6BAOnBiG,KAAKC,UAAUV,UAAU,EAAC;;;oBAGnCK,kBAAiB;;;;2BAIVI,KAAKC,UAAUV,UAAU,EAAC;;;kBAGnCK,kBAAiB;;cAGzB;AACF,CAAC,GACDhG,UAAUsG,WAAW;CACnB,IAAMlE,UAAuBkE,OAAOlE,QAAQrC,KAAKwG,OAAO;EACtDhE,KAAKgE,EAAEhE;EACPS,MAAMuD,EAAEvD,QAAQ;EAChBP,UAAU8D,EAAE9D,YAAY;CAC1B,EAAE,GACItB,uBAA+C,CAAC;CACtDmF,OAAOlE,QAAQC,SAAS,EAACE,KAAK4D,YAAW;EACvChF,qBAAqBoB,OAAO4D;CAC9B,CAAC;CACD,IAAMK,YAAY,IAAIhC,IAAIpC,QAAQrC,KAAKuC,WAAWA,OAAOC,GAAG,CAAC,GACvD+B,uBAAuBmC,GAC3BhD,MAAMrB,QAAQf,mBAAmB,CAACmF,UAAU/B,IAAIhB,MAAMrB,QAAQf,eAAe;CAE/E,OAAO1B,GACL2D,aAAaiC,QAAQZ,cAAc;EACjCvC;EACAjB;EACAC,cAAckF,OAAOlF;EACrBkD;CACF,CAAC,CACH;AACF,CAAC,GACD1E,YAAYiE,UACVlE,GACE2D,aAAaiC,QAAQV,WAAW,EAC9BhB,OAAO;CACL6C,SAAS7C,OAAO6C,WAAW;CAC3BC,YAAY9C,OAAO8C,cAAc;AACnC,EACF,CAAC,CACH,CACF,CACF,CACF,CACF,GAEWC,sBAA8BzB,YACzCA,QAAQG,KACNxF,QACG8D,WACCjD,cAAcyD,eAAeoB,MAAM5B,MAAM,KACzCjD,cAAckG,kBAAkBrB,MAAM5B,MAAM,KAC5CN,aAAaiC,QAAQ/B,eAAegC,MAAM5B,MAAM,KAChDN,aAAaiC,QAAQnB,eAAeoB,MAAM5B,MAAM,KAChDN,aAAaiC,QAAQP,eAAeQ,MAAM5B,MAAM,KAChDjD,cAAcmG,4BAA4BtB,MAAM5B,MAAM,KACtDjD,cAAcoG,4BAA4BvB,MAAM5B,MAAM,KACtDjD,cAAcqG,4BAA4BxB,MAAM5B,MAAM,KACtDjD,cAAcsG,eAAezB,MAAM5B,MAAM,KACzC/C,gBAAgBqG,eAAe1B,MAAM5B,MAAM,CAC/C,GACA/D,aAAa,GAAG,GAChBG,eAAeL,GAAG2D,aAAaiC,QAAQT,aAAa,CAAC,CAAC,CACxD,GAEWqC,4BAAoChC,YAC/CA,QAAQG,KACNxF,QACG8D,WACCN,aAAaiC,QAAQvB,mBAAmBwB,MAAM5B,MAAM,KACpDN,aAAaiC,QAAQtB,iBAAiBuB,MAAM5B,MAAM,KAClDN,aAAaiC,QAAQpB,yBAAyBqB,MAAM5B,MAAM,KACzDN,aAAaiC,QAAQnB,eAAeoB,MAAM5B,MAAM,KAC/C6C,EAAQ7C,OAAOE,QAAQQ,wBACxBhB,aAAaiC,QAAQZ,cAAca,MAAM5B,MAAM,KAC9C6C,EAAQ7C,OAAOE,QAAQQ,oBAC7B,GACAtE,eACEL,GACEgB,cAAcyG,MAAM,GACpBzG,cAAc0G,UAAU,GACxB1G,cAAc2G,cAAc,EAACC,WAAW,EAAC,CAAC,CAC5C,CACF,CACF,GAEIC,kCAAkCC,UAAiBA,MAAMC,MAAM,CAAC,kBAAkB,CAAC,GAEnFC,iCACH,EAAClF,gBACDgF,UACKhF,WACKgF,MAAMG,IAAI,EAACC,QAAQ;CAACC,MAAMrF;CAAUsF,OAAO;CAAaC,OAAO;AAAI,EAAC,CAAC,IAGvEP,MAAMC,MAAM,CAAC,QAAQ,CAAC,GAGpBO,qBAA6B9C,SAASC,QAAQ,EAACC,aAC1DF,QAAQG,KACNxF,OAAOwD,aAAaiC,QAAQxB,cAAcyB,KAAK,GAC/CtF,eAAekF,MAAM,GACrBpF,UAAU,CAAC4D,QAAQH,WAAW;CAC5B,IAAMT,OAAOY,OAAOE,QAAQd,KAAKkF,KAAK,GAChCzF,WAAWmB,OAAOE,QAAQrB,YAAY;CAE5C,IAAI,CAACO,MACH,OAAOrD,GACL2D,aAAaiC,QAAQ5B,YAAY,EAC/BE,OAAO;EAAC6C,SAAS;EAA+BC,YAAY;CAAG,EACjE,CAAC,CACH;CASF,KANmBlE,WACfgB,MAAMrB,QAAQnB,mBAAmBwB,aAAa,CAAA,IAC9CgB,MAAMrB,QAAQlB,QAAAA,CACWmH,MAC1BC,OAAO7E,MAAMrB,QAAQrB,KAAKuH,GAAG,EAAEtF,KAAKuF,YAAY,MAAMvF,KAAKuF,YAAY,CAEtEH,GACF,OAAOzI,GACL2D,aAAaiC,QAAQ5B,YAAY,EAC/BE,OAAO;EAAC6C,SAAS;EAA+CC,YAAY;CAAG,EACjF,CAAC,CACH;CAGF,IAAM6B,QAAQ,GAAGrI,qBAAoB,GAAIV,OAAO,KAC1CgJ,MAKF;EACFlG,KAAKiG;EACLT,OAAO5H;EACP6C;CACF;CAKA,OAJIP,aACFgG,IAAIZ,SAAS;EAACC,MAAMrF;EAAUsF,OAAO;EAAaC,OAAO;CAAI,IAGxDrI,GAAGiE,MAAM,CAAC,CAAC0B,KAChBlF,cAAcqD,MAAMgC,MAAMC,aAAa,GACvC1F,eAAeqF,OAAOY,WAAWyC,OAAOD,GAAG,CAAC,GAC5CzI,eACEL,GACE2D,aAAaiC,QAAQ/B,eAAe,EAAClB,QAAQ;EAACC,KAAKiG;EAAOxF;EAAMP;CAAQ,EAAC,CAAC,GAC1Ea,aAAaiC,QAAQtB,iBAAiB,EAACC,UAAUsE,MAAK,CAAC,CACzD,CACF,GACA5I,YAAYiE,UACVlE,GACE2D,aAAaiC,QAAQ5B,YAAY,EAC/BE,OAAO;EACL6C,SAAS7C,OAAO6C,WAAW;EAC3BC,YAAY9C,OAAO8C,cAAc;CACnC,EACF,CAAC,CACH,CACF,CACF;AACF,CAAC,CACH,GAEWgC,qBAA6BxD,SAASC,QAAQ,EAACC,aAC1DF,QAAQG,KACNxF,OAAOwD,aAAaiC,QAAQb,cAAcc,KAAK,GAC/CtF,eAAekF,MAAM,GACrBpF,UAAU,CAAC4D,QAAQH,WAAW;CAC5B,IAAMS,WAAWN,OAAOE,QAAQI,UAC1B0E,iBAAiBnF,MAAMrB,QAAQnB,mBAAmBiD,aAAa,CAAA,GAC/DzB,WAAWgB,MAAMrB,QAAQrB,KAAKmD,SAAS,EAAEzB,YAAY;CAE3D,OAAO9C,GAAGiE,MAAM,CAAC,CAAC0B,KAChBlF,cAAcqD,MAAMgC,MAAMC,aAAa,GACvC1F,eACEqF,OAAOY,WAAWC,MAChB1G,IAAI;;2BAEW4G,KAAKC,UACd5C,MAAMmC,OAAOD,WAAW5F,KAAK8F,SAAS,UAAUA,KAAI,MAAO,CAC7D,EAAC;;;;;;gBAOL,EAAC3B,SAAQ,CACX,CACF,GACAlE,UAAUsG,WAAW;EACnB,IAAMuC,KAAKxD,OAAOyD,YAAY;EAU9B,OANAxC,OAAOV,OAAOvD,SAAS0G,UAAUF,GAAGpB,MAAMsB,MAAMxG,KAAKiF,8BAA8B,CAAC,GACpFoB,eAAevG,SAAS2G,kBACtBH,GAAGpB,MAAMuB,eAAerB,8BAA8B,EAAClF,SAAQ,CAAC,CAAC,CACnE,GACAoG,GAAGI,OAAO/E,QAAQ,GAEXxE,KAAKmJ,GAAGK,OAAO,CAAC,CAAC,CAAC5D,KACvBvF,UACEuD,aAAaiC,QAAQnB,eAAe;GAClCF;GACAG,YAAY,CAACH,QAAQ;GACrBI,sBAAsBb,MAAMrB,QAAQf,oBAAoB6C;EAC1D,CAAC,CACH,CACF;CACF,CAAC,GACDtE,YAAYiE,UACVlE,GACE2D,aAAaiC,QAAQzD,YAAY;EAC/B+B,OAAO;GACL6C,SAAS7C,OAAO6C,WAAW;GAC3BC,YAAY9C,OAAO8C,cAAc;EACnC;EACAzC;CACF,CAAC,CACH,CACF,CACF;AACF,CAAC,CACH,GAEWiF,qBAA6BhE,SAASC,QAAQ,EAACC,aAC1DF,QAAQG,KACNxF,OAAOwD,aAAaiC,QAAQN,cAAcO,KAAK,GAC/CtF,eAAekF,MAAM,GACrBpF,UAAU,CAAC4D,QAAQH,WAAW;CAC5B,IAAM,EAACS,aAAYN,OAAOE,SACpBd,OAAOY,OAAOE,QAAQd,KAAKkF,KAAK,GAChC5F,SAASmB,MAAMrB,QAAQrB,KAAKmD;CAyClC,OAvCK5B,SAQAU,OAQDA,SAASV,OAAOU,OACXrD,GACL2D,aAAaiC,QAAQvD,YAAY,EAC/B6B,OAAO;EAAC6C,SAAS;EAA+BC,YAAY;CAAG,EACjE,CAAC,CACH,KAGiBrE,OAAOG,WACtBgB,MAAMrB,QAAQnB,mBAAmBqB,OAAOG,aAAa,CAAA,IACrDgB,MAAMrB,QAAQlB,QAAAA,CACWmH,MAC1BC,OACCA,OAAOpE,YAAYT,MAAMrB,QAAQrB,KAAKuH,GAAG,EAAEtF,KAAKuF,YAAY,MAAMvF,KAAKuF,YAAY,CAEnFH,IACKzI,GACL2D,aAAaiC,QAAQvD,YAAY,EAC/B6B,OAAO;EAAC6C,SAAS;EAA+CC,YAAY;CAAG,EACjF,CAAC,CACH,IAGKhH,GAAGiE,MAAM,CAAC,CAAC0B,KAChBlF,cAAcqD,MAAMgC,MAAMC,aAAa,GACvC1F,eAAeqF,OAAOY,WAAWwB,MAAMvD,QAAQ,CAAC,CAAC0D,IAAI,EAAC5E,KAAI,CAAC,CAAC,CAACkG,OAAO,CAAC,GACrElJ,eAAeL,GAAG2D,aAAaiC,QAAQP,eAAe;EAACd;EAAUlB;CAAI,CAAC,CAAC,CAAC,GACxEpD,YAAYiE,UACVlE,GACE2D,aAAaiC,QAAQvD,YAAY,EAC/B6B,OAAO;EACL6C,SAAS7C,OAAO6C,WAAW;EAC3BC,YAAY9C,OAAO8C,cAAc;CACnC,EACF,CAAC,CACH,CACF,CACF,IA5CShH,GACL2D,aAAaiC,QAAQvD,YAAY,EAC/B6B,OAAO;EAAC6C,SAAS;EAA+BC,YAAY;CAAG,EACjE,CAAC,CACH,IAZOhH,GACL2D,aAAaiC,QAAQvD,YAAY,EAC/B6B,OAAO;EAAC6C,SAAS;EAAoBC,YAAY;CAAG,EACtD,CAAC,CACH;AAiDJ,CAAC,CACH,GAEIyC,cAAc3F,UAA4BA,MAAMrB,QAAQrB,MACxDsI,4BAA4B5F,UAA4BA,MAAMrB,QAAQnB,oBACtEqI,iBAAiB7F,UAA4BA,MAAMrB,QAAQlB,SAC3DqI,8BAA8B9F,UAA4BA,MAAMrB,QAAQjB,sBACxEqI,yBAAyB/F,UAA4BA,MAAMrB,QAAQf,iBACnEoI,8BAA8BhG,UAA4BA,MAAMrB,QAAQd,sBAExEoI,mBAAmBxF,UAAkBnD,SAA4C;CACrF,IAAM4I,WAAqB,CAAA,GACvBC,SAAwB1F,UACtB2F,uBAAO,IAAIrF,IAAY;CAC7B,OAAOoF,UAAU,CAACC,KAAKpF,IAAImF,MAAM,IAAG;EAClC,IAAMtH,SAAgCvB,KAAK6I;EAC3C,IAAI,CAACtH,QAAQ;EAGbsH,AAFAC,KAAKC,IAAIF,MAAM,GACfD,SAASI,QAAQzH,OAAOU,IAAI,GAC5B4G,SAAStH,OAAOG;CAClB;CACA,OAAOkH,SAASK,KAAK,GAAG;AAC1B,GAEaC,uBAAuB9K,eAClC,CAACiK,aAAac,QAA0BhG,aAAwCA,QAAQ,IACvFnD,MAAMmD,aAAcA,WAAWwF,gBAAgBxF,UAAUnD,IAAI,IAAI,EACpE,GAEaoJ,mBAAmBhL,eAC9B;CAACiK;CAAYC;CAA0BC;CAAeC;AAA0B,IAC/ExI,MAAME,oBAAoBC,SAASC,yBAA2C;CAC7E,IAAMiJ,aAAalG,aAAqC;EACtD,IAAM5B,SAASvB,KAAKmD,WACdmG,YAAYpJ,mBAAmBiD,aAAa,CAAA,EAAA,CAAInE,IAAIqK,SAAS,GAC7DE,aAAanJ,qBAAqB+C,aAAa,GAC/CqG,aAAaF,SAASG,QAAQC,KAAKC,UAAUD,MAAMC,MAAMH,YAAYD,UAAU;EACrF,OAAO;GACLD;GACAC;GACAhC,IAAIpE;GACJlB,MAAMV,QAAQU,QAAQ;GACtBP,UAAUH,QAAQG,YAAY;GAC9BkI,MAAMjB,gBAAgBxF,UAAUnD,IAAI;GACpCwJ;EACF;CACF;CAEA,OAAOrJ,QAAQnB,IAAIqK,SAAS;AAC9B,CACF,GAEaQ,8BAA8BzL,eACzC,CAACiK,YAAYI,qBAAqB,IACjCzI,MAAMM,oBAAsC;CAC3C,IAAI,CAACA,iBAAiB,OAAO,CAAA;CAC7B,IAAMwJ,QAAkB,CAAA,GACpBjB,SAAwBvI,iBACtBwI,uBAAO,IAAIrF,IAAY;CAC7B,OAAOoF,UAAU,CAACC,KAAKpF,IAAImF,MAAM,IAAG;EAClC,IAAMtH,SAAgCvB,KAAK6I;EAC3C,IAAI,CAACtH,QAAQ;EAGbsH,AAFAC,KAAKC,IAAIF,MAAM,GACfiB,MAAMd,QAAQH,MAAM,GACpBA,SAAStH,OAAOG;CAClB;CACA,OAAOoI,MAAM9K,KAAKuI,IAAIwC,WAAW;EAC/BA;EACAR,YAAY;EACZhC;EACAtF,MAAMjC,KAAKuH,GAAG,EAAEtF,QAAQ;EACxBP,UAAU1B,KAAKuH,GAAG,EAAE7F,YAAY;EAChCkI,MAAMjB,gBAAgBpB,IAAIvH,IAAI;EAC9BwJ,YAAY;CACd,EAAE;AACJ,CACF,GASMS,qBAAqB7L,eACzB;CAACiK;CAAYC;CAA0BC;CAAeC;AAA0B,IAC/ExI,MAAME,oBAAoBC,SAASC,0BAAwC;CAC1EJ;CACAE;CACAC;CACAC;AACF,EACF,GAEa8J,8BAA8B9L,eACzC;CAAC6L;CAAoBxB;CAAuBC;AAA0B,IAEpE,EAAC1I,MAAME,oBAAoBC,SAASC,wBACpCE,iBACAC,yBACqB;CACrB,IAAIA,wBAAwB,CAACD,iBAAiB,OAAO,CAAA;CACrD,IAAMuB,MAAMvB,kBAAkBJ,mBAAmBI,oBAAoB,CAAA,IAAKH,SACpE4J,QAAQzJ,kBAAkBqI,gBAAgBrI,iBAAiBN,IAAI,CAAC,CAACmK,MAAM,GAAG,CAAC,CAACtG,SAAS;CAC3F,OAAOhC,IAAI7C,KAAKuI,OAAO;EACrB,IAAMhG,SAASvB,KAAKuH,KAEd6C,QAAQ,CAAC7C,EAAE,GACbiC,aAAa;EACjB,OAAOY,MAAMvG,SAAQ;GACnB,IAAMwG,MAAMD,MAAME,IAAI;GACtBd,cAAcpJ,qBAAqBiK,QAAQ;GAC3C,IAAME,OAAOrK,mBAAmBmK;GAChC,AAAIE,QAAMH,MAAMzI,KAAK,GAAG4I,IAAI;EAC9B;EACA,OAAO;GACLR;GACAR,YAAYnJ,qBAAqBmH,OAAO;GACxCA;GACAtF,MAAMV,QAAQU,QAAQ;GACtBP,UAAUH,QAAQG,YAAY;GAC9BkI,MAAMjB,gBAAgBpB,IAAIvH,IAAI;GAC9BwJ;EACF;CACF,CAAC;AACH,CACF,GAEagB,wBAAwBpM,eACnC,CAACqK,qBAAqB,IACrBnI,oBAAoB,CAAC,CAACA,eACzB,GAEamK,iBAAiB,EAAC,GAAGlI,aAAaiC,QAAO;AAEtD,IAAA,kBAAejC,aAAamI;AC3nB5B,MAAMqB,cAAcpB,YAAY;CAC9BqB,MAAM;CACNF,cAAAA,EALAD,OAAO,CAAA,EAKPC;CACAG,gBAAgBC,YAAY;EAC1BA,QACGC,QAAQR,eAAeS,mBAAmBC,OAAOC,WAAW;GAC3D,IAAM,EAACC,mBAAkBD,OAAOE;GAChCH,MAAMR,MAAMY,KAAK;IACfF;IACAG,IAAI;IACJC,MAAM;GACR,CAAC;EACH,CAAC,CAAC,CACDR,QAAQR,eAAeiB,iBAAiBP,OAAOC,WAAW;GACzD,IAAM,EAACO,QAAQC,aAAYR,OAAOE;GAClCH,MAAMR,MAAMY,KAAK;IACfI;IACAC;IACAJ,IAAI;IACJC,MAAM;GACR,CAAC;EACH,CAAC,CAAC,CACDR,QAAQR,eAAeoB,mBAAmBV,OAAOC,WAAW;GAC3D,IAAM,EAACQ,aAAYR,OAAOE;GAC1BH,MAAMR,MAAMY,KAAK;IACfK;IACAJ,IAAI;IACJC,MAAM;GACR,CAAC;EACH,CAAC,CAAC,CACDR,QAAQR,eAAeqB,gBAAgBX,UAAU;GAChDA,MAAMR,MAAMY,KAAK;IACfC,IAAI;IACJC,MAAM;GACR,CAAC;EACH,CAAC,CAAC,CACDR,QAAQR,eAAesB,cAAcZ,OAAOC,WAAW;GACtD,IAAM,EAACY,UAASZ,OAAOE;GACvBH,MAAMR,MAAMY,KAAK;IACfC,IAAIQ;IACJA;IACAP,MAAM;GACR,CAAC;EACH,CAAC,CAAC,CACDR,QAAQV,eAAe0B,iBAAiBd,UAAU;GACjDA,MAAMR,QAAQQ,MAAMR,MAAMZ,QAAQmC,SAASA,KAAKV,OAAO,cAAc;EACvE,CAAC,CAAC,CACDP,QAAQV,eAAe4B,iBAAiBhB,UAAU;GACjDA,MAAMR,QAAQQ,MAAMR,MAAMZ,QAAQmC,SAASA,KAAKV,OAAO,cAAc;EACvE,CAAC;CACL;CACAY,UAAU;EAERC,MAAMlB,OAAO;GACXA,MAAMR,QAAQ,CAAA;EAChB;EAEA2B,gBAAgBnB,OAAOC,QAAoD;GACzE,IAAM,EAACmB,SAASC,QAAOpB,OAAOE;GAE9BH,MAAMR,MAAM8B,SAASP,SAAS;IAC5B,AAAIA,KAAKT,SAAS,eAAeS,KAAKK,YAAYA,YAChDL,KAAKQ,iBAAiB;KACpBC,OAAOH,IAAI1B,KAAK8B;KAChBC,OAAOL,IAAIM;IACb;GAEJ,CAAC;EACH;EAEAC,gBAAgB5B,OAAOC,QAA2C;GAChE,IAAM,EAAC4B,WAAU5B,OAAOE;GAExBH,MAAMR,MAAM8B,SAASP,SAAS;IAC5B,AAAIA,KAAKT,SAAS,gBAChBS,KAAKe,oBAAoBD;GAE7B,CAAC;EACH;EAEAE,OAAO/B,OAAOC,QAAqC;GACjD,IAAMI,KAAKJ,OAAOE,SAASE;GAC3BL,MAAMR,QAAQQ,MAAMR,MAAMZ,QAAQmC,SAASA,KAAKV,OAAOA,EAAE;EAC3D;EACA2B,wBACEhC,OACAC,QAKA;GACA,IAAM,EAACgC,cAAcC,eAAeb,QAAOpB,OAAOE,SAE5CgC,SAAS,GAAGF,aAAaG,OAAM,GAAI5D,UAAU,SAASyD,aAAaG,MAAM;GAE/EpC,MAAMR,MAAMY,KAAK;IACf8B;IACAG,uBAAuBlD,eAAemD,eAAe;KACnD9B,QAAQyB;KACRZ;IACF,CAAC;IACDkB,aAAa,mBAAmBJ;IAChCK,OAAO,WAAWnB,IAAI1B,KAAK8B,QAAO,MAAOU,OAAM;IAC/C9B,IAAI;IACJoC,aAAa;IACbC,MAAM;IACNpC,MAAM;GACR,CAAC;EACH;EACAqC,2BACE3C,OACAC,QAKA;GACA,IAAM,EAACgC,cAAcC,eAAeb,QAAOpB,OAAOE,SAE5CgC,SAAS,GAAGF,aAAaG,OAAM,GAAI5D,UAAU,SAASyD,aAAaG,MAAM;GAE/EpC,MAAMR,MAAMY,KAAK;IACf8B;IACAG,uBAAuBlD,eAAeyD,kBAAkB;KAACpC,QAAQyB;KAAcZ;IAAG,CAAC;IACnFkB,aAAa,wBAAwBJ;IACrCM,aAAa;IACbpC,IAAI;IACJmC,OAAO,cAAcnB,IAAI1B,KAAK8B,QAAO,QAASU,OAAM;IACpDO,MAAM;IACNpC,MAAM;GACR,CAAC;EACH;EACAuC,wBACE7C,OACAC,QACA;GACA,IAAM,EAACO,QAAQ0B,kBAAiBjC,OAAOE,SAEjCgC,SAAS,GAAG3B,OAAO4B,OAAM,GAAI5D,UAAU,SAASgC,OAAO4B,MAAM;GAEnEpC,MAAMR,MAAMY,KAAK;IACf8B;IACAG,uBAAuBnD,cAAc4D,cAAc,EACjDtC,QAAQA,OAAOuC,KAAKC,cAAcA,UAAUC,KAAK,EACnD,CAAC;IACDV,aAAa,eAAeJ;IAC5Be,aAAa;IACbV,OAAO,sBAAsBL,OAAM;IACnC9B,IAAI;IACJoC,aAAa;IACbC,MAAM;IACNpC,MAAM;GACR,CAAC;EACH;EACA6C,wBACEnD,OACAC,QACA;GACA,IAAM,EAACiC,eAAezB,UAAU2C,eAAcnD,OAAOE;GAErDH,MAAMR,MAAMY,KAAK;IACf8B;IACAG,uBAAuBjD,eAAe0D,cAAc,EAACrC,SAAQ,CAAC;IAC9D8B,aAAa;IACbW,aACE;IACFV,OAAO,UAAUY,WAAU;IAC3B/C,IAAI;IACJoC,aAAa;IACbC,MAAM;IACNpC,MAAM;GACR,CAAC;EACH;EACA+C,qBAAqBrD,OAAOC,QAA2D;GACrF,IAAM,EAACiC,eAAeb,QAAOpB,OAAOE;GAIpCH,MAAMR,MAAMY,KAAK;IACf8B;IACAG,uBAAuBhD,YAAYyD,cAAc,EAACzB,IAAG,CAAC;IACtDkB,aAAa;IACbW,aAAa;IACbV,OAAO;IACPnC,IAAI;IACJoC,aAAa;IACbC,MAAM;IACNpC,MAAM;GACR,CAAC;EACH;EACAgD,oBAAoBtD,OAAOC,QAA0C;GAC/DD,MAAMR,MAAM+D,MAAMxC,SAASA,KAAKT,SAAS,iBAAiB,KAG9DN,MAAMR,MAAMY,KAAK;IACfgB,SAASnB,OAAOE,QAAQiB;IACxBf,IAAI;IACJC,MAAM;GACR,CAAC;EACH;EACAkD,cAAcxD,OAAOC,QAA0C;GAC7D,IAAM,EAACmB,YAAWnB,OAAOE;GACzBH,MAAMR,MAAMY,KAAK;IACfgB;IACAf,IAAIe;IACJd,MAAM;GACR,CAAC;EACH;EACAmD,iBAAiBzD,OAAO;GACtBA,MAAMR,MAAMY,KAAK;IACfC,IAAI;IACJC,MAAM;GACR,CAAC;EACH;EACAoD,YAAY1D,OAAO;GACjBA,MAAMR,MAAMY,KAAK;IACfC,IAAI;IACJC,MAAM;GACR,CAAC;EACH;EACAqD,SAAS3D,OAAO;GACdA,MAAMR,MAAMY,KAAK;IACfC,IAAI;IACJC,MAAM;GACR,CAAC;EACH;CACF;AACF,CAAC,GAIYsD,gCAAwCC,YACnDA,QAAQC,KACNrF,OACES,cAAc6E,eAAezD,MAC7BpB,cAAc8E,kBAAkB1D,MAChCpB,cAAc+E,eAAe3D,MAC7BjB,YAAY0E,eAAezD,MAC3BjB,YAAY4E,eAAe3D,IAC7B,GACA1B,QACGqB,WAEwD,CAAC,CAACA,QAAQE,SAAS+B,aAC9E,GACArD,UAAUoB,WAAW;CACnB,IAAMiE,WAAWjE,QAAQE,SAAS+B;CAIlC,OAHIgC,WACKvF,GAAGe,YAAYyE,QAAQpC,OAAO,EAAC1B,IAAI6D,SAAQ,CAAC,CAAC,IAE/CxF;AACT,CAAC,CACH,GAEW0F,uBAA+BP,YAC1CA,QAAQC,KACNlF,OAAOS,YAAYyB,eAAeuD,KAAK,GACvCxF,UAAUoB,WAAW;CACnB,IAAM,EAACmB,SAASC,QAAOpB,QAAQE,WAAW,CAAC;CAU3C,OARIiB,UACKzC,GAAGe,YAAYyE,QAAQhD,gBAAgB;EAACE;EAAKD;CAAO,CAAC,CAAC,IAG3DC,IAAIM,MACChD,GAAGe,YAAYyE,QAAQpC,OAAO,EAAC1B,IAAI,YAAW,CAAC,CAAC,IAGlD3B;AACT,CAAC,CACH,GAEW4F,uBAA+BT,YAC1CA,QAAQC,KACNlF,OAAOS,YAAYkF,4BAA4BF,KAAK,GACpDxF,UAAUoB,WAAW;CACnB,IAAM,EAAC4B,WAAU5B,QAAQE,WAAW,CAAC;CAErC,OAAOxB,GAAGe,YAAYyE,QAAQvC,gBAAgB,EAACC,OAAM,CAAC,CAAC;AACzD,CAAC,CACH,GAEW2C,gBAAgB,EAAC,GAAG9E,YAAYyE,QAAO;AAEpD,IAAA,iBAAezE,YAAY+E;AChT3B,MAAMG,kBAAkBD,GAAG,4PAkBrBE,cAAcH,iBAAiB,4BAE/BE,gBAAe,sBAOfA,gBAAe,+DCdfkB,qBAAqBf,cAAmC,IAAI,GAMrDkB,uBAAuB,EAACD,SAASE,eAAwC;CAEpF,IAAMC,QAAQlB,cAA4B;EACxC,IAAImB;EAQJ,OANIJ,SAASN,YAAYW,mBACvBD,2BAA2BE,MAAMC,QAAQP,SAASN,YAAYW,cAAc,IACxEL,QAAQN,WAAWW,iBACnB,CAACL,SAASN,YAAYW,cAAc,IAGnC;GACLf,UAAU,EAACkB,SAASR,SAASS,kBAAiB;GAC9CjB,YAAY,EACVkB,SAASV,SAASR,YAAYkB,QAChC;GACAjB,oBAAoBO,SAASP,sBAAsB;GACnDC,YAAY;IACViB,SAASX,SAASN,YAAYiB,WAAW;IACzCN,gBAAgBD;GAClB;GACAT,eAAeK,SAASL,iBAAiB;GACzCC,iBAAiBI,SAASY,aAAaC,SAAS,CAAC,GAAGb,QAAQY,WAAW,IAAI,CAAA;GAC3Ef,SAASG,SAASH;EACpB;CACF,GAAG;EACDG,SAASN,YAAYiB;EACrBX,SAASR;EACTQ,SAASP;EACTO,SAASN,YAAYW;EACrBL,SAASY;EACTZ,SAASS;EACTT,SAASL;EACTK,SAASH;CAAO,CACjB;CAED,OAAO,oBAAC,mBAAmB,UAApB;EAAoCM;EAAQD;CAAsC,CAAA;AAC3F,GAEaY,uBAAiB;CAC5B,IAAAC,UAAgB/B,WAAWc,kBAAkB;CAE7C,IAAI,CAACiB,SACH,MAAUC,MAAM,2DAA2D;CAC5E,OAEMD;AAAO;AChEhB,SAASG,sBAAsBC,SAA0B;CACvD,IAAI,CAACA,WAAWA,QAAQE,WAAW,GACjC,OAAOJ,EAAEK,OAAO,CAAC,CAACC,KAAK,CAAC,CAACC,SAAS;CAEpC,IAAMC,QAAsC,CAAC;CAC7C,KAAK,IAAMG,UAAUT,SACnBM,MAAMG,OAAOR,MAAMH,EAAEK,OAAO,CAAC,CAACC,KAAK,CAAC,CAACC,SAAS;CAEhD,OAAOP,EAAEY,OAAOJ,KAAK,CAAC,CAACK,YAAY;AACrC;AAEA,MAAaC,kBAAkBd,EAAEY,OAAO;CACtCG,OAAOf,EAAEK,OAAO,CAAC,CAACC,KAAK,CAAC,CAACU,IAAI,GAAG,EAACC,SAAS,wBAAuB,CAAC;CAClEC,OAAOlB,EAAEK,OAAO,CAAC,CAACC,KAAK,CAAC,CAACU,IAAI,GAAG,EAACC,SAAS,wBAAuB,CAAC;AACpE,CAAC;AAED,SAAgBE,mBAAmBjB,SAA0B;CAC3D,OAAOF,EAAEY,OAAO;EACdQ,SAASnB,sBAAsBC,OAAO;EACtCmB,YAAYpB,sBAAsBC,OAAO;EACzCoB,aAAarB,sBAAsBC,OAAO;EAC1CqB,KAAKvB,EAAEY,OAAO,EACZY,OAAOxB,EAAEY,OAAO,EACda,MAAMzB,EAAE0B,MAAMZ,eAAe,CAAC,CAACa,SAAS,EAC1C,CAAC,EACH,CAAC;EACDC,kBAAkB5B,EAAEK,OAAO,CAAC,CAACC,KAAK,CAAC,CAACU,IAAI,GAAG,EAACC,SAAS,2BAA0B,CAAC;EAChFY,OAAO5B,sBAAsBC,OAAO;CACtC,CAAC;AACH;AAE+BiB,mBAAmB;AAElD,MAAaY,gBAAgB/B,EAAEY,OAAO,EACpCoB,MAAMhC,EAAEK,OAAO,CAAC,CAACW,IAAI,GAAG,EAACC,SAAS,uBAAsB,CAAC,EAC3D,CAAC,GAEYgB,mBAAmBjC,EAAEY,OAAO,EACvCoB,MAAMhC,EAAEK,OAAO,CAAC,CAACC,KAAK,CAAC,CAACU,IAAI,GAAG,EAACC,SAAS,uBAAsB,CAAC,EAClE,CAAC;ACxCD,SAAgBkB,mBAAmBC,WAA+C;CAChF,IAAMC,WAAWD,UAAUE,QACxBC,KAAeC,QACdA,IAAIC,IAAIC,WAAW,SAAS,IAAIH,IAAII,OAAOH,IAAIC,IAAIG,MAAM,CAAC,CAAC,IAAIL,KACjE,CAAA,CACF;CAMA,OAJ4CH,UAAUU,QACnDN,QAAwB,CAACH,SAASU,SAASP,IAAIC,GAAG,CAG9CI;AACT;ACZA,MAAMI,eACJC,OACAC,YAIW;CACX,IAAMG,MACJ,OAAOC,SAAW,OAAe,CAACA,OAAOC,mBACrC,IACAC,KAAKC,MAAMH,OAAOC,gBAAgB,GAClCG,OAAOR,SAASE,SAASF,SAASE,SAASI,KAAKG,IAAI,GAAGN,GAAG,IAAIO,KAAAA,GAC9DC,OAAOX,QAAQC,QAAQK,KAAKG,IAAI,GAAGN,GAAG,GAEtCS,YAAY,IAAIC,gBAAgB;CAOtC,OANAD,UAAUE,OAAO,OAAO,KAAK,GAC7BF,UAAUE,OAAO,KAAKH,KAAKI,SAAS,CAAC,GACjCP,QACFI,UAAUE,OAAO,KAAKN,KAAKO,SAAS,CAAC,GAGhC,GAAGhB,MAAMiB,IAAG,GAAIJ,UAAUG,SAAS;AAC5C,GClBMI,oBAAoBC,aACjBC,OAAOC,KAAKF,QAAQ,CAAC,CAACG,QAAQC,KAAeC,QAAQ;CAC1D,IAAMC,MAAMN,SAASK;CAarB,OAVA,AAOED,IAAIC,OAPF,OAAOC,OAAQ,YAAYA,OAAgBA,IAAIC,gBAAgBC,QACtDT,iBAAiBO,GAAG,IACtBA,QAAQ,MAAaA,QAAQ,UAAeA,KAAKG,WAAW,IAC1D,OACF,OAAOH,OAAQ,YAAYA,MACzBN,SAASK,IAAI,CAACK,KAAK,IAEnBV,SAASK,MAGfD;AACT,GAAG,CAAC,CAAC,GCpBMU,eAAeC,UAClBA,MAAoBC,UAAU,oBAG3BC,gBAAgBF,UACnBA,MAAqBC,UAAU;;;;;;;;ACGzC,SAAwBK,gBACtBC,QACwB;CACxB,OAAOJ,YACLI,MACF;AACF;ACdA,MAAMI,sBAAsBC,UACnB,GAAGA,MAAMC,SAASC,WAAWC,MAAK,GAAIH,MAAMC,SAASC,WAAWE,OAAM;ACD/E,SAAOG,wBAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACLC,SAAeJ,UAAU,GAACK;CAQzB,OARyBH,EAAA,OAAAE,OAAAE,UAQzBD,KAAAH,EAAA,MANMG,KAAA;EAAAE,SACI;EAAIC,eACE;EAAIC,kBACDL,OAAME;EAAQF,QACxB;EAAIM,mBACON,OAAME;CAC3B,GAACJ,EAAA,KAAAE,OAAAE,SAAAJ,EAAA,KAAAG,KANMA;AAMN;ACCH,MAAMkB,mBAAkBC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAL,UAAAC,QAAAE,IACvBG,eAAqBR,sBAAsB,GAC3CS,oBAA0BX,OAA6C,IAAI,GAC3E,CAAAY,gBAAAC,qBAA4CZ,SAAS,EAAK,GAACa;CAAA,AAAAN,EAAA,OAAAH,MAa1DS,KAAAN,EAAA,MAXmBM,WAAA;EAQlBH,AAPIA,kBAAiBI,WACnBC,aAAaL,kBAAiBI,OAAQ,GAGxCF,kBAAkB,EAAI,GACtBf,KAAKO,GAAG,GAERM,kBAAiBI,UAAWE,iBAAW;GACrCJ,kBAAkB,EAAK;EAAC,GACvB,IAAI;CAFkB,GAG1BL,EAAA,KAAAH,KAAAG,EAAA,KAAAM;CAXD,IAAAI,cAAoBJ,IAWnBK,IAAAC;CAGDrB,AAHCS,EAAA,OAAAa,OAAAC,IAAA,2BAAA,KAGSH,iBACD;EACL,AAAIR,kBAAiBI,WACnBC,aAAaL,kBAAiBI,OAAQ;CACvC,GAEFK,KAAA,CAAA,GAAEZ,EAAA,KAAAW,IAAAX,EAAA,KAAAY,OAAAD,KAAAX,EAAA,IAAAY,KAAAZ,EAAA,KANLT,UAAUoB,IAMPC,EAAE;CAAC,IAAAG;CAAA,AAAAf,EAAA,OAAAa,OAAAC,IAAA,2BAAA,KAKAC,KAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAG,UAAA;CAAhB,CAAA,GAEEf,EAAA,KAAAe,MAAAA,KAAAf,EAAA;CAAA,IAAAgB;CAAA,AAAAhB,EAAA,OAAAJ,YAAAI,EAAA,OAAAU,eAQTM,KAAA,oBAAC,QAAD;EACYpB;EACA,UAAA;EACJV,MAAAA;EACD,MAAA;EACIwB,SAAAA;EACJ,MAAA;CAAU,CAAA,GACfV,EAAA,KAAAJ,UAAAI,EAAA,KAAAU,aAAAV,EAAA,KAAAgB,MAAAA,KAAAhB,EAAA;CAAA,IAAAiB;CACM,OADNjB,EAAA,OAAAE,gBAAAF,EAAA,OAAAI,kBAAAJ,EAAA,QAAAgB,MAnBJC,KAAA,oBAAC,SAAD;EAEI,SAAAF;EAIIX,MAAAA;EACG,SAAA;EACC,WAAA;EACF,QAAA;EAAC,GACLF;EAEJc,UAAAA;CAZM,CAAA,GAoBEhB,EAAA,KAAAE,cAAAF,EAAA,KAAAI,gBAAAJ,EAAA,MAAAgB,IAAAhB,EAAA,MAAAiB,MAAAA,KAAAjB,EAAA,KApBViB;AAoBU,GC5CRmB,OAAMC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAC,EAAAC,OAAAC,UAAAJ,IAAiDK;CAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAK/CF,KAAA;EAAAG,SACI;EAAGC,OACL;CACT,GAACR,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAAA,IAAAS;CAAA,AAAAT,EAAA,OAAAE,QAIIO,KAAAT,EAAA,MATPS,KAAA,oBAAC,MAAD;EACQ,MAAA;EACC,OAAAL;EAIM,cAAA;EAEZF,UAAAA;CARE,CAAA,GASEF,EAAA,KAAAE,OAAAF,EAAA,KAAAS;CAAA,IAAAC;CAAA,AAAAV,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAGEI,KAAA;EAAAH,SACI;EAAGI,WACD;EAAOH,OACX;CACT,GAACR,EAAA,KAAAU,MAAAA,KAAAV,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,OAAAG,QAIIS,KAAAZ,EAAA,MAVPY,KAAA,oBAAC,MAAD;EACQ,MAAA;EACC,OAAAF;EAKM,cAAA;EAEZP,UAAAA;CATE,CAAA,GAUEH,EAAA,KAAAG,OAAAH,EAAA,KAAAY;CAAA,IAAAC;CACF,OADEb,EAAA,OAAAS,MAAAT,EAAA,OAAAY,MArBTC,KAAA,qBAAC,MAAD;EAAc,SAAA;EAAd,UAAA,CACEJ,IAUAG,EAXG;KAsBEZ,EAAA,KAAAS,IAAAT,EAAA,KAAAY,IAAAZ,EAAA,KAAAa,MAAAA,KAAAb,EAAA,IAtBPa;AAsBO,GAILC,iBAAgBC,UAAA;CAAA,IAAAf,IAAAC,EAAA,EAAA,GACpB,EAAAL,OAAAC,SAAsBkB,OAEtBC,OAAapB,OAAKqB,UAAgBD,MAAAjB;CAAA,AAAAC,EAAA,OAAAJ,MAAAsB,oBAAAlB,EAAA,OAAAJ,MAAAuB,OAGXpB,WAAA;EACrBqB,OAAMC,SAASC,OAAQ,GAAG1B,MAAKuB,IAAI,MAAOvB,MAAKsB;CAA3B,GACrBlB,EAAA,KAAAJ,MAAAsB,kBAAAlB,EAAA,KAAAJ,MAAAuB,KAAAnB,EAAA,KAAAD,MAAAA,KAAAC,EAAA;CAFD,IAAAuB,iBAAuBxB,IASmBK,KAAAR,OAAK4B,MAAMf;CAAA,AAAAT,EAAA,OAAAI,KAAuBK,KAAAT,EAAA,MAA3CS,KAAArB,SAASgB,IAAa;EAAAqB,MAAO;EAAEC,OAAS;CAAC,CAAC,GAAC1B,EAAA,KAAAI,IAAAJ,EAAA,KAAAS;CAAA,IAAAC;CAAA,AAAAV,EAAA,OAAAS,KAAIC,KAAAV,EAAA,MAAxEU,KAAA,oBAAC,KAAD;EAAW,OAAA;EAAc,OAAAD;CAA2C,CAAA,GAAIT,EAAA,KAAAS,IAAAT,EAAA,KAAAU;CAC1C,IAAAE,KAAAhB,OAAK+B,UAAUd;CAAA,AAAAb,EAAA,OAAAY,KAAIC,KAAAb,EAAA,MAAjDa,KAAA,oBAAC,KAAD;EAAW,OAAA;EAAmB,OAAAD;CAAe,CAAA,GAAIZ,EAAA,KAAAY,IAAAZ,EAAA,KAAAa;CAAA,IAAAe;CAAA,AAAA5B,EAAA,OAAAJ,MAAAiC,YACYD,KAAA5B,EAAA,OAA/B4B,KAAAhC,OAAKiC,WAAwBC,YAAC,GAAC9B,EAAA,KAAAJ,MAAAiC,WAAA7B,EAAA,MAAA4B;CAAA,IAAAG;CAAA,AAAA/B,EAAA,QAAA4B,KAAIG,KAAA/B,EAAA,OAAjE+B,KAAA,oBAAC,KAAD;EAAW,OAAA;EAAmB,OAAAH;CAA+B,CAAA,GAAI5B,EAAA,MAAA4B,IAAA5B,EAAA,MAAA+B;CAAA,IAAAC;CAAA,AAAAhC,EAAA,QAAAJ,QACmBoC,KAAAhC,EAAA,OAAnFgC,KAAAvC,aAAaG,KAAqE,KAA3D,oBAAC,KAAD;EAAW,OAAA;EAAoB,OAAAJ,mBAAmBI,KAAK;CAAC,CAAA,GAAII,EAAA,MAAAJ,OAAAI,EAAA,MAAAgC;CAAA,IAAAC;CAAA,AAAAjC,EAAA,QAAAU,MAAAV,EAAA,QAAAa,MAAAb,EAAA,QAAA+B,MAAA/B,EAAA,QAAAgC,MALxFC,KAAA,oBAAC,KAAD,EAAA,UACE,qBAAC,OAAD;EAAc,OAAA;EAAd,UAAA;GACEvB;GACAG;GACAkB;GACCC;EAJG;CADJ,CAAA,EAAA,CAAA,GAOEhC,EAAA,MAAAU,IAAAV,EAAA,MAAAa,IAAAb,EAAA,MAAA+B,IAAA/B,EAAA,MAAAgC,IAAAhC,EAAA,MAAAiC,MAAAA,KAAAjC,EAAA;CAAA,IAAAkC;CAAA,AAAAlC,EAAA,QAAAgB,OAmCHkB,MAAAlC,EAAA,OAjCFkC,MAAAlB,SACEA,KAAImB,oBACHnB,KAAIoB,WACJpB,KAAIqB,eACJrB,KAAIsB,gBACJtB,KAAIuB,QALP,qBAAA,UAAA,EAAA,UAAA,CAQK,oBAAC,KAAD;EACW,SAAA;EACF,OAAA;GAAAC,YACO;GAA0BC,QAC9B;GAAKjC,OACN;EACT;CAAC,CAAA,GAEH,oBAAC,KAAD,EAAA,UACE,qBAAC,OAAD;EAAc,OAAA;EAAd,UAAA;GACGQ,KAAIuB,OAAQ,oBAAC,KAAD;IAAW,OAAA;IAAa,OAAAvB,KAAIuB;GAAI,CAAA;GAC5CvB,KAAIoB,WAAY,oBAAC,KAAD;IAAW,OAAA;IAAkB,OAAA,KAAKpB,KAAIoB;GAAU,CAAA;GAChEpB,KAAIqB,eAAgB,oBAAC,KAAD;IAAW,OAAA;IAAsB,OAAA,GAAGrB,KAAIqB,YAAY;GAAI,CAAA;GAC5ErB,KAAIsB,gBACH,oBAAC,KAAD;IAAW,OAAA;IAAuB,OAAA,KAAK,IAAItB,KAAIsB;GAAe,CAAA;GAE/DtB,KAAImB,oBACH,oBAAC,KAAD;IACQ,OAAA;IACC,OAAAhD,OAAO,IAAIuD,KAAK1B,KAAImB,gBAAiB,GAAG,KAAK;GAAC,CAAA;EAVrD;CADJ,CAAA,EAAA,CAAA,CAeE,EAAA,CAAA,GAETnC,EAAA,MAAAgB,MAAAhB,EAAA,MAAAkC;CAOa,IAAAS,MAAA,CAAC9C,QAAQA,MAAI+C,UAAUC;CAAA,AAAA7C,EAAA,QAAAuB,kBAAAvB,EAAA,QAAA2C,OADnCE,MAAA,oBAAC,QAAD;EACY,UAAAF;EACA,UAAA;EACJ/D,MAAAA;EACD,MAAA;EACI2C,SAAAA;EACJ,MAAA;CAAU,CAAA,GACfvB,EAAA,MAAAuB,gBAAAvB,EAAA,MAAA2C,KAAA3C,EAAA,MAAA6C,OAAAA,MAAA7C,EAAA;CAEyB,IAAA8C,MAAA,CAACjD,QAAQA,MAAI+C,UAAUG;CAAA,AAAA/C,EAAA,QAAAJ,MAAAuB,OAAAnB,EAAA,QAAA8C,OAAlDC,MAAA,oBAAC,iBAAD;EAA2B,UAAAD;EAA8B,KAAAlD,MAAKuB;CAAI,CAAA,GAAInB,EAAA,MAAAJ,MAAAuB,KAAAnB,EAAA,MAAA8C,KAAA9C,EAAA,MAAA+C,OAAAA,MAAA/C,EAAA;CAAA,IAAAgD;CAAA,AAAAhD,EAAA,QAAA6C,OAAA7C,EAAA,QAAA+C,OAZ1EC,MAAA,oBAAC,KAAD;EAAgB,WAAA;EACd,UAAA,qBAAC,QAAD;GAAe,OAAA;GAAf,UAAA,CAEEH,KASAE,GAXK;;CADL,CAAA,GAcE/C,EAAA,MAAA6C,KAAA7C,EAAA,MAAA+C,KAAA/C,EAAA,MAAAgD,OAAAA,MAAAhD,EAAA;CAAA,IAAAiD;CACF,OADEjD,EAAA,QAAAkC,OAAAlC,EAAA,QAAAgD,OAAAhD,EAAA,QAAAiC,MA7DRgB,MAAA,qBAAC,KAAD;EAAgB,WAAA;EAAhB,UAAA;GAEEhB;GASCC;GAoCDc;EA/CE;KA8DEhD,EAAA,MAAAkC,KAAAlC,EAAA,MAAAgD,KAAAhD,EAAA,MAAAiC,IAAAjC,EAAA,MAAAiD,OAAAA,MAAAjD,EAAA,KA9DNiD;AA8DM,GClHJC,YAASG,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAI0BF,KAAA,EAAAG,UAAW,QAAO,GAACL,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAA,IAAAM;CAAI,OAAJN,EAAA,OAAAD,QAAIO,KAAAN,EAAA,MAAvDM,KAAA,oBAAC,QAAD;EAAa,GAAKP;EAAc,OAAAG;CAAmB,CAAA,GAAIF,EAAA,KAAAD,OAAAC,EAAA,KAAAM,KAAvDA;AAAuD,GCG1Dc,gBAAeC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAC,EAAAL,WAAAC,cAAAE,IACpBG,SAAeT,UAAU;CAEzB,IAAII,WAAS;EAAA,IAAAM;EAIF,OAJEH,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KAETF,KAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAAG,UAAA;EAAhB,CAAA,GAEEH,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAFPG;CAEO;CAIX,IAAIP,UAASU,WAAY,GAAC;EAAA,IAAAH;EAIf,OAJeH,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KAEtBF,KAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAAG,UAAA;EAAhB,CAAA,GAEEH,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAFPG;CAEO;CAEV,IAAAA;CAAA,AAAAH,EAAA,OAAAJ,aAAAI,EAAA,OAAAE,UAKMC,KAAAP,WAASW,KAAMC,QACd,oBAAC,mBAAD;EAAwBA;EAA+B,YAAAN,OAAMQ,IAAKF,IAAGG,KAAM;CAAC,GAA1CH,IAAGC,GAAuC,CAC7E,GAACT,EAAA,KAAAJ,WAAAI,EAAA,KAAAE,QAAAF,EAAA,KAAAG,MAAAA,KAAAH,EAAA;CAAA,IAAAY;CAEC,OAFDZ,EAAA,OAAAG,KAECS,KAAAZ,EAAA,MANPY,KAAA,oBAAC,MAAD;EAAY,MAAA;EAAiB,cAAA;EAAY,SAAA;EAAW,QAAA;EAAW,QAAA;EAC7D,UAAA,oBAAC,OAAD;GAAc,OAAA;GACXT,UAAAA;EADG,CAAA;CADH,CAAA,GAMEH,EAAA,KAAAG,IAAAH,EAAA,KAAAY,KANPA;AAMO,GAILC,qBAAoBC,UAAA;CAAA,IAAAd,IAAAC,EAAA,CAAA,GACxB,EAAAO,KAAAO,eAA0BD,OAAKf;CAAA,AAAAC,EAAA,OAAAQ,IAAAC,MAK9BV,KAAAC,EAAA,MAH+BD,KAAA;EAAAiB,QACtB;EAAMC,QACN,EAAAC,IAAKV,IAAGC,IAAI;CACtB,GAACT,EAAA,KAAAQ,IAAAC,KAAAT,EAAA,KAAAD;CAHD,IAAA,EAAAoB,YAAkBzB,cAAcK,EAG/B,GAACI;CAYD,OAZCH,EAAA,OAAAQ,OAAAR,EAAA,OAAAmB,WAAAnB,EAAA,OAAAe,cAEKZ,KAAAY,aACL,oBAAC,QAAD;EAA2B,MAAA;EAAiBI;EAAkB,SAAA;EAAU,OAAA,EAAAC,OAAQ,OAAM;EACpF,UAAA,oBAAC,SAAD;GAAgB,QAAA;GAAsBL;GAAmBP,OAAAA;EAAG,CAAA;CADvD,GAAMA,IAAGC,GAAT,IAIP,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,qBAAC,MAAD;GAAY,MAAA;GAAZ,UAAA,CAAe,mCACkB,oBAAA,MAAA,EAAA,UAAKD,IAAGG,MAAY,CAAA,CADhD;;CADH,CAAA,GAKLX,EAAA,KAAAQ,KAAAR,EAAA,KAAAmB,SAAAnB,EAAA,KAAAe,YAAAf,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAVMG;AAUN,GC7CGiC,cAAYP,uBAAOR,GAAG,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EAACgB,YACvBP,GAAG,oBAESO,MAAMC,OAAOC,MAAMC,KAAKC,OAAM,kEAKlD,GAEKf,cAAWgB,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACf,EAAAZ,WAAAC,SAAAE,UAAoCO,OAAKG;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAGwBF,KAAA,EAAAG,QAAS,OAAM,GAACL,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAA,IAAAM;CAAA,AAAAN,EAAA,OAAAR,QACpDc,KAAAN,EAAA,MAAPM,KAAA,EAAAd,MAAM,GAACQ,EAAA,KAAAR,OAAAQ,EAAA,KAAAM;CAAA,IAAAC;CAAA,AAAAP,EAAA,OAAAX,YAQtBkB,KAAAP,EAAA,MAPAO,KAAAlB,YACC,oBAAC,UAAD;EACaA;EAAS,GAChBP,cAAcO;CAAkC,CAAA,IAGtD,oBAAC,UAAD,CAAc,CAAA,GACfW,EAAA,KAAAX,WAAAW,EAAA,KAAAO;CAAA,IAAAC;CAAA,AAAAR,EAAA,OAAAM,MAAAN,EAAA,OAAAO,MARHC,KAAA,oBAAC,aAAD;EAAkB,OAAAF;EACfC,UAAAA;CADO,CAAA,GASEP,EAAA,KAAAM,IAAAN,EAAA,KAAAO,IAAAP,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAS;CACP,OADOT,EAAA,OAAAV,WAAAU,EAAA,OAAAQ,MAVdC,KAAA,oBAAC,MAAD;EAAY,OAAA;EAAiB,SAAA;EAAkBnB;EAAgB,OAAAY;EAC7DM,UAAAA;CADG,CAAA,GAWER,EAAA,KAAAV,SAAAU,EAAA,KAAAQ,IAAAR,EAAA,MAAAS,MAAAA,KAAAT,EAAA,KAXPS;AAWO,GC7BLM,oBAAmBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACvB,EAAAJ,UAAgBE;CAEhB,IAAIF,MAAKK,SAASC,OAAQ,OAAO,MAAM,GAAC;EAAA,IAAAC;EAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAESF,KAAA,EAAAG,QAAS,OAAM,GAACP,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;EAAA,IAAAQ;EAAA,AAAAR,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KACpBE,KAAA,EAAAC,OAAQ,OAAM,GAACT,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;EAAA,IAAAU;EACjD,OADiDV,EAAA,OAAAH,MAAAc,MACjDD,KAAAV,EAAA,MAFPU,KAAA,oBAAC,MAAD;GAAY,OAAA;GAAiB,SAAA;GAAgB,OAAAN;GAC3C,UAAA,oBAAA,SAAA;IAAO,UAAA;IAAc,KAAAP,MAAKc;IAAa,OAAAH;GAAe,CAAA;EADnD,CAAA,GAEER,EAAA,KAAAH,MAAAc,KAAAX,EAAA,KAAAU,KAFPA;CAEO;CAIX,IAAIb,MAAKK,SAASC,OAAQ,OAAO,MAAM,GAAC;EAAA,IAAAC;EAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAK3BF,KAAA;GAAAG,QACG;GAAME,OACP;EACT,GAACT,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;EAAA,IAAAQ;EACD,OADCR,EAAA,OAAAH,MAAAc,MACDH,KAAAR,EAAA,MAPFQ,KAAA,oBAAA,SAAA;GACE,UAAA;GACK,KAAAX,MAAKc;GACH,OAAAP;EAGN,CAAA,GACDJ,EAAA,KAAAH,MAAAc,KAAAX,EAAA,KAAAQ,KAPFA;CAOE;CAEL,IAAAJ;CAE0D,OAF1DJ,EAAA,OAAAH,MAAAe,YAE0DR,KAAAJ,EAAA,MAApDI,KAAA,oBAAC,YAAD;EAAqB,WAAAP,MAAKe;EAAkB,OAAA;CAAK,CAAA,GAAGZ,EAAA,KAAAH,MAAAe,WAAAZ,EAAA,KAAAI,KAApDA;AAAoD,GCtBvDoB,oBAAmBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACvB,EAAAP,UAAAC,SAAAC,aAAAC,YAAkDE,OAE9CG;CACJ,IAAIP,SACF,IAAIC,aAAW;EAAA,IAAAO;EAAA,AAAAH,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KAITF,KAAA,oBAAA,MAAA,CAAM,CAAA,GAAAH,EAAA,KAAAG,MAAAA,KAAAH,EAAA;EAAA,IAAAM;EAAA,AAAAN,EAAA,OAAAJ,cAAsCU,KAAAN,EAAA,MAApCM,KAAAf,OAAO,IAAIgB,KAAKX,WAAW,GAAG,KAAK,GAACI,EAAA,KAAAJ,aAAAI,EAAA,KAAAM;EAAA,IAAAE;EAHhDN,AAGgDF,EAAA,OAAAM,KAC3CE,KAAAR,EAAA,MAHHQ,KAAA,qBAAA,UAAA,EAAA,UAAA;GAAE;GAEAL;GAAM;GAAEG;EAAoC,EAAA,CAAA,GAC3CN,EAAA,KAAAM,IAAAN,EAAA,KAAAQ,KAJLN,UACEA;CADK,OAOPA,UAAUA;MAGZA,UACEA;CACH,IAAAC;CAAA,AAAAH,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KAM6BF,KAAA,EAAAM,UAAW,QAAO,GAACT,EAAA,KAAAG,MAAAA,KAAAH,EAAA;CAAA,IAAAM;CAAA,AAAAN,EAAA,OAAAE,UAIrCI,KAAAN,EAAA,MAJNM,KAAA,oBAAC,KAAD;EAAc,SAAA;EAAU,OAAAH;EACtB,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GACfD,UAAAA;EADE,CAAA;CADH,CAAA,GAIEF,EAAA,KAAAE,SAAAF,EAAA,KAAAM;CAAA,IAAAE;CAAA,AAAAR,EAAA,OAAAN,YAAAM,EAAA,OAAAH,WAMRW,KAAA,oBAAC,KAAD,EAAA,UACE,oBAAC,QAAD;EACYd;EACA,UAAA;EACDG;EACJ,MAAA;EACA,MAAA;CAAS,CAAA,EANd,CAAA,GAQEG,EAAA,KAAAN,UAAAM,EAAA,KAAAH,SAAAG,EAAA,MAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAU;CACE,OADFV,EAAA,QAAAM,MAAAN,EAAA,QAAAQ,MArBRE,KAAA,oBAAC,SAAD;EACE,SAAA;EAEE,SAAAJ;EAMQ,UAAA,kBAAkBK;EAClB,WAAA;EACV,QAAA;EAEAH,UAAAA;CAbM,CAAA,GAsBER,EAAA,MAAAM,IAAAN,EAAA,MAAAQ,IAAAR,EAAA,MAAAU,MAAAA,KAAAV,EAAA,KAtBVU;AAsBU,GCnDRK,gBAAgB;CACpBC,IAAI;EACFC,MAAML,KAAKM,KAAK,IAAI,CAACC;EACrBC,OAAOR,KAAKM,KAAK,GAAG,CAACC;CACvB;CACAE,KAAK;EACHJ,MAAML,KAAKM,KAAK,IAAI,CAACC;EACrBC,OAAOR,KAAKM,KAAK,IAAI,CAACC;CACxB;CACAG,oBAAoB;EAClBL,MAAMH,YAAYS,MAAMN,KAAKO,QAAQC,MAAMD,QAAQE,QAAQC;EAC3DP,OAAON,YAAYS,MAAMH,MAAMI,QAAQC,MAAMD,QAAQE,QAAQC;CAC/D;CACAC,oBAAoB;EAClBX,MAAMH,YAAYS,MAAMN,KAAKO,QAAQC,MAAMD,QAAQK,QAAQF;EAC3DP,OAAON,YAAYS,MAAMH,MAAMI,QAAQC,MAAMD,QAAQK,QAAQF;CAC/D;CACAG,gBAAgB;EACdb,MAAMH,YAAYS,MAAMN,KAAKc,QAAQC,MAAMD,QAAQF,QAAQb;EAC3DI,OAAON,YAAYS,MAAMH,MAAMW,QAAQC,MAAMD,QAAQF,QAAQb;CAC/D;CACAiB,gBAAgB;EACdhB,MAAMH,YAAYS,MAAMN,KAAKc,QAAQC,MAAMD,QAAQF,QAAQK;EAC3Dd,OAAON,YAAYS,MAAMH,MAAMW,QAAQC,MAAMD,QAAQF,QAAQK;CAC/D;CACAC,iBAAiB;EACflB,MAAMH,YAAYS,MAAMN,KAAKc,QAAQC,MAAMD,QAAQK,SAASpB;EAC5DI,OAAON,YAAYS,MAAMH,MAAMW,QAAQC,MAAMD,QAAQK,SAASpB;CAChE;CACAqB,UAAU;EACRpB,MAAMH,YAAYS,MAAMN,KAAKc,QAAQO,KAAKC;EAC1CnB,OAAON,YAAYS,MAAMH,MAAMW,QAAQO,KAAKC;CAC9C;AACF;AAIA,SAAgBE,eAAeC,QAA6BC,UAAkC;CAC5F,OAAO5B,cAAc4B,SAAS,GAAGD;AACnC;AC5BA,MAAMc,UAAQV,OAAOW,IAAIC,MAAM,EAACC,aAAa,YAAoB,CAAC,CAAC,CAAA,WAAA;;;AAAO,CAAA,CAAA,yBAC/CE,UACvBA,MAAMR,UAAUL,eAAea,MAAMR,SAAS,KAAK,IAAI,UAAS,4DAO/DQ,UACDA,MAAMT,qBACNL,GAAG,yXCdD0B,yBAAyBN,uBAAOL,gBAAgB,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EAACY,aACjD,EACLC,OAAOD,MAAME,OAAOD,MAAME,KAAKC,IACjC,EACD,GAEKC,uBAAsBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAC1B,EAAAb,aAAAC,OAAAC,OAAAC,SAA0CQ,OAAKG;CAAA,AAAAF,EAAA,OAAAV,SAAAU,EAAA,OAAAT,QAOvCW,KAAA,oBAAC,MAAD;EAAS,IAAA;EAAiBX,SAAAA;EAAY,MAAA;EAAU,QAAA;EAC7CD,UAAAA;CADE,CAAA,GAEEU,EAAA,KAAAV,OAAAU,EAAA,KAAAT,MAAAS,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAA,IAAAG;CAAA,AAAAH,EAAA,OAAAX,QAsBNc,KAAAH,EAAA,MAnBAG,KAAAd,SACC,oBAAC,MAAD;EAAY,MAAA;EACV,UAAA,oBAAC,SAAD;GACE,SAAA;GAEE,SAAA,oBAAC,KAAD;IAAc,SAAA;IACZ,UAAA,qBAAC,MAAD;KAAM,OAAA;KAAY,MAAA;KAAlB,UAAA,CACE,oBAAC,wBAAD,EAA+B,OAAA,EAAAe,aAAc,QAAO,EAAC,CAAA,GACpDf,KAFE;;GADH,CAAA;GAOc,oBAAA,CAAC,OAAO,MAAM;GACxB,WAAA;GACV,QAAA;GAEA,UAAA,oBAAC,wBAAD,CAAuB,CAAA;EAdjB,CAAA;CADL,CAAA,GAkBNW,EAAA,KAAAX,OAAAW,EAAA,KAAAG;CAAA,IAAAE;CAAA,AAAAL,EAAA,OAAAE,MAAAF,EAAA,OAAAG,MA1BLE,KAAA,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,qBAAC,QAAD;GAAe,OAAA;GAAf,UAAA,CACEH,IAKCC,EANI;;CADL,CAAA,GA4BEH,EAAA,KAAAE,IAAAF,EAAA,KAAAG,IAAAH,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAAA,IAAAM;CAAA,AAAAN,EAAA,OAAAZ,eAAAY,EAAA,OAAAT,QAGLe,KAAAlB,eACC,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,oBAAC,MAAD;GAAS,IAAA;GAAiBG,SAAAA;GAAM,OAAA;GAAY,MAAA;GACzCH,UAAAA;EADE,CAAA;CADH,CAAA,GAKLY,EAAA,KAAAZ,aAAAY,EAAA,KAAAT,MAAAS,EAAA,MAAAM,MAAAA,KAAAN,EAAA;CAAA,IAAAO;CACA,OADAP,EAAA,QAAAK,MAAAL,EAAA,QAAAM,MAvCHC,KAAA,qBAAA,UAAA,EAAA,UAAA,CAEEF,IA+BCC,EAMA,EAAA,CAAA,GACAN,EAAA,MAAAK,IAAAL,EAAA,MAAAM,IAAAN,EAAA,MAAAO,MAAAA,KAAAP,EAAA,KAxCHO;AAwCG,GCpDD,EAACe,QAAQC,eAAaC,OAAOC,iBAAcV,aAEpCW,uBAAqBC,YACzB;CACLC,UAAUC,QAAQ,EAACC,gBAAe;EAChC,IAAIC,YAAY;EAOhB,OANID,cACFC,YAAY,mBAAmBV,eAAeM,QAAQ,oBAAoB,EAAC;;6DAKtE;GACL,GAAGE;GACH,iBAAmB;GACnB,OAAS;GACT,QAAU;GACV,cAAgBN,cAAY;GAC5BQ;GACA,QAAU;GACV,WAAa;GACb,SAAW;GACX,SAAWjB,IAAIW,aAAW,EAAG;GAC7B,YAAc;GACd,WAAW,EACTM,WAAW,mBAAmBV,eAAeM,QAAQ,oBAAoB,IAC3E;EACF;CACF;CACAK,sBAAsBH,QAAQ,EAACI,kBAAiB;EAC9C,GAAGJ;EACHK,SAASD,aAAa,MAAO;CAC/B;CACAE,QAAQN,YAAY;EAClB,GAAGA;EACHO,OAAO;EACPC,YAAYtB,YAAYuB,MAAMC,KAAKC;EACnCC,YAAY3B,IAAIW,aAAW,EAAG;CAChC;CACAiB,WAAWb,YAAY,EACrB,GAAGA,OACL;CACAc,aAAad,QAAQ,EAACI,kBAAiB;EACrC,GAAGJ;EACHe,iBAAiBvB,eAAeM,QAAQ,gBAAgB;EACxDkB,cAActB,cAAY;EAC1BW,SAASD,aAAa,KAAM;CAC9B;CACAa,wBAAwB;EACtBV,OAAOf,eAAeM,QAAQ,gBAAgB;EAC9CoB,UAAU;EACVC,SAAS;CACX;CACAC,mBAAmBpB,YAAY;EAC7B,GAAGA;EACH,qBAAuB;EACvB,wBAA0B;EAC1B,KAAO,EAACO,OAAOf,eAAeM,QAAQ,gBAAgB,EAAC;EACvD,WAAW,EACTiB,iBAAiBvB,eAAeM,QAAQ,iBAAiB,EAC3D;CACF;CACAuB,mBAAmBrB,YAAY;EAC7B,GAAGA;EACHQ,YAAYtB,YAAYuB,MAAMC,KAAKC;EACnCW,YAAY;CACd;CACAC,SAASvB,QAAQ,EAACC,iBAAgB;EAChC,GAAGD;EACH,iBAAmBC,YAAYT,eAAeM,QAAQ,UAAU,IAAI;EACpE,cAAgBJ,cAAY;EAC5B,OAASO,YAAYT,eAAeM,QAAQ,IAAI,IAAI;EACpD,SAAW,GAAGb,IAAIW,aAAW,EAAG,EAAC,GAAIX,IAAIW,aAAW,EAAG;EACvD,WAAW;GACTmB,iBAAiBvB,eAAeM,QAAQ,UAAU;GAClDS,OAAOf,eAAeM,QAAQ,IAAI;EACpC;CACF;CACA0B,cAAcxB,YAAY;EACxB,GAAGA;EACHY,YAAY3B,IAAIW,aAAW,EAAG;CAChC;CACA6B,iBAAiBzB,YAAY;EAC3B,GAAGA;EACH0B,QAAQ;EACRP,SAAS;CACX;AACF,IAGIQ,qBAAoBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAGpBF,KAAA,oBAAC,KAAD;EAAe,UAAA;EACb,UAAA,oBAAC,MAAD;GAAY,MAAA;GACV,UAAA,oBAAC,iBAAD,CAAgB,CAAA;EADb,CAAA;CADH,CAAA,GAIEF,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAA,IAAAK;CACuB,OADvBL,EAAA,OAAAD,QACuBM,KAAAL,EAAA,MAN/BK,KAAA,oBAAA,WAAA,mBAAA;EAAA,GAAkCN;EAChCG,UAAAA;CAKF,CAAA,GAA+BF,EAAA,KAAAD,OAAAC,EAAA,KAAAK,KAN/BA;AAM+B,GAI7BC,UAAOP,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAD,MAAAQ,WAKAL,KAAAF,EAAA,MAFPE,KAAA,oBAAC,MAAD;EAAc,QAAA;EAAW,QAAA;EACtBH,UAAAA,MAAKQ;CADH,CAAA,GAEEP,EAAA,KAAAD,MAAAQ,UAAAP,EAAA,KAAAE;CAAA,IAAAG;CACS,OADTL,EAAA,OAAAD,SAAAC,EAAA,OAAAE,MAHTG,KAAA,oBAAA,WAAA,MAAA;EAAA,GAAqBN;EACnBG,UAAAA;CAGF,CAAA,GAAkBF,EAAA,KAAAD,OAAAC,EAAA,KAAAE,IAAAF,EAAA,KAAAK,MAAAA,KAAAL,EAAA,IAJlBK;AAIkB,GAIhBG,cAAWT,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACf,EAAAM,aAAmBR;CAKnB,IAAIU,MAAKC,QAASH,QAAQ,GAAC;EACzB,IAAAI,SACEJ,SAAQK,SALK,IAKb,MAAwDL,SAAQK,SAJ9C,IAIqEV;EAAA,AAAAF,EAAA,OAAAO,WAQpFL,KAAAF,EAAA,MAHYE,MAAAW,UAAA;GACX,IAAAC,OAAaP,SAASM;GAAM,OACrB,oBAAC,UAAD,EAAO,GAAKC,KAAIf,MAAM,CAAA;EAAI,GAClCC,EAAA,KAAAO,UAAAP,EAAA,KAAAE;EAAA,IAAAG;EAAA,AAAAL,EAAA,OAAAW,SACcN,KAAAL,EAAA,MAARK,KAAA,EAAAM,OAAO,GAACX,EAAA,KAAAW,QAAAX,EAAA,KAAAK;EAAA,IAAAU;EAEf,OAFef,EAAA,OAAAO,SAAAK,UAAAZ,EAAA,OAAAE,MAAAF,EAAA,OAAAK,MANjBU,KAAA,oBAAC,UAAD;GACY,WAAA;GACG,aAAAb;GAIN,OAAAG;GACK,YAAAE,SAAQK;EAAO,CAAA,GAC3BZ,EAAA,KAAAO,SAAAK,QAAAZ,EAAA,KAAAE,IAAAF,EAAA,KAAAK,IAAAL,EAAA,KAAAe,MAAAA,KAAAf,EAAA,IARFe;CAQE;CAEL,IAAAb;CACsE,OADtEF,EAAA,OAAAO,YAAAP,EAAA,OAAAD,SACMG,KAAA,oBAAA,WAAA,UAAA;EAAA,GAAyBH;EAAQQ;CAAS,CAAA,GAAsBP,EAAA,KAAAO,UAAAP,EAAA,KAAAD,OAAAC,EAAA,MAAAE,MAAAA,KAAAF,EAAA,KAAhEE;AAAgE,GAGnEc,mBAAkBjB,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAMd,OANcF,EAAA,OAAAD,QAMdG,KAAAF,EAAA,MAJNE,KAAA,oBAAC,KAAD;EAAc,SAAA;EAAiB,cAAA;EAC7B,UAAA,oBAAC,MAAD;GAAY,MAAA;GAAU,QAAA;GACpB,UAAA,oBAAA,WAAA,iBAAA,EAAA,GAAgCH,MAAK,CAAA;EADlC,CAAA;CADH,CAAA,GAIEC,EAAA,KAAAD,OAAAC,EAAA,KAAAE,KAJNA;AAIM,GAIJe,oBAAmBlB,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAGnBF,KAAA,oBAAC,WAAD,EAAiB,OAAA,UAAS,CAAA,GAAGF,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAA,IAAAK;CACD,OADCL,EAAA,OAAAD,QACDM,KAAAL,EAAA,MAF9BK,KAAA,oBAAA,WAAA,kBAAA;EAAA,GAAiCN;EAC/BG,UAAAA;CACF,CAAA,GAA8BF,EAAA,KAAAD,OAAAC,EAAA,KAAAK,KAF9BA;AAE8B,GAI5Ba,YAASnB,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAD,MAAAoB,KAAAC,YAK4DlB,KAAAF,EAAA,MAAhEE,KAAAH,MAAKoB,KAAKC,aAAc,oBAAC,SAAD,EAAgB,OAAA,EAAAC,aAAc,MAAK,EAAC,CAAA,GAAIrB,EAAA,KAAAD,MAAAoB,KAAAC,WAAApB,EAAA,KAAAE;CAAA,IAAAG;CAAA,AAAAL,EAAA,OAAAD,MAAAQ,YAAAP,EAAA,OAAAE,MADnEG,KAAA,qBAAC,MAAD;EAAY,OAAA;EAAZ,UAAA,CACGH,IACAH,MAAKQ,QAFH;KAGEP,EAAA,KAAAD,MAAAQ,UAAAP,EAAA,KAAAE,IAAAF,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAAA,IAAAe;CAEL,OAFKf,EAAA,OAAAD,SAAAC,EAAA,OAAAK,MALXU,KAAA,oBAAC,KAAD;EAAe,UAAA;EAAa,UAAA;EAC1B,UAAA,oBAAA,WAAA,QAAA;GAAA,GAAuBhB;GACrBM,UAAAA;EAIF,CAAA;CANE,CAAA,GAOEL,EAAA,KAAAD,OAAAC,EAAA,KAAAK,IAAAL,EAAA,KAAAe,MAAAA,KAAAf,EAAA,IAPNe;AAOM,GAIGO,0BAAwB;CACnCxB;CACAyB,oBAAoB;CACpBjB,MAAAA;CACAE,UAAAA;CACAQ;CACAC;CACAC,QAAAA;AACF,GC/JM2B,sBAAqBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACzB,EAAAd,SAAAC,aAAAC,UAAAC,OAAAC,OAAAC,MAAAC,aAAAE,SAAAE,aAAAD,UAWIG,OAEJG,SAAetB,oBAAoB,GAGnCuB,WAAiBtB,iBAAiBuB,QAA8B,GAChEC,eAAqBxB,iBAAiByB,SAA8B,GAACC;CAAA,AAAAP,EAAA,OAAAQ,OAAAC,IAAA,2BAAA,KAK1DF,KAAA,EAAAG,QAAS,EAAC,GAACV,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CAAA,IAAAW;CAAA,AAAAX,EAAA,OAAAZ,eAAAY,EAAA,OAAAV,SAAAU,EAAA,OAAAT,SAAAS,EAAA,OAAAR,QAGlBmB,KAAA,oBAAC,qBAAD;EAAkCvB;EAAoBE;EAAcC;EAAaC;CAAI,CAAA,GAAIQ,EAAA,KAAAZ,aAAAY,EAAA,KAAAV,OAAAU,EAAA,KAAAT,OAAAS,EAAA,KAAAR,MAAAQ,EAAA,KAAAW,MAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,OAAAG,YAAAH,EAAA,OAAAX,YAAAW,EAAA,OAAAR,QAAAQ,EAAA,OAAAP,eAAAO,EAAA,QAAAL,WAAAK,EAAA,QAAAH,eAAAG,EAAA,QAAAE,UAAAF,EAAA,QAAAK,gBAO/EO,MAAAC,OAAA;EAAC,IAAA,EAAAC,UAAAD,IACP,EAAAE,QAAAC,UAAApB,OAAAqB,oBAAmDH;EAAK,OAatD,oBAAC,iBAAD;GACchC,YAAAA;GACD,YAAA;GACE,aAAA;GACD,YAAAqB,YAAAd,YAAAgB;GACDF,WAAAA;GACX,SAAA;GACMX;GACY,kBAAA0B;GACVH;GACEC;GACMvB,gBAAAA;GACPE;GACI,aAAAU,eAAA,eAAAR;GACL,QAAAd,oBAAkBmB,MAAM;GACzBe,OAAAA;EAAe,CAAA;CACtB,GAELjB,EAAA,KAAAG,UAAAH,EAAA,KAAAX,UAAAW,EAAA,KAAAR,MAAAQ,EAAA,KAAAP,aAAAO,EAAA,MAAAL,SAAAK,EAAA,MAAAH,aAAAG,EAAA,MAAAE,QAAAF,EAAA,MAAAK,cAAAL,EAAA,MAAAY,MAAAA,KAAAZ,EAAA;CAAA,IAAAa;CAAA,AAAAb,EAAA,QAAAb,WAAAa,EAAA,QAAAR,QAAAQ,EAAA,QAAAY,MAAAZ,EAAA,QAAAJ,SApCHiB,KAAA,oBAAC,YAAD;EACW1B;EACKS,cAAAA;EACRJ;EACE,QAAAoB;CAgCP,CAAA,GACDZ,EAAA,MAAAb,SAAAa,EAAA,MAAAR,MAAAQ,EAAA,MAAAY,IAAAZ,EAAA,MAAAJ,OAAAI,EAAA,MAAAa,MAAAA,KAAAb,EAAA;CAAA,IAAAmB;CACE,OADFnB,EAAA,QAAAW,MAAAX,EAAA,QAAAa,MA7CJM,KAAA,qBAAC,KAAD;EAES,OAAAZ;EAFT,UAAA,CAKEI,IAGAE,EARE;KA8CEb,EAAA,MAAAW,IAAAX,EAAA,MAAAa,IAAAb,EAAA,MAAAmB,MAAAA,KAAAnB,EAAA,KA9CNmB;AA8CM;AAnEiB,SAAAf,SAAAgB,OAAA;CAAA,OAiBoBA,MAAKC,KAAKlB;AAAS;AAjBvC,SAAAG,UAAAgB,SAAA;CAAA,OAkBwBF,QAAKC,KAAKE;AAAS;AAlB3C,SAAAL,YAAA;CAAA,OAuDW;AAAS;AC/D/C,MAAMwB,sBAAqBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAd,aAAAC,UAAAC,OAAAC,OAAAC,MAAAC,QAAAE,UAAAC,aAAAE,KAAAK,MAAAN;CAAA,AAAAI,EAAA,OAAAD,SAahBZ,cAAAa,EAAA,IAAAZ,WAAAY,EAAA,IAAAX,QAAAW,EAAA,IAAAV,QAAAU,EAAA,IAAAT,OAAAS,EAAA,IAAAR,SAAAQ,EAAA,IAAAN,WAAAM,EAAA,IAAAL,cAAAK,EAAA,IAAAH,MAAAG,EAAA,IAAAE,OAAAF,EAAA,KAAAJ,QAAAI,EAAA,QAZT,CAAAb,aAAAC,UAAAC,OAAAC,OAAAC,MAAAC,QAAAE,UAAAC,aAAAC,OAAAC,QAAAK,QAYIH,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAb,aAAAa,EAAA,KAAAZ,UAAAY,EAAA,KAAAX,OAAAW,EAAA,KAAAV,OAAAU,EAAA,KAAAT,MAAAS,EAAA,KAAAR,QAAAQ,EAAA,KAAAN,UAAAM,EAAA,KAAAL,aAAAK,EAAA,KAAAH,KAAAG,EAAA,MAAAE,MAAAF,EAAA,MAAAJ;CAAA,IAAAO;CAAA,AAAAH,EAAA,QAAAb,eAAAa,EAAA,QAAAX,SAAAW,EAAA,QAAAV,SAAAU,EAAA,QAAAT,QAKLY,KAAA,oBAAC,qBAAD;EAAkChB;EAAoBE;EAAcC;EAAaC;CAAI,CAAA,GAAIS,EAAA,MAAAb,aAAAa,EAAA,MAAAX,OAAAW,EAAA,MAAAV,OAAAU,EAAA,MAAAT,MAAAS,EAAA,MAAAG,MAAAA,KAAAH,EAAA;CAAA,IAAAI;CAAA,AAAAJ,EAAA,QAAAZ,YAAAY,EAAA,QAAAT,QAAAS,EAAA,QAAAR,UAAAQ,EAAA,QAAAN,YAAAM,EAAA,QAAAL,eAAAK,EAAA,QAAAH,OAAAG,EAAA,QAAAE,QAAAF,EAAA,QAAAJ,SAEzFQ,KAAA,oBAAC,WAAD;EAAU,GACJF;EACS,cAAA;EACb,WAAA;EACcN,cAAAA;EACJR;EACNG,IAAAA;EACEA;EACEC;EACEE;EACGC;EACRE;CAAG,CAAA,GACRG,EAAA,MAAAZ,UAAAY,EAAA,MAAAT,MAAAS,EAAA,MAAAR,QAAAQ,EAAA,MAAAN,UAAAM,EAAA,MAAAL,aAAAK,EAAA,MAAAH,KAAAG,EAAA,MAAAE,MAAAF,EAAA,MAAAJ,OAAAI,EAAA,MAAAI,MAAAA,KAAAJ,EAAA;CAAA,IAAAK;CACE,OADFL,EAAA,QAAAG,MAAAH,EAAA,QAAAI,MAhBJC,KAAA,qBAAC,KAAD,EAAA,UAAA,CAEEF,IAEAC,EAJE,EAAA,CAAA,GAiBEJ,EAAA,MAAAG,IAAAH,EAAA,MAAAI,IAAAJ,EAAA,MAAAK,MAAAA,KAAAL,EAAA,KAjBNK;AAiBM,GChCJoB,0BAAyBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAf,aAAAC,UAAAC,OAAAC,OAAAC,MAAAC,QAAAE,UAAAC,aAAAG,KAAAK,MAAAP,MAAAC;CAAA,AAAAI,EAAA,OAAAD,SAcpBb,cAAAc,EAAA,IAAAb,WAAAa,EAAA,IAAAZ,QAAAY,EAAA,IAAAX,QAAAW,EAAA,IAAAV,OAAAU,EAAA,IAAAT,SAAAS,EAAA,IAAAP,WAAAO,EAAA,IAAAN,cAAAM,EAAA,IAAAH,MAAAG,EAAA,IAAAE,OAAAF,EAAA,KAAAL,OAAAK,EAAA,KAAAJ,QAAAI,EAAA,QAbT,CAAAd,aAAAC,UAAAC,OAAAC,OAAAC,MAAAC,QAAAE,UAAAC,aAAAC,MAAAC,OAAAC,QAAAK,QAaIH,OAAKC,EAAA,KAAAD,OAAAC,EAAA,KAAAd,aAAAc,EAAA,KAAAb,UAAAa,EAAA,KAAAZ,OAAAY,EAAA,KAAAX,OAAAW,EAAA,KAAAV,MAAAU,EAAA,KAAAT,QAAAS,EAAA,KAAAP,UAAAO,EAAA,KAAAN,aAAAM,EAAA,KAAAH,KAAAG,EAAA,MAAAE,MAAAF,EAAA,MAAAL,MAAAK,EAAA,MAAAJ;CAAA,IAAAO;CAAA,AAAAH,EAAA,QAAAd,eAAAc,EAAA,QAAAZ,SAAAY,EAAA,QAAAX,SAAAW,EAAA,QAAAV,QAKLa,KAAA,oBAAC,qBAAD;EAAkCjB;EAAoBE;EAAcC;EAAaC;CAAI,CAAA,GAAIU,EAAA,MAAAd,aAAAc,EAAA,MAAAZ,OAAAY,EAAA,MAAAX,OAAAW,EAAA,MAAAV,MAAAU,EAAA,MAAAG,MAAAA,KAAAH,EAAA;CAAA,IAAAI;CAAA,AAAAJ,EAAA,QAAAb,YAAAa,EAAA,QAAAV,QAAAU,EAAA,QAAAT,UAAAS,EAAA,QAAAP,YAAAO,EAAA,QAAAN,eAAAM,EAAA,QAAAH,OAAAG,EAAA,QAAAE,QAAAF,EAAA,QAAAL,QAAAK,EAAA,QAAAJ,SAGzFQ,KAAA,oBAAC,UAAD;EAAS,GACHF;EACS,cAAA;EACCN,cAAAA;EACJT;EACNG,IAAAA;EACEA;EACEC;EACEE;EACGC;EACRG;EACCF;CAAI,CAAA,GACVK,EAAA,MAAAb,UAAAa,EAAA,MAAAV,MAAAU,EAAA,MAAAT,QAAAS,EAAA,MAAAP,UAAAO,EAAA,MAAAN,aAAAM,EAAA,MAAAH,KAAAG,EAAA,MAAAE,MAAAF,EAAA,MAAAL,MAAAK,EAAA,MAAAJ,OAAAI,EAAA,MAAAI,MAAAA,KAAAJ,EAAA;CAAA,IAAAK;CACE,OADFL,EAAA,QAAAG,MAAAH,EAAA,QAAAI,MAjBJC,KAAA,qBAAC,KAAD,EAAA,UAAA,CAEEF,IAGAC,EALE,EAAA,CAAA,GAkBEJ,EAAA,MAAAG,IAAAH,EAAA,MAAAI,IAAAJ,EAAA,MAAAK,MAAAA,KAAAL,EAAA,KAlBNK;AAkBM;ACvCV,SAAS2B,cAAcC,OAAoC;CACzD,IAAI,OAAOA,SAAU,UAAU,OAAOA;CACtC,IAAI,OAAOA,SAAU,YAAYA,OAE/B,OADcE,OAAOC,OAAOH,KAA+B,CAAC,CAACI,MAAMC,MAAMA,CAClEJ,KAASK,KAAAA;AAGpB;AAEA,SAASC,mBAAmBC,MAAmC;CAC7D,IAAMC,WAAWD,MAAME,MAAM,GAAG,CAAC,CAACC,OAAOC,OAAO;CAEhD,OADI,CAACH,YAAYA,SAASI,UAAU,IAAUL,OACvC;EAACC,SAAS;EAAI;EAAO,GAAGA,SAASK,MAAM,EAAE;CAAC,CAAC,CAACC,KAAK,GAAG;AAC7D;AAsBA,SAAwBmB,QAAQ,EAC9BjB,cACAC,iBACAE,SACAC,QACAC,UACAC,eACAC,iBACAC,cACAC,YACAC,eACAC,gBACAC,gBACAC,YACAG,WACe;CACf;CAKA,IAAME,aAAaF,WAAWA,QAAQpB,SAAS,GACzC,CAACuB,iBAAiBC,sBAAsBrD,SAAS,CAAC,GAClDsD,WAAWb,cAAcc,KAAKC,OAAOC,QAAQC,MAC7CC,cACJpC,mBAAmBmB,UAAU,MAAMC,gBAAgB,4BAA4B;CAEjF,OACE,qBAAC,OAAD;EAAO,OAAO;EAAd,UAAA;GAEE,oBAAC,oBAAD;IACWP;IACT,UAAUH;IACV,OAAOI,QAAQkB,KAAKC,OAAOI,MAAM9C;IACjC,OAAM;IACN,MAAK;IACL,aAAaoB;IACb,SAASK;IACT,aAAY;IACZ,OAAOC;GAAgB,CAAA;GAGzB,qBAAC,KAAD,EAAA,UAAA,CACE,oBAAC,qBAAD;IAAqB,OAAM;IAAS,MAAK;GAAQ,CAAA,GACjD,oBAAC,MAAD;IAAM,QAAA;IAAO,SAAS;IAAG,QAAQ;IAC/B,UAAA,qBAAC,MAAD;KAAM,OAAM;KAAS,KAAK;KAAG,SAAQ;KAArC,UAAA;MACE,qBAAC,MAAD;OACE,OAAM;OACN,KAAK;OACL,MAAM;OACN,OAAO;QAACqB,UAAU;QAAGC,WAAW;QAAQC,YAAY;QAAUC,WAAW;OAAQ;OAJnF,UAAA,CAME,oBAAC,YAAD,CAAW,CAAA,GACX,oBAAC,MAAD;QAAM,OAAO,CAACV;QAAU,MAAM;QAC3BK,UAAAA;OACG,CAAA,CACF;;MACLL,YACC,oBAAC,QAAD;OACE,cAAW;OACX,UAAUrB;OACV,UAAU;OACV,MAAM3C;OACN,MAAK;OACL,SAASuD;OACT,SAAS;OACT,MAAK;OACL,MAAK;MAAQ,CAAA;MAGjB,oBAAC,QAAD;OACE,SAAS;OACT,UAAUZ;OACV,UAAU;OACV,MAAK;OACL,SAASW;OACT,MAAMU,WAAW,kBAAkB;OACnC,MAAK;MAAQ,CAAA;KAEX;;GACF,CAAA,CACH,EAAA,CAAA;GAEL,oBAAC,oBAAD;IACE,GAAIhB,SAAS,kBAAkB;IAC/B,UAAUL;IACV,OAAOI,QAAQ4B,kBAAkBnD;IACjC,OAAM;IACN,MAAK;IACL,OAAO2B,cAAcwB;GAAiB,CAAA;GAGvCd,aACC,oBAAC,MAAD;IAAM,WAAW;IAAG,QAAQ;IAAG,SAAS;IAAG,QAAQ;IACjD,UAAA,qBAAC,OAAD;KAAO,OAAO;KAAd,UAAA,CACE,oBAAC,SAAD;MAAS,OAAO;MACbF,UAAAA,QAAQiB,KAAKC,QAAQC,QACpB,oBAAC,KAAD;OAEE,IAAI,cAAcD,OAAOE;OACzB,iBAAe,gBAAgBF,OAAOE;OACtC,UAAUjB,oBAAoBgB;OAC9B,eAAef,mBAAmBe,GAAG;OACrC,OAAOD,OAAOhC;MAAM,GALfgC,OAAOE,EAKQ,CAEvB;KACM,CAAA,GACRpB,QAAQiB,KAAKC,UAAQC,UACpB,oBAAC,UAAD;MAEE,IAAI,gBAAgBD,SAAOE;MAC3B,mBAAiB,cAAcF,SAAOE;MACtC,QAAQjB,oBAAoBgB;MAE5B,UAAA,qBAAC,OAAD;OAAO,OAAO;OAAd,UAAA;QACE,oBAAC,oBAAD;SACE,GAAI9B,SAAS,SAAS6B,SAAOE,IAAa;SAC1C,UAAUpC;SACV,QAAQI,QAAQF,MAAAA,GAA4BgC,SAAOE,GAAG,EAAEvD;SACxD,OAAM;SACN,MAAM,SAASqD,SAAOE;QAAK,CAAA;QAE7B,oBAAC,oBAAD;SACE,GAAI/B,SAAS,WAAW6B,SAAOE,IAAa;SAC5C,UAAUpC;SACV,QAAQI,QAAQkC,QAAAA,GAA8BJ,SAAOE,GAAG,EAAEvD;SAC1D,OAAM;SACN,MAAM,WAAWqD,SAAOE;QAAK,CAAA;QAE/B,oBAAC,wBAAD;SACE,GAAI/B,SAAS,eAAe6B,SAAOE,IAAa;SAChD,UAAUpC;SACV,QAAQI,QAAQmC,YAAAA,GAAkCL,SAAOE,GAAG,EAAEvD;SAC9D,OAAM;SACN,MAAM,eAAeqD,SAAOE;SAC5B,MAAM;QAAE,CAAA;QAETvB,YAAYC,WACX,oBAAC,oBAAD;SACE,GAAIT,SAAS,cAAc6B,SAAOE,IAAa;SAC/C,QAAQhC,QAAQS,WAAAA,GAAiCqB,SAAOE,GAAG,EAAEvD;SAC7D,OAAM;SACN,MAAM,cAAcqD,SAAOE;SAC3B,UACEpC,gBACAa,YAAYE,gBAAgByB,SAAShC,cAAe,QAAWiC,IAAI;QACpE,CAAA;OAGA;;KACC,GAzCHP,SAAOE,EAyCJ,CACX,CACI;;GACH,CAAA,IAEN,qBAAA,UAAA,EAAA,UAAA;IACE,oBAAC,oBAAD;KACE,GAAI/B,SAAS,OAAO;KACpB,UAAUL;KACV,OAAOI,QAAQF,OAAOrB;KACtB,OAAM;KACN,MAAK;KACL,OAAOC,cAAc0B,cAAcN,KAAK;IAAE,CAAA;IAE5C,oBAAC,oBAAD;KACE,GAAIG,SAAS,SAAS;KACtB,UAAUL;KACV,OAAOI,QAAQkC,SAASzD;KACxB,OAAM;KACN,MAAK;KACL,OAAOC,cAAc0B,cAAc8B,OAAO;IAAE,CAAA;IAE9C,oBAAC,wBAAD;KACE,GAAIjC,SAAS,aAAa;KAC1B,UAAUL;KACV,OAAOI,QAAQmC,aAAa1D;KAC5B,OAAM;KACN,MAAK;KACL,MAAM;IAAE,CAAA;IAETgC,YAAYC,WACX,oBAAC,oBAAD;KACE,GAAIT,SAAS,YAAY;KACzB,OAAOD,QAAQS,YAAYhC;KAC3B,OAAM;KACN,MAAK;KACL,OAAOC,cAAc0B,cAAcK,UAAU;KAC7C,UACEb,gBAAgBa,YAAYE,gBAAgByB,SAAShC,cAAe,QAAWiC,IAAI;IACpF,CAAA;GAGP,EAAA,CAAA;EAEG;;AAEX;ACtNA,SAASwD,qBAAqBC,OAAqB;CACjD,OAAO,oBAAC,SAAD,EAAS,GAAIA,MAAM,CAAA;AAC5B;AAOA,MAAMI,mBAAkBJ,UAAA;CAAA,IAAAK,IAAAC,EAAA,GAAA,GACtB,EAAAJ,UAAAC,QAAAI,OAGIP,OADM,EAAAQ,SAAAC,IAAAC,gBAAAC,sBAAAJ,IAGVK,SAAezC,mBAAmB,GAClC0C,SAAe/C,oBAAoB,GAEnCgD,gBAAsB/C,iBAAiB,GAEvCgD,WAAiBnD,YAAY,GAACoD;CAAA,AAAAX,EAAA,OAAAG,UACuDQ,KAAAX,EAAA,MAAlDW,MAAAC,UAAW5C,gBAAgB4C,OAAOC,OAAOV,OAAO,CAAC,GAACH,EAAA,KAAAG,SAAAH,EAAA,KAAAW;CAArF,IAAAG,YAAkBjD,iBAAiB8C,EAAkD,GACrFI,OAAalD,iBAAiBO,UAAU,GAExC4C,mBAAyB9D,OAA2B+D,KAAAA,CAAS,GAG7D,CAAAC,eAAAC,oBAA0ChE,SAAS2D,WAASM,KAAO,GACnE,CAAAC,YAAAC,iBAAoCnE,SAAmC,SAAS,GAEhFoE,eAAqBT,YAAYA,WAASM,QAArBF,eAA4CM;CAAA,AAAAxB,EAAA,OAAAe,OAClBS,KAAAxB,EAAA,MAAzBwB,KAAA7C,oBAAoBoC,IAAI,GAACf,EAAA,KAAAe,MAAAf,EAAA,KAAAwB;CAA/C,IAAAC,gBAAsBD,IAAyBE;CAAA,AAAA1B,EAAA,OAAAuB,eAE8BG,KAAA1B,EAAA,MAApC0B,KAAArD,uBAAuBkD,YAAY,GAACvB,EAAA,KAAAuB,cAAAvB,EAAA,KAAA0B;CAA7E,IAAAC,kBAAwB9D,iBAAiB6D,EAAoC,GAC7EE,kBAAwBL,cAAYM,KAAYC,OAAQC,QAAMC,QAAtC,MAA8CC;CAAA,AAAAjC,EAAA,OAAA4B,kBAExBK,KAAAjC,EAAA,MADHiC,MAAAC,YACzC/D,qBAAqByC,SAAOgB,eAAe,GAAC5B,EAAA,KAAA4B,iBAAA5B,EAAA,KAAAiC;CAD9C,IAAAE,oBAA0BtE,iBAAiBoE,EAE3C,GAGA,EAAAG,YAAAC,YAAAC,IAAAC,YAAyE5E,eAAe,GAAC6E;CAAA,AAAAxC,EAAA,OAAAsC,KAA7BE,KAAAxC,EAAA,MAA7BwC,KAAAF,OAAArB,KAAAA,IAAA,CAA4B,IAA5BqB,IAA6BtC,EAAA,KAAAsC,IAAAtC,EAAA,KAAAwC;CAA7B,IAAA,EAAAC,SAAAC,kBAAAF,IAA6BG;CAAA,AAAA3C,EAAA,QAAA2B,mBAAA3B,EAAA,QAAAuC,WAG1DI,MAAAvB,UAAA;EACMwB,IAAAA;EACJ,IAAIxB,SAASpC,aAAaoC,KAAK,GAAC;GAC9B,IAAAyB,MAAYzB,MAAK0B,UAAgBC,OAAsBC;GACvD,AAAI,OAAOH,OAAQ,aACjBD,mBAAmBC;EACpB;EAGH,IAAIN,WAAWA,QAAOU,SAAU,GAAC;GAC/B,IAAAC,iBAAsBC,OAAAC,OAAA;IAA0C,IAAAC,WAAAD,OAAAnC,KAAAA,IAAA,KAAAmC,IAC9DE,MAAoC,CAAC;IACrC,KAAA,IAAAC,IAAa,GAAGA,IAAIhB,QAAOU,QAASM,KAAG;KACrC,IAAAC,SAAejB,QAAQgB;KAGvB,AAAI,OAAOJ,SAAU,YAAjBA,SAAsCK,OAAMpD,MAAO+C,QACrDG,IAAIE,OAAMpD,MAAO+C,MAAMK,OAAMpD,OAAZ,KACR,OAAO+C,SAAU,WAG1BG,IAAIE,OAAMpD,MAAOmD,MAAM,IAANJ,QAAA,KACR,OAAOA,SAAU,YAAjBA,QAGTG,IAAIE,OAAMpD,MAAO,KAGjBkD,IAAIE,OAAMpD,MAAOmD,MAAM,IAANF,WAAA;IAClB;IACF,OACMC;GAAG;GACX,OACM;IAAAG,SACIP,cAAc9B,OAAKqC,OAAS;IAACrB,YAC1Bc,cAAc9B,OAAKgB,UAAY;IAACsB,aAC/BR,cAAc9B,OAAKsC,aAAed,gBAAgB;IAACe,kBAC9CvC,OAAKuC,oBAAL;IAA6B9B,KAC1C,EAAAC,OAAQ,EAAAf,MAAOY,gBAAe,EAAC;IAACiC,OAC9BV,cAAc9B,OAAKwC,KAAO;GACnC;EAAC;EAGH,IAAAC,eAAqBC;EAOpB,OACM;GAAAL,SACII,aAAazC,OAAKqC,OAAS;GAACrB,YACzByB,aAAazC,OAAKgB,UAAY;GAACsB,aAC9BG,aAAazC,OAAKsC,aAAed,gBAAgB;GAACe,kBAC7CvC,OAAKuC,oBAAL;GAA6B9B,KAC1C,EAAAC,OAAQ,EAAAf,MAAOY,gBAAe,EAAC;GAACiC,OAC9BC,aAAazC,OAAKwC,KAAO;EAClC;CAAC,GACF5D,EAAA,MAAA2B,iBAAA3B,EAAA,MAAAuC,SAAAvC,EAAA,MAAA2C,MAAAA,KAAA3C,EAAA;CA5DH,IAAA+D,wBAA8BpB,IAiESS,KAAAtC,WAASM,OAAO4C;CAAA,AAAAhE,EAAA,QAAA+D,yBAAA/D,EAAA,QAAAoD,MAAtCY,KAAAD,sBAAsBX,EAAgB,GAACpD,EAAA,MAAA+D,uBAAA/D,EAAA,MAAAoD,IAAApD,EAAA,MAAAgE,MAAAA,KAAAhE,EAAA;CAAA,IAAAiE;CAAA,AAAAjE,EAAA,QAAAuC,UAEe0B,MAAAjE,EAAA,OAA3DiE,MAAAhF,gBAA+BrB,mBAAmB2E,OAAO,CAAC,GAACvC,EAAA,MAAAuC,SAAAvC,EAAA,MAAAiE;CAAA,IAAAC;CAAA,AAAAlE,EAAA,QAAAiE,OAAAjE,EAAA,QAAAgE,MAHsBE,MAAA;EAAAC,eAC5EH;EAAuCI,MAChD;EAAUC,UACNJ;CACZ,GAACjE,EAAA,MAAAiE,KAAAjE,EAAA,MAAAgE,IAAAhE,EAAA,MAAAkE,OAAAA,MAAAlE,EAAA;CAJD,IAAA,EAAAsE,SAAAC,WAAAC,cAAAC,UAAAC,OAAAC,aAAsEtH,QAAuB6G,GAI5F,GAACU;CAAA,AAAA5E,EAAA,QAAAsE,UAIuDM,MAAA5E,EAAA,OAAT4E,MAAA,EAAAN,QAAQ,GAACtE,EAAA,MAAAsE,SAAAtE,EAAA,MAAA4E;CAAzD,IAAA,EAAAC,QAAAC,SAAAC,YAAmCzH,aAAasH,GAAS,GAEzDI,eAAqB,CAAClE,aAAaA,WAASmE,UAAUC;CAAA,AAAAlF,EAAA,QAAAU,YAAAV,EAAA,QAAAI,MAEtB8E,YAAA;EAC9BxE,SAASzC,cAAakH,OAAQ,EAAA/E,GAAG,CAAC,CAAC;CAAC,GACrCJ,EAAA,MAAAU,UAAAV,EAAA,MAAAI,IAAAJ,EAAA,MAAAkF,OAAAA,MAAAlF,EAAA;CAFD,IAAAoF,cAAoBF,KAEFG;CAAA,AAAArF,EAAA,QAAAc,aAAAd,EAAA,QAAAU,YAEe2E,YAAA;EAC1BvE,WAASM,SAIdV,SACEzC,cAAaqH,wBAAyB;GAAAC,QAC5B,CAACzE,SAAS;GAAC0E,eACJ1E,WAASM,MAAWqE;EACrC,CAAC,CACH;CAAC,GACFzF,EAAA,MAAAc,WAAAd,EAAA,MAAAU,UAAAV,EAAA,MAAAqF,OAAAA,MAAArF,EAAA;CAXD,IAAA0F,eAAqBL,KAWIM;CAAA,AAAA3F,EAAA,QAAA4F,OAAAC,IAAA,2BAAA,KAEaF,OAAAG,WAAA;EACpC,IAAA,EAAAC,QAAAC,eAA6BF;EAC7B,AAAIC,UAAUC,eAAe,YAE3B7E,iBAAiB4E,MAAe;CACjC,GACF/F,EAAA,MAAA2F,OAAAA,MAAA3F,EAAA;CAND,IAAAiG,oBAA0BN,KAMpBO;CAYH3E,AAZGvB,EAAA,QAAAuB,cAAAkE,OAAAzF,EAAA,QAAAU,YAGJwF,OAAAC,YAAA;EAEEzF,SACEpC,YAAW8H,cAAe;GAAAjG,SACfoB,cAAYkE;GAAKY,MACpBF;EACR,CAAC,CACH;CAAC,GACFnG,EAAA,MAAAuB,cAAAkE,KAAAzF,EAAA,MAAAU,UAAAV,EAAA,MAAAkG,OAAAA,MAAAlG,EAAA,KACAuB,cAAYkE;CAVf,IAAAa,kBAAwBJ,KAWvBK;CAAA,AAAAvG,EAAA,QAAAc,aAAAd,EAAA,QAAA4B,mBAAA5B,EAAA,QAAAU,YAEsC6F,YAAA;EAChCzF,aAILJ,SAASxC,eAAcsI,eAAgB;GAAAjB,QAAS,CAACzE,SAAS;GAAC2F,UAAY7E;EAAe,CAAC,CAAC;CAAC,GAC1F5B,EAAA,MAAAc,WAAAd,EAAA,MAAA4B,iBAAA5B,EAAA,MAAAU,UAAAV,EAAA,MAAAuG,OAAAA,MAAAvG,EAAA;CAND,IAAA0G,qBAA2BH,KAMeI;CAAA,AAAA3G,EAAA,QAAAc,aAAAd,EAAA,QAAA4B,mBAAA5B,EAAA,QAAAU,YAEHiG,YAAA;EACjC,CAAC7F,aAAD,CAAec,mBAInBlB,SAAS3C,cAAa6I,iBAAkB;GAAArB,QAAS,CAACzE,SAAS;GAAC2F,UAAY;EAAI,CAAC,CAAC;CAAC,GAChFzG,EAAA,MAAAc,WAAAd,EAAA,MAAA4B,iBAAA5B,EAAA,MAAAU,UAAAV,EAAA,MAAA2G,OAAAA,MAAA3G,EAAA;CAND,IAAA6G,qBAA2BF,KAMeG;CAAA,IAAA9G,EAAA,QAAAuB,gBAAAvB,EAAA,QAAAuC,SAAA;EAAAwE,KAAA;GAIxC,IAAI,CAACxF,cAAY;IAAEuF,MAAO;IAAP,MAAAC;GAAY;GAC/B,IAAAC,cAAoBC,UACpBC,SAAe;IACb3F,aAAYqC;IACZrC,aAAYkC;IACZlC,aAAYmC;IAAY,GACpBnC,aAAY4F,UAAW,sBAAvB,CAA8C5F,aAAYa,UAAW,IAArE,CAAA;GAA2E;GAGjF,IAAI,CADiB8E,OAAMG,MAAMC,MAAON,YAAYM,CAAC,CAChDF,GAAY;IAAEN,MAAO;IAAP,MAAAC;GAAY;GAC/B,IAAI,CAACxE,WAAWA,QAAOU,WAAY,GAAC;IAAE6D,MAAO;IAAP,MAAAC;GAAW;GACjD,IAAAQ,gBAAsB,IAAIC,IAAIjF,QAAOkF,IAAKC,QAAW,CAAC;GACtDZ,MAAOI,OAAMG,MAAMM,QACZX,YAAYM,GAAC,IACXM,OAAMC,KAAMP,GAAW,CAAC,CAAAD,MAAMS,MAAO,CAACP,cAAaQ,IAAKD,CAAC,CAAC,IADrC,EAE7B;EAAC;EAAA9H,AAAAA,EAAA,MAAAuB,cAAAvB,EAAA,MAAAuC,SAAAvC,EAAA,MAAA8G;CAAA,OAAAA,MAAA9G,EAAA;CAhBJ,IAAAgI,qBAA2BlB,KAiBAmB;CAAA,AAAAjI,EAAA,QAAAO,UAAAP,EAAA,QAAAuB,gBAAAvB,EAAA,QAAAuC,WAEc0F,MAAA,YAAA;EACvC,IAAI,CAAC1G,cAAY;EAEjB,IAAA2G,cAAmBC,YAAA;GACjB,IAAI,OAAOhF,WAAU,aAAYA,WAAkBiF,MAAKC,QAASlF,OAAK,GAAC,OAASA;GAChF,IAAAmF,QAAYnF;GACZ,IAAI,CAACZ,WAAWA,QAAOU,WAAY,GAEK,OAAvB2E,OAAMC,KAAMvE,KAAG,CAAC,CAAAmF,KACxBD,CAAM,CAAAf,KAAKiB,QAAOpF,MAAIwE,IAAE,CAAC,CAAAa,KAAMC,QAAc,KAA7C;GAET,IAAAC,kBAAsB,IAAIrB,IAAIjF,QAAOkF,IAAKqB,QAAW,CAAC,GACtDC,UAAwC,CAAC;GACzC,KAAK,IAAA,CAAAC,KAAAC,QAAoBrB,OAAMsB,QAAS5F,KAAG,GACzC,AAAIiE,gBAAaQ,IAAKiB,GAAG,MAAGD,QAAQC,OAAOC;GAC5C,OACMF;EAAO;EAGhB,MAAMxI,OAAM4I,MACH5H,aAAYkE,GAAI,CAAC,CAAA2D,IACnB;GAAAxF,OACIsE,WAAW3G,aAAYqC,KAAM;GAACH,SAC5ByE,WAAW3G,aAAYkC,OAAQ;GAACC,aAC5BwE,WAAW3G,aAAYmC,WAAY;GAAC,GAC7CnC,aAAY4F,UAAW,uBAAvB,EAAA/E,YACU8F,WAAW3G,aAAYa,UAAW,EAChD;EACF,CAAC,CAAC,CAAAiH,OACM;CAAC,GACZrJ,EAAA,MAAAO,QAAAP,EAAA,MAAAuB,cAAAvB,EAAA,MAAAuC,SAAAvC,EAAA,MAAAiI,OAAAA,MAAAjI,EAAA;CA9BD,IAAAsJ,uBAA6BrB,KA8BMsB;CAuChCzI,AAvCgCd,EAAA,QAAAc,WAAAM,SAAApB,EAAA,QAAAU,YAIjC6I,OAAAC,aAAA;EACE,IAAI,CAAC1I,WAASM,OAAO;EAIrB,IAAAqI,oBAA0B3K,iBAAiB0K,QAAQ;EAQnD9I,AAJI8I,SAAQ9F,gBAAiB,OAC3B+F,kBAAiB/F,cAAkB,KAGrChD,SACE3C,cAAa2L,cAAe;GAAAtI,OACnBN,WAASM;GAAOoE,eACR1E,WAASM,MAAWqE;GAAA+D,UACzB;IAAA,GACLC;IAAiB5H,KAEf,EAAAC,OACI;KAAA,GACF2H,kBAAiB5H,IAAOC;KAAMf,MAE/B0I,kBAAiB5H,IAAOC,MAAMf,MAAU0G,IAACkC,QAI/B,KAJV;IAKJ,EACF;GACF;EACF,CAAC,CACH;CAAC,GACF3J,EAAA,MAAAc,WAAAM,OAAApB,EAAA,MAAAU,UAAAV,EAAA,MAAAuJ,OAAAA,MAAAvJ,EAAA,KACAc,WAASM;CApCZ,IAAAwI,WAA+CL,KAqC9CM;CAAA,AAAA7J,EAAA,QAAAc,WAAAM,SAAApB,EAAA,QAAAO,UAGSsJ,YAAA;EACR,IAAI,CAAC/I,WAASM,OAAO;EAKrB,IAAA0I,oBAA0BvJ,OAAMwJ,OACtBlN,IAAI,iBAAiB,EAAAuD,IAAKU,WAASM,MAAWqE,IAAA,CAAC,CAAC,CAAAuE,UAC7C/D,iBAAiB;EAAC,aAExB;GACL6D,mBAAiBG,YAAc;EAAC;CACjC,GACFjK,EAAA,MAAAc,WAAAM,OAAApB,EAAA,MAAAO,QAAAP,EAAA,MAAA6J,OAAAA,MAAA7J,EAAA;CAAG,IAAAkK,MAAApJ,WAASM,OAAO+I;CAbpBnN,AAaoBgD,EAAA,QAAAO,UAAAP,EAAA,QAAAkK,OAAjBC,MAAA;EAACD;EAAkB3J;EAAQ0F;CAAiB,GAACjG,EAAA,MAAAO,QAAAP,EAAA,MAAAkK,KAAAlK,EAAA,MAAAmK,OAAAA,MAAAnK,EAAA,KAbhDhD,UAAU6M,KAaPM,GAA6C;CAAC,IAAAC,KAAAC;CAGjDrN,AAHiDgD,EAAA,QAAAuE,aAAAvE,EAAA,QAAAK,kBAAAL,EAAA,QAAA2E,YAGvCyF,YAAA;EACR,IAAI/J,gBAAc;GAEhB,IAAAkK,eADsBhG,UAAU,gBAAgB,KAA3B,CAAA,EAAA,CACWiG,OAAQ,CAACnK,cAAc,CAAC;GACxDsE,SAAS,kBAAkB4F,aAAa,EAAAE,aAAc,GAAI,CAAC;EAAC;CAC7D,GACAJ,MAAA;EAAC9F;EAAWlE;EAAgBsE;CAAQ,GAAC3E,EAAA,MAAAuE,WAAAvE,EAAA,MAAAK,gBAAAL,EAAA,MAAA2E,UAAA3E,EAAA,MAAAoK,KAAApK,EAAA,MAAAqK,QAAAD,MAAApK,EAAA,KAAAqK,MAAArK,EAAA,MANxChD,UAAUoN,KAMPC,GAAqC;CAAC,IAAAK,KAAAC;CAGzC3N,AAHyCgD,EAAA,QAAAuE,aAAAvE,EAAA,QAAAM,qBAAAN,EAAA,QAAA2E,YAG/B+F,YAAA;EACR,IAAIpK,mBAAiB;GAEnB,IAAAuK,iBADsBtG,UAAU,gBAAgB,KAA3B,CAAA,EAAA,CACWuG,QAAQC,UAC/B,CAACzK,kBAAiB0K,SAAUC,MAAGC,KAAM,CAC7C;GAEDvG,SAAS,kBAAkB4F,eAAa,EAAAE,aAAc,GAAI,CAAC;EAAC;CAC7D,GACAE,MAAA;EAACpG;EAAWjE;EAAmBqE;CAAQ,GAAC3E,EAAA,MAAAuE,WAAAvE,EAAA,MAAAM,mBAAAN,EAAA,MAAA2E,UAAA3E,EAAA,MAAA0K,KAAA1K,EAAA,MAAA2K,QAAAD,MAAA1K,EAAA,KAAA2K,MAAA3K,EAAA,MAT3ChD,UAAU0N,KASPC,GAAwC;CAAC,IAAAQ;CAAA,AAAAnL,EAAA,QAAAc,WAAAM,SAAApB,EAAA,QAAA+D,yBAAA/D,EAAA,QAAA0E,SAGlCyG,YAAA;EAIRnK,AAHIA,iBAAgBoK,YAAatK,WAASM,MAAkBiK,cAC1D3G,MAAMX,sBAAsBjD,WAASM,KAAO,CAAC,GAE/CJ,iBAAgBoK,UAAWtK,WAASM,MAAkBiK;CAA9B,GACzBrL,EAAA,MAAAc,WAAAM,OAAApB,EAAA,MAAA+D,uBAAA/D,EAAA,MAAA0E,OAAA1E,EAAA,MAAAmL,OAAAA,MAAAnL,EAAA;CAAG,IAAAsL,MAAAxK,WAASM,OAAOmK;CALpBvO,AAKoBgD,EAAA,QAAA+D,yBAAA/D,EAAA,QAAA0E,SAAA1E,EAAA,QAAAsL,OAAjBC,MAAA;EAACD;EAAkBvH;EAAuBW;CAAK,GAAC1E,EAAA,MAAA+D,uBAAA/D,EAAA,MAAA0E,OAAA1E,EAAA,MAAAsL,KAAAtL,EAAA,MAAAuL,OAAAA,MAAAvL,EAAA,KALnDhD,UAAUmO,KAKPI,GAAgD;CAAC,IAAAC;CAAA,AAAAxL,EAAA,QAAAsJ,wBAAAtJ,EAAA,QAAAgI,sBAK7CwD,MAAAxD,sBACC,oBAAC,MAAD;EAAe,SAAA;EAAW,QAAA;EAAW,QAAA;EAAQ,MAAA;EAC3C,UAAA,qBAAC,MAAD;GAAY,OAAA;GAAiB,SAAA;GAAqB,KAAA;GAAlD,UAAA,CACE,oBAAC,MAAD;IAAY,MAAA;IAAG,UAAA;GAAV,CAAA,GAIL,oBAAC,QAAD;IACY,UAAA;IACL,MAAA;IACIsB,SAAAA;IACJ,MAAA;IACA,MAAA;GAAS,CAAA,CAVb;;CADF,CAAA,GAeNtJ,EAAA,MAAAsJ,sBAAAtJ,EAAA,MAAAgI,oBAAAhI,EAAA,MAAAwL,OAAAA,MAAAxL,EAAA;CAAA,IAAAyL;CAAA,AAAAzL,EAAA,QAAAgF,gBAAAhF,EAAA,QAAA0F,gBAGC+F,MAAA,oBAAC,QAAD;EACYzG,UAAAA;EACA,UAAA;EACL,MAAA;EACIU,SAAAA;EACJ,MAAA;EACA,MAAA;CAAU,CAAA,GACf1F,EAAA,MAAAgF,cAAAhF,EAAA,MAAA0F,cAAA1F,EAAA,MAAAyL,OAAAA,MAAAzL,EAAA;CAIU,IAAA0L,MAAA1G,gBAAA,CAAiBF,WAAjB,CAA6BC,WAA7BiD,oBAEG2D,MAAApK,cAAY8J,YAAYO;CAAA,AAAA5L,EAAA,QAAAwE,gBAAAxE,EAAA,QAAA4J,YAC5BgC,MAAApH,aAAaoF,QAAQ,GAAC5J,EAAA,MAAAwE,cAAAxE,EAAA,MAAA4J,UAAA5J,EAAA,MAAA4L,OAAAA,MAAA5L,EAAA;CAAA,IAAA6L;CAAA,AAAA7L,EAAA,QAAA+E,WAAA/E,EAAA,QAAA0L,OAAA1L,EAAA,QAAA2L,OAAA3L,EAAA,QAAA4L,OAJjCC,MAAA,oBAAC,kBAAD;EACY,UAAAH;EACD3G;EACI,aAAA4G;EACJ,SAAAC;CAAsB,CAAA,GAC/B5L,EAAA,MAAA+E,SAAA/E,EAAA,MAAA0L,KAAA1L,EAAA,MAAA2L,KAAA3L,EAAA,MAAA4L,KAAA5L,EAAA,MAAA6L,OAAAA,MAAA7L,EAAA;CAAA,IAAA8L;CAAA,AAAA9L,EAAA,QAAAyL,OAAAzL,EAAA,QAAA6L,OAjBJC,MAAA,qBAAC,MAAD;EAAc,SAAA;EAAd,UAAA,CAEEL,KAUAI,GAZG;KAkBE7L,EAAA,MAAAyL,KAAAzL,EAAA,MAAA6L,KAAA7L,EAAA,MAAA8L,OAAAA,MAAA9L,EAAA;CAAA,IAAA+L;CAAA,AAAA/L,EAAA,QAAAwL,OAAAxL,EAAA,QAAA8L,OArCXC,MAAA,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,qBAAC,OAAD;GAAc,OAAA;GAAd,UAAA,CACGP,KAiBDM,GAlBI;;CADJ,CAAA,GAuCE9L,EAAA,MAAAwL,KAAAxL,EAAA,MAAA8L,KAAA9L,EAAA,MAAA+L,OAAAA,MAAA/L,EAAA;CAxCR,IAAAgM,SACED;CA0CF,IAAI,CAACxK,cAAY,OACR;CAcQ,IAAA0K,MAAA,CAAC,CAACrK,mBAAF,CAAsBO,mBAAiB+J;CAAA,AAAAlM,EAAA,QAAAyB,iBAAAzB,EAAA,QAAA2B,mBAAA3B,EAAA,QAAAsE,WAAAtE,EAAA,QAAAoC,cAAApC,EAAA,QAAAuB,gBAAAvB,EAAA,SAAAmC,qBAAAnC,EAAA,SAAA6E,UAAA7E,EAAA,SAAAgF,gBAAAhF,EAAA,SAAA0G,sBAAA1G,EAAA,SAAAsG,mBAAAtG,EAAA,SAAA6G,sBAAA7G,EAAA,SAAAuC,WAAAvC,EAAA,SAAAyE,YAAAzE,EAAA,SAAA2E,YAAA3E,EAAA,SAAAiM,OAXnCC,MAAA;EAAA5H;EAAAO;EAAAG;EAAAP;EAAAE;EAAAhD;EAAAF;EAAA6E;EAAA/E;EAAA4K,YAUPhK;EAAiBiK,eACdH;EAAuCI,gBACtC3F;EAAkB4F,gBAClBzF;EAAkBzE;EAAAG;CAGpC,GAACvC,EAAA,MAAAyB,eAAAzB,EAAA,MAAA2B,iBAAA3B,EAAA,MAAAsE,SAAAtE,EAAA,MAAAoC,YAAApC,EAAA,MAAAuB,cAAAvB,EAAA,OAAAmC,mBAAAnC,EAAA,OAAA6E,QAAA7E,EAAA,OAAAgF,cAAAhF,EAAA,OAAA0G,oBAAA1G,EAAA,OAAAsG,iBAAAtG,EAAA,OAAA6G,oBAAA7G,EAAA,OAAAuC,SAAAvC,EAAA,OAAAyE,UAAAzE,EAAA,OAAA2E,UAAA3E,EAAA,OAAAiM,KAAAjM,EAAA,OAAAkM,OAAAA,MAAAlM,EAAA;CAhBD,IAAAuM,eAAqBL,KAgBpBM;CAAA,AAAAxM,EAAA,SAAA4F,OAAAC,IAAA,2BAAA,KASoB2G,MAAA;EAAC;EAAkB;EAAkB;CAAa,GAACxM,EAAA,OAAAwM,OAAAA,MAAAxM,EAAA;CAAA,IAAAyM;CAAA,AAAAzM,EAAA,SAAA4F,OAAAC,IAAA,2BAAA,KACzC4G,MAAA;EAAC;EAAG;EAAG;CAAC,GAACzM,EAAA,OAAAyM,OAAAA,MAAAzM,EAAA;CAAA,IAAA0M;CAAA,AAAA1M,EAAA,SAAA0C,iBAAA1C,EAAA,SAAAc,aAAAd,EAAA,SAAAuM,gBAAAvM,EAAA,SAAAgF,gBAAAhF,EAAA,SAAAwE,gBAAAxE,EAAA,SAAA4J,YAAA5J,EAAA,SAAAqB,cAE7BqL,OAAAC,QAAA;EAAC,IAAA,EAAAC,WAAAC,uBAAAF,KACAG,2BAAiClO,mBAAmBiO,kBAAkB;EAAC,OAErE,qBAAA,UAAA,EAAA,UAAA,CAEE,qBAAC,SAAD;GAAgB,OAAA;GAAhB,UAAA,CACE,oBAAC,KAAD;IACgB,iBAAA;IACJ7H,UAAAA;IACP,IAAA;IACG,OAAA;IACG,eAAM1D,cAAc,SAAS;IAC5B,UAAAD,eAAe;IACnB,MAAA;GAAC,CAAA,GAET,oBAAC,KAAD;IACgB,iBAAA;IACJ2D,UAAAA;IACP,IAAA;IACI,OAAA,aACL,CAAC4H,aAAaxE,MAAKC,QAASyE,wBAAwB,IAApD,KACSA,yBAAwB7J,OAAO,KADxC;IAIO,eAAM3B,cAAc,YAAY;IAC/B,UAAAD,eAAe;IACnB,MAAA;GAAC,CAAA,CArBH;EA0BR,CAAA,GAAA,qBAAC,KAAD;GAAQ,IAAA;GAAkB,WAAA;GAAa,UAAAmD,aAAaoF,QAAQ;GAA5D,UAAA;IAEG,CAAC9I,aACA,oBAAC,MAAD;KAAoB,cAAA;KAAY,SAAA;KAAW,QAAA;KAAW,QAAA;KAAQ,MAAA;KAC5D,UAAA,oBAAC,MAAD;MAAY,MAAA;MAAG,UAAA;KAAV,CAAA;IADF,CAAA;IAMP,oBAAA,UAAA;KAAe,OAAA,EAAAiM,SAAU,OAAM;KAAa,UAAA;KAAS,MAAA;IAAQ,CAAA;IAG7D,oBAAC,UAAD;KACkB,mBAAA;KACR,QAAA1L,eAAe;KACpB,IAAA;KAEFqB,UAAAA,gBACC,oBAAC,eAAD;MAAc,GACR6J;MACkB7M;KAAoB,CAAA,IAG5C,oBAAC,SAAD,EAAQ,GAAK6M,aAAY,CAAA;IAXpB,CAAA;IAgBT,oBAAC,UAAD;KACkB,mBAAA;KACR,QAAAlL,eAAe;KACpB,IAAA;KAEH,UAAA,oBAAC,KAAD;MAAgB,WAAA;MACbP,UAAAA,WAASM,SACR,oBAAC,cAAD;OACa0L,WAAAA;OACAF;MAAS,CAAA;KAJtB,CAAA;IALG,CAAA;GA5BP;EA0CE,CAAA,CAAA,EAAA,CAAA;CACL,GAEN5M,EAAA,OAAA0C,eAAA1C,EAAA,OAAAc,WAAAd,EAAA,OAAAuM,cAAAvM,EAAA,OAAAgF,cAAAhF,EAAA,OAAAwE,cAAAxE,EAAA,OAAA4J,UAAA5J,EAAA,OAAAqB,YAAArB,EAAA,OAAA0M,OAAAA,MAAA1M,EAAA;CAAA,IAAA2M;CAAA,AAAA3M,EAAA,SAAAuB,aAAAkE,OAAAzF,EAAA,SAAAS,iBAAAT,EAAA,SAAA0M,OA9ELC,MAAA,oBAAC,KAAD;EAAW,MAAA;EAAc,WAAAF;EAAoB,SAAA;EAC3C,UAAA,oBAAC,wBAAD;GAAuChM;GAAmB,IAAAc,aAAYkE;GACnEiH,UAAAA;EADoB,CAAA;CADrB,CAAA,GAgFE1M,EAAA,OAAAuB,aAAAkE,KAAAzF,EAAA,OAAAS,eAAAT,EAAA,OAAA0M,KAAA1M,EAAA,OAAA2M,OAAAA,MAAA3M,EAAA;CAAA,IAAAgN;CAAA,AAAAhN,EAAA,SAAA4F,OAAAC,IAAA,2BAAA,KAGQmH,MAAA,EAAAC,aAAc,IAAG,GAACjN,EAAA,OAAAgN,OAAAA,MAAAhN,EAAA;CAAA,IAAAkN;CAAA,AAAAlN,EAAA,SAAAuB,eAE2C2L,MAAAlN,EAAA,QAAtEkN,MAAAnO,YAAYwC,YAAyD,KAAxC,oBAAC,kBAAD,EAAyBA,OAAAA,aAAY,CAAA,GAAIvB,EAAA,OAAAuB,cAAAvB,EAAA,OAAAkN;CAAA,IAAAC;CAAA,AAAAnN,EAAA,SAAAuB,gBAAAvB,EAAA,SAAAQ,UAGtE2M,MAAAnO,aAAauC,YAOd,KANE,oBAAC,SAAD;EACa,WAAA;EACFf,SAAAA;EACU,mBAAA,CAACe,cAAYuB,UAAoBsK;EAC/C,KAAAvO,YAAY0C,cAAc;GAAA8L,QAAS;GAAGC,OAAS;EAAG,CAAC;CAAC,CAAA,GAE5DtN,EAAA,OAAAuB,cAAAvB,EAAA,OAAAQ,QAAAR,EAAA,OAAAmN,OAAAA,MAAAnN,EAAA;CAAA,IAAAuN;CAAA,AAAAvN,EAAA,SAAAkN,OAAAlN,EAAA,SAAAmN,OAZHI,MAAA,qBAAC,KAAD;EAAY,OAAAP;EAAZ,UAAA,CAEGE,KAGAC,GALC;KAaEnN,EAAA,OAAAkN,KAAAlN,EAAA,OAAAmN,KAAAnN,EAAA,OAAAuN,OAAAA,MAAAvN,EAAA;CAAA,IAAAwN;CAAA,AAAAxN,EAAA,SAAAc,aAAAd,EAAA,SAAAuB,gBAGLiM,MAAAjM,gBACC,oBAAC,KAAD;EAAgB,WAAA;EACd,UAAA,oBAAC,eAAD;GAAsBA,OAAAA;GAAoBT,MAAAA;EAAS,CAAA;CADjD,CAAA,GAGLd,EAAA,OAAAc,WAAAd,EAAA,OAAAuB,cAAAvB,EAAA,OAAAwN,OAAAA,MAAAxN,EAAA;CAAA,IAAAyN;CAAA,AAAAzN,EAAA,SAAAuN,OAAAvN,EAAA,SAAAwN,OArBHC,MAAA,qBAAC,KAAD;EAAW,MAAA;EAAY,SAAA;EAAvB,UAAA,CACEF,KAgBCC,GAjBC;KAsBExN,EAAA,OAAAuN,KAAAvN,EAAA,OAAAwN,KAAAxN,EAAA,OAAAyN,OAAAA,MAAAzN,EAAA;CAAA,IAAA0N;CAAA,AAAA1N,EAAA,SAAA2M,OAAA3M,EAAA,SAAAyN,OAzGRC,MAAA,qBAAC,MAAD;EAAiB,WAAAlB;EAAjB,UAAA,CACEG,KAkFAc,GAnFG;KA0GEzN,EAAA,OAAA2M,KAAA3M,EAAA,OAAAyN,KAAAzN,EAAA,OAAA0N,OAAAA,MAAA1N,EAAA;CAAA,IAAA2N;CAGA,OAHA3N,EAAA,SAAAH,YAAAG,EAAA,SAAAgM,UAAAhM,EAAA,SAAAoF,eAAApF,EAAA,SAAAI,MAAAJ,EAAA,SAAA0N,OAhHTC,MAAA,qBAAC,UAAD;EAAQ,SAAA;EAAgB3B;EAAe,QAAA;EAAoB5L;EAAagF,SAAAA;EAAoB,OAAA;EAA5F,UAAA,CAMEsI,KA4GC7N,QAlHI;KAmHEG,EAAA,OAAAH,UAAAG,EAAA,OAAAgM,QAAAhM,EAAA,OAAAoF,aAAApF,EAAA,OAAAI,IAAAJ,EAAA,OAAA0N,KAAA1N,EAAA,OAAA2N,OAAAA,MAAA3N,EAAA,MAnHT2N;AAmHS;AAjeW,SAAAC,SAAAC,GAAA;CAAA,OAiFYA;AAAC;AAjFb,SAAA/J,UAAAgK,SAAA5N,IAAA;CA6EoB,IAAA6N,aAAA7N,OAAAe,KAAAA,IAAA,KAAAf;CAKnC,OAJG,OAAOiD,WAAU,WAAiBA,UAClC,OAAOA,WAAU,YAAYA,WAChByE,OAAMoG,OAAQ7K,OACtB6K,CAAM,CAAArF,KAAMiF,QAAoB,KAElCvK;AAAQ;AAnFC,SAAA4D,SAAAgH,KAAA;CAAA,OAsKgB,OAAOJ,OAAM,cAAYA,OAAzB,CAAwCzF,MAAKC,QAASwF,GAAC;AAAC;AAtKxE,SAAAnG,SAAAwG,GAAA;CAAA,OAgL6BA,EAAC9N;AAAG;AAhLjC,SAAAwI,SAAAuF,KAAA;CAAA,OAgM6BN;AAAC;AAhM9B,SAAA/E,SAAAsF,KAAA;CAAA,OAkM+BF,IAAC9N;AAAG;AAlMnC,SAAAuJ,SAAAsB,KAAA;CAAA,OAiP8D;EAAAjJ,MAC5DiJ,IAAGC;EAAM/D,OACR;EAAWkH,OACX;CACT;AAAC;ACxRnB,MAAaO,sBAAsBN,eACjC;EACGO,UAA4BA,MAAMC,OAAOC;EACzCF,UAA4BA,MAAMG,QAAQD;CAC3CL;AAA2B,IAE5BO,UAAUC,WAAWC,mBAAmB;CACvC,IAAMC,aAAaH,SAASI,KAAKC,QAAuB;EAACA;EAAIC,MAAM;CAAO,EAAE,GACtEC,cAAcL,eAAeE,KAChCI,YAA4B;EAC3BH,IAAI,UAAUG,OAAOH;EACrBI,UAAUD,OAAOH;EACjBK,MAAMF,OAAOE;EACbC,MAAMH,OAAOG;EACbC,YAAYJ,OAAOI;EACnBN,MAAM;CACR,EACF,GACMO,cAAcZ,UAAUG,KAAKC,QAAwB;EAACA;EAAIC,MAAM;CAAQ,EAAE;CAMhF,OAAOQ;EAJL,GAAGP;EACH,GAAGM;EACH,GAAGV;CAEEW;AACT,CACF,GC7BMM,eAAcC,QAAAC,YAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAClBC,aAAmBN,OAAO,EAAK,GAACO;CAAA,AAAAH,EAAA,OAAAF,UAAAE,EAAA,OAAAD,WAI9BI,MAAAC,MAAA;EACE,AAAIZ,SAASM,QAAQM,CAAC,MACpBF,WAAUG,UAAW,IACjBN,WACFA,QAAQ;CAEX,GACFC,EAAA,KAAAF,QAAAE,EAAA,KAAAD,SAAAC,EAAA,KAAAG,MAAAA,KAAAH,EAAA;CARH,IAAAM,cAAoBH,IAUnBI;CAAA,AAAAP,EAAA,OAAAQ,OAAAC,IAAA,2BAAA,KAG6BF,WAAA;EAC5BL,WAAUG,UAAW;CAAH,GACnBL,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CAFD,IAAAU,YAAkBH,IAEZI,IAAAC;CAWsB,OAXtBZ,EAAA,OAAAM,eAWqBK,KAAAX,EAAA,IAAAY,KAAAZ,EAAA,OARjBW,YACRE,OAAMC,iBAAkB,WAAWR,WAAW,GAC9CO,OAAMC,iBAAkB,SAASJ,SAAS,SAEnC;EAELG,AADAA,OAAME,oBAAqB,WAAWT,WAAW,GACjDO,OAAME,oBAAqB,SAASL,SAAS;CAAC,IAE/CE,KAAA,CAACN,aAAaI,SAAS,GAACV,EAAA,KAAAM,aAAAN,EAAA,KAAAW,IAAAX,EAAA,KAAAY,KAR3BjB,UAAUgB,IAQPC,EAAwB,GAEpBV;AAAU,GCGboD,gBAAcpB,OAAOZ,IAAI,CAAC,CAAA,WAAA;;;qFAQ1BiC,gBAAgBrB,uBAAOZ,IAAI,CAAC,CAAA,WAAA;;;AAA0D,CAAA,CAAA,EAAA,EAC1FkC,SACAC,OACAC,gBAEOvB,GAAG,2DAGUuB,YAAY,SAAS,OAAM,6EAO3CF,UAAU,aAAaC,MAAME,OAAOC,MAAMC,KAAKC,OAAM,eAAgB,oBAAmB,GAIxF,CAACJ,aACDvB,GAAG,gGASR,GAEK4B,2BAAyB7B,uBAAoDZ,IAAI,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EACxF0C,cAEO7B,GAAG,yBAAA,GAEc,qFAIJS,eAAeoB,SAAS,IAAI,EAAC,IAIlD,GAEKC,2BAA2B/B,uBAAOhB,iBAAiB,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EAACuC,aACpD,EACLG,OAAOH,MAAME,OAAOC,MAAMC,KAAKK,IACjC,EACD,GAEKC,aAAYC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAChB,EAAAnB,IAAAC,UAAAC,WAA+Be,OAE/BG,SAAetC,oBAAoB,GACnCuC,QAAc5C,SAAS,GAGvB6C,eAAyCnC,YAAY,OAAO,GAG5DoC,WAAiB1C,YAAY,GAC7B2C,aAAmBpC,iBAAiBqC,QAAkC,GACtEC,eAAqBtC,iBAAiBG,kBAAkB,GAACoC;CAAA,AAAAT,EAAA,OAAAlB,KACU2B,KAAAT,EAAA,MAArCS,MAAAC,YAAWtC,gBAAgBuC,SAAO7B,EAAE,GAACkB,EAAA,KAAAlB,IAAAkB,EAAA,KAAAS;CAAnE,IAAAG,OAAa1C,iBAAiBuC,EAAqC,GAACI;CAAA,AAAAb,EAAA,OAAAhB,SAQnE6B,KAAAb,EAAA,MAN6Ca,MAAAC,YAAA;EAC5C,IAAI9B,WAAW,iBAAe;EAG9B,IAAA+B,SAAeJ,QAAKI,OAAOC,MAAMC,KAAMC,SAAmC;EAAC,OACpEH,QAAMI,SAAW,oBAAoBJ,OAAMK,UAA3CC,KAAAA;CAA+D,GACvErB,EAAA,KAAAhB,QAAAgB,EAAA,KAAAa;CAND,IAAAS,uBAA6BpD,iBAAiB2C,EAM7C,GAEDU,QAAcX,MAAIW,OAClBC,QAAcZ,MAAIY,OAClBC,WAAiBb,MAAIW,OAAiBG,UAAUD,UAChDE,SAAef,MAAIe,QACnBC,WAAiBhB,MAAIgB,UAGrBC,mBACEP,yBACCtC,WAAW,mBAAmBwB,aAAYsB,WAAY,IACnDtB,aAAY,EAAU,EAAAe,MAAIQ,MAD7BV,KAAAA,IAEaW;CAAA,AAAAhC,EAAA,OAAA6B,mBAGyDG,KAAAhC,EAAA,MADjCgC,MAAAC,YACtCJ,mBAAmBzD,gBAAgBuC,SAAOkB,gBAA4B,IAAtER,KAAAA,GAAuErB,EAAA,KAAA6B,kBAAA7B,EAAA,KAAAgC;CADzE,IAAAE,iBAAuBhE,iBAAiB8D,EAExC,GAEA,EAAAG,eAAAC,aAAkCpE,sBAAsB;CAGxD,IAAI,CAACuD,OAAK,OACD;CACR,IAAAc;CAAA,AAAArC,EAAA,OAAAuB,SAAAvB,EAAA,OAAAkC,gBAAAN,YAAA5B,EAAA,OAAA6B,oBAAA7B,EAAA,OAAAK,YAAAL,EAAA,QAAAG,SAE0BkC,WAAA;EACrB,CAACR,oBAAD,CAAsBnD,aAAa6C,KAAK,KAAKW,gBAAcN,aAI/DvB,SAASlC,cAAamE,sBAAuB;GAAAf;GAAAzC,IAAY+C;EAAgB,CAAC,CAAC,GAC3E1B,MAAKoC,KAAM;GAAAC,QACD;GAAMC,OAEZ;EACJ,CAAC,GACDpC,SAAS/B,cAAaoE,MAAO,CAAC;CAAC,GAChC1C,EAAA,KAAAuB,OAAAvB,EAAA,KAAAkC,gBAAAN,UAAA5B,EAAA,KAAA6B,kBAAA7B,EAAA,KAAAK,UAAAL,EAAA,MAAAG,OAAAH,EAAA,MAAAqC,MAAAA,KAAArC,EAAA;CAZD,IAAA2C,qBAA2BN,IAY1BO;CAAA,AAAA5C,EAAA,QAAAuB,MAAAQ,OAAA/B,EAAA,QAAAK,YAAAL,EAAA,QAAA2C,sBAAA3C,EAAA,QAAAmC,iBAAAnC,EAAA,QAAAM,cAAAN,EAAA,QAAAoC,YAAApC,EAAA,QAAA2B,UAAA3B,EAAA,QAAAjB,YAAAiB,EAAA,QAAAI,gBAAAJ,EAAA,QAAAhB,UAGwB4D,MAAAC,MAAA;EAGvB,IAFAA,EAACC,gBAAiB,GAEd9D,WAAW,iBAAe;GAC5B2D,mBAAmB;GAAC;EAAA;EAIlB5D,aAIAqD,YAAA,CAAaD,gBACfC,SAAS,CACP;GAAAW,MACQ;GAAiBC,OAChBzB,MAAKQ;EACd,CAAC,CACF,IACQK,YAAAD,gBACL/B,aAAY6C,WAAZ,CAAyBtB,SAC3BtB,SAASlC,cAAa+E,UAAW;GAAAC,SAAU7C,cAAciB,MAAKQ;GAAIqB,OAAS7B,MAAKQ;EAAI,CAAC,CAAC,IAEtF1B,SAASlC,cAAakF,KAAM;GAAAjC,SAAUG,MAAKQ;GAAIJ,QAAU,CAACA;EAAM,CAAC,CAAC,IAE3DvB,aAAY6C,UAEnB5C,SADEsB,SACOxD,cAAakF,KAAM;GAAAjC,SAAUG,MAAKQ;GAAIJ,QAAU,CAACA;EAAM,CAAC,IAExDxD,cAAa+E,UAAW;GAAAC,SAAU7C,cAAciB,MAAKQ;GAAIqB,OAAS7B,MAAKQ;EAAI,CAAC,CAAC,IAGxF1B,SAAS/B,cAAagF,cAAe,EAAAlC,SAAUG,MAAKQ,IAAI,CAAC,CAAC;CAC3D,GACF/B,EAAA,MAAAuB,MAAAQ,KAAA/B,EAAA,MAAAK,UAAAL,EAAA,MAAA2C,oBAAA3C,EAAA,MAAAmC,eAAAnC,EAAA,MAAAM,YAAAN,EAAA,MAAAoC,UAAApC,EAAA,MAAA2B,QAAA3B,EAAA,MAAAjB,UAAAiB,EAAA,MAAAI,cAAAJ,EAAA,MAAAhB,QAAAgB,EAAA,MAAA4C,MAAAA,KAAA5C,EAAA;CAlCD,IAAAuD,mBAAyBX,IAkCxBY;CAAA,AAAAxD,EAAA,QAAAuB,MAAAQ,OAAA/B,EAAA,QAAAK,YAAAL,EAAA,QAAA2C,sBAAA3C,EAAA,QAAAmC,iBAAAnC,EAAA,QAAAM,cAAAN,EAAA,QAAAoC,YAAApC,EAAA,QAAA2B,UAAA3B,EAAA,QAAAjB,YAAAiB,EAAA,QAAAI,gBAAAJ,EAAA,QAAAhB,UAEgCwE,MAAAC,QAAA;EAG/B,IAFAZ,IAACC,gBAAiB,GAEd9D,WAAW,iBAAe;GAC5B2D,mBAAmB;GAAC;EAAA;EAIlB5D,aAIAqD,YAAA,CAAaD,gBACf9B,SAAS/B,cAAagF,cAAe,EAAAlC,SAAUG,MAAKQ,IAAI,CAAC,CAAC,IACjD3B,aAAY6C,WAAZ,CAAyBtB,SAClCtB,SAASlC,cAAa+E,UAAW;GAAAC,SAAU7C,cAAciB,MAAKQ;GAAIqB,OAAS7B,MAAKQ;EAAI,CAAC,CAAC,IAEtF1B,SAASlC,cAAakF,KAAM;GAAAjC,SAAUG,MAAKQ;GAAIJ,QAAU,CAACA;EAAM,CAAC,CAAC;CACnE,GACF3B,EAAA,MAAAuB,MAAAQ,KAAA/B,EAAA,MAAAK,UAAAL,EAAA,MAAA2C,oBAAA3C,EAAA,MAAAmC,eAAAnC,EAAA,MAAAM,YAAAN,EAAA,MAAAoC,UAAApC,EAAA,MAAA2B,QAAA3B,EAAA,MAAAjB,UAAAiB,EAAA,MAAAI,cAAAJ,EAAA,MAAAhB,QAAAgB,EAAA,MAAAwD,MAAAA,KAAAxD,EAAA;CAnBD,IAAA0D,2BAAiCF,IAqBjCG,mBAAyB/B,WAAA,KAAA,GACzBgC,iBAAuB7E,YAAA6C,WAAA,MAAA,GASLiC,KAAA9E,WAAA,YAAA,WAAgC+E;CAAA,AAAA9D,EAAA,QAAA6D,KAEzCC,KAAA9D,EAAA,OAHM8D,KAAA;EAAAC,QACGF;EAAgCG,UAC9B;CACZ,GAAChE,EAAA,MAAA6D,IAAA7D,EAAA,MAAA8D;CAGc,IAAAG,KAAA,oBAAoB1C,MAAKQ,OAAMmC;CAAA,AAAAlE,EAAA,QAAA4D,iBAEIM,KAAAlE,EAAA,OAAzCkE,KAAA;EAAAC,QAAS;EAAMC,SAAWR;CAAc,GAAC5D,EAAA,MAAA4D,gBAAA5D,EAAA,MAAAkE;CAAA,IAAAG;CAAA,AAAArE,EAAA,QAAAuB,QAG4B8C,MAAArE,EAAA,OAA3EqE,MAAA5F,YAAY8C,KAA8D,KAApD,oBAAC,YAAD;EAAqB,WAAAA,MAAK+C;EAAkB,OAAA;CAAM,CAAA,GAAGtE,EAAA,MAAAuB,OAAAvB,EAAA,MAAAqE;CAAA,IAAAE;CAAA,AAAAvE,EAAA,QAAAuB,SAAAvB,EAAA,QAAAyB,YAAAzB,EAAA,QAAAE,UAG3EqE,MAAA7F,aAAa6C,KAWd,KAVE,oBAAC,SAAD;EACa,WAAA;EACFrB,SAAAA;EACU,mBAAA,CAACuB;EACf,KAAAjD,YAAY+C,OAAO;GAAA4C,QAAS;GAAGK,OAAS;EAAG,CAAC;EAC1C,OAAA;GAAAC,WACM;GAAKC,YACJ;EACd;CAAC,CAAA,GAEJ1E,EAAA,MAAAuB,OAAAvB,EAAA,MAAAyB,UAAAzB,EAAA,MAAAE,QAAAF,EAAA,MAAAuE,OAAAA,MAAAvE,EAAA;CAAA,IAAA2E;CAAA,AAAA3E,EAAA,QAAAuD,oBAAAvD,EAAA,QAAAqE,OAAArE,EAAA,QAAAuE,OAAAvE,EAAA,QAAAiE,MAAAjE,EAAA,QAAAkE,MApBHS,MAAA,qBAAA,OAAA;EACe,eAAAV;EACJV,SAAAA;EACF,OAAAW;EAHT,UAAA,CAMGG,KAGAE,GAYG;KAAAvE,EAAA,MAAAuD,kBAAAvD,EAAA,MAAAqE,KAAArE,EAAA,MAAAuE,KAAAvE,EAAA,MAAAiE,IAAAjE,EAAA,MAAAkE,IAAAlE,EAAA,MAAA2E,OAAAA,MAAA3E,EAAA;CAAA,IAAA4E;CAAA,AAAA5E,EAAA,QAAA2D,oBAAA3D,EAAA,QAAAjB,YAAAiB,EAAA,QAAA4B,YAGLgD,MAAA7F,YAAA,CAAa6C,YACZ,oBAAC,MAAD;EACQ,OAAA;EACE,SAAA;EACD,OAAA;GAAAuC,QACG;GAAMU,MACR;GAACT,SACET;GAAgBK,UACf;GAAUc,KACf;GAACN,OACC;EACT;EAEA,UAAA,oBAAC,MAAD;GAAY,MAAA;GACV,UAAA,oBAAC,qBAAD,CAAoB,CAAA;EADjB,CAAA;CAZF,CAAA,GAgBNxE,EAAA,MAAA2D,kBAAA3D,EAAA,MAAAjB,UAAAiB,EAAA,MAAA4B,UAAA5B,EAAA,MAAA4E,OAAAA,MAAA5E,EAAA;CAAA,IAAA+E;CAAA,AAAA/E,EAAA,QAAA4B,WAiBAmD,MAAA/E,EAAA,OAdA+E,MAAAnD,YACC,oBAAC,MAAD;EACQ,OAAA;EACE,SAAA;EACD,OAAA;GAAAuC,QACG;GAAMU,MACR;GAACb,UACG;GAAUc,KACf;GAACN,OACC;EACT;EAEA,UAAA,oBAAC,SAAD,CAAQ,CAAA;CAXL,CAAA,GAaNxE,EAAA,MAAA4B,UAAA5B,EAAA,MAAA+E;CAAA,IAAAC;CAAA,AAAAhF,EAAA,QAAA2E,OAAA3E,EAAA,QAAA4E,OAAA5E,EAAA,QAAA+E,OAAA/E,EAAA,QAAA8D,MAjEHkB,MAAA,qBAAC,KAAD;EACQ,MAAA;EACC,OAAAlB;EAFT,UAAA;GAOEa;GAwBCC;GAoBAG;EAnDC;KAkEE/E,EAAA,MAAA2E,KAAA3E,EAAA,MAAA4E,KAAA5E,EAAA,MAAA+E,KAAA/E,EAAA,MAAA8D,IAAA9D,EAAA,MAAAgF,OAAAA,MAAAhF,EAAA;CAAA,IAAAiF;CAAA,AAAAjF,EAAA,QAAA2D,mBAQ8BsB,MAAAjF,EAAA,OAA3BiF,MAAA,EAAAb,SAAUT,iBAAgB,GAAC3D,EAAA,MAAA2D,kBAAA3D,EAAA,MAAAiF;CAAA,IAAAC;CAAA,AAAAlF,EAAA,QAAAmC,iBAAAnC,EAAA,QAAAoC,YAAApC,EAAA,QAAA2B,UAEjCuD,MAAA9C,YAAA,CAAaD,gBACZ,oBAAC,UAAD,EACS,OAAA;EAAAgD,YACO;EAACf,SACJ;CACX,EAAC,CAAA,IAGH,oBAAC,UAAD;EACWzC,SAAAA;EACT,UAAA;EACO,OAAA;GAAAwD,YACO;GAACC,eACE;GAAMC,WACV;EACb;CAAC,CAAA,GAEJrF,EAAA,MAAAmC,eAAAnC,EAAA,MAAAoC,UAAApC,EAAA,MAAA2B,QAAA3B,EAAA,MAAAkF,OAAAA,MAAAlF,EAAA;CAAA,IAAAsF;CAAA,AAAAtF,EAAA,QAAAuB,MAAAgE,mBAMKD,MAAAtF,EAAA,OAJNsF,MAAA,oBAAC,KAAD;EAAiB,YAAA;EACf,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAAgB,cAAA;GAC/B/D,UAAAA,MAAKgE;EADH,CAAA;CADH,CAAA,GAIEvF,EAAA,MAAAuB,MAAAgE,kBAAAvF,EAAA,MAAAsF;CAAA,IAAAE;CAAA,AAAAxF,EAAA,QAAA0D,4BAAA1D,EAAA,QAAAE,UAAAF,EAAA,QAAAiF,OAAAjF,EAAA,QAAAkF,OAAAlF,EAAA,QAAAsF,OA9BRE,MAAA,qBAAC,0BAAD;EACQ,OAAA;EACG9B,SAAAA;EACC,UAAA;EACDxD,SAAAA;EACF,OAAA+E;EALT,UAAA,CAOGC,KAmBDI,GA1BqB;KA+BEtF,EAAA,MAAA0D,0BAAA1D,EAAA,MAAAE,QAAAF,EAAA,MAAAiF,KAAAjF,EAAA,MAAAkF,KAAAlF,EAAA,MAAAsF,KAAAtF,EAAA,MAAAwF,OAAAA,MAAAxF,EAAA;CAAA,IAAAyF;CAAA,AAAAzF,EAAA,QAAAwB,QA4BxBiE,MAAAzF,EAAA,OAxBAyF,MAAAjE,SACC,oBAAC,KAAD;EACW,SAAA;EACF,OAAA;GAAAwC,UACK;GAAU0B,OACb;GAACZ,KACH;EACP;EAEA,UAAA,oBAAC,SAAD;GACE,SAAA;GAEE,SAAA,oBAAC,WAAD;IAAoB,SAAA;IAAU,OAAA;IAC5B,UAAA,oBAAC,MAAD;KAAY,MAAA;KAAItD,UAAAA;IAAX,CAAA;GADG,CAAA;GAIF,WAAA;GACV,QAAA;GAEA,UAAA,oBAAC,MAAD;IAAY,MAAA;IACV,UAAA,oBAAC,0BAAD,EAAgC,OAAA,WAAU,CAAA;GADvC,CAAA;EAVC,CAAA;CARN,CAAA,GAuBLxB,EAAA,MAAAwB,OAAAxB,EAAA,MAAAyF;CAAA,IAAAE;CAES,OAFT3F,EAAA,QAAAY,KAAAgB,YAAA5B,EAAA,QAAA2B,UAAA3B,EAAA,QAAAgF,OAAAhF,EAAA,QAAAwF,OAAAxF,EAAA,QAAAyF,OAnILE,MAAA,oBAAC,eAAD;EAAsB,SAAA;EACpB,UAAA,qBAAC,eAAD;GAAyB,WAAA;GAAkBhE,SAAAA;GAAmB,WAAAf,KAAIgB;GAAlE,UAAA;IAEEoD;IAqEAQ;IAmCCC;GA1GW;;CADJ,CAAA,GAqIEzF,EAAA,MAAAY,KAAAgB,UAAA5B,EAAA,MAAA2B,QAAA3B,EAAA,MAAAgF,KAAAhF,EAAA,MAAAwF,KAAAxF,EAAA,MAAAyF,KAAAzF,EAAA,MAAA2F,OAAAA,MAAA3F,EAAA,KArId2F;AAqIc;AAIlB,IAAA,oBAAenI,KAAKsC,SAAS;AApQX,SAAAS,SAAAI,OAAA;CAAA,OAW+BA,MAAKiF,OAAOtF;AAAW;AAXtD,SAAAY,UAAA2E,GAAA;CAAA,OAmBgCA,EAAC1E,SAAU;AAAiB;ACvG9E,MAAM0F,gBAAcP,OAAON,IAAI,CAAC,CAAA,WAAA;;;qFAQ1Bc,aAAaR,OAAOP,IAAI,CAAC,CAAA,WAAA;;;uKAazBgB,cAAcT,uBAAOR,GAAG,CAAC,CAAA,WAAA;;;AAC5B,CAAA,CAAA,EAAA,EAACkB,YAAWX,GAAG,2DAIVW,MAAMC,OAAOC,MAAMC,KAAKC,OAAM,MAC9BJ,MAAMC,OAAOC,MAAMC,KAAKC,OAAM,uGASlBJ,MAAMC,OAAOC,MAAMC,KAAKC,OAAM,iGAUlD,GAEMC,cAAaC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAd,UAAAC,MAAAC,eAAAU,IAClBG,WAAiBtB,YAAY,GAC7BuB,SAAetB,oBAAoB,GAACuB;CAAA,AAAAJ,EAAA,OAAAE,YAAAF,EAAA,OAAAb,YAKrBiB,WAAMF,SAASlB,eAAcqB,iBAAkB,EAAAlB,SAAS,CAAC,CAAC,GAACa,EAAA,KAAAE,UAAAF,EAAA,KAAAb,UAAAa,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAAA,IAAAM;CAAA,AAAAN,EAAA,OAAAG,SAI1BG,KAAAN,EAAA,MAA5BM,KAAArB,eAAekB,QAAQ,IAAI,GAACH,EAAA,KAAAG,QAAAH,EAAA,KAAAM;CAAA,IAAAC;CAAA,AAAAP,EAAA,OAAAM,KAEzCC,KAAAP,EAAA,MAHMO,KAAA;EAAAC,YACOF;EAA4BG,QAChC;CACV,GAACT,EAAA,KAAAM,IAAAN,EAAA,KAAAO;CAAA,IAAAG;CAAA,AAAAV,EAAA,OAAAW,OAAAC,IAAA,2BAAA,KAGCF,KAAA,oBAAC,MAAD;EAAY,OAAA;EAAe,MAAA;EAAW,SAAA;EACpC,UAAA,oBAAC,aAAD,CAAY,CAAA;CADT,CAAA,GAEEV,EAAA,KAAAU,MAAAA,KAAAV,EAAA;CAAA,IAAAa;CAAA,AAAAb,EAAA,OAAAW,OAAAC,IAAA,2BAAA,KAKIC,KAAA;EAAAC,YAAa;EAAQC,WAAa;EAAOC,WAAa;CAAY,GAAChB,EAAA,KAAAa,MAAAA,KAAAb,EAAA;CAAA,IAAAiB;CAAA,AAAAjB,EAAA,OAAAZ,OAIrE6B,KAAAjB,EAAA,OANPiB,KAAA,oBAAC,MAAD;EACQ,MAAA;EACC,OAAAJ;EACA,QAAA;EAENzB,UAAAA;CALE,CAAA,GAMEY,EAAA,KAAAZ,MAAAY,EAAA,MAAAiB;CAAA,IAAAC;CAAA,AAAAlB,EAAA,QAAAW,OAAAC,IAAA,2BAAA,KACqBM,KAAA,EAAAJ,YAAa,QAAO,GAACd,EAAA,MAAAkB,MAAAA,KAAAlB,EAAA;CAC7B,IAAAmB,KAAA9B,eAAe,IAAf,KAAA,KAA2B+B;CAAA,AAAApB,EAAA,QAAAmB,MAAAnB,EAAA,QAAAX,cAD/C+B,KAAA,qBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAU,OAAAF;EAA5B,UAAA;GACG7B;GAAW;GAAM8B;EADf;KAEEnB,EAAA,MAAAmB,IAAAnB,EAAA,MAAAX,YAAAW,EAAA,MAAAoB,MAAAA,KAAApB,EAAA;CAAA,IAAAqB;CAAA,AAAArB,EAAA,QAAAiB,MAAAjB,EAAA,QAAAoB,MAfXC,MAAA,qBAAC,MAAD;EAAgB,WAAA;EAAgB,QAAA;EAAe,SAAA;EAA/C,UAAA,CACEX,IAIA,qBAAC,OAAD;GAAc,OAAA;GAAd,UAAA,CACEO,IAOAG,EARI;EALH,CAAA,CAAA;KAiBEpB,EAAA,MAAAiB,IAAAjB,EAAA,MAAAoB,IAAApB,EAAA,MAAAqB,OAAAA,MAAArB,EAAA;CAAA,IAAAsB;CAEG,OAFHtB,EAAA,QAAAI,MAAAJ,EAAA,QAAAqB,OAAArB,EAAA,QAAAO,MA3BXe,MAAA,oBAAC,eAAD;EAAsB,SAAA;EACpB,UAAA,oBAAC,YAAD;GACW,SAAAlB;GACA,SAAA;GACD,QAAA;GACD,OAAAG;GAKPc,UAAAA;EATS,CAAA;CADD,CAAA,GA6BErB,EAAA,MAAAI,IAAAJ,EAAA,MAAAqB,KAAArB,EAAA,MAAAO,IAAAP,EAAA,MAAAsB,OAAAA,MAAAtB,EAAA,KA7BdsB;AA6Bc,GC3FZM,cAAcC,QACX,IAAIE,SAASE,YAAY;CAC9B,IAAMC,cAAcL,IAAIM,QAAQN,IAAIO,QAI9BC,SAA4BE,SAASC,cAAc,QAAQ;CAEjEH,AADAA,OAAOF,QAAQR,KACfU,OAAOD,SAASK,KAAKC,IAAIf,MAAgBO,aAAa,CAAC;CAIvD,IAAI;EAGFG,AADAM,OADmBC,WAAW,IAC9BD,CAAG,EAAEE,UAAUhB,KAAK,GAAG,GAAGF,KAAeA,MAAgBO,WAAW,GACpEG,OAAOS,OAAOb,SAAS,YAAY;CACrC,SAASc,KAAK;EACZC,QAAQC,KAAK,qCAAqCF,GAAG;CACvD;AACF,CAAC,GAGGG,iBAAiBC,SACd,IAAIpB,SAASE,YAAY;CAC9B,IAAMoB,eAAeC,OAAOC,IAAIC,gBAAgBL,IAAI,GAC9CtB,MAAM,IAAI4B,MAAM;CAKtB5B,AAJAA,IAAI6B,eAAe;EAEjBzB,AADAqB,OAAOC,IAAII,gBAAgBN,YAAY,GACvCpB,QAAQJ,GAAG;CACb,GACAA,IAAI+B,MAAMP;AACZ,CAAC,GAGGQ,yBAAyB,OAAOV,SAAgC;CACpE,IAAMW,UAAU,MAAMZ,cAAcC,IAAI,GAClCY,OAAO,MAAMnC,WAAWkC,OAAO;CAErC,IAAI,CAACC,MACH,MAAMC,MAAM,8BAA8B;CAG5C,OAAOV,OAAOC,IAAIC,gBAAgBO,IAAI;AACxC,GAEaE,2BAA2Bd,SAC/B1B,GAAG,IAAI,CAAC,CAACyC,KAAKxC,eAAeF,KAAKqC,uBAAuBV,IAAI,CAAC,CAAC,CAAC;AC5CzE,SAASuB,OAAUC,OAAiBG,MAAmB;CACrD,IAAMC,QAAQJ,MAAMK,QAAQF,IAAI;CAIhC,OAHIC,QAAQ,MACVJ,MAAMM,OAAOF,OAAO,CAAC,GAEhBJ;AACT;AAEA,MAAaO,mBAAmBC,cAAsBV,MAAwB;CAC5E,IAAMW,uBAA4C,CAAA,GAC5CC,qBAA6C,CAAA,GAC7CC,SAAS,IAAInB,QAAQ;CAE3B,SAASoB,QAAQC,YAA8C;EAC7D,OAAO,IAAInB,YAAYoB,aAAa;GAClC,IAAIL,qBAAqBM,UAAUP,aACjC,OAAOQ,iBAAiBH,UAAU,CAAC,CAChCI,KAAKpB,SAASe,OAAO,CAAC,CAAC,CACvBM,UAAUJ,QAAQ;GAEvB,IAAMK,eAAeN,WAAWK,UAAUJ,QAAQ;GAElD,OADAL,qBAAqBW,KAAKD,YAAY,SACzB;IAIX,KAHApB,OAAOU,sBAAsBU,YAAY,GACzCpB,OAAOW,oBAAoBG,UAAU,GACrCM,aAAaE,YAAY,GAClBX,mBAAmBK,SAAS,KAAKN,qBAAqBM,SAASP,cACpEG,OAAOW,KAAKZ,mBAAmBa,MAAM,CAAC;GAE1C;EACF,CAAC;CACH;CAEA,SAASP,iBAAiBH,YAA8C;EAEtE,OADAH,mBAAmBU,KAAKP,UAAU,GAC3BF,OAAOa,aAAa,CAAC,CAACP,KAAKrB,OAAO6B,QAAQA,QAAQZ,UAAU,CAAC;CACtE;CAEA,OAAOD;AACT,GAEac,sBACXC,MACAnB,cAAsBV,MACnB;CACH,IAAM+B,YAAYtB,gBAAgBC,WAAW;CAC7C,QAAQ,GAAGoB,SAAqBjC,KAAKkC,UAAUF,KAAK,GAAGC,IAAI,CAAC,CAAC;AAC/D,GC5CMY,kBAAkBC,QAAsBC,MAAcC,SACnDF,OAAOG,WAAWC,MAAM,qDAAqD;CAClFC,cAAcJ;CACdC;AACF,CAAC,GAGGI,aAAaC,SACV,IAAIf,YAAYkB,eAAe;CACpC,IAAMC,SAAS,IAAIC,WAAW;CAS9B,OARAD,OAAOE,eAAe;EAEpBH,AADAA,WAAWI,KAAKH,OAAOI,MAAqB,GAC5CL,WAAWM,SAAS;CACtB,GACAL,OAAOM,WAAWC,QAAQ;EACxBR,WAAWS,MAAMD,GAAG;CACtB,GACAP,OAAOS,kBAAkBb,IAAI,SAChB;EACXI,OAAOU,MAAM;CACf;AACF,CAAC,GAGGC,iBAAiBC,WACdC,MAAMC,UAAU9B,IACpB+B,KAAK,IAAIC,WAAWJ,MAAM,IAAIK,MAAM,KAAKA,EAAEC,SAAS,EAAE,IAAIC,MAAM,EAAE,CAAC,CAAC,CACpEC,KAAK,EAAE,GAGCC,aAAazB,SACpB,CAAC0B,OAAOC,UAAU,CAACD,OAAOC,OAAOC,UAAU,CAACF,OAAOrB,aAC9ClB,WAAW;CAChB0C,SAAS;CACTC,YAAY;AACd,CAAC,IAEI/B,UAAUC,IAAI,CAAC,CAAC+B,KACrB1C,UAAU2C,gBAAgBN,OAAOC,OAAOC,OAAOK,OAAO,SAASD,WAAW,CAAC,GAC3E5C,IAAI2B,aAAa,CACnB,GAGImB,sBACJzC,QACA0C,WACAnC,MACAL,SAEOT,GAAG,IAAI,CAAC,CAAC6C,KAEd1C,eAAeG,eAAeC,QAAQ,UAAU0C,UAAS,QAASxC,IAAI,CAAC,GAEvEN,UAAU+C,kBACJA,gBACKjD,WAAW;CAChB0C,SAAS;CACTC,YAAY;AACd,CAAqB,IAGhB5C,GAAG,IAAI,CACf,GACDG,eAESI,OAAOG,WAAWyC,OACtBC,OAAOH,WAAWnC,MAAM;CACvBuC,SAAS;EAAC;EAAY;EAAQ;EAAS;EAAY;EAAQ;CAAS;CACpEC,kBAAkB;AACpB,CAAC,CAAC,CACDT,KACC3C,KAAKqD,UACHA,MAAM/C,SAAS,aACX;CAEEgD,OAAOD,MAAME,KAAKC;CAClBC,IAAIJ,MAAME,KAAKC,SAASE;CACxBpD,MAAM;AACR,IACA+C,KACN,CACF,CACH,CACH,GAGWM,eAAexD,mBAAmB2C,kBAAkB,GCxE3D+C,eAAehC,YAAY;CAC/BiC,MAAM;CACNF,cAAAA;EANAH,QAAQ,CAAA;EACRC,OAAO,CAAC;CAKRE;CACAG,gBAAgBC,YAAY;EAC1BA,QACGC,QAAQV,gBAAgBW,iBAAiBC,OAAOC,WAAW;GAC1D,IAAM,EAACC,UAASD,OAAOE;GACvB,AAAIH,MAAMT,MAAMW,MAAME,cACpBJ,MAAMT,MAAMW,MAAME,SAAS,CAAEC,SAAS;EAE1C,CAAC;CACL;CACAC,UAAU;EACRC,aACEC,QACAC,SACA,CACA;EAEFE,cAAcX,OAAOC,QAAiE;GACpF,IAAM,EAACW,YAAWX,OAAOE;GAIzBU,OAF2BE,KAAKH,OAEhCC,CAAW,CAACG,SAASC,SAAS;IAC5B,IAAMC,cAAclB,MAAMV,OAAO6B,QAAQF,IAAI;IAK7C,IAJIC,eAAe,KACjBlB,MAAMV,OAAO8B,OAAOF,aAAa,CAAC,GAGhClB,MAAMT,MAAM0B,OAAO;KACrB,IAAMI,UAAUrB,MAAMT,MAAM0B,KAAK,CAACK;KAKlC,AAJID,WACFE,OAAOC,IAAIC,gBAAgBJ,OAAO,GAGpC,OAAOrB,MAAMT,MAAM0B;IACrB;GACF,CAAC;EACH;EACAS,aAAa1B,OAAOC,QAAwD;GAC1E,IAAM,EAACoB,SAASJ,SAAQhB,OAAOE;GAC/B,AAAIH,MAAMT,MAAM0B,UACdjB,MAAMT,MAAM0B,KAAK,CAACK,YAAYD;EAElC;EACAM,aAAa3B,OAAOC,QAAuC;GACzD,IAAM,EAACgB,SAAQhB,OAAOE,SAChBe,cAAclB,MAAMV,OAAO6B,QAAQF,IAAI;GAI7C,AAHIC,eAAe,KACjBlB,MAAMV,OAAO8B,OAAOF,aAAa,CAAC,GAEhClB,MAAMT,MAAM0B,SACd,OAAOjB,MAAMT,MAAM0B;EAEvB;EACAW,YAAY5B,OAAOC,QAAyD;GAC1E,IAAM,EAACgB,SAAQhB,OAAOE,SAChBe,cAAclB,MAAMV,OAAO6B,QAAQF,IAAI;GAI7C,AAHIC,eAAe,KACjBlB,MAAMV,OAAO8B,OAAOF,aAAa,CAAC,GAEpC,OAAOlB,MAAMT,MAAM0B;EACrB;EACAa,cACEtB,QACAC,SACA,CACA;EAEFyB,eACElC,OACAC,QACA;GACA,IAAM,EAACkC,OAAOC,eAAcnC,OAAOE;GAEnCH,AADAA,MAAMT,MAAM6C,WAAW,CAAEC,UAAUF,MAAME,SACzCrC,MAAMT,MAAM6C,WAAW,CAAE/B,SAAS;EACpC;EACAiC,YAAYtC,OAAOC,QAA6D;GAC9E,IAAM,EAACsC,eAActC,OAAOE;GAI5BH,AAHKA,MAAMV,OAAOkD,SAASD,WAAWtB,IAAI,KACxCjB,MAAMV,OAAOmD,KAAKF,WAAWtB,IAAI,GAEnCjB,MAAMT,MAAMgD,WAAWtB,QAAQsB;EACjC;CACF;AACF,CAAC,GAIYG,yBAAiCC,SAASC,SAAS,EAACC,aAC/DF,QAAQG,KACNxE,OAAOyE,eAAeT,YAAYU,KAAK,GACvCzE,UAAU0B,WAAW;CACnB,IAAM,EAAC8B,MAAMQ,eAActC,OAAOE;CAElC,OAAOjC,MAELC,GAAG,IAAI,CAAC,CAAC2E,KACPvE,eAAeQ,wBAAwBgD,IAAI,CAAC,GAC5CxD,UAAU0E,QACD9E,GACL4E,eAAerB,aAAa;EAC1BL,SAAS4B;EACThC,MAAMsB,WAAWtB;CACnB,CAAC,CACH,CACD,CACH,GAEA9C,GAAG,IAAI,CAAC,CAAC2E,KAEPvE,eAAeU,aAAa4D,QAAQN,WAAWW,WAAWnB,MAAMQ,WAAWtB,IAAI,CAAC,GAChFzC,UACEmE,QAAQG,KACNxE,OAAOyE,eAAepB,aAAaqB,KAAK,GACxC1E,QAAQ6E,MAAMA,EAAEhD,QAAQc,SAASsB,WAAWtB,IAAI,CAClD,CACF,GACA1C,UAAU4D,UAAU;EAClB,IAAIA,OAAOiB,SAAS,YAAY;GAC9B,IAAMC,WAAWd,WAAWc,YAAY;GAUxC,OARKA,WAQEpF,KACL4E,OACGS,MAAMnB,MAAMjC,MAAMqD,GAAG,CAAC,CACtBC,aAAa,EAACC,KAAK,CAAC,EAAC,CAAC,CAAC,CACvBD,aAAa,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,CAC/BE,IAAI,EACH,oBAAoB;IAACC,MAAMN;IAAUO,OAAO;IAAaC,OAAO;GAAI,EACtE,CAAC,CAAC,CACDC,OAAO,CACZ,CAAC,CAAChB,KACAvE,UAAU2B,UACR/B,GACEiB,gBAAgBW,eAAe,EACtBG,MACT,CAAC,CACH,CACF,CACF,IAxBS/B,GACLiB,gBAAgBW,eAAe,EAC7BG,OAAOiC,MAAMjC,MACf,CAAC,CACH;EAqBJ;EASA,OARIiC,OAAOiB,SAAS,cAAcjB,OAAO4B,UAAU,WAC1C5F,GACL4E,eAAeb,eAAe;GAC5BC;GACAC,YAAYG,WAAWtB;EACzB,CAAC,CACH,IAEKjD,MAAM;CACf,CAAC,GACDI,YAAYyD,UACV1D,GACE4E,eAAenB,YAAY;EACzBC,OAAO;GACLmC,SAASnC,OAAOmC,WAAW;GAC3BC,YAAYpC,OAAOoC,cAAc;EACnC;EACAhD,MAAMsB,WAAWtB;CACnB,CAAC,CACH,CACF,CACF,CACF;AACF,CAAC,CACH,GAEWiD,0BAAkCvB,SAASwB,WACtDxB,QAAQG,KACNxE,OAAOyE,eAAejB,cAAckB,KAAK,GACzCvE,eAAe0F,MAAM,GACrB5F,UAAU,CAAC0B,QAAQD,WAAW;CAC5B,IAAM,EAAC+B,MAAME,qBAAoBhC,OAAOE;CAExC,OAAOhC,GAAG8B,MAAM,CAAC,CAAC6C,KAGhBvE,eAAeS,UAAU+C,IAAI,CAAC,GAE9BzD,QAAQ2C,SAEC,CADUjB,MAAMqE,QAAQ9E,MAAM0B,KAEtC,GAED1C,UAAU0C,SAAS;EAEjB,IAAMsB,aAAa;GACjBqB,OAAO;GACPV,WAHgBjB,qBAAqBF,KAAKqB,KAAKjC,QAAQ,OAAO,KAAK,IAAI,UAAU;GAIjFkC,UAAUrD,MAAMsE,QAAQC;GACxBtD;GACAtB,MAAMoC,KAAKpC;GACX6E,MAAMzC,KAAKyC;GACXnE,QAAQ;EACV;EACA,OAAOlC,GAAG4E,eAAeT,YAAY;GAACP;GAAMQ;EAAU,CAAC,CAAC;CAC1D,CAAC,CACH;AACF,CAAC,CACH,GAEWkC,4BAAoC9B,YAC/CA,QAAQG,KACNxE,OAAOc,gBAAgBW,eAAeiD,KAAK,GAC3CzE,UAAU0B,WACD9B,GACL4E,eAAexC,aAAa,EAC1BG,QAAQ,CAACT,OAAOE,QAAQD,KAAK,EAC/B,CAAC,CACH,CACD,CACH,GAEWwE,2BAAmC/B,SAASwB,QAAQ,EAACtB,aAChEF,QAAQG,KACNxE,OAAOyE,eAAexC,aAAayC,KAAK,GACxCvE,eAAe0F,MAAM,GACrB5F,UAAU,CAAC0B,QAAQD,WAAW;CAC5B,IAAM,EAACU,WAAUT,OAAOE,SAElBwE,cAAcjE,OAAOkE,KAAK1E,UAAUA,MAAMqD,GAAG,GAE7CsB,oBAAoB/F,gBAAgB;EACxCgG,YAAY9E,MAAMU,OAAOoE;EACzBP,iBAAiBvE,MAAMsE,QAAQC;EAC/BQ,iBAAiB/E,MAAMU,OAAOqE;EAC9BC,cAAchF,MAAMiF,OAAOC;EAC3BC,aAAanF,MAAMiF,OAAOG;CAC5B,CAAC,GAEKA,QAAQrH,IAAI;YACZ8G,kBAAiB;;CAGvB,OAAO1G,GAAG8B,MAAM,CAAC,CAAC6C,KAChBzE,MAAM,GAAI,GACVE,eAAesE,OAAOwC,WAAWC,MAAgBF,OAAO,EAACT,YAAW,CAAC,CAAC,GACtEpG,UAAUgH,iBAAiB;EACzB,IAAMC,iBAAiB9E,OAAO+E,QAAQC,KAAoCxF,WACxEwF,IAAIxF,MAAME,YAAYmF,aAAa/C,SAAStC,MAAME,QAAQ,IAAIF,MAAMqD,MAAM,MACnEmC,MACN,CAAC,CAAC;EAEL,OAAOvH,GACL4E,eAAepC,cAAc,EAACC,SAAS4E,eAAc,CAAC,GACtDtG,cAAcyG,cAAc,EAAC/E,SAAS4E,eAAc,CAAC,CACvD;CACF,CAAC,CACH;AACF,CAAC,CACH,GAIWI,mBAAmBnI,eAC9B,EACGuC,UAA4BA,MAAMqE,QAAQ9E,QAC1CiB,QAA0BqF,aAAqBA,QAAQ,IAEzDtG,OAAOsG,aAAatG,MAAMsG,SAC7B,GAEa9C,iBAAiB,EAAC,GAAGrD,aAAaoG,QAAO;AAEtD,IAAA,kBAAepG,aAAaqG;ACvR5B,MAAMmB,cAAcV,OAAOL,IAAI,CAAC,CAAA,WAAA;;;qFAQ1BgB,cAAaC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACjB,EAAAL,OAAaG,OAEbG,SAAehB,oBAAoB,GAGnCiB,WAAiBlB,YAAY,GAACmB;CAAA,AAAAJ,EAAA,OAAAJ,KACsCQ,KAAAJ,EAAA,MAAtCI,MAAAC,UAAWf,iBAAiBe,OAAOT,EAAE,GAACI,EAAA,KAAAJ,IAAAI,EAAA,KAAAI;CAApE,IAAAE,OAAajB,iBAAiBe,EAAsC;CAEpE,IAAI,CAACE,MAAI,OACA;CACR,IAAAC;CAAA,AAAAP,EAAA,OAAAM,KAAAE,OAEyDD,KAAAP,EAAA,MAAzCO,KAAAvB,SAASsB,KAAIE,MAAO;EAAAC,MAAO;EAAEC,OAAS;CAAC,CAAC,GAACV,EAAA,KAAAM,KAAAE,MAAAR,EAAA,KAAAO;CAA1D,IAAAI,WAAiBJ,IACjBK,gBAAsBC,KAAIH,MAAOJ,KAAIQ,WAAJ,CAAiB,GAElDC,aAAmBT,KAAIU,WAAY,YACnCC,cAAoBX,KAAIU,WAAY,aACpCE,WAAiBZ,KAAIU,WAAY,UAE7BA;CAOJ,AANID,eACFC,SAASA,cAEPC,gBACFD,SAASA,GAAGJ,cAAa,KAEvBM,aACFF,SAASA;CACV,IAAAG;CAAA,AAAAnB,EAAA,OAAAG,YAAAH,EAAA,OAAAM,KAAAc,QAG0BD,WAAA;EACzBhB,SAASZ,eAAc8B,aAAc,EAAAD,MAAOd,KAAIc,KAAK,CAAC,CAAC;CAAC,GACzDpB,EAAA,KAAAG,UAAAH,EAAA,KAAAM,KAAAc,MAAApB,EAAA,KAAAmB,MAAAA,KAAAnB,EAAA;CAFD,IAAAsB,qBAA2BH,IAE1BI;CAAA,AAAAvB,EAAA,OAAAE,SAQ+CqB,KAAAvB,EAAA,MAA5BuB,KAAA/B,eAAeU,QAAQ,IAAI,GAACF,EAAA,KAAAE,QAAAF,EAAA,KAAAuB;CAAA,IAAAC;CAAA,AAAAxB,EAAA,OAAAuB,KAIzCC,KAAAxB,EAAA,OALMwB,KAAA;EAAAC,YACOF;EAA4BG,QAChC;EAAuBC,QACvB;EAAMC,UACJ;CACZ,GAAC5B,EAAA,KAAAuB,IAAAvB,EAAA,MAAAwB;CAWc,IAAAK,KAAA,UAAUjB,gBAAgB,IAAI,IAAGkB;CAAA,AAAA9B,EAAA,QAAA6B,KAI9CC,KAAA9B,EAAA,OAZF8B,KAAA,oBAAA,OAAA,EACS,OAAA;EAAAL,YACO;EAAsBM,QAC1B;EAACJ,QACD;EAAKK,MACP;EAACJ,UACG;EAAUK,OACb;EAAMC,WACFL;EAAiCM,iBAC3B;EAAaC,YAClB;CACd,EAAC,CAAA,GACDpC,EAAA,MAAA6B,IAAA7B,EAAA,MAAA8B;CAAA,IAAAO;CAAA,AAAArC,EAAA,QAAAsC,OAAAC,IAAA,2BAAA,KAEmBF,KAAA,EAAAT,UAAW,WAAU,GAAC5B,EAAA,MAAAqC,MAAAA,KAAArC,EAAA;CAAA,IAAAwC;CAAA,AAAAxC,EAAA,QAAAM,KAAAmC,aAAAzC,EAAA,QAAAM,KAAAoC,aAAA1C,EAAA,QAAAE,UACxCsC,KAAAlC,KAAImC,cAAe,WAAWnC,MAAIoC,aACjC,oBAAC,SAAD;EACa,WAAA;EACFxC,SAAAA;EACJ,KAAAI,KAAIoC;EACF,OAAA,EAAAC,SACI,GACX;CAAC,CAAA,GAEJ3C,EAAA,MAAAM,KAAAmC,WAAAzC,EAAA,MAAAM,KAAAoC,WAAA1C,EAAA,MAAAE,QAAAF,EAAA,MAAAwC,MAAAA,KAAAxC,EAAA;CAAA,IAAA4C;CAAA,AAAA5C,EAAA,QAAAM,KAAAmC,YAMAG,KAAA5C,EAAA,OAJA4C,KAAAtC,KAAImC,cAAe,UAClB,oBAAA,OAAA;EAAY,OAAA;GAAAd,QAAS;GAAMgB,SAAW;EAAG;EACvC,UAAA,oBAAC,YAAD,EAAgB,OAAA,OAAM,CAAA;CAClB,CAAA,GACP3C,EAAA,MAAAM,KAAAmC,WAAAzC,EAAA,MAAA4C;CAAA,IAAAC;CAAA,AAAA7C,EAAA,QAAAsB,sBAAAtB,EAAA,QAAAe,cAAAf,EAAA,QAAAY,iBAQAiC,MAAA,CAAC9B,cAAcH,kBAAkB,OAChC,oBAAC,MAAD;EACQ,OAAA;EACI,WAAA;EACF,SAAA;EACD,OAAA;GAAAe,QACG;GAAMK,MACR;GAACJ,UACG;GAAUkB,KACf;GAACb,OACC;EACT;EAEA,UAAA,oBAAC,QAAD;GACY,UAAA;GACJtD,MAAAA;GACD,MAAA;GACI2C,SAAAA;GACA,SAAA;GACF,OAAA;IAAAG,YAAa;IAAMsB,WAAa;GAAM;GACxC,MAAA;EAAU,CAAA;CAnBd,CAAA,GAsBN/C,EAAA,MAAAsB,oBAAAtB,EAAA,MAAAe,YAAAf,EAAA,MAAAY,eAAAZ,EAAA,MAAA6C,OAAAA,MAAA7C,EAAA;CAAA,IAAAgD;CAAA,AAAAhD,EAAA,QAAA6C,OAAA7C,EAAA,QAAAwC,MAAAxC,EAAA,QAAA4C,MA/CHI,MAAA,qBAAC,KAAD;EAAW,MAAA;EAAU,OAAAX;EAArB,UAAA;GACGG;GAWAI;GAYAC;EAxBC;KAgDE7C,EAAA,MAAA6C,KAAA7C,EAAA,MAAAwC,IAAAxC,EAAA,MAAA4C,IAAA5C,EAAA,MAAAgD,OAAAA,MAAAhD,EAAA;CAAA,IAAAiD;CAAA,AAAAjD,EAAA,QAAAsC,OAAAC,IAAA,2BAAA,KAOGU,MAAA,EAAAtB,QAAS,OAAmB,GAAC3B,EAAA,MAAAiD,OAAAA,MAAAjD,EAAA;CAAA,IAAAkD;CAAA,AAAAlD,EAAA,QAAAW,YAAAX,EAAA,QAAAM,KAAA6C,QAEpCD,MAAA,oBAAC,KAAD;EAAW,MAAA;EAAgB,aAAA;EACzB,UAAA,qBAAC,MAAD;GAAY,MAAA;GAAgB,cAAA;GAA5B,UAAA;IACG5C,KAAI6C;IAAM;IAAGxC;IAAS;GADpB;;CADH,CAAA,GAIEX,EAAA,MAAAW,UAAAX,EAAA,MAAAM,KAAA6C,MAAAnD,EAAA,MAAAkD,OAAAA,MAAAlD,EAAA;CAAA,IAAAoD;CAAA,AAAApD,EAAA,QAAAsC,OAAAC,IAAA,2BAAA,KACgBa,MAAA,EAAAC,YAAa,EAAC,GAACrD,EAAA,MAAAoD,OAAAA,MAAApD,EAAA;CAAA,IAAAsD;CAAA,AAAAtD,EAAA,QAAAgB,SAE9BsC,MAAAtD,EAAA,OAFPsD,MAAA,oBAAC,MAAD;EAAY,MAAA;EAAU,OAAAF;EAAwB,QAAA;EAC3CpC,UAAAA;CADE,CAAA,GAEEhB,EAAA,MAAAgB,QAAAhB,EAAA,MAAAsD;CAAA,IAAAC;CAAA,AAAAvD,EAAA,QAAAkD,OAAAlD,EAAA,QAAAsD,OAbTC,MAAA,qBAAC,MAAD;EACQ,OAAA;EACE,SAAA;EACE,UAAA;EACH,OAAAN;EAJT,UAAA,CAMEC,KAKAI,GAXG;KAcEtD,EAAA,MAAAkD,KAAAlD,EAAA,MAAAsD,KAAAtD,EAAA,MAAAuD,OAAAA,MAAAvD,EAAA;CAAA,IAAAwD;CAEG,OAFHxD,EAAA,QAAAgD,OAAAhD,EAAA,QAAAuD,OAAAvD,EAAA,QAAAwB,MAAAxB,EAAA,QAAA8B,MA3FX0B,MAAA,oBAAC,aAAD;EAAsB,SAAA;EACpB,UAAA,qBAAC,MAAD;GACY,WAAA;GACJ,MAAA;GACC,OAAAhC;GAHT,UAAA;IAWEM;IAcAkB;IAmDAO;GA5EG;;CADK,CAAA,GA6FEvD,EAAA,MAAAgD,KAAAhD,EAAA,MAAAuD,KAAAvD,EAAA,MAAAwB,IAAAxB,EAAA,MAAA8B,IAAA9B,EAAA,MAAAwD,OAAAA,MAAAxD,EAAA,KA7FdwD;AA6Fc,GCzIZiB,cAAchB,MAClBiB,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAC,MAAAC,UAAAR,WAAAI;CASC,IAAIG,MAAIE,SAAW,SAAO;EAAA,IAAAC;EAC6C,OAD7CL,EAAA,OAAAE,KAAAI,MAAAN,EAAA,OAAAG,YAAAH,EAAA,OAAAL,UACjBU,KAAA,oBAAC,mBAAD;GAAe,IAAAH,KAAII;GAAeH;GAAkBR;EAAM,CAAA,GAAIK,EAAA,KAAAE,KAAAI,IAAAN,EAAA,KAAAG,UAAAH,EAAA,KAAAL,QAAAK,EAAA,KAAAK,MAAAA,KAAAL,EAAA,IAA9DK;CAA8D;CAGvE,IAAIH,MAAIE,SAAW,UAAQ;EAAA,IAAAC;EACmE,OADnEL,EAAA,OAAAE,KAAAK,YAAAP,EAAA,OAAAE,KAAAM,QAAAR,EAAA,OAAAE,KAAAO,cAClBJ,KAAA,oBAAC,YAAD;GAAsB,UAAAH,KAAIK;GAAiB,MAAAL,KAAIM;GAAmB,YAAAN,KAAIO;EAAW,CAAA,GAAIT,EAAA,KAAAE,KAAAK,UAAAP,EAAA,KAAAE,KAAAM,MAAAR,EAAA,KAAAE,KAAAO,YAAAT,EAAA,KAAAK,MAAAA,KAAAL,EAAA,IAArFK;CAAqF;CAG9F,IAAIH,MAAIE,SAAW,UAAQ;EAAA,IAAAC;EACS,OADTL,EAAA,OAAAE,KAAAI,KACSD,KAAAL,EAAA,MAA3BK,KAAA,oBAAC,YAAD,EAAgB,IAAAH,KAAII,GAAG,CAAA,GAAIN,EAAA,KAAAE,KAAAI,IAAAN,EAAA,KAAAK,KAA3BA;CAA2B;CACnC,OAEM;AAAI,CAEf,GAEMK,sBAAsB1B,OAAO2B,IAAAA,WAAAA;;;AAAG,CAAA,CAAA,UAC1Bf,IAAW,WACZC,IAAU,MAGfe,iBAAgBC,UAAA;CAAA,IAAAb,IAAAC,EAAA,CAAA,GAAAa,KAAAC;CAAA,IAAAf,EAAA,OAAAa,OAAA;EAEpB,IAAA,EAAAG,SAAAF,KAAAf,IAAA,GAAAM,OAAgCQ;EAAKb,AAArCc,MAAAf,IAAAgB,OAAAV,IAAqCL,EAAA,KAAAa,OAAAb,EAAA,KAAAc,KAAAd,EAAA,KAAAe;CAAA,OAAAA,AAAAD,MAAAd,EAAA,IAAAe,OAAAf,EAAA;CAAA,IAAAD;CACa,OADbC,EAAA,OAAAc,OAAAd,EAAA,OAAAe,QAC9BhB,KAAA,oBAAC,qBAAD;EAA0Be;EAAG,GAAMC;CAAI,CAAA,GAAIf,EAAA,KAAAc,KAAAd,EAAA,KAAAe,MAAAf,EAAA,KAAAD,MAAAA,KAAAC,EAAA,IAA3CD;AAA2C,GAG9CkB,sBAAsBjC,OAAO2B,IAAAA,WAAAA;;;AAAG,CAAA,CAAA,uDAEOd,IAAU,0CACbD,IAAW,4CAK/CsB,iBAAgBL,UAAA;CAAA,IAAAb,IAAAC,EAAA,CAAA,GAAAa,KAAAC;CAAA,IAAAf,EAAA,OAAAa,OAAA;EAEpB,IAAA,EAAAG,SAAAF,KAAAf,IAAA,GAAAM,OAAgCQ;EAAKb,AAArCc,MAAAf,IAAAgB,OAAAV,IAAqCL,EAAA,KAAAa,OAAAb,EAAA,KAAAc,KAAAd,EAAA,KAAAe;CAAA,OAAAA,AAAAD,MAAAd,EAAA,IAAAe,OAAAf,EAAA;CAAA,IAAAD;CACa,OADbC,EAAA,OAAAc,OAAAd,EAAA,OAAAe,QAC9BhB,KAAA,oBAAC,qBAAD;EAA0Be;EAAG,GAAMC;CAAI,CAAA,GAAIf,EAAA,KAAAc,KAAAd,EAAA,KAAAe,MAAAf,EAAA,KAAAD,MAAAA,KAAAC,EAAA,IAA3CD;AAA2C,GAG9CoB,wBAAuBN,UAAA;CAAA,IAAAb,IAAAC,EAAA,EAAA,GAC3B,EAAAR,OAAAC,YAAAC,WAAoCkB,OAGpCO,iBAAuBnC,iBAAiBoC,QAAgC,GAACtB;CAAA,AAAAC,EAAA,OAAAoB,iBAEarB,KAAAC,EAAA,MAAlED,KAACqB,kBAAkBA,eAAcE,IAAKC,SAAoB,KAA1D,CAAA,GAAkEvB,EAAA,KAAAoB,gBAAApB,EAAA,KAAAD;CAAtF,IAAAyB,cAAoBzB,IACpBU,aAAmBhB,OAAKgC;CAExB,IAAIhB,eAAe,GAAC,OACX;CACR,IAAAJ;CAAA,AAAAL,EAAA,OAAAP,QAQIY,KAAAL,EAAA,MAHeK,MAAAqB,UACDjC,MAAMiC,MACR,EAAApB,MAAJoB,OACR1B,EAAA,KAAAP,OAAAO,EAAA,KAAAK;CAAA,IAAAsB;CAAA,AAAA3B,EAAA,OAAA4B,OAAAC,IAAA,2BAAA,KACWF,KAAA;EAAAG,MACJlB;EAAamB,MACbb;CACR,GAAClB,EAAA,KAAA2B,MAAAA,KAAA3B,EAAA;CAAA,IAAAgC;CAAA,AAAAhC,EAAA,OAAAP,SAAAO,EAAA,OAAAwB,eAAAxB,EAAA,OAAAL,UAEYqC,MAAAC,YAAA;EACX,IAAAC,SAAazC,MAAMiC,UACnBvB,WAAiBqB,YAAWW,SAAUjC,OAAII,EAAG;EAAC,OACvC,oBAAC,aAAD;GAAmBJ,MAAAA;GAAgBC;GAAkBR;EAAM,CAAA;CAAI,GACvEK,EAAA,KAAAP,OAAAO,EAAA,KAAAwB,aAAAxB,EAAA,KAAAL,QAAAK,EAAA,KAAAgC,MAAAA,KAAAhC,EAAA;CAAA,IAAAoC;CAAA,AAAApC,EAAA,OAAA4B,OAAAC,IAAA,2BAAA,KAEMO,KAAA;EAAAC,WAAY;EAAQC,WAAa;CAAQ,GAACtC,EAAA,KAAAoC,MAAAA,KAAApC,EAAA;CAAA,IAAAuC;CAEjD,OAFiDvC,EAAA,QAAAN,cAAAM,EAAA,QAAAK,MAAAL,EAAA,QAAAgC,MAAAhC,EAAA,QAAAS,cAjBnD8B,KAAA,oBAAC,cAAD;EACY,WAAA;EACM,gBAAAlC;EAIJ,YAAAsB;EAIAjC,YAAAA;EACC,aAAAsC;EAKH,UAAA;EACH,OAAAI;EACK3B;CAAU,CAAA,GACtBT,EAAA,MAAAN,YAAAM,EAAA,MAAAK,IAAAL,EAAA,MAAAgC,IAAAhC,EAAA,MAAAS,YAAAT,EAAA,MAAAuC,MAAAA,KAAAvC,EAAA,KAnBFuC;AAmBE;AAjCuB,SAAAlB,SAAAmB,OAAA;CAAA,OAIwBA,MAAKrC,SAASsC;AAAO;AAJ7C,SAAAlB,UAAAmB,OAAA;CAAA,OAM0CA,MAAKC;AAAI;AC9DhF,SAASkB,YAAYC,OAA6D;CAEhF,IAAM,EAACC,IAAIC,KAAK,GAAGC,cAAaH;CAEhC,OAAOG;AACT;AAEA,MAAMC,8BAAwB;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAC5BC,WAAiBpB,YAAY,GAC7BqB,QAAcpB,SAA2B,GACzCqB,gBAAsBpB,iBAAiBI,mBAAmB,GAC1DiB,aAAmBrB,iBAAiBsB,QAA6B,GACjEC,aAAmBvB,iBAAiBwB,SAAkC,GACtEC,WAAiBzB,iBAAiB0B,QAAgC,GAClEC,gBAAsB3B,iBAAiB4B,QAAqC,GAC5EC,WAAiB7B,iBAAiB8B,QAAgC,GAClEC,cAAoB/B,iBAAiBgC,QAA6B,GAClEC,eAAqBjC,iBAAiBkC,MAA8B,GACpEC,kBAAwBnC,iBAAiBoC,MAAwC,GACjFC,uBAA6BrC,iBAAiBsC,MAA6C,GAG3FC,mBAAyBvC,iBAAiBwC,MAGzC,GAEDC,uBAA6B7C,OAMnB,IAAI,GAAC8C;CAAA,AAAA1B,EAAA,OAAAmB,mBAAAnB,EAAA,OAAAqB,wBAAArB,EAAA,OAAAiB,gBAAAjB,EAAA,OAAAe,YAAAY,UAMbD,WACEX,YAAWY,SAAU,KACrBV,aAAYU,SAAU,KACtBC,EAAQT,mBAFRE,sBAGoBrB,EAAA,KAAAmB,iBAAAnB,EAAA,KAAAqB,sBAAArB,EAAA,KAAAiB,cAAAjB,EAAA,KAAAe,YAAAY,QAAA3B,EAAA,KAAA0B,MAAAA,KAAA1B,EAAA;CALxB,IAAA,CAAA6B,iBAAAC,sBAA8CjD,SAC5C6C,EAKF,GAACK,IAAAC;CAIDrD,AAJCqB,EAAA,OAAAE,YAAAF,EAAA,OAAAG,SAIS4B,WAAA;EACR,IAAA,EAAAE,QAAAC,UAAAC,SAAAC,WAAkCjC,MAAKkC,SAAU,GACjD,EAAAC,OAAAC,WAAwBH,QACxBI,aAAmBP,SAAMQ,MAAMC,KAAMC,OAAyC;EAkB7E,OAhBDlB,qBAAoBmB,UAAW;GAAAC,SACpBL,YAAUM,SAAW,oBAAoBN,WAAUK,UAAnDE,KAAAA;GAAuET;GAAAC;GAAAS,UAGtEb,QAAOhB;GAAgB8B,eAClBd,QAAOd;EACxB,GAEIiB,MAAKX,SAAU,KACjBzB,SAASf,cAAa+D,SAAU,EAAAnC,aAAc,GAAE,CAAC,CAAC,GAEhDwB,OAAMZ,SAAU,KAClBzB,SAASf,cAAagE,YAAa,CAAC,IAElChB,QAAOhB,mBAAoBgB,QAAOd,yBACpCnB,SAAShB,eAAckE,mBAAoB,CAAC,SAGvC;GACL,IAAAC,QAAc5B,qBAAoBmB;GAClC,IAAI,CAACS,OAAK;GAIV,IAAAC,WACED,MAAKf,MAAMX,SAAU,KACrB0B,MAAKd,OAAOZ,SAAU,KACtBC,EAAQyB,MAAKL,YACbK,MAAKJ;GAEP,AAAII,MAAKf,MAAMX,SAAU,KACvBzB,SAASf,cAAa+D,SAAU,EAAAnC,aAAcsC,MAAKf,MAAM,CAAC,CAAC;GAE7D,KAAK,IAAA3C,SAAe0D,MAAKd,QACvBrC,SAASf,cAAaoE,UAAW,EAAA5D,OAAQD,YAAYC,KAAK,EAAC,CAAC,CAAC;GAU/D,AARI0D,MAAKL,WACP9C,SAAShB,eAAcsE,iBAAkB,EAAAR,UAAWK,MAAKL,SAAS,CAAC,CAAC,IAC3DK,MAAKJ,iBACd/C,SAAShB,eAAcuE,yBAA0B,CAAC,GAKhDH,YAAYD,MAAKR,WACnB3C,SAASjB,cAAayE,KAAM;IAAAb,SAAUQ,MAAKR;IAAQc,QAAU;GAAI,CAAC,CAAC;EACpE;CACF,GACA3B,KAAA,CAAC9B,UAAUC,KAAK,GAACH,EAAA,KAAAE,UAAAF,EAAA,KAAAG,OAAAH,EAAA,KAAA+B,IAAA/B,EAAA,KAAAgC,OAAAD,KAAA/B,EAAA,IAAAgC,KAAAhC,EAAA,KArDpBrB,UAAUoD,IAqDPC,EAAiB;CAAC,IAAA4B,IAAAC;CAQrBlF,AARqBqB,EAAA,OAAAG,SA2BXyD,KAAA5D,EAAA,KAAA6D,KAAA7D,EAAA,QAnBA4D,WAAA;EACR,IAAAE,cAAkB3D,MAAKkC,SAAU,CAAC,CAAA0B,OAAOC,QACzCC,iBAAqB;EAAK,OAEnB9D,MAAK+D,gBAAW;GACrB,IAAA,EAAAF,QAAAvD,UAAA0D,eAAuChE,MAAKkC,SAAU,CAAC,CAAA0B,QACvDK,cAAoBJ,WAAWF,eAAeE,OAAMrC,WAAY;GAGhE,IAFAmC,cAAcE,QAEVI,aAAW;IAEbtC,AADAmC,iBAAiBA,IACjBnC,mBAAmB,EAAI;IAAC;GAAA;GAG1B,AAAImC,kBAAA,CAAmBE,eACrBF,iBAAiBA,IACjBnC,mBAAmB,EAAK;EACzB,CACF;CAAC,GACD+B,KAAA,CAAC1D,KAAK,GAACH,EAAA,KAAAG,OAAAH,EAAA,MAAA4D,IAAA5D,EAAA,MAAA6D,KAnBVlF,UAAUiF,IAmBPC,EAAO;CAEV,IAAAQ,cACEtD,YAAWY,SAAU,KACrBV,aAAYU,SAAU,KACtBC,EAAQT,mBAFRE,sBAGoBiD;CAAA,IAAAtE,EAAA,QAAAuB,oBAAAvB,EAAA,QAAAK,cAAAL,EAAA,QAAAI,eAAA;EAAA,IAAAmE;EASpBvE,AAToBA,EAAA,QAAAuB,oBAAAvB,EAAA,QAAAK,cAGoBkE,MAAAC,WAAA;GACxC,IAAIC,OAAI3B,SAAU,WAAW2B,OAAI7E,OAAQ2B,kBAAgB,OAChD;GAET,IAAAmD,QAAcrE,WAAWoE,OAAI7E,GAAW,EAAA8E;GAAA,OACjCA,QAAQlF,aAAakF,KAAa,IAAlC;EAAmC,GAC3C1E,EAAA,MAAAuB,kBAAAvB,EAAA,MAAAK,YAAAL,EAAA,MAAAuE,MAAAA,KAAAvE,EAAA,KANoBsE,KAAAlE,cAAauE,OAAQJ,EAMzC,GAACvE,EAAA,MAAAuB,kBAAAvB,EAAA,MAAAK,YAAAL,EAAA,MAAAI,eAAAJ,EAAA,MAAAsE;CAAA,OAAAA,KAAAtE,EAAA;CANF,IAAA4E,eAAqBN,IAQrBO,iBAAuBtE,cAAc,GACrCuE,eAAqBvE,eAAeM,UAEpCkE,UACEH,aAAYjD,WAAY,KAAxBkD,kBAAA,CAECpE,YAFD,CAGC4D,eAHD,CAICxC,mBAJD,CAKCiD,cAAYP,IAAAS;CAIfrG,AAJeqB,EAAA,QAAA6B,mBAAA7B,EAAA,QAAAE,YAAAF,EAAA,QAAAS,YAAAT,EAAA,QAAAW,iBAAAX,EAAA,QAAA6E,kBAAA7E,EAAA,QAAA8E,gBAAA9E,EAAA,QAAA4E,aAAAjD,UAAA3B,EAAA,QAAAqE,eAILE,WAAA;EAENF,eAAA5D,YAAAoB,mBAAAlB,iBAIAiE,aAAYjD,SAAU,KAJtB,CAKCkD,kBALD,CAMCC,gBAIH5E,SAASjB,cAAagG,aAAc,CAAC;CAAC,GACrCD,KAAA;EACD9E;EACAmE;EACA5D;EACAoB;EACAlB;EACAiE,aAAYjD;EACZkD;EACAC;CAAY,GACb9E,EAAA,MAAA6B,iBAAA7B,EAAA,MAAAE,UAAAF,EAAA,MAAAS,UAAAT,EAAA,MAAAW,eAAAX,EAAA,MAAA6E,gBAAA7E,EAAA,MAAA8E,cAAA9E,EAAA,MAAA4E,aAAAjD,QAAA3B,EAAA,MAAAqE,aAAArE,EAAA,MAAAuE,IAAAvE,EAAA,MAAAgF,OAAAT,KAAAvE,EAAA,KAAAgF,KAAAhF,EAAA,MAtBDrB,UAAU4F,IAaPS,EASF;CAAC,IAAAE;CAAA,AAAAlF,EAAA,QAAAE,YAAAF,EAAA,QAAAS,YAE0ByE,WAAA;EAC1B,AAAKzE,YACHP,SAASjB,cAAagG,aAAc,CAAC;CACtC,GACFjF,EAAA,MAAAE,UAAAF,EAAA,MAAAS,UAAAT,EAAA,MAAAkF,MAAAA,KAAAlF,EAAA;CAJD,IAAAmF,sBAA4BD,IAI3BE;CAmBO,OAnBPpF,EAAA,QAAAmF,uBAAAnF,EAAA,QAAA+E,WAAA/E,EAAA,QAAA4E,gBAGCQ,KAAA,oBAAC,KAAD;EAAY,QAAA;EACTL,UAAAA,UACC,oBAAC,KAAD;GAAc,SAAA;GACZ,UAAA,oBAAC,MAAD;IAAY,MAAA;IAAU,QAAA;IAAW,UAAA;GAA5B,CAAA;EADH,CAAA,IAMJ,oBAAC,KAAD;GAAY,QAAA;GACV,UAAA,oBAAC,sBAAD;IACSH,OAAAA;IACKO,YAAAA;IACL,QAAA;GAAe,CAAA;EAJtB,CAAA;CARJ,CAAA,GAgBEnF,EAAA,MAAAmF,qBAAAnF,EAAA,MAAA+E,SAAA/E,EAAA,MAAA4E,cAAA5E,EAAA,MAAAoF,MAAAA,KAAApF,EAAA,KAhBNoF;AAgBM;AAtMoB,SAAA9E,SAAA+E,OAAA;CAAA,OAImBA,MAAKtB,OAAOuB;AAAM;AAJrC,SAAA9E,UAAA+E,SAAA;CAAA,OAKmBF,QAAKtB,OAAOxD;AAAW;AAL1C,SAAAG,SAAA8E,SAAA;CAAA,OAMiBH,QAAKtB,OAAOtD;AAAS;AANtC,SAAAG,SAAA6E,SAAA;CAAA,OAOsBJ,QAAKtB,OAAOpD;AAAc;AAPhD,SAAAG,SAAA4E,SAAA;CAAA,OAQiBL,QAAKtB,OAAOlD;AAAS;AARtC,SAAAG,SAAA2E,SAAA;CAAA,OASoBN,QAAKjD,OAAOE;AAAM;AATtC,SAAApB,OAAA0E,SAAA;CAAA,OAUqBP,QAAKjD,OAAOG;AAAO;AAVxC,SAAAnB,OAAAyE,SAAA;CAAA,OAWwBR,QAAKlD,QAAQhB;AAAgB;AAXrD,SAAAG,OAAAwE,SAAA;CAAA,OAY6BT,QAAKlD,QAAQd;AAAqB;AAZ/D,SAAA0E,OAAAtB,MAAA;CAAA,OAgBuBA,KAAI3B,SAAU;AAAiB;AAhBtD,SAAAtB,OAAAwE,SAAA;CAgB1B,IAAA/D,SAAeoD,QAAKpD,OAAOQ,MAAMC,KAAMqD,MAAyC;CAAC,OAC1E9D,QAAMa,SAAW,oBAAoBb,OAAMY,UAA3CE,KAAAA;AAA+D;AAjB5C,SAAAJ,QAAAsD,QAAA;CAAA,OA4CqBxB,OAAI3B,SAAU;AAAiB;ACnDlF,MAAM+D,mBAAkBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACtB,EAAAL,UAAAC,QAAAK,OAGIH,OADM,EAAAI,OAAAD,IAIVE,WAAiBd,YAAY,GAACe;CAAA,AAAAL,EAAA,OAAAI,WAK7BC,KAAAL,EAAA,MAF+BK,WAAA;EAC9BD,SAASb,cAAae,MAAO,CAAC;CAAC,GAChCN,EAAA,KAAAI,UAAAJ,EAAA,KAAAK;CAFD,IAAAE,cAAoBF,IAENG;CAAA,AAAAR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KAIVF,KAAA,oBAAC,KAAD;EAAc,SAAA;EAAU,OAAA,EAAAG,QAAS,OAAM;EACrC,UAAA,oBAAC,uBAAD,CAAsB,CAAA;CADpB,CAAA,GAEEX,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAY;CAGC,OAHDZ,EAAA,OAAAJ,YAAAI,EAAA,OAAAO,eAAAP,EAAA,OAAAG,MAHRS,KAAA,qBAAC,UAAD;EAAe,QAAA;EAAiCT;EAAaI,SAAAA;EAAoB,OAAA;EAAjF,UAAA,CACEC,IAICZ,QALI;KAMEI,EAAA,KAAAJ,UAAAI,EAAA,KAAAO,aAAAP,EAAA,KAAAG,IAAAH,EAAA,KAAAY,MAAAA,KAAAZ,EAAA,IANTY;AAMS,GCrBPe,iBAAgBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACpB,EAAAL,UAAAC,WAA2BE,OAG3BG,WAAiBX,YAAY,GAACY;CAAA,AAAAH,EAAA,OAAAH,QAAAO,MAAAJ,EAAA,OAAAE,YAGVC,WAAA;EAClBD,SAASV,cAAaa,OAAQ,EAAAD,IAAKP,QAAMO,GAAI,CAAC,CAAC;CAAC,GACjDJ,EAAA,KAAAH,QAAAO,IAAAJ,EAAA,KAAAE,UAAAF,EAAA,KAAAG,MAAAA,KAAAH,EAAA;CAFD,IAAAM,cAAoBH,IAEnBI;CAAA,AAAAP,EAAA,OAAAH,UAAAG,EAAA,OAAAE,YAAAF,EAAA,OAAAM,eAEqBC,WAAA;EAWpBD,AATIT,QAAMW,iBACRN,SAASV,cAAaa,OAAQ,EAAAD,IAAKP,QAAMW,cAAe,CAAC,CAAC,GAGxDX,QAAMY,yBACRP,SAASL,OAAMY,qBAAsB,GAIvCH,YAAY;CAAC,GACdN,EAAA,KAAAH,QAAAG,EAAA,KAAAE,UAAAF,EAAA,KAAAM,aAAAN,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CAZD,IAAAU,gBAAsBH,IAYrBI;CAAA,AAAAX,EAAA,OAAAH,QAAAe,eAAAZ,EAAA,OAAAH,QAAAgB,QAAAb,EAAA,OAAAM,eAAAN,EAAA,QAAAU,iBAEcC,WACb,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,qBAAC,MAAD;GAAc,SAAA;GAAd,UAAA,CACE,oBAAC,QAAD;IAAkB,UAAA;IAAQ,MAAA;IAAiBL,SAAAA;IAAkB,MAAA;GAAQ,CAAA,GACrE,oBAAC,QAAD;IACY,UAAA;IACDI,SAAAA;IACH,MAAAb,QAAMe;IACN,MAAAf,QAAMgB;GAAM,CAAA,CANjB;;CADH,CAAA,GAWLb,EAAA,KAAAH,QAAAe,aAAAZ,EAAA,KAAAH,QAAAgB,MAAAb,EAAA,KAAAM,aAAAN,EAAA,MAAAU,eAAAV,EAAA,MAAAW,MAAAA,KAAAX,EAAA;CAZD,IAAAc,SAAeH,IAYdI;CAAA,AAAAf,EAAA,QAAAH,QAAAmB,cASAD,KAAAf,EAAA,OAPce,WACb,qBAAC,MAAD;EAAY,OAAA;EAAZ,UAAA,CACE,oBAAC,KAAD;GAAe,UAAA;GACb,UAAA,oBAAC,oBAAD,CAAmB,CAAA;EADjB,CAAA,GAGJ,oBAAC,KAAD;GAAiB,YAAA;GAAIlB,UAAAA,QAAMmB;EAAvB,CAAA,CAJD;KAMNhB,EAAA,MAAAH,QAAAmB,aAAAhB,EAAA,MAAAe;CAPD,IAAAE,SAAeF,IAOdG;CAAA,AAAAlB,EAAA,QAAAc,SAMqBI,KAAAlB,EAAA,OAAVkB,KAAA,oBAAC,QAAD,CAAO,CAAA,GAAGlB,EAAA,MAAAc,QAAAd,EAAA,MAAAkB;CAAA,IAAAC;CAAA,AAAAnB,EAAA,QAAAiB,SAEAE,KAAAnB,EAAA,OAAVmB,KAAA,oBAAC,QAAD,CAAO,CAAA,GAAGnB,EAAA,MAAAiB,QAAAjB,EAAA,MAAAmB;CAAA,IAAAC;CAAA,AAAApB,EAAA,QAAAH,SAOwCuB,KAAApB,EAAA,OAArDoB,KAAAvB,QAAMwB,SAAW,oBAAC,MAAD;EAAY,MAAA;EAAIxB,UAAAA,OAAMwB;CAAjB,CAAA,GAA+BrB,EAAA,MAAAH,QAAAG,EAAA,MAAAoB;CAAA,IAAAE;CAAA,AAAAtB,EAAA,QAAAH,SAKrDyB,KAAAtB,EAAA,OAJAsB,KAAAzB,QAAM0B,eACL,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAChB,UAAA,oBAAA,MAAA,EAAA,UAAK1B,OAAM0B,YAAkB,CAAA;CAD1B,CAAA,GAGNvB,EAAA,MAAAH,QAAAG,EAAA,MAAAsB;CAAA,IAAAE;CAAA,AAAAxB,EAAA,QAAAoB,MAAApB,EAAA,QAAAsB,MAPLE,KAAA,oBAAC,KAAD;EAAe,UAAA;EAAa,UAAA;EAC1B,UAAA,qBAAC,OAAD;GAAc,OAAA;GAAd,UAAA,CACGJ,IACAE,EAFG;;CADJ,CAAA,GASEtB,EAAA,MAAAoB,IAAApB,EAAA,MAAAsB,IAAAtB,EAAA,MAAAwB,MAAAA,KAAAxB,EAAA;CAAA,IAAAyB;CAGC,OAHDzB,EAAA,QAAAJ,YAAAI,EAAA,QAAAM,eAAAN,EAAA,QAAAkB,MAAAlB,EAAA,QAAAmB,MAAAnB,EAAA,QAAAwB,MAnBRC,KAAA,qBAAC,UAAD;EACE,SAAA;EAEQ,QAAAP;EAEA,QAAAC;EACL,IAAA;EACMb,SAAAA;EACF,OAAA;EART,UAAA,CAUEkB,IAWC5B,QArBI;KAsBEI,EAAA,MAAAJ,UAAAI,EAAA,MAAAM,aAAAN,EAAA,MAAAkB,IAAAlB,EAAA,MAAAmB,IAAAnB,EAAA,MAAAwB,IAAAxB,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA,KAtBTyB;AAsBS,GChEPwB,sBAAqBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACzB,EAAAL,UAAAC,QAAAK,OAGIH,OADM,EAAAI,gBAAAC,OAAAF,IAGVG,WAAiBvB,YAAY,GAC7BwB,WAAiBtB,iBAAiBuB,QAAiC,GACnEC,gBAAsBxB,iBAAiByB,SAAsC,GAACC;CAAA,AAAAV,EAAA,OAAAG,iBACYO,KAAAV,EAAA,MAAtDU,MAAAC,YAAWxB,qBAAqByB,SAAOT,cAAc,GAACH,EAAA,KAAAG,gBAAAH,EAAA,KAAAU;CAA1F,IAAAG,aAAmB7B,iBAAiB0B,EAAsD,GAACI;CAAA,AAAAd,EAAA,OAAAe,OAAAC,IAAA,2BAAA,KAQ1EF,KAAA,EAAAG,MACP,GACR,GAACjB,EAAA,KAAAc,MAAAA,KAAAd,EAAA;CAAA,IAAAkB;CAAA,AAAAlB,EAAA,OAAAe,OAAAC,IAAA,2BAAA,KAHyBE,KAAA;EAAAC,eACXL;EAEdM,MACK;EAAUC,UACN9B,gBAAgCR,gBAAgB;CAC5D,GAACiB,EAAA,KAAAkB,MAAAA,KAAAlB,EAAA;CAXD,IAAA,EAAAsB,WAAAC,IAAAC,cAAAC,UAAAC,aAKI7C,QAAwBqC,EAM3B,GAVY,EAAAS,QAAAC,SAAAC,YAAAN,IAA0BO;CAAA,AAAA9B,EAAA,OAAAK,WActCyB,KAAA9B,EAAA,MAFmB8B,WAAA;EAClBzB,SAASpB,cAAa8C,MAAO,CAAC;CAAC,GAChC/B,EAAA,KAAAK,UAAAL,EAAA,KAAA8B;CAFD,IAAAE,cAAoBF,IAEnBG;CAAA,AAAAjC,EAAA,OAAAK,YAAAL,EAAA,OAAAG,kBAE+C8B,MAAAC,aAAA;EAC9C,IAAAC,oBAA0B7C,iBAAiB4C,QAAQ;EACnD7B,SACEnB,eAAckD,cAAe;GAAAnB,MACrBkB,kBAAiBlB;GAAQoB,UACrBlC,kBAAA;EACZ,CAAC,CACH;CAAC,GACFH,EAAA,KAAAK,UAAAL,EAAA,KAAAG,gBAAAH,EAAA,KAAAiC,MAAAA,KAAAjC,EAAA;CARD,IAAAsC,WAAgDL,IAQ/CM,IAAAC;CAED7D,AAFCqB,EAAA,OAAAQ,iBAAAR,EAAA,QAAA0B,YAESa,WAAA;EACR,AAAI/B,iBACFkB,SAAS,QAAQ,EAAAe,SAAUjC,cAAaiC,QAAQ,CAAC;CAClD,GACAD,KAAA,CAAChC,eAAekB,QAAQ,GAAC1B,EAAA,KAAAQ,eAAAR,EAAA,MAAA0B,UAAA1B,EAAA,MAAAuC,IAAAvC,EAAA,MAAAwC,OAAAD,KAAAvC,EAAA,KAAAwC,KAAAxC,EAAA,MAJ5BrB,UAAU4D,IAIPC,EAAyB;CAAC,IAAAE;CAAA,AAAA1C,EAAA,QAAAM,YAAAN,EAAA,QAAAwB,gBAAAxB,EAAA,QAAA4B,WAAA5B,EAAA,QAAA6B,WAAA7B,EAAA,QAAAsC,YAEdI,WACb,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,oBAAC,MAAD;GAAc,SAAA;GACZ,UAAA,oBAAC,kBAAD;IACY,UAAApC,YAAA,CAAasB,WAAb,CAAyBC;IAC1BA;IACA,SAAAL,aAAac,QAAQ;GAAC,CAAA;EAJ9B,CAAA;CADH,CAAA,GASLtC,EAAA,MAAAM,UAAAN,EAAA,MAAAwB,cAAAxB,EAAA,MAAA4B,SAAA5B,EAAA,MAAA6B,SAAA7B,EAAA,MAAAsC,UAAAtC,EAAA,MAAA0C,MAAAA,KAAA1C,EAAA;CAVD,IAAA2C,SAAeD,IAUdE;CAAA,AAAA5C,EAAA,QAAA2C,SAMqBC,MAAA5C,EAAA,OAAV4C,MAAA,oBAAC,QAAD,CAAO,CAAA,GAAG5C,EAAA,MAAA2C,QAAA3C,EAAA,MAAA4C;CAAA,IAAAC;CAAA,AAAA7C,EAAA,QAAAwB,gBAAAxB,EAAA,QAAAsC,YAMmBO,MAAArB,aAAac,QAAQ,GAACtC,EAAA,MAAAwB,cAAAxB,EAAA,MAAAsC,UAAAtC,EAAA,MAAA6C,OAAAA,MAAA7C,EAAA;CAAA,IAAA8C;CAAA,AAAA9C,EAAA,QAAAe,OAAAC,IAAA,2BAAA,KACzD8B,MAAA,oBAAA,UAAA;EAAe,OAAA,EAAAC,SAAU,OAAM;EAAa,UAAA;EAAS,MAAA;CAAQ,CAAA,GAAG/C,EAAA,MAAA8C,OAAAA,MAAA9C,EAAA;CAAA,IAAAgD;CAAA,AAAAhD,EAAA,QAAAa,aAQ/DmC,MAAAhD,EAAA,OANAgD,MAAAnC,cACC,oBAAC,KAAD;EAAmB,cAAA;EACjB,UAAA,qBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAAlB,UAAA,CAAqB,oBACFA,UADd;;CADH,CAAA,GAKLb,EAAA,MAAAa,YAAAb,EAAA,MAAAgD;CAAA,IAAAC;CAAA,AAAAjD,EAAA,QAAAyB,WAGqBwB,MAAAjD,EAAA,OAAhBiD,MAAAxB,SAAS,MAAM,GAACzB,EAAA,MAAAyB,UAAAzB,EAAA,MAAAiD;CAEb,IAAAC,MAAAvB,QAAMV,MAAewB,SAAAU;CAAA,AAAAnD,EAAA,QAAAM,YAAAN,EAAA,QAAAiD,OAAAjD,EAAA,QAAAkD,OAH9BC,MAAA,oBAAC,oBAAD;EAAmB,GACbF;EACM3C,UAAAA;EACH,OAAA4C;EACD,OAAA;EACD,MAAA;CAAM,CAAA,GACXlD,EAAA,MAAAM,UAAAN,EAAA,MAAAiD,KAAAjD,EAAA,MAAAkD,KAAAlD,EAAA,MAAAmD,OAAAA,MAAAnD,EAAA;CAAA,IAAAoD;CAAA,AAAApD,EAAA,QAAA6C,OAAA7C,EAAA,QAAAgD,OAAAhD,EAAA,QAAAmD,OAjBJC,MAAA,qBAAC,KAAD;EAAQ,IAAA;EAAgB,SAAA;EAAa,UAAAP;EAArC,UAAA;GACEC;GAECE;GAQDG;EAXE;KAkBEnD,EAAA,MAAA6C,KAAA7C,EAAA,MAAAgD,KAAAhD,EAAA,MAAAmD,KAAAnD,EAAA,MAAAoD,OAAAA,MAAApD,EAAA;CAAA,IAAAqD;CAGC,OAHDrD,EAAA,QAAAJ,YAAAI,EAAA,QAAAgC,eAAAhC,EAAA,QAAAI,MAAAJ,EAAA,QAAA4C,OAAA5C,EAAA,QAAAoD,OA3BRC,MAAA,qBAAC,UAAD;EACE,SAAA;EAEQ,QAAAT;EACD,QAAA;EACHxC;EACK4B,SAAAA;EACF,OAAA;EAPT,UAAA,CASEoB,KAoBCxD,QA7BI;KA8BEI,EAAA,MAAAJ,UAAAI,EAAA,MAAAgC,aAAAhC,EAAA,MAAAI,IAAAJ,EAAA,MAAA4C,KAAA5C,EAAA,MAAAoD,KAAApD,EAAA,MAAAqD,OAAAA,MAAArD,EAAA,KA9BTqD;AA8BS;AAvFc,SAAA9C,SAAAK,OAAA;CAAA,OAOoBA,MAAK0C,QAAQhD;AAAS;AAP1C,SAAAG,UAAA8C,SAAA;CAAA,OAQyB3C,QAAK0C,QAAQ9C;AAAc;ACjB/E,MAAMoE,sBACJC,UACAC,SACG;CACH,IAAMG,2BAAW,IAAIC,IAAY,GAC7BC,SAAwBN;CAC5B,OAAOM,SAAQ;EACb,IAAMC,OAAON,KAAKK;EAClB,IAAI,CAACC,MAAM;EAEXD,AADAF,SAASI,IAAIF,MAAM,GACnBA,SAASC,KAAKJ;CAChB;CACA,OAAOC;AACT,GAcMY,gBAAaC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAN,aAAAN,MAAAO,UAAAC,eAAAE,IAClBG,cAAoBb,KAAIG,SAASW,SAAU,GAC3CC,WAAiBP,eAAeR,KAAIgB,IAAGC;CAAA,AAAAN,EAAA,OAAAL,eAAAK,EAAA,OAAAX,KAAAgB,MAIzBC,KAAAX,YAAWY,IAAKlB,KAAIgB,EAAG,GAACL,EAAA,KAAAL,aAAAK,EAAA,KAAAX,KAAAgB,IAAAL,EAAA,KAAAM,MAAAA,KAAAN,EAAA;CAAA,IAAAQ;CAAA,AAAAR,EAAA,OAAAX,KAAAgB,MAAAL,EAAA,OAAAJ,YAEzBY,WAAMZ,SAASP,KAAIgB,EAAG,GAACL,EAAA,KAAAX,KAAAgB,IAAAL,EAAA,KAAAJ,UAAAI,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAE1B,IAAAS,KAAA,GAAGpB,KAAIqB,KAAK,IAAKrB,KAAIsB,WAAW,IAC9BC,KAAAR,WAAA,aAAA,UAAgCS;CAAA,AAAAb,EAAA,OAAAL,eAAAK,EAAA,OAAAE,eAAAF,EAAA,OAAAX,KAAAG,YAAAQ,EAAA,OAAAJ,YAAAI,EAAA,QAAAH,cAEvCgB,KAAAX,eACCb,KAAIG,SAASsB,KAAKC,cAChB,oBAAC,cAAD;EACepB;EAEPoB,MAAAA;EACInB;EACEC;CAAU,GAHjBkB,UAASV,EAGQ,CAEzB,GAACL,EAAA,KAAAL,aAAAK,EAAA,KAAAE,aAAAF,EAAA,KAAAX,KAAAG,UAAAQ,EAAA,KAAAJ,UAAAI,EAAA,MAAAH,YAAAG,EAAA,MAAAa,MAAAA,KAAAb,EAAA;CAAA,IAAAgB;CACK,OADLhB,EAAA,QAAAX,KAAAgB,MAAAL,EAAA,QAAAI,YAAAJ,EAAA,QAAAM,MAAAN,EAAA,QAAAQ,MAAAR,EAAA,QAAAS,MAAAT,EAAA,QAAAY,MAAAZ,EAAA,QAAAa,MAjBNG,KAAA,oBAAC,UAAD;EACY,UAAAV;EACN,IAAAjB,KAAIgB;EACC,SAAAG;EACCJ;EACJ,MAAAK;EACE,QAAAG;EAEPC,UAAAA;CARM,CAAA,GAkBEb,EAAA,MAAAX,KAAAgB,IAAAL,EAAA,MAAAI,UAAAJ,EAAA,MAAAM,IAAAN,EAAA,MAAAQ,IAAAR,EAAA,MAAAS,IAAAT,EAAA,MAAAY,IAAAZ,EAAA,MAAAa,IAAAb,EAAA,MAAAgB,MAAAA,KAAAhB,EAAA,KAlBXgB;AAkBW,GAWTG,cAAapB,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAN,aAAAuB,YAAAtB,UAAAC,eAAAE,IAAgEO;CAAA,IAAAN,EAAA,OAAAL,eAAAK,EAAA,OAAAkB,cAAAlB,EAAA,OAAAJ,YAAAI,EAAA,OAAAH,YAAA;EAAA,IAAAW;EAU9ER,AAV8EA,EAAA,OAAAL,eAAAK,EAAA,OAAAJ,YAAAI,EAAA,OAAAH,cAEhEW,MAAAnB,SACd,oBAAC,cAAD;GACeM;GAEPN;GACIO;GACEC;EAAU,GAHjBR,KAAIgB,EAGa,GAEzBL,EAAA,KAAAL,aAAAK,EAAA,KAAAJ,UAAAI,EAAA,KAAAH,YAAAG,EAAA,KAAAQ,MAAAA,KAAAR,EAAA,IARAM,KAAAY,WAAUJ,IAAKN,EAQf,GAACR,EAAA,KAAAL,aAAAK,EAAA,KAAAkB,YAAAlB,EAAA,KAAAJ,UAAAI,EAAA,KAAAH,YAAAG,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAQ;CACG,OADHR,EAAA,OAAAM,KACGE,KAAAR,EAAA,OAVPQ,KAAA,oBAAC,MAAD;EAAW,KAAA;EACRF,UAAAA;CADE,CAAA,GAUEN,EAAA,KAAAM,IAAAN,EAAA,MAAAQ,KAVPA;AAUO,GAGHY,oBAAmBrB,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAT,UAAAC,WAAAM,IACxBsB,WAAiBhD,YAAY,GAC7B6C,aAAmB5C,iBAAiBG,gBAAgB,GACpDM,OAAaT,iBAAiBgD,QAA6B,GAC3D,EAAAC,QAAAzC,UAAAuB,OAA+BZ,QAC/B,CAAAI,YAAA2B,iBAAoCpD,SAAwBU,YAAA,IAAgB,GAC5E2C,iBAAuB5B,aAAad,KAAKc,cAAlB,MAC4BS,KAAAxB,YAAA,MAAgB0B;CAAA,AAAAR,EAAA,OAAAjB,QAAAiB,EAAA,OAAAM,MAAjCE,KAAA3B,mBAAiByB,IAAkBvB,IAAI,GAACiB,EAAA,KAAAjB,MAAAiB,EAAA,KAAAM,IAAAN,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAA1E,IAAAL,cAAkCa,IAA2DC;CAAA,AAAAT,EAAA,OAAAqB,YAAArB,EAAA,OAAAK,MAEzEI,WAAA;EAClBY,SAAS7C,cAAakD,OAAQ,EAAArB,GAAG,CAAC,CAAC;CAAC,GACrCL,EAAA,KAAAqB,UAAArB,EAAA,KAAAK,IAAAL,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CAFD,IAAA2B,cAAoBlB,IAEnBG;CAAA,AAAAZ,EAAA,OAAAuB,UAAAvB,EAAA,OAAAqB,YAAArB,EAAA,OAAAK,MAAAL,EAAA,OAAAH,cAEkBe,WAAA;EACZf,cAILwB,SACE9C,cAAaqD,iBAAkB;GAAAL;GAAAM,eAEdxB;GAAEvB,UACPe;EACZ,CAAC,CACH;CAAC,GACFG,EAAA,KAAAuB,QAAAvB,EAAA,KAAAqB,UAAArB,EAAA,KAAAK,IAAAL,EAAA,KAAAH,YAAAG,EAAA,MAAAY,MAAAA,KAAAZ,EAAA;CAZD,IAAA8B,aAAmBlB,IAYlBC;CAAA,AAAAb,EAAA,QAAA2B,cAQoEd,KAAAb,EAAA,OAA3Da,KAAA,oBAAC,QAAD;EAAa,MAAA;EAAiBc,SAAAA;EAAkB,MAAA;CAAQ,CAAA,GAAG3B,EAAA,MAAA2B,aAAA3B,EAAA,MAAAa;CAE/C,IAAAG,KAAA,CAACnB,YAGGkC,KAAAR,OAAMpB,QAAO6B;CAAA,AAAAhC,EAAA,QAAAuB,OAAApB,SAAqC6B,KAAAhC,EAAA,OAAjCgC,KAAA/D,UAAU,SAASsD,OAAMpB,MAAO,GAACH,EAAA,MAAAuB,OAAApB,QAAAH,EAAA,MAAAgC;CAA1D,IAAAC,KAAA,QAAQF,GAAa,GAAIC,MAAmCE;CAAA,AAAAlC,EAAA,QAAA8B,cAAA9B,EAAA,QAAAgB,MAAAhB,EAAA,QAAAiC,MAJpEC,MAAA,oBAAC,QAAD;EACY,UAAAlB;EACL,MAAA;EACIc,SAAAA;EACH,MAAAG;EACD,MAAA;CAAS,CAAA,GACdjC,EAAA,MAAA8B,YAAA9B,EAAA,MAAAgB,IAAAhB,EAAA,MAAAiC,IAAAjC,EAAA,MAAAkC,OAAAA,MAAAlC,EAAA;CAAA,IAAAmC;CAAA,AAAAnC,EAAA,QAAAkC,OAAAlC,EAAA,QAAAa,MATNsB,MAAA,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,qBAAC,MAAD;GAAc,SAAA;GAAgB,KAAA;GAA9B,UAAA,CACEtB,IACAqB,GAFG;;CADH,CAAA,GAWElC,EAAA,MAAAkC,KAAAlC,EAAA,MAAAa,IAAAb,EAAA,MAAAmC,OAAAA,MAAAnC,EAAA;CASE,IAAAoC,MAAAb,OAAMpB,QAAOkC;CAAA,AAAArC,EAAA,QAAAuB,OAAApB,SAAoCkC,MAAArC,EAAA,OAAjCqC,MAAApE,UAAU,SAASsD,OAAMpB,MAAO,GAACH,EAAA,MAAAuB,OAAApB,QAAAH,EAAA,MAAAqC;CAAA,IAAAC;CAAA,AAAAtC,EAAA,QAAAuB,OAAApB,UAAAH,EAAA,QAAAqC,OADzDC,MAAA,qBAAC,MAAD;EAAY,MAAA;EAAZ,UAAA;GAAe;GACPF;GAAc;GAAEC;GAAkC;EADrD;KAEErC,EAAA,MAAAuB,OAAApB,QAAAH,EAAA,MAAAqC,KAAArC,EAAA,MAAAsC,OAAAA,MAAAtC,EAAA;CAAA,IAAAuC;CAAA,AAAAvC,EAAA,QAAAwC,OAAAC,IAAA,2BAAA,KAEKF,MAAA;EAAAG,WAAY;EAAOC,WAAa;CAAM,GAAC3C,EAAA,MAAAuC,OAAAA,MAAAvC,EAAA;CAAA,IAAA4C;CAAA,AAAA5C,EAAA,QAAAL,eAAAK,EAAA,QAAAkB,cAAAlB,EAAA,QAAAH,cACjD+C,MAAA,oBAAC,YAAD;EACejD;EACDuB;EACFM,UAAAA;EACE3B;CAAU,CAAA,GACtBG,EAAA,MAAAL,aAAAK,EAAA,MAAAkB,YAAAlB,EAAA,MAAAH,YAAAG,EAAA,MAAA4C,OAAAA,MAAA5C,EAAA;CAAA,IAAA6C;CAAA,AAAA7C,EAAA,QAAAkB,WAAAf,SAQD0C,MAAA7C,EAAA,OANA6C,MAAA3B,WAAUf,WAAY,KACrB,oBAAC,KAAD;EAAgB,WAAA;EACd,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAAG,UAAA;EAAhB,CAAA;CADH,CAAA,GAKLH,EAAA,MAAAkB,WAAAf,QAAAH,EAAA,MAAA6C;CAAA,IAAAC;CAAA,AAAA9C,EAAA,QAAA4C,OAAA5C,EAAA,QAAA6C,OAdHC,MAAA,qBAAC,KAAD;EAAY,OAAAP;EAAmD,UAAA;EAA/D,UAAA,CACEK,KAOCC,GARC;KAeE7C,EAAA,MAAA4C,KAAA5C,EAAA,MAAA6C,KAAA7C,EAAA,MAAA8C,OAAAA,MAAA9C,EAAA;CAAA,IAAA+C;CAAA,AAAA/C,EAAA,QAAAyB,iBAWLsB,MAAA/C,EAAA,OATA+C,MAAAtB,kBACC,qBAAC,QAAD;EAAe,OAAA;EAAf,UAAA,CACE,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAAG,UAAA;EAAhB,CAAA,GAGL,oBAAC,MAAD;GAAY,MAAA;GAAU,QAAA;GACnBA,UAAAA,eAAcf;EADZ,CAAA,CAJA;KAQRV,EAAA,MAAAyB,gBAAAzB,EAAA,MAAA+C;CAAA,IAAAC;CAAA,AAAAhD,EAAA,QAAAsC,OAAAtC,EAAA,QAAA8C,OAAA9C,EAAA,QAAA+C,OA/BHC,MAAA,qBAAC,OAAD;EAAgB,SAAA;EAAU,OAAA;EAA1B,UAAA;GACEV;GAIAQ;GAiBCC;EAtBG;KAgCE/C,EAAA,MAAAsC,KAAAtC,EAAA,MAAA8C,KAAA9C,EAAA,MAAA+C,KAAA/C,EAAA,MAAAgD,OAAAA,MAAAhD,EAAA;CAAA,IAAAiD;CAGD,OAHCjD,EAAA,QAAAR,YAAAQ,EAAA,QAAA2B,eAAA3B,EAAA,QAAAK,MAAAL,EAAA,QAAAmC,OAAAnC,EAAA,QAAAgD,OArDVC,MAAA,qBAAC,UAAD;EACE,SAAA;EAEE,QAAAd;EAaK,QAAA;EACH9B;EACKsB,SAAAA;EACF,OAAA;EAnBT,UAAA,CAqBEqB,KAkCCxD,QAvDI;KAwDEQ,EAAA,MAAAR,UAAAQ,EAAA,MAAA2B,aAAA3B,EAAA,MAAAK,IAAAL,EAAA,MAAAmC,KAAAnC,EAAA,MAAAgD,KAAAhD,EAAA,MAAAiD,OAAAA,MAAAjD,EAAA,KAxDTiD;AAwDS;AApFY,SAAA3B,SAAA4B,OAAA;CAAA,OAGkBA,MAAKC,QAAQpE;AAAK;ACrE7D,MAAM4F,sBAAqBC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAL,UAAAC,WAAAE,IAC1B,EAAAG,UAAAC,OAAuBN,QACvBO,WAAiBtB,YAAY,GAC7BuB,WAAiBrB,iBAAiBsB,QAAiC,GACnEC,cAAoBvB,iBAAiBwB,SAAoC,GAACC;CAAA,AAAAT,EAAA,OAAAE,WACHO,KAAAT,EAAA,MAAvCS,MAAAC,YAAWC,QAAKC,QAAQC,KAAMX,WAASF,EAAA,KAAAE,UAAAF,EAAA,KAAAS;CAAvE,IAAAK,SAAe9B,iBAAiByB,EAAuC,GAACM;CAAA,AAAAf,EAAA,OAAAE,WACYa,KAAAf,EAAA,MAAhDe,MAAAC,YAAW7B,qBAAqBwB,SAAOT,QAAQ,GAACF,EAAA,KAAAE,UAAAF,EAAA,KAAAe;CAApF,IAAAE,aAAmBjC,iBAAiB+B,EAAgD,GACpFG,cAAoBJ,QAAMK,QAAN,IAAkBC;CAAA,AAAApB,EAAA,OAAAiB,aAG9BG,KAAApB,EAAA,MAFWoB,KAAAH,WAAUI,SAAU,GAEhC,IADHJ,WAAUK,MAAO,GAAGL,WAAUM,YAAa,GAAG,CAC3C,IAFY,MAEXvB,EAAA,KAAAiB,YAAAjB,EAAA,KAAAoB;CAFR,IAAAI,aAAmBJ,IAEXK;CAAA,AAAAzB,EAAA,OAAAkB,cAULO,KAAAzB,EAAA,MAFcyB,KAAA,EAAAN,MACPD,YACR,GAAClB,EAAA,KAAAkB,aAAAlB,EAAA,KAAAyB;CAAA,IAAAC;CAAA,AAAA1B,EAAA,OAAA2B,OAAAC,IAAA,2BAAA,KAESF,KAAAnC,gBAAgCR,gBAAgB,GAACiB,EAAA,KAAA0B,MAAAA,KAAA1B,EAAA;CAAA,IAAA6B;CAAA,AAAA7B,EAAA,OAAAyB,KAC5DI,KAAA7B,EAAA,OAN2B6B,KAAA;EAAAC,eACXL;EAEdM,MACK;EAAUC,UACNN;CACZ,GAAC1B,EAAA,KAAAyB,IAAAzB,EAAA,MAAA6B;CAXD,IAAA,EAAAI,WAAAC,IAAAC,cAAAC,UAAAC,aAKIxD,QAAwBgD,EAM3B,GAVY,EAAAS,QAAAC,SAAAC,YAAAN,IAA0BO;CAAA,AAAAzC,EAAA,QAAAI,YAAAJ,EAAA,QAAAG,MAYnBsC,WAAA;EAClBrC,SAASnB,cAAayD,OAAQ,EAAAvC,GAAG,CAAC,CAAC;CAAC,GACrCH,EAAA,MAAAI,UAAAJ,EAAA,MAAAG,IAAAH,EAAA,MAAAyC,MAAAA,KAAAzC,EAAA;CAFD,IAAA2C,cAAoBF,IAEnBG;CAAA,AAAA5C,EAAA,QAAAI,YAAAJ,EAAA,QAAAE,YAE+C0C,MAAAC,aAAA;EAC9C,IAAAC,oBAA0BxD,iBAAiBuD,QAAQ;EACnDzC,SACElB,eAAc6D,cAAe;GAAA5B,MACrB2B,kBAAiB3B;GAAQjB;EAEjC,CAAC,CACH;CAAC,GACFF,EAAA,MAAAI,UAAAJ,EAAA,MAAAE,UAAAF,EAAA,MAAA4C,MAAAA,KAAA5C,EAAA;CARD,IAAAgD,WAAgDJ,IAQ/CK,KAAAC;CAEDvE,AAFCqB,EAAA,QAAAO,eAAAP,EAAA,QAAAqC,YAESY,YAAA;EACR,AAAI1C,eACF8B,SAAS,QAAQ,EAAAc,SAAU5C,YAAW4C,QAAQ,CAAC;CAChD,GACAD,MAAA,CAAC3C,aAAa8B,QAAQ,GAACrC,EAAA,MAAAO,aAAAP,EAAA,MAAAqC,UAAArC,EAAA,MAAAiD,KAAAjD,EAAA,MAAAkD,QAAAD,MAAAjD,EAAA,KAAAkD,MAAAlD,EAAA,MAJ1BrB,UAAUsE,KAIPC,GAAuB;CASJ,IAAAE,MAAA/C,YAAA,CAAakC,WAAb,CAAyBC,SAAOa;CAAA,AAAArD,EAAA,QAAAmC,gBAAAnC,EAAA,QAAAgD,YAEjCK,MAAAlB,aAAaa,QAAQ,GAAChD,EAAA,MAAAmC,cAAAnC,EAAA,MAAAgD,UAAAhD,EAAA,MAAAqD,OAAAA,MAAArD,EAAA;CAAA,IAAAsD;CAAA,AAAAtD,EAAA,QAAAwC,WAAAxC,EAAA,QAAAoD,OAAApD,EAAA,QAAAqD,OALrCC,MAAA,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,oBAAC,MAAD;GAAc,SAAA;GACZ,UAAA,oBAAC,kBAAD;IACY,UAAAF;IACDZ;IACA,SAAAa;GAAsB,CAAA;EAJ9B,CAAA;CADH,CAAA,GAQErD,EAAA,MAAAwC,SAAAxC,EAAA,MAAAoD,KAAApD,EAAA,MAAAqD,KAAArD,EAAA,MAAAsD,OAAAA,MAAAtD,EAAA;CAAA,IAAAuD;CAAA,AAAAvD,EAAA,QAAAmC,gBAAAnC,EAAA,QAAAgD,YAO6BO,MAAApB,aAAaa,QAAQ,GAAChD,EAAA,MAAAmC,cAAAnC,EAAA,MAAAgD,UAAAhD,EAAA,MAAAuD,OAAAA,MAAAvD,EAAA;CAAA,IAAAwD;CAAA,AAAAxD,EAAA,QAAA2B,OAAAC,IAAA,2BAAA,KACzD4B,MAAA,oBAAA,UAAA;EAAe,OAAA,EAAAC,SAAU,OAAM;EAAa,UAAA;EAAS,MAAA;CAAQ,CAAA,GAAGzD,EAAA,MAAAwD,OAAAA,MAAAxD,EAAA;CAI3D,IAAA0D,MAAAlC,aAAA,mBAAgCA,eAAhC,oBAAiEmC;CAAA,AAAA3D,EAAA,QAAA0D,MAEhEC,MAAA3D,EAAA,OAJN2D,MAAA,oBAAC,KAAD;EAAmB,cAAA;EACjB,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GACfD,UAAAA;EADE,CAAA;CADH,CAAA,GAIE1D,EAAA,MAAA0D,KAAA1D,EAAA,MAAA2D;CAAA,IAAAC;CAAA,AAAA5D,EAAA,QAAAoC,WAGgBwB,MAAA5D,EAAA,OAAhB4D,MAAAxB,SAAS,MAAM,GAACpC,EAAA,MAAAoC,UAAApC,EAAA,MAAA4D;CAEb,IAAAC,MAAAvB,QAAMnB,MAAegC,SAAAW;CAAA,AAAA9D,EAAA,QAAAK,YAAAL,EAAA,QAAA4D,OAAA5D,EAAA,QAAA6D,OAH9BC,MAAA,oBAAC,oBAAD;EAAmB,GACbF;EACMvD,UAAAA;EACH,OAAAwD;EACD,OAAA;EACD,MAAA;CAAM,CAAA,GACX7D,EAAA,MAAAK,UAAAL,EAAA,MAAA4D,KAAA5D,EAAA,MAAA6D,KAAA7D,EAAA,MAAA8D,OAAAA,MAAA9D,EAAA;CAAA,IAAA+D;CAAA,AAAA/D,EAAA,QAAAuD,OAAAvD,EAAA,QAAA2D,OAAA3D,EAAA,QAAA8D,OAfJC,MAAA,qBAAC,KAAD;EAAQ,IAAA;EAAgB,SAAA;EAAa,UAAAR;EAArC,UAAA;GACEC;GAEAG;GAMAG;EATE;KAgBE9D,EAAA,MAAAuD,KAAAvD,EAAA,MAAA2D,KAAA3D,EAAA,MAAA8D,KAAA9D,EAAA,MAAA+D,OAAAA,MAAA/D,EAAA;CAAA,IAAAgE;CAGC,OAHDhE,EAAA,QAAAJ,YAAAI,EAAA,QAAA2C,eAAA3C,EAAA,QAAAG,MAAAH,EAAA,QAAAsD,OAAAtD,EAAA,QAAA+D,OAlCRC,MAAA,qBAAC,UAAD;EACE,SAAA;EAEE,QAAAV;EAUK,QAAA;EACHnD;EACKwC,SAAAA;EACF,OAAA;EAhBT,UAAA,CAkBEoB,KAkBCnE,QApCI;KAqCEI,EAAA,MAAAJ,UAAAI,EAAA,MAAA2C,aAAA3C,EAAA,MAAAG,IAAAH,EAAA,MAAAsD,KAAAtD,EAAA,MAAA+D,KAAA/D,EAAA,MAAAgE,OAAAA,MAAAhE,EAAA,KArCTgE;AAqCS;AAnFc,SAAA1D,SAAAK,OAAA;CAAA,OAGoBA,MAAKC,QAAQP;AAAS;AAH1C,SAAAG,UAAAyD,SAAA;CAAA,OAIuBtD,QAAKC,QAAQL;AAAY;ACC3E,MAAMoF,oBACJC,UACAC,SACG;CACH,IAAMG,2BAAW,IAAIC,IAAY,GAC7BC,SAAwBN;CAC5B,OAAOM,SAAQ;EACb,IAAMC,OAAON,KAAKK;EAClB,IAAI,CAACC,MAAM;EAEXD,AADAF,SAASI,IAAIF,MAAM,GACnBA,SAASC,KAAKJ;CAChB;CACA,OAAOC;AACT,GAiBMe,sBAAqBC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAR,UAAAS,IAAAR,MAAAC,SAAAC,MAAAO,IAAAN,YAAAE,IAC1BN,WAAAS,OAAAE,KAAAA,KAAAF,IAGAN,OAAAO,OAAAC,KAAAA,IAAA,YAAAD,IAAgBE;CAAA,AAAAL,EAAA,OAAAH,UAUAQ,KAAAL,EAAA,MAJZK,KAAA,oBAAC,WAAD;EAAoB,SAAA;EAAU,OAAA;EAC5B,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GACfR,UAAAA;EADE,CAAA;CADG,CAAA,GAIEG,EAAA,KAAAH,SAAAG,EAAA,KAAAK;CAAA,IAAAC;CAAA,AAAAN,EAAA,OAAAP,YAAAO,EAAA,OAAAN,QAAAM,EAAA,OAAAL,WAAAK,EAAA,OAAAJ,QAAAI,EAAA,OAAAH,WAMdS,KAAA,oBAAC,QAAD;EACcT,cAAAA;EACFJ;EACA,UAAA;EACJC;EACD,MAAA;EACIC;EACA,SAAA;EACHC;CAAI,CAAA,GACVI,EAAA,KAAAP,UAAAO,EAAA,KAAAN,MAAAM,EAAA,KAAAL,SAAAK,EAAA,KAAAJ,MAAAI,EAAA,KAAAH,SAAAG,EAAA,KAAAM,MAAAA,KAAAN,EAAA;CAAA,IAAAO;CACM,OADNP,EAAA,OAAAK,MAAAL,EAAA,OAAAM,MAtBJC,KAAA,oBAAC,SAAD;EACE,SAAA;EAEE,SAAAF;EAMQ,UAAA,OAAOG,SAAW,OAAe,kBAAkBA;EACnD,WAAA;EACV,QAAA;EAEAF,UAAAA;CAbM,CAAA,GAuBEN,EAAA,KAAAK,IAAAL,EAAA,KAAAM,IAAAN,EAAA,MAAAO,MAAAA,KAAAP,EAAA,KAvBVO;AAuBU,GAYNK,kBAAiBb,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAS,MAAAC,eAAAZ,IAAuCG,IAAAC,IAAAE,IAAAC;CAAA,AAAAN,EAAA,OAAAa,OAAAC,IAAA,2BAAA,KAEpDZ,KAAA;EAAAa,WACM;EAAYC,SACd;EAAOC,UACN;EAAMC,UACN;EAACC,UACD;EAAQC,cACJ;EAAMC,UACV;EAAUC,OACb;CACT,GAGSnB,KAAA;EAAAoB,YACO;EAAQP,SACX;EAAMQ,aACF;EAASC,KACjB;EAAQP,UACH;EAACC,UACD;CACZ,GAEAd,KAAA,oBAAA,QAAA;EAAa,OAAA;GAAAW,SAAU;GAAaU,YAAc;GAACC,YAAc;EAAC;EAChE,UAAA,oBAAC,YAAD,CAAW,CAAA;CACN,CAAA,GAEErB,KAAA;EAAAU,SACI;EAAOE,UACN;EAACC,UACD;EAAQS,cACJ;EAAUC,YACZ;CACd,GAAC7B,EAAA,KAAAE,IAAAF,EAAA,KAAAG,IAAAH,EAAA,KAAAK,IAAAL,EAAA,KAAAM,OAAAJ,KAAAF,EAAA,IAAAG,KAAAH,EAAA,IAAAK,KAAAL,EAAA,IAAAM,KAAAN,EAAA;CAAA,IAAAO;CAAA,AAAAP,EAAA,OAAAU,OAIEH,KAAAP,EAAA,MAxBPO,KAAA,qBAAA,QAAA;EACS,OAAAJ;EADT,UAAA,CAUEE,IAGA,oBAAA,QAAA;GACS,OAAAC;GAQNI,UAAAA;EACI,CAAA,CACF;KAAAV,EAAA,KAAAU,MAAAV,EAAA,KAAAO;CAAA,IAAAuB;CAAA,AAAA9B,EAAA,OAAAa,OAAAC,IAAA,2BAAA,KAEEgB,KAAA;EAAAC,UACK;EAASC,SACV;EAAIX,UACH;EAAUY,OACb;EAACC,KACH;EAAKC,WACC;CACb,GAACnC,EAAA,KAAA8B,MAAAA,KAAA9B,EAAA;CAAA,IAAAoC;CAAA,AAAApC,EAAA,OAAAW,aAGIyB,KAAApC,EAAA,MAXPoC,KAAA,oBAAA,QAAA;EACS,OAAAN;EASNnB,UAAAA;CACI,CAAA,GAAAX,EAAA,KAAAW,YAAAX,EAAA,KAAAoC;CAAA,IAAAC;CACF,OADErC,EAAA,OAAAO,MAAAP,EAAA,QAAAoC,MAhDTC,KAAA,qBAAA,QAAA;EACS,OAAAnC;EADT,UAAA,CAYEK,IAyBA6B,EAYK;KAAApC,EAAA,KAAAO,IAAAP,EAAA,MAAAoC,IAAApC,EAAA,MAAAqC,MAAAA,KAAArC,EAAA,KAjDPqC;AAiDO,GAGHC,cAAavC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAZ,iBAAAC,aAAAJ,MAAAK,aAAAQ,IAClBwC,cAAoBrD,KAAIsD,SAASC,SAAU,GAC3CC,WAAiBrD,oBAAoBH,KAAIyD,IAAGzC;CAAA,AAAAF,EAAA,OAAAV,eAAAU,EAAA,OAAAd,KAAAyD,MAI9BzC,KAAAZ,YAAWsD,IAAK1D,KAAIyD,EAAG,GAAC3C,EAAA,KAAAV,aAAAU,EAAA,KAAAd,KAAAyD,IAAA3C,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAA,IAAAG;CAAA,AAAAH,EAAA,OAAAd,KAAAyD,MAAA3C,EAAA,OAAAT,YAEzBY,WAAMZ,SAASL,KAAIyD,EAAG,GAAC3C,EAAA,KAAAd,KAAAyD,IAAA3C,EAAA,KAAAT,UAAAS,EAAA,KAAAG,MAAAA,KAAAH,EAAA;CAAA,IAAAK;CAAA,AAAAL,EAAA,OAAAd,KAAAwB,QAAAV,EAAA,OAAAd,KAAAyB,cAE1BN,KAAA,oBAAC,gBAAD;EAAsB,MAAAnB,KAAIwB;EAAmB,YAAAxB,KAAIyB;CAAW,CAAA,GAAIX,EAAA,KAAAd,KAAAwB,MAAAV,EAAA,KAAAd,KAAAyB,YAAAX,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAC9D,IAAAM,KAAAoC,WAAA,aAAA,UAAgCnC;CAAA,AAAAP,EAAA,OAAAX,mBAAAW,EAAA,QAAAV,eAAAU,EAAA,QAAAuC,eAAAvC,EAAA,QAAAd,KAAAsD,YAAAxC,EAAA,QAAAT,YAEvCgB,KAAAgC,eACCrD,KAAIsD,SAASK,KAAKC,cAChB,oBAAC,YAAD;EACmBzD;EACJC;EAEPwD,MAAAA;EACIvD;CAAQ,GAFbuD,UAASH,EAEI,CAErB,GAAC3C,EAAA,KAAAX,iBAAAW,EAAA,MAAAV,aAAAU,EAAA,MAAAuC,aAAAvC,EAAA,MAAAd,KAAAsD,UAAAxC,EAAA,MAAAT,UAAAS,EAAA,MAAAO,MAAAA,KAAAP,EAAA;CAAA,IAAA8B;CACK,OADL9B,EAAA,QAAAd,KAAAyD,MAAA3C,EAAA,QAAA0C,YAAA1C,EAAA,QAAAE,MAAAF,EAAA,QAAAG,MAAAH,EAAA,QAAAK,MAAAL,EAAA,QAAAM,MAAAN,EAAA,QAAAO,MAjBNuB,KAAA,oBAAC,UAAD;EACY,UAAA5B;EACN,IAAAhB,KAAIyD;EACC,SAAAxC;EACCuC;EACJ,MAAArC;EACE,QAAAC;EAEPC,UAAAA;CARM,CAAA,GAkBEP,EAAA,MAAAd,KAAAyD,IAAA3C,EAAA,MAAA0C,UAAA1C,EAAA,MAAAE,IAAAF,EAAA,MAAAG,IAAAH,EAAA,MAAAK,IAAAL,EAAA,MAAAM,IAAAN,EAAA,MAAAO,IAAAP,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA,KAlBX8B;AAkBW,GAITiB,mBAAa;CAAA,IAAA/C,IAAAC,EAAA,EAAA,GACjB+C,WAAiB/E,YAAY,GAC7BoB,kBAAwBlB,iBAAiB8E,QAAwC,GACjFrE,OAAaT,iBAAiB+E,SAA6B,GAC3DC,kBAAwBhF,iBAAiBI,qBAAqB,GAC9D6E,WAAiBjF,iBAAiBkF,QAAiC,GACnEC,aAAmBnF,iBAAiBK,gBAAgB,GACpD+E,gBAAsBlE,kBAAkBT,KAAKS,mBAAvB,MAA8CU;CAAA,AAAAC,EAAA,OAAApB,QAAAoB,EAAA,OAAAX,mBAE5DU,KAAArB,iBAAiBW,iBAAiBT,IAAI,GAACoB,EAAA,KAAApB,MAAAoB,EAAA,KAAAX,iBAAAW,EAAA,KAAAD,MAAAA,KAAAC,EAAA;CAD/C,IAAAV,cACQS,IAEPG;CAAA,AAAAF,EAAA,OAAAV,cACwEY,KAAAF,EAAA,MAA3CE,KAAAsD,MAAKC,KAAMnE,WAAW,CAAC,CAAAoE,KAAM,GAAa,KAA1C,QAA2C1D,EAAA,KAAAV,aAAAU,EAAA,KAAAE;CAAzE,IAAAyD,UAA8BzD,IAE9B0D,aAAmBN,WAAUb,SAAU,GAACtC;CAAA,AAAAH,EAAA,OAAAgD,WAIvC7C,KAAAH,EAAA,MAF0BG,MAAAxB,aAAA;EACzBqE,SAAS1E,eAAcuF,iBAAkB,EAAAlF,SAAS,CAAC,CAAC;CAAC,GACtDqB,EAAA,KAAAgD,UAAAhD,EAAA,KAAAG;CAFD,IAAA2D,qBAA2B3D,IAE1BE;CAAA,AAAAL,EAAA,OAAAuD,iBAAAvD,EAAA,OAAAX,mBAAAW,EAAA,OAAAgD,YAE0B3C,WAAA;EACrB,CAAChB,mBAAD,CAAqBkE,iBAIzBP,SACE5E,cAAa2F,wBAAyB;GAAApF,UAC1BU;GAAe2E,YACbT,cAAa7C;EAC3B,CAAC,CACH;CAAC,GACFV,EAAA,KAAAuD,eAAAvD,EAAA,KAAAX,iBAAAW,EAAA,KAAAgD,UAAAhD,EAAA,MAAAK,MAAAA,KAAAL,EAAA;CAXD,IAAAiE,qBAA2B5D,IAW1BC;CAAA,AAAAN,EAAA,QAAAa,OAAAC,IAAA,2BAAA,KAQYR,KAAA;EAAA4D,cACS;EAAoCxC,YACtC;EAACyC,QACL;CACV,GAACnE,EAAA,MAAAM,MAAAA,KAAAN,EAAA;CAAA,IAAAO;CAAA,AAAAP,EAAA,QAAAa,OAAAC,IAAA,2BAAA,KAIGP,KAAA,oBAAC,OAAD;EAAa,MAAA;EAAG,UAAA;CAAV,CAAA,GAAyBP,EAAA,MAAAO,MAAAA,KAAAP,EAAA;CAAA,IAAA8B;CAAA,AAAA9B,EAAA,QAAAoD,WAK9BtB,KAAA9B,EAAA,OAJA8B,KAAAsB,YACC,oBAAC,OAAD;EAAa,MAAA;EAAU,OAAA,EAAApB,SAAU,GAAG;EAAG,UAAA;CAAjC,CAAA,GAGPhC,EAAA,MAAAoD,UAAApD,EAAA,MAAA8B;CAAA,IAAAM;CAAA,AAAApC,EAAA,QAAA8B,KAECM,KAAApC,EAAA,OATNoC,KAAA,oBAAC,KAAD;EAAW,MAAA;EACT,UAAA,qBAAC,QAAD;GAAe,OAAA;GAAf,UAAA,CACE7B,IACCuB,EAFI;;CADL,CAAA,GASE9B,EAAA,MAAA8B,IAAA9B,EAAA,MAAAoC;CAAA,IAAAC;CAAA,AAAArC,EAAA,QAAAX,mBAAAW,EAAA,QAAAgD,YAGHX,KAAAhD,mBACC,oBAAC,oBAAD;EACQ,MAAA,oBAAC,UAAD,CAAS,CAAA;EACN,eAAM2D,SAAS3E,eAAc+F,iBAAkB,EAAAzF,UAAWU,gBAAe,CAAC,CAAC;EAC/E,MAAA;EACG,SAAA;CAAe,CAAA,GAE1BW,EAAA,MAAAX,iBAAAW,EAAA,MAAAgD,UAAAhD,EAAA,MAAAqC,MAAAA,KAAArC,EAAA;CAAA,IAAAqE;CAAA,AAAArE,EAAA,QAAAa,OAAAC,IAAA,2BAAA,KAGOuD,KAAA,oBAAC,SAAD,CAAQ,CAAA,GAAGrE,EAAA,MAAAqE,MAAAA,KAAArE,EAAA;CAAA,IAAAsE;CAAA,AAAAtE,EAAA,QAAAX,mBAAAW,EAAA,QAAAgD,YADnBsB,MAAA,oBAAC,oBAAD;EACQ,MAAAD;EACG,eACPrB,SAAS3E,eAAckG,iBAAkB,EAAAC,gBAAiBnF,mBAAA,KAAuB,CAAC,CAAC;EAEhF,MAAA;EACG,SAAA;CAAe,CAAA,GACvBW,EAAA,MAAAX,iBAAAW,EAAA,MAAAgD,UAAAhD,EAAA,MAAAsE,OAAAA,MAAAtE,EAAA;CAAA,IAAAyE;CAAA,AAAAzE,EAAA,QAAAmD,mBAAAnD,EAAA,QAAAX,mBAAAW,EAAA,QAAAiE,sBAEDQ,MAAApF,mBAAA8D,mBACC,oBAAC,oBAAD;EACQ,MAAA,oBAAC,WAAD,CAAU,CAAA;EACPc,SAAAA;EACJ,MAAA;EACG,SAAA;CAAe,CAAA,GAE1BjE,EAAA,MAAAmD,iBAAAnD,EAAA,MAAAX,iBAAAW,EAAA,MAAAiE,oBAAAjE,EAAA,MAAAyE,OAAAA,MAAAzE,EAAA;CAAA,IAAA0E;CAAA,AAAA1E,EAAA,QAAAsE,OAAAtE,EAAA,QAAAyE,OAAAzE,EAAA,QAAAqC,MA1BHqC,MAAA,qBAAC,QAAD;EAAe,OAAA;EAAf,UAAA;GACGrC;GASDiC;GASCG;EAnBI;KA2BEzE,EAAA,MAAAsE,KAAAtE,EAAA,MAAAyE,KAAAzE,EAAA,MAAAqC,IAAArC,EAAA,MAAA0E,OAAAA,MAAA1E,EAAA;CAAA,IAAA2E;CAAA,AAAA3E,EAAA,QAAA0E,OAAA1E,EAAA,QAAAoC,MAhDXuC,MAAA,qBAAC,MAAD;EACQ,OAAA;EACE,SAAA;EACE,UAAA;EACH,OAAArE;EAJT,UAAA,CAUE8B,IAWAsC,GArBG;KAiDE1E,EAAA,MAAA0E,KAAA1E,EAAA,MAAAoC,IAAApC,EAAA,MAAA2E,OAAAA,MAAA3E,EAAA;CAAA,IAAA4E;CAAA,AAAA5E,EAAA,QAAAgD,WAO6D4B,MAAA5E,EAAA,OAAnD4E,YAAM5B,SAAS1E,eAAcuG,mBAAoB,CAAC,GAAC7E,EAAA,MAAAgD,UAAAhD,EAAA,MAAA4E;CAClD,IAAAE,MAAAzF,oBAAoB,MAEtB0F,MAAA1F,oBAAoB,OAApB,aAAA,UAAgD2F;CAAA,AAAAhF,EAAA,QAAA4E,OAAA5E,EAAA,QAAA8E,OAAA9E,EAAA,QAAA+E,OAL1DC,MAAA,oBAAC,UAAD;EACK,IAAA;EACM,SAAAJ;EACC,UAAAE;EACL,MAAA;EACG,QAAAC;CAAgD,CAAA,GACxD/E,EAAA,MAAA4E,KAAA5E,EAAA,MAAA8E,KAAA9E,EAAA,MAAA+E,KAAA/E,EAAA,MAAAgF,OAAAA,MAAAhF,EAAA;CAAA,IAAAiF;CAAA,IAAAjF,EAAA,QAAAX,mBAAAW,EAAA,QAAAV,eAAAU,EAAA,QAAAsD,cAAAtD,EAAA,QAAA8D,oBAAA;EAAA,IAAAoB;EAUAlF,AAVAA,EAAA,QAAAX,mBAAAW,EAAA,QAAAV,eAAAU,EAAA,QAAA8D,sBAEcoB,OAAAhG,SACd,oBAAC,YAAD;GACmBG;GACJC;GAEPJ;GACI4E,UAAAA;EAAkB,GAFvB5E,KAAIyD,EAEmB,GAE/B3C,EAAA,MAAAX,iBAAAW,EAAA,MAAAV,aAAAU,EAAA,MAAA8D,oBAAA9D,EAAA,MAAAkF,OAAAA,MAAAlF,EAAA,KARAiF,MAAA3B,WAAUT,IAAKqC,GAQf,GAAClF,EAAA,MAAAX,iBAAAW,EAAA,MAAAV,aAAAU,EAAA,MAAAsD,YAAAtD,EAAA,MAAA8D,oBAAA9D,EAAA,MAAAiF;CAAA,OAAAA,MAAAjF,EAAA;CAAA,IAAAkF;CAAA,AAAAlF,EAAA,QAAAgF,OAAAhF,EAAA,QAAAiF,OAAAjF,EAAA,QAAA2D,WAjBJuB,MAAA,qBAAC,MAAD;EAAW,KAAA;EAAX,UAAA,CACEF,KAQCC,GATE;CAActB,GAAAA,OAAd,GAkBE3D,EAAA,MAAAgF,KAAAhF,EAAA,MAAAiF,KAAAjF,EAAA,MAAA2D,SAAA3D,EAAA,MAAAkF,OAAAA,MAAAlF,EAAA;CAAA,IAAAmF;CAAA,AAAAnF,EAAA,QAAAoD,YAAApD,EAAA,QAAA4D,cAENuB,MAAA,CAACvB,cAAD,CAAgBR,YACf,oBAAC,KAAD;EAAgB,WAAA;EAAa,UAAA;EAC3B,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAChB,UAAA,oBAAA,MAAA,EAAA,UAAI,aAAe,CAAA;EADhB,CAAA;CADH,CAAA,GAKLpD,EAAA,MAAAoD,UAAApD,EAAA,MAAA4D,YAAA5D,EAAA,MAAAmF,OAAAA,MAAAnF,EAAA;CAAA,IAAAoF;CAAA,AAAApF,EAAA,QAAAkF,OAAAlF,EAAA,QAAAmF,OA5BLC,MAAA,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,qBAAC,KAAD,EAAA,UAAA,CACEF,KAoBCC,GArBC,EAAA,CAAA;CADF,CAAA,GA8BEnF,EAAA,MAAAkF,KAAAlF,EAAA,MAAAmF,KAAAnF,EAAA,MAAAoF,OAAAA,MAAApF,EAAA;CAAA,IAAAqF;CACD,OADCrF,EAAA,QAAA2E,OAAA3E,EAAA,QAAAoF,OAlFRC,MAAA,qBAAC,MAAD;EAAgB,WAAA;EAAe,MAAA;EAAU,QAAA;EAAzC,UAAA,CACEV,KAmDAS,GApDG;KAmFEpF,EAAA,MAAA2E,KAAA3E,EAAA,MAAAoF,KAAApF,EAAA,MAAAqF,OAAAA,MAAArF,EAAA,KAnFPqF;AAmFO;AArHQ,SAAApC,SAAAqC,OAAA;CAAA,OAEmCA,MAAKC,QAAQlG;AAAgB;AAFhE,SAAA6D,UAAAsC,SAAA;CAAA,OAGwBF,QAAKC,QAAQ3G;AAAK;AAH1C,SAAAyE,SAAAoC,SAAA;CAAA,OAK4BH,QAAKC,QAAQnC;AAAS;ACzKrE,MAAMiD,iBAAgBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACpB,EAAAL,UAAAC,QAAAK,OAGIH,OADM,EAAAI,OAAAD,IAGVE,WAAiBd,YAAY,GAACe;CAAA,AAAAL,EAAA,OAAAI,WAI7BC,KAAAL,EAAA,MAF+BK,WAAA;EAC9BD,SAASb,cAAae,MAAO,CAAC;CAAC,GAChCN,EAAA,KAAAI,UAAAJ,EAAA,KAAAK;CAFD,IAAAE,cAAoBF,IAENG;CAAA,AAAAR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KAIVF,KAAA,oBAAC,KAAD;EACS,OAAA;GAAAG,QACG;GAAMC,WACH;EACb;EAEA,UAAA,oBAAC,YAAD,CAAW,CAAA;CANT,CAAA,GAOEZ,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAa;CAGC,OAHDb,EAAA,OAAAJ,YAAAI,EAAA,OAAAO,eAAAP,EAAA,OAAAG,MARRU,KAAA,qBAAC,UAAD;EAAQ,SAAA;EAAe,QAAA;EAAcV;EAAaI,SAAAA;EAAoB,OAAA;EAAtE,UAAA,CACEC,IASCZ,QAVI;KAWEI,EAAA,KAAAJ,UAAAI,EAAA,KAAAO,aAAAP,EAAA,KAAAG,IAAAH,EAAA,KAAAa,MAAAA,KAAAb,EAAA,IAXTa;AAWS,GCtBPoB,cAAYT,uBAAmDT,GAAG,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EAACmB,SAASC,YAC5EV,GAAG,cACMI,eAAeK,SAAS,IAAI,EAAC,iBAC1BhB,IAAIiB,MAAMC,OAAOC,OAAO,EAAG,EAAC,EAEhD,GAEKC,eAAcC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAClB,EAAAV,UAAAC,UAA0BO,OAE1BG,SAAenB,oBAAoB,GAGnCoB,WAAiBrB,YAAY,GAACsB;CAAA,AAAAJ,EAAA,OAAAG,YAAAH,EAAA,OAAAR,MAAAa,MAEVD,WAAA;EAClBD,SAASjB,cAAaoB,iBAAkB,EAAAC,SAAUf,MAAKa,GAAG,CAAC,CAAC;CAAC,GAC9DL,EAAA,KAAAG,UAAAH,EAAA,KAAAR,MAAAa,IAAAL,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAFD,IAAAQ,cAAoBJ,IAEnBK;CAAA,AAAAT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAGqBF,KAAA;EAAC;EAAG;EAAG;CAAC,GAACT,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CAAA,IAAAY,IAAAC;CAAA,AAAAb,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KACdC,KAAA;EAAC;EAAc;EAAc;CAAQ,GAAcC,KAAA;EAAC;EAAU;EAAU;CAAK,GAACb,EAAA,KAAAY,IAAAZ,EAAA,KAAAa,OAAAD,KAAAZ,EAAA,IAAAa,KAAAb,EAAA;CAAA,IAAAc;CAAA,AAAAd,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAErEG,KAAA;EAAC;EAAG;EAAG;CAAC,GAACd,EAAA,KAAAc,MAAAA,KAAAd,EAAA;CAAA,IAAAe;CAAA,AAAAf,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAA+CI,KAAA;EAAC;EAAG;EAAG;CAAC,GAACf,EAAA,KAAAe,MAAAA,KAAAf,EAAA;CAAA,IAAAgB;CAAA,AAAAhB,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAG1EK,KAAA,EAAAC,YACO,SACd,GAACjB,EAAA,KAAAgB,MAAAA,KAAAhB,EAAA;CAAA,IAAAkB;CAAA,AAAAlB,EAAA,OAAAR,MAAA2B,QAICD,KAAAlB,EAAA,OATNkB,KAAA,oBAAC,KAAD;EAAoB,eAAAJ;EAAwB,aAAA;EAAiB,cAAA;EAAe,YAAAC;EAC1E,UAAA,oBAAC,OAAD;GACQ,MAAA;GACC,OAAAC;GAINxB,UAAAA,MAAK2B;EANF,CAAA;CADJ,CAAA,GASEnB,EAAA,KAAAR,MAAA2B,OAAAnB,EAAA,MAAAkB;CAAA,IAAAE;CAAA,AAAApB,EAAA,QAAAQ,cAUEY,KAAApB,EAAA,OAJNoB,KAAA,oBAAC,KAAD;EAAiB,YAAA;EAAa,UAAA;EAC5B,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAChB,UAAA,oBAAC,WAAD,EAAoBZ,SAAAA,YAAW,CAAA;EAD5B,CAAA;CADH,CAAA,GAIER,EAAA,MAAAQ,aAAAR,EAAA,MAAAoB;CAAA,IAAAC;CAAA,AAAArB,EAAA,QAAAT,YAAAS,EAAA,QAAAoB,MARRC,KAAA,qBAAC,MAAD;EAAY,OAAA;EAAZ,UAAA,CACG9B,UAGD6B,EAJG;KASEpB,EAAA,MAAAT,UAAAS,EAAA,MAAAoB,IAAApB,EAAA,MAAAqB,MAAAA,KAAArB,EAAA;CAAA,IAAAsB;CAAA,AAAAtB,EAAA,QAAAkB,MAAAlB,EAAA,QAAAqB,MAtBTC,MAAA,qBAAC,MAAD;EAAa,OAAAV;EAAmD,WAAAC;EAAhE,UAAA,CAEEK,IAWAG,EAbG;KAuBErB,EAAA,MAAAkB,IAAAlB,EAAA,MAAAqB,IAAArB,EAAA,MAAAsB,OAAAA,MAAAtB,EAAA;CAAA,IAAAuB;CACG,OADHvB,EAAA,QAAAE,UAAAF,EAAA,QAAAsB,OAxBTC,MAAA,oBAAC,aAAD;EAAoB,SAAAd;EAAoBP,SAAAA;EACtCoB,UAAAA;CADQ,CAAA,GAyBEtB,EAAA,MAAAE,QAAAF,EAAA,MAAAsB,KAAAtB,EAAA,MAAAuB,OAAAA,MAAAvB,EAAA,KAzBZuB;AAyBY,GCpDVM,mBAAkBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC,gBAAAC,IAAAN;CAAA,IAAAG,EAAA,OAAAD,OAAA;EACtB,IAAA,EAAAH,eAAAC,OAAAO,IAAA,GAAAC,OAAkDN;EAUjDC,AAVDH,QAAAO,IAAAF,iBAAAG,IAEqBF,MAAAG,MAAA;GACnB,IAAAC,MAAYD,EAACE,OAAOX;GAIpB,CAAIU,QAAQ,MAAME,aAAKC,KAAMH,GAAG,MAC9BX,cAAce,SAASJ,KAAK,EAAQ,KAAtB,EAAuB;EACtC,GACFP,EAAA,KAAAD,OAAAC,EAAA,KAAAE,gBAAAF,EAAA,KAAAG,IAAAH,EAAA,KAAAH;CAAA,OAAAA,AAAAK,iBAAAF,EAAA,IAAAG,KAAAH,EAAA,IAAAH,QAAAG,EAAA;CARD,IAAAY,eAAqBT,IAcVC,KAAAP,SAAA,IAAWQ;CAClB,OADkBL,EAAA,OAAAY,gBAAAZ,EAAA,OAAAE,kBAAAF,EAAA,OAAAI,MAHpBC,KAAA,oBAAC,WAAD;EAAU,GACJH;EACMU,UAAAA;EACH,OAAAR;CAAW,CAAA,GAClBJ,EAAA,KAAAY,cAAAZ,EAAA,KAAAE,gBAAAF,EAAA,KAAAI,IAAAJ,EAAA,KAAAK,MAAAA,KAAAL,EAAA,IAJFK;AAIE,GCPA2B,qBAAoBC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAJ,UAAAE,IAEzBG,WAAiBhB,YAAY,GAE7BiB,eAAqBf,sBAAsB,GAE3CgB,YAAkBP,OAAKO,WAAWC;CAAA,AAAAL,EAAA,OAAAH,MAAAS,YAAAN,EAAA,OAAAI,aACTC,KAAAR,OAAKS,WAC1BF,WAASG,MAAOD,aAAcA,SAAQE,SAAUX,OAAKS,QACxC,IAAbF,YAAS,IAAKJ,EAAA,KAAAH,MAAAS,UAAAN,EAAA,KAAAI,WAAAJ,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAFlB,IAAAS,mBAAyBJ,IAEPK;CAAA,AAAAV,EAAA,OAAAE,YAAAF,EAAA,OAAAH,MAAAc,MAEcD,MAAAE,iBAAA;EAC9BV,SAASb,cAAawB,iBAAkB;GAAAF,IAAKd,MAAKc;GAAGC;EAAc,CAAC,CAAC;CAAC,GACvEZ,EAAA,KAAAE,UAAAF,EAAA,KAAAH,MAAAc,IAAAX,EAAA,KAAAU,MAAAA,KAAAV,EAAA;CAFD,IAAAc,0BAAgCJ,IAE/BK;CAAA,AAAAf,EAAA,OAAAE,YAAAF,EAAA,OAAAH,MAAAc,MAE2BI,MAAAC,eAAA;EAC1Bd,SAASb,cAAawB,iBAAkB;GAAAF,IAAKd,MAAKc;GAAGL,UAAYA,WAAQE;EAAK,CAAC,CAAC;CAAC,GAClFR,EAAA,KAAAE,UAAAF,EAAA,KAAAH,MAAAc,IAAAX,EAAA,KAAAe,MAAAA,KAAAf,EAAA;CAFD,IAAAiB,sBAA4BF,IAE3BG;CAAA,AAAAlB,EAAA,OAAAE,YAAAF,EAAA,QAAAH,MAAAc,MAEyBO,MAAAC,UAAA;EACxBjB,SAASb,cAAawB,iBAAkB;GAAAF,IAAKd,MAAKc;GAAGQ;EAAO,CAAC,CAAC;CAAC,GAChEnB,EAAA,KAAAE,UAAAF,EAAA,MAAAH,MAAAc,IAAAX,EAAA,MAAAkB,MAAAA,KAAAlB,EAAA;CAFD,IAAAoB,oBAA0BF,IAI1BG,uBAAsDxB,MAAKe,gBAAL,eAAmCU;CAAA,AAAAtB,EAAA,QAAAH,MAAA0B,iBAAAvB,EAAA,QAAAc,2BAAAd,EAAA,QAAAG,gBAAAH,EAAA,QAAAqB,wBAKpFC,KAAAzB,OAAK0B,iBACJ,oBAAC,YAAD;EAEI,QAAA,oBAAC,QAAD;GACY,UAAA;GACC5C,WAAAA;GACF,SAAA;GACH,MAAAQ,UAAUkC,qBAAqB,CAAAG;EAAM,CAAA;EAG5C,IAAA;EAED,MAAA,oBAAC,MAAD,EAAA,UACG3B,MAAK0B,cAAcE,KAAKC,gBAAAC,UACnBf,iBAGA,oBAAC,UAAD;GACYgB,UAHGhB,mBAAiBS;GAIpB,UAAA;GAED,eAAMP,wBAAwBF,cAAY;GAC1C,SAAA;GACH,MAAAzB,UAAUyB,eAAa,CAAAY;EAAM,GAH9BZ,cAG8B,IAKlC,oBAAC,aAAD,CAAuB,GAALe,KAAK,CAC/B,EAjBE,CAAA;EAoBExB,SAAAA;CAAY,CAAA,GAExBH,EAAA,MAAAH,MAAA0B,eAAAvB,EAAA,MAAAc,yBAAAd,EAAA,MAAAG,cAAAH,EAAA,MAAAqB,sBAAArB,EAAA,MAAAsB,MAAAA,KAAAtB,EAAA;CAAA,IAAA6B;CAAA,AAAA7B,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAGuBF,KAAA,EAAAG,UAAW,OAAM,GAAChC,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA;CAO/B,IAAAiC,KAAApC,OAAKsB,OAAOe;CAAA,AAAAlC,EAAA,QAAAoB,qBAAApB,EAAA,QAAAiC,MAPvBC,KAAA,oBAAC,KAAD;EAAc,SAAA;EAAU,OAAAL;EACtB,UAAA,oBAAC,iBAAD;GACY,UAAA;GACKT,eAAAA;GACN,SAAA;GACD,QAAA;GACD,OAAA;GACA,OAAAa;EAAY,CAAA;CAPnB,CAAA,GASEjC,EAAA,MAAAoB,mBAAApB,EAAA,MAAAiC,IAAAjC,EAAA,MAAAkC,MAAAA,KAAAlC,EAAA;CAAA,IAAAmC;CAAA,AAAAnC,EAAA,QAAAH,MAAAS,YAAAN,EAAA,QAAAiB,uBAAAjB,EAAA,QAAAI,aAAAJ,EAAA,QAAAG,gBAAAH,EAAA,QAAAS,kBAAA2B,SAGLD,KAAA/B,aACC,oBAAC,YAAD;EAEI,QAAA,oBAAC,QAAD;GACY,UAAA;GACCzB,WAAAA;GACF,SAAA;GACH,MAAA8B,kBAAgB2B;EAAO,CAAA;EAG9B,IAAA;EAED,MAAA,oBAAC,MAAD,EAAA,UACGhC,UAASqB,KAAKY,eAAA;GACb,IAAAC,aAAiBhC,WAAQE,SAAUX,MAAKS;GAAS,OAE/C,oBAAC,UAAD;IACYsB,UAAAA;IACA,UAAA;IAED,eAAMX,oBAAoBX,UAAQ;IAClC,SAAA;IACH,MAAAA,WAAQ8B;GAAM,GAHf9B,WAAQE,IAGO;EACpB,CAEL,EAbE,CAAA;EAgBEL,SAAAA;CAAY,CAAA,GAExBH,EAAA,MAAAH,MAAAS,UAAAN,EAAA,MAAAiB,qBAAAjB,EAAA,MAAAI,WAAAJ,EAAA,MAAAG,cAAAH,EAAA,MAAAS,kBAAA2B,OAAApC,EAAA,MAAAmC,MAAAA,KAAAnC,EAAA;CAAA,IAAAuC;CACW,OADXvC,EAAA,QAAAH,SAAAG,EAAA,QAAAsB,MAAAtB,EAAA,QAAAkC,MAAAlC,EAAA,QAAAmC,MAjFHI,MAAA,qBAAC,aAAD;EAAoB1C;EAApB,UAAA;GAEGyB;GAqCDY;GAYCC;EAnDS;KAkFEnC,EAAA,MAAAH,OAAAG,EAAA,MAAAsB,IAAAtB,EAAA,MAAAkC,IAAAlC,EAAA,MAAAmC,IAAAnC,EAAA,MAAAuC,OAAAA,MAAAvC,EAAA,KAlFduC;AAkFc,GC7GZmB,qBAAoBC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAJ,UAAAE,IAEzBG,WAAiBf,YAAY,GAE7BgB,eAAqBd,sBAAsB,GAE3Ce,UAAgBP,OAAKO,SAASC;CAAA,AAAAL,EAAA,OAAAH,OAAAS,SAAAN,EAAA,OAAAI,WAETC,KAAAD,SAAOG,MAAOC,MAAOA,EAACC,SAAUZ,OAAKS,KAAO,GAACN,EAAA,KAAAH,OAAAS,OAAAN,EAAA,KAAAI,SAAAJ,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAAlE,IAAAU,eAAqBL,IAA6CM;CAAA,AAAAX,EAAA,OAAAE,YAAAF,EAAA,OAAAH,SAEtCc,MAAAC,WAAA;EAC1BV,SAASZ,cAAauB,aAAc;GAAAJ,MAAOZ,MAAKY;GAAKH,OAASM,OAAMH;EAAK,CAAC,CAAC;CAAC,GAC7ET,EAAA,KAAAE,UAAAF,EAAA,KAAAH,OAAAG,EAAA,KAAAW,MAAAA,KAAAX,EAAA;CAFD,IAAAc,sBAA4BH,IAE3BI;CAAA,AAAAf,EAAA,OAAAE,YAAAF,EAAA,OAAAH,SAE+BkB,MAAAC,iBAAA;EAC9Bd,SAASZ,cAAauB,aAAc;GAAAJ,MAAOZ,MAAKY;GAAKO;EAAc,CAAC,CAAC;CAAC,GACvEhB,EAAA,KAAAE,UAAAF,EAAA,KAAAH,OAAAG,EAAA,KAAAe,MAAAA,KAAAf,EAAA;CAFD,IAAAiB,0BAAgCF,IAIhCG,uBAAsDrB,OAAKmB,gBAAL,MAA2BG;CAAA,AAAAnB,EAAA,OAAAH,SAAAG,EAAA,QAAAiB,2BAAAjB,EAAA,QAAAG,gBAAAH,EAAA,QAAAkB,wBAK5EC,KAAAtB,OAAKuB,iBACJ,oBAAC,YAAD;EAEI,QAAA,oBAAC,KAAD;GAAkB,aAAA;GAChB,UAAA,oBAAC,QAAD;IACY,UAAA;IACCxC,WAAAA;IACF,SAAA;IACH,MAAAQ,UAAU8B,qBAAqB,CAAAG;GAAM,CAAA;EAL3C,CAAA;EASH,IAAA;EAED,MAAA,oBAAC,MAAD,EAAA,UACGxB,MAAKuB,cAAcE,KAAKC,gBAAAC,UACnBR,iBAGA,oBAAC,UAAD;GACYS,UAHGT,mBAAiBE;GAIpB,UAAA;GAED,eAAMD,wBAAwBD,cAAY;GAC1C,SAAA;GACH,MAAA5B,UAAU4B,eAAa,CAAAK;EAAM,GAH9BL,cAG8B,IAKlC,oBAAC,aAAD,CAAuB,GAALQ,KAAK,CAC/B,EAjBE,CAAA;EAoBErB,SAAAA;CAAY,CAAA,GAExBH,EAAA,KAAAH,OAAAG,EAAA,MAAAiB,yBAAAjB,EAAA,MAAAG,cAAAH,EAAA,MAAAkB,sBAAAlB,EAAA,MAAAmB,MAAAA,KAAAnB,EAAA;CAKiE,IAAA0B,KAAAhB,cAAYiB,OAAOC;CAAA,AAAA5B,EAAA,QAAA0B,KAAIE,KAAA5B,EAAA,OAArF4B,KAAA,oBAAC,QAAD;EAAkB,UAAA;EAAchD,WAAAA;EAAqB,SAAA;EAAS,MAAA8C;CAAmB,CAAA,GAAI1B,EAAA,MAAA0B,IAAA1B,EAAA,MAAA4B;CAAA,IAAAC;CAAA,AAAA7B,EAAA,QAAAc,uBAAAd,EAAA,QAAAI,WAAAJ,EAAA,QAAAU,cAAAD,QAKlFoB,KAAAzB,SAAOkB,KAAMQ,SAAA;EACZ,IAAAC,aAAiBD,KAAIrB,SAAUC,cAAYD;EAAM,OAE/C,oBAAC,UAAD;GACYgB,UAAAA;GACA,UAAA;GAED,eAAMX,oBAAoBgB,IAAI;GAC9B,SAAA;GACH,MAAAA,KAAIH;EAAM,GAHXG,KAAIrB,IAGO;CAChB,CAEL,GAACT,EAAA,MAAAc,qBAAAd,EAAA,MAAAI,SAAAJ,EAAA,MAAAU,cAAAD,MAAAT,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA;CAAA,IAAAgC;CAAA,AAAAhC,EAAA,QAAA6B,KACGG,KAAAhC,EAAA,OAdPgC,KAAA,oBAAC,MAAD,EAAA,UACGH,GADE,CAAA,GAcE7B,EAAA,MAAA6B,IAAA7B,EAAA,MAAAgC;CAAA,IAAAC;CAAA,AAAAjC,EAAA,QAAAG,gBAAAH,EAAA,QAAA4B,MAAA5B,EAAA,QAAAgC,MApBXC,KAAA,oBAAC,YAAD;EAEI,QAAAL;EAEC,IAAA;EAED,MAAAI;EAgBO7B,SAAAA;CAAY,CAAA,GACrBH,EAAA,MAAAG,cAAAH,EAAA,MAAA4B,IAAA5B,EAAA,MAAAgC,IAAAhC,EAAA,MAAAiC,MAAAA,KAAAjC,EAAA;CAAA,IAAAkC;CACU,OADVlC,EAAA,QAAAH,SAAAG,EAAA,QAAAmB,MAAAnB,EAAA,QAAAiC,MAhEJC,MAAA,qBAAC,aAAD;EAAoBrC;EAApB,UAAA,CAEGsB,IAuCDc,EAzCU;KAiEEjC,EAAA,MAAAH,OAAAG,EAAA,MAAAmB,IAAAnB,EAAA,MAAAiC,IAAAjC,EAAA,MAAAkC,OAAAA,MAAAlC,EAAA,KAjEdkC;AAiEc,GC1FZoB,qBAAoBC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAJ,UAAAE,IAEzBG,WAAiBd,YAAY,GAE7Be,eAAqBb,sBAAsB,GAACc;CAAA,AAAAJ,EAAA,OAAAE,YAAAF,EAAA,OAAAH,MAAAQ,MAEZD,MAAAE,iBAAA;EAC9BJ,SAASX,cAAagB,iBAAkB;GAAAF,IAAKR,MAAKQ;GAAGC;EAAc,CAAC,CAAC;CAAC,GACvEN,EAAA,KAAAE,UAAAF,EAAA,KAAAH,MAAAQ,IAAAL,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAFD,IAAAQ,0BAAgCJ,IAE/BK;CAAA,AAAAT,EAAA,OAAAE,YAAAF,EAAA,OAAAH,MAAAQ,MAEoBI,MAAAC,MAAA;EACnBR,SAASX,cAAagB,iBAAkB;GAAAF,IAAKR,MAAKQ;GAAGM,OAASD,EAACE,OAAOD;EAAM,CAAC,CAAC;CAAC,GAChFX,EAAA,KAAAE,UAAAF,EAAA,KAAAH,MAAAQ,IAAAL,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CAFD,IAAAa,eAAqBJ,IAIrBK,uBAAsDjB,MAAKS,cAAaS;CAAA,AAAAf,EAAA,OAAAH,MAAAmB,iBAAAhB,EAAA,OAAAQ,2BAAAR,EAAA,OAAAG,gBAAAH,EAAA,OAAAc,wBAKnEC,KAAAlB,OAAKmB,iBACJ,oBAAC,YAAD;EAEI,QAAA,oBAAC,QAAD;GACY,UAAA;GACCrC,WAAAA;GACF,SAAA;GACH,MAAAU,UAAUyB,qBAAqB,CAAAG;EAAM,CAAA;EAG5C,IAAA;EAED,MAAA,oBAAC,MAAD,EAAA,UACGpB,MAAKmB,cAAcE,KAAKC,gBAAAC,UACnBd,iBAGA,oBAAC,UAAD;GACYe,UAHGf,mBAAiBQ;GAIpB,UAAA;GAED,eAAMN,wBAAwBF,cAAY;GAC1C,SAAA;GACH,MAAAjB,UAAUiB,eAAa,CAAAW;EAAM,GAH9BX,cAG8B,IAKlC,oBAAC,aAAD,CAAuB,GAALc,KAAK,CAC/B,EAjBE,CAAA;EAoBEjB,SAAAA;CAAY,CAAA,GAExBH,EAAA,KAAAH,MAAAmB,eAAAhB,EAAA,KAAAQ,yBAAAR,EAAA,KAAAG,cAAAH,EAAA,KAAAc,sBAAAd,EAAA,MAAAe,MAAAA,KAAAf,EAAA;CAAA,IAAAsB;CAAA,AAAAtB,EAAA,QAAAH,MAAAc,SAAAX,EAAA,QAAAa,gBAAAb,EAAA,QAAAc,wBAGAQ,KAAA,CAACjC,UAAUyB,qBAAqB,CAAAS,aAC/B,oBAAC,KAAD;EAAiB,YAAA;EAAU,OAAA,EAAAC,UAAW,QAAO;EAC3C,UAAA,oBAAC,WAAD;GACY,UAAA;GACAX,UAAAA;GACD,SAAA;GACD,QAAA;GACD,OAAA;GACA,OAAAhB,OAAKc;EAAO,CAAA;CAPnB,CAAA,GAULX,EAAA,MAAAH,MAAAc,OAAAX,EAAA,MAAAa,cAAAb,EAAA,MAAAc,sBAAAd,EAAA,MAAAsB,MAAAA,KAAAtB,EAAA;CAAA,IAAAyB;CACW,OADXzB,EAAA,QAAAH,SAAAG,EAAA,QAAAe,MAAAf,EAAA,QAAAsB,MAlDHG,KAAA,qBAAC,aAAD;EAAoB5B;EAApB,UAAA,CAEGkB,IAqCAO,EAvCS;KAmDEtB,EAAA,MAAAH,OAAAG,EAAA,MAAAe,IAAAf,EAAA,MAAAsB,IAAAtB,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA,KAnDdyB;AAmDc,GC5EZ,EACJY,OAAO,EACLC,MAAM,EAACC,OAAOC,oBAEhBC,QAAQC,aACRC,OAAOC,eACLd,aAESe,qBAAqBC,YACzB;CACLC,UAAUC,QAAQ,EAACC,YAAYC,gBAAe;EAC5C,IAAIC,YAAY;EAOhB,OANID,cACFC,YAAY,mBAAmBf,eAAeU,QAAQ,oBAAoB,EAAC;oBAC/DV,eAAeU,QAAQ,KAAK,EAAC;6DAIpC;GACL,GAAGE;GACH,iBAAmB;GACnB,OAAS;GACT,QAAU;GACV,cAAgBN,YAAY;GAC5BS;GACA,UAAYX,eAAe,EAAE,CAAEY;GAC/B,WAAa;GACb,SAAWH,aAAa,KAAM;GAC9B,SAAW;GACX,YAAc;GACd,WAAW,EACTE,WAAW,mBAAmBf,eAAeU,QAAQ,oBAAoB,IAC3E;EACF;CACF;CACAO,QAAQL,YAAY;EAClB,GAAGA;EACHM,OAAO;EACPC,YAAYzB,YAAYO,MAAMC,KAAKkB;EACnCJ,UAAUZ,eAAe,EAAE,CAAEY;EAC7BK,YAAY5B,IAAIe,WAAW,EAAG;CAChC;CACAc,WAAWV,YAAY;EACrB,GAAGA;EACHW,SAAS;CACX;CACAC,mBAAmBZ,YAAY;EAC7B,GAAGA;EACHO,YAAYzB,YAAYO,MAAMC,KAAKkB;EACnCJ,UAAUZ,eAAe,EAAE,CAAEY;EAC7BS,YAAY;CACd;CACAC,SAASd,QAAQ,EAACE,iBAAgB;EAChC,GAAGF;EACH,iBAAmBE,YAAYd,eAAeU,QAAQ,UAAU,IAAI;EACpE,cAAgBJ,YAAY;EAC5B,OAASQ,YAAYd,eAAeU,QAAQ,IAAI,IAAI;EACpD,UAAYN,eAAe,EAAE,CAAEY;EAC/B,YAAc;EACd,QAAU;EACV,SAAWvB,IAAIe,WAAW,EAAG;EAC7B,WAAW;GACTmB,iBAAiB3B,eAAeU,QAAQ,UAAU;GAClDQ,OAAOlB,eAAeU,QAAQ,IAAI;EACpC;CACF;CACAkB,cAAchB,YAAY;EACxB,GAAGA;EACHI,UAAUZ,eAAe,EAAE,CAAEY;EAC7BK,YAAY5B,IAAIe,WAAW,EAAG;EAC9BqB,aAAa;CACf;CACAC,cAAclB,YAAY;EACxB,GAAGA;EACHmB,YAAY;EACZC,SAAS;EACTC,QAAQ;EACRZ,YAAY5B,IAAIe,WAAW,EAAG;CAChC;CACA0B,iBAAiBtB,YAAY;EAC3B,GAAGA;EACHuB,QAAQ;EACRZ,SAAS;CACX;AACF,IAGIa,kBAAiBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAKRF,KAAA,EAAAG,WACM,cACb,GAACL,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAA,IAAAM;CAAA,AAAAN,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAJHE,KAAA,oBAAC,KAAD;EACgB,cAAA;EACP,OAAAJ;EAIP,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAChB,UAAA,oBAAC,WAAD,CAAU,CAAA;EADP,CAAA;CANH,CAAA,GASEF,EAAA,KAAAM,MAAAA,KAAAN,EAAA;CAAA,IAAAO;CACoB,OADpBP,EAAA,OAAAD,QACoBQ,KAAAP,EAAA,MAX5BO,KAAA,oBAAA,WAAA,gBAAA;EAAA,GAA+BR;EAC7BO,UAAAA;CAUF,CAAA,GAA4BN,EAAA,KAAAD,OAAAC,EAAA,KAAAO,KAX5BA;AAW4B,GAI1BC,UAAOT,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAD,MAAAU,WAKAP,KAAAF,EAAA,MAFPE,KAAA,oBAAC,MAAD;EAAc,QAAA;EAAW,QAAA;EACtBH,UAAAA,MAAKU;CADH,CAAA,GAEET,EAAA,KAAAD,MAAAU,UAAAT,EAAA,KAAAE;CAAA,IAAAI;CACS,OADTN,EAAA,OAAAD,SAAAC,EAAA,OAAAE,MAHTI,KAAA,oBAAA,WAAA,MAAA;EAAA,GAAqBP;EACnBG,UAAAA;CAGF,CAAA,GAAkBF,EAAA,KAAAD,OAAAC,EAAA,KAAAE,IAAAF,EAAA,KAAAM,MAAAA,KAAAN,EAAA,IAJlBM;AAIkB,GAIhBI,YAAWX,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACf,EAAAQ,aAAmBV;CAKnB,IAAIY,MAAKC,QAASH,QAAQ,GAAC;EACzB,IAAAd,SACEc,SAAQI,SALK,IAKb,MAAwDJ,SAAQI,SAJ9C,IAIqEX;EAAA,AAAAF,EAAA,OAAAS,WAQpFP,KAAAF,EAAA,MAHYE,MAAAY,UAAA;GACX,IAAAC,OAAaN,SAASK;GAAM,OACrB,oBAAC,QAAD,EAAO,GAAKC,KAAIhB,MAAM,CAAA;EAAI,GAClCC,EAAA,KAAAS,UAAAT,EAAA,KAAAE;EAAA,IAAAI;EAAA,AAAAN,EAAA,OAAAL,SACcW,KAAAN,EAAA,MAARM,KAAA,EAAAX,OAAO,GAACK,EAAA,KAAAL,QAAAK,EAAA,KAAAM;EAAA,IAAAC;EAEf,OAFeP,EAAA,OAAAS,SAAAI,UAAAb,EAAA,OAAAE,MAAAF,EAAA,OAAAM,MANjBC,KAAA,oBAAC,UAAD;GACY,WAAA;GACG,aAAAL;GAIN,OAAAI;GACK,YAAAG,SAAQI;EAAO,CAAA,GAC3Bb,EAAA,KAAAS,SAAAI,QAAAb,EAAA,KAAAE,IAAAF,EAAA,KAAAM,IAAAN,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IARFO;CAQE;CAEL,IAAAL;CACsE,OADtEF,EAAA,OAAAS,YAAAT,EAAA,OAAAD,SACMG,KAAA,oBAAA,WAAA,UAAA;EAAA,GAAyBH;EAAQU;CAAS,CAAA,GAAsBT,EAAA,KAAAS,UAAAT,EAAA,KAAAD,OAAAC,EAAA,MAAAE,MAAAA,KAAAF,EAAA,KAAhEE;AAAgE,GAGnEc,oBAAmBjB,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CACsE,OADtEF,EAAA,OAAAD,QACsEG,KAAAF,EAAA,MAAtFE,KAAA,oBAAA,WAAA,kBAAA;EAAA,GAAiCH;EAAQA,UAAAA,MAAKU;CAAU,CAAA,GAA8BT,EAAA,KAAAD,OAAAC,EAAA,KAAAE,KAAtFA;AAAsF,GAGzFe,UAASlB,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAKiBF,KAAA,EAAAtB,OAAQ,UAAS,GAACoB,EAAA,KAAAE,MAAAA,KAAAF,EAAA;CAAA,IAAAM;CAAA,AAAAN,EAAA,OAAAD,MAAAU,WAGpCH,KAAAN,EAAA,MAJNM,KAAA,oBAAC,KAAD;EAAe,UAAA;EACb,UAAA,oBAAC,MAAD;GAAY,MAAA;GAAU,OAAAJ;GAAiC,cAAA;GACpDH,UAAAA,MAAKU;EADH,CAAA;CADH,CAAA,GAIET,EAAA,KAAAD,MAAAU,UAAAT,EAAA,KAAAM;CAAA,IAAAC;CAEJ,OAFIP,EAAA,OAAAD,SAAAC,EAAA,OAAAM,MANVC,KAAA,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,oBAAA,WAAA,QAAA;GAAA,GAAuBR;GACrBO,UAAAA;EAKF,CAAA;CAPE,CAAA,GAQEN,EAAA,KAAAD,OAAAC,EAAA,KAAAM,IAAAN,EAAA,KAAAO,MAAAA,KAAAP,EAAA,IARNO;AAQM,GAIJW,eAAcnB,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAD,MAAAU,WAKPP,KAAAF,EAAA,MAFPE,KAAA,oBAAC,MAAD;EAAY,MAAA;EAAgB,cAAA;EACzBH,UAAAA,MAAKU;CADH,CAAA,GAEET,EAAA,KAAAD,MAAAU,UAAAT,EAAA,KAAAE;CAAA,IAAAI;CACgB,OADhBN,EAAA,OAAAD,SAAAC,EAAA,OAAAE,MAHTI,KAAA,oBAAA,WAAA,aAAA;EAAA,GAA4BP;EAC1BG,UAAAA;CAGF,CAAA,GAAyBF,EAAA,KAAAD,OAAAC,EAAA,KAAAE,IAAAF,EAAA,KAAAM,MAAAA,KAAAN,EAAA,IAJzBM;AAIyB,GAIhBa,wBAAwB;CACnCrB;CACAsB,mBAAmB;CACnBC,oBAAoB;CACpBb,MAAAA;CACAE;CACAM;CACAC;CACAC;AACF,GC7JM8B,mBAAkBC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAJ,UAAAE,IACvBG,SAAerB,oBAAoB,GAGnCsB,WAAiBxB,YAAY,GAC7B,EAAAyB,oBAA0BrB,eAAe,GACzCsB,UAAgBpB,iBAAiBqB,QAA4B,GAACC;CAAA,AAAAP,EAAA,OAAAI,mBAAAJ,EAAA,OAAAK,WAE5DE,KAAAH,gBAAeI,SAAU,IACrBH,QAAOI,QAAQC,MAAO,CAACN,gBAAeO,SAAUD,EAACE,IAAIC,KAAKC,OAAQ,CAC5D,IAFVT,SAEWL,EAAA,KAAAI,iBAAAJ,EAAA,KAAAK,SAAAL,EAAA,KAAAO,MAAAA,KAAAP,EAAA;CAHb,IAAAe,OACER,IAGFS,eAAqB/B,iBAAiBgC,SAA8B,GAACC;CAAA,AAAAlB,EAAA,OAAAe,OACtBG,KAAAlB,EAAA,MAAzBkB,KAAAxB,oBAAoBqB,IAAI,GAACf,EAAA,KAAAe,MAAAf,EAAA,KAAAkB;CAA/C,IAAAC,gBAAsBD,IAEtBE,eAAqBpC,sBAAsB,GAACqC;CAAA,AAAArB,EAAA,OAAAG,YAAAH,EAAA,OAAAH,MAAAyB,MAEvBD,MAAAE,WAAA;EACnBpB,SACEjB,cAAasC,iBAAkB;GAAAF,IACzBzB,MAAKyB;GAAGG,OACLF;EACT,CAAC,CACH;CAAC,GACFvB,EAAA,KAAAG,UAAAH,EAAA,KAAAH,MAAAyB,IAAAtB,EAAA,KAAAqB,MAAAA,KAAArB,EAAA;CAPD,IAAA0B,eAAqBL,IAOpBM;CAAA,AAAA3B,EAAA,OAAAG,YAAAH,EAAA,OAAAH,MAAAyB,MAE+BK,MAAAC,iBAAA;EAC9BzB,SACEjB,cAAasC,iBAAkB;GAAAF,IACzBzB,MAAKyB;GAAGM;EAEd,CAAC,CACH;CAAC,GACF5B,EAAA,KAAAG,UAAAH,EAAA,KAAAH,MAAAyB,IAAAtB,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA;CAPD,IAAA6B,0BAAgCF,IAShCG,uBAAsDjC,MAAK+B,cAAaG;CAAA,AAAA/B,EAAA,QAAAH,MAAAmC,iBAAAhC,EAAA,QAAA6B,2BAAA7B,EAAA,QAAAoB,gBAAApB,EAAA,QAAA8B,wBAKnEC,KAAAlC,OAAKmC,iBACJ,oBAAC,YAAD;EAEI,QAAA,oBAAC,QAAD;GACY,UAAA;GACC5D,WAAAA;GACF,SAAA;GACH,MAAAU,UAAUgD,qBAAqB,CAAAG;EAAM,CAAA;EAG5C,IAAA;EAED,MAAA,oBAAC,MAAD,EAAA,UACGpC,MAAKmC,cAAcE,KAAKC,gBAAAC,UACnBR,iBAGA,oBAAC,UAAD;GACYS,UAHGT,mBAAiBE;GAIpB,UAAA;GAED,eAAMD,wBAAwBD,cAAY;GAC1C,SAAA;GACF,OAAA;GACA,OAAA,EAAAU,UAAW,QAAO;GACnB,MAAAxD,UAAU8C,eAAa,CAAAK;EAAM,GAL9BL,cAK8B,IAKlC,oBAAC,aAAD,CAAuB,GAALQ,KAAK,CAC/B,EAnBE,CAAA;EAsBEhB,SAAAA;CAAY,CAAA,GAExBpB,EAAA,MAAAH,MAAAmC,eAAAhC,EAAA,MAAA6B,yBAAA7B,EAAA,MAAAoB,cAAApB,EAAA,MAAA8B,sBAAA9B,EAAA,MAAA+B,MAAAA,KAAA/B,EAAA;CAAA,IAAAuC;CAAA,AAAAvC,EAAA,QAAAmB,iBAAAnB,EAAA,QAAAH,MAAA4B,SAAAzB,EAAA,QAAA0B,gBAAA1B,EAAA,QAAAE,UAAAF,EAAA,QAAA8B,wBAAA9B,EAAA,QAAAgB,gBAGAuB,KAAA,CAACzD,UAAUgD,qBAAqB,CAAAU,aAC/B,oBAAC,KAAD;EAAc,SAAA;EAAU,OAAA,EAAAC,OAAQ,QAAO;EACrC,UAAA,oBAAC,QAAD;GACcrD,YAAAA;GACD,YAAA;GACX,aAAA;GACY4B,YAAAA;GACZ,cAAA;GACK,MAAA;GACa,kBAAA0B;GACR,WAAAjB,UAAgBC,aAAaD,KAAwB;GACtDN,SAAAA;GACI,aAAAH,eAAA,eAAA;GACL,QAAA3B,kBAAkBa,MAAM;GACzB,OAAAL,OAAK4B;EAAO,CAAA;CAbnB,CAAA,GAgBLzB,EAAA,MAAAmB,eAAAnB,EAAA,MAAAH,MAAA4B,OAAAzB,EAAA,MAAA0B,cAAA1B,EAAA,MAAAE,QAAAF,EAAA,MAAA8B,sBAAA9B,EAAA,MAAAgB,cAAAhB,EAAA,MAAAuC,MAAAA,KAAAvC,EAAA;CAAA,IAAA2C;CACW,OADX3C,EAAA,QAAAH,SAAAG,EAAA,QAAA+B,MAAA/B,EAAA,QAAAuC,MA1DHI,KAAA,qBAAC,aAAD;EAAoB9C;EAApB,UAAA,CAEGkC,IAuCAQ,EAzCS;KA2DEvC,EAAA,MAAAH,OAAAG,EAAA,MAAA+B,IAAA/B,EAAA,MAAAuC,IAAAvC,EAAA,MAAA2C,MAAAA,KAAA3C,EAAA,KA3Dd2C;AA2Dc;AAhGM,SAAArC,SAAAsC,OAAA;CAAA,OAMsBzD,WAAWyD,KAAK;AAAC;AANvC,SAAA3B,UAAA4B,SAAA;CAAA,OAW2BD,QAAK7B,KAAK+B;AAAS;AAX9C,SAAAJ,WAAA;CAAA,OAuFY;AAAS;ACpG7C,MAAMmB,iBAAiBT,uBAAOJ,IAAI,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EAACc,YAC7BT,GAAG,qBAEWH,IAAIY,MAAMC,OAAOC,MAAM,EAAG,EAAC,GAGjD,GAEKC,gBAAeC,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACnB,EAAAR,QAAAS,OAA4BH,OAArBN,SAAAS,OAAAC,KAAAA,IAAA,WAAAD,IAGPE,eAAqBjB,iBAAiBkB,QAA8B,GAACC;CAAA,AAAAN,EAAA,OAAAI,eAqBnEE,KAAAN,EAAA,MAnBYM,KAAAF,aAAYG,IAAKC,SAmB9B,GAACR,EAAA,KAAAI,cAAAJ,EAAA,KAAAM;CAnBF,IAAAG,QAAcH;CAqBd,IAAIb,WAAW,UAAQ;EACrB,IAAIW,aAAYM,WAAY,GAAC,OACpB;EACR,IAAAC;EAKO,OALPX,EAAA,OAAAS,QAKOE,KAAAX,EAAA,MAFNW,KAAA,oBAAC,KAAD;GAAmB,cAAA;GACjB,UAAA,oBAAC,QAAD;IAAe,OAAA;IAAIF,UAAAA;GAAZ,CAAA;EADL,CAAA,GAEET,EAAA,KAAAS,OAAAT,EAAA,KAAAW,KAFNA;CAEM;CAIV,IAAIlB,WAAW,SAAO;EAAA,IAAAkB;EAID,OAJCX,EAAA,OAAAS,QAIDE,KAAAX,EAAA,MAFjBW,KAAA,oBAAC,gBAAD;GAAsB,OAAA;GAAuB,WAAA;GAC1CF,UAAAA;EADY,CAAA,GAEET,EAAA,KAAAS,OAAAT,EAAA,KAAAW,KAFjBA;CAEiB;CAIrB,MAAMC,MAAM,gBAAgB;AAAC;AA/CV,SAAAP,SAAAQ,OAAA;CAAA,OAI8BA,MAAKC,OAAOC;AAAO;AAJjD,SAAAP,UAAAQ,OAAA;CAOjB,IAAAC,MAAYD,MAAKE;CAehB,OAdGF,MAAKG,SAAU,WACV,oBAAC,mBAAD,EAA0BH,MAAe,GAAHC,GAAG,IAG9CD,MAAKG,SAAU,eACV,oBAAC,iBAAD,EAAwBH,MAAe,GAAHC,GAAG,IAG5CD,MAAKG,SAAU,WACV,oBAAC,mBAAD,EAA0BH,MAAe,GAAHC,GAAG,IAG9CD,MAAKG,SAAU,WACV,oBAAC,mBAAD,EAA0BH,MAAe,GAAHC,GAAG,IAG3C;AAAI;AClCf,MAAMoB,4BAAsB;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAE1BC,WAAiBZ,YAAY,GAC7Ba,aAAmBT,iBAAiBU,QAAkC,GACtEC,eAAqBX,iBAAiBY,SAA8B,GACpEC,mBAAyBb,iBAAiBc,QAAkC,GAE5EC,eAAqBhB,sBAAsB,GAE3C,EAAAiB,eAAqBlB,eAAe,GAEpCmB,SAAe,CAACJ,kBAAgBK,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;CAAA,IAAAjB,EAAA,OAAAG,cAAAH,EAAA,OAAAU,YAAAQ,WAAAlB,EAAA,OAAAE,YAAAF,EAAA,OAAAW,UAAAX,EAAA,OAAAK,cAAA;EAAA,IAAAc;EAAA,AAAAnB,EAAA,QAAAG,cAAAH,EAAA,QAAAU,YAAAQ,WAAAlB,EAAA,QAAAW,UAItBQ,MAAAC,UAEF,CAACV,YAAUQ,WAAaE,OAAKC,SAAW,YAAYD,OAAKE,SAAW,eAC/D,KAGLF,MAAKC,SAAU,WAAWD,MAAKC,SAAU,YACpC,KAGLV,SACK,CAACS,OAAKG,aAGYH,MAAKjB,WAAWsB,QAAQC,cACjDvB,WAAUwB,SAAUD,SAAS,CAExBF,CAAkB,CAAAI,SAAU,GACpC5B,EAAA,MAAAG,YAAAH,EAAA,MAAAU,YAAAQ,SAAAlB,EAAA,MAAAW,QAAAX,EAAA,MAAAmB,MAAAA,KAAAnB,EAAA;EApBH,IAAA6B,iBAAuBtC,OAAMkC,OAEnBN,EAkBP,CAAC,CAAAM,OAEMK,QAWP,GAEHC,kBAAwBF,eAAcD,SAAU,GAEhDI,oBAAyBC,UAAAC,OAAA;GAEvB,IAAAC,QAAAD,OAAAE,KAAAA,IAAA,IAAAF;GAAiB,OAGf,oBAAA,UAAA,EAAA,UACGG,UAAMC,KAAMC,SAAAC,YAAA;IACX,IAAIpB,QAAKC,SAAU,WAAS,OACnB,oBAAC,aAAD,CAAuB,GAALoB,OAAK;IAIhC,IAAIrB,QAAKC,SAAU,SAAO,OAEtB,oBAAC,WAAD;KAAiD,MAAAD,QAAKsB;KAAe,OAAAtB,QAAKsB;KACvEV,UAAAA,iBAAiBZ,QAAKiB,QAASF,QAAQ,CAAC;IADjC,GAAM,SAASA,MAAK,GAAIM,SAAxB;IAMd,IAAIrB,SAAK;KACP,IAAAuB,WACE,CAACvB,QAAKwB,iBAAN,CAAyB,CAACvC,aAAYwC,MAAMC,MAAOA,EAACxB,SAAUF,QAAKE,IAAK;KAAC,OAGzE,oBAAC,UAAD;MACYqB;MACA,UAAA;MAED,eAAMzC,SAASP,cAAaoD,UAAW,EAAA3B,OAACA,QAAK,CAAC,CAAC;MAC/C,SAAA;MACH,MAAAA,QAAKsB;KAAM,GAHZtB,QAAKE,IAGO;IACjB;IAEL,OAEM;GAAI,CACZ,EAAC,CAAA;EACD;EAOFT,AAFFC,KAAA9B,MAEE6B,KAAA3B;EAGe,IAAA8D,KAAA,CAACjB;EAU8B/B,AAVfA,EAAA,QAAAgD,KAO1BhC,KAAAhB,EAAA,OARFgB,KAAA,oBAAC,QAAD;GACY,UAAAgC;GACA,UAAA;GACJlE,MAAAA;GACD,MAAA;GACE,OAAA;GACF,MAAA;GACA,MAAA;EAAS,CAAA,GACdkB,EAAA,MAAAgD,IAAAhD,EAAA,MAAAgB,KAEDC,KAAA,UACIL,KAAA3B,MAAM8B,KAAAiB,iBAAiBH,cAAc,GAAC7B,EAAA,KAAAG,YAAAH,EAAA,KAAAU,YAAAQ,SAAAlB,EAAA,KAAAE,UAAAF,EAAA,KAAAW,QAAAX,EAAA,KAAAK,cAAAL,EAAA,KAAAY,IAAAZ,EAAA,KAAAa,IAAAb,EAAA,KAAAc,IAAAd,EAAA,KAAAe,IAAAf,EAAA,KAAAgB,IAAAhB,EAAA,MAAAiB;CAAA,OAAAA,AAAAL,KAAAZ,EAAA,IAAAa,KAAAb,EAAA,IAAAc,KAAAd,EAAA,IAAAe,KAAAf,EAAA,IAAAgB,KAAAhB,EAAA,IAAAiB,KAAAjB,EAAA;CAAA,IAAAmB;CAAA,AAAAnB,EAAA,QAAAY,MAAAZ,EAAA,QAAAe,MAAvCI,KAAA,oBAAC,IAAD,EAAA,UAAOJ,GAAF,CAAA,GAA0Cf,EAAA,MAAAY,IAAAZ,EAAA,MAAAe,IAAAf,EAAA,MAAAmB,MAAAA,KAAAnB,EAAA;CAAA,IAAAkC;CAAA,AAAAlC,EAAA,QAAAS,eAIpDyB,KAAAlC,EAAA,OAHQkC,KAAA;EAAA,GACJzB;EAAYwC,WACJ;CACb,GAACjD,EAAA,MAAAS,cAAAT,EAAA,MAAAkC;CAAA,IAAAc;CAAA,AAAAhD,EAAA,QAAAa,MAAAb,EAAA,QAAAgB,MAAAhB,EAAA,QAAAiB,MAAAjB,EAAA,QAAAmB,MAAAnB,EAAA,QAAAkC,MAjBHc,KAAA,oBAAC,IAAD;EAEI,QAAAhC;EAUC,IAAAC;EACG,MAAAE;EACG,SAAAe;CAGR,CAAA,GACDlC,EAAA,MAAAa,IAAAb,EAAA,MAAAgB,IAAAhB,EAAA,MAAAiB,IAAAjB,EAAA,MAAAmB,IAAAnB,EAAA,MAAAkC,IAAAlC,EAAA,MAAAgD,MAAAA,KAAAhD,EAAA;CAAA,IAAAkD;CAAA,AAAAlD,EAAA,QAAAE,YAAAF,EAAA,QAAAK,aAAAuB,UAGDsB,KAAA7C,aAAYuB,SAAU,KACrB,oBAAC,QAAD;EACY,UAAA;EACL,MAAA;EACI,eAAM1B,SAASP,cAAawD,YAAa,CAAC;EAC9C,MAAA;CAAO,CAAA,GAEfnD,EAAA,MAAAE,UAAAF,EAAA,MAAAK,aAAAuB,QAAA5B,EAAA,MAAAkD,MAAAA,KAAAlD,EAAA;CAAA,IAAAoD;CACI,OADJpD,EAAA,QAAAc,MAAAd,EAAA,QAAAgD,MAAAhD,EAAA,QAAAkD,MA9BHE,KAAA,qBAAC,IAAD,EAAA,UAAA,CAEEJ,IAqBCE,EAvBE,EAAA,CAAA,GA+BElD,EAAA,MAAAc,IAAAd,EAAA,MAAAgD,IAAAhD,EAAA,MAAAkD,IAAAlD,EAAA,MAAAoD,MAAAA,KAAApD,EAAA,KA/BPoD;AA+BO;AA5HiB,SAAAhD,SAAAiD,OAAA;CAAA,OAGqBA,MAAKC,OAAOnD;AAAW;AAH5C,SAAAG,UAAAiD,SAAA;CAAA,OAIuBF,QAAKG,OAAOnB;AAAO;AAJ1C,SAAA7B,SAAAiD,SAAA;CAAA,OAK2BJ,QAAKK,SAASC;AAAS;AALlD,SAAA7B,SAAA8B,SAAAnB,OAAAJ,QAAA;CAoCtB,IAAAwB,gBAAsBxB,OAAOI,QAAQ;CAQpC,OAFD,EAJIrB,QAAKC,SAAU,cAAcoB,UAAU,KAAKA,UAAUJ,OAAMT,SAAU,MAItER,QAAKC,SAAU,aAAawC,eAAaxC,SAAW;AAG7C;ACzCjB,MAAMqD,sBAAqBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACzB,EAAAL,UAAAC,QAAAK,OAGIH,OADM,EAAAI,OAAAD,IAIVE,WAAiBf,YAAY,GAACgB;CAAA,AAAAL,EAAA,OAAAI,WAK7BC,KAAAL,EAAA,MAF+BK,WAAA;EAC9BD,SAASd,cAAagB,MAAO,CAAC;CAAC,GAChCN,EAAA,KAAAI,UAAAJ,EAAA,KAAAK;CAFD,IAAAE,cAAoBF,IAENG;CAAA,AAAAR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KAIVF,KAAA,qBAAC,KAAD;EAAc,SAAA;EAAd,UAAA,CACE,oBAAC,cAAD,EAAqB,QAAA,QAAO,CAAA,GAC5B,oBAAC,qBAAD,CAAoB,CAAA,CAFlB;KAGER,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAW;CAGC,OAHDX,EAAA,OAAAJ,YAAAI,EAAA,OAAAO,eAAAP,EAAA,OAAAG,MAJRQ,KAAA,qBAAC,UAAD;EAAQ,SAAA;EAAe,QAAA;EAAcR;EAAaI,SAAAA;EAAoB,OAAA;EAAtE,UAAA,CACEC,IAKCZ,QANI;KAOEI,EAAA,KAAAJ,UAAAI,EAAA,KAAAO,aAAAP,EAAA,KAAAG,IAAAH,EAAA,KAAAW,MAAAA,KAAAX,EAAA,IAPTW;AAOS,GChBPsB,mBAAkBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACtB,EAAAL,UAAAC,QAAAK,OAGIH,OADM,EAAAI,OAAAD,IAGVE,WAAiBrB,YAAY,GAE7BsB,WAAiBpB,iBAAiBqB,QAA8B,GAChEC,gBAAsBtB,iBAAiBuB,SAAmC,GAACC;CAAA,AAAAT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAS1DF,KAAA,EAAAG,MACP,GACR,GAACZ,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CAAA,IAAAa;CAAA,AAAAb,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAHsBE,KAAA;EAAAC,eACRL;EAEdM,MACK;EAAUC,UACNzB,gBAA6BP,aAAa;CACtD,GAACgB,EAAA,KAAAa,MAAAA,KAAAb,EAAA;CAZD,IAAA,EAAAiB,WAAAC,IAAAC,cAAAC,UAAAC,aAMIvC,QAAqB+B,EAMxB,GAVY,EAAAS,QAAAC,SAAAC,YAAAN,IAYbO,eAAqBpB,UAAQqB;CAAA,AAAA1B,EAAA,OAAAI,WAI5BsB,KAAA1B,EAAA,MAFmB0B,WAAA;EAClBtB,SAASlB,cAAayC,MAAO,CAAC;CAAC,GAChC3B,EAAA,KAAAI,UAAAJ,EAAA,KAAA0B;CAFD,IAAAE,cAAoBF,IAEnBG;CAAA,AAAA7B,EAAA,OAAAI,WAOAyB,KAAA7B,EAAA,MAJ4C6B,MAAAC,aAAA;EAC3C,IAAAC,oBAA0BzC,iBAAiBwC,QAAQ;EAEnD1B,SAASjB,YAAW6C,cAAe,EAAApB,MAAOmB,kBAAiBnB,KAAQ,CAAC,CAAC;CAAC,GACvEZ,EAAA,KAAAI,UAAAJ,EAAA,KAAA6B;CAJD,IAAAI,WAA6CJ,IAI5CK,IAAAC;CAEDvD,AAFCoB,EAAA,OAAAO,iBAAAP,EAAA,OAAAqB,YAESa,WAAA;EACR,AAAI3B,iBACFc,SAAS,QAAQ,EAAAe,SACN7B,eAAa6B,QACxB,CAAC;CACF,GACAD,KAAA,CAAC5B,eAAec,QAAQ,GAACrB,EAAA,KAAAO,eAAAP,EAAA,KAAAqB,UAAArB,EAAA,KAAAkC,IAAAlC,EAAA,KAAAmC,OAAAD,KAAAlC,EAAA,IAAAmC,KAAAnC,EAAA,KAN5BpB,UAAUsD,IAMPC,EAAyB;CAAC,IAAAE;CAAA,AAAArC,EAAA,QAAAyB,gBAAAzB,EAAA,QAAAmB,gBAAAnB,EAAA,QAAAuB,WAAAvB,EAAA,QAAAwB,WAAAxB,EAAA,QAAAiC,YAEdI,WACb,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,oBAAC,MAAD;GAAc,SAAA;GAEZ,UAAA,oBAAC,kBAAD;IACY,UAAAZ,gBAAA,CAAiBF,WAAjB,CAA6BC;IAC9BA;IACA,SAAAL,aAAac,QAAQ;GAAC,CAAA;EAL9B,CAAA;CADH,CAAA,GAULjC,EAAA,MAAAyB,cAAAzB,EAAA,MAAAmB,cAAAnB,EAAA,MAAAuB,SAAAvB,EAAA,MAAAwB,SAAAxB,EAAA,MAAAiC,UAAAjC,EAAA,MAAAqC,MAAAA,KAAArC,EAAA;CAXD,IAAAsC,SAAeD,IAWdE;CAAA,AAAAvC,EAAA,QAAAsC,SAMqBC,KAAAvC,EAAA,OAAVuC,KAAA,oBAAC,QAAD,CAAO,CAAA,GAAGvC,EAAA,MAAAsC,QAAAtC,EAAA,MAAAuC;CAAA,IAAAC;CAAA,AAAAxC,EAAA,QAAAmB,gBAAAnB,EAAA,QAAAiC,YAOmBO,MAAArB,aAAac,QAAQ,GAACjC,EAAA,MAAAmB,cAAAnB,EAAA,MAAAiC,UAAAjC,EAAA,MAAAwC,OAAAA,MAAAxC,EAAA;CAAA,IAAAyC;CAAA,AAAAzC,EAAA,QAAAU,OAAAC,IAAA,2BAAA,KAEzD8B,MAAA,oBAAA,UAAA;EAAe,OAAA,EAAAC,SAAU,OAAM;EAAa,UAAA;EAAS,MAAA;CAAQ,CAAA,GAAG1C,EAAA,MAAAyC,OAAAA,MAAAzC,EAAA;CAAA,IAAA2C;CAAA,AAAA3C,EAAA,QAAAoB,WAI1CuB,MAAA3C,EAAA,OAAhB2C,MAAAvB,SAAS,MAAM,GAACpB,EAAA,MAAAoB,UAAApB,EAAA,MAAA2C;CAEb,IAAAC,MAAAtB,QAAMV,MAAewB,SAAAS;CAAA,AAAA7C,EAAA,QAAAyB,gBAAAzB,EAAA,QAAA2C,OAAA3C,EAAA,QAAA4C,OAH9BC,MAAA,oBAAC,oBAAD;EAAmB,GACbF;EACMlB,UAAAA;EACH,OAAAmB;EACD,OAAA;EACD,MAAA;CAAM,CAAA,GACX5C,EAAA,MAAAyB,cAAAzB,EAAA,MAAA2C,KAAA3C,EAAA,MAAA4C,KAAA5C,EAAA,MAAA6C,OAAAA,MAAA7C,EAAA;CAAA,IAAA8C;CAAA,AAAA9C,EAAA,QAAAwC,OAAAxC,EAAA,QAAA6C,OAXJC,MAAA,qBAAC,KAAD;EAAQ,IAAA;EAAgB,SAAA;EAAa,UAAAN;EAArC,UAAA,CAEEC,KAGAI,GALE;KAYE7C,EAAA,MAAAwC,KAAAxC,EAAA,MAAA6C,KAAA7C,EAAA,MAAA8C,OAAAA,MAAA9C,EAAA;CAAA,IAAA+C;CAGC,OAHD/C,EAAA,QAAAJ,YAAAI,EAAA,QAAA4B,eAAA5B,EAAA,QAAAG,MAAAH,EAAA,QAAA8C,OAAA9C,EAAA,QAAAuC,MAtBRQ,MAAA,qBAAC,UAAD;EACE,SAAA;EAEQ,QAAAR;EACD,QAAA;EACHpC;EACKyB,SAAAA;EACF,OAAA;EAPT,UAAA,CAUEkB,KAcClD,QAxBI;KAyBEI,EAAA,MAAAJ,UAAAI,EAAA,MAAA4B,aAAA5B,EAAA,MAAAG,IAAAH,EAAA,MAAA8C,KAAA9C,EAAA,MAAAuC,IAAAvC,EAAA,MAAA+C,OAAAA,MAAA/C,EAAA,KAzBT+C;AAyBS;AArFW,SAAAzC,SAAA0C,OAAA;CAAA,OAQuBA,MAAKC,KAAK5C;AAAS;AAR1C,SAAAG,UAAA0C,SAAA;CAAA,OAS4BF,QAAKC,KAAK1C;AAAc;ACN5E,MAAM2E,iBAAgBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACpB,EAAAL,UAAAC,QAAAK,OAGIH,OADM,EAAAI,IAAAC,UAAAF,IAGVG,SAAetB,mBAAmB,GAElCuB,WAAiB1B,YAAY,GAAC2B;CAAA,AAAAP,EAAA,OAAAI,QACiDG,KAAAP,EAAA,MAA9CO,MAAAC,UAAWvB,cAAcuB,OAAOC,OAAOL,KAAK,CAAC,GAACJ,EAAA,KAAAI,OAAAJ,EAAA,KAAAO;CAA/E,IAAAG,UAAgB5B,iBAAiByB,EAA8C,GAG/E,CAAAI,aAAAC,kBAAsCnC,SAASiC,SAAOG,GAAK,GAE3DC,aAAmBJ,UAAUA,SAAOG,MAAjBF,aACnBI,wBAA8BC,UAeSC,KAAAP,SAAOG,KAAKK;CAAA,AAAAlB,EAAA,OAAAiB,KAACC,KAAAlB,EAAA,MAAnCkB,KAAAH,sBAAsBE,EAAY,GAACjB,EAAA,KAAAiB,IAAAjB,EAAA,KAAAkB;CAAA,IAAAC;CAAA,AAAAnB,EAAA,OAAAoB,OAAAC,IAAA,2BAAA,KAExCF,KAAA5B,gBAA6BV,aAAa,GAACmB,EAAA,KAAAmB,MAAAA,KAAAnB,EAAA;CAAA,IAAAsB;CAAA,AAAAtB,EAAA,OAAAkB,KACtDI,KAAAtB,EAAA,MAJwBsB,KAAA;EAAAC,eACRL;EAAmCM,MAC5C;EAAUC,UACNN;CACZ,GAACnB,EAAA,KAAAkB,IAAAlB,EAAA,KAAAsB;CAXD,IAAA,EAAAI,WAAAC,IAAAC,cAAAC,UAAAC,OAAAC,aAOIpD,QAAqB2C,EAIxB,GATY,EAAAU,QAAAC,SAAAC,YAAAP,IAWbQ,eAAqB,CAACzB,WAAWA,SAAO0B,UAAUC;CAAA,AAAArC,EAAA,OAAAM,YAAAN,EAAA,OAAAG,MAE9BkC,WAAA;EAClB/B,SAAStB,cAAasD,OAAQ,EAAAnC,GAAG,CAAC,CAAC;CAAC,GACrCH,EAAA,KAAAM,UAAAN,EAAA,KAAAG,IAAAH,EAAA,KAAAqC,MAAAA,KAAArC,EAAA;CAFD,IAAAuC,cAAoBF,IAEnBG;CAAA,AAAAxC,EAAA,QAAAM,YAAAN,EAAA,QAAAU,SAAAG,OAG4C2B,MAAAC,aAAA;EAC3C,IAAI,CAAC/B,SAAOG,KAAK;EAGjB,IAAA6B,oBAA0BpD,iBAAiBmD,QAAQ;EACnDnC,SACEpB,YAAWyD,cAAe;GAAAC,eACTlC,SAAOG,KAAUgC;GAAAJ,UACtB,EAAAK,MACF;IAAAC,OACG;IAAMC,SACJN,kBAAiBI;GAC5B,EACF;GAACjC,KACIH,SAAOG;EACd,CAAC,CACH;CAAC,GACFb,EAAA,MAAAM,UAAAN,EAAA,MAAAU,SAAAG,KAAAb,EAAA,MAAAwC,MAAAA,KAAAxC,EAAA;CAjBD,IAAAiD,WAA6CT,IAiB5CU;CAAA,AAAAlD,EAAA,QAAAM,YAAAN,EAAA,QAAAU,SAAAG,OAEoBqC,WAAA;EACdxC,SAAOG,OAIZP,SACEtB,cAAamE,qBAAsB;GAAAP,eAClBlC,SAAOG,KAAUgC;GAAAhC,KAC3BH,SAAOG;EACd,CAAC,CACH;CAAC,GACFb,EAAA,MAAAM,UAAAN,EAAA,MAAAU,SAAAG,KAAAb,EAAA,MAAAkD,MAAAA,KAAAlD,EAAA;CAXD,IAAAoD,eAAqBF,IAWpBG;CAAA,AAAArD,EAAA,QAAA8B,QAWEuB,MAAArD,EAAA,OARDqD,OAAAC,WAAA;EACE,IAAA,EAAAC,QAAAC,eAA6BF;EAC7B,AAAIC,UAAUC,eAAe,aAE3B5C,eAAe2C,MAAa,GAE5BzB,MAAMf,sBAAsBwC,MAAa,CAAC;CAC3C,GACFvD,EAAA,MAAA8B,OAAA9B,EAAA,MAAAqD;CATH,IAAAI,kBAAwBJ,KAWvBK;CAAA,AAAA1D,EAAA,QAAA+B,YAAA/B,EAAA,QAAAU,WAESgD,YAAA;EACR,AAAIhD,SAAOiD,SACT5B,SAAS,QAAQ,EAAA6B,SACNlD,QAAOiD,OAAeC,QACjC,CAAC;CACF,GACF5D,EAAA,MAAA+B,UAAA/B,EAAA,MAAAU,SAAAV,EAAA,MAAA0D,OAAAA,MAAA1D,EAAA;CAAa,IAAA6D,MAAAnD,SAAOiD,OAAOG;CAN5BtF,AAM4BwB,EAAA,QAAA+B,YAAA/B,EAAA,QAAA6D,OAAzBC,MAAA,CAAC/B,UAAU8B,GAAc,GAAC7D,EAAA,MAAA+B,UAAA/B,EAAA,MAAA6D,KAAA7D,EAAA,MAAA8D,OAAAA,MAAA9D,EAAA,KAN7BxB,UAAUkF,KAMPI,GAA0B;CAAC,IAAAC;CAAA,AAAA/D,EAAA,QAAAK,UAAAL,EAAA,QAAAyD,mBAAAzD,EAAA,QAAAU,SAAAG,OAGpBkD,YAAA;EACR,IAAI,CAACrD,SAAOG,KAAK;EAKjB,IAAAmD,oBAA0B3D,OAAM4D,OACtB5F,IAAI,iBAAiB,EAAA8B,IAAKO,SAAOG,IAASgC,IAAA,CAAC,CAAC,CAAAqB,UACzCT,eAAe;EAAC,aAEtB;GACLO,mBAAiBG,YAAc;EAAC;CACjC,GACFnE,EAAA,MAAAK,QAAAL,EAAA,MAAAyD,iBAAAzD,EAAA,MAAAU,SAAAG,KAAAb,EAAA,MAAA+D,OAAAA,MAAA/D,EAAA;CAA4B,IAAAoE,MAAA1D,SAAOG,KAAKwD;CAbzC7F,AAayCwB,EAAA,QAAAK,UAAAL,EAAA,QAAAyD,mBAAAzD,EAAA,QAAAoE,OAAtCC,MAAA;EAAChE;EAAQoD;EAAiBW;CAAY,GAACpE,EAAA,MAAAK,QAAAL,EAAA,MAAAyD,iBAAAzD,EAAA,MAAAoE,KAAApE,EAAA,MAAAqE,OAAAA,MAAArE,EAAA,KAb1CxB,UAAUuF,KAaPM,GAAuC;CAAC,IAAAC;CAAA,AAAAtE,EAAA,QAAAmC,gBAAAnC,EAAA,QAAAoD,gBAAApD,EAAA,QAAA4B,gBAAA5B,EAAA,QAAAiC,WAAAjC,EAAA,QAAAkC,WAAAlC,EAAA,QAAAiD,YAAAjD,EAAA,QAAAU,SAAAG,KAAA0D,cAE5BD,YACb,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,qBAAC,MAAD;GAAc,SAAA;GAAd,UAAA,CAEE,oBAAC,QAAD;IACYnC,UAAAA;IACA,UAAA;IACL,MAAA;IACIiB,SAAAA;IACJ,MAAA;IACA,MAAA;GAAU,CAAA,GAIjB,oBAAC,kBAAD;IACY,UAAAjB,gBAAA,CAAiBF,WAAjB,CAA6BC;IAC9BA;IACI,aAAAxB,SAAOG,KAAiB0D;IAC5B,SAAA3C,aAAaqB,QAAQ;GAAC,CAAA,CAhB9B;;CADH,CAAA,GAqBLjD,EAAA,MAAAmC,cAAAnC,EAAA,MAAAoD,cAAApD,EAAA,MAAA4B,cAAA5B,EAAA,MAAAiC,SAAAjC,EAAA,MAAAkC,SAAAlC,EAAA,MAAAiD,UAAAjD,EAAA,MAAAU,SAAAG,KAAA0D,YAAAvE,EAAA,MAAAsE,OAAAA,MAAAtE,EAAA;CAtBD,IAAAwE,SAAeF;CAwBf,IAAI,CAACxD,YAAU,OACN;CACR,IAAA2D;CAAA,AAAAzE,EAAA,QAAAwE,SAMqBC,MAAAzE,EAAA,OAAVyE,MAAA,oBAAC,QAAD,CAAO,CAAA,GAAGzE,EAAA,MAAAwE,QAAAxE,EAAA,MAAAyE;CAAA,IAAAC;CAAA,AAAA1E,EAAA,QAAA4B,gBAAA5B,EAAA,QAAAiD,YAOmByB,MAAA9C,aAAaqB,QAAQ,GAACjD,EAAA,MAAA4B,cAAA5B,EAAA,MAAAiD,UAAAjD,EAAA,MAAA0E,OAAAA,MAAA1E,EAAA;CAAA,IAAA2E;CAAA,AAAA3E,EAAA,QAAAU,UAMxDiE,MAAA3E,EAAA,OAJA2E,MAAA,CAACjE,WACA,oBAAC,MAAD;EAAoB,cAAA;EAAY,SAAA;EAAW,QAAA;EAAW,QAAA;EAAQ,MAAA;EAC5D,UAAA,oBAAC,MAAD;GAAY,MAAA;GAAG,UAAA;EAAV,CAAA;CADF,CAAA,GAGNV,EAAA,MAAAU,SAAAV,EAAA,MAAA2E;CAAA,IAAAC;CAAA,AAAA5E,EAAA,QAAAoB,OAAAC,IAAA,2BAAA,KAGDuD,MAAA,oBAAA,UAAA;EAAe,OAAA,EAAAC,SAAU,OAAM;EAAa,UAAA;EAAS,MAAA;CAAQ,CAAA,GAAG7E,EAAA,MAAA4E,OAAAA,MAAA5E,EAAA;CAAA,IAAA8E;CAAA,AAAA9E,EAAA,QAAA6B,WAI1CiD,MAAA9E,EAAA,OAAhB8E,MAAAjD,SAAS,MAAM,GAAC7B,EAAA,MAAA6B,UAAA7B,EAAA,MAAA8E;CAEb,IAAAC,MAAA/C,QAAMc,MAAec,SAAAoB;CAAA,AAAAhF,EAAA,QAAAmC,gBAAAnC,EAAA,QAAA8E,OAAA9E,EAAA,QAAA+E,OAH9BC,MAAA,oBAAC,oBAAD;EAAmB,GACbF;EACM3C,UAAAA;EACH,OAAA4C;EACD,OAAA;EACD,MAAA;CAAM,CAAA,GACX/E,EAAA,MAAAmC,cAAAnC,EAAA,MAAA8E,KAAA9E,EAAA,MAAA+E,KAAA/E,EAAA,MAAAgF,OAAAA,MAAAhF,EAAA;CAAA,IAAAiF;CAAA,AAAAjF,EAAA,QAAA0E,OAAA1E,EAAA,QAAA2E,OAAA3E,EAAA,QAAAgF,OAlBJC,MAAA,qBAAC,KAAD;EAAQ,IAAA;EAAgB,SAAA;EAAa,UAAAP;EAArC,UAAA;GAEGC;GAODC;GAGAI;EAZE;KAmBEhF,EAAA,MAAA0E,KAAA1E,EAAA,MAAA2E,KAAA3E,EAAA,MAAAgF,KAAAhF,EAAA,MAAAiF,OAAAA,MAAAjF,EAAA;CAAA,IAAAkF;CAGC,OAHDlF,EAAA,QAAAJ,YAAAI,EAAA,QAAAuC,eAAAvC,EAAA,QAAAG,MAAAH,EAAA,QAAAyE,OAAAzE,EAAA,QAAAiF,OA7BRC,MAAA,qBAAC,UAAD;EACE,SAAA;EAEQ,QAAAT;EACD,QAAA;EACHtE;EACKoC,SAAAA;EACF,OAAA;EAPT,UAAA,CAUE0C,KAqBCrF,QA/BI;KAgCEI,EAAA,MAAAJ,UAAAI,EAAA,MAAAuC,aAAAvC,EAAA,MAAAG,IAAAH,EAAA,MAAAyE,KAAAzE,EAAA,MAAAiF,KAAAjF,EAAA,MAAAkF,OAAAA,MAAAlF,EAAA,KAhCTkF;AAgCS;AA5KS,SAAAlE,SAAAH,KAAA;CAAA,OAgBF,EAAAiC,MACRjC,KAAGiC,MAAeE,WAAlB,GACR;AAAC;ACjBL,MAAMgE,eAAef,OAAOL,IAAI,CAAC,CAAA,WAAA;;;AACT,CAAA,CAAA,UAAA,GAAA,MAGlBqB,kBAAkBhB,OAAOL,IAAI,CAAC,CAAA,WAAA;;;AAM9BoB,CAAAA,CAAAA,oFAAAA,aAAY,iCAcZQ,aAAYC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAChB,EAAAR,UAAAC,MAAAC,SAAAC,MAAAC,YAAiDE,OAAKG;CAAA,AAAAF,EAAA,OAAAH,UAUpCK,KAAAF,EAAA,MAJZE,KAAA,oBAAC,WAAD;EAAoB,SAAA;EAAU,OAAA;EAC5B,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GACfL,UAAAA;EADE,CAAA;CADG,CAAA,GAIEG,EAAA,KAAAH,SAAAG,EAAA,KAAAE;CAAA,IAAAC;CAAA,AAAAH,EAAA,OAAAP,YAAAO,EAAA,OAAAN,QAAAM,EAAA,OAAAL,WAAAK,EAAA,OAAAJ,QAMdO,KAAA,oBAAC,QAAD;EACYV;EACA,UAAA;EACJC;EACD,MAAA;EACIC;EACA,SAAA;EACHC;CAAI,CAAA,GACVI,EAAA,KAAAP,UAAAO,EAAA,KAAAN,MAAAM,EAAA,KAAAL,SAAAK,EAAA,KAAAJ,MAAAI,EAAA,KAAAG,MAAAA,KAAAH,EAAA;CAAA,IAAAI;CACM,OADNJ,EAAA,OAAAE,MAAAF,EAAA,OAAAG,MArBJC,KAAA,oBAAC,SAAD;EACE,SAAA;EAEE,SAAAF;EAMQ,UAAA,kBAAkBG;EAClB,WAAA;EACV,QAAA;EAEAF,UAAAA;CAbM,CAAA,GAsBEH,EAAA,KAAAE,IAAAF,EAAA,KAAAG,IAAAH,EAAA,KAAAI,MAAAA,KAAAJ,EAAA,IAtBVI;AAsBU,GAIRE,OAAMP,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACV,EAAAb,SAAAC,QAAuBU,OAGvBQ,WAAiBjC,YAAY,GAC7BkC,eAAqB9B,iBAAiBC,kBAAkB,GAACuB;CAAA,AAAAF,EAAA,OAAAX,IAAAA,KAAAoB,MACwCP,KAAAF,EAAA,MAAvDE,MAAAQ,UAAW3B,uBAAuB2B,OAAOrB,KAAGA,KAAUoB,GAAA,GAACT,EAAA,KAAAX,IAAAA,KAAAoB,KAAAT,EAAA,KAAAE;CAAjG,IAAAS,mBAAyBjC,iBAAiBwB,EAAuD,GAACC;CAAA,AAAAH,EAAA,OAAAO,YAAAP,EAAA,OAAAX,IAAAA,OAG/Dc,WAAA;EACjCI,SAASzB,cAAa8B,kBAAmB,EAAAC,OAAQxB,IAAGA,IAAIoB,IAAI,CAAC,CAAC;CAAC,GAChET,EAAA,KAAAO,UAAAP,EAAA,KAAAX,IAAAA,KAAAW,EAAA,KAAAG,MAAAA,KAAAH,EAAA;CAFD,IAAAc,6BAAmCX,IAElCC;CAAA,AAAAJ,EAAA,OAAAQ,gBAAAR,EAAA,OAAAO,YAAAP,EAAA,OAAAX,IAAAA,OAEsCe,WAAA;EACrCG,SAAS3B,cAAamC,wBAAyB;GAAAP;GAAAnB,KAAoBA,IAAGA;EAAI,CAAC,CAAC;CAAC,GAC9EW,EAAA,KAAAQ,cAAAR,EAAA,KAAAO,UAAAP,EAAA,KAAAX,IAAAA,KAAAW,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAFD,IAAAgB,iCAAuCZ,IAEtCa;CAAA,AAAAjB,EAAA,OAAAQ,gBAAAR,EAAA,QAAAO,YAAAP,EAAA,QAAAX,IAAAA,OAE2C4B,WAAA;EAC1CV,SAAS3B,cAAasC,2BAA4B;GAAAV;GAAAnB,KAAoBA,IAAGA;EAAI,CAAC,CAAC;CAAC,GACjFW,EAAA,KAAAQ,cAAAR,EAAA,MAAAO,UAAAP,EAAA,MAAAX,IAAAA,KAAAW,EAAA,MAAAiB,MAAAA,KAAAjB,EAAA;CAFD,IAAAmB,sCAA4CF,IAE3CG;CAAA,AAAApB,EAAA,QAAAO,YAAAP,EAAA,QAAAX,IAAAA,OAEiC+B,WAAA;EAChCb,SAAS3B,cAAayC,qBAAsB,EAAAhC,KAAMA,IAAGA,IAAI,CAAC,CAAC;CAAC,GAC7DW,EAAA,MAAAO,UAAAP,EAAA,MAAAX,IAAAA,KAAAW,EAAA,MAAAoB,MAAAA,KAAApB,EAAA;CAFD,IAAAsB,4BAAkCF,IAEjCG;CAAA,AAAAvB,EAAA,QAAAO,YAAAP,EAAA,QAAAX,IAAAA,KAAAoB,OAE+Bc,WAAA;EAC9BhB,SAAS1B,eAAc2C,YAAa,EAAAX,OAAQxB,KAAGA,KAAUoB,IAAA,CAAC,CAAC;CAAC,GAC7DT,EAAA,MAAAO,UAAAP,EAAA,MAAAX,IAAAA,KAAAoB,KAAAT,EAAA,MAAAuB,MAAAA,KAAAvB,EAAA;CAFD,IAAAyB,0BAAgCF,IAE/BG;CAAA,AAAA1B,EAAA,QAAAO,YAAAP,EAAA,QAAAW,oBAAAX,EAAA,QAAAX,IAAAA,KAAAoB,OAAAT,EAAA,QAAAX,IAAAA,KAAAsC,MAAAC,WAEuCF,WAAA;EACtC,IAAAG,cAAoB;GAAA,GACfrD,OAAMa;GAAIyC,OACN;IAAAC,OACE1C,KAAGA,KAAWsC,MAASC;IAAAE,OACvBzC,KAAGA,KAAUoB;GACtB;EACF;EAEA,AACEF,SADEI,mBAEA7B,cAAakD,aAAc;GAAAL,MACnB;GAAKM,cACG;GAAYH,OACnBD,YAAWC;EACpB,CAAC,IAGMhD,cAAaoD,UAAW,EAAAC,OAAQN,YAAW,CAAC,CAAC;CACvD,GACF7B,EAAA,MAAAO,UAAAP,EAAA,MAAAW,kBAAAX,EAAA,MAAAX,IAAAA,KAAAoB,KAAAT,EAAA,MAAAX,IAAAA,KAAAsC,MAAAC,SAAA5B,EAAA,MAAA0B,MAAAA,KAAA1B,EAAA;CApBD,IAAAoC,kCAAwCV,IA6BrBW,KAAAhD,KAAGiD,WAAH,KAAA,GAAyBC;CAAA,AAAAvC,EAAA,QAAAqC,KAEnCE,KAAAvC,EAAA,OAHMuC,KAAA;EAAAC,SACIH;EAAyBI,YACtB;CACd,GAACzC,EAAA,MAAAqC,IAAArC,EAAA,MAAAuC;CAGA,IAAAG,KAAArD,KAAGA,KAAWsC,MAASC,SAAAe;CAAA,AAAA3C,EAAA,QAAAuC,MAAAvC,EAAA,QAAA0C,MAV5BC,MAAA,oBAAC,KAAD;EAAW,MAAA;EACT,UAAA,oBAAC,MAAD;GACE,OAAA;GACM,MAAA;GACC,OAAAJ;GAIM,cAAA;GAEZG,UAAAA;EATE,CAAA;CADH,CAAA,GAYE1C,EAAA,MAAAuC,IAAAvC,EAAA,MAAA0C,IAAA1C,EAAA,MAAA2C,OAAAA,MAAA3C,EAAA;CAAA,IAAA4C;CAAA,AAAA5C,EAAA,QAAA6C,OAAAC,IAAA,2BAAA,KAEiCF,MAAA,EAAAG,YAAa,EAAC,GAAC/C,EAAA,MAAA4C,OAAAA,MAAA5C,EAAA;CAAA,IAAAgD;CAAA,AAAAhD,EAAA,QAAAZ,WAAAY,EAAA,QAAAoC,mCAAApC,EAAA,QAAAc,8BAAAd,EAAA,QAAAW,oBAAAX,EAAA,QAAAX,IAAAiD,YAEnDU,MAAA5D,SAAO6D,SAAW,QASnB,KARE,oBAAC,WAAD;EACY,UAAA5D,KAAGiD;EACP,MAAmB,IAAnB3B,mBAAoB,YAAgB,YAAjB,CAAU,CAAiB;EAElD,SAAAA,mBAAAG,6BAAAsB;EAEO,SAAAzB,mBAAA,kBAAA;CAAoD,CAAA,GAEhEX,EAAA,MAAAZ,SAAAY,EAAA,MAAAoC,iCAAApC,EAAA,MAAAc,4BAAAd,EAAA,MAAAW,kBAAAX,EAAA,MAAAX,IAAAiD,UAAAtC,EAAA,MAAAgD,OAAAA,MAAAhD,EAAA;CAAA,IAAAkD;CAAA,AAAAlD,EAAA,QAAAZ,WAAAY,EAAA,QAAAyB,2BAAAzB,EAAA,QAAAX,IAAAiD,YAEAY,MAAA9D,SAAO6D,SAAW,MAQnB,KAPE,oBAAC,WAAD;EACY,UAAA5D,KAAGiD;EACP,MAAA,oBAAC,UAAD,CAAS,CAAA;EACNb,SAAAA;EACJ,MAAA;EACG,SAAA;CAAU,CAAA,GAErBzB,EAAA,MAAAZ,SAAAY,EAAA,MAAAyB,yBAAAzB,EAAA,MAAAX,IAAAiD,UAAAtC,EAAA,MAAAkD,OAAAA,MAAAlD,EAAA;CAAA,IAAAmD;CAAA,AAAAnD,EAAA,QAAAZ,WAAAY,EAAA,QAAAgB,kCAAAhB,EAAA,QAAAX,IAAAiD,YAEAa,MAAA/D,SAAO6D,SAAW,UAQnB,KAPE,oBAAC,WAAD;EACY,UAAA5D,KAAGiD;EACP,MAAA,oBAAC,aAAD,CAAY,CAAA;EACTtB,SAAAA;EACJ,MAAA;EACG,SAAA;CAA4B,CAAA,GAEvChB,EAAA,MAAAZ,SAAAY,EAAA,MAAAgB,gCAAAhB,EAAA,MAAAX,IAAAiD,UAAAtC,EAAA,MAAAmD,OAAAA,MAAAnD,EAAA;CAAA,IAAAoD;CAAA,AAAApD,EAAA,QAAAZ,WAAAY,EAAA,QAAAmB,uCAAAnB,EAAA,QAAAX,IAAAiD,YAEAc,MAAAhE,SAAO6D,SAAW,WAQnB,KAPE,oBAAC,WAAD;EACY,UAAA5D,KAAGiD;EACP,MAAA,oBAAC,eAAD,CAAc,CAAA;EACXnB,SAAAA;EACJ,MAAA;EACG,SAAA;CAAiC,CAAA,GAE5CnB,EAAA,MAAAZ,SAAAY,EAAA,MAAAmB,qCAAAnB,EAAA,MAAAX,IAAAiD,UAAAtC,EAAA,MAAAoD,OAAAA,MAAApD,EAAA;CAAA,IAAAqD;CAAA,AAAArD,EAAA,QAAAZ,WAAAY,EAAA,QAAAsB,6BAAAtB,EAAA,QAAAX,IAAAiD,YAGAe,MAAAjE,SAAO6D,SAAW,QAQnB,KAPE,oBAAC,WAAD;EACY,UAAA5D,KAAGiD;EACP,MAAA,oBAAC,WAAD,CAAU,CAAA;EACPhB,SAAAA;EACJ,MAAA;EACG,SAAA;CAAY,CAAA,GAEvBtB,EAAA,MAAAZ,SAAAY,EAAA,MAAAsB,2BAAAtB,EAAA,MAAAX,IAAAiD,UAAAtC,EAAA,MAAAqD,OAAAA,MAAArD,EAAA;CAAA,IAAAsD;CAAA,AAAAtD,EAAA,QAAAgD,OAAAhD,EAAA,QAAAkD,OAAAlD,EAAA,QAAAmD,OAAAnD,EAAA,QAAAoD,OAAApD,EAAA,QAAAqD,OApDHC,MAAA,qBAAC,iBAAD;EAAuB,OAAA;EAAgB,OAAAV;EAAvC,UAAA;GAEGI;GAWAE;GAUAC;GAUAC;GAWAC;EA5Ca;KAqDErD,EAAA,MAAAgD,KAAAhD,EAAA,MAAAkD,KAAAlD,EAAA,MAAAmD,KAAAnD,EAAA,MAAAoD,KAAApD,EAAA,MAAAqD,KAAArD,EAAA,MAAAsD,OAAAA,MAAAtD,EAAA;CAAA,IAAAuD;CACL,OADKvD,EAAA,QAAA2C,OAAA3C,EAAA,QAAAsD,OApEpBC,MAAA,qBAAC,cAAD;EAAoB,OAAA;EAAe,MAAA;EAAW,SAAA;EAA6B,aAAA;EAA3E,UAAA,CACEZ,KAcAW,GAfW;KAqEEtD,EAAA,MAAA2C,KAAA3C,EAAA,MAAAsD,KAAAtD,EAAA,MAAAuD,OAAAA,MAAAvD,EAAA,KArEfuD;AAqEe,GC9LbY,eAAaT,MACjBU,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAC,aAAAC,SAAAJ;CAYC,IAAI,OAAOI,QAAS,UAAQ;EAAA,IAAAC;EAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAOfF,KAAA,EAAAG,QAAS,OAAmB,GAACP,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;EAAA,IAAAQ;EAAA,AAAAR,EAAA,OAAAG,OAENK,KAAAR,EAAA,MAA9BQ,KAAA,oBAAC,OAAD;GAAa,MAAA;GAAIL,UAAAA;EAAX,CAAA,GAAwBH,EAAA,KAAAG,MAAAH,EAAA,KAAAQ;EAAA,IAAAC;EACzB,OADyBT,EAAA,OAAAG,QAAAH,EAAA,OAAAQ,MAPhCC,KAAA,oBAAC,MAAD;GACQ,OAAA;GACE,SAAA;GAEE,UAAA;GACH,OAAAL;GAEPI,UAAAA;EAPG,GAGEL,IAHF,GAQEH,EAAA,KAAAG,MAAAH,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IARPS;CAQO;CAKU,IAAAL,KAAAF,cAAAQ,KAAAA,IAA0BP,KAAIQ,SAAeH,KAAAL,KAAIS,KAASC,KAAAJ;CAAe,OAAfT,EAAA,OAAAG,QAAAH,EAAA,OAAAI,MAAAJ,EAAA,OAAAQ,MAAxEC,KAAA,oBAAC,KAAD;EAAc,SAAAL;EAAiED,KAAAA;CAAI,GAAxBK,EAAwB,GAAIR,EAAA,KAAAG,MAAAH,EAAA,KAAAI,IAAAJ,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IAAvFS;AAAuF,CAElG,GAEMK,mBAAkBf,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAc,SAAAhB,IACvBiB,eAAqBvB,iBAAiBC,kBAAkB,GAGxD,CAAAQ,aAAAe,kBAAsC3B,SAAS,EAAK,GAAC4B;CAAA,IAAAlB,EAAA,OAAAgB,gBAAAhB,EAAA,OAAAe,MAAA;EAKrD,IAAAI,eAAqBH,cAAYI,OAASC,WAIvC,CAAA,CAAE,GACLC,qBAA2B,CAAA,GAAI,IAAIC,IAAIJ,YAAY,CAAC,GAACf;EAAA,AAAAJ,EAAA,OAAAgB,eAoBlDZ,KAAAJ,EAAA,MAdDI,MAAAoB,OAAAC,WAC4BT,aAAYW,OAAOC,eAEzCA,UAASE,MAAMC,KAAWC,OAAMjB,MAAWkB,WAACC,UAAStB,MAAGuB,SAAUV,KAAW,KAA7E,OACiB,CAGjBC,IACFU,MAAGC,aAAaC,KAAMb,KAAK,IAE3BW,MAAGG,cAAcD,KAAMb,KAAK,GAGvBW,QACRpC,EAAA,KAAAgB,cAAAhB,EAAA,KAAAI;EAfH,IAAAoC,kBAAwBlB,mBAAkBF,OACxChB,IAeA;GAAAiC,cACgB,CAAA;GAAEE,eACD,CAAA;EACjB,CACF,GAEAE,mBAAyB1B,KAAI2B,QACnBC,UAASH,gBAAeH,aAAaO,SAAUhC,MAAGA,IAAIC,GAAI,CAAC,CAAC,CAAAgC,IAC/DC,QAGH,GACJC,oBAA0BhC,KAAI2B,QACpBM,UAASR,gBAAeD,cAAcK,SAAUhC,MAAGA,IAAIC,GAAI,CAAC,CAAC,CAAAgC,IAChEI,QAGH,GACJC,aAAmBnC,KAAI2B,QACbS,UAAS,CAAC7B,mBAAkBsB,SAAUhC,MAAGA,IAAIC,GAAI,CAAC,CAAC,CAAAgC,IACtDO,QAGH;EAmCHpD,AAjCDkB,QAKM,CAAA,GACFF,aAAYqC,WAAY,IAC1BnC,QAAQH,KAAI8B,IAAKS,MAGf,KAEEb,kBAAgBY,SAAW,MAC7BnC,QAAQA;GAAAA,GACHA;GACHF,aAAYqC,WAAY,IAAxB,SAAA;GAAkD,GAC/CZ;EAAgB,IAGnBM,mBAAiBM,SAAW,MAC9BnC,QAAQA;GAAAA,GACHA;GACH;GAAc,GACX6B;EAAiB,IAGpBG,YAAUG,SAAW,MACvBnC,QAAQA;GAAAA,GACHA;GACH;GAAQ,GACLgC;EAAU,KAGlBlD,EAAA,KAAAgB,cAAAhB,EAAA,KAAAe,MAAAf,EAAA,KAAAkB;CAAA,OAAAA,QAAAlB,EAAA;CAAA,IAAAI;CAAA,AAAAJ,EAAA,OAAAkB,QAWId,KAAAJ,EAAA,MANeI,MAAAmD,UAAA;EACd,IAAApD,OAAae,MAAMqC;EAGlB,OAFG,OAAOpD,QAAS,WACXA,OAEFA,KAAIS,IAAKC;CAAI,GACrBb,EAAA,KAAAkB,OAAAlB,EAAA,KAAAI;CAAA,IAAAI;CAAA,AAAAR,EAAA,OAAAE,eAAAF,EAAA,OAAAkB,SAEYV,MAAAgD,YACJ,oBAAC,cAAD;EAAyBtD;EAAmB,MAAAgB,MAAMqC;CAAM,CAAA,GAChEvD,EAAA,KAAAE,aAAAF,EAAA,KAAAkB,OAAAlB,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAS;CAAA,AAAAT,EAAA,QAAAK,OAAAC,IAAA,2BAAA,KACMG,KAAA;EAAAgD,MAAO;EAACC,WAAa;CAAQ,GAAC1D,EAAA,MAAAS,MAAAA,KAAAT,EAAA;CAAA,IAAA2D;CAErC,OAFqC3D,EAAA,QAAAkB,MAAAmC,UAAArD,EAAA,QAAAI,MAAAJ,EAAA,QAAAQ,MAbvCmD,KAAA,oBAAC,UAAD;EACY,WAAA;EACM,gBAAAvD;EAOHa,aAAAA;EACA,aAAAT;EAGN,OAAAC;EACK,YAAAS,MAAKmC;CAAO,CAAA,GACxBrD,EAAA,MAAAkB,MAAAmC,QAAArD,EAAA,MAAAI,IAAAJ,EAAA,MAAAQ,IAAAR,EAAA,MAAA2D,MAAAA,KAAA3D,EAAA,KAfF2D;AAeE;AA/GkB,SAAAC,SAAAhD,KAAA;CAAA,OAU2CA,IAAGuB;AAAK;AAVnD,SAAAd,UAAAe,KAAAyB,KAAA;CAUpB,IAAAC,cAAoBD,KAAG/B,OAAYC,KAAOC,OAAMjB,MAAK8B,IAACe,QAAuB,KAAzD,CAAA;CACjB,OAAHxB,MAAMA,IAAG2B,OAAQD,WAAW,GACrB1B;AAAG;AAZU,SAAAU,SAAAkB,SAAA;CAAA,OA2CD;EAAA,GACdA;EAAOrD,SACD;GAAC;GAAU;GAAQ;GAAa;EAAQ;CACnD;AAAC;AA9CmB,SAAAsC,SAAAgB,WAAA;CAAA,OAiDD;EAAA,GACdD;EAAOrD,SACD;GAAC;GAAY;GAAU;GAAQ;GAAa;EAAQ;CAC/D;AAAC;AApDmB,SAAAyC,SAAAc,WAAA;CAAA,OAuDD;EAAA,GACdF;EAAOrD,SACD;GAAC;GAAY;GAAU;GAAQ;EAAQ;CAClD;AAAC;AA1DmB,SAAA2C,OAAAa,WAAA;CAAA,OAmEW;EAAA,GAC1BH;EAAOrD,SACD;GAAC;GAAU;GAAQ;EAAQ;CACtC;AAAC;AChGL,MAAMyE,iBAAgBC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAN,aAAAC,OAAAC,UAAAE,IACrBG,SAAeb,oBAAoB,GAEnCc,WAAiBf,YAAY,GAC7BgB,eAAqBb,iBAAiBc,QAA8B,GACpEC,eAAqBf,iBAAiBgB,QAA8B,GAACC;CAAA,AAAAR,EAAA,OAAAG,WAIpEK,KAAAR,EAAA,MAFuBQ,WAAA;EACtBL,SAASX,eAAciB,cAAe,CAAC;CAAC,GACzCT,EAAA,KAAAG,UAAAH,EAAA,KAAAQ;CAFD,IAAAE,kBAAwBF,IAEvBG;CAAA,AAAAX,EAAA,OAAAJ,SAAAI,EAAA,OAAAE,UASmBS,KAAAf,QAAQH,eAAeS,QAAQ,IAAgB,IAA/C,WAAgDF,EAAA,KAAAJ,OAAAI,EAAA,KAAAE,QAAAF,EAAA,KAAAW,MAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,OAAAW,KAI7DC,KAAAZ,EAAA,MALMY,KAAA;EAAAC,YACOF;EAAgDG,cAC9C;EAAoCC,YACtC;EAACC,QACL;CACV,GAAChB,EAAA,KAAAW,IAAAX,EAAA,KAAAY;CAAA,IAAAK;CAAA,AAAAjB,EAAA,OAAAH,QAGgCoB,KAAAjB,EAAA,MAA/BiB,KAAA,oBAAC,OAAD;EAAa,MAAA;EAAIpB,UAAAA;CAAX,CAAA,GAAyBG,EAAA,KAAAH,OAAAG,EAAA,KAAAiB;CAAA,IAAAC;CAAA,AAAAlB,EAAA,OAAAM,eAK9BY,KAAAlB,EAAA,OAJAkB,KAAAZ,gBACC,oBAAC,OAAD;EAAa,MAAA;EAAU,OAAA,EAAAa,SAAU,GAAG;EAAG,UAAA;CAAjC,CAAA,GAGPnB,EAAA,KAAAM,cAAAN,EAAA,MAAAkB;CAAA,IAAAE;CAAA,AAAApB,EAAA,QAAAiB,MAAAjB,EAAA,QAAAkB,MANHE,KAAA,qBAAC,QAAD;EAAe,OAAA;EAAf,UAAA,CACEH,IACCC,EAFI;KAOElB,EAAA,MAAAiB,IAAAjB,EAAA,MAAAkB,IAAAlB,EAAA,MAAAoB,MAAAA,KAAApB,EAAA;CAAA,IAAAqB;CAAA,AAAArB,EAAA,QAAAL,eAAAK,EAAA,QAAAU,mBAAAV,EAAA,QAAAI,gBAERiB,KAAA1B,eACC,oBAAC,KAAD;EAAkB,aAAA;EAChB,UAAA,oBAAC,QAAD;GACYS,UAAAA;GACA,UAAA;GACJtB,MAAAA;GACD,MAAA;GACI4B,SAAAA;GACF,OAAA;IAAAG,YACO;IAAaS,WACd;GACb;EAAC,CAAA;CAVD,CAAA,GAaLtB,EAAA,MAAAL,aAAAK,EAAA,MAAAU,iBAAAV,EAAA,MAAAI,cAAAJ,EAAA,MAAAqB,MAAAA,KAAArB,EAAA;CAAA,IAAAuB;CAEF,OAFEvB,EAAA,QAAAY,MAAAZ,EAAA,QAAAoB,MAAApB,EAAA,QAAAqB,MAnCLE,KAAA,oBAAA,UAAA,EAAA,UACE,qBAAC,MAAD;EACQ,OAAA;EACE,SAAA;EACK,aAAA;EACN,OAAAX;EAJT,UAAA,CAWEQ,IASCC,EApBE;CAmCE,CAAA,EAAA,CAAA,GACNrB,EAAA,MAAAY,IAAAZ,EAAA,MAAAoB,IAAApB,EAAA,MAAAqB,IAAArB,EAAA,MAAAuB,MAAAA,KAAAvB,EAAA,KArCHuB;AAqCG;AAjDe,SAAAlB,SAAAmB,OAAA;CAAA,OAI6BA,MAAKC,KAAKC;AAAS;AAJhD,SAAAnB,SAAAoB,SAAA;CAAA,OAK6BH,QAAKC,KAAKG;AAAS;ACZtE,MAAMU,gBAAU;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACdC,kBAAwBR,iBAAiBC,wBAAwB,GACjE,EAAAQ,oBAA0BV,eAAe,GACzCW,UAAgBV,iBAAiBE,UAAU,GAACS;CAAA,AAAAL,EAAA,OAAAG,mBAAAH,EAAA,OAAAI,WAE1CC,KAAAF,gBAAeG,SAAU,IACrBF,QAAOG,QAAQC,MAAO,CAACL,gBAAeM,SAAUD,EAACE,IAAIC,KAAKC,OAAQ,CAC5D,IAFVR,SAEWJ,EAAA,KAAAG,iBAAAH,EAAA,KAAAI,SAAAJ,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAHb,IAAAa,OACER,IAGFS,WAAiBpB,iBAAiBqB,QAA8B,GAEhEG,gBADmBxB,iBAAiBuB,QACdD,MAAe,IACrCG,UAAgB,CAACL,YAAYD,MAAIP,SAAW,GAC5Cc,YAAqBlB,kBAAkB,GAO1BmB,KAAAD,YAAA,wBAAA,QAA0CE;CAAA,AAAAtB,EAAA,OAAAoB,aAAApB,EAAA,OAAAqB,MAHnDC,KAAA,oBAAC,eAAD;EACE,aAAA;EACOF,OAAAA;EACA,OAAAC;CAA0C,CAAA,GACjDrB,EAAA,KAAAoB,WAAApB,EAAA,KAAAqB,IAAArB,EAAA,KAAAsB,MAAAA,KAAAtB,EAAA;CAAA,IAAAuB;CAAA,AAAAvB,EAAA,OAAAkB,iBAAAlB,EAAA,OAAAmB,WAEDI,KAAAL,iBAAA,CAAkBC,WACjB,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAChB,UAAA,oBAAA,MAAA,EAAA,UAAI,UAAY,CAAA;EADb,CAAA;CADH,CAAA,GAKLnB,EAAA,KAAAkB,eAAAlB,EAAA,KAAAmB,SAAAnB,EAAA,KAAAuB,MAAAA,KAAAvB,EAAA;CAAA,IAAAwB;CAAA,AAAAxB,EAAA,OAAAmB,WAAAnB,EAAA,QAAAa,QAEAW,KAAAL,WAAW,oBAAC,iBAAD,EAAuBN,KAAI,CAAA,GAAIb,EAAA,KAAAmB,SAAAnB,EAAA,MAAAa,MAAAb,EAAA,MAAAwB,MAAAA,KAAAxB,EAAA;CAAA,IAAAyB;CACtC,OADsCzB,EAAA,QAAAsB,MAAAtB,EAAA,QAAAuB,MAAAvB,EAAA,QAAAwB,MAf7CC,KAAA,qBAAC,MAAD;EAAgB,WAAA;EAAe,MAAA;EAAU,QAAA;EAAzC,UAAA;GACEH;GAMCC;GAQAC;EAfE;KAgBExB,EAAA,MAAAsB,IAAAtB,EAAA,MAAAuB,IAAAvB,EAAA,MAAAwB,IAAAxB,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA,KAhBPyB;AAgBO;AA/BK,SAAAV,SAAAW,OAAA;CAAA,OAQ+BA,MAAKb,KAAKC;AAAS;AARlD,SAAAG,SAAAU,SAAA;CAAA,OASiCD,QAAKb,KAAKG;AAAW;ACJtE,MAAMuB,cAAaC,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACjB,EAAAL,UAAAC,QAAAK,OAGIH,OADM,EAAAI,OAAAD,IAIVE,WAAiBd,YAAY,GAACe;CAAA,AAAAL,EAAA,OAAAI,WAK7BC,KAAAL,EAAA,MAF+BK,WAAA;EAC9BD,SAASb,cAAae,MAAO,CAAC;CAAC,GAChCN,EAAA,KAAAI,UAAAJ,EAAA,KAAAK;CAFD,IAAAE,cAAoBF,IAENG;CAAA,AAAAR,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KAIVF,KAAA,oBAAC,KAAD;EACS,OAAA;GAAAG,QACG;GAAMC,WACH;EACb;EAEA,UAAA,oBAAC,SAAD,CAAQ,CAAA;CANN,CAAA,GAOEZ,EAAA,KAAAQ,MAAAA,KAAAR,EAAA;CAAA,IAAAa;CAGC,OAHDb,EAAA,OAAAJ,YAAAI,EAAA,OAAAO,eAAAP,EAAA,OAAAG,MARRU,KAAA,qBAAC,UAAD;EAAQ,SAAA;EAAe,QAAA;EAAeV;EAAaI,SAAAA;EAAoB,OAAA;EAAvE,UAAA,CACEC,IASCZ,QAVI;KAWEI,EAAA,KAAAJ,UAAAI,EAAA,KAAAO,aAAAP,EAAA,KAAAG,IAAAH,EAAA,KAAAa,MAAAA,KAAAb,EAAA,IAXTa;AAWS,GC1BPc,gBAAU;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAEdC,iBAAuBhB,iBAAiBiB,QAA6B,GAACC;CAAA,IAAAJ,EAAA,OAAAE,gBAAA;EAEtE,IAAAG,iBAAsBC,SAAAC,UAAA;GACpB,IAAID,QAAOE,WAAY,KAAKD,SAASD,QAAOE,QAAO,OAC1C;GAGT,IAAAC,SAAeH,QAAQC,QACvBG,eAAqBL,cAAcC,SAASC,QAAQ,CAAC;GAwFpD,OAtFGE,OAAME,SAAU,cAEhB,oBAAC,iBAAD;IAAyBF;IACtBC,UAAAA;GADa,GAAsBH,KAAtB,IAMhBE,OAAME,SAAU,YAEhB,oBAAC,eAAD;IAAuBF;IACpBC,UAAAA;GADW,GAAsBH,KAAtB,IAMdE,OAAME,SAAU,iBAEhB,oBAAC,oBAAD;IAA4BF;IACzBC,UAAAA;GADgB,GAAsBH,KAAtB,IAMnBE,OAAME,SAAU,eAEhB,oBAAC,kBAAD;IAA0BF;IACvBC,UAAAA;GADc,GAAsBH,KAAtB,IAMjBE,OAAME,SAAU,iBAEhB,oBAAC,oBAAD;IAA4BF;IACzBC,UAAAA;GADgB,GAAsBH,KAAtB,IAMnBE,OAAME,SAAU,YAEhB,oBAAC,eAAD;IAAuBF;IACpBC,UAAAA;GADW,GAAsBH,KAAtB,IAMdE,OAAME,SAAU,iBAEhB,oBAAC,oBAAD;IAA4BF;IACzBC,UAAAA;GADgB,GAAsBH,KAAtB,IAMnBE,OAAME,SAAU,cAEhB,oBAAC,iBAAD;IAAyBF;IACtBC,UAAAA;GADa,GAAsBH,KAAtB,IAMhBE,OAAME,SAAU,YAEhB,oBAAC,eAAD;IAAuBF;IACpBC,UAAAA;GADW,GAAsBH,KAAtB,IAMdE,OAAME,SAAU,SAEhB,oBAAC,YAAD;IAAoBF;IACjBC,UAAAA;GADQ,GAAsBH,KAAtB,IAMXE,OAAME,SAAU,oBAEhB,oBAAC,iBAAD;IAAyBF;IACtBC,UAAAA;GADa,GAAsBH,KAAtB,IAMb;EAAI;EAG0BP,AAAhCI,KAAAC,cAAcH,gBAAgB,CAAC,GAACF,EAAA,KAAAE,gBAAAF,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OAAhCI;AAAgC;AAvGzB,SAAAD,SAAAS,OAAA;CAAA,OAEqCA,MAAKH,OAAOI;AAAM;ACXvE,MAAMI,sBAAgB;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACpBC,QAAcJ,iBAAiBK,QAAoC,GACnEC,QAAcR,SAAS,GAACS,IAAAC;CAWN,OAXMN,EAAA,OAAAE,SAAAF,EAAA,OAAAI,SAEdC,WAAA;EACR,IAAIH,MAAKK,SAAU,GAAC;GAClB,IAAAC,WAAiBN,MAAMA,MAAKK,SAAU;GACtCH,MAAKK,KAAM;IAAAC,UACC;IAAIC,QACNH,SAAQG;IAAOC,OAChBJ,SAAQI;GACjB,CAAC;EAAC;CACH,GACAN,KAAA,CAACJ,OAAOE,KAAK,GAACJ,EAAA,KAAAE,OAAAF,EAAA,KAAAI,OAAAJ,EAAA,KAAAK,IAAAL,EAAA,KAAAM,OAAAD,KAAAL,EAAA,IAAAM,KAAAN,EAAA,KATjBH,UAAUQ,IASPC,EAAc,GAEV;AAAI;AAfS,SAAAH,SAAAU,OAAA;CAAA,OACsBA,MAAKC,cAAcZ;AAAM;ACMrE,MAAMmB,aAAaL,YAAY;CAC7BM,MAAM;CACNF,cAAAA;EANAF,eAAe;EACfC,SAAS;CAKTC;CACAG,UAAU;EACRC,iBAAiBC,OAAOC,QAAgC;GACtDD,MAAMP,gBAAgBQ,OAAOC;EAC/B;EACAC,cAAcH,OAAO;GACnBA,MAAMN,UAAU,CAACM,MAAMN;EACzB;CACF;AACF,CAAC,GAEYU,eAAe,EAAC,GAAGR,WAAWS,QAAO;AAElD,IAAA,gBAAeT,WAAWU;ACH1B,SAASwB,+BAA+BC,SAA0B;CAgBhE,OAfI,CAACA,WAAW,OAAOA,WAAY,WAC1B,kBAGP,WAAWA,WACXA,QAAQC,SACR,OAAOD,QAAQC,SAAU,YACzBD,QAAQC,UAAU,QAClB,aAAaD,QAAQC,QAEdC,OAAQF,QAAQC,MAAoBE,OAAO,IAEhD,aAAaH,WAAW,OAAQA,QAAsBG,WAAY,WAC7DD,OAAQF,QAAsBG,OAAO,IAEvC;AACT;AAMA,MAAME,qBAAqB5B,YAAY;CACrC6B,MAAM;CACNF,cAAAA,EALAN,OAAO,CAAA,EAKPM;CACAG,UAAU,EACRC,IAAIC,OAAOC,QAAqC;EAC9C,IAAM,EAAChB,OAAOC,QAAQC,UAASc,OAAOV;EACtCS,MAAMX,MAAMa,KAAK;GACfjB;GACAC;GACAC;EACF,CAAC;CACH,EACF;AACF,CAAC,GAIYgB,yCAAiDC,YAC5DA,QAAQC,KACN/B,OAAOK,cAAc2B,eAAeC,KAAK,GACzChC,UAAU0B,WAAW;CACnB,IAAM,EAACO,aAAYP,OAAOV,SACpBkB,eAAeD,SAASE;CAC9B,OAAOtC,GACLwB,mBAAmBe,QAAQZ,IAAI;EAC7Bb,QAAQ;EACRC,OAAO,GAAGsB,aAAY,GAAIxC,UAAU,SAASwC,YAAY,EAAC;CAC5D,CAAC,CACH;AACF,CAAC,CACH,GAEWG,sCAA8CR,YACzDA,QAAQC,KACN/B,OAAOK,cAAckC,YAAYN,KAAK,GACtChC,UAAU0B,WAAW;CACnB,IAAM,EAACO,aAAYP,OAAOV,SACpBuB,QAAQN,SAASE;CACvB,OAAOtC,GACLwB,mBAAmBe,QAAQZ,IAAI;EAC7Bb,QAAQ;EACRC,OAAO,oBAAoB2B,MAAK,GAAI7C,UAClC,SACA6C,KACF,EAAC;CACH,CAAC,CACH;AACF,CAAC,CACH,GAkBWM,0CAAkDhB,YAC7DA,QAAQC,KACN/B,OAAOM,eAAeyC,gBAAgBd,KAAK,GAC3ChC,UAAU0B,WAAW;CACnB,IAAMa,QAAQb,QAAQV,SAAS+B,QAAQZ;CACvC,OAAOtC,GACLwB,mBAAmBe,QAAQZ,IAAI;EAC7Bb,QAAQ;EACRC,OAAO,gBAAgB2B,MAAK,GAAI7C,UAAU,SAAS6C,KAAK;CAC1D,CAAC,CACH;AACF,CAAC,CACH,GAEWS,6CAAqDnB,YAChEA,QAAQC,KACN/B,OAAOM,eAAe4C,mBAAmBjB,KAAK,GAC9ChC,UAAU0B,WAAW;CACnB,IAAMa,QAAQb,QAAQV,SAAS+B,QAAQZ;CACvC,OAAOtC,GACLwB,mBAAmBe,QAAQZ,IAAI;EAC7Bb,QAAQ;EACRC,OAAO,oBAAoB2B,MAAK,GAAI7C,UAAU,SAAS6C,KAAK;CAC9D,CAAC,CACH;AACF,CAAC,CACH,GAEWW,yCAAiDrB,YAC5DA,QAAQC,KACN/B,OAAOK,cAAc+C,eAAenB,KAAK,GACzClC,WAAW,GAAI,GACfC,QAAQqC,YAAYA,QAAQD,SAAS,CAAC,GACtCnC,UAAUoC,YAAY;CACpB,IAAMgB,eAAehB,QAAQD;CAC7B,OAAOtC,GACLwB,mBAAmBe,QAAQZ,IAAI;EAC7Bb,QAAQ;EACRC,OAAO,GAAGwC,aAAY,GAAI1D,UAAU,SAAS0D,YAAY,EAAC;CAC5D,CAAC,CACH;AACF,CAAC,CACH,GAEWC,iCAAyCxB,YACpDA,QAAQC,KACNlC,OACEQ,cAAckD,WAAWC,MACzBnD,cAAcoD,YAAYD,MAC1BhD,YAAYkD,YAAYF,MACxBhD,YAAY+B,YAAYiB,MACxBhD,YAAY+C,WAAWC,MACvBhD,YAAYiD,YAAYD,MACxBjD,eAAemD,YAAYF,MAC3BjD,eAAegC,YAAYiB,MAC3BjD,eAAeoD,YAAYH,MAC3B/C,eAAemD,YAAYJ,IAC7B,GACAvD,UAAU0B,WAAsB;CAC9B,IAAMd,QAAQ,sBAAsBG,+BAA+BW,OAAO,OAAU;CACpF,OAAO7B,GACLwB,mBAAmBe,QAAQZ,IAAI;EAC7Bb,QAAQ;EACRC;CACF,CAAC,CACH;AACF,CAAC,CACH,GAEWgD,sCAA8C/B,YACzDA,QAAQC,KACN/B,OAAOQ,YAAYsD,eAAe7B,KAAK,GACvChC,eAAeH,GAAGwB,mBAAmBe,QAAQZ,IAAI;CAACb,QAAQ;CAAQC,OAAO;AAAa,CAAC,CAAC,CAAC,CAC3F,GAEWkD,sCAA8CjC,YACzDA,QAAQC,KACN/B,OAAOQ,YAAYwB,eAAeC,KAAK,GACvChC,eAAeH,GAAGwB,mBAAmBe,QAAQZ,IAAI;CAACb,QAAQ;CAAQC,OAAO;AAAa,CAAC,CAAC,CAAC,CAC3F,GAEWmD,sCAA8ClC,YACzDA,QAAQC,KACN/B,OAAOQ,YAAY4C,eAAenB,KAAK,GACvChC,eAAeH,GAAGwB,mBAAmBe,QAAQZ,IAAI;CAACb,QAAQ;CAAQC,OAAO;AAAa,CAAC,CAAC,CAAC,CAC3F,GAEWoD,yCAAiDnC,YAC5DA,QAAQC,KACN/B,OAAOO,eAAeuD,eAAe7B,KAAK,GAC1ChC,eAAeH,GAAGwB,mBAAmBe,QAAQZ,IAAI;CAACb,QAAQ;CAAQC,OAAO;AAAgB,CAAC,CAAC,CAAC,CAC9F,GAEWqD,yCAAiDpC,YAC5DA,QAAQC,KACN/B,OAAOO,eAAeyB,eAAeC,KAAK,GAC1ChC,eAAeH,GAAGwB,mBAAmBe,QAAQZ,IAAI;CAACb,QAAQ;CAAQC,OAAO;AAAgB,CAAC,CAAC,CAAC,CAC9F,GAEWsD,yCAAiDrC,YAC5DA,QAAQC,KACN/B,OAAOO,eAAe6D,eAAenC,KAAK,GAC1ChC,eAAeH,GAAGwB,mBAAmBe,QAAQZ,IAAI;CAACb,QAAQ;CAAQC,OAAO;AAAgB,CAAC,CAAC,CAAC,CAC9F,GAEWwD,uBAAuB,EAAC,GAAG/C,mBAAmBe,QAAO;AAElE,IAAA,wBAAef,mBAAmBgD,SCvMlC,mBANsBC,YAAY;CAChCW,MAAM;CACNH,cAAAA;EAPAH,QAAQ,CAAA;EACRC,UAAUG,KAAAA;EACVF,kBAAkB,CAAA;CAKlBC;CACAI,UAAU,CAAC;AACb,CAEeF,CAAAA,CAAcG;ACiD7B,MAAakE,WAAW9D,aACtBE,kBACAE,iBACAD,+BACAI,yBACAC,0BACAH,qBACAC,4BACAG,+BACAC,+BACAC,+BACAC,oBACAC,kBACAC,gBACAC,mBACAC,sBACAC,kBACAC,kBACAC,iCACAG,8BACAC,qBACAC,qBACAE,0BACAC,mBACAC,mBACAC,kBACAC,oBACAC,mBACAE,oCACAC,uCACAC,wCACAC,2CACAC,uCACAC,uCACAC,uCACAC,uCACAC,+BACAC,oCACAC,oCACAC,oCACAE,0BACAG,gBACAC,gBACAC,eACAC,6BACAC,6BACAC,6BACAC,cACAC,gBACAE,uBACAC,wBACAC,yBACAC,wBACF,GAmBaa,cACX3E,gBAAgBgE;CAjBhBC,QAAQ/D;CACRgE,OAAO7C;CACP8C,QAAQ7C;CACR8C,SAAS1C;CACT2C,eAAepC;CACfqC,QAAQxB;CACRyB,UAAUvB;CACVwB,MAAMvB;CACNwB,SAASf;AASOM,CAAQ,GC7IpBa,iBAAiBC,UACH,OAAOA,SAAU,cAAnCA,SAA+C,CAACC,MAAMC,QAAQF,KAAK,GAG/DG,eAAeC,MAA2BE,MAAgB,CAAA,OAC1DL,MAAMC,QAAQE,IAAI,KACpBA,KAAKG,SAASC,MAAM;CAClBL,YAAYK,GAAGF,GAAG;AACpB,CAAC,GAGCP,cAAcK,IAAI,MAChBA,MAAO,OAAUK,UAAU,eAAeL,MAAO,OAAUM,QAC7DJ,IAAIK,KAAKP,KAAK,MAASM,IAAI,GAG7BE,OAAOC,OAAOT,IAAI,CAAC,CAACG,SAASO,QAAQ;CACnCX,YAAYW,KAAKR,GAAG;AACtB,CAAC,IAGIA,MAIHS,uBAAuBC,aAAuC;CAClE,IAAMC,WAAWd,YAAYa,QAAQ;CAGrC,OAAO,CAAC,GAAG,IAAIE,IAAID,SAASE,KAAK,CAAC,CAAC;AACrC;;;;;;;;;ACrBA,SAAgBG,qBAAqBC,WAA4C;CAE/E,OAAOA,YAAYC,sBAAUC,SAASF,SAAS,IAAI;AACrD;ACWA,SAAS2B,iBAAiBC,OAAqB;CAC7C,IAAMC,iBAAiBnB,qBAA6D,EAClFoB,cAAc,EACZP,QAAQK,MAAML,OAChB,EACF,CAAC,GAEKQ,QAAQ3B,eAAe;EAC3B4B,SAASlB;EACTmB,aAAaC,yBACXA,qBAAqB;GAWnBC,mBAAmB;GACnBC,OAAO;EACT,CAAC,CAAC,CAACC,QAAQR,cAAc;EAC3BS,UAAU;EACVC,gBAAgB;GACdC,QAAQ;IACN,GAAGxB;IACHyB,YAAYtB,qBAAqBS,OAAOP,SAAS,IAAI,CAACO,MAAMP,SAAS,IAAI,CAAC,QAAQ,OAAO;IACzFI,iBAAiBG,MAAMH,iBAAiBiB,SAAS,CAAC,GAAGd,MAAMH,eAAe,IAAI,CAAA;GAChF;GACAkB,OAAO;IACLC,eAAe;IACfC,SAAS;GACX;GACAC,QAAQ,EAACC,OAAO,CAAA,EAAE;GAClBC,SAAS;IACPC,MAAM,CAAC;IACPC,oBAAoB,CAAC;IACrBC,SAAS,CAAA;IACTC,sBAAsB,CAAC;IACvBC,cAAc;IACdC,iBAAiB;IACjBC,sBAAsB;IACtBC,cAAc;IACdC,UAAU;IACVC,YAAY;IACZC,UAAU;IACVC,UAAU;GACZ;GACAC,eAAe,EAACd,OAAO,CAAA,EAAE;GACzBe,QAAQ;IAACC,QAAQ,CAAA;IAAIC,OAAO;GAAE;GAC9BC,UAAU;IACRzB,QAAQZ,MAAMF,kBAAkB,CAAA;IAChCF,UAAUI,MAAMJ;IAChB0C,kBAAkBtC,MAAMJ,WAAWN,oBAAoBU,MAAMJ,QAAQ,IAAI,CAAA;GAC3E;GACA2C,MAAM;IACJC,QAAQ,CAAA;IACRC,OAAO,CAAC;IACRV,UAAU;IACVD,YAAY;IACZD,UAAU;IACVD,cAAc;GAChB;GACAc,SAAS;IACPF,QAAQ,CAAA;IACRC,OAAO,CAAC;GACV;EACF;CACF,CAAC;CAID,OAFAxC,eAAe0C,IAAI1D,QAAQ,GAEpBkB;AACT;AAEA,SAAAyC,cAAAC,IAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAArD,UAAAM;CAAA,AAAA8C,EAAA,OAAAD,MAAkDnD,WAAAoD,EAAA,IAAA9C,QAAA8C,EAAA,OAA3B,CAAApD,aAAAM,SAAA6C,IAA2BC,EAAA,KAAAD,IAAAC,EAAA,KAAApD,UAAAoD,EAAA,KAAA9C;CAAA,IAAAgD;CAAA,AAAAF,EAAA,OAAA9C,QACMgD,KAAAF,EAAA,MAA7BE,WAAMjD,iBAAiBC,KAAK,GAAC8C,EAAA,KAAA9C,OAAA8C,EAAA,KAAAE;CAAtD,IAAA,CAAA7C,SAAgBvB,SAASoE,EAA6B,GAACC;CAEH,OAFGH,EAAA,OAAApD,YAAAoD,EAAA,OAAA3C,SAEhD8C,KAAA,oBAAC,UAAD;EAAiB9C;EAAQT;CAAhB,CAAA,GAAoCoD,EAAA,KAAApD,UAAAoD,EAAA,KAAA3C,OAAA2C,EAAA,KAAAG,MAAAA,KAAAH,EAAA,IAA7CG;AAA6C;;;;;;;;;;;AC5EtD,MAAMqB,mBAAkBC,OAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAC,EAAAC,SAAAC,YAAAJ,IACvBK,WAAiBvB,YAAY,GAC7BwB,kBAAwBlB,iBAAiBmB,QAAoC,GAC7EC,eAAqB3B,OAAO,EAAK,GAAC4B,IAAAC;CAElC9B,AAFkCqB,EAAA,OAAAE,WAAAF,EAAA,OAAAI,YAExBI,WAAA;EAER,IAAAE,cAAoB,GAAGhB,gBAAgB;GAAAiB,YACzB,CAAC,QAAQ,OAAO;GAACC,cACf,CAAA;EAChB,CAAC,EAAC;EAWFR,AATAA,SAASf,cAAawB,aAAc;GAAAC,QAAS,EAAAZ,QAAQ;GAACQ;EAAa,CAAC,CAAC,GAMrEN,SAASZ,YAAWqB,aAAc,CAAC,GACnCT,SAASb,eAAcsB,aAAc,CAAC,GAEtCT,SAASd,cAAayB,cAAe,EAAAb,QAAQ,CAAC,CAAC;CAAC,GAC/CO,KAAA,CAACP,SAASE,QAAQ,GAACJ,EAAA,KAAAE,SAAAF,EAAA,KAAAI,UAAAJ,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,OAAAD,KAAAR,EAAA,IAAAS,KAAAT,EAAA,KAjBtBrB,UAAU6B,IAiBPC,EAAmB;CAAC,IAAAO,IAAAC;CAEvBtC,AAFuBqB,EAAA,OAAAG,WAAAH,EAAA,OAAAK,mBAEbW,WAAA;EACR,AAAIX,kBAAkB,IACpBE,aAAYW,UAAW,KACdX,aAAYW,WACrBf,QAAQ;CACT,GACAc,KAAA,CAACZ,iBAAiBF,OAAO,GAACH,EAAA,KAAAG,SAAAH,EAAA,KAAAK,iBAAAL,EAAA,KAAAgB,IAAAhB,EAAA,KAAAiB,OAAAD,KAAAhB,EAAA,IAAAiB,KAAAjB,EAAA,KAN7BrB,UAAUqC,IAMPC,EAA0B;CAAC,IAAAE;CAMzB,OANyBnB,EAAA,OAAAoB,OAAAC,IAAA,2BAAA,KAG5BF,KAAA,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,SAAD,CAAQ,CAAA,GACR,oBAAC,eAAD,CAAc,CAAA,CAAG,EAAA,CAAA,GAChBnB,EAAA,KAAAmB,MAAAA,KAAAnB,EAAA,IAHHmB;AAGG,GAIDG,iBAAgBC,UAAA;CAAA,IAAAvB,IAAAC,EAAA,EAAA,GACpB,EAAAE,SAAAqB,mBAAkCD,OAElCE,gBAAsBvC,qBAAqB,GAACa;CAAA,AAAAC,EAAA,OAAAoB,OAAAC,IAAA,2BAAA,KAGPtB,KAAA,CAAA,GAAEC,EAAA,KAAAD,MAAAA,KAAAC,EAAA;CAAvC,IAAA0B,kBAAwB1C,aAAae,EAAE,GAEvC4B,SAAevC,mBAAmB,GAElCc,UAAgBsB,eAAc,EAAQ,EAAAI,KAAApB,IAAAC;CAStC,IATsCT,EAAA,OAAAE,WAAAF,EAAA,OAAAG,WAG5BK,WAAA;EACR,AAAKN,WACHC,QAAQ;CACT,GACAM,KAAA,CAACP,SAASC,OAAO,GAACH,EAAA,KAAAE,SAAAF,EAAA,KAAAG,SAAAH,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,OAAAD,KAAAR,EAAA,IAAAS,KAAAT,EAAA,KAJrBrB,UAAU6B,IAIPC,EAAkB,GAEjB,CAACP,SAAO,OACH;CAOK,IAAAc,KAAAU,mBAAAG,KAAAA,GAA4BZ;CAAA,AAAAjB,EAAA,OAAAoB,OAAAC,IAAA,2BAAA,KAIpCJ,KAAA,oBAAC,aAAD,CAAY,CAAA,GAAGjB,EAAA,KAAAiB,MAAAA,KAAAjB,EAAA;CAAA,IAAAmB;CAAA,AAAAnB,EAAA,OAAAE,WAAAF,EAAA,OAAAG,WAEbgB,KAAA,oBAAC,iBAAD;EAA0BjB;EAAkBC;CAAO,CAAA,GAAIH,EAAA,KAAAE,SAAAF,EAAA,KAAAG,SAAAH,EAAA,KAAAmB,MAAAA,KAAAnB,EAAA;CAAA,IAAA8B;CAAA,AAAA9B,EAAA,OAAAyB,iBAAAzB,EAAA,QAAAmB,MADzDW,KAAA,oBAAC,gBAAD;EAAyBL,SAAAA;EACvBN,UAAAA;CADa,CAAA,GAEEnB,EAAA,KAAAyB,eAAAzB,EAAA,MAAAmB,IAAAnB,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA;CAAA,IAAA+B;CAAA,AAAA/B,EAAA,QAAAuB,MAAAS,YAAAhC,EAAA,QAAA8B,MAJnBC,KAAA,qBAAC,8BAAD;EAAwC,UAAAR,MAAKS;EAA7C,UAAA,CACEf,IACAa,EAF2B;KAKE9B,EAAA,MAAAuB,MAAAS,UAAAhC,EAAA,MAAA8B,IAAA9B,EAAA,MAAA+B,MAAAA,KAAA/B,EAAA;CAAA,IAAAiC;CACjB,OADiBjC,EAAA,QAAA2B,UAAA3B,EAAA,QAAAuB,MAAAW,aAAAlC,EAAA,QAAAwB,kBAAAxB,EAAA,QAAAgB,MAAAhB,EAAA,QAAA+B,MAXjCE,KAAA,oBAAC,eAAD;EACa,WAAAV,MAAKW;EACRP;EACE,UAAAX;EACMQ;EAEhBO,UAAAA;CANY,CAAA,GAYE/B,EAAA,MAAA2B,QAAA3B,EAAA,MAAAuB,MAAAW,WAAAlC,EAAA,MAAAwB,gBAAAxB,EAAA,MAAAgB,IAAAhB,EAAA,MAAA+B,IAAA/B,EAAA,MAAAiC,MAAAA,KAAAjC,EAAA,KAZhBiC;AAYgB;AA5EI,SAAA3B,SAAA6B,OAAA;CAAA,OAE8BA,MAAKC,OAAOC,MAAMC;AAAO;ACvB/E,MAAMQ,wBAAkB;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAEtBC,WAAiBN,YAAY,GAC7BO,OAAaN,iBAAiBO,QAA4B,GAACC;CAAA,AAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAGhCF,KAAA,EAAAG,YAAa,SAAQ,GAACR,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAIrC,IAAAS,KAAAN,SAAS,SAAT,YAAA,SAAqCO;CAAA,AAAAV,EAAA,OAAAE,WACmBQ,KAAAV,EAAA,MAArDU,WAAMR,SAASJ,cAAaa,QAAS,EAAAR,MAAO,OAAM,CAAC,CAAC,GAACH,EAAA,KAAAE,UAAAF,EAAA,KAAAU;CAAA,IAAAE;CAAA,AAAAZ,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KACvDK,KAAA;EAAAC,yBACoB;EAACC,sBACJ;CACxB,GAACd,EAAA,KAAAY,MAAAA,KAAAZ,EAAA;CAAA,IAAAe;CAAA,AAAAf,EAAA,OAAAS,MAAAT,EAAA,OAAAU,MARHK,KAAA,oBAAC,QAAD;EACY,UAAA;EACJvB,MAAAA;EACA,MAAAiB;EACG,SAAAC;EACF,OAAAE;CAGN,CAAA,GACDZ,EAAA,KAAAS,IAAAT,EAAA,KAAAU,IAAAV,EAAA,KAAAe,MAAAA,KAAAf,EAAA;CAIM,IAAAgB,KAAAb,SAAS,UAAT,YAAA,SAAsCc;CAAA,AAAAjB,EAAA,OAAAE,WACmBe,KAAAjB,EAAA,MAAtDiB,WAAMf,SAASJ,cAAaa,QAAS,EAAAR,MAAO,QAAO,CAAC,CAAC,GAACH,EAAA,KAAAE,UAAAF,EAAA,KAAAiB;CAAA,IAAAC;CAAA,AAAAlB,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KACxDW,KAAA;EAAAC,wBACmB;EAACC,qBACJ;CACvB,GAACpB,EAAA,KAAAkB,MAAAA,KAAAlB,EAAA;CAAA,IAAAqB;CAAA,AAAArB,EAAA,QAAAgB,MAAAhB,EAAA,QAAAiB,MARHI,KAAA,oBAAC,QAAD;EACY,UAAA;EACJ5B,MAAAA;EACA,MAAAuB;EACG,SAAAC;EACF,OAAAC;CAGN,CAAA,GACDlB,EAAA,MAAAgB,IAAAhB,EAAA,MAAAiB,IAAAjB,EAAA,MAAAqB,MAAAA,KAAArB,EAAA;CAAA,IAAAsB;CACK,OADLtB,EAAA,QAAAe,MAAAf,EAAA,QAAAqB,MApBJC,KAAA,qBAAC,QAAD;EAAe,OAAA;EAAU,OAAAjB;EAAzB,UAAA,CACEU,IAUAM,EAXK;KAqBErB,EAAA,MAAAe,IAAAf,EAAA,MAAAqB,IAAArB,EAAA,MAAAsB,MAAAA,KAAAtB,EAAA,KArBTsB;AAqBS;AA3BW,SAAAlB,SAAAmB,OAAA;CAAA,OAGmBA,MAAKC,OAAOrB;AAAK;ACD5D,MAAMkC,oBAAc;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAElBC,WAAiBT,YAAY,GAC7BU,QAAcN,iBAAiBO,QAA6B,GAE5DC,eAAqBT,sBAAsB,GAACU;CAAA,AAAAN,EAAA,OAAAG,MAAAI,aAAAP,EAAA,OAAAG,MAAAK,SAU9BF,KAAAZ,cAAcS,MAAKK,OAAQL,MAAKI,SAAU,GAACP,EAAA,KAAAG,MAAAI,WAAAP,EAAA,KAAAG,MAAAK,OAAAR,EAAA,KAAAM,MAAAA,KAAAN,EAAA;CAAA,IAAAS;CAAA,AAAAT,EAAA,OAAAM,KACjDG,KAAAT,EAAA,MANFS,KAAA,oBAAC,QAAD;EACY,UAAA;EACJtB,MAAAA;EACD,MAAA;EACI,SAAA;EACH,MAAAmB;CAA2C,CAAA,GACjDN,EAAA,KAAAM,IAAAN,EAAA,KAAAS;CAAA,IAAAC;CAAA,AAAAV,EAAA,OAAAE,YAAAF,EAAA,OAAAG,MAAAI,aAAAP,EAAA,OAAAG,MAAAK,SAKCE,KAAAf,eAAagB,KAAMC,MAAAC,UAAA;EAClB,IAAID,MAAI;GACN,IAAAE,WAAiBX,MAAKK,UAAWI,KAAIJ,SAAUL,MAAKI,cAAeK,KAAIL;GAAU,OAE/E,oBAAC,UAAD;IACYO,UAAAA;IACA,UAAA;IACCA,WAAAA;IAEF,eACPZ,SACEJ,cAAaiB,SAAU,EAAAZ,OACd;KAAAI,WAAYK,KAAIL;KAAUC,OAASI,KAAIJ;IAAM,EACtD,CAAC,CACH;IAEO,SAAA;IACCM;IACH,OAAA;IACA,OAAA,EAAAE,UAAW,QAAO;IACnB,MAAAtB,cAAckB,KAAIJ,OAAQI,KAAIL,SAAU;GAAC,GAZ1CM,KAY0C;EAC/C;EAEL,OAEM,oBAAC,aAAD,CAAuB,GAALA,KAAK;CAAI,CACnC,GAACb,EAAA,KAAAE,UAAAF,EAAA,KAAAG,MAAAI,WAAAP,EAAA,KAAAG,MAAAK,OAAAR,EAAA,KAAAU,MAAAA,KAAAV,EAAA;CAAA,IAAAiB;CAAA,AAAAjB,EAAA,OAAAU,KACGO,KAAAjB,EAAA,OA5BPiB,KAAA,oBAAC,MAAD,EAAA,UACGP,GADE,CAAA,GA4BEV,EAAA,KAAAU,IAAAV,EAAA,MAAAiB;CAAA,IAAAC;CAGT,OAHSlB,EAAA,QAAAK,gBAAAL,EAAA,QAAAS,MAAAT,EAAA,QAAAiB,MAxCXC,KAAA,oBAAC,YAAD;EAEI,QAAAT;EAQC,IAAA;EAED,MAAAQ;EA8BOZ,SAAAA;CAAY,CAAA,GACrBL,EAAA,MAAAK,cAAAL,EAAA,MAAAS,IAAAT,EAAA,MAAAiB,IAAAjB,EAAA,MAAAkB,MAAAA,KAAAlB,EAAA,KA3CFkB;AA2CE;AAnDc,SAAAd,SAAAe,OAAA;CAAA,OAGwBA,MAAKC,OAAOjB;AAAM;ACN9D,MAAMsB,YAAWC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACf,EAAAJ,YAAkBE,OAAKG;CAAA,AAAAF,EAAA,OAAAH,UAKtBK,KAAAF,EAAA,MAH8DE,KAAA;EAAAC,mBAC1C;EAAGC,aACTP;CACf,GAACG,EAAA,KAAAH,SAAAG,EAAA,KAAAE;CAHD,IAAA,EAAAC,mBAAAE,YAAAC,aAAkDX,aAAaO,EAG9D,GAKcK,KAAAF,cACGG,KAAA,WAAWL,kBAAiB,YAAWM;CAAA,AAAAT,EAAA,OAAAO,MAAAP,EAAA,OAAAQ,MAF9CC,KAAA;EAAAC,SACIH;EAAkBI,YACfH;CACd,GAACR,EAAA,KAAAO,IAAAP,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CASe,IAAAY,KAAA,SAAST,kBAAiB,YAC/BU,KAAA,GAAGP,WAAW,IAAG,IAAGQ;CAAA,AAAAd,EAAA,OAAAY,MAAAZ,EAAA,OAAAa,MAR/BC,KAAA,oBAAC,KAAD,EACS,OAAA;EAAAC,QACG;EAAKC,YACD;EAA0BC,UAC5B;EAAUC,MACd;EAACC,KACF;EAACR,YACMC;EAAqCQ,OAC1CP;CACT,EAAC,CAAA,GACDb,EAAA,KAAAY,IAAAZ,EAAA,KAAAa,IAAAb,EAAA,KAAAc,MAAAA,KAAAd,EAAA;CAAA,IAAAqB;CACE,OADFrB,EAAA,OAAAS,MAAAT,EAAA,OAAAc,MAhBJO,KAAA,oBAAC,KAAD;EACS,OAAAZ;EAKPK,UAAAA;CANE,CAAA,GAiBEd,EAAA,KAAAS,IAAAT,EAAA,KAAAc,IAAAd,EAAA,MAAAqB,MAAAA,KAAArB,EAAA,KAjBNqB;AAiBM,GCjCJC,gBAAU;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAkBR,OAlBQF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KACdF,KAAA,qBAAA,OAAA;EACmB,oBAAA;EACZ,MAAA;EACE,QAAA;EACA,QAAA;EACK,aAAA;EACJ,SAAA;EACF,OAAA;EAPR,UAAA,CASE,oBAAA,QAAA;GACI,GAAA;GACG,MAAA;GACS,eAAA;GACC,gBAAA;GACH,aAAA;EAAI,CAAA,GAElB,oBAAA,QAAA,EAAQ,GAAA,6CAA4C,CAAA,CAChD;KAAAF,EAAA,KAAAE,MAAAA,KAAAF,EAAA,IAjBNE;AAiBM,GCTFY,wBAAkB;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAEtBC,cAAoBL,iBAAiBM,QAA6B,GAGlEC,WAAiBR,YAAY,GAACS;CAAA,AAAAL,EAAA,OAAAI,WAK7BC,KAAAL,EAAA,MAFoBK,MAAAC,MAAA;EACnBF,SAASN,cAAaS,SAAU,EAAAL,aAAcI,EAACE,cAAcC,MAAM,CAAC,CAAC;CAAC,GACvET,EAAA,KAAAI,UAAAJ,EAAA,KAAAK;CAFD,IAAAK,eAAqBL,IAEpBM;CAAA,AAAAX,EAAA,OAAAI,WAIAO,KAAAX,EAAA,MAFmBW,WAAA;EAClBP,SAASN,cAAaS,SAAU,EAAAL,aAAc,GAAE,CAAC,CAAC;CAAC,GACpDF,EAAA,KAAAI,UAAAJ,EAAA,KAAAW;CAFD,IAAAC,cAAoBD,IAEnBE;CAAA,AAAAb,EAAA,OAAAc,OAAAC,IAAA,2BAAA,KAGaF,KAAA,EAAAG,UAAW,WAAU,GAAChB,EAAA,KAAAa,MAAAA,KAAAb,EAAA;CAAA,IAAAiB;CAAA,AAAAjB,EAAA,OAAAU,gBAAAV,EAAA,OAAAE,eAChCe,KAAA,oBAAC,WAAD;EACY,UAAA;EACJ1B,MAAAA;EACImB,UAAAA;EACE,aAAA;EACJ,QAAA;EACDR,OAAAA;CAAW,CAAA,GAClBF,EAAA,KAAAU,cAAAV,EAAA,KAAAE,aAAAF,EAAA,KAAAiB,MAAAA,KAAAjB,EAAA;CAAA,IAAAkB;CAAA,AAAAlB,EAAA,OAAAY,eAAAZ,EAAA,OAAAE,YAAAiB,UAGDD,KAAAhB,YAAWiB,SAAU,KACpB,oBAAC,MAAD;EACQ,OAAA;EACE,SAAA;EACCP,SAAAA;EACF,OAAA;GAAAQ,QACG;GAASC,QACT;GAAMC,SACL;GAAIN,UACH;GAAUO,OACb;GAACC,KACH;GAACC,OACC;GAAKC,QACJ;EACV;EAEA,UAAA,oBAAC,WAAD,CAAU,CAAA;CAfP,CAAA,GAiBN1B,EAAA,KAAAY,aAAAZ,EAAA,KAAAE,YAAAiB,QAAAnB,EAAA,MAAAkB,MAAAA,KAAAlB,EAAA;CAAA,IAAA2B;CACG,OADH3B,EAAA,QAAAiB,MAAAjB,EAAA,QAAAkB,MA7BHS,KAAA,qBAAC,KAAD;EAAY,OAAAd;EAAZ,UAAA,CACEI,IAUCC,EAXC;KA8BElB,EAAA,MAAAiB,IAAAjB,EAAA,MAAAkB,IAAAlB,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA,KA9BN2B;AA8BM;AA/Cc,SAAAxB,SAAAyB,OAAA;CAAA,OAE0BA,MAAKC,OAAOC;AAAM;ACKpE,MAAMmB,iBAAW;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAEfC,WAAiBf,YAAY,GAC7BgB,WAAiBf,iBAAiBgB,QAAgC,GAClEC,sBAA4BjB,iBAAiBkB,QAAqC,GAClFC,YAAkBnB,iBAAiBoB,QAAiC,GACpEC,eAAqBrB,iBAAiBsB,QAA8B,GACpEC,mBAAyBvB,iBAAiBwB,QAAkC,GAE5EC,aAAmB3B,cAAc,GAAC4B;CAAA,AAAAd,EAAA,OAAAE,WAKjCY,KAAAd,EAAA,MAFmCc,WAAA;EAClCZ,SAASb,cAAa0B,iBAAkB,CAAC;CAAC,GAC3Cf,EAAA,KAAAE,UAAAF,EAAA,KAAAc;CAFD,IAAAE,8BAAoCF,IAEnCG;CAAA,AAAAjB,EAAA,OAAAE,WAIAe,KAAAjB,EAAA,MAF+BiB,WAAA;EAC9Bf,SAASb,cAAa6B,YAAa,CAAC;CAAC,GACtClB,EAAA,KAAAE,UAAAF,EAAA,KAAAiB;CAFD,IAAAE,0BAAgCF,IAE/BG;CAAA,AAAApB,EAAA,OAAAE,WAIAkB,KAAApB,EAAA,MAF4BoB,WAAA;EAC3BlB,SAASb,cAAagC,SAAU,CAAC;CAAC,GACnCrB,EAAA,KAAAE,UAAAF,EAAA,KAAAoB;CAFD,IAAAE,uBAA6BF,IAE5BG;CAAA,AAAAvB,EAAA,OAAAE,YAAAF,EAAA,OAAAK,uBAE0BkB,WAAA;EACzBrB,SAASZ,eAAckC,gBAAiB,EAAAC,cAAe,CAACpB,oBAAmB,CAAC,CAAC;CAAC,GAC/EL,EAAA,KAAAE,UAAAF,EAAA,KAAAK,qBAAAL,EAAA,KAAAuB,MAAAA,KAAAvB,EAAA;CAFD,IAAA0B,qBAA2BH,IAE1BI;CAAA,AAAA3B,EAAA,OAAAE,YAAAF,EAAA,QAAAW,oBAE6BgB,WAAA;EAC5BzB,SAASX,YAAWiC,gBAAiB,EAAAC,cAAe,CAACd,iBAAgB,CAAC,CAAC;CAAC,GACzEX,EAAA,KAAAE,UAAAF,EAAA,MAAAW,kBAAAX,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA;CAFD,IAAA4B,wBAA8BD,IAE7BE;CAAA,AAAA7B,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAKUF,KAAA;EAAAG,cACS;EAAoCC,QAC1C;CACV,GAACjC,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA;CAAA,IAAAkC;CAAA,AAAAlC,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAMcG,KAAA;EAAC;EAAU;EAAU;EAAU;EAAU;CAAK,GAAClC,EAAA,MAAAkC,MAAAA,KAAAlC,EAAA;CAUtC,IAAAmC,KAAAtB,aAAa,IAAb,kBAAA,cAA+CuB;CAAA,AAAApC,EAAA,QAAAmC,KAGhEC,KAAApC,EAAA,OAPMoC,KAAA;EAAAC,YACO;EAAYC,MAClB;EAACC,QACC;EAAMC,gBACEL;EAA+CM,UACrD;EAAUC,OACb;CACT,GAAC1C,EAAA,MAAAmC,IAAAnC,EAAA,MAAAoC;CAAA,IAAAO;CAAA,AAAA3C,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAEDY,KAAA,oBAAC,KAAD;EAAc,SAAA;EAAU,OAAA,EAAAC,UAAW,QAAO;EAExC,UAAA,oBAAC,iBAAD,CAAgB,CAAA;CAFd,CAAA,GAGE5C,EAAA,MAAA2C,MAAAA,KAAA3C,EAAA;CAAA,IAAA6C,KAAAC;CAAA,AAAA9C,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAEQc,MAAA;EAAC;EAAQ;EAAQ;CAAO,GACpCC,MAAA,oBAAC,cAAD,CAAa,CAAA,GAAG9C,EAAA,MAAA6C,KAAA7C,EAAA,MAAA8C,QAAAD,MAAA7C,EAAA,KAAA8C,MAAA9C,EAAA;CAAA,IAAA+C;CAAA,AAAA/C,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KADlBgB,MAAA,qBAAC,KAAD;EAAc,SAAAF;EAAd,UAAA,CACEC,KAGA,oBAAC,QAAD;GAAe,OAAA;GACb,UAAA,oBAAC,qBAAD,CAAoB,CAAA;EADf,CAAA,CAJL;KAOE9C,EAAA,MAAA+C,OAAAA,MAAA/C,EAAA;CAAA,IAAAgD;CAAA,AAAAhD,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAEQiB,MAAA;EAAC;EAAS;EAAS;CAAM,GAAChD,EAAA,MAAAgD,OAAAA,MAAAhD,EAAA;CAAA,IAAAiD;CAAA,AAAAjD,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KACbkB,MAAA,EAAAC,YAAa,SAAQ,GAAClD,EAAA,MAAAiD,OAAAA,MAAAjD,EAAA;CAMrC,IAAAmD,MAAA,UAAU1C,aAAY2C,SAAU,IAAtB,KAA+B3C,aAAY2C,OAAO,KAAlD,MAA4DC;CAAA,AAAArD,EAAA,QAAAgB,+BAAAhB,EAAA,QAAAmD,OAJ9EE,MAAA,oBAAC,QAAD;EACY,UAAA;EACL,MAAA;EACIrC,SAAAA;EACH,MAAAmC;EACD,MAAA;CAAS,CAAA,GACdnD,EAAA,MAAAgB,6BAAAhB,EAAA,MAAAmD,KAAAnD,EAAA,MAAAqD,OAAAA,MAAArD,EAAA;CAAA,IAAAsD;CAAA,AAAAtD,EAAA,QAAAsB,uBASAgC,MAAAtD,EAAA,OANFsD,MAAA,oBAAC,QAAD;EACY,UAAA;EACL,MAAA;EACIhC,SAAAA;EACH,MAAA;EACD,MAAA;CAAS,CAAA,GACdtB,EAAA,MAAAsB,sBAAAtB,EAAA,MAAAsD;CAAA,IAAAC;CAAA,AAAAvD,EAAA,QAAAmB,0BASAoC,MAAAvD,EAAA,OANFuD,MAAA,oBAAC,QAAD;EACY,UAAA;EACL,MAAA;EACIpC,SAAAA;EACJ,MAAA;EACA,MAAA;CAAS,CAAA,GACdnB,EAAA,MAAAmB,yBAAAnB,EAAA,MAAAuD;CAAA,IAAAC;CAAA,AAAAxD,EAAA,QAAAqD,OAAArD,EAAA,QAAAsD,OAAAtD,EAAA,QAAAuD,OA3BNC,MAAA,oBAAC,KAAD;EAAc,SAAAR;EAAqC,SAAA;EACjD,UAAA,qBAAC,QAAD;GAAe,OAAA;GAAU,OAAAC;GAAzB,UAAA;IAEEI;IASAC;IASAC;GApBK;;CADL,CAAA,GA6BEvD,EAAA,MAAAqD,KAAArD,EAAA,MAAAsD,KAAAtD,EAAA,MAAAuD,KAAAvD,EAAA,MAAAwD,OAAAA,MAAAxD,EAAA;CAAA,IAAAyD;CAAA,AAAAzD,EAAA,QAAAwD,OAAAxD,EAAA,QAAAoC,MA7DZqB,MAAA,oBAAC,KAAD;EAAmB,cAAA;EACjB,UAAA,oBAAC,MAAD;GACQ,OAAA;GACK,WAAAvB;GACH,SAAA;GAGR,UAAA,qBAAC,MAAD;IACQ,MAAA;IACC,OAAAE;IAFT,UAAA;KAWEO;KAKAI;KASAS;IAzBG;;EANF,CAAA;CADH,CAAA,GAgEExD,EAAA,MAAAwD,KAAAxD,EAAA,MAAAoC,IAAApC,EAAA,MAAAyD,OAAAA,MAAAzD,EAAA;CAAA,IAAA0D;CAAA,AAAA1D,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAG0B2B,MAAA,CAAC,eAAe,GAAC1D,EAAA,MAAA0D,OAAAA,MAAA1D,EAAA;CAAA,IAAA2D;CAAA,AAAA3D,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAGlB4B,MAAA,EAAAT,YAAa,SAAQ,GAAClD,EAAA,MAAA2D,OAAAA,MAAA3D,EAAA;CAAA,IAAA4D;CAAA,AAAA5D,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAC/B6B,MAAA;EAAC;EAAQ;EAAQ;CAAO,GAAC5D,EAAA,MAAA4D,OAAAA,MAAA5D,EAAA;CAK7B,IAAA6D,MAAAxD,sBAAA,YAAA,SAAyCyD;CAAA,AAAA9D,EAAA,QAAA6D,OAAA7D,EAAA,QAAA0B,sBALnDoC,MAAA,oBAAC,KAAD;EAAc,SAAAF;EACZ,UAAA,oBAAC,QAAD;GACa,cAAA;GACD,UAAA;GACJ/E,MAAAA;GACA,MAAAgF;GACGnC,SAAAA;EAAkB,CAAA;CAN3B,CAAA,GAQE1B,EAAA,MAAA6D,KAAA7D,EAAA,MAAA0B,oBAAA1B,EAAA,MAAA8D,OAAAA,MAAA9D,EAAA;CAAA,IAAA+D;CAAA,AAAA/D,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KACNgC,MAAA,oBAAC,iBAAD,CAAgB,CAAA,GAAG/D,EAAA,MAAA+D,OAAAA,MAAA/D,EAAA;CAAA,IAAAgE;CAAA,AAAAhE,EAAA,QAAA8D,MAEjBE,MAAAhE,EAAA,OAbNgE,MAAA,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,qBAAC,QAAD;GAAe,OAAA;GAAU,OAAAL;GAAzB,UAAA,CACEG,KASAC,GAVK;;CADL,CAAA,GAaE/D,EAAA,MAAA8D,KAAA9D,EAAA,MAAAgE;CAAA,IAAAC;CAAA,AAAAjE,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAIJkC,MAAA,oBAAC,aAAD,CAAY,CAAA,GAAGjE,EAAA,MAAAiE,OAAAA,MAAAjE,EAAA;CAAA,IAAAkE;CAAA,AAAAlE,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAEDmC,MAAA;EAAC;EAAQ;EAAQ;CAAO,GAAClE,EAAA,MAAAkE,OAAAA,MAAAlE,EAAA;CAAA,IAAAmE;CAAA,AAAAnE,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAIjCoC,MAAA,oBAAC,KAAD;EAAY,OAAA,EAAAC,WAAY,cAAa;EACnC,UAAA,oBAAC,SAAD,CAAQ,CAAA;CADN,CAAA,GAEEpE,EAAA,MAAAmE,OAAAA,MAAAnE,EAAA;CAGF,IAAAqE,MAAA1D,mBAAA,YAAA,SACA2D,MAAA3D,mBAAA,SAAA,IAA8B4D;CAAA,AAAAvE,EAAA,QAAAqE,OAAArE,EAAA,QAAAsE,OAAAtE,EAAA,QAAA4B,yBAd1C2C,MAAA,qBAAC,MAAD;EAAe,SAAA;EAAf,UAAA,CAEEN,KAEA,oBAAC,KAAD;GAAc,SAAAC;GAAuC,YAAA;GACnD,UAAA,oBAAC,QAAD;IACY,UAAA;IAER,MAAAC;IAIOvC,SAAAA;IACH,MAAAyC;IACA,MAAAC;GAA8B,CAAA;EAVpC,CAAA,CAJD;KAiBEtE,EAAA,MAAAqE,KAAArE,EAAA,MAAAsE,KAAAtE,EAAA,MAAA4B,uBAAA5B,EAAA,MAAAuE,OAAAA,MAAAvE,EAAA;CAAA,IAAAwE;CAAA,AAAAxE,EAAA,QAAAgE,OAAAhE,EAAA,QAAAuE,OAnCXC,MAAA,oBAAC,KAAD,EAAA,UACE,qBAAC,MAAD;EAAY,OAAA;EAAkB,SAAAd;EAA9B,UAAA,CAEEM,KAeAO,GAjBG;CADH,CAAA,EAAA,CAAA,GAqCEvE,EAAA,MAAAgE,KAAAhE,EAAA,MAAAuE,KAAAvE,EAAA,MAAAwE,OAAAA,MAAAxE,EAAA;CAAA,IAAAyE;CAAA,AAAAzE,EAAA,QAAAG,YAAAH,EAAA,QAAAO,aAGNkE,MAAA,oBAAC,UAAD,EAAmCtE,SAAAA,SAAQ,GAA5BI,SAA4B,GAAIP,EAAA,MAAAG,UAAAH,EAAA,MAAAO,WAAAP,EAAA,MAAAyE,OAAAA,MAAAzE,EAAA;CAAA,IAAA0E;CAC3C,OAD2C1E,EAAA,QAAAyD,OAAAzD,EAAA,QAAAwE,OAAAxE,EAAA,QAAAyE,OAlHjDC,MAAA,qBAAC,KAAD;EACY,UAAA;EACH,OAAA7C;EAFT,UAAA;GAQE4B;GAkEAe;GAwCAC;EAlHE;KAmHEzE,EAAA,MAAAyD,KAAAzD,EAAA,MAAAwE,KAAAxE,EAAA,MAAAyE,KAAAzE,EAAA,MAAA0E,OAAAA,MAAA1E,EAAA,KAnHN0E;AAmHM;AApJO,SAAAtE,SAAAuE,OAAA;CAAA,OAG8BA,MAAKC,OAAOzE;AAAS;AAHnD,SAAAG,SAAAuE,SAAA;CAAA,OAIyCF,QAAKG,QAAQrD;AAAa;AAJnE,SAAAjB,SAAAuE,SAAA;CAAA,OAK+BJ,QAAKC,OAAOrE;AAAU;AALrD,SAAAG,SAAAsE,SAAA;CAAA,OAMkCL,QAAKM,OAAOC;AAAO;AANrD,SAAAtE,SAAAuE,SAAA;CAAA,OAOsCR,QAAKS,KAAK3D;AAAa;ACd9E,MAAMuE,sBAAgB;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAEpBC,WAAiBP,YAAY,GAC7BQ,gBAAsBN,iBAAiBO,QAAoC,GAC3EC,eAAqBR,iBAAiBS,QAA8B,GAACC;CAAA,AAAAP,EAAA,OAAAE,WAOpEK,KAAAP,EAAA,MAJoBO,MAAAC,MAAA;EACnB,IAAAC,UAAgBD,EAACE,OAAOD;EAExBP,SAASJ,aAAYa,iBAAkBF,OAAO,CAAC;CAAC,GACjDT,EAAA,KAAAE,UAAAF,EAAA,KAAAO;CAJD,IAAAK,eAAqBL,IAIpBM;CASD,IATCb,EAAA,OAAAE,WAIAW,KAAAb,EAAA,MAF4Ba,WAAA;EAC3BX,SAASJ,aAAYgB,cAAe,CAAC;CAAC,GACvCd,EAAA,KAAAE,UAAAF,EAAA,KAAAa,KAGDjB,YAAY,oBAAoBmB,EAAoB,GAEhD,CAACV,cAAY,OACR;CACR,IAAAW;CAAA,AAAAhB,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,KAKUF,KAAA;EAAAG,QACG;EAACC,MACH;EAACC,eACQ;EAAMC,UACX;EAAOC,OACV;CACT,GAACvB,EAAA,KAAAgB,MAAAA,KAAAhB,EAAA;CAAA,IAAAwB;CAAA,AAAAxB,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,KAICM,KAAA,oBAAC,KAAD;EAAkB,aAAA;EAChB,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GAChB,UAAA,oBAAC,UAAD,CAAS,CAAA;EADN,CAAA;CADH,CAAA,GAIExB,EAAA,KAAAwB,MAAAA,KAAAxB,EAAA;CAMG,IAAAyB,KAAAtB,gBAAA,iDAAA,4BAE6BuB;CAAA,AAAA1B,EAAA,OAAAyB,KAE5BC,KAAA1B,EAAA,MANN0B,KAAA,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,oBAAC,MAAD;GAAM,OAAA;GAAY,MAAA;GACfD,UAAAA;EADE,CAAA;CADH,CAAA,GAMEzB,EAAA,KAAAyB,IAAAzB,EAAA,KAAA0B;CAAA,IAAAC;CAAA,AAAA3B,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,KAEYS,KAAA,CAAC,SAAS,MAAM,GAAC3B,EAAA,KAAA2B,MAAAA,KAAA3B,EAAA;CAAA,IAAA4B;CAAA,AAAA5B,EAAA,OAAAiB,OAAAC,IAAA,2BAAA,KAO5BU,KAAA,EAAAP,eACU,OACjB,GAACrB,EAAA,KAAA4B,MAAAA,KAAA5B,EAAA;CAAA,IAAA6B;CAAA,AAAA7B,EAAA,QAAAG,iBAAAH,EAAA,QAAAY,gBALHiB,KAAA,oBAAC,QAAD;EACW1B,SAAAA;EACCS,UAAAA;EACH,OAAAgB;CAEN,CAAA,GACD5B,EAAA,MAAAG,eAAAH,EAAA,MAAAY,cAAAZ,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA;CAAA,IAAA8B;CAGF,OAHE9B,EAAA,QAAA0B,MAAA1B,EAAA,QAAA6B,MAtCRC,KAAA,oBAAC,KAAD;EACW,SAAA;EACF,OAAAd;EASP,UAAA,qBAAC,MAAD;GAAY,OAAA;GAAZ,UAAA,CACEQ,IAKA,oBAAC,SAAD;IACE,SAAA;IAEE,SAAAE;IAQkB,oBAAAC;IACV,WAAA;IACV,QAAA;IAEAE,UAAAA;GAfM,CAAA,CANL;;CAXH,CAAA,GAyCE7B,EAAA,MAAA0B,IAAA1B,EAAA,MAAA6B,IAAA7B,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA,KAzCN8B;AAyCM;AAlEY,SAAA1B,SAAA2B,OAAA;CAAA,OAG8BA,MAAKC,MAAM7B;AAAc;AAHvD,SAAAG,SAAA2B,SAAA;CAAA,OAI6BF,QAAKC,MAAME;AAAQ;ACPtE,MAAMS,0BAAoB;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACxBC,WAAiBP,YAAY,GAC7BQ,kBAAwBP,iBAAiBQ,QAAwC,GACjFC,WAAiBT,iBAAiBE,2BAA2B;CAE7D,IAAI,CAACK,iBAAe,OACX;CACR,IAAAG;CAAA,AAAAN,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAGeF,KAAA;EAAC;EAAS;EAAS;CAAM,GAACN,EAAA,KAAAM,MAAAA,KAAAN,EAAA;CAAA,IAAAS;CAAA,AAAAT,EAAA,OAAAE,WAQlCO,KAAAT,EAAA,MANFS,KAAA,oBAAC,QAAD;EACY,UAAA;EACD,SAAA;EACJ,MAAA;EACI,eAAMP,SAASL,eAAca,mBAAoB,CAAC;EACtD,MAAA;CAAY,CAAA,GACjBV,EAAA,KAAAE,UAAAF,EAAA,KAAAS;CAAA,IAAAE;CAAA,IAAAX,EAAA,OAAAG,mBAAAH,EAAA,OAAAE,YAAAF,EAAA,OAAAK,UAAA;EAAA,IAAAO;EAeAZ,AAfAA,EAAA,OAAAG,mBAAAH,EAAA,OAAAE,YAEYU,MAAAC,YACZ,qBAAC,QAAD;GAAgC,OAAA;GAAhC,UAAA,CACE,oBAAC,MAAD;IAAM,OAAA;IAAY,MAAA;IAAG,UAAA;GAAhB,CAAA,GAGL,oBAAC,QAAD;IACY,UAAA;IACD,SAAA;IACH,MAAAV,oBAAoBU,QAAOC,KAA3B,YAAA;IACG,eAAMZ,SAASL,eAAckB,iBAAkB,EAAAC,UAAWH,QAAOC,GAAG,CAAC,CAAC;IACzE,MAAAD,QAAOI;GAAK,CAAA,CATf;EAAMJ,GAAAA,QAAOC,EAAb,GAYRd,EAAA,KAAAG,iBAAAH,EAAA,KAAAE,UAAAF,EAAA,KAAAY,MAAAA,KAAAZ,EAAA,IAbAW,KAAAN,SAAQa,IAAKN,EAab,GAACZ,EAAA,KAAAG,iBAAAH,EAAA,KAAAE,UAAAF,EAAA,KAAAK,UAAAL,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAEA,OAFAZ,EAAA,QAAAS,MAAAT,EAAA,QAAAW,MAvBNC,KAAA,oBAAC,KAAD;EAAc,SAAAN;EAAqC,SAAA;EACjD,UAAA,qBAAC,QAAD;GAAe,OAAA;GAAf,UAAA,CACEG,IAQCE,EATI;;CADL,CAAA,GAyBEX,EAAA,MAAAS,IAAAT,EAAA,MAAAW,IAAAX,EAAA,MAAAY,MAAAA,KAAAZ,EAAA,KAzBNY;AAyBM;AAnCgB,SAAAR,SAAAe,OAAA;CAAA,OAE4BA,MAAKC,QAAQjB;AAAgB;ACFnF,MAAMsB,oBAAc;CAAA,IAAAC,IAAAC,EAAA,CAAA;CAGlB,IAAI,CAFwBJ,iBAAiBM,QAExCD,GAAmB,OACf;CACR,IAAAE;CAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAIUF,KAAA;EAAAG,UACK;EAAUC,OAAAA;CAEtB,GAACR,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAAA,IAAAS;CAiBG,OAjBHT,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAJHG,KAAA,oBAAC,KAAD;EACS,OAAAL;EAKP,UAAA,oBAAC,KAAD;GACY,WAAA;GACH,OAAA;IAAAM,aACQ;IAAoCC,QACzC;IAAMC,MACR;IAACC,WACI;IAAQC,WACR;IAAMP,UACP;IAAUQ,KACf;IAACP,OACC;GACT;GAEA,UAAA,oBAAC,YAAD,CAAW,CAAA;EAbT,CAAA;CANF,CAAA,GAqBER,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IArBNS;AAqBM;AA7BU,SAAAN,SAAAa,OAAA;CAAA,OACsCA,MAAKC,QAAQC;AAAa;ACIpF,MAAMS,0BAA0BP,cAAwCQ,KAAAA,CAAS,GAEpEC,4BAA2BC,UAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACtC,EAAAN,UAAAF,SAAyBM,OAAKG;CAAA,AAAAF,EAAA,OAAAP,OAE0BS,KAAAF,EAAA,MAANE,KAAA,EAAAT,KAAK,GAACO,EAAA,KAAAP,MAAAO,EAAA,KAAAE;CAAxD,IAAAC,eAAkDD,IAAgBE;CAK7B,OAL6BJ,EAAA,OAAAL,YAAAK,EAAA,OAAAG,gBAGhEC,KAAA,oBAAA,wBAAA,UAAA;EAAyCD,OAAAA;EACtCR;CACH,CAAA,GAAmCK,EAAA,KAAAL,UAAAK,EAAA,KAAAG,cAAAH,EAAA,KAAAI,MAAAA,KAAAJ,EAAA,IAFnCI;AAEmC,GAI1BC,2BAAqB;CAChC,IAAAC,UAAgBhB,WAAWM,uBAAuB;CAClD,IAAIU,YAAYT,KAAAA,GACd,MAAUU,MAAM,oEAAoE;CACrF,OACMD;AAAO,GCfViB,UAASC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACb,EAAAJ,YAAkBE,OAElB,EAAAG,SAAeT,mBAAmB,GAClC,EAAAU,aAAmBX,sBAAsB,GAGzCY,aAAmBT,iBAAiBU,OAAkC,GACtEC,mBAAyBX,iBAAiBY,QAAkC,GAE5E,EAAAC,kBAAwBd,eAAe,GAACe;CAAA,AAAAT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,KAQjBF,KAAA,EAAAG,YAAa,SAAQ,GAACZ,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CAAA,IAAAa;CAAA,AAAAb,EAAA,OAAAI,cAAAJ,EAAA,OAAAG,YAE1BU,KAAAV,WAAA,UAAqBC,WAAUU,KAAM,MAAM,MAA3C,iBAAgEd,EAAA,KAAAI,YAAAJ,EAAA,KAAAG,UAAAH,EAAA,KAAAa,MAAAA,KAAAb,EAAA;CAAA,IAAAe;CAAA,AAAAf,EAAA,OAAAa,KAClEE,KAAAf,EAAA,MAFPe,KAAA,oBAAC,MAAD;EAAmB,cAAA;EAAkB,QAAA;EACnC,UAAA,oBAAA,QAAA,EAAA,UAAOF,GAAwE,CAAA;CAD5E,CAAA,GAEEb,EAAA,KAAAa,IAAAb,EAAA,KAAAe;CAAA,IAAAC;CAAA,AAAAhB,EAAA,OAAAM,mBAWNU,KAAAhB,EAAA,MATAgB,KAAAV,oBACC,oBAAC,KAAD;EAAc,SAAA;GAAC;GAAQ;GAAQ;EAAO;EACpC,UAAA,qBAAC,MAAD,EAAA,UAAA,CACE,oBAAA,QAAA;GAAa,OAAA,EAAAW,QAAS,UAAS;GAC7B,UAAA,oBAAC,gBAAD,CAAe,CAAA;EACV,CAAA,GACP,oBAAA,QAAA;GAAa,OAAA,EAAAC,eAAgB,aAAY;GAAIZ,UAAAA,iBAAgBa;EAAc,CAAA,CAJxE,EAAA,CAAA;CADH,CAAA,GAQLnB,EAAA,KAAAM,kBAAAN,EAAA,KAAAgB;CAAA,IAAAI;CAAA,AAAApB,EAAA,OAAAe,MAAAf,EAAA,OAAAgB,MAfLI,KAAA,oBAAC,KAAD;EAAW,MAAA;EAAY,SAAA;EACrB,UAAA,qBAAC,QAAD;GAAe,OAAAX;GAAf,UAAA,CACEM,IAICC,EALI;;CADL,CAAA,GAiBEhB,EAAA,KAAAe,IAAAf,EAAA,KAAAgB,IAAAhB,EAAA,MAAAoB,MAAAA,KAAApB,EAAA;CAAA,IAAAqB;CAAA,AAAArB,EAAA,QAAAI,cAAAJ,EAAA,QAAAQ,iBAAAR,EAAA,QAAAE,QAIHmB,KAAAb,iBACC,oBAAC,QAAD;EACY,UAAA;EACJvB,MAAAA;EACD,MAAA;EACIiB,SAAAA;EACH,MAAA,UAAUE,WAAUkB,WAAY,IAAI/B,UAAUa,WAAU,EAAe,IAA7D;CAAgE,CAAA,GAEnFJ,EAAA,MAAAI,YAAAJ,EAAA,MAAAQ,eAAAR,EAAA,MAAAE,MAAAF,EAAA,MAAAqB,MAAAA,KAAArB,EAAA;CAAA,IAAAuB;CAAA,AAAAvB,EAAA,QAAAH,UAaA0B,KAAAvB,EAAA,OAVAuB,KAAA1B,WACC,oBAAC,KAAD;EAAY,OAAA,EAAA2B,YAAa,EAAC;EACxB,UAAA,oBAAC,QAAD;GACY,UAAA,CAAC3B;GACLb,MAAAA;GACD,MAAA;GACIa,SAAAA;GACD,QAAA;EAAC,CAAA;CANT,CAAA,GASLG,EAAA,MAAAH,SAAAG,EAAA,MAAAuB;CAAA,IAAAE;CAAA,AAAAzB,EAAA,QAAAqB,MAAArB,EAAA,QAAAuB,MAvBHE,KAAA,qBAAC,MAAD;EAAe,SAAA;EAAf,UAAA,CAEGJ,IAWAE,EAbE;KAwBEvB,EAAA,MAAAqB,IAAArB,EAAA,MAAAuB,IAAAvB,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA;CAAA,IAAA0B;CAEL,OAFK1B,EAAA,QAAAoB,MAAApB,EAAA,QAAAyB,MA9CXC,KAAA,oBAAC,KAAD;EAAe,UAAA;EACb,UAAA,qBAAC,MAAD;GAAY,OAAA;GAAiB,SAAA;GAA7B,UAAA,CAEEN,IAmBAK,EArBG;;CADH,CAAA,GAgDEzB,EAAA,MAAAoB,IAAApB,EAAA,MAAAyB,IAAAzB,EAAA,MAAA0B,MAAAA,KAAA1B,EAAA,KAhDN0B;AAgDM;AA9DK,SAAArB,QAAAsB,OAAA;CAAA,OAOkCA,MAAKC,OAAOxB;AAAW;AAPzD,SAAAG,SAAAsB,SAAA;CAAA,OAQwCF,QAAKG,SAASC;AAAS;ACV9E,MAAMW,mBAAkBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACtB,EAAAL,OAAAC,UAAuBE,OAGvBG,WAAiBV,YAAY,GAC7BW,QAAcV,iBAAiBW,OAA6B,GAE5DC,WAAiBF,MAAKP,UAAWA,OAAKU;CAAA,AAAAN,EAAA,OAAAE,YAAAF,EAAA,OAAAJ,SAAAI,EAAA,OAAAK,YAAAL,EAAA,OAAAG,MAAAI,aAAAP,EAAA,OAAAH,SAGlBS,WAAA;EACd,OAACV,SAAD,CAAWC,QAIf,IAAIQ,UAAQ;GACV,IAAAE,YAAkBJ,MAAKI,cAAe,QAApB,SAAA;GAClBL,SAASR,cAAac,SAAU,EAAAL,OAAQ;IAAAP;IAAAW;GAAiB,EAAC,CAAC,CAAC;EAAC,OAE7DL,SAASR,cAAac,SAAU,EAAAL,OAAQ;GAAAP;GAAAW,WAAmB;EAAK,EAAC,CAAC,CAAC;CACpE,GACFP,EAAA,KAAAE,UAAAF,EAAA,KAAAJ,OAAAI,EAAA,KAAAK,UAAAL,EAAA,KAAAG,MAAAI,WAAAP,EAAA,KAAAH,OAAAG,EAAA,KAAAM,MAAAA,KAAAN,EAAA;CAXD,IAAAS,cAAoBH,IAcJI,KAAA,CAACd,OAEFe,KAAAf,QAAAa,cAAAG,KAAAA,GAECC,KAAAjB,QAAA,YAAA,WAA6BkB;CAAA,AAAAd,EAAA,OAAAa,KAGtCC,KAAAd,EAAA,MAJMc,KAAA;EAAAC,QACGF;EAA6BG,SAC5B;EAAQC,YACL;CACd,GAACjB,EAAA,KAAAa,IAAAb,EAAA,KAAAc;CAAA,IAAAI;CAAA,AAAAlB,EAAA,OAAAmB,OAAAC,IAAA,2BAAA,KAGQF,KAAA,EAAAG,aACQ,QACf,GAACrB,EAAA,KAAAkB,MAAAA,KAAAlB,EAAA;CAAA,IAAAsB;CAAA,AAAAtB,EAAA,OAAAH,QAGIyB,KAAAtB,EAAA,OANPsB,KAAA,oBAAA,QAAA;EACS,OAAAJ;EAINrB,UAAAA;CACI,CAAA,GAAAG,EAAA,KAAAH,OAAAG,EAAA,MAAAsB;CAAA,IAAAC;CAAA,AAAAvB,EAAA,QAAAK,YAAAL,EAAA,QAAAG,MAAAI,aAENgB,KAAAlB,YAAYF,OAAKI,cAAgB,SAAS,oBAAC,eAAD,CAAc,CAAA,GAAGP,EAAA,MAAAK,UAAAL,EAAA,MAAAG,MAAAI,WAAAP,EAAA,MAAAuB,MAAAA,KAAAvB,EAAA;CAAA,IAAAwB;CAAA,AAAAxB,EAAA,QAAAK,YAAAL,EAAA,QAAAG,MAAAI,aAC3DiB,KAAAnB,YAAYF,OAAKI,cAAgB,UAAU,oBAAC,iBAAD,CAAgB,CAAA,GAAGP,EAAA,MAAAK,UAAAL,EAAA,MAAAG,MAAAI,WAAAP,EAAA,MAAAwB,MAAAA,KAAAxB,EAAA;CAAA,IAAAyB;CAAA,AAAAzB,EAAA,QAAAW,MAAAX,EAAA,QAAAc,MAAAd,EAAA,QAAAsB,MAAAtB,EAAA,QAAAuB,MAAAvB,EAAA,QAAAwB,MAjBjEC,KAAA,qBAAC,KAAD;EACW,SAAAd;EACF,OAAAG;EAFT,UAAA;GAQEQ;GAQCC;GACAC;EAjBC;KAkBExB,EAAA,MAAAW,IAAAX,EAAA,MAAAc,IAAAd,EAAA,MAAAsB,IAAAtB,EAAA,MAAAuB,IAAAvB,EAAA,MAAAwB,IAAAxB,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA;CAAA,IAAA0B;CACA,OADA1B,EAAA,QAAAU,MAAAV,EAAA,QAAAyB,MAnBRC,MAAA,oBAAC,OAAD;EAAc,OAAAhB;EAAc,MAAA;EAC1Be,UAAAA;CADI,CAAA,GAoBEzB,EAAA,MAAAU,IAAAV,EAAA,MAAAyB,IAAAzB,EAAA,MAAA0B,OAAAA,MAAA1B,EAAA,KApBR0B;AAoBQ;AA5CY,SAAAtB,QAAAuB,OAAA;CAAA,OAKoBA,MAAKC,OAAOzB;AAAM;ACJ9D,MAAM6C,2BAAyBX,uBAAoDP,IAAI,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EACxFmB,cAEOX,GAAG,6EAIUQ,eAAeG,SAAS,IAAI,EAAC,IAIlD,GAEKC,oBAAc;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAClBC,SAAejB,oBAAoB,GAGnCkB,WAAiBnB,YAAY,GAC7BoB,WAAiBb,iBAAiBc,OAAgC,GAClEC,cAAoBf,iBAAiBE,kBAAkB,GACvDc,kBAAwBhB,iBAAiBG,wBAAwB,GAEjEc,aAAmB1B,cAAc,GACjC,EAAA2B,aAAmBnB,sBAAsB,GAEzCoB,cAAoBH,oBAAoBD,aAAWK;CAAA,AAAAX,EAAA,OAAAU,eAAAV,EAAA,OAAAG,YAGlBQ,MAAAC,MAAA;EAG/B,AAFAA,EAACC,gBAAiB,GAGhBV,SADEO,cACOlB,cAAasB,UAAW,IAExBtB,cAAauB,QAAS,CAAC;CACjC,GACFf,EAAA,KAAAU,aAAAV,EAAA,KAAAG,UAAAH,EAAA,KAAAW,MAAAA,KAAAX,EAAA;CARD,IAAAgB,2BAAiCL,IAmBZM,KAAAT,aAAa,IAAb,IAAA,QAEPU,KAAAV,aAAa,IAAb,IAAA,QAKIW,KAAAX,aAAa,IAAb,WAAA,WAAqCY;CAAA,AAAApB,EAAA,OAAAiB,MAAAjB,EAAA,OAAAkB,MAAAlB,EAAA,OAAAmB,MAX5CC,KAAA;EAAAC,YACO;EAAQC,YACR;EAAsBC,cACpB;EAAoCC,eACnCP;EAA2BQ,qBACrBrC,sBAAqBsC;EAAMC,QACxCT;EAAwCU,eACjC;EAASC,UACd;EAAQC,eACH;EAAWC,KACrB;EAACC,YACMb;EAAqCc,OAC1C;EAAMC,QACL;CACV,GAAClC,EAAA,KAAAiB,IAAAjB,EAAA,KAAAkB,IAAAlB,EAAA,KAAAmB,IAAAnB,EAAA,KAAAoB,MAAAA,KAAApB,EAAA;CAAA,IAAAmC;CAAA,AAAAnC,EAAA,OAAAU,eAAAV,EAAA,OAAAI,YAAAJ,EAAA,OAAAgB,4BAAAhB,EAAA,QAAAS,YAAAT,EAAA,QAAAE,UAEAiC,KAAA1B,WACC,oBAAC,iBAAD,CAAgB,CAAA,IAEhB,oBAAC,0BAAD;EACQ,OAAA;EACE,SAAA;EACCO,SAAAA;EACAd,SAAAA;EACF,OAAA;GAAAyB,QACG;GAAME,UACJ;EACZ;EAEA,UAAA,oBAAC,UAAD;GACW,SAAA,CAACzB,YAADM;GACT,UAAA;GACO,OAAA;IAAA0B,eACU;IAAMC,WACV;GACb;EAAC,CAAA;CAhBkB,CAAA,GAmBxBrC,EAAA,KAAAU,aAAAV,EAAA,KAAAI,UAAAJ,EAAA,KAAAgB,0BAAAhB,EAAA,MAAAS,UAAAT,EAAA,MAAAE,QAAAF,EAAA,MAAAmC,MAAAA,KAAAnC,EAAA;CAAA,IAAAsC,KAAAC,KAAAC,KAAAC,KAAAC,IAAAC,IAAAC,IAAAC;CAAA,AAAA7C,EAAA,QAAA8C,OAAAC,IAAA,2BAAA,KAEDL,KAAA,oBAAC,iBAAD,CAAgB,CAAA,GAChBC,KAAA,oBAAC,iBAAD;EAAuB,OAAA;EAAyB,OAAA;CAAU,CAAA,GAC1DC,KAAA,oBAAC,iBAAD,EAAuB,OAAA,aAAY,CAAA,GACnCC,KAAA,oBAAC,iBAAD;EAAuB,OAAA;EAAiB,OAAA;CAAW,CAAA,GACnDP,MAAA,oBAAC,iBAAD;EAAuB,OAAA;EAAa,OAAA;CAAM,CAAA,GAC1CC,MAAA,oBAAC,iBAAD;EAAuB,OAAA;EAAmB,OAAA;CAAc,CAAA,GACxDC,MAAA,oBAAC,iBAAD,EAAuB,OAAA,aAAY,CAAA,GACnCC,MAAA,oBAAC,iBAAD,CAAgB,CAAA,GAAGzC,EAAA,MAAAsC,KAAAtC,EAAA,MAAAuC,KAAAvC,EAAA,MAAAwC,KAAAxC,EAAA,MAAAyC,KAAAzC,EAAA,MAAA0C,IAAA1C,EAAA,MAAA2C,IAAA3C,EAAA,MAAA4C,IAAA5C,EAAA,MAAA6C,OAAAP,MAAAtC,EAAA,KAAAuC,MAAAvC,EAAA,KAAAwC,MAAAxC,EAAA,KAAAyC,MAAAzC,EAAA,KAAA0C,KAAA1C,EAAA,KAAA2C,KAAA3C,EAAA,KAAA4C,KAAA5C,EAAA,KAAA6C,KAAA7C,EAAA;CAAA,IAAAgD;CACd,OADchD,EAAA,QAAAoB,MAAApB,EAAA,QAAAmC,MAhDrBa,MAAA,qBAAC,MAAD;EACS,OAAA5B;EADT,UAAA;GAiBGe;GAwBDO;GACAC;GACAC;GACAC;GACAP;GACAC;GACAC;GACAC;EAhDG;KAiDEzC,EAAA,MAAAoB,IAAApB,EAAA,MAAAmC,IAAAnC,EAAA,MAAAgD,OAAAA,MAAAhD,EAAA,KAjDPgD;AAiDO;AA9ES,SAAA3C,QAAA4C,OAAA;CAAA,OAK2BA,MAAKC,OAAO9C;AAAS;ACapE,MAOM6F,kBAAgBrB,uBAGpBlB,IAAI,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EAACyC,SAASD,WAAWE,gBACrBvB,GAAG,6BAEEqB,YAAY,YAAY,UAAS,8BAEzBE,YAAY,SAAS,OAAM,uCAK3C,CAACA,aACDvB,GAAG,8DAGiBS,eAAea,SAAS,IAAI,EAAC,MAMtD,GAEKE,yBAAyBzB,uBAAoDnB,IAAI,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EACxF0C,cAEOtB,GAAG,6EAIUS,eAAea,SAAS,KAAK,EAAC,IAInD,GAEKG,oBAAoB1B,uBAAOvB,iBAAiB,CAAC,CAAA,WAAA;;;AAAE,CAAA,CAAA,EAAA,EAACkD,aAC7C,EACLC,OAAOD,MAAME,OAAOD,MAAME,KAAKC,IACjC,EACD,GAEKC,iBAAgBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,GACpB,EAAAhB,IAAAC,aAAuBa,OAEvBG,SAAerC,oBAAoB,GAEnCsC,eAAyCjC,YAAY,OAAO,GAE5D,CAAAkC,uBAAAC,4BAA0D3C,SAAS,EAAK,GACxE4C,yBAA+B7C,OAA6C,IAAI,GAEhF8C,WAAiB5C,YAAY,GAC7B6C,aAAmBrC,iBAAiBsC,OAAkC,GAACC;CAAA,AAAAV,EAAA,OAAAf,KACJyB,KAAAV,EAAA,MAArCU,MAAAC,YAAWtC,gBAAgBuC,SAAO3B,EAAE,GAACe,EAAA,KAAAf,IAAAe,EAAA,KAAAU;CAAnE,IAAAG,OAAa1C,iBAAiBuC,EAAqC,GAEnEI,aAAmB7D,cAAc,GAEjC8D,QAAcF,MAAIE,OAClBC,QAAcH,MAAIG,OAClBC,WAAiBJ,MAAIE,OAAiBG,UAAUD,UAChDE,SAAeN,MAAIM,QACnBC,WAAiBP,MAAIO,UAErB,EAAAC,eAAAC,aAAkCrD,sBAAsB,GAACsD;CAAA,AAAAvB,EAAA,OAAAe,SAAAf,EAAA,OAAAO,YAAAP,EAAA,OAAAqB,iBAAArB,EAAA,OAAAQ,cAAAR,EAAA,OAAAsB,YAAAtB,EAAA,OAAAmB,UAAAnB,EAAA,OAAAd,YAAAc,EAAA,OAAAG,gBAGvDoB,MAAAC,MAAA;EACEA,EAACC,gBAAiB,GAEbV,UACD7B,aACAoC,YAAA,CAAaD,gBACfd,SAASjC,cAAaoD,cAAe,EAAAC,SAAUZ,MAAKa,IAAI,CAAC,CAAC,IACjDzB,aAAY0B,WAAZ,CAAyBV,SAClCZ,SAASnC,cAAa0D,UAAW;GAAAC,SAAUvB,cAAcO,MAAKa;GAAII,OAASjB,MAAKa;EAAI,CAAC,CAAC,IAEtFrB,SAASnC,cAAa6D,KAAM;GAAAN,SAAUZ,MAAKa;GAAIT,QAAU,CAACA;EAAM,CAAC,CAAC;CACnE,GACFnB,EAAA,KAAAe,OAAAf,EAAA,KAAAO,UAAAP,EAAA,KAAAqB,eAAArB,EAAA,KAAAQ,YAAAR,EAAA,KAAAsB,UAAAtB,EAAA,KAAAmB,QAAAnB,EAAA,KAAAd,UAAAc,EAAA,KAAAG,cAAAH,EAAA,MAAAuB,MAAAA,KAAAvB,EAAA;CAbH,IAAAkC,2BAAiCX,IAehCY;CAAA,AAAAnC,EAAA,QAAAe,SAAAf,EAAA,QAAAO,YAAAP,EAAA,QAAAqB,iBAAArB,EAAA,QAAAQ,cAAAR,EAAA,QAAAsB,YAAAtB,EAAA,QAAAmB,UAAAnB,EAAA,QAAAd,YAAAc,EAAA,QAAAG,gBAGCgC,MAAAC,QAAA;EACEZ,IAACC,gBAAiB,GAEbV,UACD7B,aACAoC,YAAA,CAAaD,gBACfC,SAAS,CAAC;GAAAe,MAAO;GAAiBC,OAASvB,MAAKa;EAAI,CAAC,CAAC,IAC7CN,YAAAD,gBACLlB,aAAY0B,WAAZ,CAAyBV,SAC3BZ,SAASnC,cAAa0D,UAAW;GAAAC,SAAUvB,cAAcO,MAAKa;GAAII,OAASjB,MAAKa;EAAI,CAAC,CAAC,IAEtFrB,SAASnC,cAAa6D,KAAM;GAAAN,SAAUZ,MAAKa;GAAIT,QAAU,CAACA;EAAM,CAAC,CAAC,IAE3DhB,aAAY0B,UAEnBtB,SADEY,SACO/C,cAAa6D,KAAM;GAAAN,SAAUZ,MAAKa;GAAIT,QAAU,CAACA;EAAM,CAAC,IAExD/C,cAAa0D,UAAW;GAAAC,SAAUvB,cAAcO,MAAKa;GAAII,OAASjB,MAAKa;EAAI,CAAC,CAAC,IAGxFrB,SAASjC,cAAaoD,cAAe,EAAAC,SAAUZ,MAAKa,IAAI,CAAC,CAAC;CAC3D,GACF5B,EAAA,MAAAe,OAAAf,EAAA,MAAAO,UAAAP,EAAA,MAAAqB,eAAArB,EAAA,MAAAQ,YAAAR,EAAA,MAAAsB,UAAAtB,EAAA,MAAAmB,QAAAnB,EAAA,MAAAd,UAAAc,EAAA,MAAAG,cAAAH,EAAA,MAAAmC,MAAAA,KAAAnC,EAAA;CAvBH,IAAAuC,cAAoBJ,IA2BpBK,cAAoBpB,WAAA,KAAA,GACpBqB,iBAAuBvD,YAAAkC,WAAA,KAAA,GAA8BsB,IAAAC;CAgBrD,IAhBqD3C,EAAA,QAAA4C,OAAAC,IAAA,2BAAA,KAG3CH,YACRpC,uBAAsBuB,UAAWiB,iBACzBzC,yBAAyB,EAAI,GACnCtB,GACF,SACO;EACL,AAAIuB,uBAAsBuB,WACxBkB,aAAazC,uBAAsBuB,OAAQ;CAC5C,IAEFc,KAAA,CAAA,GAAE3C,EAAA,MAAA0C,IAAA1C,EAAA,MAAA2C,OAAAD,KAAA1C,EAAA,KAAA2C,KAAA3C,EAAA,MAVLxC,UAAUkF,IAUPC,EAAE,GAGD,CAAC5B,OAAK,OACD;CAKI,IAAAiC,KAAA9D,WAAA+D,KAAAA,IAAAV,aAIQW,KAAApC,aAAa,IAAb,IAAA,QAGbqC,KAAArC,aAAa,IAAI9C,sBAAqBoF,QAASpF,sBAAqBqF,OACpDC,KAAAxC,aAAa,IAAb,SAAA,OAA+ByC;CAAA,AAAAvD,EAAA,QAAAkD,MAAAlD,EAAA,QAAAmD,MAAAnD,EAAA,QAAAsD,MAL5CC,KAAA;EAAAC,eACUN;EAA2BO,YAC9B;EAACC,qBAEXP;EAA0EQ,kBAC1DL;CACpB,GAACtD,EAAA,MAAAkD,IAAAlD,EAAA,MAAAmD,IAAAnD,EAAA,MAAAsD,IAAAtD,EAAA,MAAAuD,MAAAA,KAAAvD,EAAA;CACU,IAAA4D,MAAA/C,KAAIO,UAASyC;CAAA,AAAA7D,EAAA,QAAAwC,cAerBqB,MAAA7D,EAAA,OATM6D,MAAA;EAAAC,YACO;EAAQC,YACR;EAACC,cACC;EAACC,YACH;EAAQC,QACZ;EAAMC,gBACE;EAAQC,SACf5B;EAAW6B,UACV;CACZ,GAACrE,EAAA,MAAAwC,aAAAxC,EAAA,MAAA6D;CAAA,IAAAS;CAAA,AAAAtE,EAAA,QAAAqB,iBAAArB,EAAA,QAAAsB,YAAAtB,EAAA,QAAAmB,UAEAmD,MAAAhD,YAAA,CAAaD,gBACZ,oBAAC,UAAD,EACS,OAAA;EAAAkD,YACO;EAACH,SACJ;CACX,EAAC,CAAA,IAGH,oBAAC,UAAD;EACWjD,SAAAA;EACT,UAAA;EACO,OAAA;GAAAqD,eACU;GAAMC,WACV;EACb;CAAC,CAAA,GAEJzE,EAAA,MAAAqB,eAAArB,EAAA,MAAAsB,UAAAtB,EAAA,MAAAmB,QAAAnB,EAAA,MAAAsE,OAAAA,MAAAtE,EAAA;CAAA,IAAA0E;CAAA,AAAA1E,EAAA,QAAAkC,4BAAAlC,EAAA,QAAAE,UAAAF,EAAA,QAAA6D,OAAA7D,EAAA,QAAAsE,OA9BHI,MAAA,oBAAC,wBAAD;EACWxC,SAAAA;EACAhC,SAAAA;EACF,OAAA2D;EAWNS,UAAAA;CAdoB,CAAA,GA+BEtE,EAAA,MAAAkC,0BAAAlC,EAAA,MAAAE,QAAAF,EAAA,MAAA6D,KAAA7D,EAAA,MAAAsE,KAAAtE,EAAA,MAAA0E,OAAAA,MAAA1E,EAAA;CAAA,IAAA2E;CAAA,AAAA3E,EAAA,QAAA4C,OAAAC,IAAA,2BAAA,KAIhB8B,MAAA;EAAAZ,YACO;EAACC,cACC;EAACC,YACH;EAAQC,QACZ;EAAMU,OACP;CACT,GAAC5E,EAAA,MAAA2E,OAAAA,MAAA3E,EAAA;CAAA,IAAA6E;CAAA,AAAA7E,EAAA,QAAA4C,OAAAC,IAAA,2BAAA,KAE4CgC,MAAA;EAAAX,QAAS;EAAMG,UAAY;CAAU,GAACrE,EAAA,MAAA6E,OAAAA,MAAA7E,EAAA;CAAA,IAAA8E;CAAA,AAAA9E,EAAA,QAAAyC,iBACNqC,MAAA9E,EAAA,OAA/D8E,MAAA;EAAAZ,QAAS;EAAME,SAAW3B;EAAc4B,UAAY;CAAU,GAACrE,EAAA,MAAAyC,gBAAAzC,EAAA,MAAA8E;CAAA,IAAAC;CAAA,AAAA/E,EAAA,QAAAe,QAEGgE,MAAA/E,EAAA,OAA3E+E,MAAApG,YAAYoC,KAA8D,KAApD,oBAAC,YAAD;EAAqB,WAAAA,MAAKiE;EAAkB,OAAA;CAAM,CAAA,GAAGhF,EAAA,MAAAe,OAAAf,EAAA,MAAA+E;CAAA,IAAAE;CAAA,AAAAjF,EAAA,QAAAe,SAAAf,EAAA,QAAAiB,YAAAjB,EAAA,QAAAE,UAG3E+E,MAAArG,aAAamC,KAOd,KANE,oBAAC,SAAD;EACa,WAAA;EACFb,SAAAA;EACU,mBAAA,CAACe;EACf,KAAAvC,YAAYqC,OAAO;GAAAmD,QAAS;GAAGU,OAAS;EAAG,CAAC;CAAC,CAAA,GAErD5E,EAAA,MAAAe,OAAAf,EAAA,MAAAiB,UAAAjB,EAAA,MAAAE,QAAAF,EAAA,MAAAiF,OAAAA,MAAAjF,EAAA;CAAA,IAAAkF;CAAA,AAAAlF,EAAA,QAAA8E,OAAA9E,EAAA,QAAA+E,OAAA/E,EAAA,QAAAiF,OAZHC,MAAA,qBAAC,KAAD;EAAY,OAAAJ;EAAZ,UAAA,CAEGC,KAGAE,GALC;KAaEjF,EAAA,MAAA8E,KAAA9E,EAAA,MAAA+E,KAAA/E,EAAA,MAAAiF,KAAAjF,EAAA,MAAAkF,OAAAA,MAAAlF,EAAA;CAAA,IAAAmF;CAAA,AAAAnF,EAAA,QAAAoB,WAiBL+D,MAAAnF,EAAA,OAdAmF,MAAA/D,YACC,oBAAC,MAAD;EACQ,OAAA;EACE,SAAA;EACD,OAAA;GAAA8C,QACG;GAAMkB,MACR;GAACf,UACG;GAAUgB,KACf;GAACT,OACC;EACT;EAEA,UAAA,oBAAC,SAAD,CAAQ,CAAA;CAXL,CAAA,GAaN5E,EAAA,MAAAoB,UAAApB,EAAA,MAAAmF;CAAA,IAAAG;CAAA,AAAAtF,EAAA,QAAAd,YAAAc,EAAA,QAAAoB,YAGAkE,MAAApG,YAAA,CAAakC,YACZ,oBAAC,MAAD;EACQ,OAAA;EACE,SAAA;EACD,OAAA;GAAA8C,QACG;GAAMkB,MACR;GAACf,UACG;GAAUgB,KACf;GAACT,OACC;EACT;EAEA,UAAA,oBAAC,MAAD;GAAY,MAAA;GACV,UAAA,oBAAC,qBAAD,CAAoB,CAAA;EADjB,CAAA;CAXF,CAAA,GAeN5E,EAAA,MAAAd,UAAAc,EAAA,MAAAoB,UAAApB,EAAA,MAAAsF,OAAAA,MAAAtF,EAAA;CAAA,IAAAuF;CAAA,AAAAvF,EAAA,QAAAkF,OAAAlF,EAAA,QAAAmF,OAAAnF,EAAA,QAAAsF,OA3DLC,MAAA,oBAAC,KAAD;EACS,OAAAZ;EAQP,UAAA,qBAAC,MAAD;GAAY,OAAA;GAAiB,SAAA;GAAgB,OAAAE;GAA7C,UAAA;IACEK;IAgBCC;IAiBAG;GAlCE;;CATH,CAAA,GA6DEtF,EAAA,MAAAkF,KAAAlF,EAAA,MAAAmF,KAAAnF,EAAA,MAAAsF,KAAAtF,EAAA,MAAAuF,OAAAA,MAAAvF,EAAA;CAIQ,IAAAwF,MAAA1E,aAAa,IAAb,IAAA,GAGD2E,MAAA3E,aAAa,IAAb,IAAA,QAA2B4E;CAAA,AAAA1F,EAAA,QAAAwC,eAAAxC,EAAA,QAAAyF,OAF/BC,MAAA;EAAA3B,YACO;EAAC4B,SACJF;EAA2BrB,SAC3B5B;CACX,GAACxC,EAAA,MAAAwC,aAAAxC,EAAA,MAAAyF,KAAAzF,EAAA,MAAA0F,OAAAA,MAAA1F,EAAA;CAAA,IAAA4F;CAAA,AAAA5F,EAAA,QAAA4C,OAAAC,IAAA,2BAAA,KAE2B+C,MAAA,EAAAC,YAAa,MAAK,GAAC7F,EAAA,MAAA4F,OAAAA,MAAA5F,EAAA;CAAA,IAAA8F;CAAA,AAAA9F,EAAA,QAAAe,MAAAgF,mBAExCD,MAAA9F,EAAA,OAFP8F,MAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAU,OAAAF;EAAkC,cAAA;EAC3D7E,UAAAA,MAAKgF;CADH,CAAA,GAEE/F,EAAA,MAAAe,MAAAgF,kBAAA/F,EAAA,MAAA8F;CAAA,IAAAE;CAAA,AAAAhG,EAAA,QAAAwF,OAAAxF,EAAA,QAAA0F,OAAA1F,EAAA,QAAA8F,OAVTE,MAAA,oBAAC,KAAD;EACc,YAAAR;EACL,OAAAE;EAMPI,UAAAA;CARE,CAAA,GAWE9F,EAAA,MAAAwF,KAAAxF,EAAA,MAAA0F,KAAA1F,EAAA,MAAA8F,KAAA9F,EAAA,MAAAgG,OAAAA,MAAAhG,EAAA;CAIQ,IAAAiG,MAAAnF,aAAa,IAAb,IAAA,GAEEoF,MAAApF,aAAa,IAAb,IAAA,GACHqF,MAAArF,aAAa,IAAb,IAAA,QAA2BsF;CAAA,AAAApG,EAAA,QAAAwC,eAAAxC,EAAA,QAAAkG,OAAAlG,EAAA,QAAAmG,OAF/BC,MAAA;EAAArC,YACOmC;EAAsBP,SACzBQ;EAA2B/B,SAC3B5B;CACX,GAACxC,EAAA,MAAAwC,aAAAxC,EAAA,MAAAkG,KAAAlG,EAAA,MAAAmG,KAAAnG,EAAA,MAAAoG,OAAAA,MAAApG,EAAA;CAAA,IAAAqG;CAAA,AAAArG,EAAA,QAAA4C,OAAAC,IAAA,2BAAA,KAE2BwD,MAAA,EAAAR,YAAa,MAAK,GAAC7F,EAAA,MAAAqG,OAAAA,MAAArG,EAAA;CAAA,IAAAsG;CAAA,AAAAtG,EAAA,QAAAe,QACIuF,MAAAtG,EAAA,OAAhDsG,MAAA1H,aAAamC,KAAkC,KAAxBxC,mBAAmBwC,KAAK,GAACf,EAAA,MAAAe,OAAAf,EAAA,MAAAsG;CAAA,IAAAC;CAAA,AAAAvG,EAAA,QAAAsG,MAC5CC,MAAAvG,EAAA,OAFPuG,MAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAU,OAAAF;EAAkC,cAAA;EAC3DC,UAAAA;CADE,CAAA,GAEEtG,EAAA,MAAAsG,KAAAtG,EAAA,MAAAuG;CAAA,IAAAC;CAAA,AAAAxG,EAAA,QAAAiG,OAAAjG,EAAA,QAAAoG,OAAApG,EAAA,QAAAuG,OAVTC,MAAA,oBAAC,KAAD;EACc,YAAAP;EACL,OAAAG;EAMPG,UAAAA;CARE,CAAA,GAWEvG,EAAA,MAAAiG,KAAAjG,EAAA,MAAAoG,KAAApG,EAAA,MAAAuG,KAAAvG,EAAA,MAAAwG,OAAAA,MAAAxG,EAAA;CAKO,IAAAyG,MAAA3F,aAAa,IAAb,SAAA,SAAiC4F;CAAA,AAAA1G,EAAA,QAAAwC,eAAAxC,EAAA,QAAAyG,OADrCC,MAAA;EAAAC,SACIF;EAAiC1C,YAC9B;EAAC4B,SACJ;EAAMvB,SACN5B;CACX,GAACxC,EAAA,MAAAwC,aAAAxC,EAAA,MAAAyG,KAAAzG,EAAA,MAAA0G,OAAAA,MAAA1G,EAAA;CAAA,IAAA4G;CAAA,AAAA5G,EAAA,QAAA4C,OAAAC,IAAA,2BAAA,KAE2B+D,MAAA,EAAAf,YAAa,MAAK,GAAC7F,EAAA,MAAA4G,OAAAA,MAAA5G,EAAA;CAAA,IAAA6G;CAAA,AAAA7G,EAAA,QAAAe,MAAA+F,WAExCD,MAAA7G,EAAA,OAFP6G,MAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAU,OAAAD;EAAkC,cAAA;EAC3D7F,UAAAA,MAAK+F;CADH,CAAA,GAEE9G,EAAA,MAAAe,MAAA+F,UAAA9G,EAAA,MAAA6G;CAAA,IAAAE;CAAA,AAAA/G,EAAA,QAAA0G,OAAA1G,EAAA,QAAA6G,OAVTE,MAAA,oBAAC,KAAD;EACS,OAAAL;EAOPG,UAAAA;CARE,CAAA,GAWE7G,EAAA,MAAA0G,KAAA1G,EAAA,MAAA6G,KAAA7G,EAAA,MAAA+G,OAAAA,MAAA/G,EAAA;CAKO,IAAAgH,MAAAlG,aAAa,IAAb,SAAA,SAAiCmG;CAAA,AAAAjH,EAAA,QAAAwC,eAAAxC,EAAA,QAAAgH,OADrCC,MAAA;EAAAN,SACIK;EAAiCjD,YAC9B;EAAC4B,SACJ;EAAMvB,SACN5B;CACX,GAACxC,EAAA,MAAAwC,aAAAxC,EAAA,MAAAgH,KAAAhH,EAAA,MAAAiH,OAAAA,MAAAjH,EAAA;CAAA,IAAAkH;CAAA,AAAAlH,EAAA,QAAA4C,OAAAC,IAAA,2BAAA,KAE2BqE,MAAA,EAAArB,YAAa,MAAK,GAAC7F,EAAA,MAAAkH,OAAAA,MAAAlH,EAAA;CAAA,IAAAmH;CAAA,AAAAnH,EAAA,QAAAe,MAAAqG,OACFD,MAAAnH,EAAA,OAA1CmH,MAAAhK,SAAS4D,MAAKqG,MAAO;EAAAC,MAAO;EAAEC,OAAS;CAAC,CAAC,GAACtH,EAAA,MAAAe,MAAAqG,MAAApH,EAAA,MAAAmH;CAAA,IAAAI;CAAA,AAAAvH,EAAA,QAAAmH,MACtCI,MAAAvH,EAAA,OAFPuH,MAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAU,OAAAL;EAAkC,cAAA;EAC3DC,UAAAA;CADE,CAAA,GAEEnH,EAAA,MAAAmH,KAAAnH,EAAA,MAAAuH;CAAA,IAAAC;CAAA,AAAAxH,EAAA,SAAAiH,OAAAjH,EAAA,SAAAuH,OAVTC,MAAA,oBAAC,KAAD;EACS,OAAAP;EAOPM,UAAAA;CARE,CAAA,GAWEvH,EAAA,OAAAiH,KAAAjH,EAAA,OAAAuH,KAAAvH,EAAA,OAAAwH,OAAAA,MAAAxH,EAAA;CAIQ,IAAAyH,MAAA3G,aAAa,IAAb,IAAA,GAEE4G,MAAA5G,aAAa,IAAb,IAAA,GACH6G,MAAA7G,aAAa,IAAb,IAAA,QAA2B8G;CAAA,AAAA5H,EAAA,SAAAwC,eAAAxC,EAAA,SAAA0H,OAAA1H,EAAA,SAAA2H,OAF/BC,MAAA;EAAA7D,YACO2D;EAAsB/B,SACzBgC;EAA2BvD,SAC3B5B;CACX,GAACxC,EAAA,OAAAwC,aAAAxC,EAAA,OAAA0H,KAAA1H,EAAA,OAAA2H,KAAA3H,EAAA,OAAA4H,OAAAA,MAAA5H,EAAA;CAAA,IAAA6H;CAAA,AAAA7H,EAAA,SAAA4C,OAAAC,IAAA,2BAAA,KAE2BgF,MAAA,EAAAhC,YAAa,MAAK,GAAC7F,EAAA,OAAA6H,OAAAA,MAAA7H,EAAA;CAAA,IAAA8H;CAAA,AAAA9H,EAAA,SAAAe,MAAAgH,aACUD,MAAA9H,EAAA,QAAtD8H,MAAA5K,eAAe,IAAI8K,KAAKjH,MAAKgH,UAAW,mBAAG,IAAIC,KAAK,CAAC,GAAChI,EAAA,OAAAe,MAAAgH,YAAA/H,EAAA,OAAA8H;CAAA,IAAAG;CAAA,AAAAjI,EAAA,SAAA8H,MAClDG,MAAAjI,EAAA,QAFPiI,MAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAU,OAAAJ;EAAkC,cAAA;EAC3DC,UAAAA;CADE,CAAA,GAEE9H,EAAA,OAAA8H,KAAA9H,EAAA,OAAAiI;CAAA,IAAAC;CAAA,AAAAlI,EAAA,SAAAyH,OAAAzH,EAAA,SAAA4H,OAAA5H,EAAA,SAAAiI,OAVTC,MAAA,oBAAC,KAAD;EACc,YAAAT;EACL,OAAAG;EAMPK,UAAAA;CARE,CAAA,GAWEjI,EAAA,OAAAyH,KAAAzH,EAAA,OAAA4H,KAAA5H,EAAA,OAAAiI,KAAAjI,EAAA,OAAAkI,OAAAA,MAAAlI,EAAA;CAKO,IAAAmI,MAAArH,aAAa,IAAb,SAAA,SAAiCsH;CAAA,AAAApI,EAAA,SAAAwC,eAAAxC,EAAA,SAAAmI,OADrCC,MAAA;EAAAzB,SACIwB;EAAiCpE,YAC9B;EAAC4B,SACJ;EAAMvB,SACN5B;CACX,GAACxC,EAAA,OAAAwC,aAAAxC,EAAA,OAAAmI,KAAAnI,EAAA,OAAAoI,OAAAA,MAAApI,EAAA;CAAA,IAAAqI;CAAA,AAAArI,EAAA,SAAA4C,OAAAC,IAAA,2BAAA,KAE2BwF,MAAA,EAAAxC,YAAa,MAAK,GAAC7F,EAAA,OAAAqI,OAAAA,MAAArI,EAAA;CAAA,IAAAsI;CAAA,AAAAtI,EAAA,SAAAf,MAAAe,EAAA,SAAAI,yBAA/CkI,MAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAU,OAAAD;EAAkC,cAAA;EAC3DjI,UAAAA,wBACC,oBAAC,wBAAD;GAA4BnB;GACzBsJ,UAAAA;EADoB,CAAA,IADxB,oBAAA,UAAA,EAAA,UAYG,IAAC,CAAA;CAbF,CAAA,GAeEvI,EAAA,OAAAf,IAAAe,EAAA,OAAAI,uBAAAJ,EAAA,OAAAsI,OAAAA,MAAAtI,EAAA;CAAA,IAAAwI;CAAA,AAAAxI,EAAA,SAAAoI,OAAApI,EAAA,SAAAsI,OAvBTE,MAAA,oBAAC,KAAD;EACS,OAAAJ;EAOPE,UAAAA;CARE,CAAA,GAwBEtI,EAAA,OAAAoI,KAAApI,EAAA,OAAAsI,KAAAtI,EAAA,OAAAwI,OAAAA,MAAAxI,EAAA;CAOU,IAAAyI,MAAA3H,aAAa,IAAb,IAAA,GAEA4H,MAAA5H,aAAa,IAAb,WAAA,QAAkC6H;CAAA,AAAA3I,EAAA,SAAAwC,eAAAxC,EAAA,SAAAyI,OAAAzI,EAAA,SAAA0I,OAHzCC,MAAA;EAAA5E,YACO0E;EAAsBzE,cACpB;EAAGC,YACLyE;EAAkCtE,SACrC5B;CACX,GAACxC,EAAA,OAAAwC,aAAAxC,EAAA,OAAAyI,KAAAzI,EAAA,OAAA0I,KAAA1I,EAAA,OAAA2I,OAAAA,MAAA3I,EAAA;CAAA,IAAA4I;CAAA,AAAA5I,EAAA,SAAAgB,QAqBA4H,MAAA5I,EAAA,QAjBA4I,MAAA5H,SACC,oBAAC,KAAD;EAAc,SAAA;EACZ,UAAA,oBAAC,SAAD;GACE,SAAA;GAEE,SAAA,oBAAC,WAAD;IAAoB,SAAA;IAAU,OAAA;IAC5B,UAAA,oBAAC,MAAD;KAAY,MAAA;KAAIA,UAAAA;IAAX,CAAA;GADG,CAAA;GAIF,WAAA;GACV,QAAA;GAEA,UAAA,oBAAC,MAAD;IAAY,MAAA;IACV,UAAA,oBAAC,mBAAD,EAAyB,OAAA,WAAU,CAAA;GADhC,CAAA;EAVC,CAAA;CADN,CAAA,GAgBLhB,EAAA,OAAAgB,OAAAhB,EAAA,OAAA4I;CAAA,IAAAC;CAAA,AAAA7I,EAAA,SAAA2I,OAAA3I,EAAA,SAAA4I,OA7BHC,MAAA,oBAAC,MAAD;EACQ,OAAA;EACE,SAAA;EACD,OAAAF;EASNC,UAAAA;CAZE,CAAA,GA8BE5I,EAAA,OAAA2I,KAAA3I,EAAA,OAAA4I,KAAA5I,EAAA,OAAA6I,OAAAA,MAAA7I,EAAA;CAAA,IAAA8I;CACO,OADP9I,EAAA,SAAAa,KAAAO,YAAApB,EAAA,SAAAE,UAAAF,EAAA,SAAAd,YAAAc,EAAA,SAAA0E,OAAA1E,EAAA,SAAAuF,OAAAvF,EAAA,SAAAgG,OAAAhG,EAAA,SAAAwG,OAAAxG,EAAA,SAAA+G,OAAA/G,EAAA,SAAAwH,OAAAxH,EAAA,SAAAgD,MAAAhD,EAAA,SAAAkI,OAAAlI,EAAA,SAAAwI,OAAAxI,EAAA,SAAA6I,OAAA7I,EAAA,SAAAuD,MA/OTuF,MAAA,qBAAC,iBAAD;EACW,SAAA9F;EACA9C,SAAAA;EACEhB,WAAAA;EACJ,OAAAqE;EAOI,WAAAK;EAXb,UAAA;GAcEc;GAkCAa;GAgEAS;GAcAQ;GAcAO;GAcAS;GAcAU;GAcAM;GA2BAK;EAjNY;KAgPE7I,EAAA,OAAAa,KAAAO,UAAApB,EAAA,OAAAE,QAAAF,EAAA,OAAAd,UAAAc,EAAA,OAAA0E,KAAA1E,EAAA,OAAAuF,KAAAvF,EAAA,OAAAgG,KAAAhG,EAAA,OAAAwG,KAAAxG,EAAA,OAAA+G,KAAA/G,EAAA,OAAAwH,KAAAxH,EAAA,OAAAgD,IAAAhD,EAAA,OAAAkI,KAAAlI,EAAA,OAAAwI,KAAAxI,EAAA,OAAA6I,KAAA7I,EAAA,OAAAuD,IAAAvD,EAAA,OAAA8I,OAAAA,MAAA9I,EAAA,MAhPhB8I;AAgPgB;AAIpB,IAAA,wBAAe1L,KAAK0C,aAAa;AA9UX,SAAAW,QAAAG,OAAA;CAAA,OAW2BA,MAAKmI,OAAOvI;AAAW;AAXlD,SAAA+H,SAAA7H,IAAA;CA2RN,IAAA,EAAAsI,WAAAC,uBAAAvI,IACAwI,kBAAwBzK,mBAAmBwK,kBAAkB;CAAC,OACvDD,YAAA,oBAAA,UAAA,EAAA,UACH,IAAC,CAAA,IADE,oBAAA,UAAA,EAAA,UAGFG,MAAKC,QAASF,eAA4C,IAAzBA,gBAAeG,SAAhD,EAA2D,CAAA;AAC/D;AClXjB,MAAMkB,gBAAgBR,uBAAOP,IAAI,CAAC,CAAA,WAAA;;;AAC/B,CAAA,CAAA,EAAA,EAACgB,YAAWV,GAAG,gJASIU,MAAMC,OAAOC,MAAMC,KAAKC,QAAQC,GAAE,IAIxD,GAEMC,cAAcf,uBAAOT,GAAG,CAAC,CAAA,WAAA;;;AAC5B,CAAA,CAAA,EAAA,EAACkB,YAAWV,GAAG,cACAU,MAAMC,OAAOC,MAAMK,KAAKC,OAAM,mFAO5BR,MAAMC,OAAOC,MAAMK,KAAKC,OAAM,iGAUlD,GAEMC,kBAAiBC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAhB,UAAAC,MAAAC,eAAAY,IACtBG,WAAiBzB,YAAY,GAC7B0B,aAAmB3B,cAAc,GACjC4B,SAAe1B,oBAAoB,GAAC2B;CAAA,AAAAL,EAAA,OAAAE,YAAAF,EAAA,OAAAf,YAIvBoB,WAAMH,SAASpB,eAAcwB,iBAAkB,EAAArB,SAAS,CAAC,CAAC,GAACe,EAAA,KAAAE,UAAAF,EAAA,KAAAf,UAAAe,EAAA,KAAAK,MAAAA,KAAAL,EAAA;CAAA,IAAAO;CAAA,AAAAP,EAAA,OAAAI,SAE1BG,KAAAP,EAAA,MAA5BO,KAAAxB,eAAeqB,QAAQ,IAAI,GAACJ,EAAA,KAAAI,QAAAJ,EAAA,KAAAO;CACzB,IAAAC,KAAAL,aAAa,IAAb,IAAA,QAEbM,KAAAN,aAAa,IAAItB,sBAAqB6B,QAAS7B,sBAAqB8B,OACpDC,KAAAT,aAAa,IAAb,SAAA,OAA+BU;CAAA,AAAAb,EAAA,OAAAO,MAAAP,EAAA,OAAAQ,MAAAR,EAAA,OAAAS,MAAAT,EAAA,OAAAY,MAL5CC,KAAA;EAAAC,YACOP;EAA4BQ,eACzBP;EAA2BQ,qBAExCP;EAA0EQ,kBAC1DL;CACpB,GAACZ,EAAA,KAAAO,IAAAP,EAAA,KAAAQ,IAAAR,EAAA,KAAAS,IAAAT,EAAA,KAAAY,IAAAZ,EAAA,KAAAa,MAAAA,KAAAb,EAAA;CAAA,IAAAkB;CAAA,AAAAlB,EAAA,QAAAmB,OAAAC,IAAA,2BAAA,KAEDF,KAAA,oBAAC,KAAD,CAAI,CAAA,GAAGlB,EAAA,MAAAkB,MAAAA,KAAAlB,EAAA;CAAA,IAAAqB;CAAA,AAAArB,EAAA,QAAAmB,OAAAC,IAAA,2BAAA,KACPC,KAAA,oBAAC,MAAD;EAAY,OAAA;EAAiB,SAAA;EAAgB,OAAA;GAAAC,YAAa;GAACC,QAAU;GAAMC,OAAS;EAAO;EACzF,UAAA,oBAAC,aAAD,CAAY,CAAA;CADT,CAAA,GAEExB,EAAA,MAAAqB,MAAAA,KAAArB,EAAA;CAEO,IAAAyB,KAAAtB,aAAa,IAAb,IAAA,GACyCwB,MAAAxB,aAAa,IAAb,QAAA,QAA+ByB;CAAA,AAAA5B,EAAA,QAAA0B,KAAA1B,EAAA,QAAA2B,OAA7EC,MAAA;EAAAN,YAAaI;EAAsBG,SAAWF;CAA+B,GAAC3B,EAAA,MAAA0B,GAAA1B,EAAA,MAAA2B,KAAA3B,EAAA,MAAA4B,OAAAA,MAAA5B,EAAA;CAAA,IAAA8B;CAAA,AAAA9B,EAAA,QAAAmB,OAAAC,IAAA,2BAAA,KAG7DU,MAAA,EAAAC,YAAa,QAAO,GAAC/B,EAAA,MAAA8B,OAAAA,MAAA9B,EAAA;CAAA,IAAAgC;CAAA,AAAAhC,EAAA,QAAAd,OAEpC8C,MAAAhC,EAAA,OAFPgC,MAAA,oBAAC,MAAD;EAAY,MAAA;EAAU,OAAAF;EAAoC,cAAA;EAAkB,QAAA;EACzE5C,UAAAA;CADE,CAAA,GAEEc,EAAA,MAAAd,MAAAc,EAAA,MAAAgC;CAAA,IAAAC;CAAA,AAAAjC,EAAA,QAAAmB,OAAAC,IAAA,2BAAA,KACPa,MAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAU,OAAA,EAAAF,YAAa,QAAO;EAAG,UAAA;CAA9C,CAAA,GAEE/B,EAAA,MAAAiC,OAAAA,MAAAjC,EAAA;CAAA,IAAAkC;CAAA,AAAAlC,EAAA,QAAAgC,MACDE,MAAAlC,EAAA,OAPRkC,MAAA,qBAAC,OAAD;EAAc,OAAA;EAAd,UAAA,CACEF,KAGAC,GAJI;KAOEjC,EAAA,MAAAgC,KAAAhC,EAAA,MAAAkC;CAAA,IAAAC;CAAA,AAAAnC,EAAA,QAAA4B,OAAA5B,EAAA,QAAAkC,OAAAlC,EAAA,QAAAyB,MAXVU,MAAA,oBAAC,KAAD;EACc,YAAAV;EACL,OAAAG;EAEPM,UAAAA;CAJE,CAAA,GAYElC,EAAA,MAAA4B,KAAA5B,EAAA,MAAAkC,KAAAlC,EAAA,MAAAyB,IAAAzB,EAAA,MAAAmC,OAAAA,MAAAnC,EAAA;CACgB,IAAAoC,MAAAjC,aAAa,IAAb,SAAA,SAAiCkC;CAAA,AAAArC,EAAA,QAAAoC,MAAgBC,MAAArC,EAAA,OAA3DqC,MAAA;EAAAC,SAAUF;EAAiCd,YAAc;CAAC,GAACtB,EAAA,MAAAoC,KAAApC,EAAA,MAAAqC;CAEjD,IAAAE,MAAApD,eAAe,IAAf,KAAA,KAA2BqD;CAAA,AAAAxC,EAAA,QAAAuC,OAAAvC,EAAA,QAAAb,cAD/CqD,MAAA,qBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAlB,UAAA;GACGrD;GAAW;GAAMoD;EADf;KAEEvC,EAAA,MAAAuC,KAAAvC,EAAA,MAAAb,YAAAa,EAAA,MAAAwC,OAAAA,MAAAxC,EAAA;CAAA,IAAAyC;CAAA,AAAAzC,EAAA,QAAAqC,OAAArC,EAAA,QAAAwC,OAHTC,MAAA,oBAAC,KAAD;EAAY,OAAAJ;EACVG,UAAAA;CADE,CAAA,GAIExC,EAAA,MAAAqC,KAAArC,EAAA,MAAAwC,KAAAxC,EAAA,MAAAyC,OAAAA,MAAAzC,EAAA;CACgB,IAAA0C,MAAAvC,aAAa,IAAb,SAAA,SAAiCwC;CAAA,AAAA3C,EAAA,QAAA0C,MAAgBC,MAAA3C,EAAA,OAA3D2C,MAAA;EAAAL,SAAUI;EAAiCpB,YAAc;CAAC,GAACtB,EAAA,MAAA0C,KAAA1C,EAAA,MAAA2C;CAAA,IAAAC;CAAA,AAAA5C,EAAA,QAAAmB,OAAAC,IAAA,2BAAA,KACrEwB,MAAA,oBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAG,UAAA;CAAhB,CAAA,GAEE5C,EAAA,MAAA4C,OAAAA,MAAA5C,EAAA;CAAA,IAAA6C;CAAA,AAAA7C,EAAA,QAAA2C,MACHE,MAAA7C,EAAA,OAJN6C,MAAA,oBAAC,KAAD;EAAY,OAAAF;EACVC,UAAAA;CADE,CAAA,GAIE5C,EAAA,MAAA2C,KAAA3C,EAAA,MAAA6C;CAAA,IAAAC;CAAA,AAAA9C,EAAA,QAAAmB,OAAAC,IAAA,2BAAA,KACN0B,MAAA,oBAAC,KAAD,CAAI,CAAA,GAAG9C,EAAA,MAAA8C,OAAAA,MAAA9C,EAAA;CAAA,IAAA+C;CACO,OADP/C,EAAA,QAAAK,MAAAL,EAAA,QAAAmC,OAAAnC,EAAA,QAAAyC,OAAAzC,EAAA,QAAA6C,OAAA7C,EAAA,QAAAa,MArCTkC,MAAA,qBAAC,eAAD;EACW,SAAA1C;EACF,OAAAQ;EAFT,UAAA;GAUEK;GACAG;GAGAc;GAaAM;GAKAI;GAKAC;EArCY;KAsCE9C,EAAA,MAAAK,IAAAL,EAAA,MAAAmC,KAAAnC,EAAA,MAAAyC,KAAAzC,EAAA,MAAA6C,KAAA7C,EAAA,MAAAa,IAAAb,EAAA,MAAA+C,OAAAA,MAAA/C,EAAA,KAtChB+C;AAsCgB,GC/EdqB,kBAAiBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACrB,EAAAJ,OAAaE,OAEbG,SAAed,oBAAoB,GAGnCe,WAAiBhB,YAAY,GAACiB;CAAA,AAAAJ,EAAA,OAAAH,KACsCO,KAAAJ,EAAA,MAAtCI,MAAAC,UAAWd,iBAAiBc,OAAOR,EAAE,GAACG,EAAA,KAAAH,IAAAG,EAAA,KAAAI;CAApE,IAAAE,OAAahB,iBAAiBc,EAAsC,GAEpEG,aAAmBtB,cAAc;CAEjC,IAAI,CAACqB,MAAI,OACA;CACR,IAAAE;CAAA,AAAAR,EAAA,OAAAM,KAAAG,OAEyDD,KAAAR,EAAA,MAAzCQ,KAAAtB,SAASoB,KAAIG,MAAO;EAAAC,MAAO;EAAEC,OAAS;CAAC,CAAC,GAACX,EAAA,KAAAM,KAAAG,MAAAT,EAAA,KAAAQ;CAA1D,IAAAI,WAAiBJ,IACjBK,gBAAsBC,KAAIH,MAAOL,KAAIS,WAAJ,CAAiB,GAElDC,aAAmBV,KAAIW,WAAY,YACnCC,cAAoBZ,KAAIW,WAAY,aACpCE,WAAiBb,KAAIW,WAAY,UAE7BA;CAOJ,AANID,eACFC,SAASA,cAEPC,gBACFD,SAASA,GAAGJ,cAAa,KAEvBM,aACFF,SAASA;CACV,IAAAG;CAAA,AAAApB,EAAA,OAAAG,YAAAH,EAAA,OAAAM,KAAAe,QAG0BD,WAAA;EACzBjB,SAASX,eAAc8B,aAAc,EAAAD,MAAOf,KAAIe,KAAK,CAAC,CAAC;CAAC,GACzDrB,EAAA,KAAAG,UAAAH,EAAA,KAAAM,KAAAe,MAAArB,EAAA,KAAAoB,MAAAA,KAAApB,EAAA;CAFD,IAAAuB,qBAA2BH,IAE1BI;CAAA,AAAAxB,EAAA,OAAAE,SAM6CsB,KAAAxB,EAAA,MAA5BwB,KAAA/B,eAAeS,QAAQ,IAAI,GAACF,EAAA,KAAAE,QAAAF,EAAA,KAAAwB;CACzB,IAAAC,KAAAlB,aAAa,IAAb,IAAA,QAGbmB,KAAAnB,aAAa,IAAIlB,sBAAqBsC,QAAStC,sBAAqBuC,OACpDC,KAAAtB,aAAa,IAAb,SAAA,OAA+BuB;CAAA,AAAA9B,EAAA,OAAAwB,MAAAxB,EAAA,QAAAyB,MAAAzB,EAAA,QAAA0B,MAAA1B,EAAA,QAAA6B,MAP5CC,KAAA;EAAAC,YACO;EAAQC,YACRR;EAA4BS,eACzBR;EAA2BS,YAC9B;EAACC,qBAEXT;EAA0EU,kBAC1DP;EAA+BQ,QACzC;EAAMC,UACJ;CACZ,GAACtC,EAAA,KAAAwB,IAAAxB,EAAA,MAAAyB,IAAAzB,EAAA,MAAA0B,IAAA1B,EAAA,MAAA6B,IAAA7B,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA;CAWc,IAAAuC,KAAA,UAAU1B,gBAAgB,IAAI,IAAG2B;CAAA,AAAAxC,EAAA,QAAAuC,KAI9CC,KAAAxC,EAAA,OAZFwC,KAAA,oBAAA,OAAA,EACS,OAAA;EAAAR,YACO;EAAsBS,QAC1B;EAACJ,QACD;EAAKK,MACP;EAACJ,UACG;EAAUK,OACb;EAAMC,WACFL;EAAiCM,iBAC3B;EAAaC,YAClB;CACd,EAAC,CAAA,GACD9C,EAAA,MAAAuC,IAAAvC,EAAA,MAAAwC;CAMgB,IAAAO,MAAAxC,aAAa,IAAb,IAAA,QACFyC,MAAAzC,aAAa,IAAb,WAAA,QAAkC0C;CAAA,AAAAjD,EAAA,QAAA+C,OAAA/C,EAAA,QAAAgD,OAHzCC,MAAA;EAAAC,YACO;EAACC,cACCJ;EAA2BK,YAC7BJ;EAAkCX,QACtC;EAAMM,OACP;CACT,GAAC3C,EAAA,MAAA+C,KAAA/C,EAAA,MAAAgD,KAAAhD,EAAA,MAAAiD,OAAAA,MAAAjD,EAAA;CAAA,IAAAqD;CAAA,AAAArD,EAAA,QAAAsD,OAAAC,IAAA,2BAAA,KAEWF,MAAA;EAAAhB,QAAS;EAAMC,UAAY;CAAU,GAACtC,EAAA,MAAAqD,OAAAA,MAAArD,EAAA;CAAA,IAAAwD;CAAA,AAAAxD,EAAA,QAAAM,KAAAmD,aAAAzD,EAAA,QAAAM,KAAAoD,aAAA1D,EAAA,QAAAE,UAC/CsD,MAAAlD,KAAImD,cAAe,WAAWnD,MAAIoD,aACjC,oBAAC,SAAD;EACa,WAAA;EACFxD,SAAAA;EACJ,KAAAI,KAAIoD;EACF,OAAA,EAAAC,SAAU,IAAI;CAAC,CAAA,GAEzB3D,EAAA,MAAAM,KAAAmD,WAAAzD,EAAA,MAAAM,KAAAoD,WAAA1D,EAAA,MAAAE,QAAAF,EAAA,MAAAwD,OAAAA,MAAAxD,EAAA;CAAA,IAAA4D;CAAA,AAAA5D,EAAA,QAAAM,KAAAmD,YAMAG,MAAA5D,EAAA,OAJA4D,MAAAtD,KAAImD,cAAe,UAClB,oBAAA,OAAA;EAAY,OAAA;GAAApB,QAAS;GAAMsB,SAAW;EAAG;EACvC,UAAA,oBAAC,YAAD,EAAgB,OAAA,OAAM,CAAA;CAClB,CAAA,GACP3D,EAAA,MAAAM,KAAAmD,WAAAzD,EAAA,MAAA4D;CAAA,IAAAC;CAAA,AAAA7D,EAAA,QAAAuB,sBAAAvB,EAAA,QAAAgB,cAAAhB,EAAA,QAAAa,iBAQAgD,MAAA,CAAC7C,cAAcH,kBAAkB,OAChC,oBAAC,MAAD;EACQ,OAAA;EACE,SAAA;EACD,OAAA;GAAAyB,UACK;GAAUD,QACZ;GAAMK,MACR;GAACoB,KACF;GAACnB,OACC;EACT;EAEA,UAAA,oBAAC,QAAD;GACY,UAAA;GACJjE,MAAAA;GACD,MAAA;GACI6C,SAAAA;GACA,SAAA;GACF,OAAA;IAAAS,YAAa;IAAM+B,WAAa;GAAM;GACxC,MAAA;EAAU,CAAA;CAlBd,CAAA,GAqBN/D,EAAA,MAAAuB,oBAAAvB,EAAA,MAAAgB,YAAAhB,EAAA,MAAAa,eAAAb,EAAA,MAAA6D,OAAAA,MAAA7D,EAAA;CAAA,IAAAgE;CAAA,AAAAhE,EAAA,QAAAwD,OAAAxD,EAAA,QAAA4D,OAAA5D,EAAA,QAAA6D,OA5CHG,MAAA,qBAAC,KAAD;EAAY,OAAAX;EAAZ,UAAA;GACGG;GASAI;GAYAC;EAtBC;KA6CE7D,EAAA,MAAAwD,KAAAxD,EAAA,MAAA4D,KAAA5D,EAAA,MAAA6D,KAAA7D,EAAA,MAAAgE,OAAAA,MAAAhE,EAAA;CAAA,IAAAiE;CAAA,AAAAjE,EAAA,QAAAiD,OAAAjD,EAAA,QAAAgE,OAtDRC,MAAA,oBAAC,KAAD;EACS,OAAAhB;EAQPe,UAAAA;CATE,CAAA,GAuDEhE,EAAA,MAAAiD,KAAAjD,EAAA,MAAAgE,KAAAhE,EAAA,MAAAiE,OAAAA,MAAAjE,EAAA;CAKU,IAAAkE,MAAA3D,aAAa,IAAb,IAAA,OACH4D,MAAA5D,aAAa,IAAb,QAAA,QACG6D,MAAA7D,aAAa,IAAb,IAAA,GAAsB8D;CAAA,AAAArE,EAAA,QAAAkE,OAAAlE,EAAA,QAAAmE,OAAAnE,EAAA,QAAAoE,OAH7BC,MAAA;EAAAnB,YACOgB;EAA0BI,SAC7BH;EAA+BI,YAC5BH;CACd,GAACpE,EAAA,MAAAkE,KAAAlE,EAAA,MAAAmE,KAAAnE,EAAA,MAAAoE,KAAApE,EAAA,MAAAqE,OAAAA,MAAArE,EAAA;CAAA,IAAAwE;CAAA,AAAAxE,EAAA,QAAAY,YAAAZ,EAAA,QAAAM,KAAAmE,QAGCD,MAAA,qBAAC,MAAD;EAAM,OAAA;EAAY,MAAA;EAAgB,cAAA;EAAlC,UAAA;GACGlE,KAAImE;GAAM;GAAG7D;GAAS;EADpB;KAEEZ,EAAA,MAAAY,UAAAZ,EAAA,MAAAM,KAAAmE,MAAAzE,EAAA,MAAAwE,OAAAA,MAAAxE,EAAA;CAAA,IAAA0E;CAAA,AAAA1E,EAAA,QAAAiB,SAGAyD,MAAA1E,EAAA,OAFP0E,MAAA,oBAAC,MAAD;EAAY,MAAA;EAAgB,cAAA;EAAkB,QAAA;EAC3CzD,UAAAA;CADE,CAAA,GAEEjB,EAAA,MAAAiB,QAAAjB,EAAA,MAAA0E;CAAA,IAAAC;CAAA,AAAA3E,EAAA,QAAAwE,OAAAxE,EAAA,QAAA0E,OANTC,MAAA,qBAAC,OAAD;EAAc,OAAA;EAAd,UAAA,CACEH,KAGAE,GAJI;KAOE1E,EAAA,MAAAwE,KAAAxE,EAAA,MAAA0E,KAAA1E,EAAA,MAAA2E,OAAAA,MAAA3E,EAAA;CAAA,IAAA4E;CAAA,AAAA5E,EAAA,QAAAqE,OAAArE,EAAA,QAAA2E,OAdVC,MAAA,oBAAC,KAAD;EACS,OAAAP;EAMPM,UAAAA;CAPE,CAAA,GAeE3E,EAAA,MAAAqE,KAAArE,EAAA,MAAA2E,KAAA3E,EAAA,MAAA4E,OAAAA,MAAA5E,EAAA;CAAA,IAAA6E;CACD,OADC7E,EAAA,QAAAiE,OAAAjE,EAAA,QAAA4E,OAAA5E,EAAA,QAAA8B,MAAA9B,EAAA,QAAAwC,MAtGRqC,MAAA,qBAAC,MAAD;EACS,OAAA/C;EADT,UAAA;GAcEU;GAeAyB;GA0DAW;EAvFG;KAuGE5E,EAAA,MAAAiE,KAAAjE,EAAA,MAAA4E,KAAA5E,EAAA,MAAA8B,IAAA9B,EAAA,MAAAwC,IAAAxC,EAAA,MAAA6E,OAAAA,MAAA7E,EAAA,KAvGP6E;AAuGO,GC/ILe,aAAab,MACjBc,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAC,MAAAC,aAAAJ;CAOC,IAAIG,MAAIE,SAAW,SAAO;EAAA,IAAAC;EAAA,AAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAEVF,KAAA,EAAAG,QAAS,QAAO,GAACR,EAAA,KAAAK,MAAAA,KAAAL,EAAA;EAAA,IAAAS;EAEvB,OAFuBT,EAAA,OAAAE,KAAAQ,MAAAV,EAAA,OAAAG,YAA7BM,KAAA,oBAAC,KAAD;GAAY,OAAAJ;GACV,UAAA,oBAAC,uBAAD;IAAmB,IAAAH,KAAIQ;IAAeP;GAAQ,CAAA;EAD5C,CAAA,GAEEH,EAAA,KAAAE,KAAAQ,IAAAV,EAAA,KAAAG,UAAAH,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IAFNS;CAEM;CAIV,IAAIP,MAAIE,SAAW,UAAQ;EAAA,IAAAC;EAAA,AAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAEXF,KAAA,EAAAG,QAAS,QAAO,GAACR,EAAA,KAAAK,MAAAA,KAAAL,EAAA;EAAA,IAAAS;EAEvB,OAFuBT,EAAA,OAAAE,KAAAS,YAAAX,EAAA,OAAAE,KAAAU,QAAAZ,EAAA,OAAAE,KAAAW,cAA7BJ,KAAA,oBAAC,KAAD;GAAY,OAAAJ;GACV,UAAA,oBAAC,gBAAD;IAA0B,UAAAH,KAAIS;IAAiB,MAAAT,KAAIU;IAAmB,YAAAV,KAAIW;GAAW,CAAA;EADnF,CAAA,GAEEb,EAAA,KAAAE,KAAAS,UAAAX,EAAA,KAAAE,KAAAU,MAAAZ,EAAA,KAAAE,KAAAW,YAAAb,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IAFNS;CAEM;CAIV,IAAIP,MAAIE,SAAW,UAAQ;EAAA,IAAAC;EAAA,AAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KAEXF,KAAA,EAAAG,QAAS,QAAO,GAACR,EAAA,KAAAK,MAAAA,KAAAL,EAAA;EAAA,IAAAS;EAEvB,OAFuBT,EAAA,QAAAE,KAAAQ,KAEvBD,KAAAT,EAAA,OAFNS,KAAA,oBAAC,KAAD;GAAY,OAAAJ;GACV,UAAA,oBAAC,gBAAD,EAAoB,IAAAH,KAAIQ,GAAG,CAAA;EADzB,CAAA,GAEEV,EAAA,MAAAE,KAAAQ,IAAAV,EAAA,MAAAS,KAFNA;CAEM;CAET,OAEM;AAAI,CAEf,GAEMK,yBAAwBC,UAAA;CAAA,IAAAf,IAAAC,EAAA,EAAA,GAC5B,EAAAL,OAAAC,eAA4BkB,OAG5BC,iBAAuB7B,iBAAiB8B,OAAgC,GAAClB;CAAA,AAAAC,EAAA,OAAAgB,iBAEajB,KAAAC,EAAA,MAAlED,KAACiB,kBAAkBA,eAAcE,IAAKC,QAAoB,KAA1D,CAAA,GAAkEnB,EAAA,KAAAgB,gBAAAhB,EAAA,KAAAD;CAAtF,IAAAqB,cAAoBrB,IACpBc,aAAmBjB,OAAKyB;CAExB,IAAIR,eAAe,GAAC,OACX;CACR,IAAAR;CAAA,AAAAL,EAAA,OAAAJ,QAQIS,KAAAL,EAAA,MAHeK,MAAAiB,UACD1B,MAAM0B,MACR,EAAAZ,MAAJY,OACRtB,EAAA,KAAAJ,OAAAI,EAAA,KAAAK;CAAA,IAAAI;CAAA,AAAAT,EAAA,OAAAa,aAEqCJ,KAAAT,EAAA,MAAzBS,KAAAc,EAAO,CAAC,CAAAC,KAAMX,UAAU,GAACb,EAAA,KAAAa,YAAAb,EAAA,KAAAS;CAAA,IAAAgB;CAAA,AAAAzB,EAAA,OAAAJ,SAAAI,EAAA,OAAAoB,eAIzBK,MAAAC,YAAA;EACX,IAAAC,SAAa/B,MAAM0B,UACnBnB,WAAiBiB,YAAWQ,SAAU1B,QAAIQ,MAAJ,EAAc;EAAC,OAC9C,oBAAC,YAAD;GAAkBR,MAAAA;GAAiBC;EAAQ,CAAA;CAAI,GACvDH,EAAA,KAAAJ,OAAAI,EAAA,KAAAoB,aAAApB,EAAA,KAAAyB,MAAAA,KAAAzB,EAAA;CAAA,IAAA6B;CAAA,AAAA7B,EAAA,OAAAM,OAAAC,IAAA,2BAAA,KACMsB,KAAA,EAAAC,WAAY,SAAQ,GAAC9B,EAAA,KAAA6B,MAAAA,KAAA7B,EAAA;CAAA,IAAA+B;CAC5B,OAD4B/B,EAAA,QAAAH,cAAAG,EAAA,QAAAK,MAAAL,EAAA,QAAAS,MAAAT,EAAA,QAAAyB,MAhB9BM,KAAA,oBAAC,iBAAD;EACY,WAAA;EACM,gBAAA1B;EAIJR,YAAAA;EACC,aAAAY;EACC,cAAAuB;EAGD,aAAAP;EAKN,OAAAI;CAAqB,CAAA,GAC5B7B,EAAA,MAAAH,YAAAG,EAAA,MAAAK,IAAAL,EAAA,MAAAS,IAAAT,EAAA,MAAAyB,IAAAzB,EAAA,MAAA+B,MAAAA,KAAA/B,EAAA,KAjBF+B;AAiBE;AA/BwB,SAAAd,QAAAgB,OAAA;CAAA,OAIuBA,MAAK9B,SAAS+B;AAAO;AAJ5C,SAAAf,SAAAgB,OAAA;CAAA,OAMyCA,MAAKC;AAAI;AANlD,SAAAJ,WAAA;CAAA,OAuBf,oBAAC,aAAD,CAAY,CAAA;AAAG;AC/D9B,MAAMiB,cAAQ;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAEZC,WAAiBX,YAAY,GAC7BY,aAAmBX,iBAAiBY,OAAkC,GACtEC,WAAiBb,iBAAiBc,QAAgC,GAClEC,sBAA4Bf,iBAAiBgB,QAAqC,GAClFC,mBAAyBjB,iBAAiBkB,MAAkC,GAC5EC,OAAanB,iBAAiBoB,MAA4B,GAC1DC,gBAAsBrB,iBAAiBG,mBAAmB,GAE1DmB,aAAmBzB,cAAc,GAEjC0B,iBAAuBZ,cAAc,GACrCa,WAAiBH,cAAaI,SAAU,GAACC;CAAA,AAAAlB,EAAA,OAAAE,YAAAF,EAAA,OAAAK,YAGba,WAAA;EAC1B,AAAKb,YACHH,SAAST,cAAa0B,aAAc,CAAC;CACtC,GACFnB,EAAA,KAAAE,UAAAF,EAAA,KAAAK,UAAAL,EAAA,KAAAkB,MAAAA,KAAAlB,EAAA;CAJD,IAAAoB,sBAA4BF,IAI3BG,IAAAC;CAKDhC,AALCU,EAAA,OAAAE,YAAAF,EAAA,OAAAO,uBAAAP,EAAA,OAAAc,cAAAd,EAAA,OAAAS,oBAKSY,WAAA;EAKR,AAJIP,cAAc,KAAdP,uBACFL,SAASR,eAAc6B,gBAAiB,EAAAC,cAAe,GAAK,CAAC,CAAC,GAG5DV,cAAc,KAAdL,oBACFP,SAASN,YAAW2B,gBAAiB,EAAAC,cAAe,GAAK,CAAC,CAAC;CAC5D,GACAF,KAAA;EAACpB;EAAUK;EAAqBO;EAAYL;CAAgB,GAACT,EAAA,KAAAE,UAAAF,EAAA,KAAAO,qBAAAP,EAAA,KAAAc,YAAAd,EAAA,KAAAS,kBAAAT,EAAA,KAAAqB,IAAArB,EAAA,KAAAsB,OAAAD,KAAArB,EAAA,IAAAsB,KAAAtB,EAAA,KARhEV,UAAU+B,IAQPC,EAA6D;CAEhE,IAAAG,UAAgB,CAACT,YAADD,kBAAA,CAAgCV,UAAQqB;CAAA,AAAA1B,EAAA,OAAA2B,OAAAC,IAAA,2BAAA,KAGjCF,KAAA,EAAAG,OAAQ,OAAM,GAAC7B,EAAA,KAAA0B,MAAAA,KAAA1B,EAAA;CAAA,IAAA8B;CAkB9B,OAlB8B9B,EAAA,QAAAa,iBAAAb,EAAA,QAAAoB,uBAAApB,EAAA,QAAAyB,WAAAzB,EAAA,QAAAW,QAApCmB,KAAA,oBAAC,KAAD;EAAW,MAAA;EAAU,OAAAJ;EAClBD,UAAAA,UACC,oBAAC,KAAD;GAAc,SAAA;GACZ,UAAA,oBAAC,MAAD;IAAY,MAAA;IAAU,QAAA;IAAW,UAAA;GAA5B,CAAA;EADH,CAAA,IADL,qBAAA,UAAA,EAAA,UAAA,CAQId,SAAS,UACR,oBAAC,sBAAD;GAA6BE,OAAAA;GAA2BO,YAAAA;EAAmB,CAAA,GAG5ET,SAAS,WACR,oBAAC,uBAAD;GAA8BE,OAAAA;GAA2BO,YAAAA;EAAmB,CAAA,CAC7E,EAAA,CAAA;CAfH,CAAA,GAkBEpB,EAAA,MAAAa,eAAAb,EAAA,MAAAoB,qBAAApB,EAAA,MAAAyB,SAAAzB,EAAA,MAAAW,MAAAX,EAAA,MAAA8B,MAAAA,KAAA9B,EAAA,KAlBN8B;AAkBM;AAxDI,SAAA1B,QAAA2B,OAAA;CAAA,OAGmCA,MAAKC,OAAO7B;AAAW;AAH1D,SAAAG,SAAA2B,SAAA;CAAA,OAIiCF,QAAKC,OAAO3B;AAAS;AAJtD,SAAAG,SAAA0B,SAAA;CAAA,OAK4CH,QAAKI,QAAQX;AAAa;AALtE,SAAAd,OAAA0B,SAAA;CAAA,OAMyCL,QAAKM,KAAKb;AAAa;AANhE,SAAAZ,OAAA0B,SAAA;CAAA,OAO6BP,QAAKC,OAAOrB;AAAK;ACL5D,MAAM4C,kBAAY;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAChBC,SAAeb,oBAAoB,GAGnCc,WAAiBf,YAAY,GAC7BgB,eAAqBZ,iBAAiBE,kBAAkB,GACxDW,kBAAwBb,iBAAiBc,OAAwC,GACjF,EAAAC,eAAAC,aAAkCjB,sBAAsB,GAACkB;CAAA,AAAAT,EAAA,OAAAI,aAAA,MAAAJ,EAAA,OAAAI,aAAAM,UAIvDD,KAAAL,aAAYM,WAAY,KAAxB,CAA8B,CAACN,aAAY,MAAON,aAAaM,aAAY,EAAG,CAAAO,KAAM,GAACX,EAAA,KAAAI,aAAA,IAAAJ,EAAA,KAAAI,aAAAM,QAAAV,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CADvF,IAAAY,aACEH,IAAqFI;CAAA,AAAAb,EAAA,OAAAG,WAKtFU,KAAAb,EAAA,MAFuBa,WAAA;EACtBV,SAASV,cAAaqB,UAAW,CAAC;CAAC,GACpCd,EAAA,KAAAG,UAAAH,EAAA,KAAAa;CAFD,IAAAE,kBAAwBF,IAEvBG;CAAA,AAAAhB,EAAA,OAAAI,gBAAAJ,EAAA,OAAAG,YAE0Ba,WAAA;EACzBb,SAASR,cAAasB,wBAAyB,EAAAC,QAASd,aAAY,CAAC,CAAC;CAAC,GACxEJ,EAAA,KAAAI,cAAAJ,EAAA,KAAAG,UAAAH,EAAA,KAAAgB,MAAAA,KAAAhB,EAAA;CAFD,IAAAmB,qBAA2BH,IAE1BI;CAAA,AAAApB,EAAA,OAAAI,aAAA,EAAA,EAAAO,MAAAU,OAAArB,EAAA,OAAAG,YAE2BiB,WAAA;EAC1B,IAAAE,UAAgBlB,aAAY,EAAU,EAAAO,MAAIU;EACrCC,WAGLnB,SAASR,cAAa4B,oBAAqB,EAAAD,QAAQ,CAAC,CAAC;CAAC,GACvDtB,EAAA,KAAAI,aAAA,EAAA,EAAAO,MAAAU,KAAArB,EAAA,KAAAG,UAAAH,EAAA,MAAAoB,MAAAA,KAAApB,EAAA;CAND,IAAAwB,sBAA4BJ,IAM3BK;CAAA,AAAAzB,EAAA,QAAAI,gBAAAJ,EAAA,QAAAK,mBAAAL,EAAA,QAAAG,YAEwBsB,WACvBtB,SAASP,eAAc8B,eAAgB;EAAAR,QAASd;EAAYuB,UAAYtB;CAAe,CAAC,CAAC,GAACL,EAAA,MAAAI,cAAAJ,EAAA,MAAAK,iBAAAL,EAAA,MAAAG,UAAAH,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA;CAD5F,IAAA4B,mBAAyBH,IACmEI;CAAA,AAAA7B,EAAA,QAAAI,gBAAAJ,EAAA,QAAAG,YAEvD0B,WACnC1B,SAASV,cAAaqC,iBAAkB;EAAAZ,QAASd;EAAYuB,UAAY;CAAI,CAAC,CAAC,GAAC3B,EAAA,MAAAI,cAAAJ,EAAA,MAAAG,UAAAH,EAAA,MAAA6B,MAAAA,KAAA7B,EAAA;CADlF,IAAA+B,+BAAqCF,IAC6CG;CAAA,AAAAhC,EAAA,QAAAI,gBAAAJ,EAAA,QAAAQ,YAEvDwB,WAAA;EACzB,IAAI,CAACxB,UAAQ;EAIb,IAAAyB,iBAAuB7B,aAAY8B,IAAKC,QAGtC;EAEEF,eAAcvB,WAAY,KAI9BF,SAASyB,cAAc;CAAC,GACzBjC,EAAA,MAAAI,cAAAJ,EAAA,MAAAQ,UAAAR,EAAA,MAAAgC,MAAAA,KAAAhC,EAAA;CAfD,IAAAoC,qBAA2BJ;CAiB3B,IAAI5B,aAAYM,WAAY,GAAC,OACpB;CACR,IAAA2B;CAAA,AAAArC,EAAA,QAAAE,SAO6CmC,KAAArC,EAAA,OAA5BqC,KAAAxC,eAAeK,QAAQ,IAAI,GAACF,EAAA,MAAAE,QAAAF,EAAA,MAAAqC;CAAA,IAAAC;CAAA,AAAAtC,EAAA,QAAAqC,KAKzCC,KAAAtC,EAAA,OANMsC,KAAA;EAAAC,YACOF;EAA4BG,cAC1B;EAAoCC,QAC1C;EAAmBC,UACjB;EAAUC,OACb;CACT,GAAC3C,EAAA,MAAAqC,IAAArC,EAAA,MAAAsC;CAAA,IAAAM;CAAA,AAAA5C,EAAA,QAAA6C,OAAAC,IAAA,2BAAA,KAI0BF,KAAA,EAAAG,OAAQ,UAAS,GAAC/C,EAAA,MAAA4C,MAAAA,KAAA5C,EAAA;CACtC,IAAAgD,MAAA5C,aAAYM,QAAOuC;CAAA,AAAAjD,EAAA,QAAAI,aAAAM,SAA0CuC,MAAAjD,EAAA,OAAvCiD,MAAA9D,UAAU,SAASiB,aAAYM,MAAO,GAACV,EAAA,MAAAI,aAAAM,QAAAV,EAAA,MAAAiD;CAAA,IAAAC;CAAA,AAAAlD,EAAA,QAAAI,aAAAM,UAAAV,EAAA,QAAAiD,OAFlEC,MAAA,oBAAC,KAAD;EAAmB,cAAA;EACjB,UAAA,qBAAC,OAAD;GAAa,MAAA;GAAU,OAAAN;GAAvB,UAAA;IACGI;IAAoB;IAAEC;IAAwC;GAD3D;;CADJ,CAAA,GAIEjD,EAAA,MAAAI,aAAAM,QAAAV,EAAA,MAAAiD,KAAAjD,EAAA,MAAAkD,OAAAA,MAAAlD,EAAA;CAAA,IAAAmD;CAAA,AAAAnD,EAAA,QAAA6C,OAAAC,IAAA,2BAAA,KAOGK,MAAA;EAAAZ,YAAa;EAAMa,WAAa;CAAM,GAACpD,EAAA,MAAAmD,OAAAA,MAAAnD,EAAA;CAAA,IAAAqD;CAAA,AAAArD,EAAA,QAAA6C,OAAAC,IAAA,2BAAA,KAG9CO,MAAA,oBAAC,OAAD;EAAa,MAAA;EAAG,UAAA;CAAV,CAAA,GAA0BrD,EAAA,MAAAqD,OAAAA,MAAArD,EAAA;CAAA,IAAAsD;CAAA,AAAAtD,EAAA,QAAAe,kBACzBuC,MAAAtD,EAAA,OARTsD,MAAA,oBAAC,QAAD;EACO,MAAA;EACIvC,SAAAA;EACA,SAAA;EACF,OAAAoC;EACF,MAAA;EAELE,UAAAA;CAPK,CAAA,GAQErD,EAAA,MAAAe,iBAAAf,EAAA,MAAAsD;CAAA,IAAAC;CAAA,AAAAvD,EAAA,QAAAmB,sBAAAnB,EAAA,QAAAoC,sBAAApC,EAAA,QAAAO,iBAAAP,EAAA,QAAAQ,YAER+C,MAAA/C,YAAAD,gBACC,oBAAC,QAAD;EACO,MAAA;EACI6B,SAAAA;EACA,SAAA;EACF,OAAA;GAAAG,YAAa;GAAMa,WAAa;EAAM;EACxC,MAAA;EAEL,UAAA,oBAAC,OAAD;GAAa,MAAA;GAAG,UAAA;EAAV,CAAA;CAPD,CAAA,IAUP,oBAAC,QAAD;EACO,MAAA;EACIjC,SAAAA;EACA,SAAA;EACF,OAAA;GAAAoB,YAAa;GAAMa,WAAa;EAAM;EACxC,MAAA;EAEL,UAAA,oBAAC,OAAD;GAAa,MAAA;GAAG,UAAA;EAAV,CAAA;CAPD,CAAA,GASRpD,EAAA,MAAAmB,oBAAAnB,EAAA,MAAAoC,oBAAApC,EAAA,MAAAO,eAAAP,EAAA,MAAAQ,UAAAR,EAAA,MAAAuD,OAAAA,MAAAvD,EAAA;CAAA,IAAAwD;CAAA,AAAAxD,EAAA,QAAAY,cAAAZ,EAAA,QAAAwB,uBAGAgC,MAAA5C,cACC,oBAAC,QAAD;EACO,MAAA;EACIY,SAAAA;EACA,SAAA;EACF,OAAA;GAAAe,YAAa;GAAMa,WAAa;EAAM;EACxC,MAAA;EAEL,UAAA,oBAAC,OAAD;GAAa,MAAA;GAAG,UAAA;EAAV,CAAA;CAPD,CAAA,GASRpD,EAAA,MAAAY,YAAAZ,EAAA,MAAAwB,qBAAAxB,EAAA,MAAAwD,OAAAA,MAAAxD,EAAA;CAAA,IAAAyD;CAAA,AAAAzD,EAAA,QAAAK,mBAAAL,EAAA,QAAA4B,oBAAA5B,EAAA,QAAA+B,gCAAA/B,EAAA,QAAAQ,YAEAiD,MAAA,CAACjD,YAAD,qBAAA,UAAA,EAAA,UAAA,CAEG,oBAAC,QAAD;EACO,MAAA;EACIoB,SAAAA;EACA,SAAA;EACF,OAAA;GAAAW,YAAa;GAAMa,WAAa;EAAM;EACxC,MAAA;EAEL,UAAA,oBAAC,OAAD;GAAa,MAAA;GAAG,UAAA;EAAV,CAAA;CAPD,CAAA,GASN/C,mBACC,oBAAC,QAAD;EACO,MAAA;EACI0B,SAAAA;EACA,SAAA;EACF,OAAA;GAAAQ,YAAa;GAAMa,WAAa;EAAM;EACxC,MAAA;EAEL,UAAA,oBAAC,OAAD;GAAa,MAAA;GAAG,UAAA;EAAV,CAAA;CAPD,CAAA,CASR,EAAA,CAAA,GAEJpD,EAAA,MAAAK,iBAAAL,EAAA,MAAA4B,kBAAA5B,EAAA,MAAA+B,8BAAA/B,EAAA,MAAAQ,UAAAR,EAAA,MAAAyD,OAAAA,MAAAzD,EAAA;CAAA,IAAA0D;CAAA,AAAA1D,EAAA,QAAAkD,OAAAlD,EAAA,QAAAsD,OAAAtD,EAAA,QAAAuD,OAAAvD,EAAA,QAAAwD,OAAAxD,EAAA,QAAAyD,OA5EHC,MAAA,qBAAC,MAAD;EAAY,OAAA;EAAmB,UAAA;EAA/B,UAAA;GACER;GAOAI;GAUCC;GAuBAC;GAYAC;EArDE;KA6EEzD,EAAA,MAAAkD,KAAAlD,EAAA,MAAAsD,KAAAtD,EAAA,MAAAuD,KAAAvD,EAAA,MAAAwD,KAAAxD,EAAA,MAAAyD,KAAAzD,EAAA,MAAA0D,OAAAA,MAAA1D,EAAA;CAAA,IAAA2D;CACF,OADE3D,EAAA,QAAA0D,OAAA1D,EAAA,QAAAsC,MAxFTqB,MAAA,oBAAC,MAAD;EACQ,OAAA;EACE,SAAA;EACD,OAAArB;EAQPoB,UAAAA;CAXG,CAAA,GAyFE1D,EAAA,MAAA0D,KAAA1D,EAAA,MAAAsC,IAAAtC,EAAA,MAAA2D,OAAAA,MAAA3D,EAAA,KAzFP2D;AAyFO;AAnJO,SAAArD,QAAAsD,OAAA;CAAA,OAMoCA,MAAKC,QAAQxD;AAAgB;AANjE,SAAA8B,SAAA2B,MAAA;CAAA,OAyCqC;EAAAC,MAC3C;EAA0BE,OACzBH,KAAInD,MAAMU;CACnB;AAAC;ACpDL,MAAMiD,kBAAY;CAAA,IAAAC,IAAAC,EAAA,CAAA;CAGhB,IAAI,CAFqBJ,iBAAiBM,OAErCD,GAAgB,OACZ;CACR,IAAAE;CAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAIUF,KAAA;EAAAG,UACK;EAAUC,OAAAA;CAEtB,GAACR,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAAA,IAAAS;CAiBG,OAjBHT,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAJHG,KAAA,oBAAC,KAAD;EACS,OAAAL;EAKP,UAAA,oBAAC,KAAD;GACY,WAAA;GACH,OAAA;IAAAM,YACO;IAAoCC,QACxC;IAAMC,WACH;IAAQC,WACR;IAAMN,UACP;IAAUO,OACb;IAACC,KACH;IAACP,OACC;GACT;GAEA,UAAA,oBAAC,SAAD,CAAQ,CAAA;EAbN,CAAA;CANF,CAAA,GAqBER,EAAA,KAAAS,MAAAA,KAAAT,EAAA,IArBNS;AAqBM;AA7BQ,SAAAN,QAAAa,OAAA;CAAA,OACqCA,MAAKC,KAAKC;AAAa;ACW9E,MAAMkB,kBAAkBT,OAAOU,IAAAA,WAAAA;;;AAAG,CAAA,CAAA,2FAa5BC,sBAAsBX,OAAOU,IAAAA,WAAAA;;;AAAG,CAAA,CAAA;AAetC,eAAeE,YAAYC,UAAoB;CAC7C,IAAME,QAAQC,MAAMC,KAAKJ,QAAQ,GAE3BK,gBAAwB,CAAA;CAE9B,KAAK,IAAME,QAAQL,OACjB,IAAI;EAEFG,AADA,MAAME,KAAKC,MAAM,GAAG,CAAC,CAAC,CAACC,YAAY,GACnCJ,cAAcK,KAAKH,IAAI;CACzB,QAAQ,CACN;CAIJ,OAAOF;AACT;AAEA,MAAMM,kBAAiBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACrB,EAAAnB,aAAmBiB,OAEnB,EAAAG,UAAAC,IAAAC,kBAGI3B,eAAe,GAFP,EAAA4B,YAAAF,IAIZ,EAAAG,aAAmB/B,sBAAsB,GAGzCgC,WAAiBlC,YAAY,GAC7BmC,aAAmB9B,iBAAiB+B,OAAkC,GAEtEC,mBAAyBF,WAAUG,WAAY,KAAKH,WAAU,OAAQ,SAAOI;CAAA,AAAAZ,EAAA,OAAAQ,WAAA,MAAAR,EAAA,OAAAQ,WAAAG,UAAAX,EAAA,OAAAO,YAG1DK,KAAA,OAAAC,kBAAA;EACjBA,cAAaC,SAASpB,SACpBa,SACE3B,eAAcmC,cAAe;GAAArB;GAAAsB,kBAETR,WAAUG,WAAY,IAAIH,WAAU,KAApCS,KAAAA;EACpB,CAAC,CACH,CACF;CAAC,GACFjB,EAAA,KAAAQ,WAAA,IAAAR,EAAA,KAAAQ,WAAAG,QAAAX,EAAA,KAAAO,UAAAP,EAAA,KAAAY,MAAAA,KAAAZ,EAAA;CATD,IAAAkB,aAAmBN,IASlBO;CAAA,AAAAnB,EAAA,OAAAO,WAaAY,KAAAnB,EAAA,MAX6DmB,MAAAC,eAAA;EAG5D,AAFmBA,WAAUE,QAASC,MAElCF,CAAU,CAAAG,SAAU,gBAAgB,KACtCjB,SACE5B,qBAAoB8C,IAAK;GAAAC,QACf;GAAOC,OACR;EACT,CAAC,CACH;CACD,GACF3B,EAAA,KAAAO,UAAAP,EAAA,KAAAmB;CAXD,IAAAS,qBAA8DT,IAW7DU;CAAA,AAAA7B,EAAA,OAAAO,WAiCAsB,KAAA7B,EAAA,MA9BwB6B,KAAA,OAAAC,UAAA;EACnB3C,IAAAA;EAIJ,IAHI2C,MAAKC,SAAU,UAAU,kBAAkBD,UAC7C3C,WAAW2C,OAAKE,cAAqB3C,QAEnCyC,MAAKC,SAAU,UAAQ;GACzB,IAAAE,SAAeH,OAAKG;GACpB,AAAIA,QAAM5C,UACRF,WAAW8C,OAAM5C;EAClB;EAGH,IAAI,CAACF,UAAQ,OACJ,CAAA;EAIT,IAAAE,QAAsB,MAAMH,YAAYC,QAAQ;EAU/C,OAPGA,UAAQwB,WAAatB,MAAKsB,UAC5BJ,SACE5B,qBAAoB8C,IAAK;GAAAC,QACf;GAAOC,OACR;EACT,CAAC,CACH,GAGKtC;CAAK,GACbW,EAAA,KAAAO,UAAAP,EAAA,KAAA6B;CA9BD,IAAAM,mBAAyBN,IAkCfO,KAAA1B,mBAAA,YAAA,IAKA2B,KAAA,CAAC,CAAC/B,UAIAgC,KAAA,CAAClC,eAAamC;CAAA,AAAAvC,EAAA,OAAAkB,cAAAlB,EAAA,OAAA4B,sBAAA5B,EAAA,QAAAmC,oBAAAnC,EAAA,QAAAK,WAAAL,EAAA,QAAAoC,MAAApC,EAAA,QAAAqC,MAAArC,EAAA,QAAAsC,MAV4CC,KAAA;EAAAC,QAC5DJ;EAAiCK,mBACtBN;EAAgBO,SAC1B;EAAIC,QAGLN;EAAUO,QACV1B;EAAUb;EAAAwC,gBAEFjB;EAAkBkB,UACxBR;CACZ,GAACtC,EAAA,KAAAkB,YAAAlB,EAAA,KAAA4B,oBAAA5B,EAAA,MAAAmC,kBAAAnC,EAAA,MAAAK,SAAAL,EAAA,MAAAoC,IAAApC,EAAA,MAAAqC,IAAArC,EAAA,MAAAsC,IAAAtC,EAAA,MAAAuC,MAAAA,KAAAvC,EAAA;CAXD,IAAA,EAAA+C,cAAAC,eAAAC,cAAAC,SAA0D9E,YAAYmE,EAWrE,GAACY;CAAA,AAAAnD,EAAA,QAAA+C,eAIqCI,KAAAnD,EAAA,OAAdmD,KAAAJ,aAAa,GAAC/C,EAAA,MAAA+C,cAAA/C,EAAA,MAAAmD;CAAA,IAAAC;CAAA,AAAApD,EAAA,QAAAgD,gBACPI,KAAApD,EAAA,OAAfoD,KAAAJ,cAAc,GAAChD,EAAA,MAAAgD,eAAAhD,EAAA,MAAAoD;CAAA,IAAAC;CAAA,AAAArD,EAAA,QAAAoD,KAAIC,MAAArD,EAAA,OAA9BqD,MAAA,oBAAA,SAAA,EAA8B,GAAnBD,GAAe,CAAA,GAAIpD,EAAA,MAAAoD,IAAApD,EAAA,MAAAqD;CAAA,IAAAC;CAAA,AAAAtD,EAAA,QAAAiD,eAU7BK,MAAAtD,EAAA,OARAsD,MAAAL,gBACC,oBAAC,qBAAD,EAAA,UACE,oBAAC,MAAD;EAAgB,WAAA;EAAiB,SAAA;EAAgB,OAAA,EAAAM,OAAQzF,MAAK0F,IAAI;EAChE,UAAA,oBAAC,MAAD;GAAY,MAAA;GAAU,OAAA,EAAAD,OAAQ,UAAS;GAAG,UAAA;EAArC,CAAA;CADF,CAAA,EADa,CAAA,GAOrBvD,EAAA,MAAAiD,cAAAjD,EAAA,MAAAsD;CAAA,IAAAG;CAAA,AAAAzD,EAAA,QAAAlB,YAAAkB,EAAA,QAAAqD,OAAArD,EAAA,QAAAsD,OAAAtD,EAAA,QAAAmD,MAXHM,MAAA,qBAAC,iBAAD;EAAgB,GAAKN;EAArB,UAAA;GACEE;GAECC;GAUAxE;EAba;KAcEkB,EAAA,MAAAlB,UAAAkB,EAAA,MAAAqD,KAAArD,EAAA,MAAAsD,KAAAtD,EAAA,MAAAmD,IAAAnD,EAAA,MAAAyD,OAAAA,MAAAzD,EAAA;CAAA,IAAA0D;CACO,OADP1D,EAAA,QAAAkD,QAAAlD,EAAA,QAAAyD,OAfpBC,MAAA,oBAAC,0BAAD;EAAgCR;EAC9BO,UAAAA;CADuB,CAAA,GAgBEzD,EAAA,MAAAkD,MAAAlD,EAAA,MAAAyD,KAAAzD,EAAA,MAAA0D,OAAAA,MAAA1D,EAAA,KAhB3B0D;AAgB2B;AAzGR,SAAAjD,QAAAkD,OAAA;CAAA,OAY0BA,MAAKC,OAAOpD;AAAW;AAZjD,SAAAqD,OAAA1D,IAAA;CA6B6C,IAAA,EAAA2D,SAAA3D;CAAM,OAAK2D;AAAI;AA7B5D,SAAAvC,OAAApB,IAAA;CA6BoB,IAAA,EAAA4D,WAAA5D;CAAQ,OAAK4D,OAAMC,IAAKH,MAAgB;AAAC;AC5EpF,SAASsB,iBAAiBC,YAAgE;CACxF,IAAMC,YAAaD,YAAYE,SAAgDD;CAC/E,IAAI,CAACA,WAAWE,QAAQ,OAAO,CAAA;CAC/B,IAAMC,SAAS,IAAIC,IACjBJ,UAAUK,KAAKC,MAAMA,GAAGC,KAAK,CAAC,CAAC,CAACC,QAAQF,MAAmBG,EAAQH,GAAGJ,MAAO,CAC/E;CACA,OAAOQ,MAAMC,KAAKR,MAAM;AAC1B;AAEA,SAASS,mBAAmBC,UAAoB;CAC9C,QAAQC,WAA0B;EAChC,IAAM,EAACC,YAAYC,QAAQC,eAAcH;EAEzC,QAAQG,YAAR;GACE,KAAK;IACHJ,SAAStB,cAAc2B,oBAAoB,EAACC,OAAOH,OAAe,CAAC,CAAC;IACpE;GACF,KAAK;IACHH,SAAStB,cAAc6B,oBAAoB,EAACC,SAASN,WAAU,CAAC,CAAC;IACjE;GACF,KAAK,UACHF,SAAStB,cAAc+B,oBAAoB,EAACH,OAAOH,OAAe,CAAC,CAAC;EAIxE;CACF;AACF;AAEA,SAASO,iBAAiBV,UAAoB;CAC5C,QAAQC,WAA0B;EAChC,IAAM,EAACC,YAAYC,QAAQC,eAAcH;EAEzC,QAAQG,YAAR;GACE,KAAK;IACHJ,SAASnB,YAAYwB,oBAAoB,EAACM,KAAKR,OAAa,CAAC,CAAC;IAC9D;GACF,KAAK;IACHH,SAASnB,YAAY0B,oBAAoB,EAACK,OAAOV,WAAU,CAAC,CAAC;IAC7D;GACF,KAAK,UACHF,SAASnB,YAAY4B,oBAAoB,EAACE,KAAKR,OAAa,CAAC,CAAC;EAIlE;CACF;AACF;AAEA,SAAgBU,eACdC,QACA5B,YACM;CACN,IAAMc,WAAW7B,YAAY,GACvB4C,YAAY3C,aAAa4C,UAA4BA,MAAMC,KAAKC,KAAK,GACrEC,iBAAiB/C,aAAa4C,YAA4BA,QAAMC,KAAKG,UAAU,GAE/EC,WAAWpC,iBAAiBC,UAAU,GACtCoC,eAAeD,SAAShC,SAAS;CAoCvCnB,AAlCAA,gBAAgB;EAQd8B,AAPKsB,gBACHtB,SAASpB,cAAc2C,YAAY,CAAC,GAGtCvB,SAASnB,YAAY2C,aAAa,CAAC,GAGnCxB,SAASrB,eAAe6C,aAAa,CAAC;EAEtC,IAAMC,oBAAoBX,OACvBY,OACCzD,IAAI,sFACN,CAAC,CACA0D,UAAU5B,mBAAmBC,QAAQ,CAAC,GAEnC4B,kBAAkBd,OACrBY,OAAOzD,IAAI,eAAeQ,kBAAiB,kCAAmC,CAAC,CAC/EkD,UAAUjB,iBAAiBV,QAAQ,CAAC,GAEjC6B,qBAAqBf,OACxBY,OAAOzD,IAAI,eAAeO,qBAAoB,kCAAmC,CAAC,CAClFmD,gBAAgB3B,SAASrB,eAAe6C,aAAa,CAAC,CAAC;EAE1D,aAAa;GAGXK,AAFAJ,kBAAkBK,YAAY,GAC9BF,gBAAgBE,YAAY,GAC5BD,mBAAmBC,YAAY;EACjC;CACF,GAAG;EAAChB;EAAQd;EAAUsB;CAAY,CAAC,GAKnCpD,gBAAgB;EACd,IAAI,CAACoD,gBAAgBH,iBAAiB,GAAG;EAEzC,IAAMY,gBAAgBxD,OAAOoC;EAC7B,IAAIoB,cAAcC,SAAS,cAAc;EAEzC,IAAMC,eAAeZ,SAClB7B,KAAK0C,SAASC,OAAOC,OAAOrB,SAAS,CAAC,CAACsB,MAAMC,SAASA,KAAK3B,IAAIuB,KAAKK,YAAYL,IAAI,CAAC,CAAC,CACtFvC,QAAQ2C,WAA2C1C,EAAQ0C,MAAK;EAEnEtC,SAASpB,cAAc2C,YAAY,CAAC;EAEpC,KAAK,IAAMkB,WAAWR,cACpBjC,SACEpB,cAAc8D,UAAU,EACtBC,OAAO;GACL,GAAGZ;GACHa,cAAc;GACdC,OAAO;IAACC,OAAOL,QAAQ9B,IAAIuB,KAAKK;IAASM,OAAOJ,QAAQ9B,IAAIoC;GAAG;EACjE,EACF,CAAC,CACH;CAEJ,GAAG,CAAC5B,gBAAgBG,YAAY,CAAC;AACnC;ACtGA,MAAMyD,kBAAiBC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAC,EAAAP,SAAAG,eAAAE,IAOtBG,SAAe3B,mBAAmB,GAClC,CAAA4B,eAAAC,oBAA0ClC,SAAgC,IAAI;CAE9EmB,eAAea,QAAQL,UAAU;CAAC,IAAAQ,IAAAC;CAAA,AAAAN,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAK5BH,KAAA,oBAAC,SAAD,CAAQ,CAAA,GACRC,KAAA,oBAAC,eAAD,CAAc,CAAA,GAAGN,EAAA,KAAAK,IAAAL,EAAA,KAAAM,OAAAD,KAAAL,EAAA,IAAAM,KAAAN,EAAA;CAAA,IAAAS;CAAA,AAAAT,EAAA,OAAAN,UAKee,KAAAT,EAAA,MAA5BS,KAAA,oBAAC,QAAD,EAAiBf,QAAO,CAAA,GAAIM,EAAA,KAAAN,SAAAM,EAAA,KAAAS;CAAA,IAAAC,IAAAC;CAAA,AAAAX,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAG5BE,KAAA,oBAAC,UAAD,CAAS,CAAA,GAETC,KAAA,oBAAC,mBAAD,CAAkB,CAAA,GAAGX,EAAA,KAAAU,IAAAV,EAAA,KAAAW,OAAAD,KAAAV,EAAA,IAAAW,KAAAX,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAGnBI,KAAA,oBAAC,aAAD,CAAY,CAAA,GAAGZ,EAAA,KAAAY,MAAAA,KAAAZ,EAAA;CAAA,IAAAa,IAAAC;CAAA,AAAAd,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KADjBK,KAAA,qBAAC,MAAD;EAAY,MAAA;EAAZ,UAAA;GACED;GACA,qBAAC,MAAD;IAAY,OAAA;IAAqB,WAAA;IAAe,MAAA;IAAU,OAAA,EAAAG,UAAW,WAAU;IAA/E,UAAA,CACE,oBAAC,WAAD,CAAU,CAAA,GACV,oBAAC,OAAD,CAAM,CAAA,CAFH;;GAIL,oBAAC,WAAD,CAAU,CAAA;EANP;KAULD,KAAA,oBAAC,eAAD,CAAc,CAAA,GAAGd,EAAA,KAAAa,IAAAb,EAAA,KAAAc,OAAAD,KAAAb,EAAA,IAAAc,KAAAd,EAAA;CAAA,IAAAgB;CAAA,AAAAhB,EAAA,OAAAS,KAGNO,KAAAhB,EAAA,OA3BjBgB,KAAA,qBAAC,gBAAD,EAAA,UAAA;EACEX;EACAC;EAEA,oBAAC,MAAD;GAAkB,eAAA;GAAwB,SAAA;GAAc,QAAA;GAAYF,KAAAA;GAClE,UAAA,qBAAC,MAAD;IAAgB,WAAA;IAAe,MAAA;IAA/B,UAAA;KAEEK;KAGAC;KAEAC;KAEAE;KAUAC;IAnBG;;EADF,CAAA;CAJQ,EAAA,CAAA,GA2BEd,EAAA,KAAAS,IAAAT,EAAA,MAAAgB;CAAA,IAAAC;CACF,OADEjB,EAAA,QAAAG,iBAAAH,EAAA,QAAAgB,MA5BnBC,MAAA,oBAAC,gBAAD;EAAyBd,SAAAA;EACvBa,UAAAA;CADa,CAAA,GA6BEhB,EAAA,MAAAG,eAAAH,EAAA,MAAAgB,IAAAhB,EAAA,MAAAiB,OAAAA,MAAAjB,EAAA,KA7BjBiB;AA6BiB,GAIfC,WAAUC,UAAA;CAAA,IAAAnB,IAAAC,EAAA,EAAA,GACdC,SAAe3B,mBAAmB,GAClC,EAAA6C,oBAA0B9C,eAAe,GAI1ByB,KAAAoB,OAAK5B,WAENc,KAAAc,OAAK3B,UAECc,KAAAa,OAAKvB,gBAEwBa,KAAAU,OAAK1B,eAA2BiB,KAAAS,OAAKxB,UAAUgB;CAAA,AAAAX,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAC1FG,KAAA,oBAAC,aAAD,CAAY,CAAA,GAAGX,EAAA,KAAAW,MAAAA,KAAAX,EAAA;CACU,IAAAY,KAAAO,OAAKzB,SAAuBmB,KAAAM,OAAKtB,YAAYiB;CAAA,AAAAd,EAAA,OAAAY,MAAAZ,EAAA,OAAAa,MAAtEC,KAAA,oBAAC,gBAAD;EAAyB,SAAAF;EAA4B,YAAAC;CAAiB,CAAA,GAAIb,EAAA,KAAAY,IAAAZ,EAAA,KAAAa,IAAAb,EAAA,KAAAc,MAAAA,KAAAd,EAAA;CAAA,IAAAgB;CAAA,AAAAhB,EAAA,OAAAS,MAAAT,EAAA,OAAAU,MAAAV,EAAA,OAAAc,MAF5EE,KAAA,qBAAC,8BAAD;EAA6C,eAAAP;EAAgC,UAAAC;EAA7E,UAAA,CACEC,IACAG,EAF2B;KAGEd,EAAA,KAAAS,IAAAT,EAAA,KAAAU,IAAAV,EAAA,KAAAc,IAAAd,EAAA,KAAAgB,MAAAA,KAAAhB,EAAA;CAAA,IAAAiB;CACjB,OADiBjB,EAAA,OAAAE,UAAAF,EAAA,OAAAoB,mBAAApB,EAAA,QAAAD,MAAAC,EAAA,QAAAK,MAAAL,EAAA,QAAAM,MAAAN,EAAA,QAAAgB,MAVjCC,MAAA,oBAAC,eAAD;EACa,WAAAlB;EACHG;EACE,UAAAG;EACOe;EACD,gBAAAd;EAEhBU,UAAAA;CAPY,CAAA,GAWEhB,EAAA,KAAAE,QAAAF,EAAA,KAAAoB,iBAAApB,EAAA,MAAAD,IAAAC,EAAA,MAAAK,IAAAL,EAAA,MAAAM,IAAAN,EAAA,MAAAgB,IAAAhB,EAAA,MAAAiB,OAAAA,MAAAjB,EAAA,KAXhBiB;AAWgB,GCtFde,mBAAkBC,UAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACtB,EAAAC,YAAkBH,OAElBI,gBAAsBP,qBAAqB,GAACQ;CAAA,AAAAJ,EAAA,OAAAK,OAAAC,IAAA,2BAAA,KAGPF,KAAA,CAAA,GAAEJ,EAAA,KAAAI,MAAAA,KAAAJ,EAAA;CAAvC,IAAAO,kBAAwBb,aAAaU,EAAE,GACvCI,gBAAuBT,OAA4DS,eACnFC,iBAAwBV,OAAKW,YAA0DC,UACvFC,gBAAsBJ,kBAAkB,cAAcC,mBAAmB;CAGzEd,YAAY,UAAUO,OAAO;CAK7B,IAAAW,wBAA8BC,OAK9B,EAAAC,WAAiBzB,SAAS,GAAC0B;CAAA,AAAAhB,EAAA,OAAAe,SAmBlBC,KAAAhB,EAAA,MARMgB,KAAA;EAAAC,QACG;EAACC,QACD;EAAMC,MACR;EAACC,UACG;EAAOC,KACZ;EAACC,OACC;EAAMP;CAEf,GAACf,EAAA,KAAAe,QAAAf,EAAA,KAAAgB;CAAA,IAAAO;CAAA,AAAAvB,EAAA,OAAAO,mBAAAP,EAAA,OAAAY,iBAAAZ,EAAA,OAAAD,SAEDwB,KAAA,oBAAC,SAAD;EACYhB,UAAAA;EACKK;EACH,YAAAb,MAAKW;EAAW,GACxBX;CAAK,CAAA,GACTC,EAAA,KAAAO,iBAAAP,EAAA,KAAAY,eAAAZ,EAAA,KAAAD,OAAAC,EAAA,KAAAuB,MAAAA,KAAAvB,EAAA;CAAA,IAAAwB;CAAA,AAAAxB,EAAA,OAAAgB,MAAAhB,EAAA,OAAAuB,MAtBNC,KAAA,oBAAC,QAAD,EAAA,UACE,oBAAC,KAAD;EACeX,aAAAA;EACAA,aAAAA;EACDA,YAAAA;EACJA,QAAAA;EACGA,WAAAA;EACJ,OAAAG;EAUPO,UAAAA;CAhBE,CAAA,EADC,CAAA,GAwBEvB,EAAA,KAAAgB,IAAAhB,EAAA,KAAAuB,IAAAvB,EAAA,KAAAwB,MAAAA,KAAAxB,EAAA;CAAA,IAAAyB;CACM,OADNzB,EAAA,QAAAG,iBAAAH,EAAA,QAAAwB,MAzBXC,KAAA,oBAAC,gBAAD;EAAyBtB,SAAAA;EACvBqB,UAAAA;CADa,CAAA,GA0BExB,EAAA,MAAAG,eAAAH,EAAA,MAAAwB,IAAAxB,EAAA,MAAAyB,MAAAA,KAAAzB,EAAA,KA1BjByB;AA0BiB;AAnDG,SAAAX,MAAAY,OAAA;CAmBpBA,AADAA,MAAKC,YAAYC,yBAA0B,GAC3CF,MAAKG,gBAAiB;AAAC;ACvB3B,MAAMG,aAAO;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAIF,OAJEF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAETF,KAAA,oBAAC,MAAD;EAAgB,WAAA;EAAgB,QAAA;EAAa,MAAA;EAC3C,UAAA,oBAAC,SAAD,CAAQ,CAAA;CADL,CAAA,GAEEF,EAAA,KAAAE,MAAAA,KAAAF,EAAA,IAFPE;AAEO;ACJX,IAAA,iBAAe;CACbK,OAAO;CACPC,MAAMH;CACNI,MAAMH;CACNI,MAAM;CACNC,QAAQ,CACN;EACEJ,OAAO;EACPE,MAAM;EACNC,MAAM;CACR,GACA;EACEH,OAAO;EACPE,MAAM;EACNC,MAAM;EACNE,IAAI,CAAC,EAACF,MAAMJ,qBAAoB,CAAC;EACjCO,MAAM;CACR,CAAC;CAEHC,SAAS;EACPC,QAAQ;GACNN,MAAM;GACNO,YAAY;EACd;EACAC,QAAQC,WAIN;GACA,IAAM,EAACT,MAAMO,eAAcE;GAC3B,OAAO;IACLC,OAAOd;IACPE,OAAOE,QAAQ;IACfW,UAAUJ,aAAa,MAAMA,eAAeK,KAAAA;GAC9C;EACF;CACF;AACF,GCtCA,cAAe;CACbG,OAAO;CACPC,MAAMH;CACNI,MAAMH;CACNI,MAAM;CACNC,QAAQ,CACN;EACEJ,OAAO;EACPE,MAAM;EACNC,MAAM;CACR,CAAC;CAEHE,SAAS;EACPC,QAAQ,EACNJ,MAAM,OACR;EACAK,QAAQC,WAAgB;GACtB,IAAM,EAACN,SAAQM;GACf,OAAO;IACLC,OAAOX;IACPE,OAAOE,MAAMQ;GACf;EACF;CACF;AACF;ACfA,MAAMa,SAAS;CACbC,MAAMZ;CACNa,MAAM;CACNC,OAAO;AACT,GAEaC,mBAAmB;CAC9B,GAAGJ;CACHK,WAAWV;AACb,GAEMW,uBAAuB;CAC3BL,MAAMb;CACNc,MAAM;CACNC,OAAO;CACPE,WAAWX;AACb,GAEMa,OAAO;CACX,GAAGP;CACHK,WAAWd;CACXiB,2BAA2B;AAC7B,GAEaC,QAAQhB,cAAuCiB,aAAa;CACvER,MAAM;CACNS,QAAQ,EACNC,YAAY,EACVC,SAASC,UACP,oBAAC,qBAAD;EAA8BJ;EAAUI,UAAAA,MAAMC,cAAcD,KAAK;CAAuB,CAAA,EAE5F,EACF;CACAE,MAAM;EACJC,MAAM,EACJC,eAAeC,SACN;GAAC,GAAGA;GAAMf;GAAkBE;EAAoB,EAE3D;EACAc,OAAO,EACLF,eAAeC,SACN;GAAC,GAAGA;GAAMf;GAAkBE;EAAoB,EAE3D;CACF;CACAe,QAAQ,EACNC,OAAO,CAACxB,aAAUD,cAAW,EAC/B;CACA0B,QAAQJ,SACC,CAAC,GAAGA,MAAMZ,IAAI;AAEzB,EAAE,GC/CI2B,iCAAiB,IAAIC,IAA2B;AAEtD,SAAgBE,eAAeC,SAA+C;CAC5E,IAAM,EAACP,YAAWO,SACZC,SAASL,eAAeM,IAAIT,OAAO,KAAKK,QAAQK,QAAQ,EAAA,CAAGC,WAC/DC,iBAAiBL,OAAO,CAC1B,GACMM,UAAUL,MACbM,YAAY,CAAC,CAAC,CAAC,CACfC,cAAc;EACb,AAAIZ,eAAeM,IAAIT,OAAO,MAAMa,WAASV,eAAea,OAAOhB,OAAO;CAC5E,CAAC;CAEH,OADAG,eAAec,IAAIjB,SAASa,OAAO,GAC5BL;AACT;AAEA,eAAeI,iBAAiB,EAC9Bb,QACAC,SACAC,WACAC,qBAAqB,MACkB;CACvC,IAAI,CAACD,aAAaA,UAAUiB,WAAW,GAAG;CAoB1C,IAAMY,aAAYX,MAlBSd,QAAQe,IACjCnB,UAAUoB,IAAI,OAAOC,YAKfC,MAJsBxB,OAAOyB,MAC/B9B,IAAI,eAAeE,kBAAiB,oCACpC,EAAC0B,QAAO,CACV,MAEIpB,qBAKKuB,MAJc1B,OAAO2B,OAAO;EACjCC,OAAO/B;EACPgC,MAAM;GAACD,OAAO;GAAQE,SAASP;EAAO;CACxC,CAAC,IAGI,KACR,CACH,EAAA,CAE+BS,QAAQC,QAAoBA,QAAQ,IAAI;CACvE,IAAIF,UAAUZ,WAAW,GAAG;CAE5B,IAAMe,WAAW,MAAMlC,OAAOyB,MAC5B9B,IAAI,0DACJ,EAACM,QAAO,GACR,EAACmC,QAAQ,GAAK,CAChB,GACMC,cAAc,IAAIC,IAAIJ,UAAUC,UAAU,CAAA,CAAE,GAE5CI,gBAAgBR,UACnBC,QAAQC,QAAQ,CAACI,YAAYG,IAAIP,IAAIQ,GAAG,CAAC,CAAC,CAC1CnB,KAAKW,SAAS;EACbS,MAAM9C,OAAO;EACb+C,MAAMV,IAAIQ;EACVb,OAAO;EACPiB,OAAO;CACT,EAAE;CAEAN,cAAcpB,WAAW,KAE7B,MAAMnB,OACH8C,MAAM7C,OAAO,CAAC,CACd8C,aAAa,EAACC,KAAK,CAAC,EAAC,CAAC,CAAC,CACvBD,aAAa,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,CAC/BA,aAAa,EAAC,kBAAkB,CAAA,EAAE,CAAC,CAAC,CACpCE,OAAO,kBAAkBV,aAAa,CAAC,CACvCW,OAAO;AACZ;;;;;;;;;;;;;;;;;;;;AC/CA,SAAOc,aAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACL,EAAAC,eAAAC,YAAAC,OAAAP,WAAAQ,kBAAqEN,OACrEO,QAAcrB,SAAS,GAGvBY,YACEQ,iBAAkBF,YAAUI,SAA2DV,WAEzFW,SAAelB,mBAAmB,GAClC,EAAAmB,uBAA6BpB,eAAe,GAE5CqB,eAAqBvB,OAA2BwB,KAAAA,CAAS,GACzDC,iBAAuBzB,OAAO,EAAI,GAElC0B,kBAAyBT,OAAuCV,OAAMC,MAAAmB,IAAAC;CAEtE7B,AAFsEc,EAAA,OAAAQ,UAAAR,EAAA,OAAAS,sBAAAT,EAAA,OAAAa,mBAAAb,EAAA,OAAAH,aAAAG,EAAA,OAAAM,SAE5DQ,WAAA;EACR,IAAIF,eAAcI,SAAQ;GAExBN,AADAE,eAAcI,UAAW,IACzBN,aAAYM,UAAWH;GAAH;EAAA;EAItB,IAAAI,cAAoBP,aAAYM;EAChCN,aAAYM,UAAWH,iBAEnB,GAAChB,WAASqB,UAAV,CAAuBL,mBAAmBA,oBAAoBI,gBAElE1B,eAAe;GAAAiB;GAAAW,SAEJN;GAAehB;GAAAY;EAG1B,CAAC,CAAC,CAAAW,OAAOC,QAAA;GACPC,QAAOC,MAAO,oDAAoDF,GAAG;GACrE,IAAAG,QAAc3B,UAASqB,WAAY,IAArB,QAAA;GACdZ,MAAKmB,KAAM;IAAAC,UACC;IAAIC,QACN;IAAOC,OACR,6BAA6BJ,MAAK,GAAI3B,UAASgC,KAAM,IAAI;GAClE,CAAC;EAAC,CACH;CAAC,GACDd,KAAA;EAACF;EAAiBhB;EAAWW;EAAQC;EAAoBH;CAAK,GAACN,EAAA,KAAAQ,QAAAR,EAAA,KAAAS,oBAAAT,EAAA,KAAAa,iBAAAb,EAAA,KAAAH,WAAAG,EAAA,KAAAM,OAAAN,EAAA,KAAAc,IAAAd,EAAA,KAAAe,OAAAD,KAAAd,EAAA,IAAAe,KAAAf,EAAA,KA1BlEd,UAAU4B,IA0BPC,EAA+D;CAE7C,IAAAe,KAAA/B,OAAmBgC;CAAC,OAAD/B,EAAA,OAAAE,iBAAAF,EAAA,OAAA8B,MAAjCC,KAAA7B,cAAc4B,EAAmB,GAAC9B,EAAA,KAAAE,eAAAF,EAAA,KAAA8B,IAAA9B,EAAA,KAAA+B,MAAAA,KAAA/B,EAAA,IAAlC+B;AAAkC;ACtB3C,SAAgBiB,WACdC,QAC8C;CAC9C,IAAM,EAACR,WAAWC,SAASG,YAAY,GAAGK,SAAQD;CAGlD,OAAO;EACL,GAAGC;EACHR,SAAS;GAAC,GAAGA;GAASD;EAAS;EAC/BI,YAAY;GAAC,GAAGA;GAAYC,OAAOT;EAAY;CACjD;AACF"}
\ No newline at end of file
+{"version":3,"file":"index.js","names":["ReactNode","createContext","useContext","useMemo","AssetSourceComponentProps","ContextProps","isMultiSelect","onSelect","Props","children","AssetSourceDispatchContext","undefined","AssetBrowserDispatchProvider","props","$","_c","t0","t1","contextValue","t2","useAssetSourceActions","context","Error","useEffect","useState","useRootPortalElement","$","_c","container","_temp","t0","t1","classList","add","document","body","appendChild","removeChild","createElement","TypedUseSelectorHook","useSelector","RootReducerState","useTypedSelector","SanityClient","useClient","useVersionedClient","$","_c","t0","Symbol","for","apiVersion","OrderDirection","ORDER_DICTIONARY","Record","asc","desc","_createdAt","_updatedAt","mimeType","originalFilename","size","getOrderTitle","field","direction","groq","SearchFacetDivider","SearchFacetInputProps","SearchFacetName","SearchFacetOperators","divider","type","inputs","Record","altText","assetTypes","field","name","operatorType","operatorTypes","title","value","creditLine","description","folder","fileName","height","inCurrentDocument","options","selectOnly","inUse","isOpaque","orientation","size","modifier","modifiers","fieldModifier","fieldName","tag","width","operators","doesNotInclude","fn","undefined","label","doesNotReference","_field","empty","_value","hideInput","equalTo","greaterThan","greaterThanOrEqualTo","includes","is","isNot","lessThan","lessThanOrEqualTo","notEmpty","references","AssetSourceComponentProps","divider","inputs","SearchFacetInputProps","SearchFacetDivider","SearchFacetGroup","OrderDirection","SUPPORTED_ASSET_TYPES","const","ORDER_OPTIONS","direction","field","FACETS","tag","inUse","inCurrentDocument","title","folder","altText","creditLine","description","isOpaque","fileName","size","type","orientation","width","height","GRID_TEMPLATE_COLUMNS","SMALL","LARGE","FOLDERS_PANEL_WIDTH","FOLDER_DOCUMENT_NAME","PANEL_HEIGHT","TAG_DOCUMENT_NAME","TAGS_PANEL_WIDTH","iif","Observable","of","throwError","delay","mergeMap","debugThrottle","throttled","source","T","pipe","v","Math","random","message","statusCode","groq","operators","TAG_DOCUMENT_NAME","AssetType","SearchFacetInputProps","buildExcludeTagsFragment","excludeTagSlugs","serializedExcludeTagSlugs","length","JSON","stringify","undefined","constructFilter","assetTypes","currentFolderId","searchFacets","searchQuery","documentAssetTypes","map","type","baseFilter","excludeTagsFragment","searchFacetFragments","reduce","acc","facet","field","modifier","modifiers","operatorType","value","operator","currentModifier","find","m","name","facetField","fieldModifier","fragment","fn","push","options","currentOptionValue","l","folderFilter","constructedQuery","trim","join","Asset","AssetRef","_ref","_type","ImageNode","asset","findImageAssets","document","Record","newAsset","assetToReplaceId","matchedTopLevelFields","Set","repointNestedImages","map","field","node","topLevelField","candidate","assetRef","hasMatchingAssetRef","_id","add","key","value","Object","entries","SanityClient","groq","from","Observable","of","throwError","mergeMap","TAG_DOCUMENT_NAME","HttpError","checkTagName","client","name","source","T","pipe","fetch","existingTagCount","message","statusCode","TagSelectOption","TagItem","getTagSelectOptions","tags","reduce","acc","val","tag","push","label","name","current","value","_id","createAction","AssetItem","HttpError","Tag","ASSETS_ACTIONS","tagsAddComplete","prepare","assets","tag","payload","tagsAddError","error","tagsAddRequest","tagsRemoveComplete","tagsRemoveError","tagsRemoveRequest","createAction","AssetItem","DIALOG_ACTIONS","showFolderCreate","prepare","parentFolderId","payload","showFolderMove","assets","folderId","showFolderRename","showTagCreate","showTagEdit","tagId","createSelector","createSlice","isAnyOf","PayloadAction","ClientError","Transaction","groq","Selector","ofType","from","Observable","of","bufferTime","catchError","filter","mergeMap","switchMap","withLatestFrom","TAG_DOCUMENT_NAME","checkTagName","debugThrottle","Asset","HttpError","MyEpic","TagSelectOption","Tag","TagItem","getTagSelectOptions","ASSETS_ACTIONS","DIALOG_ACTIONS","RootReducerState","TagsReducerState","allIds","byIds","Record","creating","creatingError","fetchCount","fetching","fetchingError","panelVisible","initialState","undefined","tagsSlice","name","extraReducers","builder","addCase","showTagCreate","state","showTagEdit","action","tagId","payload","error","addMatcher","tagsAddComplete","tagsAddError","tagsRemoveComplete","tagsRemoveError","tag","_id","updating","tagsAddRequest","tagsRemoveRequest","reducers","createComplete","assetId","includes","push","_type","picked","createError","createRequest","_action","deleteComplete","deleteIndex","indexOf","splice","deleteError","deleteRequest","Object","keys","forEach","key","fetchComplete","tags","length","fetchError","fetchRequest","reducer","query","prepare","listenerCreateQueue","_state","listenerCreateQueueComplete","listenerDeleteQueue","listenerDeleteQueueComplete","tagIds","listenerUpdateQueue","listenerUpdateQueueComplete","panelVisibleSet","sort","a","b","tagA","current","tagB","updateComplete","closeDialogId","updateError","updateRequest","formData","tagsCreateEpic","action$","state$","client","pipe","actions","match","debug","badConnection","observable","create","result","message","statusCode","tagsDeleteEpic","fetch","tagName","assets","patches","map","asset","id","patch","ifRevisionID","_rev","unset","transaction","reduce","tx","delete","commit","tagsFetchEpic","items","tagsListenerCreateQueueEpic","tagsListenerDeleteQueueEpic","tagsListenerUpdateQueueEpic","tagsSortEpic","type","tagsUpdateEpic","set","updatedTag","selectTagsByIds","selectTagsAllIds","selectTags","selectTagById","selectTagSelectOptions","opt","media","acc","v","tagItem","_ref","tagsActions","PayloadAction","createSelector","createSlice","uuid","EMPTY","of","filter","mergeMap","withLatestFrom","MyEpic","SearchFacetInputProps","SearchFacetOperatorType","WithId","tagsActions","RootReducerState","SearchState","facets","query","initialState","searchSlice","name","reducers","facetsAdd","state","action","facet","push","payload","id","facetsClear","facetsRemoveByName","facetName","facetsRemoveByTag","tagId","type","operatorType","value","facetsRemoveById","facetId","facetsUpdate","modifier","find","f","facetsUpdateById","forEach","index","querySet","searchQuery","searchFacetTagUpdateEpic","action$","state$","pipe","updateComplete","match","tag","currentSearchFacetTag","search","tagItem","tags","byIds","_id","actions","label","current","selectIsSearchFacetTag","_state","searchFacets","some","searchActions","reducer","createAction","SanityAssetDocument","SanityImageAssetDocument","UPLOADS_ACTIONS","uploadComplete","prepare","asset","payload","createSelector","createSlice","PayloadAction","AttributeSet","ClientError","Patch","SanityDocument","Transaction","groq","nanoid","Selector","ofType","EMPTY","from","of","bufferTime","catchError","concatMap","debounceTime","filter","mergeMap","switchMap","withLatestFrom","getOrderTitle","ORDER_OPTIONS","debugThrottle","Asset","AssetItem","AssetType","BrowserView","HttpError","MyEpic","Order","OrderDirection","Tag","constructFilter","findImageAssets","searchActions","RootReducerState","UPLOADS_ACTIONS","ASSETS_ACTIONS","ItemError","description","id","referencingIDs","type","AssetsReducerState","allIds","assetTypes","byIds","Record","excludeTagSlugs","fetchCount","fetching","fetchingError","lastPicked","order","pageIndex","pageSize","view","defaultOrder","direction","field","initialState","undefined","title","assetsSlice","name","extraReducers","builder","addCase","uploadComplete","state","action","asset","payload","_id","_type","picked","updating","tagsAddComplete","assets","forEach","tagsAddError","tagsAddRequest","tagsRemoveComplete","tagsRemoveError","tagsRemoveRequest","reducers","clear","deleteComplete","assetIds","deleteIndex","indexOf","splice","Math","floor","length","deleteError","error","itemErrors","response","body","items","map","item","deleteRequest","closeDialogId","Object","keys","key","fetchComplete","includes","push","existing","fetchError","folderSetComplete","folderId","assetId","opt","media","folder","_ref","_weak","folderSetError","message","folderSetRequest","fetchRequest","reducer","_action","params","query","prepare","queryFilter","selector","sort","replace","pipe","insertUploads","results","entries","hash","listenerCreateQueue","_state","listenerCreateQueueComplete","listenerDeleteQueue","listenerDeleteQueueComplete","listenerUpdateQueue","listenerUpdateQueueComplete","loadNextPage","loadPageIndex","orderSet","pick","pickAll","pickClear","values","pickRange","endId","startId","startIndex","findIndex","endIndex","indices","a","b","slice","tagA","tagB","updateComplete","updateError","updateImageReferences","updateImageReferencesComplete","updateRequest","formData","viewSet","assetsDeleteEpic","action$","_state$","client","assetsActions","match","observable","delete","JSON","stringify","assetsFetchEpic","state$","debug","badConnection","fetch","result","statusCode","assetsFetchPageIndexEpic","start","end","documentId","selected","document","documentAssetIds","constructedFilter","currentFolderId","folders","searchFacets","search","facets","searchQuery","assetsFetchNextPageEpic","assetsFetchAfterDeleteAllEpic","nextPageIndex","filterAssetWithoutTag","tag","tagIndex","tags","t","patchOperationTagAppend","patch","setIfMissing","append","_key","patchOperationTagUnset","ifRevisionId","_rev","unset","patchOperationFolderSet","nextPatch","set","assetsOrderSetEpic","assetsSearchEpic","facetsAdd","facetsClear","facetsRemoveById","facetsRemoveByName","facetsRemoveByTag","facetsUpdate","facetsUpdateById","querySet","assetsListenerCreateQueueEpic","actions","assetsListenerDeleteQueueEpic","assetsListenerUpdateQueueEpic","assetsSortEpic","assetsTagsAddEpic","pickedAssets","selectAssetsPicked","pickedAssetsFiltered","transaction","reduce","tx","pickedAsset","commit","assetsTagsRemoveEpic","assetsFolderSetEpic","assetsFolderSetRefreshEpic","assetsUnpickEpic","assetsUpdateEpic","updatedAsset","assetsUpdateImageReferencesEpic","documents","patchedCount","clonedDocument","parse","assetsToReplace","patchSet","assign","originalAsset","selectAssetsByIds","selectAssetsAllIds","selectAssetById","selectAssets","selectAssetsLength","selectAssetsPickedLength","assetsPicked","createSelector","createSlice","PayloadAction","ClientError","Patch","groq","nanoid","from","of","catchError","debounceTime","filter","map","mergeMap","switchMap","withLatestFrom","FOLDER_DOCUMENT_NAME","debugThrottle","FolderDoc","FolderTreeItem","FolderTreeNode","HttpError","MyEpic","buildExcludeTagsFragment","assetsActions","RootReducerState","UPLOADS_ACTIONS","FoldersReducerState","byId","Record","childrenByParentId","rootIds","exactCountByFolderId","unfiledCount","currentFolderId","currentFolderUnfiled","panelVisible","fetching","fetchCount","fetchingError","creating","creatingError","deletingId","deleteError","renaming","renameError","initialState","undefined","indexFolders","folders","forEach","folder","_id","parentKey","parentId","push","sortByName","ids","sort","a","b","name","localeCompare","numeric","sensitivity","Object","values","foldersSlice","reducers","createComplete","state","_action","createError","action","error","payload","createRequest","currentFolderClear","currentFolderSet","folderId","currentFolderShowUnfiled","deleteComplete","deletedIds","clearedCurrentFolder","removed","Set","has","deleteRequest","fetchComplete","length","fetchError","fetchRequest","panelVisibleSet","renameComplete","renameRequest","foldersFetchEpic","action$","state$","client","pipe","actions","match","debug","badConnection","assetTypes","assets","type","excludeTagsFragment","excludeTagSlugs","excludeTagsClause","observable","fetch","count","JSON","stringify","result","f","folderIds","Boolean","message","statusCode","foldersRefreshEpic","folderSetComplete","listenerCreateQueueComplete","listenerDeleteQueueComplete","listenerUpdateQueueComplete","updateComplete","uploadComplete","foldersCurrentFolderEpic","clear","pickClear","loadPageIndex","pageIndex","patchOperationAssetFolderUnset","patch","unset","patchOperationFolderParentSet","set","parent","_ref","_type","_weak","foldersCreateEpic","trim","siblingIds","collision","some","id","toLowerCase","newId","doc","create","foldersDeleteEpic","childFolderIds","tx","transaction","asset","childFolderId","delete","commit","foldersRenameEpic","selectById","selectChildrenByParentId","selectRootIds","selectExactCountByFolderId","selectCurrentFolderId","selectCurrentFolderUnfiled","buildFolderPath","segments","cursor","seen","add","unshift","join","selectFolderPathById","_state","selectFolderTree","buildNode","children","exactCount","totalCount","reduce","sum","child","path","selectCurrentFolderSegments","chain","depth","FoldersIndex","selectFoldersIndex","selectCurrentFolderChildren","split","stack","cur","pop","kids","selectCanDeleteFolder","foldersActions","reducer","createSlice","PayloadAction","pluralize","ofType","EMPTY","of","filter","mergeMap","AssetItem","Dialog","MyEpic","Tag","assetsActions","ASSETS_ACTIONS","foldersActions","tagsActions","DIALOG_ACTIONS","DialogReducerState","items","initialState","dialogSlice","name","extraReducers","builder","addCase","showFolderCreate","state","action","parentFolderId","payload","push","id","type","showFolderMove","assets","folderId","showFolderRename","showTagCreate","showTagEdit","tagId","createComplete","item","renameComplete","reducers","clear","inlineTagCreate","assetId","tag","forEach","lastCreatedTag","label","current","value","_id","inlineTagRemove","tagIds","lastRemovedTagIds","remove","showConfirmAssetsTagAdd","assetsPicked","closeDialogId","suffix","length","confirmCallbackAction","tagsAddRequest","confirmText","title","headerTitle","tone","showConfirmAssetsTagRemove","tagsRemoveRequest","showConfirmDeleteAssets","deleteRequest","map","assetItem","asset","description","showConfirmDeleteFolder","folderName","showConfirmDeleteTag","showAllAssetsDialog","some","showAssetEdit","showSearchFacets","showFolders","showTags","dialogClearOnAssetUpdateEpic","action$","pipe","deleteComplete","folderSetComplete","updateComplete","dialogId","actions","dialogTagCreateEpic","match","dialogTagDeleteEpic","listenerDeleteQueueComplete","dialogActions","reducer","createGlobalStyle","css","customScrollbar","GlobalStyle","PropsWithChildren","createContext","useContext","useMemo","DropzoneOptions","MediaToolOptions","Locale","ContextProps","dropzone","Pick","components","createTagsOnUpload","creditLine","directUploads","excludeTagSlugs","locales","ToolOptionsContext","Props","options","ToolOptionsProvider","children","value","creditLineExcludeSources","excludeSources","Array","isArray","maxSize","maximumUploadSize","details","enabled","excludeTags","length","useToolOptions","context","Error","z","localizedStringSchema","locales","id","length","string","trim","optional","shape","Record","ZodTypeAny","locale","object","passthrough","tagOptionSchema","label","min","message","value","getAssetFormSchema","altText","creditLine","description","opt","media","tags","array","nullable","originalFilename","title","assetFormSchema","tagFormSchema","name","folderFormSchema","SanityDocument","getUniqueDocuments","documents","draftIds","reduce","acc","doc","_id","startsWith","concat","slice","filteredDocuments","filter","includes","ImageAsset","imageDprUrl","asset","options","width","height","dpi","window","devicePixelRatio","Math","round","imgH","max","undefined","imgW","urlParams","URLSearchParams","append","toString","url","FormData","Record","sanitizeFormData","formData","Object","keys","reduce","acc","key","val","constructor","Array","length","trim","Asset","FileAsset","ImageAsset","isFileAsset","asset","_type","isImageAsset","zodResolver","FieldValues","Resolver","zodFormResolver","schema","TFieldValues","Parameters","ImageAsset","getAssetResolution","asset","metadata","dimensions","width","height","usePortal","PopoverProps","usePortalPopoverProps","$","_c","portal","t0","element","animate","constrainSize","floatingBoundary","referenceBoundary","ClipboardIcon","Button","Text","Popover","copy","useEffect","useRef","useState","usePortalPopoverProps","Props","disabled","url","ButtonAssetCopy","t0","$","_c","popoverProps","refPopoverTimeout","popoverVisible","setPopoverVisible","t1","current","clearTimeout","setTimeout","handleClick","t2","t3","Symbol","for","t4","t5","t6","DownloadIcon","Box","Button","Flex","Inline","Stack","Text","format","filesize","ReactNode","Asset","AssetItem","getAssetResolution","isImageAsset","ButtonAssetCopy","Props","asset","item","Row","t0","$","_c","label","value","t1","Symbol","for","opacity","width","t2","t3","textAlign","t4","t5","AssetMetadata","props","exif","metadata","originalFilename","url","window","location","href","handleDownload","size","base","round","mimeType","t6","extension","toUpperCase","t7","t8","t9","t10","DateTimeOriginal","FNumber","FocalLength","ExposureTime","ISO","background","height","Date","t11","updating","t12","t13","t14","t15","t16","Dialog","SanityDialog","ComponentProps","props","$","_c","t0","Symbol","for","position","t1","SanityDocument","Box","Button","Card","Stack","Text","Preview","SchemaType","useSchema","useIntentLink","Props","documents","isLoading","DocumentList","t0","$","_c","schema","t1","Symbol","for","length","map","doc","_id","get","_type","t2","ReferringDocument","props","schemaType","intent","params","id","onClick","width","Box","Flex","Theme","MouseEvent","defaultStyles","FileIcon","ReactFileIcon","DefaultExtensionType","styled","css","Props","extension","onClick","e","width","Container","theme","sanity","fonts","text","family","props","$","_c","t0","Symbol","for","height","t1","t2","t3","t4","Flex","Asset","FileIcon","Props","asset","FileAssetPreview","props","$","_c","mimeType","search","t0","Symbol","for","height","t1","width","t2","url","extension","Box","Button","Text","Tooltip","format","ReactNode","Props","disabled","isValid","lastUpdated","onClick","FormSubmitButton","props","$","_c","content","t0","Symbol","for","t1","Date","t2","maxWidth","t3","window","hues","ThemeColorSchemeKey","studioTheme","SCHEME_COLORS","bg","dark","gray","hex","light","bg2","inputEnabledBorder","color","default","input","enabled","border","inputHoveredBorder","hovered","mutedHoveredBg","primary","muted","mutedHoveredFg","fg","mutedSelectedBg","selected","spotBlue","spot","blue","SchemeColorKey","getSchemeColor","scheme","colorKey","ThemeColorSchemeKey","MouseEvent","styled","css","getSchemeColor","Props","onClick","e","$showCheckerboard","$scheme","src","style","Image","img","attrs","crossOrigin","const","props","ErrorOutlineIcon","Box","Inline","Text","Tooltip","styled","Props","description","error","label","name","StyledErrorOutlineIcon","theme","color","sanity","spot","red","FormFieldInputLabel","props","$","_c","t0","t1","marginRight","t2","t3","t4","AddIcon","ChevronDownIcon","CloseIcon","Box","Card","Flex","rem","studioTheme","Text","ThemeColorSchemeKey","components","StylesConfig","Virtuoso","getSchemeColor","radius","themeRadius","space","themeSpace","reactSelectStyles","scheme","control","styles","isFocused","boxShadow","indicatorsContainer","isDisabled","opacity","input","color","fontFamily","fonts","text","family","marginLeft","menuList","multiValue","backgroundColor","borderRadius","multiValueLabel","fontSize","padding","multiValueRemove","noOptionsMessage","lineHeight","option","placeholder","valueContainer","margin","DropdownIndicator","props","$","_c","t0","Symbol","for","t1","Menu","children","MenuList","Array","isArray","height","length","index","item","t2","MultiValueLabel","MultiValueRemove","Option","data","__isNew__","marginRight","reactSelectComponents","IndicatorSeparator","Box","Controller","CreatableSelect","useColorSchemeValue","useTypedSelector","reactSelectComponents","reactSelectStyles","TagSelectOption","FormFieldInputLabel","Props","control","description","disabled","error","label","name","onCreateTag","tagName","options","value","placeholder","FormFieldInputTags","props","$","_c","scheme","creating","_temp","tagsFetching","_temp2","t0","Symbol","for","zIndex","t1","t2","t3","field","onBlur","onChange","controllerValue","_temp3","t4","state","tags","state_0","fetching","Box","TextInput","ChangeEventHandler","FocusEventHandler","Ref","FormFieldInputLabel","Props","description","disabled","error","label","name","onBlur","HTMLInputElement","onChange","placeholder","value","ref","FormFieldInputText","props","$","_c","rest","t0","t1","t2","Box","TextArea","ChangeEventHandler","FocusEventHandler","Ref","FormFieldInputLabel","Props","description","disabled","error","label","name","onBlur","HTMLTextAreaElement","onChange","placeholder","rows","value","ref","FormFieldInputTextarea","props","$","_c","rest","t0","t1","t2","FolderIcon","TrashIcon","Box","Button","Card","Flex","Stack","Tab","TabList","TabPanel","Text","useState","Control","FieldErrors","UseFormRegister","Asset","AssetFormData","Locale","TagSelectOption","FormFieldInputLabel","FormFieldInputTags","FormFieldInputText","FormFieldInputTextarea","LocalizedErrors","Record","message","toStringField","value","found","Object","values","find","v","undefined","truncateFolderPath","path","segments","split","filter","Boolean","length","slice","join","DetailsProps","formUpdating","handleCreateTag","title","control","errors","register","allTagOptions","assetTagOptions","currentAsset","folderPath","folderMissing","onChangeFolder","onRemoveFolder","creditLine","enabled","excludeSources","locales","Details","hasLocales","activeLocaleTab","setActiveLocaleTab","folderId","opt","media","folder","_ref","folderLabel","tags","minWidth","overflowX","whiteSpace","overflowY","originalFilename","map","locale","idx","id","const","altText","description","includes","name","MutationEvent","Box","Button","Card","Flex","Stack","Tab","TabList","TabPanel","Text","groq","ReactNode","useCallback","useEffect","useMemo","useRef","useState","SubmitHandler","useForm","useFormState","useDispatch","WithReferringDocuments","useColorSchemeValue","useDocumentStore","useToolOptions","getAssetFormSchema","useTypedSelector","useVersionedClient","assetsActions","selectAssetById","dialogActions","DIALOG_ACTIONS","selectFolderPathById","selectTags","selectTagSelectOptions","tagsActions","Asset","AssetFormData","DialogAssetEditProps","TagSelectOption","getTagSelectOptions","getUniqueDocuments","imageDprUrl","sanitizeFormData","isFileAsset","isImageAsset","zodFormResolver","AssetMetadata","Dialog","DocumentList","FileAssetPreview","FormSubmitButton","Image","Details","DetailsProps","renderDefaultDetails","props","Props","children","dialog","DialogAssetEdit","$","_c","t0","assetId","id","lastCreatedTag","lastRemovedTagIds","client","scheme","documentStore","dispatch","t1","state","String","assetItem","tags","assetUpdatedPrev","undefined","assetSnapshot","setAssetSnapshot","asset","tabSection","setTabSection","currentAsset","t2","allTagOptions","t3","assetTagOptions","currentFolderId","opt","media","folder","_ref","t4","state_0","currentFolderPath","creditLine","components","t5","locales","t6","details","CustomDetails","t7","imageDescription","raw","metadata","image","ImageDescription","length","makeLocaleObj","field","t8","fallback","obj","i","locale","altText","description","originalFilename","title","flattenField","_temp2","generateDefaultValues","t9","t10","t11","defaultValues","mode","resolver","control","getValues","handleSubmit","register","reset","setValue","t12","errors","isDirty","isValid","formUpdating","updating","t13","remove","handleClose","t14","showConfirmDeleteAssets","assets","closeDialogId","_id","handleDelete","t15","Symbol","for","update","result","transition","handleAssetUpdate","t16","tagName","createRequest","name","handleCreateTag","t17","showFolderMove","folderId","handleChangeFolder","t18","folderSetRequest","handleRemoveFolder","t19","bb0","isLocaleObj","_temp3","fields","_type","anyLocalized","some","f","configuredIds","Set","map","_temp4","f_0","Object","keys","k","has","hasOrphanedLocales","t20","cleanField","field_1","Array","isArray","obj_0","Record","sorted","sort","k_0","find","_temp5","configuredIds_0","_temp6","cleaned","key","val","entries","patch","set","commit","handleCleanupLocales","t21","formData","sanitizedFormData","updateRequest","_temp7","onSubmit","t22","subscriptionAsset","listen","subscribe","unsubscribe","t23","t24","t25","t26","existingTags","updatedTags","concat","shouldDirty","t27","t28","existingTags_0","updatedTags_0","filter","tag_0","includes","tag","value","t29","current","_updatedAt","t30","t31","t32","t33","t34","t35","t36","t37","t38","t39","footer","t40","t41","folderPath","folderMissing","onChangeFolder","onRemoveFolder","detailsProps","t42","t43","t44","t45","isLoading","referringDocuments","uniqueReferringDocuments","display","t46","aspectRatio","t47","t48","isOpaque","height","width","t49","t50","t51","t52","t53","_temp","v","field_0","fallback_0","values","v_0","l","v_1","l_0","_weak","createSelector","CardAssetData","CardFolderData","CardUploadData","selectCurrentFolderChildren","RootReducerState","selectCombinedItems","state","assets","allIds","uploads","assetIds","uploadIds","folderChildren","assetItems","map","id","type","folderItems","folder","folderId","name","path","totalCount","uploadItems","combinedItems","isHotkey","RefObject","useCallback","useEffect","useRef","useKeyPress","hotkey","onPress","$","_c","keyPressed","t0","e","current","downHandler","t1","Symbol","for","upHandler","t2","t3","window","addEventListener","removeEventListener","CheckmarkCircleIcon","EditIcon","WarningFilledIcon","Box","Checkbox","Container","Flex","Spinner","Text","Theme","ThemeColorSchemeKey","useToast","Tooltip","memo","MouseEvent","RefObject","useDispatch","useColorSchemeValue","styled","css","PANEL_HEIGHT","useAssetSourceActions","useKeyPress","useTypedSelector","assetsActions","selectAssetById","selectAssetsPicked","dialogActions","getSchemeColor","imageDprUrl","isFileAsset","isImageAsset","FileIcon","Image","Props","id","selected","source","CardWrapper","CardContainer","$picked","theme","$updating","sanity","color","spot","orange","ContextActionContainer","$scheme","StyledWarningOutlineIcon","red","CardAsset","props","$","_c","scheme","toast","shiftPressed","dispatch","lastPicked","_temp","assetsPicked","t0","state_0","state","item","t1","state_1","dialog","items","find","_temp2","type","assetId","undefined","dialogReplaceAssetId","asset","error","isOpaque","metadata","picked","updating","assetToReplaceId","length","_id","t2","state_2","assetToReplace","isMultiSelect","onSelect","t3","updateImageReferences","push","status","title","clear","handleReplaceAsset","t4","e","stopPropagation","kind","value","current","pickRange","startId","endId","pick","showAssetEdit","handleAssetClick","t5","e_0","handleContextActionClick","opacityContainer","opacityPreview","t6","t7","cursor","position","t8","t9","height","opacity","t10","extension","t11","width","draggable","transition","t12","t13","left","top","t14","t15","t16","t17","flexShrink","pointerEvents","transform","t18","originalFilename","t19","t20","right","t21","assets","d","Box","Card","Flex","Stack","Text","useDispatch","useColorSchemeValue","css","styled","foldersActions","getSchemeColor","Props","folderId","name","totalCount","CardWrapper","FolderCard","FolderGlyph","theme","sanity","color","spot","yellow","CardFolder","t0","$","_c","dispatch","scheme","t1","currentFolderSet","t2","t3","background","border","t4","Symbol","for","t5","lineHeight","minHeight","wordBreak","t6","t7","t8","t9","t10","t11","Observable","from","of","mergeMap","PREVIEW_WIDTH","createBlob","img","HTMLImageElement","Promise","Blob","resolve","imageAspect","width","height","canvas","HTMLCanvasElement","document","createElement","Math","max","ctx","getContext","drawImage","toBlob","err","console","warn","createImageEl","file","File","blobUrlLarge","window","URL","createObjectURL","Image","onload","revokeObjectURL","src","generatePreviewBlobUrl","imageEl","blob","Error","generatePreviewBlobUrl$","pipe","Subject","Subscription","Observable","from","first","mergeMap","DEFAULT_CONCURRENCY","remove","array","Array","T","item","index","indexOf","splice","createThrottler","concurrency","currentSubscriptions","pendingObservables","ready$","request","observable","observer","length","scheduleAndWait$","pipe","subscribe","subscription","push","unsubscribe","next","shift","asObservable","obs","withMaxConcurrency","func","args","throttler","SanityAssetDocument","SanityClient","SanityImageAssetDocument","Observable","of","throwError","map","mergeMap","HttpError","withMaxConcurrency","fetchExisting$","client","type","hash","observable","fetch","documentType","readFile$","file","File","ArrayBuffer","subscriber","reader","FileReader","onload","next","result","complete","onerror","err","error","readAsArrayBuffer","abort","hexFromBuffer","buffer","Array","prototype","call","Uint8Array","x","toString","slice","join","hashFile$","window","crypto","subtle","message","statusCode","pipe","arrayBuffer","digest","uploadSanityAsset$","assetType","existingAsset","assets","upload","extract","preserveFilename","event","asset","body","document","id","_id","uploadAsset$","createSelector","createSlice","PayloadAction","ClientError","SanityAssetDocument","SanityImageAssetDocument","groq","empty","from","merge","of","catchError","delay","filter","mergeMap","takeUntil","withLatestFrom","HttpError","MyEpic","SanityUploadProgressEvent","UploadItem","constructFilter","generatePreviewBlobUrl$","hashFile$","uploadAsset$","assetsActions","RootReducerState","UPLOADS_ACTIONS","UploadsReducerState","allIds","byIds","Record","initialState","uploadsSlice","name","extraReducers","builder","addCase","uploadComplete","state","action","asset","payload","sha1hash","status","reducers","checkRequest","_state","_action","assets","checkComplete","results","assetHashes","Object","keys","forEach","hash","deleteIndex","indexOf","splice","blobUrl","objectUrl","window","URL","revokeObjectURL","previewReady","uploadCancel","uploadError","error","uploadRequest","file","File","forceAsAssetType","uploadProgress","event","uploadHash","percent","uploadStart","uploadItem","includes","push","uploadsAssetStartEpic","action$","_state$","client","pipe","uploadsActions","match","url","assetType","v","type","folderId","patch","_id","setIfMissing","opt","set","_ref","_type","_weak","commit","stage","message","statusCode","uploadsAssetUploadEpic","state$","exists","uploads","folders","currentFolderId","size","uploadsCompleteQueueEpic","uploadsCheckRequestEpic","documentIds","map","constructedFilter","assetTypes","excludeTagSlugs","searchFacets","search","facets","searchQuery","query","observable","fetch","resultHashes","checkedResults","reduce","acc","insertUploads","selectUploadById","uploadId","actions","reducer","CloseIcon","Box","Button","Flex","Text","filesize","useDispatch","useColorSchemeValue","styled","PANEL_HEIGHT","useTypedSelector","selectUploadById","uploadsActions","getSchemeColor","FileIcon","Image","Props","id","CardWrapper","CardUpload","props","$","_c","scheme","dispatch","t0","state","item","t1","size","base","round","fileSize","percentLoaded","Math","percent","isComplete","status","isUploading","isQueued","t2","hash","uploadCancel","handleCancelUpload","t3","t4","background","border","height","position","t5","t6","bottom","left","width","transform","transformOrigin","transition","t7","Symbol","for","t8","assetType","objectUrl","opacity","t9","t10","top","boxShadow","t11","t12","t13","name","t14","flexShrink","t15","t16","t17","memo","VirtuosoGrid","styled","useTypedSelector","CardAssetData","CardFolderData","CardUploadData","CardAsset","CardFolder","CardUpload","Props","items","onLoadMore","source","CARD_HEIGHT","CARD_WIDTH","VirtualCell","t0","$","_c","item","selected","type","t1","id","folderId","name","totalCount","StyledItemContainer","div","ItemContainer","props","ref","rest","context","StyledListContainer","ListContainer","AssetGridVirtualized","selectedAssets","_temp","map","_temp2","selectedIds","length","index","t2","Symbol","for","Item","List","t3","index_0","item_0","includes","t4","overflowX","overflowY","t5","state","assets","asset","_id","Box","Text","useEffect","useRef","useState","useDispatch","useStore","useTypedSelector","assetsActions","foldersActions","searchActions","selectCombinedItems","RootReducerState","SearchFacetInputProps","WithId","isImageAsset","AssetGridVirtualized","omitFacetId","facet","id","_id","withoutId","ReplaceAssetsOverview","$","_c","dispatch","store","combinedItems","assetsById","_temp","fetchCount","_temp2","fetching","_temp3","fetchingError","_temp4","pageSize","_temp5","searchQuery","_temp6","searchFacets","_temp7","currentFolderId","_temp8","currentFolderUnfiled","_temp9","assetToReplaceId","_temp1","savedBrowserStateRef","t0","length","Boolean","awaitingRefetch","setAwaitingRefetch","t1","t2","dialog","dialog_0","folders","search","getState","query","facets","dialogItem","items","find","_temp10","current","assetId","type","undefined","folderId","folderUnfiled","querySet","facetsClear","currentFolderClear","saved","hadScope","facetsAdd","currentFolderSet","currentFolderShowUnfiled","pick","picked","t3","t4","previousIds","assets","allIds","awaitingSettle","subscribe","isFetching","listCleared","scopeActive","t5","t6","item_1","item","asset","filter","reducedItems","hasFetchedOnce","hasMorePages","isEmpty","t7","loadNextPage","t8","handleLoadMoreItems","t9","state","byIds","state_0","state_1","state_2","state_3","state_4","state_5","state_6","state_7","_temp0","state_8","item_0","Box","ReactNode","useCallback","useDispatch","dialogActions","DialogAllAssetsProps","Dialog","ReplaceAssetsOverview","Props","children","dialog","DialogAllAssets","props","$","_c","t0","id","dispatch","t1","clear","handleClose","t2","Symbol","for","height","t3","WarningOutlineIcon","Box","Button","Flex","Stack","Text","ReactNode","useDispatch","dialogActions","DialogConfirmProps","Dialog","Props","children","dialog","DialogConfirm","props","$","_c","dispatch","t0","id","remove","handleClose","t1","closeDialogId","confirmCallbackAction","handleConfirm","t2","confirmText","tone","Footer","t3","headerTitle","Header","t4","t5","t6","title","t7","description","t8","t9","Box","Flex","Text","ReactNode","useEffect","SubmitHandler","useForm","useDispatch","folderFormSchema","useTypedSelector","dialogActions","foldersActions","selectFolderPathById","DialogFolderCreateProps","FolderFormData","sanitizeFormData","zodFormResolver","Dialog","FormFieldInputText","FormSubmitButton","Props","children","dialog","DialogFolderCreate","props","$","_c","t0","parentFolderId","id","dispatch","creating","_temp","creatingError","_temp2","t1","state_1","state","parentPath","t2","Symbol","for","name","t3","defaultValues","mode","resolver","formState","t4","handleSubmit","register","setError","errors","isDirty","isValid","t5","clear","handleClose","t6","formData","sanitizedFormData","createRequest","parentId","onSubmit","t7","t8","message","t9","Footer","t10","t11","t12","display","t13","t14","t15","t16","t17","t18","folders","state_0","Box","Button","Flex","Inline","Stack","Text","Tree","TreeItem","pluralize","ReactNode","useMemo","useState","useDispatch","useTypedSelector","assetsActions","dialogActions","selectFolderTree","DialogFolderMoveProps","FolderTreeNode","Dialog","getExpandedIdSet","folderId","byId","Record","parentId","expanded","Set","cursor","node","add","Props","children","dialog","FolderNodeProps","expandedIds","onSelect","selectedId","FolderNode","t0","$","_c","hasChildren","length","selected","id","t1","has","t2","t3","name","totalCount","t4","t5","map","childNode","t6","FolderTreeProps","folderTree","FolderTree","DialogFolderMove","dispatch","_temp","assets","setSelectedId","selectedFolder","remove","handleClose","folderSetRequest","closeDialogId","handleMove","t7","t8","t9","t10","t11","t12","t13","t14","t15","Symbol","for","maxHeight","overflowY","t16","t17","t18","t19","t20","t21","state","folders","Box","Flex","Text","ReactNode","useEffect","SubmitHandler","useForm","useDispatch","folderFormSchema","useTypedSelector","dialogActions","foldersActions","selectFolderPathById","DialogFolderRenameProps","FolderFormData","sanitizeFormData","zodFormResolver","Dialog","FormFieldInputText","FormSubmitButton","Props","children","dialog","DialogFolderRename","t0","$","_c","folderId","id","dispatch","renaming","_temp","renameError","_temp2","t1","state_1","state","folders","byId","folder","t2","state_2","folderPath","currentName","name","t3","includes","slice","lastIndexOf","parentPath","t4","t5","Symbol","for","t6","defaultValues","mode","resolver","formState","t7","handleSubmit","register","setError","errors","isDirty","isValid","t8","remove","handleClose","t9","formData","sanitizedFormData","renameRequest","onSubmit","t10","t11","message","t12","t13","t14","t15","t16","display","t17","t18","t19","t20","t21","t22","t23","state_0","AddIcon","EditIcon","FolderIcon","TrashIcon","Box","Button","Container","Flex","Inline","Label","Text","Tree","TreeItem","Tooltip","ReactNode","useMemo","useDispatch","PANEL_HEIGHT","useTypedSelector","dialogActions","DIALOG_ACTIONS","foldersActions","selectCanDeleteFolder","selectFolderTree","FolderTreeNode","getExpandedIdSet","folderId","byId","Record","parentId","expanded","Set","cursor","node","add","FolderNodeProps","currentFolderId","expandedIds","onSelect","FolderHeaderActionProps","disabled","icon","onClick","tone","tooltip","FolderHeaderAction","t0","$","_c","t1","t2","undefined","t3","t4","t5","window","FolderItemTextProps","name","totalCount","FolderItemText","Symbol","for","boxSizing","display","maxWidth","minWidth","overflow","paddingRight","position","width","alignItems","paddingLeft","gap","flexShrink","lineHeight","textOverflow","whiteSpace","t6","fontSize","opacity","right","top","transform","t7","t8","FolderNode","hasChildren","children","length","selected","id","has","map","childNode","FolderView","dispatch","_temp","_temp2","canDeleteFolder","fetching","_temp3","folderTree","currentFolder","Array","from","join","treeKey","hasFolders","currentFolderSet","handleFolderSelect","showConfirmDeleteFolder","folderName","handleFolderDelete","borderBottom","height","showFolderRename","t9","t10","showFolderCreate","parentFolderId","t11","t12","t13","t14","currentFolderClear","t15","t16","t17","t18","t19","t20","t21","t22","state","folders","state_0","state_1","Box","ReactNode","useCallback","useDispatch","dialogActions","DialogFoldersProps","Dialog","FolderView","Props","children","dialog","DialogFolders","props","$","_c","t0","id","dispatch","t1","clear","handleClose","t2","Symbol","for","height","minHeight","t3","CloseIcon","Box","Flex","Label","rem","Text","ThemeColorSchemeKey","ReactNode","useDispatch","useColorSchemeValue","styled","css","searchActions","SearchFacetInputProps","WithId","getSchemeColor","Props","children","facet","Container","$scheme","theme","sanity","radius","SearchFacet","props","$","_c","scheme","dispatch","t0","id","facetsRemoveById","facetId","handleClose","t1","Symbol","for","t2","t3","t4","t5","t6","whiteSpace","t7","title","t8","t9","t10","t11","TextInput","ChangeEvent","Props","onValueChange","value","TextInputNumber","props","$","_c","remainingProps","t0","t1","t2","e","val","target","regex","test","parseInt","handleChange","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","operators","usePortalPopoverProps","searchActions","SearchFacetInputNumberModifier","SearchFacetInputNumberProps","SearchFacetOperatorType","WithId","SearchFacet","TextInputNumber","Props","facet","SearchFacetNumber","t0","$","_c","dispatch","popoverProps","modifiers","t1","modifier","find","name","selectedModifier","t2","id","operatorType","facetsUpdateById","handleOperatorItemClick","t3","modifier_0","handleModifierClick","t4","value","handleValueChange","selectedOperatorType","t5","operatorTypes","label","map","operatorType_0","index","selected","t6","Symbol","for","maxWidth","t7","t8","t9","title","modifier_1","selected_0","t10","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","operators","usePortalPopoverProps","searchActions","SearchFacetInputSelectListItemProps","SearchFacetInputSelectProps","SearchFacetOperatorType","WithId","SearchFacet","Props","facet","SearchFacetSelect","t0","$","_c","dispatch","popoverProps","options","t1","value","find","v","name","selectedItem","t2","option","facetsUpdate","handleListItemClick","t3","operatorType","handleOperatorItemClick","selectedOperatorType","t4","operatorTypes","label","map","operatorType_0","index","selected","t5","title","t6","t7","item","selected_0","t8","t9","t10","SelectIcon","Box","Button","TextInput","Menu","MenuButton","MenuDivider","MenuItem","ChangeEvent","useDispatch","operators","usePortalPopoverProps","searchActions","SearchFacetInputStringProps","SearchFacetOperatorType","WithId","SearchFacet","Props","facet","SearchFacetString","t0","$","_c","dispatch","popoverProps","t1","id","operatorType","facetsUpdateById","handleOperatorItemClick","t2","e","value","target","handleChange","selectedOperatorType","t3","operatorTypes","label","map","operatorType_0","index","selected","t4","hideInput","maxWidth","t5","CloseIcon","Box","Card","rem","studioTheme","Text","ThemeColorSchemeKey","components","StylesConfig","Virtuoso","getSchemeColor","fonts","text","sizes","themeTextSizes","radius","themeRadius","space","themeSpace","reactSelectStyles","scheme","control","styles","isDisabled","isFocused","boxShadow","fontSize","input","color","fontFamily","family","marginLeft","menuList","padding","noOptionsMessage","lineHeight","option","backgroundColor","placeholder","paddingLeft","singleValue","alignItems","display","height","valueContainer","margin","ClearIndicator","props","$","_c","t0","Symbol","for","transform","t1","t2","Menu","children","MenuList","Array","isArray","length","index","item","NoOptionsMessage","Option","SingleValue","reactSelectComponents","DropdownIndicator","IndicatorSeparator","SelectIcon","Box","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","Select","useColorSchemeValue","operators","useToolOptions","usePortalPopoverProps","useTypedSelector","searchActions","selectTags","reactSelectComponents","reactSelectStyles","TagSelectOption","SearchFacetInputSearchableProps","SearchFacetOperatorType","WithId","getTagSelectOptions","SearchFacet","Props","facet","SearchFacetTags","t0","$","_c","scheme","dispatch","excludeTagSlugs","tagsAll","_temp","t1","length","filter","t","includes","tag","name","current","tags","tagsFetching","_temp2","t2","allTagOptions","popoverProps","t3","id","option","facetsUpdateById","value","handleChange","t4","operatorType","handleOperatorItemClick","selectedOperatorType","t5","operatorTypes","label","map","operatorType_0","index","selected","minWidth","t6","hideInput","width","_temp3","t7","state","state_0","fetching","Box","Flex","Inline","rem","Theme","styled","css","useTypedSelector","SearchFacetNumber","SearchFacetSelect","SearchFacetString","SearchFacetTags","Props","layout","StackContainer","theme","sanity","space","SearchFacets","props","$","_c","t0","undefined","searchFacets","_temp","t1","map","_temp2","Items","length","t2","Error","state","search","facets","facet","key","id","type","AddIcon","Button","Flex","Menu","MenuButton","MenuDivider","MenuGroup","MenuItem","useDispatch","FACETS","useToolOptions","usePortalPopoverProps","useTypedSelector","searchActions","SearchFacetDivider","SearchFacetGroup","SearchFacetInputProps","SearchFacetsControl","$","_c","dispatch","assetTypes","_temp","searchFacets","_temp2","selectedDocument","_temp3","popoverProps","creditLine","isTool","T0","T1","T2","t0","t1","t2","enabled","t3","facet","type","name","selectOnly","matchingAssetTypes","filter","assetType","includes","length","filteredFacets","_temp4","hasSearchFacets","renderMenuFacets","facets_0","t4","level","undefined","facets","map","facet_1","index_0","index","title","disabled","operatorTypes","find","v","facetsAdd","t5","placement","t6","facetsClear","t7","state","assets","state_0","search","state_1","selected","document","facet_0","previousFacet","Box","ReactNode","useCallback","useDispatch","dialogActions","DialogSearchFacetsProps","Dialog","SearchFacets","SearchFacetsControl","Props","children","dialog","DialogSearchFacets","props","$","_c","t0","id","dispatch","t1","clear","handleClose","t2","Symbol","for","t3","Box","Flex","ReactNode","useEffect","SubmitHandler","useForm","useDispatch","tagFormSchema","useTypedSelector","dialogActions","tagsActions","DialogTagCreateProps","TagFormData","sanitizeFormData","zodFormResolver","Dialog","FormFieldInputText","FormSubmitButton","Props","children","dialog","DialogTagCreate","props","$","_c","t0","id","dispatch","creating","_temp","creatingError","_temp2","t1","Symbol","for","name","t2","defaultValues","mode","resolver","formState","t3","handleSubmit","register","setError","errors","isDirty","isValid","formUpdating","t4","clear","handleClose","t5","formData","sanitizedFormData","createRequest","onSubmit","t6","t7","message","t8","Footer","t9","t10","t11","display","t12","t13","t14","t15","t16","state","tags","state_0","MutationEvent","Box","Button","Card","Flex","Text","groq","ReactNode","useCallback","useEffect","useState","SubmitHandler","useForm","useDispatch","tagFormSchema","useTypedSelector","useVersionedClient","dialogActions","selectTagById","tagsActions","DialogTagEditProps","Tag","TagFormData","sanitizeFormData","zodFormResolver","Dialog","FormFieldInputText","FormSubmitButton","Props","children","dialog","DialogTagEdit","props","$","_c","t0","id","tagId","client","dispatch","t1","state","String","tagItem","tagSnapshot","setTagSnapshot","tag","currentTag","generateDefaultValues","_temp","t2","t3","t4","Symbol","for","t5","defaultValues","mode","resolver","formState","t6","handleSubmit","register","reset","setError","errors","isDirty","isValid","formUpdating","updating","t7","remove","handleClose","t8","formData","sanitizedFormData","updateRequest","closeDialogId","_id","name","_type","current","onSubmit","t9","showConfirmDeleteTag","handleDelete","t10","update","result","transition","handleTagUpdate","t11","error","message","t12","t13","t14","subscriptionAsset","listen","subscribe","unsubscribe","t15","t16","t17","_updatedAt","Footer","t18","t19","t20","t21","display","t22","t23","t24","t25","t26","ArrowDownIcon","ArrowUpIcon","CloseIcon","EditIcon","SearchIcon","TrashIcon","Box","Button","Container","Flex","Text","Tooltip","ReactNode","useDispatch","styled","inputs","PANEL_HEIGHT","useTypedSelector","selectAssetsPicked","dialogActions","DIALOG_ACTIONS","searchActions","selectIsSearchFacetTag","SearchFacetInputSearchableProps","TagActions","TagItem","Props","actions","tag","TagContainer","ButtonContainer","TagButtonProps","disabled","icon","onClick","tone","tooltip","TagButton","props","$","_c","t0","t1","t2","window","Tag","dispatch","assetsPicked","_id","state","isSearchFacetTag","facetsRemoveByTag","tagId","handleSearchFacetTagRemove","showConfirmAssetsTagAdd","handleShowAddTagToAssetsDialog","t3","showConfirmAssetsTagRemove","handleShowRemoveTagFromAssetsDialog","t4","showConfirmDeleteTag","handleShowTagDeleteDialog","t5","showTagEdit","handleShowTagEditDialog","t6","name","current","searchFacet","value","label","facetsUpdate","operatorType","facetsAdd","facet","handleSearchFacetTagAddOrUpdate","t7","updating","t8","opacity","userSelect","t9","t10","t11","Symbol","for","flexShrink","t12","includes","t13","t14","t15","t16","t17","t18","Flex","Label","memo","useState","Virtuoso","PANEL_HEIGHT","useTypedSelector","selectAssetsPicked","TagActions","TagItem","Tag","VirtualRow","t0","$","_c","isScrolling","item","t1","Symbol","for","height","t2","t3","undefined","actions","tag","_id","TagsVirtualized","tags","assetsPicked","setIsScrolling","items","pickedTagIds","reduce","_temp2","pickedTagIdsUnique","Set","acc_0","tagId","tagIsInEveryAsset","every","assetItem","tagIndex","asset","opt","media","findIndex","tag_0","_ref","acc","appliedToAll","push","appliedToSome","tagIdsSegmented","tagsAppliedToAll","filter","tag_1","includes","map","_temp3","tagsAppliedToSome","tag_2","_temp4","tagsUnused","tag_3","_temp5","length","_temp6","index","index_0","flex","overflowX","t4","_temp","val","assetTagIds","concat","tagItem","tagItem_0","tagItem_1","tagItem_2","ComposeIcon","Box","Button","Flex","Inline","Label","useDispatch","useColorSchemeValue","PANEL_HEIGHT","useTypedSelector","DIALOG_ACTIONS","getSchemeColor","Props","allowCreate","light","title","TagViewHeader","t0","$","_c","scheme","dispatch","tagsCreating","_temp","tagsFetching","_temp2","t1","showTagCreate","handleTagCreate","t2","t3","background","borderBottom","flexShrink","height","t4","t5","opacity","t6","t7","boxShadow","t8","state","tags","creating","state_0","fetching","Box","Flex","Text","useToolOptions","useTypedSelector","selectAssetsPickedLength","selectTags","TagsVirtualized","TagViewHeader","TagView","$","_c","numPickedAssets","excludeTagSlugs","tagsAll","t0","length","filter","t","includes","tag","name","current","tags","fetching","_temp","fetchCount","_temp2","fetchComplete","hasTags","hasPicked","t1","t2","t3","t4","t5","state","state_0","Box","ReactNode","useCallback","useDispatch","dialogActions","DialogTagsProps","Dialog","TagView","Props","children","dialog","DialogTags","props","$","_c","t0","id","dispatch","t1","clear","handleClose","t2","Symbol","for","height","minHeight","t3","useTypedSelector","Dialog","DialogAssetEdit","DialogAllAssets","DialogConfirm","DialogFolderCreate","DialogFolderMove","DialogFolderRename","DialogFolders","DialogSearchFacets","DialogTagCreate","DialogTagEdit","DialogTags","Dialogs","$","_c","currentDialogs","_temp","t0","renderDialogs","dialogs","index","length","dialog","childDialogs","type","state","items","useToast","useEffect","useTypedSelector","Notifications","$","_c","items","_temp","toast","t0","t1","length","lastItem","push","closable","status","title","state","notifications","PayloadAction","createSlice","DebugReducerState","badConnection","enabled","initialState","debugSlice","name","reducers","setBadConnection","state","action","payload","toggleEnabled","debugActions","actions","reducer","PayloadAction","createSlice","pluralize","AnyAction","ofType","of","bufferTime","filter","mergeMap","HttpError","ImageAsset","MyEpic","assetsActions","ASSETS_ACTIONS","foldersActions","tagsActions","uploadsActions","Notification","asset","status","title","NotificationsReducerState","items","messageFromGenericErrorPayload","payload","error","String","message","initialState","notificationsSlice","name","reducers","add","state","action","push","notificationsAssetsDeleteCompleteEpic","action$","pipe","deleteComplete","match","assetIds","deletedCount","length","actions","notificationsAssetsDeleteErrorEpic","deleteError","count","notificationsAssetsUploadCompleteEpic","checkComplete","results","Object","keys","notificationsAssetsTagsAddCompleteEpic","tagsAddComplete","assets","notificationsAssetsTagsRemoveCompleteEpic","tagsRemoveComplete","notificationsAssetsUpdateCompleteEpic","updateComplete","updatedCount","notificationsGenericErrorEpic","fetchError","type","updateError","createError","renameError","uploadError","notificationsTagCreateCompleteEpic","createComplete","notificationsTagDeleteCompleteEpic","notificationsTagUpdateCompleteEpic","notificationsFolderCreateCompleteEpic","notificationsFolderDeleteCompleteEpic","notificationsFolderRenameCompleteEpic","renameComplete","notificationsActions","reducer","createSlice","SanityAssetDocument","SanityDocument","SanityImageAssetDocument","SelectedReducerState","assets","document","documentAssetIds","initialState","undefined","selectedSlice","name","reducers","reducer","Reducer","StateFromReducersMapObject","combineReducers","combineEpics","assetsReducer","assetsDeleteEpic","assetsFetchAfterDeleteAllEpic","assetsFetchEpic","assetsFolderSetEpic","assetsFolderSetRefreshEpic","assetsFetchNextPageEpic","assetsFetchPageIndexEpic","assetsListenerCreateQueueEpic","assetsListenerDeleteQueueEpic","assetsListenerUpdateQueueEpic","assetsOrderSetEpic","assetsSearchEpic","assetsSortEpic","assetsTagsAddEpic","assetsTagsRemoveEpic","assetsUnpickEpic","assetsUpdateEpic","assetsUpdateImageReferencesEpic","debugReducer","dialogReducer","dialogClearOnAssetUpdateEpic","dialogTagCreateEpic","dialogTagDeleteEpic","foldersReducer","foldersCurrentFolderEpic","foldersCreateEpic","foldersDeleteEpic","foldersFetchEpic","foldersRefreshEpic","foldersRenameEpic","notificationsReducer","notificationsAssetsDeleteErrorEpic","notificationsAssetsDeleteCompleteEpic","notificationsAssetsTagsAddCompleteEpic","notificationsAssetsTagsRemoveCompleteEpic","notificationsAssetsUpdateCompleteEpic","notificationsFolderCreateCompleteEpic","notificationsFolderDeleteCompleteEpic","notificationsFolderRenameCompleteEpic","notificationsGenericErrorEpic","notificationsTagCreateCompleteEpic","notificationsTagDeleteCompleteEpic","notificationsTagUpdateCompleteEpic","searchReducer","searchFacetTagUpdateEpic","selectedReducer","tagsReducer","tagsCreateEpic","tagsDeleteEpic","tagsFetchEpic","tagsListenerCreateQueueEpic","tagsListenerDeleteQueueEpic","tagsListenerUpdateQueueEpic","tagsSortEpic","tagsUpdateEpic","uploadsReducer","uploadsAssetStartEpic","uploadsAssetUploadEpic","uploadsCheckRequestEpic","uploadsCompleteQueueEpic","rootEpic","reducers","assets","debug","dialog","folders","notifications","search","selected","tags","uploads","ReducersMapObject","rootReducer","SanityDocument","isPlainObject","value","Array","isArray","getAssetIds","node","Record","acc","forEach","v","_type","_ref","push","Object","values","val","getDocumentAssetIds","document","assetIds","Set","sort","SUPPORTED_ASSET_TYPES","AssetType","isSupportedAssetType","assetType","supported","includes","AnyAction","configureStore","Store","SanityClient","ReactNode","useState","Provider","createEpicMiddleware","AssetSourceComponentProps","SanityDocument","rootEpic","rootReducer","initialState","assetsInitialState","RootReducerState","getDocumentAssetIds","isSupportedAssetType","Props","assetType","children","client","document","excludeTagSlugs","selectedAssets","createReduxStore","props","epicMiddleware","dependencies","store","reducer","middleware","getDefaultMiddleware","serializableCheck","thunk","prepend","devTools","preloadedState","assets","assetTypes","length","debug","badConnection","enabled","dialog","items","folders","byId","childrenByParentId","rootIds","exactCountByFolderId","unfiledCount","currentFolderId","currentFolderUnfiled","panelVisible","fetching","fetchCount","creating","renaming","notifications","search","facets","query","selected","documentAssetIds","tags","allIds","byIds","uploads","run","ReduxProvider","t0","$","_c","t1","t2","PortalProvider","useEffect","useRef","useDispatch","AssetSourceComponentProps","SanityDocument","useFormValue","AssetBrowserDispatchProvider","useRootPortalElement","useTypedSelector","useVersionedClient","assetsActions","dialogActions","foldersActions","tagsActions","GlobalStyle","constructFilter","Dialogs","Notifications","ReduxProvider","EditAssetDialog","t0","$","_c","assetId","onClose","dispatch","openDialogCount","_temp","hasOpenedRef","t1","t2","queryFilter","assetTypes","searchFacets","fetchRequest","params","showAssetEdit","t3","t4","current","t5","Symbol","for","EditAssetTool","props","selectedAssets","portalElement","currentDocument","client","_id","undefined","t6","t7","onSelect","t8","assetType","state","dialog","items","length","ThLargeIcon","ThListIcon","Button","Inline","useDispatch","useTypedSelector","assetsActions","ButtonViewGroup","$","_c","dispatch","view","_temp","t0","Symbol","for","whiteSpace","t1","t2","viewSet","t3","borderBottomRightRadius","borderTopRightRadius","t4","t5","t6","t7","borderBottomLeftRadius","borderTopLeftRadius","t8","t9","state","assets","SortIcon","Button","Menu","MenuButton","MenuDivider","MenuItem","useDispatch","getOrderTitle","ORDER_OPTIONS","usePortalPopoverProps","useTypedSelector","assetsActions","OrderSelect","$","_c","dispatch","order","_temp","popoverProps","t0","direction","field","t1","t2","map","item","index","selected","orderSet","minWidth","t3","t4","state","assets","Box","useNProgress","Props","loading","Progress","props","$","_c","t0","animationDuration","isAnimating","isFinished","progress","t1","t2","t3","opacity","transition","t4","t5","t6","height","background","position","left","top","width","t7","TagIcon","$","_c","t0","Symbol","for","CloseIcon","SearchIcon","Box","Flex","TextInput","ChangeEvent","useDispatch","useTypedSelector","searchActions","TextInputSearch","$","_c","searchQuery","_temp","dispatch","t0","e","querySet","currentTarget","value","handleChange","t1","handleClear","t2","Symbol","for","position","t3","t4","length","cursor","height","opacity","right","top","width","zIndex","t5","state","search","query","FolderIcon","Box","Button","Flex","Inline","useMediaIndex","useDispatch","useTypedSelector","dialogActions","foldersActions","tagsActions","ButtonViewGroup","OrderSelect","Progress","SearchFacets","SearchFacetsControl","TagIcon","TextInputSearch","Controls","$","_c","dispatch","fetching","_temp","foldersPanelVisible","_temp2","pageIndex","_temp3","searchFacets","_temp4","tagsPanelVisible","_temp5","mediaIndex","t0","showSearchFacets","handleShowSearchFacetDialog","t1","showFolders","handleShowFoldersDialog","t2","showTags","handleShowTagsDialog","t3","panelVisibleSet","panelVisible","toggleFoldersPanel","t4","toggleTagsPanelToggle","t5","Symbol","for","borderBottom","zIndex","t6","t7","t8","alignItems","flex","height","justifyContent","position","width","t9","minWidth","t10","t11","t12","t13","t14","whiteSpace","t15","length","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","transform","t31","t32","t33","t34","t35","t36","state","assets","state_0","folders","state_1","state_2","search","facets","state_3","tags","PlugIcon","Box","Flex","Switch","Text","Tooltip","ChangeEvent","useDispatch","useKeyPress","useTypedSelector","debugActions","DebugControls","$","_c","dispatch","badConnection","_temp","debugEnabled","_temp2","t0","e","checked","target","setBadConnection","handleChange","t1","toggleEnabled","handleToggleControls","t2","Symbol","for","bottom","left","pointerEvents","position","width","t3","t4","t5","t6","t7","t8","t9","state","debug","state_0","enabled","Box","Button","Inline","Text","useDispatch","useTypedSelector","foldersActions","selectCurrentFolderSegments","FolderBreadcrumbs","$","_c","dispatch","currentFolderId","_temp","segments","t0","Symbol","for","t1","currentFolderClear","t2","t3","segment","id","currentFolderSet","folderId","name","map","state","folders","Box","FOLDERS_PANEL_WIDTH","useTypedSelector","FolderView","FolderPanel","$","_c","foldersPanelVisible","_temp","t0","Symbol","for","position","width","t1","borderRight","height","left","overflowX","overflowY","top","state","folders","panelVisible","ReactNode","createContext","useContext","useMemo","ContextProps","open","Props","children","DropzoneDispatchContext","undefined","DropzoneDispatchProvider","props","$","_c","t0","contextValue","t1","useDropzoneActions","context","Error","ArrowRightIcon","CloseIcon","UploadIcon","Box","Button","Flex","Inline","Text","pluralize","useAssetSourceActions","useDropzoneActions","useToolOptions","useTypedSelector","Props","onClose","Header","props","$","_c","open","onSelect","assetTypes","_temp","selectedDocument","_temp2","directUploads","t0","Symbol","for","whiteSpace","t1","join","t2","t3","margin","textTransform","_type","t4","t5","length","t6","flexShrink","t7","t8","state","assets","state_0","selected","document","ChevronDownIcon","ChevronUpIcon","Box","Label","useDispatch","useTypedSelector","assetsActions","Props","field","title","TableHeaderItem","props","$","_c","dispatch","order","_temp","isActive","t0","direction","orderSet","handleClick","t1","t2","undefined","t3","t4","cursor","display","whiteSpace","t5","Symbol","for","marginRight","t6","t7","t8","t9","t10","state","assets","Checkbox","Flex","Grid","ThemeColorSchemeKey","useMediaIndex","MouseEvent","useDispatch","useColorSchemeValue","styled","css","GRID_TEMPLATE_COLUMNS","PANEL_HEIGHT","useAssetSourceActions","useTypedSelector","assetsActions","selectAssetsLength","selectAssetsPickedLength","getSchemeColor","TableHeaderItem","ContextActionContainer","$scheme","TableHeader","$","_c","scheme","dispatch","fetching","_temp","itemsLength","numPickedAssets","mediaIndex","onSelect","allSelected","t0","e","stopPropagation","pickClear","pickAll","handleContextActionClick","t1","t2","t3","t4","alignItems","background","borderBottom","gridColumnGap","gridTemplateColumns","LARGE","height","letterSpacing","position","textTransform","top","visibility","width","zIndex","t5","pointerEvents","transform","t10","t11","t12","t13","t6","t7","t8","t9","Symbol","for","t14","state","assets","CheckmarkCircleIcon","EditIcon","WarningFilledIcon","Box","Checkbox","Container","Flex","Grid","Spinner","Text","ThemeColorSchemeKey","useMediaIndex","Tooltip","formatRelative","filesize","memo","MouseEvent","RefObject","useCallback","useEffect","useRef","useState","useDispatch","WithReferringDocuments","useColorSchemeValue","styled","css","GRID_TEMPLATE_COLUMNS","useAssetSourceActions","useKeyPress","useTypedSelector","assetsActions","selectAssetById","dialogActions","getAssetResolution","getSchemeColor","getUniqueDocuments","imageDprUrl","isFileAsset","isImageAsset","FileIcon","Image","REFERENCE_COUNT_VISIBILITY_DELAY","Props","id","selected","ContainerGrid","$selected","$scheme","$updating","ContextActionContainer","StyledWarningIcon","theme","color","sanity","spot","red","TableRowAsset","props","$","_c","scheme","shiftPressed","referenceCountVisible","setReferenceCountVisible","refCountVisibleTimeout","dispatch","lastPicked","_temp","t0","state_0","state","item","mediaIndex","asset","error","isOpaque","metadata","picked","updating","isMultiSelect","onSelect","t1","e","stopPropagation","showAssetEdit","assetId","_id","current","pickRange","startId","endId","pick","handleContextActionClick","t2","e_0","kind","value","handleClick","opacityCell","opacityPreview","t3","t4","Symbol","for","setTimeout","clearTimeout","t5","undefined","t6","t7","SMALL","LARGE","t8","t9","gridColumnGap","gridRowGap","gridTemplateColumns","gridTemplateRows","t10","t11","alignItems","gridColumn","gridRowStart","gridRowEnd","height","justifyContent","opacity","position","t12","flexShrink","pointerEvents","transform","t13","t14","width","t15","t16","t17","extension","t18","t19","t20","left","top","t21","t22","t23","t24","t25","gridRow","t26","lineHeight","t27","originalFilename","t28","t29","t30","t31","t32","t33","t34","t35","t36","t37","t38","display","t39","t40","mimeType","t41","t42","t43","t44","t45","size","base","round","t46","t47","t48","t49","t50","t51","t52","t53","_updatedAt","Date","t54","t55","t56","t57","t58","t59","_temp2","t60","t61","t62","t63","t64","t65","t66","assets","isLoading","referringDocuments","uniqueDocuments","Array","isArray","length","Box","Flex","Grid","Stack","Text","useMediaIndex","useDispatch","useColorSchemeValue","css","styled","GRID_TEMPLATE_COLUMNS","foldersActions","getSchemeColor","Props","folderId","name","totalCount","ContainerGrid","theme","sanity","color","card","enabled","bg","FolderBadge","spot","yellow","TableRowFolder","t0","$","_c","dispatch","mediaIndex","scheme","t1","currentFolderSet","t2","t3","t4","SMALL","LARGE","t5","t6","background","gridColumnGap","gridTemplateColumns","gridTemplateRows","t7","Symbol","for","t8","gridColumn","height","width","t9","t10","t11","t12","gridRow","t13","lineHeight","t14","t15","t16","t17","t18","t19","display","t20","t21","t22","t23","t24","t25","t26","t27","t28","CloseIcon","Box","Button","Flex","Grid","Stack","Text","useMediaIndex","filesize","useDispatch","useColorSchemeValue","GRID_TEMPLATE_COLUMNS","useTypedSelector","selectUploadById","uploadsActions","getSchemeColor","FileIcon","Image","Props","id","TableRowUpload","props","$","_c","scheme","dispatch","t0","state","item","mediaIndex","t1","size","base","round","fileSize","percentLoaded","Math","percent","isComplete","status","isUploading","isQueued","t2","hash","uploadCancel","handleCancelUpload","t3","t4","t5","SMALL","LARGE","t6","t7","alignItems","background","gridColumnGap","gridRowGap","gridTemplateColumns","gridTemplateRows","height","position","t8","t9","bottom","left","width","transform","transformOrigin","transition","t10","t11","t12","gridColumn","gridRowStart","gridRowEnd","t13","Symbol","for","t14","assetType","objectUrl","opacity","t15","t16","top","boxShadow","t17","t18","t19","t20","t21","t22","gridRow","marginLeft","t23","name","t24","t25","t26","t27","Box","memo","GroupedVirtuoso","useTypedSelector","CardAssetData","CardFolderData","CardUploadData","TableHeader","TableRowAsset","TableRowFolder","TableRowUpload","Props","items","onLoadMore","VirtualRow","t0","$","_c","item","selected","type","t1","Symbol","for","height","t2","id","folderId","name","totalCount","AssetTableVirtualized","props","selectedAssets","_temp","map","_temp2","selectedIds","length","index","Array","fill","t3","index_0","item_0","includes","t4","overflowX","t5","_temp3","state","assets","asset","_id","Box","Text","useMediaIndex","useEffect","useDispatch","useTypedSelector","assetsActions","foldersActions","selectCombinedItems","tagsActions","AssetGridVirtualized","AssetTableVirtualized","Items","$","_c","dispatch","fetchCount","_temp","fetching","_temp2","foldersPanelVisible","_temp3","tagsPanelVisible","_temp4","view","_temp5","combinedItems","mediaIndex","hasFetchedOnce","hasItems","length","t0","loadNextPage","handleLoadMoreItems","t1","t2","panelVisibleSet","panelVisible","isEmpty","t3","Symbol","for","width","t4","state","assets","state_0","state_1","folders","state_2","tags","state_3","Box","Button","Flex","Label","pluralize","useDispatch","useColorSchemeValue","PANEL_HEIGHT","useAssetSourceActions","useTypedSelector","assetsActions","selectAssetsPicked","dialogActions","DIALOG_ACTIONS","getSchemeColor","isImageAsset","PickedBar","$","_c","scheme","dispatch","assetsPicked","currentFolderId","_temp","isMultiSelect","onSelect","t0","length","asset","canReplace","t1","pickClear","handlePickClear","t2","showConfirmDeleteAssets","assets","handleDeletePicked","t3","_id","assetId","showAllAssetsDialog","handleReplaceImages","t4","showFolderMove","folderId","handleMovePicked","t5","folderSetRequest","handleRemovePickedFromFolder","t6","pickedAssetIds","map","_temp2","handleInsertPicked","t7","t8","background","borderBottom","height","position","width","t9","Symbol","for","color","t10","t11","t12","t13","boxShadow","t14","t15","t16","t17","t18","t19","t20","state","folders","item","kind","const","value","Box","TAGS_PANEL_WIDTH","useTypedSelector","TagView","TagsPanel","$","_c","tagsPanelVisible","_temp","t0","Symbol","for","position","width","t1","borderLeft","height","overflowX","overflowY","right","top","state","tags","panelVisible","white","Flex","Text","ReactNode","DropEvent","DropzoneOptions","useDropzone","useDispatch","styled","useAssetSourceActions","DropzoneDispatchProvider","useToolOptions","useTypedSelector","notificationsActions","uploadsActions","Props","children","UploadContainer","div","DragActiveContainer","filterFiles","fileList","FileList","files","Array","from","filteredFiles","File","file","slice","arrayBuffer","push","UploadDropzone","props","$","_c","dropzone","t0","directUploads","maxSize","onSelect","dispatch","assetTypes","_temp","isImageAssetType","length","t1","acceptedFiles","forEach","uploadRequest","forceAsAssetType","undefined","handleDrop","t2","rejections","errorCodes","flatMap","_temp3","includes","add","status","title","handleDropRejected","t3","event","type","dataTransfer","target","HTMLInputElement","handleFileGetter","t4","t5","t6","t7","accept","getFilesFromEvent","noClick","noDrag","onDrop","onDropRejected","disabled","getRootProps","getInputProps","isDragActive","open","t8","t9","t10","t11","color","hex","t12","t13","state","assets","_temp2","code","errors","map","MutationEvent","SanityClient","groq","useEffect","useDispatch","useSelector","Dispatch","AssetSourceComponentProps","inputs","FOLDER_DOCUMENT_NAME","TAG_DOCUMENT_NAME","assetsActions","foldersActions","searchActions","tagsActions","RootReducerState","Asset","Tag","getMediaTagNames","schemaType","mediaTags","options","length","unique","Set","map","t","trim","filter","Boolean","Array","from","createAssetHandler","dispatch","update","documentId","result","transition","listenerCreateQueue","asset","listenerDeleteQueue","assetId","listenerUpdateQueue","createTagHandler","tag","tagId","useBrowserInit","client","tagsByIds","state","tags","byIds","tagsFetchCount","fetchCount","tagNames","hasMediaTags","facetsClear","fetchRequest","assetSubscription","listen","subscribe","tagSubscription","folderSubscription","unsubscribe","tagFacetInput","type","resolvedTags","name","Object","values","find","item","current","NonNullable","tagItem","facetsAdd","facet","operatorType","value","label","_id","Card","Flex","PortalProvider","useState","AssetSourceComponentProps","SanityDocument","AssetBrowserDispatchProvider","useToolOptions","useVersionedClient","GlobalStyle","Controls","DebugControls","Dialogs","FolderBreadcrumbs","FolderPanel","Header","Items","Notifications","PickedBar","ReduxProvider","TagsPanel","UploadDropzone","useBrowserInit","Props","assetType","document","isMultiSelect","onClose","onSelect","selectedAssets","schemaType","BrowserContent","t0","$","_c","client","portalElement","setPortalElement","t1","t2","Symbol","for","t3","t4","t5","t6","t7","t8","position","t9","t10","Browser","props","excludeTagSlugs","Box","Portal","PortalProvider","useLayer","SyntheticEvent","AssetSourceComponentProps","SanityDocument","useFormValue","useKeyPress","useRootPortalElement","Browser","FormBuilderTool","props","$","_c","onClose","portalElement","t0","Symbol","for","currentDocument","selectionType","schemaJsonType","schemaType","jsonType","isMultiSelect","handleStopPropagation","_temp","zIndex","t1","bottom","height","left","position","top","width","t2","t3","t4","event","nativeEvent","stopImmediatePropagation","stopPropagation","Flex","Browser","Tool","$","_c","t0","Symbol","for","FolderIcon","FOLDER_DOCUMENT_NAME","title","icon","name","type","fields","to","weak","preview","select","parentName","prepare","selection","media","subtitle","undefined","TagIcon","TAG_DOCUMENT_NAME","title","icon","name","type","fields","preview","select","prepare","selection","media","current","EditIcon","ImageIcon","AssetSource","Tool","SanityTool","definePlugin","EditAssetTool","FormBuilderTool","ToolOptionsProvider","mediaFolder","mediaTag","MediaToolOptions","plugin","icon","name","title","mediaAssetSource","component","editMediaAssetSource","tool","__internalApplicationType","media","options","studio","components","layout","props","renderDefault","form","file","assetSources","prev","image","schema","types","tools","SanityClient","groq","nanoid","TAG_DOCUMENT_NAME","Tag","ApplyMediaTagsOptions","client","assetId","mediaTags","createTagsOnUpload","pendingByAsset","Map","Promise","applyMediaTags","options","chain","get","resolve","then","doApplyMediaTags","cleanup","catch","finally","delete","set","length","resolvedTags","all","map","tagName","existingTag","fetch","newTag","create","_type","name","current","validTags","filter","tag","existing","tagIds","useCdn","existingIds","Set","tagReferences","has","_id","_key","_ref","const","_weak","patch","setIfMissing","opt","append","commit","useToast","useEffect","useRef","InputProps","useToolOptions","useVersionedClient","applyMediaTags","AssetValue","_type","asset","_ref","AutoTagInputProps","mediaTags","AutoTagInput","props","$","_c","renderDefault","schemaType","value","mediaTagsProp","toast","options","client","createTagsOnUpload","prevAssetRef","undefined","isInitialMount","currentAssetRef","t0","t1","current","previousRef","length","assetId","catch","err","console","error","label","push","closable","status","title","join","t2","t3","FieldDefinitionBase","FileDefinition","ImageDefinition","WidenInitialValue","WidenValidation","AutoTagInput","ImageMediaFieldConfig","Omit","name","mediaTags","options","FileMediaFieldConfig","ImageMediaFieldResult","components","input","FileMediaFieldResult","mediaField","config","rest","Record"],"sources":["../src/contexts/AssetSourceDispatchContext.tsx","../src/hooks/useRootPortalElement.ts","../src/hooks/useTypedSelector.ts","../src/hooks/useVersionedClient.ts","../src/config/orders.ts","../src/config/searchFacets.ts","../src/constants.ts","../src/operators/debugThrottle.ts","../src/utils/constructFilter.ts","../src/utils/ReplaceImages.ts","../src/operators/checkTagName.ts","../src/utils/getTagSelectOptions.ts","../src/modules/assets/actions.ts","../src/modules/dialog/actions.ts","../src/modules/tags/index.ts","../src/modules/search/index.ts","../src/modules/uploads/actions.ts","../src/modules/assets/index.ts","../src/modules/folders/index.ts","../src/modules/dialog/index.ts","../src/styled/GlobalStyles/index.tsx","../src/contexts/ToolOptionsContext.tsx","../src/formSchema/index.ts","../src/utils/getUniqueDocuments.ts","../src/utils/imageDprUrl.ts","../src/utils/sanitizeFormData.ts","../src/utils/typeGuards.ts","../src/utils/zodFormResolver.ts","../src/utils/getAssetResolution.ts","../src/hooks/usePortalPopoverProps.ts","../src/components/ButtonAssetCopy/index.tsx","../src/components/AssetMetadata/index.tsx","../src/components/Dialog/index.tsx","../src/components/DocumentList/index.tsx","../src/components/FileIcon/index.tsx","../src/components/FileAssetPreview/index.tsx","../src/components/FormSubmitButton/index.tsx","../src/utils/getSchemeColor.ts","../src/components/Image/index.tsx","../src/components/FormFieldInputLabel/index.tsx","../src/styled/react-select/creatable.tsx","../src/components/FormFieldInputTags/index.tsx","../src/components/FormFieldInputText/index.tsx","../src/components/FormFieldInputTextarea/index.tsx","../src/components/DialogAssetEdit/Details.tsx","../src/components/DialogAssetEdit/index.tsx","../src/modules/selectors.ts","../src/hooks/useKeyPress.ts","../src/components/CardAsset/index.tsx","../src/components/CardFolder/index.tsx","../src/utils/generatePreviewBlobUrl.ts","../src/utils/withMaxConcurrency.ts","../src/utils/uploadSanityAsset.ts","../src/modules/uploads/index.ts","../src/components/CardUpload/index.tsx","../src/components/AssetGridVirtualized/index.tsx","../src/components/ReplaceAssetsOverView/index.tsx","../src/components/DialogAssetsOverView/index.tsx","../src/components/DialogConfirm/index.tsx","../src/components/DialogFolderCreate/index.tsx","../src/components/DialogFolderMove/index.tsx","../src/components/DialogFolderRename/index.tsx","../src/components/FolderView/index.tsx","../src/components/DialogFolders/index.tsx","../src/components/SearchFacet/index.tsx","../src/components/TextInputNumber/index.tsx","../src/components/SearchFacetNumber/index.tsx","../src/components/SearchFacetSelect/index.tsx","../src/components/SearchFacetString/index.tsx","../src/styled/react-select/single.tsx","../src/components/SearchFacetTags/index.tsx","../src/components/SearchFacets/index.tsx","../src/components/SearchFacetsControl/index.tsx","../src/components/DialogSearchFacets/index.tsx","../src/components/DialogTagCreate/index.tsx","../src/components/DialogTagEdit/index.tsx","../src/components/Tag/index.tsx","../src/components/TagsVirtualized/index.tsx","../src/components/TagViewHeader/index.tsx","../src/components/TagView/index.tsx","../src/components/DialogTags/index.tsx","../src/components/Dialogs/index.tsx","../src/components/Notifications/index.tsx","../src/modules/debug/index.ts","../src/modules/notifications/index.ts","../src/modules/selected/index.ts","../src/modules/index.ts","../src/utils/getDocumentAssetIds.ts","../src/utils/isSupportedAssetType.ts","../src/components/ReduxProvider/index.tsx","../src/components/EditAssetTool/index.tsx","../src/components/ButtonViewGroup/index.tsx","../src/components/OrderSelect/index.tsx","../src/components/Progress/index.tsx","../src/components/TagIcon/index.tsx","../src/components/TextInputSearch/index.tsx","../src/components/Controls/index.tsx","../src/components/DebugControls/index.tsx","../src/components/FolderBreadcrumbs/index.tsx","../src/components/FolderPanel/index.tsx","../src/contexts/DropzoneDispatchContext.tsx","../src/components/Header/index.tsx","../src/components/TableHeaderItem/index.tsx","../src/components/TableHeader/index.tsx","../src/components/TableRowAsset/index.tsx","../src/components/TableRowFolder/index.tsx","../src/components/TableRowUpload/index.tsx","../src/components/AssetTableVirtualized/index.tsx","../src/components/Items/index.tsx","../src/components/PickedBar/index.tsx","../src/components/TagsPanel/index.tsx","../src/components/UploadDropzone/index.tsx","../src/components/Browser/useBrowserInit.ts","../src/components/Browser/index.tsx","../src/components/FormBuilderTool/index.tsx","../src/components/Tool/index.tsx","../src/schemas/folder.ts","../src/schemas/tag.ts","../src/plugin.tsx","../src/utils/applyMediaTags.ts","../src/components/AutoTagInputWrapper/index.tsx","../src/utils/mediaField.ts"],"sourcesContent":["import {type ReactNode, createContext, useContext, useMemo} from 'react'\nimport type {AssetSourceComponentProps} from 'sanity'\n\ntype ContextProps = {\n  isMultiSelect: boolean\n  onSelect?: AssetSourceComponentProps['onSelect']\n}\n\ntype Props = {\n  children: ReactNode\n  isMultiSelect?: boolean\n  onSelect?: AssetSourceComponentProps['onSelect']\n}\n\nconst AssetSourceDispatchContext = createContext<ContextProps | undefined>(undefined)\n\nexport const AssetBrowserDispatchProvider = (props: Props) => {\n  const {children, isMultiSelect = false, onSelect} = props\n\n  const contextValue: ContextProps = useMemo(\n    () => ({\n      isMultiSelect,\n      onSelect,\n    }),\n    [isMultiSelect, onSelect],\n  )\n\n  return (\n    <AssetSourceDispatchContext.Provider value={contextValue}>\n      {children}\n    </AssetSourceDispatchContext.Provider>\n  )\n}\n\nexport const useAssetSourceActions = () => {\n  const context = useContext(AssetSourceDispatchContext)\n  if (context === undefined) {\n    throw new Error('useAssetSourceActions must be used within an AssetSourceDispatchProvider')\n  }\n  return context\n}\n","import {useEffect, useState} from 'react'\n\n/**\n * Creates a detached `.media-portal` element appended to `document.body` for the\n * lifetime of the component, used as a portal target for the plugin's dialogs\n * and overlays. The element is removed on unmount.\n */\nconst useRootPortalElement = (): HTMLDivElement => {\n  const [container] = useState(() => document.createElement('div'))\n\n  useEffect(() => {\n    container.classList.add('media-portal')\n    document.body.appendChild(container)\n    return () => {\n      document.body.removeChild(container)\n    }\n  }, [container])\n\n  return container\n}\n\nexport default useRootPortalElement\n","import {type TypedUseSelectorHook, useSelector} from 'react-redux'\n\nimport type {RootReducerState} from '../modules/types'\n\nconst useTypedSelector: TypedUseSelectorHook<RootReducerState> = useSelector\n\nexport default useTypedSelector\n","import type {SanityClient} from '@sanity/client'\nimport {useClient} from 'sanity'\n\nconst useVersionedClient = (): SanityClient => useClient({apiVersion: '2025-10-02'})\n\nexport default useVersionedClient\n","import type {OrderDirection} from '../types'\n\nconst ORDER_DICTIONARY: Record<string, {asc: string; desc: string}> = {\n  _createdAt: {\n    asc: 'Last created: Oldest first',\n    desc: 'Last created: Newest first',\n  },\n  _updatedAt: {\n    asc: 'Last updated: Oldest first',\n    desc: 'Last updated: Newest first',\n  },\n  mimeType: {\n    asc: 'MIME type: A to Z',\n    desc: 'MIME type: Z to A',\n  },\n  originalFilename: {\n    asc: 'File name: A to Z',\n    desc: 'File name: Z to A',\n  },\n  size: {\n    asc: 'File size: Smallest first',\n    desc: 'File size: Largest first',\n  },\n}\n\nexport const getOrderTitle = (field: string, direction: OrderDirection): string => {\n  return ORDER_DICTIONARY[field]![direction]\n}\n","import groq from 'groq'\n\nimport type {\n  SearchFacetDivider,\n  SearchFacetInputProps,\n  SearchFacetName,\n  SearchFacetOperators,\n} from '../types'\n\nexport const divider: SearchFacetDivider = {type: 'divider'}\n\nexport const inputs: Record<SearchFacetName, SearchFacetInputProps> = {\n  altText: {\n    assetTypes: ['file', 'image'],\n    field: 'altText',\n    name: 'altText',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Alt text',\n    type: 'string',\n    value: '',\n  },\n  creditLine: {\n    assetTypes: ['file', 'image'],\n    field: 'creditLine',\n    name: 'creditLine',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Credit',\n    type: 'string',\n    value: '',\n  },\n  description: {\n    assetTypes: ['file', 'image'],\n    field: 'description',\n    name: 'description',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Description',\n    type: 'string',\n    value: '',\n  },\n  folder: {\n    assetTypes: ['file', 'image'],\n    field: 'opt.media.folder._ref',\n    name: 'folder',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty'],\n    title: 'Folder',\n    type: 'string',\n    value: '',\n  },\n  fileName: {\n    assetTypes: ['file', 'image'],\n    field: 'originalFilename',\n    name: 'filename',\n    operatorType: 'includes',\n    operatorTypes: ['includes', 'doesNotInclude'],\n    title: 'File name',\n    type: 'string',\n    value: '',\n  },\n  height: {\n    assetTypes: ['image'],\n    field: 'metadata.dimensions.height',\n    name: 'height',\n    operatorType: 'greaterThan',\n    operatorTypes: [\n      'greaterThan',\n      'greaterThanOrEqualTo',\n      'lessThan',\n      'lessThanOrEqualTo',\n      null,\n      'equalTo',\n    ],\n    title: 'Height',\n    type: 'number',\n    value: 400,\n  },\n  inCurrentDocument: {\n    assetTypes: ['file', 'image'],\n    name: 'inCurrentDocument',\n    operatorType: 'is',\n    options: [\n      {\n        name: 'true',\n        title: 'True',\n        value: groq`_id in $documentAssetIds`,\n      },\n      {\n        name: 'false',\n        title: 'False',\n        value: groq`!(_id in $documentAssetIds)`,\n      },\n    ],\n    selectOnly: true,\n    title: 'In use in current document',\n    type: 'select',\n    value: 'true',\n  },\n  inUse: {\n    assetTypes: ['file', 'image'],\n    name: 'inUse',\n    operatorType: 'is',\n    options: [\n      {\n        name: 'true',\n        title: 'True',\n        value: groq`count(*[references(^._id)]) > 0`,\n      },\n      {\n        name: 'false',\n        title: 'False',\n        value: groq`count(*[references(^._id)]) == 0`,\n      },\n    ],\n    title: 'In use',\n    type: 'select',\n    value: 'true',\n  },\n  isOpaque: {\n    assetTypes: ['image'],\n    field: 'metadata.isOpaque',\n    name: 'isOpaque',\n    operatorType: 'equalTo',\n    options: [\n      {\n        name: 'true',\n        title: 'True',\n        value: `false`,\n      },\n      {\n        name: 'false',\n        title: 'False',\n        value: `true`,\n      },\n    ],\n    title: 'Has transparency',\n    type: 'select',\n    value: 'true',\n  },\n  orientation: {\n    assetTypes: ['image'],\n    name: 'orientation',\n    operatorType: 'is',\n    operatorTypes: ['is', 'isNot'],\n    options: [\n      {\n        name: 'portrait',\n        title: 'Portrait',\n        value: 'metadata.dimensions.aspectRatio < 1',\n      },\n      {\n        name: 'landscape',\n        title: 'Landscape',\n        value: 'metadata.dimensions.aspectRatio > 1',\n      },\n      {\n        name: 'square',\n        title: 'Square',\n        value: 'metadata.dimensions.aspectRatio == 1',\n      },\n    ],\n    title: 'Orientation',\n    type: 'select',\n    value: 'portrait',\n  },\n  size: {\n    assetTypes: ['file', 'image'],\n    field: 'size',\n    modifier: 'kb',\n    modifiers: [\n      {\n        name: 'kb',\n        title: 'KB',\n        fieldModifier: (fieldName) => `round(${fieldName} / 1000)`,\n      },\n      {\n        name: 'mb',\n        title: 'MB',\n        fieldModifier: (fieldName) => `round(${fieldName} / 1000000)`,\n      },\n    ],\n    name: 'size',\n    operatorType: 'greaterThan',\n    operatorTypes: [\n      'greaterThan',\n      'greaterThanOrEqualTo',\n      'lessThan',\n      'lessThanOrEqualTo',\n      null,\n      'equalTo',\n    ],\n    title: 'File size',\n    type: 'number',\n    value: 0,\n  },\n  tag: {\n    assetTypes: ['file', 'image'],\n    field: 'opt.media.tags',\n    name: 'tag',\n    operatorType: 'references',\n    operatorTypes: ['references', 'doesNotReference', null, 'empty', 'notEmpty'],\n    title: 'Tags',\n    type: 'searchable',\n  },\n  title: {\n    assetTypes: ['file', 'image'],\n    field: 'title',\n    name: 'title',\n    operatorType: 'empty',\n    operatorTypes: ['empty', 'notEmpty', null, 'includes', 'doesNotInclude'],\n    title: 'Title',\n    type: 'string',\n    value: '',\n  },\n  type: {\n    assetTypes: ['file', 'image'],\n    name: 'type',\n    operatorType: 'is',\n    operatorTypes: ['is', 'isNot'],\n    options: [\n      {\n        name: 'image',\n        title: 'Image',\n        value: 'mimeType match \"image*\"',\n      },\n      {\n        name: 'video',\n        title: 'Video',\n        value: 'mimeType match \"video*\"',\n      },\n      {\n        name: 'audio',\n        title: 'Audio',\n        value: 'mimeType match \"audio*\"',\n      },\n      {\n        name: 'pdf',\n        title: 'PDF',\n        value: 'mimeType == \"application/pdf\"',\n      },\n    ],\n    title: 'File type',\n    type: 'select',\n    value: 'image',\n  },\n  width: {\n    assetTypes: ['image'],\n    field: 'metadata.dimensions.width',\n    name: 'width',\n    operatorType: 'greaterThan',\n    operatorTypes: [\n      'greaterThan',\n      'greaterThanOrEqualTo',\n      'lessThan',\n      'lessThanOrEqualTo',\n      null,\n      'equalTo',\n    ],\n    title: 'Width',\n    type: 'number',\n    value: 400,\n  },\n}\n\nexport const operators: SearchFacetOperators = {\n  doesNotInclude: {\n    fn: (value, field) => (value ? `!(${field} match '*${value}*')` : undefined),\n    label: 'does not include',\n  },\n  doesNotReference: {\n    fn: (value, _field) => (value ? `!references('${value}')` : undefined),\n    label: 'does not include',\n  },\n  empty: {\n    fn: (_value, field) => `!defined(${field})`,\n    hideInput: true,\n    label: 'is empty',\n  },\n  equalTo: {\n    fn: (value, field) => (value ? `${field} == ${value}` : undefined),\n    label: 'is equal to',\n  },\n  greaterThan: {\n    fn: (value, field) => (value ? `${field} > ${value}` : undefined),\n    label: 'is greater than',\n  },\n  greaterThanOrEqualTo: {\n    fn: (value, field) => (value ? `${field} >= ${value}` : undefined),\n    label: 'is greater than or equal to',\n  },\n  includes: {\n    fn: (value, field) => (value ? `${field} match '*${value}*'` : undefined),\n    label: 'includes',\n  },\n  is: {\n    fn: (value, _field) => `${value}`,\n    label: 'is',\n  },\n  isNot: {\n    fn: (value, _field) => `!(${value})`,\n    label: 'is not',\n  },\n  lessThan: {\n    fn: (value, field) => (value ? `${field} < ${value}` : undefined),\n    label: 'is less than',\n  },\n  lessThanOrEqualTo: {\n    fn: (value, field) => (value ? `${field} <= ${value}` : undefined),\n    label: 'is less than or equal to',\n  },\n  notEmpty: {\n    fn: (_value, field) => `defined(${field})`,\n    hideInput: true,\n    label: 'is not empty',\n  },\n  references: {\n    fn: (value, _field) => (value ? `references('${value}')` : undefined),\n    label: 'includes',\n  },\n}\n","import type {AssetSourceComponentProps} from 'sanity'\n\nimport {divider, inputs} from './config/searchFacets'\nimport type {\n  SearchFacetInputProps,\n  SearchFacetDivider,\n  SearchFacetGroup,\n  OrderDirection,\n} from './types'\n\nexport const SUPPORTED_ASSET_TYPES = [\n  'file',\n  'image',\n] as const satisfies AssetSourceComponentProps['assetType'][]\n\n// Sort order dropdown options\n// null values are represented as menu dividers\nexport const ORDER_OPTIONS: ({direction: OrderDirection; field: string} | null)[] = [\n  {\n    direction: 'desc',\n    field: '_createdAt',\n  },\n  {\n    direction: 'asc',\n    field: '_createdAt',\n  },\n  // Divider\n  null,\n  {\n    direction: 'desc',\n    field: '_updatedAt',\n  },\n  {\n    direction: 'asc' as OrderDirection,\n    field: '_updatedAt',\n  },\n  // Divider\n  null,\n  {\n    direction: 'asc',\n    field: 'originalFilename',\n  },\n  {\n    direction: 'desc',\n    field: 'originalFilename',\n  },\n  // Divider\n  null,\n  {\n    direction: 'desc',\n    field: 'size',\n  },\n  {\n    direction: 'asc',\n    field: 'size',\n  },\n]\n\nexport const FACETS: (SearchFacetDivider | SearchFacetGroup | SearchFacetInputProps)[] = [\n  inputs.tag,\n  divider,\n  inputs.inUse,\n  inputs.inCurrentDocument,\n  divider,\n  inputs.title,\n  inputs.folder,\n  inputs.altText,\n  inputs.creditLine,\n  inputs.description,\n  divider,\n  inputs.isOpaque,\n  divider,\n  inputs.fileName,\n  inputs.size,\n  inputs.type,\n  divider,\n  inputs.orientation,\n  inputs.width,\n  inputs.height,\n]\n\nexport const GRID_TEMPLATE_COLUMNS = {\n  SMALL: '3rem 100px auto 1.5rem',\n  LARGE: '3rem 100px auto 5.5rem 5.5rem 3.5rem 8.5rem 4.75rem 2rem',\n}\nexport const FOLDERS_PANEL_WIDTH = 260 // px\nexport const FOLDER_DOCUMENT_NAME = 'media.folder'\nexport const PANEL_HEIGHT = 32 // px\nexport const TAG_DOCUMENT_NAME = 'media.tag'\nexport const TAGS_PANEL_WIDTH = 250 // px\n","import {iif, type Observable, of, throwError} from 'rxjs'\nimport {delay, mergeMap} from 'rxjs/operators'\n\nconst debugThrottle = (throttled?: boolean) => {\n  return function <T>(source: Observable<T>): Observable<T> {\n    return iif(\n      () => !!throttled,\n      source.pipe(\n        delay(3000),\n        mergeMap((v) => {\n          if (Math.random() > 0.5) {\n            return throwError({\n              message: 'Test error',\n              statusCode: 500,\n            })\n          }\n          return of(v)\n        }),\n      ),\n      source,\n    )\n  }\n}\n\nexport default debugThrottle\n","import groq from 'groq'\n\nimport {operators} from '../config/searchFacets'\nimport {TAG_DOCUMENT_NAME} from '../constants'\nimport type {AssetType, SearchFacetInputProps} from '../types'\n\n/** GROQ fragment that excludes assets tagged with any of the given media.tag slugs. */\nexport const buildExcludeTagsFragment = (excludeTagSlugs?: string[]): string | undefined => {\n  const serializedExcludeTagSlugs = excludeTagSlugs?.length\n    ? JSON.stringify(excludeTagSlugs)\n    : undefined\n\n  return serializedExcludeTagSlugs\n    ? groq`!(defined(opt.media.tags) && count(opt.media.tags[@._ref in *[_type == \"${TAG_DOCUMENT_NAME}\" && name.current in ${serializedExcludeTagSlugs}]._id]) > 0)`\n    : undefined\n}\n\nconst constructFilter = ({\n  assetTypes,\n  currentFolderId,\n  excludeTagSlugs,\n  searchFacets,\n  searchQuery,\n}: {\n  assetTypes: AssetType[]\n  currentFolderId?: string | null\n  excludeTagSlugs?: string[]\n  searchFacets: SearchFacetInputProps[]\n  searchQuery?: string\n}): string => {\n  // Fetch asset types depending on current context.\n  // Either limit to a specific type (if being used as a custom asset source) or fetch both files and images (if being used as a tool)\n  // Sanity will crash if you try and insert incompatible asset types into fields!\n  const documentAssetTypes = assetTypes.map((type) => `sanity.${type}Asset`)\n\n  const baseFilter = groq`\n    _type in ${JSON.stringify(documentAssetTypes)} && !(_id in path(\"drafts.**\"))\n  `\n\n  const excludeTagsFragment = buildExcludeTagsFragment(excludeTagSlugs)\n\n  const searchFacetFragments = searchFacets.reduce((acc: string[], facet) => {\n    if (facet.type === 'number') {\n      const {field, modifier, modifiers, operatorType, value} = facet\n      const operator = operators[operatorType]\n\n      // Get current modifier\n      const currentModifier = modifiers?.find((m) => m.name === modifier)\n\n      // Apply field modifier function (if present)\n      const facetField = currentModifier?.fieldModifier\n        ? currentModifier.fieldModifier(field)\n        : field\n\n      const fragment = operator.fn(value, facetField)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    if (facet.type === 'searchable') {\n      const {field, operatorType, value} = facet\n      const operator = operators[operatorType]\n\n      const fragment = operator.fn(value?.value, field)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    if (facet.type === 'select') {\n      const {field, operatorType, options, value} = facet\n      const operator = operators[operatorType]\n\n      const currentOptionValue = options?.find((l) => l.name === value)?.value\n\n      const fragment = operator.fn(currentOptionValue, field)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    if (facet.type === 'string') {\n      const {field, operatorType, value} = facet\n      const operator = operators[operatorType]\n\n      const fragment = operator.fn(value, field)\n      if (fragment) {\n        acc.push(fragment)\n      }\n    }\n\n    return acc\n  }, [])\n\n  // All assets (no folder selected) should not apply a folder filter. A specific\n  // folder shows only assets pointing at it.\n  const folderFilter: string | undefined = currentFolderId\n    ? `opt.media.folder._ref == ${JSON.stringify(currentFolderId)}`\n    : undefined\n\n  // Join separate filter fragments\n  const constructedQuery = [\n    // Base filter\n    baseFilter,\n    ...(excludeTagsFragment ? [excludeTagsFragment] : []),\n    // Search query (if present)\n    // NOTE: Currently this only searches direct fields on sanity.fileAsset/sanity.imageAsset and NOT referenced tags\n    // It's possible to add this by adding the following line to the searchQuery, but it's quite slow\n    // references(*[_type == \"media.tag\" && name.current == \"${searchQuery.trim()}\"]._id)\n    ...(searchQuery\n      ? [\n          groq`[_id, altText, assetId, creditLine, description, originalFilename, title, url] match '*${searchQuery.trim()}*'`,\n        ]\n      : []),\n    ...(folderFilter ? [folderFilter] : []),\n    // Search facets\n    ...searchFacetFragments,\n  ].join(' && ')\n\n  return constructedQuery\n}\n\nexport default constructFilter\n","import type {Asset} from '../types'\n\ntype AssetRef = {\n  _ref?: unknown\n  _type?: unknown\n}\n\ntype ImageNode = {\n  _type?: unknown\n  asset?: AssetRef\n}\n\n/**\n * Re-points every image asset in `document` that references `assetToReplaceId`\n * at `newAsset`, mutating the document in place, and returns one patch object\n * per affected top-level field in the form `{[field]: <full mutated field value>}`.\n *\n * Each patch carries the entire (mutated) top-level field value rather than just\n * the matched image node, so `client.patch().set()` updates the references\n * without discarding sibling data — including deeply nested image fields.\n *\n * NOTE: ported from sanity-plugin-media#236. Because of GROQ limitations the\n * matching image objects are filtered out of the document manually rather than\n * via a projection.\n */\nexport function findImageAssets(\n  document: Record<string, unknown>,\n  newAsset: Asset,\n  assetToReplaceId: string,\n): Record<string, unknown>[] {\n  const matchedTopLevelFields = new Set<string>()\n  repointNestedImages(document, newAsset, assetToReplaceId, '', matchedTopLevelFields)\n  return [...matchedTopLevelFields].map((field) => ({[field]: document[field]}))\n}\n\nfunction repointNestedImages(\n  node: unknown,\n  newAsset: Asset,\n  assetToReplaceId: string,\n  topLevelField: string,\n  matchedTopLevelFields: Set<string>,\n): void {\n  if (typeof node !== 'object' || node === null) {\n    return\n  }\n\n  const candidate = node as ImageNode\n  // Match built-in `image` nodes and custom image schema types (e.g. `mainImage`),\n  // which store their type name in `_type` rather than `\"image\"`. Skip file fields.\n  const assetRef = candidate.asset\n  const hasMatchingAssetRef = assetRef?._type === 'reference' && assetRef._ref === assetToReplaceId\n  if (hasMatchingAssetRef && candidate._type !== 'file' && assetRef) {\n    assetRef._ref = newAsset._id\n    if (topLevelField) {\n      matchedTopLevelFields.add(topLevelField)\n    }\n  }\n\n  for (const [key, value] of Object.entries(node as Record<string, unknown>)) {\n    if (typeof value === 'object' && value !== null) {\n      // Once we descend past the document root, keep attributing matches to the\n      // top-level field so the patch replaces that whole field.\n      repointNestedImages(\n        value,\n        newAsset,\n        assetToReplaceId,\n        topLevelField || key,\n        matchedTopLevelFields,\n      )\n    }\n  }\n}\n","import type {SanityClient} from '@sanity/client'\nimport groq from 'groq'\nimport {from, Observable, of, throwError} from 'rxjs'\nimport {mergeMap} from 'rxjs/operators'\n\nimport {TAG_DOCUMENT_NAME} from '../constants'\nimport type {HttpError} from '../types'\n\nconst checkTagName = (client: SanityClient, name: string) => {\n  return function <T>(source: Observable<T>): Observable<boolean> {\n    return source.pipe(\n      mergeMap(() => {\n        return from(\n          client.fetch(groq`count(*[_type == \"${TAG_DOCUMENT_NAME}\" && name.current == $name])`, {\n            name,\n          }),\n        ) as Observable<number>\n      }),\n      mergeMap((existingTagCount: number) => {\n        if (existingTagCount > 0) {\n          return throwError({\n            message: 'Tag already exists',\n            statusCode: 409,\n          } satisfies HttpError)\n        }\n\n        return of(true)\n      }),\n    )\n  }\n}\n\nexport default checkTagName\n","import type {TagSelectOption, TagItem} from '../types'\n\nconst getTagSelectOptions = (tags: TagItem[]): TagSelectOption[] => {\n  return tags.reduce((acc: TagSelectOption[], val) => {\n    const tag = val?.tag\n    if (tag) {\n      acc.push({\n        label: tag?.name?.current,\n        value: tag?._id,\n      })\n    }\n    return acc\n  }, [])\n}\n\nexport default getTagSelectOptions\n","import {createAction} from '@reduxjs/toolkit'\n\nimport type {AssetItem, HttpError, Tag} from '../../types'\n\nexport const ASSETS_ACTIONS = {\n  tagsAddComplete: createAction(\n    'actions/tagsAddComplete',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n  tagsAddError: createAction(\n    'actions/tagsAddError',\n    function prepare({assets, error, tag}: {assets: AssetItem[]; error: HttpError; tag: Tag}) {\n      return {payload: {assets, error, tag}}\n    },\n  ),\n  tagsAddRequest: createAction(\n    'actions/tagsAddRequest',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n  tagsRemoveComplete: createAction(\n    'actions/tagsRemoveComplete',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n  tagsRemoveError: createAction(\n    'actions/tagsRemoveError',\n    function prepare({assets, error, tag}: {assets: AssetItem[]; error: HttpError; tag: Tag}) {\n      return {payload: {assets, error, tag}}\n    },\n  ),\n  tagsRemoveRequest: createAction(\n    'actions/tagsRemoveRequest',\n    function prepare({assets, tag}: {assets: AssetItem[]; tag: Tag}) {\n      return {payload: {assets, tag}}\n    },\n  ),\n}\n","import {createAction} from '@reduxjs/toolkit'\n\nimport type {AssetItem} from '../../types'\n\nexport const DIALOG_ACTIONS = {\n  showFolderCreate: createAction(\n    'dialog/showFolderCreate',\n    function prepare({parentFolderId}: {parentFolderId?: string | null} = {}) {\n      return {\n        payload: {parentFolderId},\n      }\n    },\n  ),\n  showFolderMove: createAction(\n    'dialog/showFolderMove',\n    function prepare({assets, folderId}: {assets: AssetItem[]; folderId?: string | null}) {\n      return {\n        payload: {assets, folderId},\n      }\n    },\n  ),\n  showFolderRename: createAction(\n    'dialog/showFolderRename',\n    function prepare({folderId}: {folderId: string}) {\n      return {\n        payload: {folderId},\n      }\n    },\n  ),\n  showTagCreate: createAction('dialog/showTagCreate'),\n  showTagEdit: createAction('dialog/showTagEdit', function prepare({tagId}: {tagId: string}) {\n    return {\n      payload: {tagId},\n    }\n  }),\n}\n","import {createSelector, createSlice, isAnyOf, type PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, Transaction} from '@sanity/client'\nimport groq from 'groq'\nimport type {Selector} from 'react-redux'\nimport {ofType} from 'redux-observable'\nimport {from, Observable, of} from 'rxjs'\nimport {bufferTime, catchError, filter, mergeMap, switchMap, withLatestFrom} from 'rxjs/operators'\n\nimport {TAG_DOCUMENT_NAME} from '../../constants'\nimport checkTagName from '../../operators/checkTagName'\nimport debugThrottle from '../../operators/debugThrottle'\nimport type {Asset, HttpError, MyEpic, TagSelectOption, Tag, TagItem} from '../../types'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {DIALOG_ACTIONS} from '../dialog/actions'\nimport type {RootReducerState} from '../types'\n\ntype TagsReducerState = {\n  allIds: string[]\n  byIds: Record<string, TagItem>\n  creating: boolean\n  creatingError?: HttpError\n  fetchCount: number\n  fetching: boolean\n  fetchingError?: HttpError\n  // totalCount: number\n  panelVisible: boolean\n}\n\nconst initialState = {\n  allIds: [],\n  byIds: {},\n  creating: false,\n  creatingError: undefined,\n  fetchCount: -1,\n  fetching: false,\n  fetchingError: undefined,\n  panelVisible: true,\n} as TagsReducerState\n\nconst tagsSlice = createSlice({\n  name: 'tags',\n  initialState,\n  extraReducers: (builder) => {\n    builder\n      .addCase(DIALOG_ACTIONS.showTagCreate, (state) => {\n        delete state.creatingError\n      })\n      .addCase(DIALOG_ACTIONS.showTagEdit, (state, action) => {\n        const {tagId} = action.payload\n        delete state.byIds[tagId]!.error\n      })\n      .addMatcher(\n        isAnyOf(\n          ASSETS_ACTIONS.tagsAddComplete,\n          ASSETS_ACTIONS.tagsAddError,\n          ASSETS_ACTIONS.tagsRemoveComplete,\n          ASSETS_ACTIONS.tagsRemoveError,\n        ),\n        (state, action) => {\n          const {tag} = action.payload\n          state.byIds[tag._id]!.updating = false\n        },\n      )\n      .addMatcher(\n        isAnyOf(ASSETS_ACTIONS.tagsAddRequest, ASSETS_ACTIONS.tagsRemoveRequest),\n        (state, action) => {\n          const {tag} = action.payload\n          state.byIds[tag._id]!.updating = true\n        },\n      )\n  },\n  reducers: {\n    createComplete(state, action: PayloadAction<{assetId?: string; tag: Tag}>) {\n      const {tag} = action.payload\n      state.creating = false\n      if (!state.allIds.includes(tag._id)) {\n        state.allIds.push(tag._id)\n      }\n      state.byIds[tag._id] = {\n        _type: 'tag',\n        picked: false,\n        tag,\n        updating: false,\n      }\n    },\n    createError(state, action: PayloadAction<{error: HttpError; name: string}>) {\n      state.creating = false\n      state.creatingError = action.payload.error\n    },\n    createRequest(state, _action: PayloadAction<{assetId?: string; name: string}>) {\n      state.creating = true\n      delete state.creatingError\n    },\n    deleteComplete(state, action: PayloadAction<{tagId: string}>) {\n      const {tagId} = action.payload\n      const deleteIndex = state.allIds.indexOf(tagId)\n      if (deleteIndex >= 0) {\n        state.allIds.splice(deleteIndex, 1)\n      }\n      delete state.byIds[tagId]\n    },\n    deleteError(state, action: PayloadAction<{error: HttpError; tag: Tag}>) {\n      const {error, tag} = action.payload\n\n      const tagId = tag?._id\n      state.byIds[tagId]!.error = error\n      state.byIds[tagId]!.updating = false\n    },\n    deleteRequest(state, action: PayloadAction<{tag: Tag}>) {\n      const tagId = action.payload?.tag?._id\n      state.byIds[tagId]!.picked = false\n      state.byIds[tagId]!.updating = true\n\n      Object.keys(state.byIds).forEach((key) => {\n        delete state.byIds[key]!.error\n      })\n    },\n    fetchComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n      const {tags} = action.payload\n\n      tags?.forEach((tag) => {\n        state.allIds.push(tag._id)\n        state.byIds[tag._id] = {\n          _type: 'tag',\n          picked: false,\n          tag,\n          updating: false,\n        }\n      })\n\n      state.fetching = false\n      state.fetchCount = tags.length || 0\n      delete state.fetchingError\n    },\n    fetchError(state, action: PayloadAction<{error: HttpError}>) {\n      const {error} = action.payload\n      state.fetching = false\n      state.fetchingError = error\n    },\n    fetchRequest: {\n      reducer: (state, _action: PayloadAction<{query: string}>) => {\n        state.fetching = true\n        delete state.fetchingError\n      },\n      prepare: () => {\n        // Construct query\n        const query = groq`\n          {\n            \"items\": *[\n              _type == \"${TAG_DOCUMENT_NAME}\"\n              && !(_id in path(\"drafts.**\"))\n            ] {\n              _createdAt,\n              _updatedAt,\n              _id,\n              _rev,\n              _type,\n              name\n            } | order(name.current asc),\n          }\n        `\n        return {payload: {query}}\n      },\n    },\n    // Queue batch tag creation\n    listenerCreateQueue(_state, _action: PayloadAction<{tag: Tag}>) {\n      //\n    },\n    // Apply created tags (via sanity real-time events)\n    listenerCreateQueueComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n      const {tags} = action.payload\n\n      tags?.forEach((tag) => {\n        state.byIds[tag._id] = {\n          _type: 'tag',\n          picked: false,\n          tag,\n          updating: false,\n        }\n        if (!state.allIds.includes(tag._id)) {\n          state.allIds.push(tag._id)\n        }\n      })\n    },\n    // Queue batch tag deletion\n    listenerDeleteQueue(_state, _action: PayloadAction<{tagId: string}>) {\n      //\n    },\n    // Apply deleted tags (via sanity real-time events)\n    listenerDeleteQueueComplete(state, action: PayloadAction<{tagIds: string[]}>) {\n      const {tagIds} = action.payload\n\n      tagIds?.forEach((tagId) => {\n        const deleteIndex = state.allIds.indexOf(tagId)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n        delete state.byIds[tagId]\n      })\n    },\n    // Queue batch tag updates\n    listenerUpdateQueue(_state, _action: PayloadAction<{tag: Tag}>) {\n      //\n    },\n    // Apply updated tags (via sanity real-time events)\n    listenerUpdateQueueComplete(state, action: PayloadAction<{tags: Tag[]}>) {\n      const {tags} = action.payload\n\n      tags?.forEach((tag) => {\n        if (state.byIds[tag._id]) {\n          state.byIds[tag._id]!.tag = tag\n        }\n      })\n    },\n    // Set tag panel visibility\n    panelVisibleSet(state, action: PayloadAction<{panelVisible: boolean}>) {\n      const {panelVisible} = action.payload\n      state.panelVisible = panelVisible\n    },\n    // Sort all tags by name\n    sort(state) {\n      state.allIds.sort((a, b) => {\n        const tagA = state.byIds[a]!.tag.name.current\n        const tagB = state.byIds[b]!.tag.name.current\n\n        if (tagA < tagB) {\n          return -1\n        } else if (tagA > tagB) {\n          return 1\n        }\n        return 0\n      })\n    },\n    updateComplete(state, action: PayloadAction<{closeDialogId?: string; tag: Tag}>) {\n      const {tag} = action.payload\n      state.byIds[tag._id]!.tag = tag\n      state.byIds[tag._id]!.updating = false\n    },\n    updateError(state, action: PayloadAction<{tag: Tag; error: HttpError}>) {\n      const {error, tag} = action.payload\n      const tagId = tag?._id\n      state.byIds[tagId]!.error = error\n      state.byIds[tagId]!.updating = false\n    },\n    updateRequest(\n      state,\n      action: PayloadAction<{\n        closeDialogId?: string\n        formData: Record<string, any>\n        tag: Tag\n      }>,\n    ) {\n      const {tag} = action.payload\n      state.byIds[tag?._id]!.updating = true\n    },\n  },\n})\n\n// Epics\n\n// On tag create request:\n// - async check to see if tag already exists\n// - throw if tag already exists\n// - otherwise, create new tag\nexport const tagsCreateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.createRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assetId, name} = action.payload\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        checkTagName(client, name),\n        mergeMap(() =>\n          client.observable.create({\n            _type: TAG_DOCUMENT_NAME,\n            name: {\n              _type: 'slug',\n              current: name,\n            },\n          }),\n        ),\n        mergeMap((result) => of(tagsSlice.actions.createComplete({assetId, tag: result as Tag}))),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.createError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              name,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// On tag delete request\n// - find referenced assets\n// - remove tag from referenced assets in a sanity transaction\nexport const tagsDeleteEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.deleteRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {tag} = action.payload\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Fetch assets which reference this tag\n        mergeMap(() =>\n          client.observable.fetch<Asset[]>(\n            groq`*[\n              _type in [\"sanity.fileAsset\", \"sanity.imageAsset\"]\n              && references(*[_type == \"media.tag\" && name.current == $tagName]._id)\n            ] {\n              _id,\n              _rev,\n              opt\n            }`,\n            {tagName: tag.name.current},\n          ),\n        ),\n        // Create transaction which remove tag references from all matched assets and delete tag\n        mergeMap((assets) => {\n          const patches = assets.map((asset) => ({\n            id: asset._id,\n            patch: {\n              // this will cause the transaction to fail if the document has been modified since it was fetched.\n              ifRevisionID: asset._rev,\n              unset: [`opt.media.tags[_ref == \"${tag._id}\"]`],\n            },\n          }))\n\n          const transaction: Transaction = patches.reduce(\n            (tx, patch) => tx.patch(patch.id, patch.patch),\n            client.transaction(),\n          )\n\n          transaction.delete(tag._id)\n\n          return from(transaction.commit())\n        }),\n        // Dispatch complete action\n        mergeMap(() => of(tagsSlice.actions.deleteComplete({tagId: tag._id}))),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.deleteError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// Async fetch tags\nexport const tagsFetchEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.fetchRequest.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) => {\n      const {query} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Fetch tags\n        mergeMap(() =>\n          client.observable.fetch<{\n            items: Tag[]\n          }>(query),\n        ),\n        // Dispatch complete action\n        mergeMap((result) => {\n          const {items} = result\n          return of(tagsSlice.actions.fetchComplete({tags: items}))\n        }),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.fetchError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// TODO: merge all buffer epics\n// Buffer tag creation via sanity subscriber\nexport const tagsListenerCreateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsSlice.actions.listenerCreateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const tags = actions?.map((action) => action.payload.tag)\n      return of(tagsSlice.actions.listenerCreateQueueComplete({tags}))\n    }),\n  )\n\n// TODO: merge all buffer epics\n// Buffer tag deletion via sanity subscriber\nexport const tagsListenerDeleteQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsSlice.actions.listenerDeleteQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const tagIds = actions?.map((action) => action.payload.tagId)\n      return of(tagsSlice.actions.listenerDeleteQueueComplete({tagIds}))\n    }),\n  )\n\n// TODO: merge all buffer epics\n// Buffer tag update via sanity subscriber\nexport const tagsListenerUpdateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsSlice.actions.listenerUpdateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const tags = actions?.map((action) => action.payload.tag)\n      return of(tagsSlice.actions.listenerUpdateQueueComplete({tags}))\n    }),\n  )\n\n// On successful tag creation or updates:\n// - Re-sort all tags\nexport const tagsSortEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      tagsSlice.actions.listenerCreateQueueComplete.type,\n      tagsSlice.actions.listenerUpdateQueueComplete.type,\n    ),\n    bufferTime(1000),\n    filter((actions) => actions.length > 0),\n    mergeMap(() => of(tagsSlice.actions.sort())),\n  )\n\n// On tag update request\n// - check if tag name already exists\n// - throw if tag already exists\n// - otherwise, patch document\nexport const tagsUpdateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(tagsSlice.actions.updateRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {closeDialogId, formData, tag} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Check if tag name is available, throw early if not\n        checkTagName(client, formData?.['name']?.current),\n        // Patch document (Update tag)\n        mergeMap(\n          () =>\n            from(\n              client\n                .patch(tag._id)\n                .set({name: {_type: 'slug', current: formData?.['name'].current}})\n                .commit(),\n            ) as Observable<Tag>,\n        ),\n        // Dispatch complete action\n        mergeMap((updatedTag: Tag) => {\n          return of(\n            tagsSlice.actions.updateComplete({\n              closeDialogId,\n              tag: updatedTag,\n            }),\n          )\n        }),\n        catchError((error: ClientError) =>\n          of(\n            tagsSlice.actions.updateError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\n// Selectors\n\nconst selectTagsByIds = (state: RootReducerState) => state.tags.byIds\n\nconst selectTagsAllIds = (state: RootReducerState) => state.tags.allIds\n\nexport const selectTags: Selector<RootReducerState, TagItem[]> = createSelector(\n  [selectTagsByIds, selectTagsAllIds],\n  (byIds, allIds) => allIds.map((id) => byIds[id]!),\n)\n\nexport const selectTagById = createSelector(\n  [selectTagsByIds, (_state: RootReducerState, tagId: string) => tagId],\n  (byIds, tagId) => byIds[tagId],\n)\n\n// TODO: use createSelector\n// Map tag references to react-select options, skipping over items with no linked tags\nexport const selectTagSelectOptions =\n  (asset?: Asset) =>\n  (state: RootReducerState): TagSelectOption[] | null => {\n    const tags = asset?.opt?.media?.tags?.reduce((acc: TagItem[], v) => {\n      const tagItem = state.tags.byIds[v._ref]\n      if (tagItem?.tag) {\n        acc.push(tagItem)\n      }\n      return acc\n    }, [])\n\n    if (tags && tags?.length > 0) {\n      return getTagSelectOptions(tags)\n    }\n\n    return null\n  }\n\nexport const tagsActions = {...tagsSlice.actions}\n\nexport default tagsSlice.reducer\n","import {type PayloadAction, createSelector, createSlice} from '@reduxjs/toolkit'\nimport {uuid} from '@sanity/uuid'\nimport {EMPTY, of} from 'rxjs'\nimport {filter, mergeMap, withLatestFrom} from 'rxjs/operators'\n\nimport type {MyEpic, SearchFacetInputProps, SearchFacetOperatorType, WithId} from '../../types'\nimport {tagsActions} from '../tags'\nimport type {RootReducerState} from '../types'\n\n// TODO: don't store non-serializable data in the search store\n// (The main offender is `fieldModifier` which is currently a function)\n\ntype SearchState = {\n  facets: WithId<SearchFacetInputProps>[]\n  query: string\n}\n\nconst initialState = {\n  facets: [],\n  query: '',\n} as SearchState\n\nconst searchSlice = createSlice({\n  name: 'search',\n  initialState,\n  reducers: {\n    // Add search facet\n    facetsAdd(state, action: PayloadAction<{facet: SearchFacetInputProps}>) {\n      state.facets.push({...action.payload.facet, id: uuid()})\n    },\n    // Clear all search facets\n    facetsClear(state) {\n      state.facets = []\n    },\n    // Remove search facet by name\n    facetsRemoveByName(state, action: PayloadAction<{facetName: string}>) {\n      state.facets = state.facets.filter((facet) => facet.name !== action.payload.facetName)\n    },\n    // Remove search facet by name\n    facetsRemoveByTag(state, action: PayloadAction<{tagId: string}>) {\n      state.facets = state.facets.filter(\n        (facet) =>\n          !(\n            facet.name === 'tag' &&\n            facet.type === 'searchable' &&\n            (facet.operatorType === 'references' || facet.operatorType === 'doesNotReference') &&\n            facet.value?.value === action.payload.tagId\n          ),\n      )\n    },\n    // Remove search facet by name\n    facetsRemoveById(state, action: PayloadAction<{facetId: string}>) {\n      state.facets = state.facets.filter((facet) => facet.id !== action.payload.facetId)\n    },\n    // Update an existing search facet\n    facetsUpdate(\n      state,\n      action: PayloadAction<{\n        modifier?: string\n        name: string\n        operatorType?: SearchFacetOperatorType\n        value?: any // TODO: type correctly\n      }>,\n    ) {\n      const {modifier, name, operatorType, value} = action.payload\n\n      const facet = state.facets.find((f) => f.name === name)\n\n      if (!facet) {\n        return\n      }\n\n      if (facet.type === 'number' && modifier) {\n        facet.modifier = modifier\n      }\n      if (operatorType) {\n        facet.operatorType = operatorType\n      }\n      if (typeof value !== 'undefined') {\n        facet.value = value\n      }\n\n      state.facets = state.facets.filter((f) => f.name !== facet.name || f.id === facet.id)\n    },\n    // Update an existing search facet\n    facetsUpdateById(\n      state,\n      action: PayloadAction<{\n        modifier?: string\n        id: string\n        operatorType?: SearchFacetOperatorType\n        value?: any // TODO: type correctly\n      }>,\n    ) {\n      const {modifier, id, operatorType, value} = action.payload\n\n      state.facets.forEach((facet, index) => {\n        if (facet.id === id) {\n          if (facet.type === 'number' && modifier) {\n            facet.modifier = modifier\n          }\n          if (operatorType) {\n            facet.operatorType = operatorType\n          }\n          if (typeof value !== 'undefined') {\n            state.facets[index]!.value = value\n          }\n        }\n      })\n    },\n    // Update existing search query\n    querySet(state, action: PayloadAction<{searchQuery: string}>) {\n      state.query = action.payload?.searchQuery\n    },\n  },\n})\n\n// Epics\n\n// On tag update success -> update existing tag search facet (if present)\nexport const searchFacetTagUpdateEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(tagsActions.updateComplete.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {tag} = action.payload\n\n      const currentSearchFacetTag = state.search.facets?.find((facet) => facet.name === 'tag')\n      const tagItem = state.tags.byIds[tag._id]\n\n      if (currentSearchFacetTag?.type === 'searchable') {\n        if (currentSearchFacetTag.value?.value === tag._id) {\n          return of(\n            searchSlice.actions.facetsUpdate({\n              name: 'tag',\n              value: {\n                label: tagItem?.tag?.name?.current,\n                value: tagItem?.tag?._id,\n              },\n            }),\n          )\n        }\n      }\n\n      return EMPTY\n    }),\n  )\n\n// Selectors\nexport const selectIsSearchFacetTag = createSelector(\n  [\n    (state: RootReducerState) => state.search.facets,\n    (_state: RootReducerState, tagId: string) => tagId,\n  ],\n  (searchFacets, tagId) =>\n    searchFacets.some(\n      (facet) =>\n        facet.name === 'tag' &&\n        facet.type === 'searchable' &&\n        (facet.operatorType === 'references' || facet.operatorType === 'doesNotReference') &&\n        facet.value?.value === tagId,\n    ),\n)\n\nexport const searchActions = {...searchSlice.actions}\n\nexport default searchSlice.reducer\n","import {createAction} from '@reduxjs/toolkit'\nimport type {SanityAssetDocument, SanityImageAssetDocument} from '@sanity/client'\n\nexport const UPLOADS_ACTIONS = {\n  uploadComplete: createAction(\n    'uploads/uploadComplete',\n    function prepare({asset}: {asset: SanityAssetDocument | SanityImageAssetDocument}) {\n      return {\n        payload: {asset},\n      }\n    },\n  ),\n}\n","import {createSelector, createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport type {AttributeSet, ClientError, Patch, SanityDocument, Transaction} from '@sanity/client'\nimport groq from 'groq'\nimport {nanoid} from 'nanoid'\nimport type {Selector} from 'react-redux'\nimport {ofType} from 'redux-observable'\nimport {EMPTY, from, of} from 'rxjs'\nimport {\n  bufferTime,\n  catchError,\n  concatMap,\n  debounceTime,\n  filter,\n  mergeMap,\n  switchMap,\n  withLatestFrom,\n} from 'rxjs/operators'\n\nimport {getOrderTitle} from '../../config/orders'\nimport {ORDER_OPTIONS} from '../../constants'\nimport debugThrottle from '../../operators/debugThrottle'\nimport type {\n  Asset,\n  AssetItem,\n  AssetType,\n  BrowserView,\n  HttpError,\n  MyEpic,\n  Order,\n  OrderDirection,\n  Tag,\n} from '../../types'\nimport constructFilter from '../../utils/constructFilter'\nimport {findImageAssets} from '../../utils/ReplaceImages'\nimport {searchActions} from '../search'\nimport type {RootReducerState} from '../types'\nimport {UPLOADS_ACTIONS} from '../uploads/actions'\nimport {ASSETS_ACTIONS} from './actions'\ntype ItemError = {\n  description: string\n  id: string\n  referencingIDs: string[]\n  type: string // 'documentHasExistingReferencesError'\n}\n\nexport type AssetsReducerState = {\n  allIds: string[]\n  assetTypes: AssetType[]\n  byIds: Record<string, AssetItem>\n  excludeTagSlugs: string[]\n  fetchCount: number\n  fetching: boolean\n  fetchingError?: HttpError\n  lastPicked?: string\n  order: Order\n  pageIndex: number\n  pageSize: number\n  view: BrowserView\n  // totalCount: number\n}\n\nconst defaultOrder = ORDER_OPTIONS[0] as {\n  direction: OrderDirection\n  field: string\n}\n\n/**\n * NOTE:\n * `fetchCount` returns the number of items retrieved in the most recent fetch.\n * This is a temporary workaround to be able to determine when there are no more items to retrieve.\n * Typically this would be done by deriving the total number of assets upfront, but currently such\n * queries in GROQ aren't fast enough to use on large datasets (1000s of entries).\n *\n * TODO:\n * When the query engine has been improved and above queries are faster, remove all instances of\n * of `fetchCount` and reinstate `totalCount` across the board.\n */\n\nexport const initialState = {\n  allIds: [],\n  assetTypes: [],\n  byIds: {},\n  excludeTagSlugs: [],\n  fetchCount: -1,\n  fetching: false,\n  fetchingError: undefined,\n  lastPicked: undefined,\n  order: {\n    direction: defaultOrder.direction,\n    field: defaultOrder.field,\n    title: getOrderTitle(defaultOrder.field, defaultOrder.direction),\n  },\n  pageIndex: 0,\n  pageSize: 100,\n  // totalCount: -1,\n  view: 'grid',\n} as AssetsReducerState\n\nconst assetsSlice = createSlice({\n  name: 'assets',\n  initialState,\n  extraReducers: (builder) => {\n    builder //\n      .addCase(UPLOADS_ACTIONS.uploadComplete, (state, action) => {\n        const {asset} = action.payload\n\n        state.byIds[asset._id] = {\n          _type: 'asset',\n          asset: asset as Asset,\n          picked: false,\n          updating: false,\n        }\n      })\n      .addCase(ASSETS_ACTIONS.tagsAddComplete, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsAddError, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsAddRequest, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = true\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsRemoveComplete, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsRemoveError, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = false\n        })\n      })\n      .addCase(ASSETS_ACTIONS.tagsRemoveRequest, (state, action) => {\n        const {assets} = action.payload\n        assets.forEach((asset) => {\n          state.byIds[asset.asset._id]!.updating = true\n        })\n      })\n  },\n  reducers: {\n    // Clear asset order\n    clear(state) {\n      state.allIds = []\n    },\n    // Remove assets and update page index\n    deleteComplete(state, action: PayloadAction<{assetIds: string[]}>) {\n      const {assetIds} = action.payload\n\n      assetIds?.forEach((id) => {\n        const deleteIndex = state.allIds.indexOf(id)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n        delete state.byIds[id]\n      })\n\n      state.pageIndex = Math.floor(state.allIds.length / state.pageSize) - 1\n    },\n    deleteError(state, action: PayloadAction<{assetIds: string[]; error: ClientError}>) {\n      const {assetIds, error} = action.payload\n      const itemErrors: ItemError[] = error?.response?.body?.error?.items?.map(\n        (item: any) => item.error,\n      )\n\n      assetIds?.forEach((id) => {\n        state.byIds[id]!.updating = false\n      })\n      itemErrors?.forEach((item) => {\n        state.byIds[item.id]!.error = item.description\n      })\n    },\n    deleteRequest(state, action: PayloadAction<{assets: Asset[]; closeDialogId?: string}>) {\n      const {assets} = action.payload\n      assets.forEach((asset) => {\n        state.byIds[asset?._id]!.updating = true\n      })\n\n      Object.keys(state.byIds).forEach((key) => {\n        delete state.byIds[key]!.error\n      })\n    },\n    fetchComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n      const assets = action.payload?.assets || []\n\n      if (assets) {\n        assets.forEach((asset) => {\n          if (!state.allIds.includes(asset._id)) {\n            state.allIds.push(asset._id)\n          }\n          const existing = state.byIds[asset._id]\n          // Preserve pick/updating across search refreshes (e.g. replace dialog clearing filters)\n          state.byIds[asset._id] = {\n            _type: 'asset',\n            asset: asset,\n            picked: existing?.picked ?? false,\n            updating: existing?.updating ?? false,\n            ...(existing?.error ? {error: existing.error} : {}),\n          }\n        })\n      }\n\n      state.fetching = false\n      state.fetchCount = assets.length || 0\n      delete state.fetchingError\n    },\n    fetchError(state, action: PayloadAction<HttpError>) {\n      const error = action.payload\n      state.fetching = false\n      state.fetchingError = error\n    },\n    folderSetComplete(\n      state,\n      action: PayloadAction<{assetIds: string[]; folderId: string | null; closeDialogId?: string}>,\n    ) {\n      const {assetIds, folderId} = action.payload\n\n      assetIds.forEach((assetId) => {\n        if (state.byIds[assetId]?.asset) {\n          state.byIds[assetId].asset.opt = state.byIds[assetId].asset.opt || {}\n          state.byIds[assetId].asset.opt.media = state.byIds[assetId].asset.opt.media || {}\n          state.byIds[assetId].asset.opt.media.folder = folderId\n            ? {_ref: folderId, _type: 'reference', _weak: true}\n            : undefined\n          state.byIds[assetId].updating = false\n        }\n      })\n    },\n    folderSetError(state, action: PayloadAction<{assetIds: string[]; error: HttpError}>) {\n      const {assetIds, error} = action.payload\n\n      assetIds.forEach((assetId) => {\n        if (state.byIds[assetId]) {\n          state.byIds[assetId].error = error.message\n          state.byIds[assetId].updating = false\n        }\n      })\n    },\n    folderSetRequest(\n      state,\n      action: PayloadAction<{\n        assets: AssetItem[]\n        folderId: string | null\n        closeDialogId?: string\n      }>,\n    ) {\n      action.payload.assets.forEach((asset) => {\n        const item = state.byIds[asset.asset._id]\n        if (item) {\n          item.updating = true\n        }\n      })\n    },\n    fetchRequest: {\n      reducer: (state, _action: PayloadAction<{params: Record<string, any>; query: string}>) => {\n        state.fetching = true\n        delete state.fetchingError\n      },\n      prepare: ({\n        params = {},\n        queryFilter,\n        selector = ``,\n        sort = groq`order(_updatedAt desc)`,\n      }: {\n        params?: Record<string, any>\n        queryFilter: string\n        replace?: boolean\n        selector?: string\n        sort?: string\n      }) => {\n        const pipe = sort || selector ? '|' : ''\n\n        // Construct query\n        const query = groq`\n          {\n            \"items\": *[${queryFilter}] {\n              _id,\n              _type,\n              _createdAt,\n              _updatedAt,\n              altText,\n              creditLine,\n              description,\n              extension,\n              metadata {\n                dimensions,\n                exif,\n                image,\n                isOpaque,\n              },\n              mimeType,\n              opt {\n                media\n              },\n              originalFilename,\n              size,\n              source {\n                name,\n                id,\n                url,\n              },\n              title,\n              url\n            } ${pipe} ${sort} ${selector},\n          }\n        `\n\n        return {payload: {params, query}}\n      },\n    },\n    insertUploads(state, action: PayloadAction<{results: Record<string, string | null>}>) {\n      const {results} = action.payload\n\n      Object.entries(results).forEach(([hash, assetId]) => {\n        if (assetId && !state.allIds.includes(hash)) {\n          state.allIds.push(assetId)\n        }\n      })\n    },\n    listenerCreateQueue(_state, _action: PayloadAction<{asset: Asset}>) {\n      //\n    },\n    listenerCreateQueueComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n      const {assets} = action.payload\n      assets?.forEach((asset) => {\n        if (state.byIds[asset?._id]?.asset) {\n          state.byIds[asset._id]!.asset = asset\n        }\n      })\n    },\n    listenerDeleteQueue(_state, _action: PayloadAction<{assetId: string}>) {\n      //\n    },\n    listenerDeleteQueueComplete(state, action: PayloadAction<{assetIds: string[]}>) {\n      const {assetIds} = action.payload\n      assetIds?.forEach((assetId) => {\n        const deleteIndex = state.allIds.indexOf(assetId)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n        delete state.byIds[assetId]\n      })\n    },\n    listenerUpdateQueue(_state, _action: PayloadAction<{asset: Asset}>) {\n      //\n    },\n    listenerUpdateQueueComplete(state, action: PayloadAction<{assets: Asset[]}>) {\n      const {assets} = action.payload\n      assets?.forEach((asset) => {\n        if (state.byIds[asset?._id]?.asset) {\n          state.byIds[asset._id]!.asset = asset\n        }\n      })\n    },\n    loadNextPage() {\n      //\n    },\n    loadPageIndex(state, action: PayloadAction<{pageIndex: number}>) {\n      //\n      state.pageIndex = action.payload.pageIndex\n    },\n    orderSet(state, action: PayloadAction<{order: Order}>) {\n      state.order = action.payload?.order\n      state.pageIndex = 0\n    },\n    pick(state, action: PayloadAction<{assetId: string; picked: boolean}>) {\n      const {assetId, picked} = action.payload\n      const item = state.byIds[assetId]\n      if (!item) {\n        return\n      }\n\n      item.picked = picked\n      state.lastPicked = picked ? assetId : undefined\n    },\n    pickAll(state) {\n      state.allIds.forEach((id) => {\n        state.byIds[id]!.picked = true\n      })\n    },\n    pickClear(state) {\n      state.lastPicked = undefined\n      Object.values(state.byIds).forEach((asset) => {\n        state.byIds[asset.asset._id]!.picked = false\n      })\n    },\n    pickRange(state, action: PayloadAction<{endId: string; startId: string}>) {\n      const startIndex = state.allIds.findIndex((id) => id === action.payload.startId)\n      const endIndex = state.allIds.findIndex((id) => id === action.payload.endId)\n\n      // Sort numerically, ascending order\n      const indices = [startIndex, endIndex].sort((a, b) => a - b)\n\n      state.allIds.slice(indices[0], indices[1]! + 1).forEach((key) => {\n        state.byIds[key]!.picked = true\n      })\n      state.lastPicked = state.allIds[endIndex]\n    },\n    sort(state) {\n      state.allIds.sort((a, b) => {\n        const tagA = state.byIds[a]!.asset[state.order.field]\n        const tagB = state.byIds[b]!.asset[state.order.field]\n\n        if (tagA < tagB) {\n          return state.order.direction === 'asc' ? -1 : 1\n        } else if (tagA > tagB) {\n          return state.order.direction === 'asc' ? 1 : -1\n        }\n        return 0\n      })\n    },\n    updateComplete(state, action: PayloadAction<{asset: Asset; closeDialogId?: string}>) {\n      const {asset} = action.payload\n      state.byIds[asset._id]!.updating = false\n      state.byIds[asset._id]!.asset = asset\n    },\n    updateError(state, action: PayloadAction<{asset: Asset; error: HttpError}>) {\n      const {asset, error} = action.payload\n\n      const assetId = asset?._id\n      state.byIds[assetId]!.error = error.message\n      state.byIds[assetId]!.updating = false\n    },\n    updateImageReferences(state, action: PayloadAction<{asset: Asset; id: string}>) {\n      const {id: assetId} = action.payload\n      const item = state.byIds[assetId]\n      if (!item) {\n        return\n      }\n      item.updating = true\n      delete item.error\n    },\n    updateImageReferencesComplete(state, action: PayloadAction<{id: string}>) {\n      const {id} = action.payload\n      const item = state.byIds[id]\n      if (!item) {\n        return\n      }\n      item.updating = false\n      delete item.error\n    },\n    updateRequest(\n      state,\n      action: PayloadAction<{asset: Asset; closeDialogId?: string; formData: Record<string, any>}>,\n    ) {\n      const assetId = action.payload?.asset?._id\n      state.byIds[assetId]!.updating = true\n    },\n    viewSet(state, action: PayloadAction<{view: BrowserView}>) {\n      state.view = action.payload?.view\n    },\n  },\n})\n\n// Epics\n\nexport const assetsDeleteEpic: MyEpic = (action$, _state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.deleteRequest.match),\n    mergeMap((action) => {\n      const {assets} = action.payload\n      const assetIds = assets.map((asset) => asset._id)\n      return of(assets).pipe(\n        mergeMap(() =>\n          client.observable.delete({\n            query: groq`*[_id in ${JSON.stringify(assetIds)}]`,\n          }),\n        ),\n        mergeMap(() => of(assetsActions.deleteComplete({assetIds}))),\n        catchError((error: ClientError) => {\n          return of(assetsActions.deleteError({assetIds, error}))\n        }),\n      )\n    }),\n  )\n\nexport const assetsFetchEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.fetchRequest.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) => {\n      const params = action.payload?.params\n      const query = action.payload?.query\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() =>\n          client.observable.fetch<{\n            items: Asset[]\n          }>(query, params),\n        ),\n        mergeMap((result) => {\n          const {\n            items,\n            // totalCount\n          } = result\n          return of(assetsActions.fetchComplete({assets: items}))\n        }),\n        catchError((error: ClientError) =>\n          of(\n            assetsActions.fetchError({\n              message: error?.message || 'Internal error',\n              statusCode: error?.statusCode || 500,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const assetsFetchPageIndexEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(assetsActions.loadPageIndex.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) => {\n      const pageSize = state.assets.pageSize\n      const start = action.payload.pageIndex * pageSize\n      const end = start + pageSize\n\n      // Document ID can be null when operating on pristine / unsaved drafts\n      const documentId = state?.selected.document?._id\n      const documentAssetIds = state?.selected?.documentAssetIds\n\n      const constructedFilter = constructFilter({\n        assetTypes: state.assets.assetTypes,\n        currentFolderId: state.folders.currentFolderId,\n        excludeTagSlugs: state.assets.excludeTagSlugs,\n        searchFacets: state.search.facets,\n        searchQuery: state.search.query,\n      })\n\n      const params = {\n        ...(documentId ? {documentId} : {}),\n        documentAssetIds,\n      }\n\n      return of(\n        assetsActions.fetchRequest({\n          params,\n          queryFilter: constructedFilter,\n          selector: groq`[${start}...${end}]`,\n          sort: groq`order(${state.assets?.order?.field} ${state.assets?.order?.direction})`,\n        }),\n      )\n    }),\n  )\n\nexport const assetsFetchNextPageEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(assetsActions.loadNextPage.match),\n    withLatestFrom(state$),\n    switchMap(([_action, state]) =>\n      of(assetsActions.loadPageIndex({pageIndex: state.assets.pageIndex + 1})),\n    ),\n  )\n\nexport const assetsFetchAfterDeleteAllEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(assetsActions.deleteComplete.match),\n    withLatestFrom(state$),\n    switchMap(([_action, state]) => {\n      if (state.assets.allIds.length === 0) {\n        const nextPageIndex = Math.floor(state.assets.allIds.length / state.assets.pageSize)\n        return of(assetsActions.loadPageIndex({pageIndex: nextPageIndex}))\n      }\n\n      return EMPTY\n    }),\n  )\n\nconst filterAssetWithoutTag = (tag: Tag) => (asset: AssetItem) => {\n  const tagIndex = asset?.asset?.opt?.media?.tags?.findIndex((t) => t._ref === tag?._id) ?? -1\n  return tagIndex < 0\n}\n\nconst patchOperationTagAppend =\n  ({tag}: {tag: Tag}) =>\n  (patch: Patch) =>\n    patch\n      .setIfMissing({opt: {}})\n      .setIfMissing({'opt.media': {}})\n      .setIfMissing({'opt.media.tags': []})\n      .append('opt.media.tags', [{_key: nanoid(), _ref: tag?._id, _type: 'reference', _weak: true}])\n\nconst patchOperationTagUnset =\n  ({asset, tag}: {asset: AssetItem; tag: Tag}) =>\n  (patch: Patch) =>\n    patch.ifRevisionId(asset?.asset?._rev).unset([`opt.media.tags[_ref == \"${tag._id}\"]`])\n\nconst patchOperationFolderSet =\n  ({asset, folderId}: {asset: AssetItem; folderId: string | null}) =>\n  (patch: Patch) => {\n    const nextPatch = patch.ifRevisionId(asset?.asset?._rev).setIfMissing({opt: {}}).setIfMissing({\n      'opt.media': {},\n    })\n\n    if (folderId) {\n      return nextPatch.set({\n        'opt.media.folder': {_ref: folderId, _type: 'reference', _weak: true},\n      })\n    }\n\n    return nextPatch.unset(['opt.media.folder'])\n  }\n\nexport const assetsOrderSetEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.orderSet.match),\n    mergeMap(() => {\n      return of(\n        assetsActions.clear(), //\n        assetsActions.loadPageIndex({pageIndex: 0}),\n      )\n    }),\n  )\n\nexport const assetsSearchEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      searchActions.facetsAdd.type,\n      searchActions.facetsClear.type,\n      searchActions.facetsRemoveById.type,\n      searchActions.facetsRemoveByName.type,\n      searchActions.facetsRemoveByTag.type,\n      searchActions.facetsUpdate.type,\n      searchActions.facetsUpdateById.type,\n      searchActions.querySet.type,\n    ),\n    debounceTime(400),\n    mergeMap(() => {\n      return of(\n        assetsActions.clear(), //\n        assetsActions.loadPageIndex({pageIndex: 0}),\n      )\n    }),\n  )\n\nexport const assetsListenerCreateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.listenerCreateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const assets = actions?.map((action) => action.payload.asset)\n      return of(assetsActions.listenerCreateQueueComplete({assets}))\n    }),\n  )\n\nexport const assetsListenerDeleteQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.listenerDeleteQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const assetIds = actions?.map((action) => action.payload.assetId)\n      return of(assetsActions.listenerDeleteQueueComplete({assetIds}))\n    }),\n  )\n\nexport const assetsListenerUpdateQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.listenerUpdateQueue.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const assets = actions?.map((action) => action.payload.asset)\n      return of(assetsActions.listenerUpdateQueueComplete({assets}))\n    }),\n  )\n\n// Re-sort on all updates (immediate and batched listener events)\nexport const assetsSortEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.insertUploads.type,\n      assetsActions.listenerUpdateQueueComplete.type,\n      assetsActions.updateComplete.type,\n    ),\n    mergeMap(() => of(assetsActions.sort())),\n  )\n\nexport const assetsTagsAddEpic: MyEpic = (action$, state$, {client}) => {\n  return action$.pipe(\n    filter(ASSETS_ACTIONS.tagsAddRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets, tag} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Add tag references to all picked assets\n        mergeMap(() => {\n          const pickedAssets = selectAssetsPicked(state)\n\n          // Filter out picked assets which already include tag\n          const pickedAssetsFiltered = pickedAssets?.filter(filterAssetWithoutTag(tag))\n\n          const transaction: Transaction = pickedAssetsFiltered.reduce(\n            (tx, pickedAsset) => tx.patch(pickedAsset?.asset?._id, patchOperationTagAppend({tag})),\n            client.transaction(),\n          )\n\n          return from(transaction.commit())\n        }),\n        // Dispatch complete action\n        mergeMap(() => of(ASSETS_ACTIONS.tagsAddComplete({assets, tag}))),\n        catchError((error: ClientError) =>\n          of(\n            ASSETS_ACTIONS.tagsAddError({\n              assets,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n}\n\nexport const assetsTagsRemoveEpic: MyEpic = (action$, state$, {client}) => {\n  return action$.pipe(\n    filter(ASSETS_ACTIONS.tagsRemoveRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets, tag} = action.payload\n\n      return of(action).pipe(\n        // Optionally throttle\n        debugThrottle(state.debug.badConnection),\n        // Remove tag references from all picked assets\n        mergeMap(() => {\n          const pickedAssets = selectAssetsPicked(state)\n\n          const transaction: Transaction = pickedAssets.reduce(\n            (tx, pickedAsset) =>\n              tx.patch(pickedAsset?.asset?._id, patchOperationTagUnset({asset: pickedAsset, tag})),\n            client.transaction(),\n          )\n\n          return from(transaction.commit())\n        }),\n        // Dispatch complete action\n        mergeMap(() => of(ASSETS_ACTIONS.tagsRemoveComplete({assets, tag}))),\n        catchError((error: ClientError) =>\n          of(\n            ASSETS_ACTIONS.tagsRemoveError({\n              assets,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              tag,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n}\n\nexport const assetsFolderSetEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.folderSetRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets, closeDialogId, folderId} = action.payload\n      const assetIds = assets.map((asset) => asset.asset._id)\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() => {\n          const transaction: Transaction = assets.reduce(\n            (tx, asset) => tx.patch(asset.asset._id, patchOperationFolderSet({asset, folderId})),\n            client.transaction(),\n          )\n\n          return from(transaction.commit())\n        }),\n        mergeMap(() =>\n          of(\n            assetsActions.folderSetComplete({\n              assetIds,\n              closeDialogId,\n              folderId,\n            }),\n          ),\n        ),\n        catchError((error: ClientError) =>\n          of(\n            assetsActions.folderSetError({\n              assetIds,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const assetsFolderSetRefreshEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.folderSetComplete.match),\n    mergeMap(() =>\n      of(\n        assetsActions.pickClear(),\n        assetsActions.clear(),\n        assetsActions.loadPageIndex({pageIndex: 0}),\n      ),\n    ),\n  )\n\nexport const assetsUnpickEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.orderSet.type,\n      assetsActions.viewSet.type,\n      searchActions.facetsAdd.type,\n      searchActions.facetsClear.type,\n      searchActions.facetsRemoveById.type,\n      searchActions.facetsRemoveByName.type,\n      searchActions.facetsRemoveByTag.type,\n      searchActions.facetsUpdate.type,\n      searchActions.facetsUpdateById.type,\n      searchActions.querySet.type,\n    ),\n    mergeMap(() => {\n      return of(assetsActions.pickClear())\n    }),\n  )\n\nexport const assetsUpdateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.updateRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {asset, closeDialogId, formData} = action.payload\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() =>\n          from(\n            client\n              .patch(asset._id)\n              .setIfMissing({opt: {}})\n              .setIfMissing({'opt.media': {}})\n              .set(formData)\n              .commit(),\n          ),\n        ),\n        mergeMap((updatedAsset: any) =>\n          of(\n            assetsActions.updateComplete({\n              asset: updatedAsset,\n              closeDialogId,\n            }),\n          ),\n        ),\n        catchError((error: ClientError) =>\n          of(\n            assetsActions.updateError({\n              asset,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const assetsUpdateImageReferencesEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(assetsActions.updateImageReferences.match),\n    withLatestFrom(state$),\n    // Queue replaces so a later action still runs (exhaustMap would drop it after\n    // the reducer already set `updating`, leaving a stuck spinner). Same-asset\n    // double-clicks are blocked in the UI when the original is already updating.\n    concatMap(([action, state]) => {\n      const {asset, id} = action.payload\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() => client.observable.fetch<SanityDocument[]>(groq`*[references($id)]`, {id})),\n        mergeMap((documents) => {\n          // Patch every referencing document in one transaction so we never leave\n          // references split across old/new assets if a later commit would fail.\n          let patchedCount = 0\n          const transaction: Transaction = documents.reduce((tx, document) => {\n            const clonedDocument = JSON.parse(JSON.stringify(document)) as Record<string, unknown>\n            const assetsToReplace = findImageAssets(clonedDocument, asset, id)\n            if (assetsToReplace.length === 0) {\n              return tx\n            }\n            patchedCount += 1\n            const patchSet = Object.assign({}, ...assetsToReplace) as AttributeSet\n            return tx.patch(document._id, (patch) =>\n              patch.ifRevisionId(document._rev).set(patchSet),\n            )\n          }, client.transaction())\n\n          if (patchedCount === 0) {\n            return of(assetsActions.updateImageReferencesComplete({id}))\n          }\n\n          return from(transaction.commit()).pipe(\n            mergeMap(() => of(assetsActions.updateImageReferencesComplete({id}))),\n          )\n        }),\n        catchError((error: ClientError) => {\n          // The asset marked as `updating` is the original (being replaced), keyed\n          // by `id` — not the replacement `asset` that was clicked. Attach the error\n          // to (and clear the spinner on) the original asset.\n          const originalAsset = state.assets.byIds[id]?.asset ?? asset\n          return of(\n            assetsActions.updateError({\n              asset: originalAsset,\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          )\n        }),\n      )\n    }),\n  )\n\n// Selectors\n\nconst selectAssetsByIds = (state: RootReducerState) => state.assets.byIds\n\nconst selectAssetsAllIds = (state: RootReducerState) => state.assets.allIds\n\nexport const selectAssetById = createSelector(\n  [\n    (state: RootReducerState) => state.assets.byIds,\n    (_state: RootReducerState, assetId: string) => assetId,\n  ],\n  (byIds, assetId) => {\n    const asset = byIds[assetId]\n    return asset ? asset : undefined\n  },\n)\n\nconst selectAssets: Selector<RootReducerState, AssetItem[]> = createSelector(\n  [selectAssetsByIds, selectAssetsAllIds],\n  (byIds, allIds) => allIds.map((id) => byIds[id]!),\n)\n\nexport const selectAssetsLength = createSelector([selectAssets], (assets) => assets.length)\n\nexport const selectAssetsPicked = createSelector([selectAssets], (assets) =>\n  assets.filter((item) => item?.picked),\n)\n\nexport const selectAssetsPickedLength = createSelector(\n  [selectAssetsPicked],\n  (assetsPicked) => assetsPicked.length,\n)\n\nexport const assetsActions = {...assetsSlice.actions}\n\nexport default assetsSlice.reducer\n","import {createSelector, createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, Patch} from '@sanity/client'\nimport groq from 'groq'\nimport {nanoid} from 'nanoid'\nimport {from, of} from 'rxjs'\nimport {\n  catchError,\n  debounceTime,\n  filter,\n  map,\n  mergeMap,\n  switchMap,\n  withLatestFrom,\n} from 'rxjs/operators'\n\nimport {FOLDER_DOCUMENT_NAME} from '../../constants'\nimport debugThrottle from '../../operators/debugThrottle'\nimport type {FolderDoc, FolderTreeItem, FolderTreeNode, HttpError, MyEpic} from '../../types'\nimport {buildExcludeTagsFragment} from '../../utils/constructFilter'\nimport {assetsActions} from '../assets'\nimport type {RootReducerState} from '../types'\nimport {UPLOADS_ACTIONS} from '../uploads/actions'\n\ntype FoldersReducerState = {\n  byId: Record<string, FolderDoc>\n  childrenByParentId: Record<string, string[]>\n  rootIds: string[]\n  exactCountByFolderId: Record<string, number>\n  unfiledCount: number\n  currentFolderId: string | null\n  currentFolderUnfiled: boolean\n  panelVisible: boolean\n  fetching: boolean\n  fetchCount: number\n  fetchingError?: HttpError\n  creating: boolean\n  creatingError?: HttpError\n  deletingId?: string\n  deleteError?: HttpError\n  renaming: boolean\n  renameError?: HttpError\n}\n\nconst initialState: FoldersReducerState = {\n  byId: {},\n  childrenByParentId: {},\n  rootIds: [],\n  exactCountByFolderId: {},\n  unfiledCount: 0,\n  currentFolderId: null,\n  currentFolderUnfiled: false,\n  panelVisible: false,\n  fetching: false,\n  fetchCount: -1,\n  fetchingError: undefined,\n  creating: false,\n  creatingError: undefined,\n  deletingId: undefined,\n  deleteError: undefined,\n  renaming: false,\n  renameError: undefined,\n}\n\nconst indexFolders = (folders: FolderDoc[]) => {\n  const byId: Record<string, FolderDoc> = {}\n  const childrenByParentId: Record<string, string[]> = {}\n  const rootIds: string[] = []\n\n  folders.forEach((folder) => {\n    byId[folder._id] = folder\n  })\n\n  // Resolve parent ids that reference unknown folders to null (defensive — orphan folders surface at root).\n  folders.forEach((folder) => {\n    const parentKey = folder.parentId && byId[folder.parentId] ? folder.parentId : null\n    if (parentKey === null) {\n      rootIds.push(folder._id)\n    } else {\n      if (!childrenByParentId[parentKey]) {\n        childrenByParentId[parentKey] = []\n      }\n      childrenByParentId[parentKey].push(folder._id)\n    }\n  })\n\n  const sortByName = (ids: string[]) =>\n    ids.sort((a, b) =>\n      (byId[a]?.name || '').localeCompare(byId[b]?.name || '', undefined, {\n        numeric: true,\n        sensitivity: 'base',\n      }),\n    )\n\n  sortByName(rootIds)\n  Object.values(childrenByParentId).forEach((ids) => sortByName(ids))\n\n  return {byId, childrenByParentId, rootIds}\n}\n\nconst foldersSlice = createSlice({\n  name: 'folders',\n  initialState,\n  reducers: {\n    createComplete(state, _action: PayloadAction<{folder: FolderDoc}>) {\n      state.creating = false\n    },\n    createError(state, action: PayloadAction<{error: HttpError}>) {\n      state.creating = false\n      state.creatingError = action.payload.error\n    },\n    createRequest(state, _action: PayloadAction<{name: string; parentId?: string | null}>) {\n      state.creating = true\n      delete state.creatingError\n    },\n    currentFolderClear(state) {\n      state.currentFolderId = null\n      state.currentFolderUnfiled = false\n    },\n    currentFolderSet(state, action: PayloadAction<{folderId: string}>) {\n      state.currentFolderId = action.payload.folderId\n      state.currentFolderUnfiled = false\n    },\n    currentFolderShowUnfiled(state) {\n      state.currentFolderId = null\n      state.currentFolderUnfiled = true\n    },\n    deleteComplete(\n      state,\n      action: PayloadAction<{\n        folderId: string\n        deletedIds: string[]\n        clearedCurrentFolder?: boolean\n      }>,\n    ) {\n      state.deletingId = undefined\n      const removed = new Set(action.payload.deletedIds)\n      if (state.currentFolderId && removed.has(state.currentFolderId)) {\n        state.currentFolderId = null\n        state.currentFolderUnfiled = false\n      }\n    },\n    deleteError(state, action: PayloadAction<{error: HttpError; folderId: string}>) {\n      state.deletingId = undefined\n      state.deleteError = action.payload.error\n    },\n    deleteRequest(state, action: PayloadAction<{folderId: string}>) {\n      state.deletingId = action.payload.folderId\n      delete state.deleteError\n    },\n    fetchComplete(\n      state,\n      action: PayloadAction<{\n        folders: FolderDoc[]\n        exactCountByFolderId: Record<string, number>\n        unfiledCount: number\n        clearedCurrentFolder?: boolean\n      }>,\n    ) {\n      const {byId, childrenByParentId, rootIds} = indexFolders(action.payload.folders)\n      state.byId = byId\n      state.childrenByParentId = childrenByParentId\n      state.rootIds = rootIds\n      state.exactCountByFolderId = action.payload.exactCountByFolderId\n      state.unfiledCount = action.payload.unfiledCount\n      state.fetching = false\n      state.fetchCount = action.payload.folders.length\n      delete state.fetchingError\n\n      if (state.currentFolderId && !byId[state.currentFolderId]) {\n        state.currentFolderId = null\n        state.currentFolderUnfiled = false\n      }\n    },\n    fetchError(state, action: PayloadAction<{error: HttpError}>) {\n      state.fetching = false\n      state.fetchingError = action.payload.error\n    },\n    fetchRequest(state) {\n      state.fetching = true\n      delete state.fetchingError\n    },\n    panelVisibleSet(state, action: PayloadAction<{panelVisible: boolean}>) {\n      state.panelVisible = action.payload.panelVisible\n    },\n    renameComplete(state, _action: PayloadAction<{folderId: string; name: string}>) {\n      state.renaming = false\n    },\n    renameError(state, action: PayloadAction<{error: HttpError}>) {\n      state.renaming = false\n      state.renameError = action.payload.error\n    },\n    renameRequest(state, _action: PayloadAction<{folderId: string; name: string}>) {\n      state.renaming = true\n      delete state.renameError\n    },\n  },\n})\n\nexport const foldersFetchEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(foldersSlice.actions.fetchRequest.match),\n    withLatestFrom(state$),\n    switchMap(([action, state]) =>\n      of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() => {\n          const assetTypes = state.assets.assetTypes.map((type) => `sanity.${type}Asset`)\n          const excludeTagsFragment = buildExcludeTagsFragment(state.assets.excludeTagSlugs)\n          const excludeTagsClause = excludeTagsFragment ? `&& ${excludeTagsFragment}` : ''\n          return client.observable.fetch<{\n            folders: {_id: string; name?: string; parentId?: string | null; count: number}[]\n            unfiledCount: number\n          }>(\n            groq`{\n              \"folders\": *[\n                _type == \"${FOLDER_DOCUMENT_NAME}\"\n                && !(_id in path(\"drafts.**\"))\n              ] {\n                _id,\n                name,\n                \"parentId\": parent._ref,\n                \"count\": count(*[\n                  _type in ${JSON.stringify(assetTypes)}\n                  && !(_id in path(\"drafts.**\"))\n                  && opt.media.folder._ref == ^._id\n                  ${excludeTagsClause}\n                ])\n              },\n              \"unfiledCount\": count(*[\n                _type in ${JSON.stringify(assetTypes)}\n                && !(_id in path(\"drafts.**\"))\n                && !defined(opt.media.folder._ref)\n                ${excludeTagsClause}\n              ])\n            }`,\n          )\n        }),\n        mergeMap((result) => {\n          const folders: FolderDoc[] = result.folders.map((f) => ({\n            _id: f._id,\n            name: f.name || '',\n            parentId: f.parentId || null,\n          }))\n          const exactCountByFolderId: Record<string, number> = {}\n          result.folders.forEach(({_id, count}) => {\n            exactCountByFolderId[_id] = count\n          })\n          const folderIds = new Set(folders.map((folder) => folder._id))\n          const clearedCurrentFolder = Boolean(\n            state.folders.currentFolderId && !folderIds.has(state.folders.currentFolderId),\n          )\n          return of(\n            foldersSlice.actions.fetchComplete({\n              folders,\n              exactCountByFolderId,\n              unfiledCount: result.unfiledCount,\n              clearedCurrentFolder,\n            }),\n          )\n        }),\n        catchError((error: ClientError) =>\n          of(\n            foldersSlice.actions.fetchError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      ),\n    ),\n  )\n\nexport const foldersRefreshEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(\n      (action) =>\n        assetsActions.deleteComplete.match(action) ||\n        assetsActions.folderSetComplete.match(action) ||\n        foldersSlice.actions.createComplete.match(action) ||\n        foldersSlice.actions.deleteComplete.match(action) ||\n        foldersSlice.actions.renameComplete.match(action) ||\n        assetsActions.listenerCreateQueueComplete.match(action) ||\n        assetsActions.listenerDeleteQueueComplete.match(action) ||\n        assetsActions.listenerUpdateQueueComplete.match(action) ||\n        assetsActions.updateComplete.match(action) ||\n        UPLOADS_ACTIONS.uploadComplete.match(action),\n    ),\n    debounceTime(300),\n    mergeMap(() => of(foldersSlice.actions.fetchRequest())),\n  )\n\nexport const foldersCurrentFolderEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(\n      (action) =>\n        foldersSlice.actions.currentFolderClear.match(action) ||\n        foldersSlice.actions.currentFolderSet.match(action) ||\n        foldersSlice.actions.currentFolderShowUnfiled.match(action) ||\n        (foldersSlice.actions.deleteComplete.match(action) &&\n          Boolean(action.payload.clearedCurrentFolder)) ||\n        (foldersSlice.actions.fetchComplete.match(action) &&\n          Boolean(action.payload.clearedCurrentFolder)),\n    ),\n    mergeMap(() =>\n      of(\n        assetsActions.clear(),\n        assetsActions.pickClear(),\n        assetsActions.loadPageIndex({pageIndex: 0}),\n      ),\n    ),\n  )\n\nconst patchOperationAssetFolderUnset = (patch: Patch) => patch.unset(['opt.media.folder'])\n\nconst patchOperationFolderParentSet =\n  ({parentId}: {parentId: string | null}) =>\n  (patch: Patch) => {\n    if (parentId) {\n      return patch.set({parent: {_ref: parentId, _type: 'reference', _weak: true}})\n    }\n\n    return patch.unset(['parent'])\n  }\n\nexport const foldersCreateEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(foldersSlice.actions.createRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const name = action.payload.name.trim()\n      const parentId = action.payload.parentId || null\n\n      if (!name) {\n        return of(\n          foldersSlice.actions.createError({\n            error: {message: 'Folder name cannot be empty', statusCode: 400},\n          }),\n        )\n      }\n\n      const siblingIds = parentId\n        ? state.folders.childrenByParentId[parentId] || []\n        : state.folders.rootIds\n      const collision = siblingIds.some(\n        (id) => state.folders.byId[id]?.name.toLowerCase() === name.toLowerCase(),\n      )\n      if (collision) {\n        return of(\n          foldersSlice.actions.createError({\n            error: {message: 'A folder with this name already exists here', statusCode: 409},\n          }),\n        )\n      }\n\n      const newId = `${FOLDER_DOCUMENT_NAME}.${nanoid()}`\n      const doc: {\n        _id: string\n        _type: string\n        name: string\n        parent?: {_ref: string; _type: 'reference'; _weak: true}\n      } = {\n        _id: newId,\n        _type: FOLDER_DOCUMENT_NAME,\n        name,\n      }\n      if (parentId) {\n        doc.parent = {_ref: parentId, _type: 'reference', _weak: true}\n      }\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() => client.observable.create(doc)),\n        mergeMap(() =>\n          of(\n            foldersSlice.actions.createComplete({folder: {_id: newId, name, parentId}}),\n            foldersSlice.actions.currentFolderSet({folderId: newId}),\n          ),\n        ),\n        catchError((error: ClientError) =>\n          of(\n            foldersSlice.actions.createError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const foldersDeleteEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(foldersSlice.actions.deleteRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const folderId = action.payload.folderId\n      const childFolderIds = state.folders.childrenByParentId[folderId] || []\n      const parentId = state.folders.byId[folderId]?.parentId ?? null\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() =>\n          client.observable.fetch<{assets: {_id: string}[]}>(\n            groq`{\n              \"assets\": *[\n                _type in ${JSON.stringify(\n                  state.assets.assetTypes.map((type) => `sanity.${type}Asset`),\n                )}\n                && !(_id in path(\"drafts.**\"))\n                && opt.media.folder._ref == $folderId\n              ] {\n                _id\n              }\n            }`,\n            {folderId},\n          ),\n        ),\n        mergeMap((result) => {\n          const tx = client.transaction()\n          // Deleting a folder only removes the folder document. Assets keep living in the\n          // library with their folder assignment cleared, and direct child folders are promoted\n          // to the deleted folder's parent (or root).\n          result.assets.forEach((asset) => tx.patch(asset._id, patchOperationAssetFolderUnset))\n          childFolderIds.forEach((childFolderId) =>\n            tx.patch(childFolderId, patchOperationFolderParentSet({parentId})),\n          )\n          tx.delete(folderId)\n\n          return from(tx.commit()).pipe(\n            map(() =>\n              foldersSlice.actions.deleteComplete({\n                folderId,\n                deletedIds: [folderId],\n                clearedCurrentFolder: state.folders.currentFolderId === folderId,\n              }),\n            ),\n          )\n        }),\n        catchError((error: ClientError) =>\n          of(\n            foldersSlice.actions.deleteError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n              folderId,\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const foldersRenameEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(foldersSlice.actions.renameRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {folderId} = action.payload\n      const name = action.payload.name.trim()\n      const folder = state.folders.byId[folderId]\n\n      if (!folder) {\n        return of(\n          foldersSlice.actions.renameError({\n            error: {message: 'Folder not found', statusCode: 404},\n          }),\n        )\n      }\n\n      if (!name) {\n        return of(\n          foldersSlice.actions.renameError({\n            error: {message: 'Folder name cannot be empty', statusCode: 400},\n          }),\n        )\n      }\n\n      if (name === folder.name) {\n        return of(\n          foldersSlice.actions.renameError({\n            error: {message: 'Folder name has not changed', statusCode: 400},\n          }),\n        )\n      }\n\n      const siblingIds = folder.parentId\n        ? state.folders.childrenByParentId[folder.parentId] || []\n        : state.folders.rootIds\n      const collision = siblingIds.some(\n        (id) =>\n          id !== folderId && state.folders.byId[id]?.name.toLowerCase() === name.toLowerCase(),\n      )\n      if (collision) {\n        return of(\n          foldersSlice.actions.renameError({\n            error: {message: 'A folder with this name already exists here', statusCode: 409},\n          }),\n        )\n      }\n\n      return of(action).pipe(\n        debugThrottle(state.debug.badConnection),\n        mergeMap(() => client.observable.patch(folderId).set({name}).commit()),\n        mergeMap(() => of(foldersSlice.actions.renameComplete({folderId, name}))),\n        catchError((error: ClientError) =>\n          of(\n            foldersSlice.actions.renameError({\n              error: {\n                message: error?.message || 'Internal error',\n                statusCode: error?.statusCode || 500,\n              },\n            }),\n          ),\n        ),\n      )\n    }),\n  )\n\nconst selectById = (state: RootReducerState) => state.folders.byId\nconst selectChildrenByParentId = (state: RootReducerState) => state.folders.childrenByParentId\nconst selectRootIds = (state: RootReducerState) => state.folders.rootIds\nconst selectExactCountByFolderId = (state: RootReducerState) => state.folders.exactCountByFolderId\nconst selectCurrentFolderId = (state: RootReducerState) => state.folders.currentFolderId\nconst selectCurrentFolderUnfiled = (state: RootReducerState) => state.folders.currentFolderUnfiled\n\nconst buildFolderPath = (folderId: string, byId: Record<string, FolderDoc>): string => {\n  const segments: string[] = []\n  let cursor: string | null = folderId\n  const seen = new Set<string>()\n  while (cursor && !seen.has(cursor)) {\n    const folder: FolderDoc | undefined = byId[cursor]\n    if (!folder) break\n    seen.add(cursor)\n    segments.unshift(folder.name)\n    cursor = folder.parentId\n  }\n  return segments.join('/')\n}\n\nexport const selectFolderPathById = createSelector(\n  [selectById, (_state: RootReducerState, folderId: string | null | undefined) => folderId],\n  (byId, folderId) => (folderId ? buildFolderPath(folderId, byId) : ''),\n)\n\nexport const selectFolderTree = createSelector(\n  [selectById, selectChildrenByParentId, selectRootIds, selectExactCountByFolderId],\n  (byId, childrenByParentId, rootIds, exactCountByFolderId): FolderTreeNode[] => {\n    const buildNode = (folderId: string): FolderTreeNode => {\n      const folder = byId[folderId]\n      const children = (childrenByParentId[folderId] || []).map(buildNode)\n      const exactCount = exactCountByFolderId[folderId] || 0\n      const totalCount = children.reduce((sum, child) => sum + child.totalCount, exactCount)\n      return {\n        children,\n        exactCount,\n        id: folderId,\n        name: folder?.name || '',\n        parentId: folder?.parentId ?? null,\n        path: buildFolderPath(folderId, byId),\n        totalCount,\n      }\n    }\n\n    return rootIds.map(buildNode)\n  },\n)\n\nexport const selectCurrentFolderSegments = createSelector(\n  [selectById, selectCurrentFolderId],\n  (byId, currentFolderId): FolderTreeItem[] => {\n    if (!currentFolderId) return []\n    const chain: string[] = []\n    let cursor: string | null = currentFolderId\n    const seen = new Set<string>()\n    while (cursor && !seen.has(cursor)) {\n      const folder: FolderDoc | undefined = byId[cursor]\n      if (!folder) break\n      seen.add(cursor)\n      chain.unshift(cursor)\n      cursor = folder.parentId\n    }\n    return chain.map((id, depth) => ({\n      depth,\n      exactCount: 0,\n      id,\n      name: byId[id]?.name || '',\n      parentId: byId[id]?.parentId ?? null,\n      path: buildFolderPath(id, byId),\n      totalCount: 0,\n    }))\n  },\n)\n\ntype FoldersIndex = {\n  byId: Record<string, FolderDoc>\n  childrenByParentId: Record<string, string[]>\n  rootIds: string[]\n  exactCountByFolderId: Record<string, number>\n}\n\nconst selectFoldersIndex = createSelector(\n  [selectById, selectChildrenByParentId, selectRootIds, selectExactCountByFolderId],\n  (byId, childrenByParentId, rootIds, exactCountByFolderId): FoldersIndex => ({\n    byId,\n    childrenByParentId,\n    rootIds,\n    exactCountByFolderId,\n  }),\n)\n\nexport const selectCurrentFolderChildren = createSelector(\n  [selectFoldersIndex, selectCurrentFolderId, selectCurrentFolderUnfiled],\n  (\n    {byId, childrenByParentId, rootIds, exactCountByFolderId},\n    currentFolderId,\n    currentFolderUnfiled,\n  ): FolderTreeItem[] => {\n    if (currentFolderUnfiled || !currentFolderId) return []\n    const ids = currentFolderId ? childrenByParentId[currentFolderId] || [] : rootIds\n    const depth = currentFolderId ? buildFolderPath(currentFolderId, byId).split('/').length : 0\n    return ids.map((id) => {\n      const folder = byId[id]\n      // Sum totalCount over the subtree.\n      const stack = [id]\n      let totalCount = 0\n      while (stack.length) {\n        const cur = stack.pop()!\n        totalCount += exactCountByFolderId[cur] || 0\n        const kids = childrenByParentId[cur]\n        if (kids) stack.push(...kids)\n      }\n      return {\n        depth,\n        exactCount: exactCountByFolderId[id] || 0,\n        id,\n        name: folder?.name || '',\n        parentId: folder?.parentId ?? null,\n        path: buildFolderPath(id, byId),\n        totalCount,\n      }\n    })\n  },\n)\n\nexport const selectCanDeleteFolder = createSelector(\n  [selectCurrentFolderId],\n  (currentFolderId) => !!currentFolderId,\n)\n\nexport const foldersActions = {...foldersSlice.actions}\n\nexport default foldersSlice.reducer\n","import {createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport pluralize from 'pluralize'\nimport {ofType} from 'redux-observable'\nimport {EMPTY, of} from 'rxjs'\nimport {filter, mergeMap} from 'rxjs/operators'\n\nimport type {AssetItem, Dialog, MyEpic, Tag} from '../../types'\nimport {assetsActions} from '../assets'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {foldersActions} from '../folders'\nimport {tagsActions} from '../tags'\nimport {DIALOG_ACTIONS} from './actions'\n\ntype DialogReducerState = {\n  items: Dialog[]\n}\n\nconst initialState = {\n  items: [],\n} as DialogReducerState\n\nconst dialogSlice = createSlice({\n  name: 'dialog',\n  initialState,\n  extraReducers: (builder) => {\n    builder\n      .addCase(DIALOG_ACTIONS.showFolderCreate, (state, action) => {\n        const {parentFolderId} = action.payload\n        state.items.push({\n          parentFolderId,\n          id: 'folderCreate',\n          type: 'folderCreate',\n        })\n      })\n      .addCase(DIALOG_ACTIONS.showFolderMove, (state, action) => {\n        const {assets, folderId} = action.payload\n        state.items.push({\n          assets,\n          folderId,\n          id: 'folderMove',\n          type: 'folderMove',\n        })\n      })\n      .addCase(DIALOG_ACTIONS.showFolderRename, (state, action) => {\n        const {folderId} = action.payload\n        state.items.push({\n          folderId,\n          id: 'folderRename',\n          type: 'folderRename',\n        })\n      })\n      .addCase(DIALOG_ACTIONS.showTagCreate, (state) => {\n        state.items.push({\n          id: 'tagCreate',\n          type: 'tagCreate',\n        })\n      })\n      .addCase(DIALOG_ACTIONS.showTagEdit, (state, action) => {\n        const {tagId} = action.payload\n        state.items.push({\n          id: tagId,\n          tagId,\n          type: 'tagEdit',\n        })\n      })\n      .addCase(foldersActions.createComplete, (state) => {\n        state.items = state.items.filter((item) => item.id !== 'folderCreate')\n      })\n      .addCase(foldersActions.renameComplete, (state) => {\n        state.items = state.items.filter((item) => item.id !== 'folderRename')\n      })\n  },\n  reducers: {\n    // Clear all dialogs\n    clear(state) {\n      state.items = []\n    },\n    // Add newly created inline tag to assetEdit dialog\n    inlineTagCreate(state, action: PayloadAction<{assetId: string; tag: Tag}>) {\n      const {assetId, tag} = action.payload\n\n      state.items.forEach((item) => {\n        if (item.type === 'assetEdit' && item.assetId === assetId) {\n          item.lastCreatedTag = {\n            label: tag.name.current,\n            value: tag._id,\n          }\n        }\n      })\n    },\n    // Remove inline tags from assetEdit dialog\n    inlineTagRemove(state, action: PayloadAction<{tagIds: string[]}>) {\n      const {tagIds} = action.payload\n\n      state.items.forEach((item) => {\n        if (item.type === 'assetEdit') {\n          item.lastRemovedTagIds = tagIds\n        }\n      })\n    },\n    // Remove dialog by id\n    remove(state, action: PayloadAction<{id: string}>) {\n      const id = action.payload?.id\n      state.items = state.items.filter((item) => item.id !== id)\n    },\n    showConfirmAssetsTagAdd(\n      state,\n      action: PayloadAction<{\n        assetsPicked: AssetItem[]\n        closeDialogId?: string\n        tag: Tag\n      }>,\n    ) {\n      const {assetsPicked, closeDialogId, tag} = action.payload\n\n      const suffix = `${assetsPicked.length} ${pluralize('asset', assetsPicked.length)}`\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: ASSETS_ACTIONS.tagsAddRequest({\n          assets: assetsPicked,\n          tag,\n        }),\n        confirmText: `Yes, add tag to ${suffix}`,\n        title: `Add tag ${tag.name.current} to ${suffix}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm tag addition',\n        tone: 'primary',\n        type: 'confirm',\n      })\n    },\n    showConfirmAssetsTagRemove(\n      state,\n      action: PayloadAction<{\n        assetsPicked: AssetItem[]\n        closeDialogId?: string\n        tag: Tag\n      }>,\n    ) {\n      const {assetsPicked, closeDialogId, tag} = action.payload\n\n      const suffix = `${assetsPicked.length} ${pluralize('asset', assetsPicked.length)}`\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: ASSETS_ACTIONS.tagsRemoveRequest({assets: assetsPicked, tag}),\n        confirmText: `Yes, remove tag from ${suffix}`,\n        headerTitle: 'Confirm tag removal',\n        id: 'confirm',\n        title: `Remove tag ${tag.name.current} from ${suffix}?`,\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showConfirmDeleteAssets(\n      state,\n      action: PayloadAction<{assets: AssetItem[]; closeDialogId?: string}>,\n    ) {\n      const {assets, closeDialogId} = action.payload\n\n      const suffix = `${assets.length} ${pluralize('asset', assets.length)}`\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: assetsActions.deleteRequest({\n          assets: assets.map((assetItem) => assetItem.asset),\n        }),\n        confirmText: `Yes, delete ${suffix}`,\n        description: 'This operation cannot be reversed. Are you sure you want to continue?',\n        title: `Permanently delete ${suffix}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm deletion',\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showConfirmDeleteFolder(\n      state,\n      action: PayloadAction<{closeDialogId?: string; folderId: string; folderName: string}>,\n    ) {\n      const {closeDialogId, folderId, folderName} = action.payload\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: foldersActions.deleteRequest({folderId}),\n        confirmText: `Yes, delete folder`,\n        description:\n          'This deletes only the selected folder. Assets in this folder will stay in the library and have their folder assignment removed. Nested folders will move up one level.',\n        title: `Delete ${folderName}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm folder deletion',\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showConfirmDeleteTag(state, action: PayloadAction<{closeDialogId?: string; tag: Tag}>) {\n      const {closeDialogId, tag} = action.payload\n\n      const suffix = 'tag'\n\n      state.items.push({\n        closeDialogId,\n        confirmCallbackAction: tagsActions.deleteRequest({tag}),\n        confirmText: `Yes, delete ${suffix}`,\n        description: 'This operation cannot be reversed. Are you sure you want to continue?',\n        title: `Permanently delete ${suffix}?`,\n        id: 'confirm',\n        headerTitle: 'Confirm deletion',\n        tone: 'critical',\n        type: 'confirm',\n      })\n    },\n    showAllAssetsDialog(state, action: PayloadAction<{assetId: string}>) {\n      if (state.items.some((item) => item.type === 'dialogAllAssets')) {\n        return\n      }\n      state.items.push({\n        assetId: action.payload.assetId,\n        id: 'dialogAllAssets',\n        type: 'dialogAllAssets',\n      })\n    },\n    showAssetEdit(state, action: PayloadAction<{assetId: string}>) {\n      const {assetId} = action.payload\n      state.items.push({\n        assetId,\n        id: assetId,\n        type: 'assetEdit',\n      })\n    },\n    showSearchFacets(state) {\n      state.items.push({\n        id: 'searchFacets',\n        type: 'searchFacets',\n      })\n    },\n    showFolders(state) {\n      state.items.push({\n        id: 'folders',\n        type: 'folders',\n      })\n    },\n    showTags(state) {\n      state.items.push({\n        id: 'tags',\n        type: 'tags',\n      })\n    },\n  },\n})\n\n// Epics\n\nexport const dialogClearOnAssetUpdateEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.deleteComplete.type,\n      assetsActions.folderSetComplete.type,\n      assetsActions.updateComplete.type,\n      tagsActions.deleteComplete.type,\n      tagsActions.updateComplete.type,\n    ),\n    filter(\n      (action: {\n        payload: {closeDialogId?: string}\n      }): action is PayloadAction<{closeDialogId?: string}> => !!action?.payload?.closeDialogId,\n    ),\n    mergeMap((action) => {\n      const dialogId = action?.payload?.closeDialogId\n      if (dialogId) {\n        return of(dialogSlice.actions.remove({id: dialogId}))\n      }\n      return EMPTY\n    }),\n  )\n\nexport const dialogTagCreateEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.createComplete.match),\n    mergeMap((action) => {\n      const {assetId, tag} = action?.payload || {}\n\n      if (assetId) {\n        return of(dialogSlice.actions.inlineTagCreate({tag, assetId}))\n      }\n\n      if (tag._id) {\n        return of(dialogSlice.actions.remove({id: 'tagCreate'}))\n      }\n\n      return EMPTY\n    }),\n  )\n\nexport const dialogTagDeleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.listenerDeleteQueueComplete.match),\n    mergeMap((action) => {\n      const {tagIds} = action?.payload || {}\n\n      return of(dialogSlice.actions.inlineTagRemove({tagIds}))\n    }),\n  )\n\nexport const dialogActions = {...dialogSlice.actions}\n\nexport default dialogSlice.reducer\n","import {createGlobalStyle, css} from 'styled-components'\n\nconst customScrollbar = css`\n  ::-webkit-scrollbar {\n    width: 14px;\n  }\n\n  ::-webkit-scrollbar-thumb {\n    border-radius: 10px;\n    border: 4px solid rgba(0, 0, 0, 0);\n    background: var(--card-border-color);\n    background-clip: padding-box;\n\n    &:hover {\n      background: var(--card-muted-fg-color);\n      background-clip: padding-box;\n    }\n  }\n`\n\nconst GlobalStyle = createGlobalStyle`\n  .media__custom-scrollbar {\n    ${customScrollbar}\n  }\n\n  // @sanity/ui overrides\n\n  // Custom scrollbar on Box (used in Dialogs)\n  div[data-ui=\"Box\"] {\n    ${customScrollbar}\n  }\n\n  // Dialog background color\n  div[data-ui=\"Dialog\"] {\n    background-color: rgba(15, 17, 18, 0.9);\n  }\n\n`\n\nexport default GlobalStyle\n","import {type PropsWithChildren, createContext, useContext, useMemo} from 'react'\nimport type {DropzoneOptions} from 'react-dropzone'\n\nimport type {MediaToolOptions, Locale} from '../types'\n\ntype ContextProps = {\n  dropzone: Pick<DropzoneOptions, 'maxSize'>\n  components: MediaToolOptions['components']\n  createTagsOnUpload: boolean\n  creditLine: MediaToolOptions['creditLine']\n  directUploads: MediaToolOptions['directUploads']\n  excludeTagSlugs: string[]\n  locales?: Locale[]\n}\n\nconst ToolOptionsContext = createContext<ContextProps | null>(null)\n\ntype Props = {\n  options?: MediaToolOptions | void\n}\n\nexport const ToolOptionsProvider = ({options, children}: PropsWithChildren<Props>) => {\n  // oxlint-disable-next-line react-compiler\n  const value = useMemo<ContextProps>(() => {\n    let creditLineExcludeSources\n\n    if (options?.creditLine?.excludeSources) {\n      creditLineExcludeSources = Array.isArray(options?.creditLine?.excludeSources)\n        ? options.creditLine.excludeSources\n        : [options?.creditLine?.excludeSources]\n    }\n\n    return {\n      dropzone: {maxSize: options?.maximumUploadSize},\n      components: {\n        details: options?.components?.details,\n      },\n      createTagsOnUpload: options?.createTagsOnUpload ?? true,\n      creditLine: {\n        enabled: options?.creditLine?.enabled || false,\n        excludeSources: creditLineExcludeSources,\n      },\n      directUploads: options?.directUploads ?? true,\n      excludeTagSlugs: options?.excludeTags?.length ? [...options.excludeTags] : [],\n      locales: options?.locales,\n    }\n  }, [\n    options?.creditLine?.enabled,\n    options?.components,\n    options?.createTagsOnUpload,\n    options?.creditLine?.excludeSources,\n    options?.excludeTags,\n    options?.maximumUploadSize,\n    options?.directUploads,\n    options?.locales,\n  ])\n\n  return <ToolOptionsContext.Provider value={value}>{children}</ToolOptionsContext.Provider>\n}\n\nexport const useToolOptions = () => {\n  const context = useContext(ToolOptionsContext)\n\n  if (!context) {\n    throw new Error('useToolOptions must be used within an ToolOptionsProvider')\n  }\n\n  return context\n}\n","import * as z from 'zod'\n\n// Helper to generate localized string schema\nfunction localizedStringSchema(locales?: {id: string}[]) {\n  if (!locales || locales.length === 0) {\n    return z.string().trim().optional()\n  }\n  const shape: Record<string, z.ZodTypeAny> = {}\n  for (const locale of locales) {\n    shape[locale.id] = z.string().trim().optional()\n  }\n  return z.object(shape).passthrough()\n}\n\nexport const tagOptionSchema = z.object({\n  label: z.string().trim().min(1, {message: 'Label cannot be empty'}),\n  value: z.string().trim().min(1, {message: 'Value cannot be empty'}),\n})\n\nexport function getAssetFormSchema(locales?: {id: string}[]) {\n  return z.object({\n    altText: localizedStringSchema(locales),\n    creditLine: localizedStringSchema(locales),\n    description: localizedStringSchema(locales),\n    opt: z.object({\n      media: z.object({\n        tags: z.array(tagOptionSchema).nullable(),\n      }),\n    }),\n    originalFilename: z.string().trim().min(1, {message: 'Filename cannot be empty'}),\n    title: localizedStringSchema(locales),\n  })\n}\n\nexport const assetFormSchema = getAssetFormSchema()\n\nexport const tagFormSchema = z.object({\n  name: z.string().min(1, {message: 'Name cannot be empty'}),\n})\n\nexport const folderFormSchema = z.object({\n  name: z.string().trim().min(1, {message: 'Name cannot be empty'}),\n})\n","import type {SanityDocument} from '@sanity/client'\n\nexport function getUniqueDocuments(documents: SanityDocument[]): SanityDocument[] {\n  const draftIds = documents.reduce(\n    (acc: string[], doc: SanityDocument) =>\n      doc._id.startsWith('drafts.') ? acc.concat(doc._id.slice(7)) : acc,\n    [],\n  )\n\n  const filteredDocuments: SanityDocument[] = documents.filter(\n    (doc: SanityDocument) => !draftIds.includes(doc._id),\n  )\n\n  return filteredDocuments\n}\n","import type {ImageAsset} from '../types'\n\nconst imageDprUrl = (\n  asset: ImageAsset,\n  options: {\n    width: number\n    height?: number\n  },\n): string => {\n  const dpi =\n    typeof window === 'undefined' || !window.devicePixelRatio\n      ? 1\n      : Math.round(window.devicePixelRatio)\n  const imgH = options?.height ? options?.height * Math.max(1, dpi) : undefined\n  const imgW = options.width * Math.max(1, dpi)\n\n  const urlParams = new URLSearchParams()\n  urlParams.append('fit', 'max')\n  urlParams.append('w', imgW.toString())\n  if (imgH) {\n    urlParams.append('h', imgH.toString())\n  }\n\n  return `${asset.url}?${urlParams.toString()}`\n}\n\nexport default imageDprUrl\n","// Recursively sanitize form data:\n// - convert empty strings, undefined values and empty arrays to null (to correctly unset / delete fields)\n// - trim whitespace on string fleids\n\ntype FormData = Record<string, any>\n\nconst sanitizeFormData = (formData: FormData): FormData => {\n  return Object.keys(formData).reduce((acc: FormData, key) => {\n    const val = formData[key]\n\n    // TODO: refactor\n    if (typeof val === 'object' && val !== null && val.constructor !== Array) {\n      acc[key] = sanitizeFormData(val)\n    } else if (val === '' || typeof val === 'undefined' || val?.length === 0) {\n      acc[key] = null\n    } else if (typeof val === 'string' && val) {\n      acc[key] = formData[key].trim()\n    } else {\n      acc[key] = formData[key]\n    }\n\n    return acc\n  }, {})\n}\n\nexport default sanitizeFormData\n","import type {Asset, FileAsset, ImageAsset} from '../types'\n\nexport const isFileAsset = (asset: Asset): asset is FileAsset => {\n  return (asset as FileAsset)._type === 'sanity.fileAsset'\n}\n\nexport const isImageAsset = (asset: Asset): asset is ImageAsset => {\n  return (asset as ImageAsset)._type === 'sanity.imageAsset'\n}\n","import {zodResolver} from '@hookform/resolvers/zod'\nimport type {FieldValues, Resolver} from 'react-hook-form'\n\n/**\n * `@hookform/resolvers/zod` resolves its own `zod` typings through dependency\n * hoisting, which in this monorepo lands on zod v4, while this plugin authors its\n * form schemas with zod v3. The resolver accepts v3 schema instances correctly at\n * runtime, so this thin wrapper only bridges the type-only v3/v4 mismatch. The\n * react-hook-form field types stay fully checked at the call sites.\n */\nexport default function zodFormResolver<TFieldValues extends FieldValues>(\n  schema: unknown,\n): Resolver<TFieldValues> {\n  return zodResolver(\n    schema as Parameters<typeof zodResolver>[0],\n  ) as unknown as Resolver<TFieldValues>\n}\n","import type {ImageAsset} from '../types'\n\nconst getAssetResolution = (asset: ImageAsset) => {\n  return `${asset.metadata.dimensions.width}x${asset.metadata.dimensions.height}px`\n}\n\nexport default getAssetResolution\n","import {usePortal} from '@sanity/ui'\nimport {type PopoverProps} from '@sanity/ui/popover'\n\nexport function usePortalPopoverProps(): PopoverProps {\n  const portal = usePortal()\n\n  return {\n    animate: true,\n    constrainSize: true,\n    floatingBoundary: portal.element,\n    portal: true,\n    referenceBoundary: portal.element,\n  }\n}\n","import {ClipboardIcon} from '@sanity/icons/Clipboard'\nimport {Button, Text} from '@sanity/ui'\nimport {Popover} from '@sanity/ui/popover'\nimport copy from 'copy-to-clipboard'\nimport {useEffect, useRef, useState} from 'react'\n\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\n\ntype Props = {\n  disabled?: boolean\n  url: string\n}\n\nconst ButtonAssetCopy = ({disabled, url}: Props) => {\n  const popoverProps = usePortalPopoverProps()\n  const refPopoverTimeout = useRef<ReturnType<typeof window.setTimeout>>(null)\n  const [popoverVisible, setPopoverVisible] = useState(false)\n\n  const handleClick = () => {\n    if (refPopoverTimeout.current) {\n      clearTimeout(refPopoverTimeout.current)\n    }\n\n    setPopoverVisible(true)\n    copy(url)\n\n    refPopoverTimeout.current = setTimeout(() => {\n      setPopoverVisible(false)\n    }, 1250)\n  }\n\n  // Effects\n  useEffect(() => {\n    return () => {\n      if (refPopoverTimeout.current) {\n        clearTimeout(refPopoverTimeout.current)\n      }\n    }\n  }, [])\n\n  return (\n    <Popover\n      content={\n        <Text muted size={1}>\n          Copied!\n        </Text>\n      }\n      open={popoverVisible}\n      padding={2}\n      placement=\"top\"\n      radius={1}\n      {...popoverProps}\n    >\n      <Button\n        disabled={disabled}\n        fontSize={1}\n        icon={ClipboardIcon}\n        mode=\"ghost\"\n        onClick={handleClick}\n        text=\"Copy URL\"\n      />\n    </Popover>\n  )\n}\n\nexport default ButtonAssetCopy\n","import {DownloadIcon} from '@sanity/icons/Download'\nimport {Box, Button, Flex, Inline, Stack, Text} from '@sanity/ui'\nimport {format} from 'date-fns/format'\nimport filesize from 'filesize'\nimport {type ReactNode} from 'react'\n\nimport type {Asset, AssetItem} from '../../types'\nimport getAssetResolution from '../../utils/getAssetResolution'\nimport {isImageAsset} from '../../utils/typeGuards'\nimport ButtonAssetCopy from '../ButtonAssetCopy'\n\ntype Props = {\n  asset: Asset\n  item?: AssetItem\n}\n\nconst Row = ({label, value}: {label: string; value: ReactNode}) => {\n  return (\n    <Flex justify=\"space-between\">\n      <Text\n        size={1}\n        style={{\n          opacity: 0.8,\n          width: '40%',\n        }}\n        textOverflow=\"ellipsis\"\n      >\n        {label}\n      </Text>\n      <Text\n        size={1}\n        style={{\n          opacity: 0.4,\n          textAlign: 'right',\n          width: '60%',\n        }}\n        textOverflow=\"ellipsis\"\n      >\n        {value}\n      </Text>\n    </Flex>\n  )\n}\n\nconst AssetMetadata = (props: Props) => {\n  const {asset, item} = props\n\n  const exif = asset?.metadata?.exif\n\n  // Callbacks\n  const handleDownload = () => {\n    window.location.href = `${asset.url}?dl=${asset.originalFilename}`\n  }\n\n  return (\n    <Box marginTop={3}>\n      {/* Base */}\n      <Box>\n        <Stack gap={3}>\n          <Row label=\"Size\" value={filesize(asset?.size, {base: 10, round: 0})} />\n          <Row label=\"MIME type\" value={asset?.mimeType} />\n          <Row label=\"Extension\" value={asset?.extension?.toUpperCase()} />\n          {isImageAsset(asset) && <Row label=\"Dimensions\" value={getAssetResolution(asset)} />}\n        </Stack>\n      </Box>\n      {/* EXIF */}\n      {exif &&\n        (exif.DateTimeOriginal ||\n          exif.FNumber ||\n          exif.FocalLength ||\n          exif.ExposureTime ||\n          exif.ISO) && (\n          <>\n            {/* Divider */}\n            <Box\n              marginY={4}\n              style={{\n                background: 'var(--card-border-color)',\n                height: '1px',\n                width: '100%',\n              }}\n            />\n            <Box>\n              <Stack gap={3}>\n                {exif.ISO && <Row label=\"ISO\" value={exif.ISO} />}\n                {exif.FNumber && <Row label=\"Aperture\" value={`ƒ/${exif.FNumber}`} />}\n                {exif.FocalLength && <Row label=\"Focal length\" value={`${exif.FocalLength}mm`} />}\n                {exif.ExposureTime && (\n                  <Row label=\"Exposure time\" value={`1/${1 / exif.ExposureTime}`} />\n                )}\n                {exif.DateTimeOriginal && (\n                  <Row\n                    label=\"Original date\"\n                    value={format(new Date(exif.DateTimeOriginal), 'PPp')}\n                  />\n                )}\n              </Stack>\n            </Box>\n          </>\n        )}\n\n      {/* Asset actions */}\n      <Box marginTop={5}>\n        <Inline gap={2}>\n          {/* Download */}\n          <Button\n            disabled={!item || item?.updating}\n            fontSize={1}\n            icon={DownloadIcon}\n            mode=\"ghost\"\n            onClick={handleDownload}\n            text=\"Download\"\n          />\n          {/* Copy to clipboard */}\n          <ButtonAssetCopy disabled={!item || item?.updating} url={asset.url} />\n        </Inline>\n      </Box>\n    </Box>\n  )\n}\n\nexport default AssetMetadata\n","import {Dialog as SanityDialog} from '@sanity/ui'\nimport {type ComponentProps} from 'react'\n\nconst Dialog = (props: ComponentProps<typeof SanityDialog>) => {\n  // HACK: Temporarily force fixed positioning on all @sanity/ui <Dialog /> components.\n  // The studio is currently setting absolute positioning on all root-level dialogs on the mobile breakpoint,\n  // causing unwanted scroll behaviour.\n  return <SanityDialog {...props} style={{position: 'fixed'}} />\n}\n\nexport default Dialog\n","import type {SanityDocument} from '@sanity/client'\nimport {Box, Button, Card, Stack, Text} from '@sanity/ui'\nimport {Preview, type SchemaType, useSchema} from 'sanity'\nimport {useIntentLink} from 'sanity/router'\n\ntype Props = {\n  documents: SanityDocument[]\n  isLoading: boolean\n}\n\nconst DocumentList = ({documents, isLoading}: Props) => {\n  const schema = useSchema()\n\n  if (isLoading) {\n    return (\n      <Text muted size={1}>\n        Loading...\n      </Text>\n    )\n  }\n\n  if (documents.length === 0) {\n    return (\n      <Text muted size={1}>\n        No documents are referencing this asset\n      </Text>\n    )\n  }\n\n  return (\n    <Card flex={1} marginBottom={2} padding={2} radius={2} shadow={1}>\n      <Stack gap={2}>\n        {documents?.map((doc) => (\n          <ReferringDocument doc={doc} key={doc._id} schemaType={schema.get(doc._type)} />\n        ))}\n      </Stack>\n    </Card>\n  )\n}\n\nconst ReferringDocument = (props: {doc: SanityDocument; schemaType?: SchemaType}) => {\n  const {doc, schemaType} = props\n\n  const {onClick} = useIntentLink({\n    intent: 'edit',\n    params: {id: doc._id},\n  })\n\n  return schemaType ? (\n    <Button key={doc._id} mode=\"bleed\" onClick={onClick} padding={2} style={{width: '100%'}}>\n      <Preview layout=\"default\" schemaType={schemaType} value={doc} />\n    </Button>\n  ) : (\n    <Box padding={2}>\n      <Text size={1}>\n        A document of the unknown type <em>{doc._type}</em>\n      </Text>\n    </Box>\n  )\n}\n\nexport default DocumentList\n","import {Box, Flex, type Theme} from '@sanity/ui'\nimport {type MouseEvent} from 'react'\nimport {defaultStyles, FileIcon as ReactFileIcon} from 'react-file-icon'\nimport type {DefaultExtensionType} from 'react-file-icon'\nimport {styled, css} from 'styled-components'\n\ntype Props = {\n  extension?: string\n  onClick?: (e: MouseEvent) => void\n  width: string\n}\n\n// Force react-file-icon styles\nconst Container = styled(Box)(({theme}: {theme: Theme}) => {\n  return css`\n    text {\n      font-family: ${theme.sanity.fonts.text.family} !important;\n      font-size: 8px !important;\n      font-weight: 500 !important;\n    }\n  `\n})\n\nconst FileIcon = (props: Props) => {\n  const {extension, onClick, width} = props\n\n  return (\n    <Flex align=\"center\" justify=\"center\" onClick={onClick} style={{height: '100%'}}>\n      <Container style={{width}}>\n        {extension ? (\n          <ReactFileIcon\n            extension={extension}\n            {...defaultStyles[extension as DefaultExtensionType]}\n          />\n        ) : (\n          <ReactFileIcon />\n        )}\n      </Container>\n    </Flex>\n  )\n}\n\nexport default FileIcon\n","import {Flex} from '@sanity/ui'\n\nimport type {Asset} from '../../types'\nimport FileIcon from '../FileIcon'\n\ntype Props = {\n  asset: Asset\n}\n\nconst FileAssetPreview = (props: Props) => {\n  const {asset} = props\n\n  if (asset.mimeType.search('audio') === 0) {\n    return (\n      <Flex align=\"center\" justify=\"center\" style={{height: '100%'}}>\n        <audio controls src={asset.url} style={{width: '100%'}} />\n      </Flex>\n    )\n  }\n\n  if (asset.mimeType.search('video') === 0) {\n    return (\n      <video\n        controls\n        src={asset.url}\n        style={{\n          height: '100%',\n          width: '100%',\n        }}\n      />\n    )\n  }\n\n  return <FileIcon extension={asset.extension} width=\"50%\" />\n}\n\nexport default FileAssetPreview\n","import {Box, Button, Text} from '@sanity/ui'\nimport {Tooltip} from '@sanity/ui/tooltip'\nimport {format} from 'date-fns/format'\nimport {type ReactNode} from 'react'\n\ntype Props = {\n  disabled: boolean\n  isValid: boolean\n  lastUpdated?: string\n  onClick: () => void\n}\n\nconst FormSubmitButton = (props: Props) => {\n  const {disabled, isValid, lastUpdated, onClick} = props\n\n  let content: ReactNode\n  if (isValid) {\n    if (lastUpdated) {\n      content = (\n        <>\n          Last updated\n          <br /> {format(new Date(lastUpdated), 'PPp')}\n        </>\n      )\n    } else {\n      content = 'No unpublished changes'\n    }\n  } else {\n    content =\n      'There are validation errors that need to be fixed before this document can be published'\n  }\n\n  return (\n    <Tooltip\n      animate\n      content={\n        <Box padding={3} style={{maxWidth: '185px'}}>\n          <Text muted size={1}>\n            {content}\n          </Text>\n        </Box>\n      }\n      disabled={'ontouchstart' in window}\n      placement=\"top\"\n      portal\n    >\n      <Box>\n        <Button\n          disabled={disabled}\n          fontSize={1}\n          onClick={onClick}\n          text=\"Save and close\"\n          tone=\"primary\"\n        />\n      </Box>\n    </Tooltip>\n  )\n}\n\nexport default FormSubmitButton\n","import {hues} from '@sanity/color'\nimport {type ThemeColorSchemeKey, studioTheme} from '@sanity/ui'\n\nconst SCHEME_COLORS = {\n  bg: {\n    dark: hues.gray[950].hex,\n    light: hues.gray[50].hex,\n  },\n  bg2: {\n    dark: hues.gray[900].hex,\n    light: hues.gray[100].hex,\n  },\n  inputEnabledBorder: {\n    dark: studioTheme.color.dark.default.input.default.enabled.border,\n    light: studioTheme.color.light.default.input.default.enabled.border,\n  },\n  inputHoveredBorder: {\n    dark: studioTheme.color.dark.default.input.default.hovered.border,\n    light: studioTheme.color.light.default.input.default.hovered.border,\n  },\n  mutedHoveredBg: {\n    dark: studioTheme.color.dark.primary.muted.primary.hovered.bg,\n    light: studioTheme.color.light.primary.muted.primary.hovered.bg,\n  },\n  mutedHoveredFg: {\n    dark: studioTheme.color.dark.primary.muted.primary.hovered.fg,\n    light: studioTheme.color.light.primary.muted.primary.hovered.fg,\n  },\n  mutedSelectedBg: {\n    dark: studioTheme.color.dark.primary.muted.primary.selected.bg,\n    light: studioTheme.color.light.primary.muted.primary.selected.bg,\n  },\n  spotBlue: {\n    dark: studioTheme.color.dark.primary.spot.blue,\n    light: studioTheme.color.light.primary.spot.blue,\n  },\n}\n\ntype SchemeColorKey = keyof typeof SCHEME_COLORS\n\nexport function getSchemeColor(scheme: ThemeColorSchemeKey, colorKey: SchemeColorKey): string {\n  return SCHEME_COLORS[colorKey]?.[scheme]\n}\n","import type {ThemeColorSchemeKey} from '@sanity/ui'\nimport type {MouseEvent} from 'react'\nimport {styled, css} from 'styled-components'\n\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  onClick?: (e: MouseEvent) => void\n  $showCheckerboard?: boolean\n  $scheme?: ThemeColorSchemeKey\n  src: string\n  style?: any\n}\n\nconst Image = styled.img.attrs({crossOrigin: 'anonymous' as const})<Props>`\n  --checkerboard-color: ${(props) =>\n    props.$scheme ? getSchemeColor(props.$scheme, 'bg2') : 'inherit'};\n\n  display: block;\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n\n  ${(props) =>\n    props.$showCheckerboard &&\n    css`\n      background-image:\n        linear-gradient(45deg, var(--checkerboard-color) 25%, transparent 25%),\n        linear-gradient(-45deg, var(--checkerboard-color) 25%, transparent 25%),\n        linear-gradient(45deg, transparent 75%, var(--checkerboard-color) 75%),\n        linear-gradient(-45deg, transparent 75%, var(--checkerboard-color) 75%);\n      background-size: 20px 20px;\n      background-position:\n        0 0,\n        0 10px,\n        10px -10px,\n        -10px 0;\n    `}\n`\n\nexport default Image\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Inline, Text} from '@sanity/ui'\nimport {Tooltip} from '@sanity/ui/tooltip'\nimport {styled} from 'styled-components'\n\ntype Props = {\n  description?: string\n  error?: string\n  label: string\n  name: string\n}\n\nconst StyledErrorOutlineIcon = styled(ErrorOutlineIcon)(({theme}) => {\n  return {\n    color: theme.sanity.color.spot.red,\n  }\n})\n\nconst FormFieldInputLabel = (props: Props) => {\n  const {description, error, label, name} = props\n\n  return (\n    <>\n      {/* Label */}\n      <Box marginY={3}>\n        <Inline gap={2}>\n          <Text as=\"label\" htmlFor={name} size={1} weight=\"semibold\">\n            {label}\n          </Text>\n\n          {/* Error icon + tooltip */}\n          {error && (\n            <Text size={1}>\n              <Tooltip\n                animate\n                content={\n                  <Box padding={2}>\n                    <Text muted size={1}>\n                      <StyledErrorOutlineIcon style={{marginRight: '0.1em'}} />\n                      {error}\n                    </Text>\n                  </Box>\n                }\n                fallbackPlacements={['top', 'left']}\n                placement=\"right\"\n                portal\n              >\n                <StyledErrorOutlineIcon />\n              </Tooltip>\n            </Text>\n          )}\n        </Inline>\n      </Box>\n\n      {/* Description */}\n      {description && (\n        <Box marginY={3}>\n          <Text as=\"label\" htmlFor={name} muted size={1}>\n            {description}\n          </Text>\n        </Box>\n      )}\n    </>\n  )\n}\n\nexport default FormFieldInputLabel\n","import {AddIcon} from '@sanity/icons/Add'\nimport {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Card, Flex, rem, studioTheme, Text, type ThemeColorSchemeKey} from '@sanity/ui'\nimport {components, type StylesConfig} from 'react-select'\nimport {Virtuoso} from 'react-virtuoso'\n\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\nconst {radius: themeRadius, space: themeSpace} = studioTheme\n\nexport const reactSelectStyles = (scheme: ThemeColorSchemeKey): StylesConfig => {\n  return {\n    control: (styles, {isFocused}) => {\n      let boxShadow = `inset 0 0 0 1px var(--card-border-color)`\n      if (isFocused) {\n        boxShadow = `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputEnabledBorder')},\n        0 0 0 1px var(--card-bg-color),\n        0 0 0 3px var(--card-focus-ring-color) !important`\n      }\n\n      return {\n        ...styles,\n        'backgroundColor': 'var(--card-bg-color)',\n        'color': 'inherit',\n        'border': 'none',\n        'borderRadius': themeRadius[1],\n        boxShadow,\n        'margin': 0,\n        'minHeight': '35px',\n        'outline': 'none',\n        'padding': rem(themeSpace[1]!),\n        'transition': 'none',\n        '&:hover': {\n          boxShadow: `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputHoveredBorder')}`,\n        },\n      }\n    },\n    indicatorsContainer: (styles, {isDisabled}) => ({\n      ...styles,\n      opacity: isDisabled ? 0.25 : 1,\n    }),\n    input: (styles) => ({\n      ...styles,\n      color: 'var(--card-fg-color)',\n      fontFamily: studioTheme.fonts.text.family,\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    menuList: (styles) => ({\n      ...styles,\n    }),\n    multiValue: (styles, {isDisabled}) => ({\n      ...styles,\n      backgroundColor: getSchemeColor(scheme, 'mutedHoveredBg'),\n      borderRadius: themeRadius[2],\n      opacity: isDisabled ? 0.5 : 1,\n    }),\n    multiValueLabel: () => ({\n      color: getSchemeColor(scheme, 'mutedHoveredFg'),\n      fontSize: 'inherit',\n      padding: 0,\n    }),\n    multiValueRemove: (styles) => ({\n      ...styles,\n      'borderTopLeftRadius': 0,\n      'borderBottomLeftRadius': 0,\n      'svg': {color: getSchemeColor(scheme, 'mutedHoveredFg')},\n      '&:hover': {\n        backgroundColor: getSchemeColor(scheme, 'mutedSelectedBg'),\n      },\n    }),\n    noOptionsMessage: (styles) => ({\n      ...styles,\n      fontFamily: studioTheme.fonts.text.family,\n      lineHeight: '1em',\n    }),\n    option: (styles, {isFocused}) => ({\n      ...styles,\n      'backgroundColor': isFocused ? getSchemeColor(scheme, 'spotBlue') : 'transparent',\n      'borderRadius': themeRadius[2],\n      'color': isFocused ? getSchemeColor(scheme, 'bg') : 'inherit',\n      'padding': `${rem(themeSpace[1]!)} ${rem(themeSpace[2]!)}`,\n      '&:hover': {\n        backgroundColor: getSchemeColor(scheme, 'spotBlue'),\n        color: getSchemeColor(scheme, 'bg'),\n      },\n    }),\n    placeholder: (styles) => ({\n      ...styles,\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    valueContainer: (styles) => ({\n      ...styles,\n      margin: 0,\n      padding: 0,\n    }),\n  }\n}\n\nconst DropdownIndicator = (props: any) => {\n  return (\n    <components.DropdownIndicator {...props}>\n      <Box paddingX={2}>\n        <Text size={1}>\n          <ChevronDownIcon />\n        </Text>\n      </Box>\n    </components.DropdownIndicator>\n  )\n}\n\nconst Menu = (props: any) => {\n  return (\n    <components.Menu {...props}>\n      <Card radius={1} shadow={2}>\n        {props.children}\n      </Card>\n    </components.Menu>\n  )\n}\n\nconst MenuList = (props: any) => {\n  const {children} = props\n\n  const MAX_ROWS = 5\n  const OPTION_HEIGHT = 37\n\n  if (Array.isArray(children)) {\n    const height =\n      children.length > MAX_ROWS ? OPTION_HEIGHT * MAX_ROWS : children.length * OPTION_HEIGHT\n\n    return (\n      <Virtuoso\n        className=\"media__custom-scrollbar\"\n        itemContent={(index) => {\n          const item = children[index]\n          return <Option {...item.props} />\n        }}\n        style={{height}}\n        totalCount={children.length}\n      />\n    )\n  }\n  return <components.MenuList {...props}>{children}</components.MenuList>\n}\n\nconst MultiValueLabel = (props: any) => {\n  return (\n    <Box padding={2} paddingRight={1}>\n      <Text size={1} weight=\"medium\">\n        <components.MultiValueLabel {...props} />\n      </Text>\n    </Box>\n  )\n}\n\nconst MultiValueRemove = (props: any) => {\n  return (\n    <components.MultiValueRemove {...props}>\n      <CloseIcon color=\"#1f2123\" />\n    </components.MultiValueRemove>\n  )\n}\n\nconst Option = (props: any) => {\n  return (\n    <Box paddingX={1} paddingY={1}>\n      <components.Option {...props}>\n        <Flex align=\"center\">\n          {props.data.__isNew__ && <AddIcon style={{marginRight: '3px'}} />}\n          {props.children}\n        </Flex>\n      </components.Option>\n    </Box>\n  )\n}\n\nexport const reactSelectComponents = {\n  DropdownIndicator,\n  IndicatorSeparator: null,\n  Menu,\n  MenuList,\n  MultiValueLabel,\n  MultiValueRemove,\n  Option,\n}\n","import {Box} from '@sanity/ui'\nimport {Controller} from 'react-hook-form'\nimport CreatableSelect from 'react-select/creatable'\nimport {useColorSchemeValue} from 'sanity'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {reactSelectComponents, reactSelectStyles} from '../../styled/react-select/creatable'\nimport type {TagSelectOption} from '../../types'\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n  control: any\n  description?: string\n  disabled?: boolean\n  error?: string\n  label: string\n  name: string\n  onCreateTag: (tagName: string) => void\n  options: {\n    label: string\n    value: string\n  }[]\n  placeholder?: string\n  value?: TagSelectOption[] | null\n}\n\nconst FormFieldInputTags = (props: Props) => {\n  const {\n    control,\n    description,\n    disabled,\n    error,\n    label,\n    name,\n    onCreateTag,\n    options,\n    placeholder,\n    value,\n  } = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const creating = useTypedSelector((state) => state.tags.creating)\n  const tagsFetching = useTypedSelector((state) => state.tags.fetching)\n\n  return (\n    <Box\n      // HACK: force stacking context to ensure react-select dropdown sits above other fields\n      style={{zIndex: 2}}\n    >\n      {/* Label */}\n      <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n\n      {/* Select */}\n      <Controller\n        control={control}\n        defaultValue={value}\n        name={name}\n        render={({field}) => {\n          const {onBlur, onChange, value: controllerValue} = field\n          // TODO: investigate overriding `onChange` and updating form state manually.\n          // `opt.media.tags` is initialised with `null` as a defaultValue in react-hook-form\n          // Ideally, we'd be able to set `opt.media.tags` as null when all items are cleared, rather than\n          // setting it to an empty array (which is currently causing false positives in denoting whether the form is dirty)\n          //\n          // To illustrate this issue:\n          // - Edit an asset with no tags\n          // - Add a new tag (either an existing one, or create one inline)\n          // - Remove the tag you've just created\n          //\n          // At this point, the form will still be marked as dirty when it shouldnt be\n          return (\n            <CreatableSelect\n              components={reactSelectComponents}\n              instanceId=\"tags\"\n              isClearable={false} // TODO: re-enable when we're able to correctly (manually) re-validate on clear\n              isDisabled={creating || disabled || tagsFetching}\n              isLoading={creating}\n              isMulti\n              name={name}\n              noOptionsMessage={() => 'No tags'}\n              onBlur={onBlur}\n              onChange={onChange}\n              onCreateOption={onCreateTag}\n              options={options}\n              placeholder={tagsFetching ? 'Loading...' : placeholder}\n              styles={reactSelectStyles(scheme)}\n              value={controllerValue}\n            />\n          )\n        }}\n      />\n    </Box>\n  )\n}\n\nexport default FormFieldInputTags\n","import {Box, TextInput} from '@sanity/ui'\nimport {type ChangeEventHandler, type FocusEventHandler, type Ref} from 'react'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n  description?: string\n  disabled?: boolean\n  error?: string\n  label: string\n  name: string\n  onBlur?: FocusEventHandler<HTMLInputElement>\n  onChange?: ChangeEventHandler<HTMLInputElement>\n  placeholder?: string\n  value?: string\n  ref?: Ref<HTMLInputElement>\n}\n\nconst FormFieldInputText = (props: Props) => {\n  const {\n    description,\n    disabled,\n    error,\n    label,\n    name,\n    onBlur,\n    onChange,\n    placeholder,\n    value,\n    ref,\n    ...rest\n  } = props\n\n  return (\n    <Box>\n      {/* Label */}\n      <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n      {/* Input */}\n      <TextInput\n        {...rest}\n        autoComplete=\"off\"\n        autoFocus\n        defaultValue={value}\n        disabled={disabled}\n        id={name}\n        name={name}\n        onBlur={onBlur}\n        onChange={onChange}\n        placeholder={placeholder}\n        ref={ref}\n      />\n    </Box>\n  )\n}\n\nexport default FormFieldInputText\n","import {Box, TextArea} from '@sanity/ui'\nimport {type ChangeEventHandler, type FocusEventHandler, type Ref} from 'react'\n\nimport FormFieldInputLabel from '../FormFieldInputLabel'\n\ntype Props = {\n  description?: string\n  disabled?: boolean\n  error?: string\n  label: string\n  name: string\n  onBlur?: FocusEventHandler<HTMLTextAreaElement>\n  onChange?: ChangeEventHandler<HTMLTextAreaElement>\n  placeholder?: string\n  rows?: number\n  value?: string\n  ref?: Ref<HTMLTextAreaElement>\n}\n\nconst FormFieldInputTextarea = (props: Props) => {\n  const {\n    description,\n    disabled,\n    error,\n    label,\n    name,\n    onBlur,\n    onChange,\n    placeholder,\n    rows,\n    value,\n    ref,\n    ...rest\n  } = props\n\n  return (\n    <Box>\n      {/* Label */}\n      <FormFieldInputLabel description={description} error={error} label={label} name={name} />\n\n      {/* Input */}\n      <TextArea\n        {...rest}\n        autoComplete=\"off\"\n        defaultValue={value}\n        disabled={disabled}\n        id={name}\n        name={name}\n        onBlur={onBlur}\n        onChange={onChange}\n        placeholder={placeholder}\n        ref={ref}\n        rows={rows}\n      />\n    </Box>\n  )\n}\n\nexport default FormFieldInputTextarea\n","import {FolderIcon} from '@sanity/icons/Folder'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {Box, Button, Card, Flex, Stack, Tab, TabList, TabPanel, Text} from '@sanity/ui'\nimport {useState} from 'react'\nimport {type Control, type FieldErrors, type UseFormRegister} from 'react-hook-form'\n\nimport type {Asset, AssetFormData, Locale, TagSelectOption} from '../../types'\nimport FormFieldInputLabel from '../FormFieldInputLabel'\nimport FormFieldInputTags from '../FormFieldInputTags'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormFieldInputTextarea from '../FormFieldInputTextarea'\n\ntype LocalizedErrors = Record<string, {message?: string} | undefined>\n\n// When locales are not configured, extract a plain string from a potentially localized field\nfunction toStringField(value: unknown): string | undefined {\n  if (typeof value === 'string') return value\n  if (typeof value === 'object' && value !== null) {\n    const found = Object.values(value as Record<string, string>).find((v) => v)\n    return found || undefined\n  }\n  return undefined\n}\n\nfunction truncateFolderPath(path?: string): string | undefined {\n  const segments = path?.split('/').filter(Boolean)\n  if (!segments || segments.length <= 3) return path\n  return [segments[0], '...', ...segments.slice(-2)].join('/')\n}\n\nexport type DetailsProps = {\n  formUpdating: boolean\n  handleCreateTag: (title: string) => void\n  control: Control<AssetFormData>\n  errors: FieldErrors<AssetFormData>\n  register: UseFormRegister<AssetFormData>\n  allTagOptions: TagSelectOption[]\n  assetTagOptions: TagSelectOption[] | null\n  currentAsset: Asset\n  folderPath?: string\n  folderMissing?: boolean\n  onChangeFolder: () => void\n  onRemoveFolder: () => void\n  creditLine?: {\n    enabled: boolean\n    excludeSources?: string | string[] | undefined\n  }\n  locales?: Locale[]\n}\n\nexport default function Details({\n  formUpdating,\n  handleCreateTag,\n  control,\n  errors,\n  register,\n  allTagOptions,\n  assetTagOptions,\n  currentAsset,\n  folderPath,\n  folderMissing,\n  onChangeFolder,\n  onRemoveFolder,\n  creditLine,\n  locales,\n}: DetailsProps) {\n  'use no memo'\n  // React Compiler memoizes the register() field JSX using asset-derived deps only.\n  // That can leave Save stuck disabled while the DOM still updates (uncontrolled inputs).\n  // Tags work because they use Controller; string fields use register and need this opt-out.\n\n  const hasLocales = locales && locales.length > 0\n  const [activeLocaleTab, setActiveLocaleTab] = useState(0)\n  const folderId = currentAsset?.opt?.media?.folder?._ref\n  const folderLabel =\n    truncateFolderPath(folderPath) || (folderMissing ? 'Folder no longer exists' : 'No folder')\n\n  return (\n    <Stack gap={3}>\n      {/* Tags */}\n      <FormFieldInputTags\n        control={control}\n        disabled={formUpdating}\n        error={errors?.opt?.media?.tags?.message}\n        label=\"Tags\"\n        name=\"opt.media.tags\"\n        onCreateTag={handleCreateTag}\n        options={allTagOptions}\n        placeholder=\"Select or create...\"\n        value={assetTagOptions}\n      />\n      {/* Folder */}\n      <Box>\n        <FormFieldInputLabel label=\"Folder\" name=\"folder\" />\n        <Card border padding={2} radius={2}>\n          <Flex align=\"center\" gap={3} justify=\"space-between\">\n            <Flex\n              align=\"center\"\n              gap={2}\n              flex={1}\n              style={{minWidth: 0, overflowX: 'auto', whiteSpace: 'nowrap', overflowY: 'hidden'}}\n            >\n              <FolderIcon />\n              <Text muted={!folderId} size={1}>\n                {folderLabel}\n              </Text>\n            </Flex>\n            {folderId && (\n              <Button\n                aria-label=\"Remove from folder\"\n                disabled={formUpdating}\n                fontSize={1}\n                icon={TrashIcon}\n                mode=\"bleed\"\n                onClick={onRemoveFolder}\n                padding={2}\n                tone=\"critical\"\n                type=\"button\"\n              />\n            )}\n            <Button\n              padding={2}\n              disabled={formUpdating}\n              fontSize={1}\n              mode=\"ghost\"\n              onClick={onChangeFolder}\n              text={folderId ? 'Change folder' : 'Add to folder'}\n              type=\"button\"\n            />\n          </Flex>\n        </Card>\n      </Box>\n      {/* Filename */}\n      <FormFieldInputText\n        {...register('originalFilename')}\n        disabled={formUpdating}\n        error={errors?.originalFilename?.message}\n        label=\"Filename\"\n        name=\"originalFilename\"\n        value={currentAsset?.originalFilename}\n      />\n      {/* Localized fields grouped by language */}\n      {hasLocales ? (\n        <Card marginTop={2} shadow={1} padding={3} radius={1}>\n          <Stack gap={2}>\n            <TabList gap={2}>\n              {locales.map((locale, idx) => (\n                <Tab\n                  key={locale.id}\n                  id={`locale-tab-${locale.id}`}\n                  aria-controls={`locale-panel-${locale.id}`}\n                  selected={activeLocaleTab === idx}\n                  onClick={() => setActiveLocaleTab(idx)}\n                  label={locale.title}\n                />\n              ))}\n            </TabList>\n            {locales.map((locale, idx) => (\n              <TabPanel\n                key={locale.id}\n                id={`locale-panel-${locale.id}`}\n                aria-labelledby={`locale-tab-${locale.id}`}\n                hidden={activeLocaleTab !== idx}\n              >\n                <Stack gap={3}>\n                  <FormFieldInputText\n                    {...register(`title.${locale.id}` as const)}\n                    disabled={formUpdating}\n                    error={(errors?.title as LocalizedErrors)?.[locale.id]?.message}\n                    label=\"Title\"\n                    name={`title.${locale.id}`}\n                  />\n                  <FormFieldInputText\n                    {...register(`altText.${locale.id}` as const)}\n                    disabled={formUpdating}\n                    error={(errors?.altText as LocalizedErrors)?.[locale.id]?.message}\n                    label=\"Alt Text\"\n                    name={`altText.${locale.id}`}\n                  />\n                  <FormFieldInputTextarea\n                    {...register(`description.${locale.id}` as const)}\n                    disabled={formUpdating}\n                    error={(errors?.description as LocalizedErrors)?.[locale.id]?.message}\n                    label=\"Description\"\n                    name={`description.${locale.id}`}\n                    rows={5}\n                  />\n                  {creditLine?.enabled && (\n                    <FormFieldInputText\n                      {...register(`creditLine.${locale.id}` as const)}\n                      error={(errors?.creditLine as LocalizedErrors)?.[locale.id]?.message}\n                      label=\"Credit\"\n                      name={`creditLine.${locale.id}`}\n                      disabled={\n                        formUpdating ||\n                        creditLine?.excludeSources?.includes(currentAsset?.['source']?.name)\n                      }\n                    />\n                  )}\n                </Stack>\n              </TabPanel>\n            ))}\n          </Stack>\n        </Card>\n      ) : (\n        <>\n          <FormFieldInputText\n            {...register('title')}\n            disabled={formUpdating}\n            error={errors?.title?.message}\n            label=\"Title\"\n            name=\"title\"\n            value={toStringField(currentAsset?.title)}\n          />\n          <FormFieldInputText\n            {...register('altText')}\n            disabled={formUpdating}\n            error={errors?.altText?.message}\n            label=\"Alt Text\"\n            name=\"altText\"\n            value={toStringField(currentAsset?.altText)}\n          />\n          <FormFieldInputTextarea\n            {...register('description')}\n            disabled={formUpdating}\n            error={errors?.description?.message}\n            label=\"Description\"\n            name=\"description\"\n            rows={5}\n          />\n          {creditLine?.enabled && (\n            <FormFieldInputText\n              {...register('creditLine')}\n              error={errors?.creditLine?.message}\n              label=\"Credit\"\n              name=\"creditLine\"\n              value={toStringField(currentAsset?.creditLine)}\n              disabled={\n                formUpdating || creditLine?.excludeSources?.includes(currentAsset?.['source']?.name)\n              }\n            />\n          )}\n        </>\n      )}\n    </Stack>\n  )\n}\n","import type {MutationEvent} from '@sanity/client'\nimport {Box, Button, Card, Flex, Stack, Tab, TabList, TabPanel, Text} from '@sanity/ui'\nimport groq from 'groq'\nimport {type ReactNode, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {type SubmitHandler, useForm, useFormState} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\nimport {WithReferringDocuments, useColorSchemeValue, useDocumentStore} from 'sanity'\n\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport {getAssetFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {assetsActions, selectAssetById} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {selectFolderPathById} from '../../modules/folders'\nimport {selectTags, selectTagSelectOptions, tagsActions} from '../../modules/tags'\nimport type {Asset, AssetFormData, DialogAssetEditProps, TagSelectOption} from '../../types'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport {getUniqueDocuments} from '../../utils/getUniqueDocuments'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport AssetMetadata from '../AssetMetadata'\nimport Dialog from '../Dialog'\nimport DocumentList from '../DocumentList'\nimport FileAssetPreview from '../FileAssetPreview'\nimport FormSubmitButton from '../FormSubmitButton'\nimport Image from '../Image'\nimport Details, {type DetailsProps} from './Details'\n\nfunction renderDefaultDetails(props: DetailsProps) {\n  return <Details {...props} />\n}\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogAssetEditProps\n}\n\nconst DialogAssetEdit = (props: Props) => {\n  const {\n    children,\n    dialog: {assetId, id, lastCreatedTag, lastRemovedTagIds},\n  } = props\n\n  const client = useVersionedClient()\n  const scheme = useColorSchemeValue()\n\n  const documentStore = useDocumentStore()\n\n  const dispatch = useDispatch()\n  const assetItem = useTypedSelector((state) => selectAssetById(state, String(assetId))) // TODO: check casting\n  const tags = useTypedSelector(selectTags)\n\n  const assetUpdatedPrev = useRef<string | undefined>(undefined)\n\n  // Generate a snapshot of the current asset\n  const [assetSnapshot, setAssetSnapshot] = useState(assetItem?.asset)\n  const [tabSection, setTabSection] = useState<'details' | 'references'>('details')\n\n  const currentAsset = assetItem ? assetItem?.asset : assetSnapshot\n  const allTagOptions = getTagSelectOptions(tags)\n\n  const assetTagOptions = useTypedSelector(selectTagSelectOptions(currentAsset))\n  const currentFolderId = currentAsset?.opt?.media?.folder?._ref ?? null\n  const currentFolderPath = useTypedSelector((state) =>\n    selectFolderPathById(state, currentFolderId),\n  )\n\n  // Check if credit line options are configured\n  const {creditLine, components: {details: CustomDetails} = {}, locales} = useToolOptions()\n\n  const generateDefaultValues = useCallback(\n    (asset?: Asset): AssetFormData => {\n      let imageDescription: string | undefined\n      if (asset && isImageAsset(asset)) {\n        const raw = asset.metadata?.image?.['ImageDescription']\n        if (typeof raw === 'string') {\n          imageDescription = raw\n        }\n      }\n\n      if (locales && locales.length > 0) {\n        const makeLocaleObj = (field?: Record<string, string> | string, fallback = '') => {\n          const obj: Record<string, string> = {}\n          for (let i = 0; i < locales.length; i++) {\n            const locale = locales[i]!\n            // Prefer key presence over truthiness so an intentional empty string\n            // (e.g. `{en: ''}`) is preserved and does not fall through to EXIF.\n            if (typeof field === 'object' && field && locale.id in field) {\n              obj[locale.id] = field[locale.id] ?? ''\n            } else if (typeof field === 'string') {\n              // Only populate the first locale to avoid spreading a legacy value\n              // across all languages; the user should fill in other translations manually\n              obj[locale.id] = i === 0 ? field : ''\n            } else if (typeof field === 'object' && field) {\n              // Localized object present but this locale key is missing: leave empty.\n              // Do not apply EXIF fallback to partial translations.\n              obj[locale.id] = ''\n            } else {\n              // No description set at all — EXIF fallback only for the first locale.\n              obj[locale.id] = i === 0 ? fallback : ''\n            }\n          }\n          return obj\n        }\n        return {\n          altText: makeLocaleObj(asset?.altText),\n          creditLine: makeLocaleObj(asset?.creditLine),\n          description: makeLocaleObj(asset?.description, imageDescription),\n          originalFilename: asset?.originalFilename || '',\n          opt: {media: {tags: assetTagOptions}},\n          title: makeLocaleObj(asset?.title),\n        }\n      }\n      // Normalize: if a field is a localized object but locales are disabled, pick first non-empty value\n      const flattenField = (field: unknown, fallback = ''): string => {\n        if (typeof field === 'string') return field\n        if (typeof field === 'object' && field !== null) {\n          const values = Object.values(field as Record<string, string>)\n          return values.find((v) => v) || fallback\n        }\n        return fallback\n      }\n      return {\n        altText: flattenField(asset?.altText),\n        creditLine: flattenField(asset?.creditLine),\n        description: flattenField(asset?.description, imageDescription),\n        originalFilename: asset?.originalFilename || '',\n        opt: {media: {tags: assetTagOptions}},\n        title: flattenField(asset?.title),\n      }\n    },\n    [assetTagOptions, locales],\n  )\n\n  const {control, getValues, handleSubmit, register, reset, setValue} = useForm<AssetFormData>({\n    defaultValues: generateDefaultValues(assetItem?.asset),\n    mode: 'onChange',\n    resolver: zodFormResolver<AssetFormData>(getAssetFormSchema(locales)),\n  })\n\n  // Subscribe via useFormState so React Compiler cannot skip formState Proxy reads\n  // that gate the Save button (isDirty / isValid).\n  const {errors, isDirty, isValid} = useFormState({control})\n\n  const formUpdating = !assetItem || assetItem?.updating\n\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.remove({id}))\n  }, [dispatch, id])\n\n  const handleDelete = useCallback(() => {\n    if (!assetItem?.asset) {\n      return\n    }\n\n    dispatch(\n      dialogActions.showConfirmDeleteAssets({\n        assets: [assetItem],\n        closeDialogId: assetItem?.asset._id,\n      }),\n    )\n  }, [assetItem, dispatch])\n\n  const handleAssetUpdate = useCallback((update: MutationEvent) => {\n    const {result, transition} = update\n    if (result && transition === 'update') {\n      // Regenerate asset snapshot\n      setAssetSnapshot(result as Asset)\n    }\n  }, [])\n\n  const handleCreateTag = useCallback(\n    (tagName: string) => {\n      // Dispatch action to create new tag\n      dispatch(\n        tagsActions.createRequest({\n          assetId: currentAsset?._id,\n          name: tagName,\n        }),\n      )\n    },\n    [currentAsset?._id, dispatch],\n  )\n\n  const handleChangeFolder = useCallback(() => {\n    if (!assetItem) {\n      return\n    }\n\n    dispatch(DIALOG_ACTIONS.showFolderMove({assets: [assetItem], folderId: currentFolderId}))\n  }, [assetItem, currentFolderId, dispatch])\n\n  const handleRemoveFolder = useCallback(() => {\n    if (!assetItem || !currentFolderId) {\n      return\n    }\n\n    dispatch(assetsActions.folderSetRequest({assets: [assetItem], folderId: null}))\n  }, [assetItem, currentFolderId, dispatch])\n\n  // Detect if asset has localized fields (objects) with keys not in the configured locales\n  const hasOrphanedLocales = useMemo(() => {\n    if (!currentAsset) return false\n    const isLocaleObj = (v: unknown) => typeof v === 'object' && v !== null && !Array.isArray(v)\n    const fields = [\n      currentAsset.title,\n      currentAsset.altText,\n      currentAsset.description,\n      ...(currentAsset._type === 'sanity.imageAsset' ? [currentAsset.creditLine] : []),\n    ]\n    const anyLocalized = fields.some((f) => isLocaleObj(f))\n    if (!anyLocalized) return false\n    if (!locales || locales.length === 0) return true\n    const configuredIds = new Set(locales.map((l) => l.id))\n    return fields.some((f) => {\n      if (!isLocaleObj(f)) return false\n      return Object.keys(f as object).some((k) => !configuredIds.has(k))\n    })\n  }, [currentAsset, locales])\n\n  const handleCleanupLocales = useCallback(async () => {\n    if (!currentAsset) return\n\n    const cleanField = (field: unknown): unknown => {\n      if (typeof field !== 'object' || field === null || Array.isArray(field)) return field\n      const obj = field as Record<string, string>\n      if (!locales || locales.length === 0) {\n        // Pick the first non-empty value sorted by key for determinism\n        const sorted = Object.keys(obj).sort()\n        return sorted.map((k) => obj[k]).find((v) => v) || ''\n      }\n      const configuredIds = new Set(locales.map((l) => l.id))\n      const cleaned: Record<string, string> = {}\n      for (const [key, val] of Object.entries(obj)) {\n        if (configuredIds.has(key)) cleaned[key] = val\n      }\n      return cleaned\n    }\n\n    await client\n      .patch(currentAsset._id)\n      .set({\n        title: cleanField(currentAsset.title),\n        altText: cleanField(currentAsset.altText),\n        description: cleanField(currentAsset.description),\n        ...(currentAsset._type === 'sanity.imageAsset' && {\n          creditLine: cleanField(currentAsset.creditLine),\n        }),\n      })\n      .commit()\n  }, [client, currentAsset, locales])\n\n  // Submit react-hook-form\n  const onSubmit: SubmitHandler<AssetFormData> = useCallback(\n    (formData) => {\n      if (!assetItem?.asset) {\n        return\n      }\n\n      const sanitizedFormData = sanitizeFormData(formData)\n\n      // Keep an intentionally cleared description as '' (not null) so the EXIF\n      // ImageDescription fallback does not refill it the next time the dialog opens.\n      if (formData.description === '') {\n        sanitizedFormData['description'] = ''\n      }\n\n      dispatch(\n        assetsActions.updateRequest({\n          asset: assetItem?.asset,\n          closeDialogId: assetItem?.asset._id,\n          formData: {\n            ...sanitizedFormData,\n            // Map tags to sanity references\n            opt: {\n              media: {\n                ...sanitizedFormData['opt'].media,\n                tags:\n                  sanitizedFormData['opt'].media.tags?.map((tag: TagSelectOption) => ({\n                    _ref: tag.value,\n                    _type: 'reference',\n                    _weak: true,\n                  })) || null,\n              },\n            },\n          },\n        }),\n      )\n    },\n    [assetItem?.asset, dispatch],\n  )\n\n  // Listen for asset mutations and update snapshot\n  useEffect(() => {\n    if (!assetItem?.asset) {\n      return undefined\n    }\n\n    // Remember that Sanity listeners ignore joins, order clauses and projections\n    const subscriptionAsset = client\n      .listen(groq`*[_id == $id]`, {id: assetItem?.asset._id})\n      .subscribe(handleAssetUpdate)\n\n    return () => {\n      subscriptionAsset?.unsubscribe()\n    }\n  }, [assetItem?.asset, client, handleAssetUpdate])\n\n  // Update tags form field (react-select) when a new _inline_ tag has been created\n  useEffect(() => {\n    if (lastCreatedTag) {\n      const existingTags = (getValues('opt.media.tags') as TagSelectOption[]) || []\n      const updatedTags = existingTags.concat([lastCreatedTag])\n      setValue('opt.media.tags', updatedTags, {shouldDirty: true})\n    }\n  }, [getValues, lastCreatedTag, setValue])\n\n  // Update tags form field (react-select) when an _inline_ tag has been removed elsewhere\n  useEffect(() => {\n    if (lastRemovedTagIds) {\n      const existingTags = (getValues('opt.media.tags') as TagSelectOption[]) || []\n      const updatedTags = existingTags.filter((tag) => {\n        return !lastRemovedTagIds.includes(tag.value)\n      })\n\n      setValue('opt.media.tags', updatedTags, {shouldDirty: true})\n    }\n  }, [getValues, lastRemovedTagIds, setValue])\n\n  // Reset react-hook-form local state on mount and every time the asset has been updated elsewhere\n  useEffect(() => {\n    if (assetUpdatedPrev.current !== assetItem?.asset._updatedAt) {\n      reset(generateDefaultValues(assetItem?.asset))\n    }\n    assetUpdatedPrev.current = assetItem?.asset._updatedAt\n  }, [assetItem?.asset, generateDefaultValues, reset])\n\n  const footer = (\n    <Box padding={3}>\n      <Stack gap={3}>\n        {hasOrphanedLocales && (\n          <Card padding={3} radius={2} shadow={1} tone=\"caution\">\n            <Flex align=\"center\" justify=\"space-between\" gap={3}>\n              <Text size={1}>\n                This asset has localized fields that are no longer configured. Clean them up to\n                avoid validation errors.\n              </Text>\n              <Button\n                fontSize={1}\n                mode=\"ghost\"\n                onClick={handleCleanupLocales}\n                text=\"Cleanup localized fields\"\n                tone=\"caution\"\n              />\n            </Flex>\n          </Card>\n        )}\n        <Flex justify=\"space-between\">\n          {/* Delete button */}\n          <Button\n            disabled={formUpdating}\n            fontSize={1}\n            mode=\"bleed\"\n            onClick={handleDelete}\n            text=\"Delete\"\n            tone=\"critical\"\n          />\n\n          {/* Submit button */}\n          <FormSubmitButton\n            disabled={formUpdating || !isDirty || !isValid || hasOrphanedLocales}\n            isValid={isValid}\n            lastUpdated={currentAsset?._updatedAt}\n            onClick={handleSubmit(onSubmit)}\n          />\n        </Flex>\n      </Stack>\n    </Box>\n  )\n\n  if (!currentAsset) {\n    return null\n  }\n\n  const detailsProps = {\n    control,\n    errors,\n    formUpdating,\n    register,\n    setValue,\n    assetTagOptions,\n    allTagOptions,\n    handleCreateTag,\n    currentAsset,\n    folderPath: currentFolderPath,\n    folderMissing: !!currentFolderId && !currentFolderPath,\n    onChangeFolder: handleChangeFolder,\n    onRemoveFolder: handleRemoveFolder,\n    creditLine,\n    locales,\n  }\n\n  return (\n    <Dialog animate footer={footer} header=\"Asset details\" id={id} onClose={handleClose} width={3}>\n      {/*\n        We reverse direction to ensure the download button doesn't appear (in the DOM) before other tabbable items.\n        This ensures that the dialog doesn't scroll down to the download button (which on smaller screens, can sometimes\n        be below the fold).\n      */}\n      <Flex direction={['column-reverse', 'column-reverse', 'row-reverse']}>\n        <Box flex={1} marginTop={[5, 5, 0]} padding={4}>\n          <WithReferringDocuments documentStore={documentStore} id={currentAsset._id}>\n            {({isLoading, referringDocuments}) => {\n              const uniqueReferringDocuments = getUniqueDocuments(referringDocuments)\n              return (\n                <>\n                  {/* Tabs */}\n                  <TabList gap={2}>\n                    <Tab\n                      aria-controls=\"details-panel\"\n                      disabled={formUpdating}\n                      id=\"details-tab\"\n                      label=\"Details\"\n                      onClick={() => setTabSection('details')}\n                      selected={tabSection === 'details'}\n                      size={2}\n                    />\n                    <Tab\n                      aria-controls=\"references-panel\"\n                      disabled={formUpdating}\n                      id=\"references-tab\"\n                      label={`References${\n                        !isLoading && Array.isArray(uniqueReferringDocuments)\n                          ? ` (${uniqueReferringDocuments.length})`\n                          : ''\n                      }`}\n                      onClick={() => setTabSection('references')}\n                      selected={tabSection === 'references'}\n                      size={2}\n                    />\n                  </TabList>\n\n                  {/* Form fields */}\n                  <Box as=\"form\" marginTop={4} onSubmit={handleSubmit(onSubmit)}>\n                    {/* Deleted notification */}\n                    {!assetItem && (\n                      <Card marginBottom={3} padding={3} radius={2} shadow={1} tone=\"critical\">\n                        <Text size={1}>This file cannot be found – it may have been deleted.</Text>\n                      </Card>\n                    )}\n\n                    {/* Hidden button to enable enter key submissions */}\n                    <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n                    {/* Panel: details */}\n                    <TabPanel\n                      aria-labelledby=\"details\"\n                      hidden={tabSection !== 'details'}\n                      id=\"details-panel\"\n                    >\n                      {CustomDetails ? (\n                        <CustomDetails\n                          {...detailsProps}\n                          renderDefaultDetails={renderDefaultDetails}\n                        />\n                      ) : (\n                        <Details {...detailsProps} />\n                      )}\n                    </TabPanel>\n\n                    {/* Panel: References */}\n                    <TabPanel\n                      aria-labelledby=\"references\"\n                      hidden={tabSection !== 'references'}\n                      id=\"references-panel\"\n                    >\n                      <Box marginTop={5}>\n                        {assetItem?.asset && (\n                          <DocumentList\n                            documents={uniqueReferringDocuments}\n                            isLoading={isLoading}\n                          />\n                        )}\n                      </Box>\n                    </TabPanel>\n                  </Box>\n                </>\n              )\n            }}\n          </WithReferringDocuments>\n        </Box>\n\n        <Box flex={1} padding={4}>\n          <Box style={{aspectRatio: '1'}}>\n            {/* File */}\n            {isFileAsset(currentAsset) && <FileAssetPreview asset={currentAsset} />}\n\n            {/* Image */}\n            {isImageAsset(currentAsset) && (\n              <Image\n                draggable={false}\n                $scheme={scheme}\n                $showCheckerboard={!currentAsset?.metadata?.isOpaque}\n                src={imageDprUrl(currentAsset, {height: 600, width: 600})}\n              />\n            )}\n          </Box>\n\n          {/* Metadata */}\n          {currentAsset && (\n            <Box marginTop={4}>\n              <AssetMetadata asset={currentAsset} item={assetItem} />\n            </Box>\n          )}\n        </Box>\n      </Flex>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogAssetEdit\n","import {createSelector} from '@reduxjs/toolkit'\n\nimport type {CardAssetData, CardFolderData, CardUploadData} from '../types'\nimport {selectCurrentFolderChildren} from './folders'\nimport type {RootReducerState} from './types'\n\nexport const selectCombinedItems = createSelector(\n  [\n    (state: RootReducerState) => state.assets.allIds,\n    (state: RootReducerState) => state.uploads.allIds,\n    selectCurrentFolderChildren,\n  ],\n  (assetIds, uploadIds, folderChildren) => {\n    const assetItems = assetIds.map((id): CardAssetData => ({id, type: 'asset'}))\n    const folderItems = folderChildren.map(\n      (folder): CardFolderData => ({\n        id: `folder:${folder.id}`,\n        folderId: folder.id,\n        name: folder.name,\n        path: folder.path,\n        totalCount: folder.totalCount,\n        type: 'folder',\n      }),\n    )\n    const uploadItems = uploadIds.map((id): CardUploadData => ({id, type: 'upload'}))\n    const combinedItems: (CardAssetData | CardFolderData | CardUploadData)[] = [\n      ...folderItems,\n      ...uploadItems,\n      ...assetItems,\n    ]\n    return combinedItems\n  },\n)\n","import {isHotkey} from 'is-hotkey-esm'\nimport {type RefObject, useCallback, useEffect, useRef} from 'react'\n\nconst useKeyPress = (hotkey: string, onPress?: () => void): RefObject<boolean> => {\n  const keyPressed = useRef(false)\n\n  // If pressed key is our target key then set to true\n  const downHandler = useCallback(\n    (e: KeyboardEvent) => {\n      if (isHotkey(hotkey, e)) {\n        keyPressed.current = true\n        if (onPress) {\n          onPress()\n        }\n      }\n    },\n    [hotkey, onPress],\n  )\n\n  // If released key is our target key then set to false\n  const upHandler = useCallback(() => {\n    keyPressed.current = false\n  }, [])\n\n  // Add event listeners\n  useEffect(() => {\n    window.addEventListener('keydown', downHandler)\n    window.addEventListener('keyup', upHandler)\n    // Remove event listeners on cleanup\n    return () => {\n      window.removeEventListener('keydown', downHandler)\n      window.removeEventListener('keyup', upHandler)\n    }\n  }, [downHandler, upHandler])\n\n  return keyPressed\n}\n\nexport default useKeyPress\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {WarningFilledIcon} from '@sanity/icons/WarningFilled'\nimport {\n  Box,\n  Checkbox,\n  Container,\n  Flex,\n  Spinner,\n  Text,\n  type Theme,\n  type ThemeColorSchemeKey,\n} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\nimport {Tooltip} from '@sanity/ui/tooltip'\nimport {memo, type MouseEvent, type RefObject} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetById, selectAssetsPicked} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\ntype Props = {\n  id: string\n  selected: boolean\n  source?: string\n}\n\nconst CardWrapper = styled(Flex)`\n  box-sizing: border-box;\n  height: 100%;\n  overflow: hidden;\n  position: relative;\n  width: 100%;\n`\n\nconst CardContainer = styled(Flex)<{$picked?: boolean; theme: Theme; $updating?: boolean}>(({\n  $picked,\n  theme,\n  $updating,\n}) => {\n  return css`\n    border: 1px solid transparent;\n    height: 100%;\n    pointer-events: ${$updating ? 'none' : 'auto'};\n    position: relative;\n    transition: all 300ms;\n    user-select: none;\n    width: 100%;\n\n    border: ${\n      $picked ? `1px solid ${theme.sanity.color.spot.orange} !important` : '1px solid inherit'\n    };\n\n    ${\n      !$updating &&\n      css`\n        @media (hover: hover) and (pointer: fine) {\n          &:hover {\n            border: 1px solid var(--card-border-color);\n          }\n        }\n      `\n    }\n  `\n})\n\nconst ContextActionContainer = styled<typeof Flex, {$scheme: ThemeColorSchemeKey}>(Flex)(({\n  $scheme,\n}) => {\n  return css`\n    cursor: pointer;\n    height: ${PANEL_HEIGHT}px;\n    transition: all 300ms;\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${getSchemeColor($scheme, 'bg')};\n      }\n    }\n  `\n})\n\nconst StyledWarningOutlineIcon = styled(WarningFilledIcon)(({theme}) => {\n  return {\n    color: theme.sanity.color.spot.red,\n  }\n})\n\nconst CardAsset = (props: Props) => {\n  const {id, selected, source} = props\n\n  const scheme = useColorSchemeValue()\n  const toast = useToast()\n\n  // Refs\n  const shiftPressed: RefObject<boolean> = useKeyPress('shift')\n\n  // Redux\n  const dispatch = useDispatch()\n  const lastPicked = useTypedSelector((state) => state.assets.lastPicked)\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n  const item = useTypedSelector((state) => selectAssetById(state, id))\n  // Dialog carries the replace target so search refetch (which clears allIds/picks) is safe.\n  const dialogReplaceAssetId = useTypedSelector((state) => {\n    if (source !== 'replace-asset') {\n      return undefined\n    }\n    const dialog = state.dialog.items.find((d) => d.type === 'dialogAllAssets')\n    return dialog?.type === 'dialogAllAssets' ? dialog.assetId : undefined\n  })\n\n  const asset = item?.asset\n  const error = item?.error\n  const isOpaque = item?.asset?.metadata?.isOpaque\n  const picked = item?.picked\n  const updating = item?.updating\n\n  // Prefer dialog assetId; fall back to the single currently-picked asset (not lastPicked).\n  const assetToReplaceId =\n    dialogReplaceAssetId ??\n    (source === 'replace-asset' && assetsPicked.length === 1\n      ? assetsPicked[0]?.asset._id\n      : undefined)\n\n  const assetToReplace = useTypedSelector((state) =>\n    assetToReplaceId ? selectAssetById(state, assetToReplaceId) : undefined,\n  )\n\n  const {isMultiSelect, onSelect} = useAssetSourceActions()\n\n  // Short circuit if no asset is available\n  if (!asset) {\n    return null\n  }\n\n  const handleReplaceAsset = () => {\n    if (!assetToReplaceId || !isImageAsset(asset) || assetToReplace?.updating) {\n      return\n    }\n\n    dispatch(assetsActions.updateImageReferences({asset, id: assetToReplaceId}))\n    toast.push({\n      status: 'info',\n      title:\n        'Updating in progress. Depending on the amount of changes, this could take a few minutes.',\n    })\n    dispatch(dialogActions.clear())\n  }\n\n  // Callbacks\n  const handleAssetClick = (e: MouseEvent<HTMLDivElement>) => {\n    e.stopPropagation()\n\n    if (source === 'replace-asset') {\n      handleReplaceAsset()\n      return\n    }\n\n    if (selected) {\n      return\n    }\n\n    if (onSelect && !isMultiSelect) {\n      onSelect([\n        {\n          kind: 'assetDocumentId',\n          value: asset._id,\n        },\n      ])\n    } else if (onSelect && isMultiSelect) {\n      if (shiftPressed.current && !picked) {\n        dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n      } else {\n        dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n      }\n    } else if (shiftPressed.current) {\n      if (picked) {\n        dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n      } else {\n        dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n      }\n    } else {\n      dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n    }\n  }\n\n  const handleContextActionClick = (e: MouseEvent) => {\n    e.stopPropagation()\n\n    if (source === 'replace-asset') {\n      handleReplaceAsset()\n      return\n    }\n\n    if (selected) {\n      return\n    }\n\n    if (onSelect && !isMultiSelect) {\n      dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n    } else if (shiftPressed.current && !picked) {\n      dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n    } else {\n      dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n    }\n  }\n\n  const opacityContainer = updating ? 0.5 : 1\n  const opacityPreview = selected || updating ? 0.25 : 1\n\n  return (\n    <CardWrapper padding={1}>\n      <CardContainer direction=\"column\" $picked={picked} $updating={item.updating}>\n        {/* Image */}\n        <Box\n          flex={1}\n          style={{\n            cursor: selected ? 'default' : 'pointer',\n            position: 'relative',\n          }}\n        >\n          <div\n            data-testid={`media-asset-card-${asset._id}`}\n            onClick={handleAssetClick}\n            style={{height: '100%', opacity: opacityPreview}}\n          >\n            {/* File icon */}\n            {isFileAsset(asset) && <FileIcon extension={asset.extension} width=\"80px\" />}\n\n            {/* Image */}\n            {isImageAsset(asset) && (\n              <Image\n                draggable={false}\n                $scheme={scheme}\n                $showCheckerboard={!isOpaque}\n                src={imageDprUrl(asset, {height: 250, width: 250})}\n                style={{\n                  draggable: false,\n                  transition: 'opacity 1000ms',\n                }}\n              />\n            )}\n          </div>\n\n          {/* Selected check icon */}\n          {selected && !updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                opacity: opacityContainer,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Text size={2}>\n                <CheckmarkCircleIcon />\n              </Text>\n            </Flex>\n          )}\n\n          {/* Spinner */}\n          {updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Spinner />\n            </Flex>\n          )}\n        </Box>\n\n        {/* Footer */}\n        <ContextActionContainer\n          align=\"center\"\n          onClick={handleContextActionClick}\n          paddingX={1}\n          $scheme={scheme}\n          style={{opacity: opacityContainer}}\n        >\n          {onSelect && !isMultiSelect ? (\n            <EditIcon\n              style={{\n                flexShrink: 0,\n                opacity: 0.5,\n              }}\n            />\n          ) : (\n            <Checkbox\n              checked={picked}\n              readOnly\n              style={{\n                flexShrink: 0,\n                pointerEvents: 'none',\n                transform: 'scale(0.8)',\n              }}\n            />\n          )}\n\n          <Box marginLeft={2}>\n            <Text muted size={0} textOverflow=\"ellipsis\">\n              {asset.originalFilename}\n            </Text>\n          </Box>\n        </ContextActionContainer>\n\n        {/* TODO: DRY */}\n        {/* Error button */}\n        {error && (\n          <Box\n            padding={3}\n            style={{\n              position: 'absolute',\n              right: 0,\n              top: 0,\n            }}\n          >\n            <Tooltip\n              animate\n              content={\n                <Container padding={2} width={0}>\n                  <Text size={1}>{error}</Text>\n                </Container>\n              }\n              placement=\"left\"\n              portal\n            >\n              <Text size={1}>\n                <StyledWarningOutlineIcon color=\"critical\" />\n              </Text>\n            </Tooltip>\n          </Box>\n        )}\n      </CardContainer>\n    </CardWrapper>\n  )\n}\n\nexport default memo(CardAsset)\n","import {Box, Card, Flex, Stack, Text} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {foldersActions} from '../../modules/folders'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  folderId: string\n  name: string\n  totalCount: number\n}\n\nconst CardWrapper = styled(Flex)`\n  box-sizing: border-box;\n  height: 100%;\n  overflow: hidden;\n  position: relative;\n  width: 100%;\n`\n\nconst FolderCard = styled(Card)`\n  cursor: pointer;\n  height: 100%;\n  transition: border-color 200ms ease;\n  width: 100%;\n\n  @media (hover: hover) and (pointer: fine) {\n    &:hover {\n      border-color: var(--card-border-color);\n    }\n  }\n`\n\nconst FolderGlyph = styled(Box)(\n  ({theme}) => css`\n    align-items: flex-end;\n    background: linear-gradient(\n      180deg,\n      ${theme.sanity.color.spot.yellow} 0%,\n      ${theme.sanity.color.spot.yellow} 100%\n    );\n    border-radius: 8px;\n    display: flex;\n    height: 72px;\n    position: relative;\n    width: 96px;\n\n    &::before {\n      background: ${theme.sanity.color.spot.yellow};\n      border-radius: 8px 8px 0 0;\n      content: '';\n      height: 18px;\n      left: 0;\n      position: absolute;\n      top: -8px;\n      width: 38px;\n    }\n  `,\n)\n\nconst CardFolder = ({folderId, name, totalCount}: Props) => {\n  const dispatch = useDispatch()\n  const scheme = useColorSchemeValue()\n\n  return (\n    <CardWrapper padding={1}>\n      <FolderCard\n        onClick={() => dispatch(foldersActions.currentFolderSet({folderId}))}\n        padding={3}\n        radius={2}\n        style={{\n          background: getSchemeColor(scheme, 'bg'),\n          border: '1px solid transparent',\n        }}\n      >\n        <Flex direction=\"column\" height=\"fill\" justify=\"space-between\">\n          <Flex align=\"center\" flex={1} justify=\"center\">\n            <FolderGlyph />\n          </Flex>\n\n          <Stack gap={2}>\n            <Text\n              size={1}\n              style={{lineHeight: '1.35em', minHeight: '2.7em', wordBreak: 'break-word'}}\n              weight=\"semibold\"\n            >\n              {name}\n            </Text>\n            <Text muted size={0} style={{lineHeight: '1.2em'}}>\n              {totalCount} item{totalCount === 1 ? '' : 's'}\n            </Text>\n          </Stack>\n        </Flex>\n      </FolderCard>\n    </CardWrapper>\n  )\n}\n\nexport default CardFolder\n","import {Observable, from, of} from 'rxjs'\nimport {mergeMap} from 'rxjs/operators'\n\nconst PREVIEW_WIDTH = 180 // px\n\nconst createBlob = (img: HTMLImageElement): Promise<Blob | null> => {\n  return new Promise((resolve) => {\n    const imageAspect = img.width / img.height\n\n    // Create a canvas element which we'll use to generate a low resolution preview.\n    // Ensure that the canvas is at least 1 pixel high as blob generation will fail otherwise.\n    const canvas: HTMLCanvasElement = document.createElement('canvas')\n    canvas.width = PREVIEW_WIDTH\n    canvas.height = Math.max(PREVIEW_WIDTH / imageAspect, 1)\n\n    // Fail silently if we're unable to generate a preview image.\n    // This can often be the case when trying to render SVGs containing `<foreignObject>` elements.\n    try {\n      const ctx = canvas.getContext('2d')\n      ctx?.drawImage(img, 0, 0, PREVIEW_WIDTH, PREVIEW_WIDTH / imageAspect)\n      canvas.toBlob(resolve, 'image/jpeg')\n    } catch (err) {\n      console.warn(`Unable to generate preview image:`, err)\n    }\n  })\n}\n\nconst createImageEl = (file: File): Promise<HTMLImageElement> => {\n  return new Promise((resolve) => {\n    const blobUrlLarge = window.URL.createObjectURL(file)\n    const img = new Image()\n    img.onload = () => {\n      window.URL.revokeObjectURL(blobUrlLarge)\n      resolve(img)\n    }\n    img.src = blobUrlLarge\n  })\n}\n\nconst generatePreviewBlobUrl = async (file: File): Promise<string> => {\n  const imageEl = await createImageEl(file)\n  const blob = await createBlob(imageEl)\n\n  if (!blob) {\n    throw Error('Unable to generate file Blob')\n  }\n\n  return window.URL.createObjectURL(blob)\n}\n\nexport const generatePreviewBlobUrl$ = (file: File): Observable<string> => {\n  return of(null).pipe(mergeMap(() => from(generatePreviewBlobUrl(file))))\n}\n","import {Subject, Subscription, Observable, from} from 'rxjs'\n// Takes a observable-returning function and returns a new function that limits on the number of\n// concurrent observables.\nimport {first, mergeMap} from 'rxjs/operators'\n\nconst DEFAULT_CONCURRENCY = 4\n\nfunction remove<T>(array: Array<T>, item: T): Array<T> {\n  const index = array.indexOf(item)\n  if (index > -1) {\n    array.splice(index, 1)\n  }\n  return array\n}\n\nexport const createThrottler = (concurrency: number = DEFAULT_CONCURRENCY) => {\n  const currentSubscriptions: Array<Subscription> = []\n  const pendingObservables: Array<Observable<any>> = []\n  const ready$ = new Subject()\n\n  function request(observable: Observable<any>): Observable<any> {\n    return new Observable((observer) => {\n      if (currentSubscriptions.length >= concurrency) {\n        return scheduleAndWait$(observable)\n          .pipe(mergeMap(request)) //\n          .subscribe(observer)\n      }\n      const subscription = observable.subscribe(observer)\n      currentSubscriptions.push(subscription)\n      return () => {\n        remove(currentSubscriptions, subscription)\n        remove(pendingObservables, observable)\n        subscription.unsubscribe()\n        while (pendingObservables.length > 0 && currentSubscriptions.length < concurrency) {\n          ready$.next(pendingObservables.shift())\n        }\n      }\n    })\n  }\n\n  function scheduleAndWait$(observable: Observable<any>): Observable<any> {\n    pendingObservables.push(observable)\n    return ready$.asObservable().pipe(first((obs) => obs === observable))\n  }\n\n  return request\n}\n\nexport const withMaxConcurrency = (\n  func: (...args: any[]) => Observable<any>,\n  concurrency: number = DEFAULT_CONCURRENCY,\n) => {\n  const throttler = createThrottler(concurrency)\n  return (...args: Array<any>) => from(throttler(func(...args)))\n}\n","// Sourced from:\n// https://github.com/sanity-io/sanity/blob/ccb777e115a8cdf20d81a9a2bc9d8c228568faff/packages/%40sanity/form-builder/src/sanity/inputs/client-adapters/assets.ts\n\nimport type {SanityAssetDocument, SanityClient, SanityImageAssetDocument} from '@sanity/client'\nimport {Observable, of, throwError} from 'rxjs'\nimport {map, mergeMap} from 'rxjs/operators'\n\nimport type {HttpError} from '../types'\nimport {withMaxConcurrency} from './withMaxConcurrency'\n\nconst fetchExisting$ = (client: SanityClient, type: string, hash: string) => {\n  return client.observable.fetch('*[_type == $documentType && sha1hash == $hash][0]', {\n    documentType: type,\n    hash,\n  })\n}\n\nconst readFile$ = (file: File): Observable<ArrayBuffer> => {\n  return new Observable((subscriber) => {\n    const reader = new FileReader()\n    reader.onload = () => {\n      subscriber.next(reader.result as ArrayBuffer)\n      subscriber.complete()\n    }\n    reader.onerror = (err) => {\n      subscriber.error(err)\n    }\n    reader.readAsArrayBuffer(file)\n    return () => {\n      reader.abort()\n    }\n  })\n}\n\nconst hexFromBuffer = (buffer: ArrayBuffer): string => {\n  return Array.prototype.map\n    .call(new Uint8Array(buffer), (x) => `00${x.toString(16)}`.slice(-2))\n    .join('')\n}\n\nexport const hashFile$ = (file: File): Observable<string> => {\n  if (!window.crypto || !window.crypto.subtle || !window.FileReader) {\n    return throwError({\n      message: 'Unable to generate hash: uploads are only allowed in secure contexts',\n      statusCode: 500,\n    })\n  }\n  return readFile$(file).pipe(\n    mergeMap((arrayBuffer) => window.crypto.subtle.digest('SHA-1', arrayBuffer)),\n    map(hexFromBuffer),\n  )\n}\n\nconst uploadSanityAsset$ = (\n  client: SanityClient,\n  assetType: 'file' | 'image',\n  file: File,\n  hash: string,\n) => {\n  return of(null).pipe(\n    // NOTE: the sanity api will still dedupe unique files, but this saves us from uploading the asset file entirely\n    mergeMap(() => fetchExisting$(client, `sanity.${assetType}Asset`, hash)),\n    // Cancel if the asset already exists\n    mergeMap((existingAsset: SanityAssetDocument | SanityImageAssetDocument | null) => {\n      if (existingAsset) {\n        return throwError({\n          message: 'Asset already exists',\n          statusCode: 409,\n        } satisfies HttpError)\n      }\n\n      return of(null)\n    }),\n    mergeMap(() => {\n      // Begin upload if no existing asset found\n      return client.observable.assets\n        .upload(assetType, file, {\n          extract: ['blurhash', 'exif', 'image', 'location', 'lqip', 'palette'],\n          preserveFilename: true,\n        })\n        .pipe(\n          map((event) =>\n            event.type === 'response'\n              ? {\n                  // rewrite to a 'complete' event\n                  asset: event.body.document,\n                  id: event.body.document._id,\n                  type: 'complete',\n                }\n              : event,\n          ),\n        )\n    }),\n  )\n}\n\nexport const uploadAsset$ = withMaxConcurrency(uploadSanityAsset$)\n","import {createSelector, createSlice, type PayloadAction} from '@reduxjs/toolkit'\nimport type {ClientError, SanityAssetDocument, SanityImageAssetDocument} from '@sanity/client'\nimport groq from 'groq'\nimport {empty, from, merge, of} from 'rxjs'\nimport {catchError, delay, filter, mergeMap, takeUntil, withLatestFrom} from 'rxjs/operators'\n\nimport type {HttpError, MyEpic, SanityUploadProgressEvent, UploadItem} from '../../types'\nimport constructFilter from '../../utils/constructFilter'\nimport {generatePreviewBlobUrl$} from '../../utils/generatePreviewBlobUrl'\nimport {hashFile$, uploadAsset$} from '../../utils/uploadSanityAsset'\nimport {assetsActions} from '../assets'\nimport type {RootReducerState} from '../types'\nimport {UPLOADS_ACTIONS} from './actions'\n\nexport type UploadsReducerState = {\n  allIds: string[]\n  byIds: Record<string, UploadItem>\n}\n\nconst initialState = {\n  allIds: [],\n  byIds: {},\n} as UploadsReducerState\n\nconst uploadsSlice = createSlice({\n  name: 'uploads',\n  initialState,\n  extraReducers: (builder) => {\n    builder //\n      .addCase(UPLOADS_ACTIONS.uploadComplete, (state, action) => {\n        const {asset} = action.payload\n        if (state.byIds[asset.sha1hash]) {\n          state.byIds[asset.sha1hash]!.status = 'complete'\n        }\n      })\n  },\n  reducers: {\n    checkRequest(\n      _state,\n      _action: PayloadAction<{assets: (SanityAssetDocument | SanityImageAssetDocument)[]}>,\n    ) {\n      //\n    },\n    checkComplete(state, action: PayloadAction<{results: Record<string, string | null>}>) {\n      const {results} = action.payload\n\n      const assetHashes = Object.keys(results)\n\n      assetHashes.forEach((hash) => {\n        const deleteIndex = state.allIds.indexOf(hash)\n        if (deleteIndex >= 0) {\n          state.allIds.splice(deleteIndex, 1)\n        }\n\n        if (state.byIds[hash]) {\n          const blobUrl = state.byIds[hash].objectUrl\n          if (blobUrl) {\n            window.URL.revokeObjectURL(blobUrl)\n          }\n\n          delete state.byIds[hash]\n        }\n      })\n    },\n    previewReady(state, action: PayloadAction<{hash: string; blobUrl: string}>) {\n      const {blobUrl, hash} = action.payload\n      if (state.byIds[hash]) {\n        state.byIds[hash].objectUrl = blobUrl\n      }\n    },\n    uploadCancel(state, action: PayloadAction<{hash: string}>) {\n      const {hash} = action.payload\n      const deleteIndex = state.allIds.indexOf(hash)\n      if (deleteIndex >= 0) {\n        state.allIds.splice(deleteIndex, 1)\n      }\n      if (state.byIds[hash]) {\n        delete state.byIds[hash]\n      }\n    },\n    uploadError(state, action: PayloadAction<{error: HttpError; hash: string}>) {\n      const {hash} = action.payload\n      const deleteIndex = state.allIds.indexOf(hash)\n      if (deleteIndex >= 0) {\n        state.allIds.splice(deleteIndex, 1)\n      }\n      delete state.byIds[hash]\n    },\n    uploadRequest(\n      _state,\n      _action: PayloadAction<{file: File; forceAsAssetType?: 'file' | 'image'}>,\n    ) {\n      //\n    },\n    uploadProgress(\n      state,\n      action: PayloadAction<{event: SanityUploadProgressEvent; uploadHash: string}>,\n    ) {\n      const {event, uploadHash} = action.payload\n      state.byIds[uploadHash]!.percent = event.percent\n      state.byIds[uploadHash]!.status = 'uploading'\n    },\n    uploadStart(state, action: PayloadAction<{file: File; uploadItem: UploadItem}>) {\n      const {uploadItem} = action.payload\n      if (!state.allIds.includes(uploadItem.hash)) {\n        state.allIds.push(uploadItem.hash)\n      }\n      state.byIds[uploadItem.hash] = uploadItem\n    },\n  },\n})\n\n// Epics\n\nexport const uploadsAssetStartEpic: MyEpic = (action$, _state$, {client}) =>\n  action$.pipe(\n    filter(uploadsActions.uploadStart.match),\n    mergeMap((action) => {\n      const {file, uploadItem} = action.payload\n\n      return merge(\n        // Generate low res preview\n        of(null).pipe(\n          mergeMap(() => generatePreviewBlobUrl$(file)),\n          mergeMap((url) => {\n            return of(\n              uploadsActions.previewReady({\n                blobUrl: url,\n                hash: uploadItem.hash,\n              }),\n            )\n          }),\n        ),\n        // Upload asset and receive progress / complete events\n        of(null).pipe(\n          // delay(500000), // debug uploads\n          mergeMap(() => uploadAsset$(client, uploadItem.assetType, file, uploadItem.hash)),\n          takeUntil(\n            action$.pipe(\n              filter(uploadsActions.uploadCancel.match),\n              filter((v) => v.payload.hash === uploadItem.hash),\n            ),\n          ),\n          mergeMap((event) => {\n            if (event?.type === 'complete') {\n              const folderId = uploadItem.folderId || null\n\n              if (!folderId) {\n                return of(\n                  UPLOADS_ACTIONS.uploadComplete({\n                    asset: event.asset,\n                  }),\n                )\n              }\n\n              return from(\n                client\n                  .patch(event.asset._id)\n                  .setIfMissing({opt: {}})\n                  .setIfMissing({'opt.media': {}})\n                  .set({\n                    'opt.media.folder': {_ref: folderId, _type: 'reference', _weak: true},\n                  })\n                  .commit(),\n              ).pipe(\n                mergeMap((asset) =>\n                  of(\n                    UPLOADS_ACTIONS.uploadComplete({\n                      asset: asset as SanityAssetDocument | SanityImageAssetDocument,\n                    }),\n                  ),\n                ),\n              )\n            }\n            if (event?.type === 'progress' && event?.stage === 'upload') {\n              return of(\n                uploadsActions.uploadProgress({\n                  event,\n                  uploadHash: uploadItem.hash,\n                }),\n              )\n            }\n            return empty()\n          }),\n          catchError((error: ClientError) =>\n            of(\n              uploadsActions.uploadError({\n                error: {\n                  message: error?.message || 'Internal error',\n                  statusCode: error?.statusCode || 500,\n                },\n                hash: uploadItem.hash,\n              }),\n            ),\n          ),\n        ),\n      )\n    }),\n  )\n\nexport const uploadsAssetUploadEpic: MyEpic = (action$, state$) =>\n  action$.pipe(\n    filter(uploadsActions.uploadRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {file, forceAsAssetType} = action.payload\n\n      return of(action).pipe(\n        // Generate SHA1 hash from local file\n        // This will throw in insecure contexts (non-localhost / https)\n        mergeMap(() => hashFile$(file)),\n        // Ignore if the file exists and is currently being uploaded\n        filter((hash) => {\n          const exists = !!state.uploads.byIds[hash]\n          return !exists\n        }),\n        // Dispatch start action and begin upload process\n        mergeMap((hash) => {\n          const assetType = forceAsAssetType || (file.type.indexOf('image') >= 0 ? 'image' : 'file')\n          const uploadItem = {\n            _type: 'upload',\n            assetType,\n            folderId: state.folders.currentFolderId,\n            hash,\n            name: file.name,\n            size: file.size,\n            status: 'queued',\n          } as UploadItem\n          return of(uploadsActions.uploadStart({file, uploadItem}))\n        }),\n      )\n    }),\n  )\n\nexport const uploadsCompleteQueueEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(UPLOADS_ACTIONS.uploadComplete.match),\n    mergeMap((action) => {\n      return of(\n        uploadsActions.checkRequest({\n          assets: [action.payload.asset],\n        }),\n      )\n    }),\n  )\n\nexport const uploadsCheckRequestEpic: MyEpic = (action$, state$, {client}) =>\n  action$.pipe(\n    filter(uploadsActions.checkRequest.match),\n    withLatestFrom(state$),\n    mergeMap(([action, state]) => {\n      const {assets} = action.payload\n\n      const documentIds = assets.map((asset) => asset._id)\n\n      const constructedFilter = constructFilter({\n        assetTypes: state.assets.assetTypes,\n        currentFolderId: state.folders.currentFolderId,\n        excludeTagSlugs: state.assets.excludeTagSlugs,\n        searchFacets: state.search.facets,\n        searchQuery: state.search.query,\n      })\n\n      const query = groq`\n        *[${constructedFilter} && _id in $documentIds].sha1hash\n      `\n\n      return of(action).pipe(\n        delay(1000), // give Sanity some time to register the recently uploaded asset\n        mergeMap(() => client.observable.fetch<string[]>(query, {documentIds})),\n        mergeMap((resultHashes) => {\n          const checkedResults = assets.reduce((acc: Record<string, string | null>, asset) => {\n            acc[asset.sha1hash] = resultHashes.includes(asset.sha1hash) ? asset._id : null\n            return acc\n          }, {})\n\n          return of(\n            uploadsActions.checkComplete({results: checkedResults}), //\n            assetsActions.insertUploads({results: checkedResults}),\n          )\n        }),\n      )\n    }),\n  )\n\n// Selectors\n\nexport const selectUploadById = createSelector(\n  [\n    (state: RootReducerState) => state.uploads.byIds,\n    (_state: RootReducerState, uploadId: string) => uploadId,\n  ],\n  (byIds, uploadId) => byIds[uploadId],\n)\n\nexport const uploadsActions = {...uploadsSlice.actions}\n\nexport default uploadsSlice.reducer\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Button, Flex, Text} from '@sanity/ui'\nimport filesize from 'filesize'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectUploadById, uploadsActions} from '../../modules/uploads'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\ntype Props = {\n  id: string\n}\n\nconst CardWrapper = styled(Flex)`\n  box-sizing: border-box;\n  height: 100%;\n  overflow: hidden;\n  position: relative;\n  width: 100%;\n`\n\nconst CardUpload = (props: Props) => {\n  const {id} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const item = useTypedSelector((state) => selectUploadById(state, id))\n\n  if (!item) {\n    return null\n  }\n\n  const fileSize = filesize(item.size, {base: 10, round: 0})\n  const percentLoaded = Math.round(item.percent || 0) // (0 - 100)\n\n  const isComplete = item.status === 'complete'\n  const isUploading = item.status === 'uploading'\n  const isQueued = item.status === 'queued'\n\n  let status\n  if (isComplete) {\n    status = 'Verifying'\n  }\n  if (isUploading) {\n    status = `${percentLoaded}%`\n  }\n  if (isQueued) {\n    status = 'Queued'\n  }\n\n  // Callbacks\n  const handleCancelUpload = () => {\n    dispatch(uploadsActions.uploadCancel({hash: item.hash}))\n  }\n\n  return (\n    <CardWrapper padding={1}>\n      <Flex\n        direction=\"column\"\n        flex={1}\n        style={{\n          background: getSchemeColor(scheme, 'bg'),\n          border: '1px solid transparent',\n          height: '100%',\n          position: 'relative',\n        }}\n      >\n        {/* Progress bar */}\n        <div\n          style={{\n            background: 'var(--card-fg-color)',\n            bottom: 0,\n            height: '1px',\n            left: 0,\n            position: 'absolute',\n            width: '100%',\n            transform: `scaleX(${percentLoaded * 0.01})`,\n            transformOrigin: 'bottom left',\n            transition: 'all 1000ms ease-out',\n          }}\n        />\n\n        <Box flex={1} style={{position: 'relative'}}>\n          {item.assetType === 'image' && item?.objectUrl && (\n            <Image\n              draggable={false}\n              $scheme={scheme}\n              src={item.objectUrl}\n              style={{\n                opacity: 0.4,\n              }}\n            />\n          )}\n\n          {item.assetType === 'file' && (\n            <div style={{height: '100%', opacity: 0.1}}>\n              <FileIcon width=\"80px\" />\n            </div>\n          )}\n\n          {/*\n          Cancel upload button.\n          Assets will only have a `complete` status _after_ it has been created on your dataset.\n          As such, we also hide the cancel button when `percentLoaded === 100`, as cancelling when the asset\n          has been fully uploaded (even with a status of `progress`) won't stop the asset from being created.\n        */}\n          {!isComplete && percentLoaded !== 100 && (\n            <Flex\n              align=\"center\"\n              direction=\"column\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Button\n                fontSize={4}\n                icon={CloseIcon}\n                mode=\"bleed\"\n                onClick={handleCancelUpload}\n                padding={2}\n                style={{background: 'none', boxShadow: 'none'}}\n                tone=\"critical\"\n              />\n            </Flex>\n          )}\n        </Box>\n\n        {/* Footer */}\n        <Flex\n          align=\"center\"\n          justify=\"space-between\"\n          paddingX={2}\n          style={{height: `${PANEL_HEIGHT}px`}}\n        >\n          <Box flex={1} marginRight={1}>\n            <Text size={0} textOverflow=\"ellipsis\">\n              {item.name} ({fileSize})\n            </Text>\n          </Box>\n          <Text size={0} style={{flexShrink: 0}} weight=\"semibold\">\n            {status}\n          </Text>\n        </Flex>\n      </Flex>\n    </CardWrapper>\n  )\n}\n\nexport default CardUpload\n","import {memo} from 'react'\nimport {VirtuosoGrid} from 'react-virtuoso'\nimport {styled} from 'styled-components'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport type {CardAssetData, CardFolderData, CardUploadData} from '../../types'\nimport CardAsset from '../CardAsset'\nimport CardFolder from '../CardFolder'\nimport CardUpload from '../CardUpload'\n\ntype Props = {\n  items: (CardAssetData | CardFolderData | CardUploadData)[]\n  onLoadMore?: () => void\n  source?: string\n}\n\nconst CARD_HEIGHT = 220\nconst CARD_WIDTH = 240\n\nconst VirtualCell = memo(\n  ({\n    item,\n    selected,\n    source,\n  }: {\n    item: CardAssetData | CardFolderData | CardUploadData\n    selected: boolean\n    source?: string\n  }) => {\n    if (item?.type === 'asset') {\n      return <CardAsset id={item.id} selected={selected} source={source} />\n    }\n\n    if (item?.type === 'folder') {\n      return <CardFolder folderId={item.folderId} name={item.name} totalCount={item.totalCount} />\n    }\n\n    if (item?.type === 'upload') {\n      return <CardUpload id={item.id} />\n    }\n\n    return null\n  },\n)\n\nconst StyledItemContainer = styled.div`\n  height: ${CARD_HEIGHT}px;\n  width: ${CARD_WIDTH}px;\n`\n\nconst ItemContainer = (props: any) => {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- we're doing this to avoid sc warnings about `context` passed as an attribute\n  const {context, ref, ...rest} = props\n  return <StyledItemContainer ref={ref} {...rest} />\n}\n\nconst StyledListContainer = styled.div`\n  display: grid;\n  grid-template-columns: repeat(auto-fill, ${CARD_WIDTH}px);\n  grid-template-rows: repeat(auto-fill, ${CARD_HEIGHT}px);\n  justify-content: center;\n  margin: 0 auto;\n`\n\nconst ListContainer = (props: any) => {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- we're doing this to avoid sc warnings about `context` passed as an attribute\n  const {context, ref, ...rest} = props\n  return <StyledListContainer ref={ref} {...rest} />\n}\n\nconst AssetGridVirtualized = (props: Props) => {\n  const {items, onLoadMore, source} = props\n\n  // Redux\n  const selectedAssets = useTypedSelector((state) => state.selected.assets)\n\n  const selectedIds = (selectedAssets && selectedAssets.map((asset) => asset._id)) || []\n  const totalCount = items?.length\n\n  if (totalCount === 0) {\n    return null\n  }\n\n  return (\n    <VirtuosoGrid\n      className=\"media__custom-scrollbar\"\n      computeItemKey={(index) => {\n        const item = items[index]\n        return item?.id ?? index\n      }}\n      components={{\n        Item: ItemContainer,\n        List: ListContainer,\n      }}\n      endReached={onLoadMore}\n      itemContent={(index) => {\n        const item = items[index]!\n        const selected = selectedIds.includes(item.id)\n        return <VirtualCell item={item} selected={selected} source={source} />\n      }}\n      overscan={48}\n      style={{overflowX: 'hidden', overflowY: 'scroll'}}\n      totalCount={totalCount}\n    />\n  )\n}\n\nexport default AssetGridVirtualized\n","import {Box, Text} from '@sanity/ui'\nimport {useEffect, useRef, useState} from 'react'\nimport {useDispatch, useStore} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\nimport {foldersActions} from '../../modules/folders'\nimport {searchActions} from '../../modules/search'\nimport {selectCombinedItems} from '../../modules/selectors'\nimport type {RootReducerState} from '../../modules/types'\nimport type {SearchFacetInputProps, WithId} from '../../types'\nimport {isImageAsset} from '../../utils/typeGuards'\nimport AssetGridVirtualized from '../AssetGridVirtualized'\n\nfunction omitFacetId(facet: WithId<SearchFacetInputProps>): SearchFacetInputProps {\n  // Strip the runtime `id` so facetsAdd can assign a fresh one on restore.\n  const {id: _id, ...withoutId} = facet\n  void _id\n  return withoutId\n}\n\nconst ReplaceAssetsOverview = () => {\n  const dispatch = useDispatch()\n  const store = useStore<RootReducerState>()\n  const combinedItems = useTypedSelector(selectCombinedItems)\n  const assetsById = useTypedSelector((state) => state.assets.byIds)\n  const fetchCount = useTypedSelector((state) => state.assets.fetchCount)\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const fetchingError = useTypedSelector((state) => state.assets.fetchingError)\n  const pageSize = useTypedSelector((state) => state.assets.pageSize)\n  const searchQuery = useTypedSelector((state) => state.search.query)\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n  const currentFolderId = useTypedSelector((state) => state.folders.currentFolderId)\n  const currentFolderUnfiled = useTypedSelector((state) => state.folders.currentFolderUnfiled)\n\n  // Prefer the dialog's assetId — search refetch clears `allIds` / can drop picks.\n  const assetToReplaceId = useTypedSelector((state) => {\n    const dialog = state.dialog.items.find((item) => item.type === 'dialogAllAssets')\n    return dialog?.type === 'dialogAllAssets' ? dialog.assetId : undefined\n  })\n\n  const savedBrowserStateRef = useRef<{\n    assetId: string | undefined\n    query: string\n    facets: WithId<SearchFacetInputProps>[]\n    folderId: string | null\n    folderUnfiled: boolean\n  } | null>(null)\n\n  // Clearing the search only triggers a refetch after `assetsSearchEpic`'s debounce, so the\n  // stale results stay in the store for a moment. Track that gap to avoid rendering the\n  // empty state before the unscoped results arrive.\n  const [awaitingRefetch, setAwaitingRefetch] = useState(\n    () =>\n      searchQuery.length > 0 ||\n      searchFacets.length > 0 ||\n      Boolean(currentFolderId) ||\n      currentFolderUnfiled,\n  )\n\n  // Clear the browser search, facets and folder scope so the picker is not limited to the\n  // result set the user used to find the asset. Restore them when the dialog closes.\n  useEffect(() => {\n    const {dialog, folders, search} = store.getState()\n    const {query, facets} = search\n    const dialogItem = dialog.items.find((item) => item.type === 'dialogAllAssets')\n\n    savedBrowserStateRef.current = {\n      assetId: dialogItem?.type === 'dialogAllAssets' ? dialogItem.assetId : undefined,\n      query,\n      facets,\n      folderId: folders.currentFolderId,\n      folderUnfiled: folders.currentFolderUnfiled,\n    }\n\n    if (query.length > 0) {\n      dispatch(searchActions.querySet({searchQuery: ''}))\n    }\n    if (facets.length > 0) {\n      dispatch(searchActions.facetsClear())\n    }\n    if (folders.currentFolderId || folders.currentFolderUnfiled) {\n      dispatch(foldersActions.currentFolderClear())\n    }\n\n    return () => {\n      const saved = savedBrowserStateRef.current\n      if (!saved) {\n        return\n      }\n\n      const hadScope =\n        saved.query.length > 0 ||\n        saved.facets.length > 0 ||\n        Boolean(saved.folderId) ||\n        saved.folderUnfiled\n\n      if (saved.query.length > 0) {\n        dispatch(searchActions.querySet({searchQuery: saved.query}))\n      }\n      for (const facet of saved.facets) {\n        dispatch(searchActions.facetsAdd({facet: omitFacetId(facet)}))\n      }\n      if (saved.folderId) {\n        dispatch(foldersActions.currentFolderSet({folderId: saved.folderId}))\n      } else if (saved.folderUnfiled) {\n        dispatch(foldersActions.currentFolderShowUnfiled())\n      }\n\n      // Changing the search or folder runs epics that clear picks — put the asset being\n      // replaced back so closing the dialog keeps the browser selection.\n      if (hadScope && saved.assetId) {\n        dispatch(assetsActions.pick({assetId: saved.assetId, picked: true}))\n      }\n    }\n  }, [dispatch, store])\n\n  // Every rescoped refetch is preceded by `assetsActions.clear()`, so wait for the asset\n  // list to be emptied and the following fetch to settle. Watching `fetching` alone is not\n  // enough: `assetsFetchEpic` uses `switchMap`, so replacing an in-flight request leaves\n  // `fetching` true throughout. Clearing a folder scope and a search at the same time\n  // produces two refetches (the folder one immediately, the search one after its debounce),\n  // so each list clear re-arms the wait rather than resolving it for good.\n  useEffect(() => {\n    let previousIds = store.getState().assets.allIds\n    let awaitingSettle = false\n\n    return store.subscribe(() => {\n      const {allIds, fetching: isFetching} = store.getState().assets\n      const listCleared = allIds !== previousIds && allIds.length === 0\n      previousIds = allIds\n\n      if (listCleared) {\n        awaitingSettle = true\n        setAwaitingRefetch(true)\n        return\n      }\n      if (awaitingSettle && !isFetching) {\n        awaitingSettle = false\n        setAwaitingRefetch(false)\n      }\n    })\n  }, [store])\n\n  const scopeActive =\n    searchQuery.length > 0 ||\n    searchFacets.length > 0 ||\n    Boolean(currentFolderId) ||\n    currentFolderUnfiled\n\n  // Only image assets can replace image refs; exclude uploads and the asset being replaced.\n  const reducedItems = combinedItems.filter((item) => {\n    if (item.type !== 'asset' || item.id === assetToReplaceId) {\n      return false\n    }\n    const asset = assetsById[item.id]?.asset\n    return asset ? isImageAsset(asset) : false\n  })\n\n  const hasFetchedOnce = fetchCount >= 0\n  const hasMorePages = fetchCount === pageSize\n  // Don't treat a scoped / stale / mid-fetch / incomplete page as \"no replacements\".\n  const isEmpty =\n    reducedItems.length === 0 &&\n    hasFetchedOnce &&\n    !fetching &&\n    !scopeActive &&\n    !awaitingRefetch &&\n    !hasMorePages\n\n  // Keep loading pages until we find image candidates or exhaust results. A failed fetch\n  // leaves `fetchCount` untouched, so stop paging on error instead of retrying forever.\n  useEffect(() => {\n    if (\n      scopeActive ||\n      fetching ||\n      awaitingRefetch ||\n      fetchingError ||\n      reducedItems.length > 0 ||\n      !hasFetchedOnce ||\n      !hasMorePages\n    ) {\n      return\n    }\n    dispatch(assetsActions.loadNextPage())\n  }, [\n    dispatch,\n    scopeActive,\n    fetching,\n    awaitingRefetch,\n    fetchingError,\n    reducedItems.length,\n    hasFetchedOnce,\n    hasMorePages,\n  ])\n\n  const handleLoadMoreItems = () => {\n    if (!fetching) {\n      dispatch(assetsActions.loadNextPage())\n    }\n  }\n\n  return (\n    <Box height=\"fill\">\n      {isEmpty ? (\n        <Box padding={5}>\n          <Text size={1} weight=\"semibold\">\n            There are no replacement images\n          </Text>\n        </Box>\n      ) : (\n        <Box height=\"fill\">\n          <AssetGridVirtualized\n            items={reducedItems}\n            onLoadMore={handleLoadMoreItems}\n            source=\"replace-asset\"\n          />\n        </Box>\n      )}\n    </Box>\n  )\n}\n\nexport default ReplaceAssetsOverview\n","import {Box} from '@sanity/ui'\nimport {type ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogAllAssetsProps} from '../../types'\nimport Dialog from '../Dialog'\nimport ReplaceAssetsOverview from '../ReplaceAssetsOverView'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogAllAssetsProps\n}\n\nconst DialogAllAssets = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.clear())\n  }, [dispatch])\n\n  return (\n    <Dialog header=\"Choose a replacement image\" id={id} onClose={handleClose} width={3}>\n      <Box padding={4} style={{height: '50vh'}}>\n        <ReplaceAssetsOverview />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogAllAssets\n","import {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Button, Flex, Stack, Text} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogConfirmProps} from '../../types'\nimport Dialog from '../Dialog'\n\ntype Props = {\n  children?: ReactNode\n  dialog: DialogConfirmProps\n}\n\nconst DialogConfirm = (props: Props) => {\n  const {children, dialog} = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = () => {\n    dispatch(dialogActions.remove({id: dialog?.id}))\n  }\n\n  const handleConfirm = () => {\n    // Close target dialog, if provided\n    if (dialog?.closeDialogId) {\n      dispatch(dialogActions.remove({id: dialog?.closeDialogId}))\n    }\n\n    if (dialog?.confirmCallbackAction) {\n      dispatch(dialog.confirmCallbackAction)\n    }\n\n    // Close self\n    handleClose()\n  }\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"space-between\">\n        <Button fontSize={1} mode=\"bleed\" onClick={handleClose} text=\"Cancel\" />\n        <Button\n          fontSize={1}\n          onClick={handleConfirm}\n          text={dialog?.confirmText}\n          tone={dialog?.tone}\n        />\n      </Flex>\n    </Box>\n  )\n\n  const Header = () => (\n    <Flex align=\"center\">\n      <Box paddingX={1}>\n        <WarningOutlineIcon />\n      </Box>\n      <Box marginLeft={2}>{dialog?.headerTitle}</Box>\n    </Flex>\n  )\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      // oxlint-disable-next-line react/react-compiler\n      header={<Header />}\n      id=\"confirm\"\n      onClose={handleClose}\n      width={1}\n    >\n      <Box paddingX={4} paddingY={4}>\n        <Stack gap={3}>\n          {dialog?.title && <Text size={1}>{dialog.title}</Text>}\n          {dialog?.description && (\n            <Text muted size={1}>\n              <em>{dialog.description}</em>\n            </Text>\n          )}\n        </Stack>\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogConfirm\n","import {Box, Flex, Text} from '@sanity/ui'\nimport {type ReactNode, useEffect} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\n\nimport {folderFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {foldersActions, selectFolderPathById} from '../../modules/folders'\nimport type {DialogFolderCreateProps, FolderFormData} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogFolderCreateProps\n}\n\nconst DialogFolderCreate = (props: Props) => {\n  const {\n    children,\n    dialog: {parentFolderId, id},\n  } = props\n\n  const dispatch = useDispatch()\n  const creating = useTypedSelector((state) => state.folders.creating)\n  const creatingError = useTypedSelector((state) => state.folders.creatingError)\n  const parentPath = useTypedSelector((state) => selectFolderPathById(state, parentFolderId))\n\n  const {\n    formState: {errors, isDirty, isValid},\n    handleSubmit,\n    register,\n    setError,\n  } = useForm<FolderFormData>({\n    defaultValues: {\n      name: '',\n    },\n    mode: 'onChange',\n    resolver: zodFormResolver<FolderFormData>(folderFormSchema),\n  })\n\n  const handleClose = () => {\n    dispatch(dialogActions.clear())\n  }\n\n  const onSubmit: SubmitHandler<FolderFormData> = (formData) => {\n    const sanitizedFormData = sanitizeFormData(formData)\n    dispatch(\n      foldersActions.createRequest({\n        name: sanitizedFormData['name'],\n        parentId: parentFolderId || null,\n      }),\n    )\n  }\n\n  useEffect(() => {\n    if (creatingError) {\n      setError('name', {message: creatingError.message})\n    }\n  }, [creatingError, setError])\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"flex-end\">\n        <FormSubmitButton\n          disabled={creating || !isDirty || !isValid}\n          isValid={isValid}\n          onClick={handleSubmit(onSubmit)}\n        />\n      </Flex>\n    </Box>\n  )\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      header=\"Create Folder\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n        <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n        {parentPath && (\n          <Box marginBottom={3}>\n            <Text muted size={1}>\n              Creating inside {parentPath}\n            </Text>\n          </Box>\n        )}\n\n        <FormFieldInputText\n          {...register('name')}\n          disabled={creating}\n          error={errors?.name?.message}\n          label=\"Folder name\"\n          name=\"name\"\n        />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogFolderCreate\n","import {Box, Button, Flex, Inline, Stack, Text, Tree, TreeItem} from '@sanity/ui'\nimport pluralize from 'pluralize'\nimport {type ReactNode, useMemo, useState} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {selectFolderTree} from '../../modules/folders'\nimport type {DialogFolderMoveProps, FolderTreeNode} from '../../types'\nimport Dialog from '../Dialog'\n\nconst getExpandedIdSet = (\n  folderId: string | null,\n  byId: Record<string, {parentId: string | null}>,\n) => {\n  const expanded = new Set<string>()\n  let cursor: string | null = folderId\n  while (cursor) {\n    const node = byId[cursor]\n    if (!node) break\n    expanded.add(cursor)\n    cursor = node.parentId\n  }\n  return expanded\n}\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogFolderMoveProps\n}\n\ntype FolderNodeProps = {\n  expandedIds: Set<string>\n  node: FolderTreeNode\n  onSelect: (folderId: string) => void\n  selectedId: string | null\n}\n\nconst FolderNode = ({expandedIds, node, onSelect, selectedId}: FolderNodeProps) => {\n  const hasChildren = node.children.length > 0\n  const selected = selectedId === node.id\n\n  return (\n    <TreeItem\n      expanded={expandedIds.has(node.id)}\n      id={node.id}\n      onClick={() => onSelect(node.id)}\n      selected={selected}\n      text={`${node.name} (${node.totalCount})`}\n      weight={selected ? 'semibold' : 'medium'}\n    >\n      {hasChildren &&\n        node.children.map((childNode) => (\n          <FolderNode\n            expandedIds={expandedIds}\n            key={childNode.id}\n            node={childNode}\n            onSelect={onSelect}\n            selectedId={selectedId}\n          />\n        ))}\n    </TreeItem>\n  )\n}\n\ntype FolderTreeProps = {\n  expandedIds: Set<string>\n  folderTree: FolderTreeNode[]\n  onSelect: (folderId: string) => void\n  selectedId: string | null\n}\n\nconst FolderTree = ({expandedIds, folderTree, onSelect, selectedId}: FolderTreeProps) => (\n  <Tree gap={1}>\n    {folderTree.map((node) => (\n      <FolderNode\n        expandedIds={expandedIds}\n        key={node.id}\n        node={node}\n        onSelect={onSelect}\n        selectedId={selectedId}\n      />\n    ))}\n  </Tree>\n)\n\nconst DialogFolderMove = ({children, dialog}: Props) => {\n  const dispatch = useDispatch()\n  const folderTree = useTypedSelector(selectFolderTree)\n  const byId = useTypedSelector((state) => state.folders.byId)\n  const {assets, folderId, id} = dialog\n  const [selectedId, setSelectedId] = useState<string | null>(folderId || null)\n  const selectedFolder = selectedId ? byId[selectedId] : null\n  const expandedIds = useMemo(() => getExpandedIdSet(folderId || null, byId), [byId, folderId])\n\n  const handleClose = () => {\n    dispatch(dialogActions.remove({id}))\n  }\n\n  const handleMove = () => {\n    if (!selectedId) {\n      return\n    }\n\n    dispatch(\n      assetsActions.folderSetRequest({\n        assets,\n        closeDialogId: id,\n        folderId: selectedId,\n      }),\n    )\n  }\n\n  return (\n    <Dialog\n      animate\n      footer={\n        <Box padding={3}>\n          <Flex justify=\"flex-end\" gap={2}>\n            <Button mode=\"ghost\" onClick={handleClose} text=\"Cancel\" />\n            <Button\n              disabled={!selectedId}\n              mode=\"default\"\n              onClick={handleMove}\n              text={`Move ${assets.length} ${pluralize('asset', assets.length)}`}\n              tone=\"primary\"\n            />\n          </Flex>\n        </Box>\n      }\n      header=\"Move to Folder\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      <Stack gap={4} padding={4}>\n        <Text size={1}>\n          Move {assets.length} {pluralize('asset', assets.length)} to a folder.\n        </Text>\n\n        <Box style={{maxHeight: '22rem', overflowY: 'auto'}} paddingY={2}>\n          <FolderTree\n            expandedIds={expandedIds}\n            folderTree={folderTree}\n            onSelect={setSelectedId}\n            selectedId={selectedId}\n          />\n\n          {folderTree.length === 0 && (\n            <Box marginTop={3}>\n              <Text muted size={1}>\n                No folders yet.\n              </Text>\n            </Box>\n          )}\n        </Box>\n\n        {selectedFolder && (\n          <Inline gap={2}>\n            <Text muted size={1}>\n              Destination:\n            </Text>\n            <Text size={1} weight=\"semibold\">\n              {selectedFolder.name}\n            </Text>\n          </Inline>\n        )}\n      </Stack>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogFolderMove\n","import {Box, Flex, Text} from '@sanity/ui'\nimport {type ReactNode, useEffect} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\n\nimport {folderFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {foldersActions, selectFolderPathById} from '../../modules/folders'\nimport type {DialogFolderRenameProps, FolderFormData} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogFolderRenameProps\n}\n\nconst DialogFolderRename = ({children, dialog}: Props) => {\n  const {folderId, id} = dialog\n  const dispatch = useDispatch()\n  const renaming = useTypedSelector((state) => state.folders.renaming)\n  const renameError = useTypedSelector((state) => state.folders.renameError)\n  const folder = useTypedSelector((state) => state.folders.byId[folderId])\n  const folderPath = useTypedSelector((state) => selectFolderPathById(state, folderId))\n  const currentName = folder?.name || ''\n  const parentPath = folderPath.includes('/')\n    ? folderPath.slice(0, folderPath.lastIndexOf('/'))\n    : null\n\n  const {\n    formState: {errors, isDirty, isValid},\n    handleSubmit,\n    register,\n    setError,\n  } = useForm<FolderFormData>({\n    defaultValues: {\n      name: currentName,\n    },\n    mode: 'onChange',\n    resolver: zodFormResolver<FolderFormData>(folderFormSchema),\n  })\n\n  const handleClose = () => {\n    dispatch(dialogActions.remove({id}))\n  }\n\n  const onSubmit: SubmitHandler<FolderFormData> = (formData) => {\n    const sanitizedFormData = sanitizeFormData(formData)\n    dispatch(\n      foldersActions.renameRequest({\n        name: sanitizedFormData['name'],\n        folderId,\n      }),\n    )\n  }\n\n  useEffect(() => {\n    if (renameError) {\n      setError('name', {message: renameError.message})\n    }\n  }, [renameError, setError])\n\n  return (\n    <Dialog\n      animate\n      footer={\n        <Box padding={3}>\n          <Flex justify=\"flex-end\">\n            <FormSubmitButton\n              disabled={renaming || !isDirty || !isValid}\n              isValid={isValid}\n              onClick={handleSubmit(onSubmit)}\n            />\n          </Flex>\n        </Box>\n      }\n      header=\"Rename Folder\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n        <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n        <Box marginBottom={3}>\n          <Text muted size={1}>\n            {parentPath ? `Renaming inside ${parentPath}` : 'Renaming at root'}\n          </Text>\n        </Box>\n\n        <FormFieldInputText\n          {...register('name')}\n          disabled={renaming}\n          error={errors?.name?.message}\n          label=\"Folder name\"\n          name=\"name\"\n        />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogFolderRename\n","import {AddIcon} from '@sanity/icons/Add'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {FolderIcon} from '@sanity/icons/Folder'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {Box, Button, Container, Flex, Inline, Label, Text, Tree, TreeItem} from '@sanity/ui'\nimport {Tooltip} from '@sanity/ui/tooltip'\nimport {type ReactNode, useMemo} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {foldersActions, selectCanDeleteFolder, selectFolderTree} from '../../modules/folders'\nimport type {FolderTreeNode} from '../../types'\n\nconst getExpandedIdSet = (\n  folderId: string | null,\n  byId: Record<string, {parentId: string | null}>,\n) => {\n  const expanded = new Set<string>()\n  let cursor: string | null = folderId\n  while (cursor) {\n    const node = byId[cursor]\n    if (!node) break\n    expanded.add(cursor)\n    cursor = node.parentId\n  }\n  return expanded\n}\n\ntype FolderNodeProps = {\n  currentFolderId: string | null\n  expandedIds: Set<string>\n  node: FolderTreeNode\n  onSelect: (folderId: string) => void\n}\n\ntype FolderHeaderActionProps = {\n  disabled?: boolean\n  icon: ReactNode\n  onClick: () => void\n  tone?: 'critical' | 'default' | 'primary'\n  tooltip: string\n}\n\nconst FolderHeaderAction = ({\n  disabled = false,\n  icon,\n  onClick,\n  tone = 'default',\n  tooltip,\n}: FolderHeaderActionProps) => (\n  <Tooltip\n    animate\n    content={\n      <Container padding={2} width={0}>\n        <Text muted size={1}>\n          {tooltip}\n        </Text>\n      </Container>\n    }\n    disabled={typeof window !== 'undefined' && 'ontouchstart' in window}\n    placement=\"top\"\n    portal\n  >\n    <Button\n      aria-label={tooltip}\n      disabled={disabled}\n      fontSize={1}\n      icon={icon}\n      mode=\"bleed\"\n      onClick={onClick}\n      padding={2}\n      tone={tone}\n    />\n  </Tooltip>\n)\n\ntype FolderItemTextProps = {\n  name: string\n  totalCount: number\n}\n\n/**\n * this uses some hacky css to get the desired layout\n * The tree item is a text container, so we need to use a span to wrap the content\n */\nconst FolderItemText = ({name, totalCount}: FolderItemTextProps) => (\n  <span\n    style={{\n      boxSizing: 'border-box',\n      display: 'block',\n      maxWidth: '100%',\n      minWidth: 0,\n      overflow: 'hidden',\n      paddingRight: '2rem',\n      position: 'relative',\n      width: '100%',\n    }}\n  >\n    <span\n      style={{\n        alignItems: 'center',\n        display: 'flex',\n        paddingLeft: '0.25rem',\n        gap: '0.5rem',\n        minWidth: 0,\n        overflow: 'hidden',\n      }}\n    >\n      <span style={{display: 'inline-flex', flexShrink: 0, lineHeight: 0}}>\n        <FolderIcon />\n      </span>\n      <span\n        style={{\n          display: 'block',\n          minWidth: 0,\n          overflow: 'hidden',\n          textOverflow: 'ellipsis',\n          whiteSpace: 'nowrap',\n        }}\n      >\n        {name}\n      </span>\n    </span>\n    <span\n      style={{\n        fontSize: '0.75rem',\n        opacity: 0.78,\n        position: 'absolute',\n        right: 0,\n        top: '50%',\n        transform: 'translateY(-50%)',\n      }}\n    >\n      {totalCount}\n    </span>\n  </span>\n)\n\nconst FolderNode = ({currentFolderId, expandedIds, node, onSelect}: FolderNodeProps) => {\n  const hasChildren = node.children.length > 0\n  const selected = currentFolderId === node.id\n\n  return (\n    <TreeItem\n      expanded={expandedIds.has(node.id)}\n      id={node.id}\n      onClick={() => onSelect(node.id)}\n      selected={selected}\n      text={<FolderItemText name={node.name} totalCount={node.totalCount} />}\n      weight={selected ? 'semibold' : 'medium'}\n    >\n      {hasChildren &&\n        node.children.map((childNode) => (\n          <FolderNode\n            currentFolderId={currentFolderId}\n            expandedIds={expandedIds}\n            key={childNode.id}\n            node={childNode}\n            onSelect={onSelect}\n          />\n        ))}\n    </TreeItem>\n  )\n}\n\nconst FolderView = () => {\n  const dispatch = useDispatch()\n  const currentFolderId = useTypedSelector((state) => state.folders.currentFolderId)\n  const byId = useTypedSelector((state) => state.folders.byId)\n  const canDeleteFolder = useTypedSelector(selectCanDeleteFolder)\n  const fetching = useTypedSelector((state) => state.folders.fetching)\n  const folderTree = useTypedSelector(selectFolderTree)\n  const currentFolder = currentFolderId ? byId[currentFolderId] : null\n  const expandedIds = useMemo(\n    () => getExpandedIdSet(currentFolderId, byId),\n    [byId, currentFolderId],\n  )\n  const treeKey = useMemo(() => Array.from(expandedIds).join('|') || 'root', [expandedIds])\n\n  const hasFolders = folderTree.length > 0\n\n  const handleFolderSelect = (folderId: string) => {\n    dispatch(foldersActions.currentFolderSet({folderId}))\n  }\n\n  const handleFolderDelete = () => {\n    if (!currentFolderId || !currentFolder) {\n      return\n    }\n\n    dispatch(\n      dialogActions.showConfirmDeleteFolder({\n        folderId: currentFolderId,\n        folderName: currentFolder.name,\n      }),\n    )\n  }\n\n  return (\n    <Flex direction=\"column\" flex={1} height=\"fill\">\n      <Flex\n        align=\"center\"\n        justify=\"space-between\"\n        paddingX={3}\n        style={{\n          borderBottom: '1px solid var(--card-border-color)',\n          flexShrink: 0,\n          height: `${PANEL_HEIGHT}px`,\n        }}\n      >\n        <Box flex={1}>\n          <Inline gap={2}>\n            <Label size={0}>Folders</Label>\n            {fetching && (\n              <Label size={0} style={{opacity: 0.3}}>\n                Loading...\n              </Label>\n            )}\n          </Inline>\n        </Box>\n\n        <Inline gap={1}>\n          {currentFolderId && (\n            <FolderHeaderAction\n              icon={<EditIcon />}\n              onClick={() => dispatch(DIALOG_ACTIONS.showFolderRename({folderId: currentFolderId}))}\n              tone=\"primary\"\n              tooltip=\"Rename folder\"\n            />\n          )}\n\n          <FolderHeaderAction\n            icon={<AddIcon />}\n            onClick={() =>\n              dispatch(DIALOG_ACTIONS.showFolderCreate({parentFolderId: currentFolderId || null}))\n            }\n            tone=\"primary\"\n            tooltip=\"Create folder\"\n          />\n\n          {currentFolderId && canDeleteFolder && (\n            <FolderHeaderAction\n              icon={<TrashIcon />}\n              onClick={handleFolderDelete}\n              tone=\"critical\"\n              tooltip=\"Delete folder\"\n            />\n          )}\n        </Inline>\n      </Flex>\n\n      <Box padding={2}>\n        <Box>\n          <Tree gap={1} key={treeKey}>\n            <TreeItem\n              id=\"__all-assets\"\n              onClick={() => dispatch(foldersActions.currentFolderClear())}\n              selected={currentFolderId === null}\n              text=\"All assets\"\n              weight={currentFolderId === null ? 'semibold' : 'medium'}\n            />\n\n            {folderTree.map((node) => (\n              <FolderNode\n                currentFolderId={currentFolderId}\n                expandedIds={expandedIds}\n                key={node.id}\n                node={node}\n                onSelect={handleFolderSelect}\n              />\n            ))}\n          </Tree>\n\n          {!hasFolders && !fetching && (\n            <Box marginTop={3} paddingX={1}>\n              <Text muted size={1}>\n                <em>No folders</em>\n              </Text>\n            </Box>\n          )}\n        </Box>\n      </Box>\n    </Flex>\n  )\n}\n\nexport default FolderView\n","import {Box} from '@sanity/ui'\nimport {type ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogFoldersProps} from '../../types'\nimport Dialog from '../Dialog'\nimport FolderView from '../FolderView'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogFoldersProps\n}\n\nconst DialogFolders = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  const dispatch = useDispatch()\n\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.clear())\n  }, [dispatch])\n\n  return (\n    <Dialog animate header=\"Folders\" id={id} onClose={handleClose} width={1}>\n      <Box\n        style={{\n          height: '100%',\n          minHeight: '420px',\n        }}\n      >\n        <FolderView />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogFolders\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Flex, Label, rem, Text, type ThemeColorSchemeKey} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {searchActions} from '../../modules/search'\nimport type {SearchFacetInputProps, WithId} from '../../types'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  children: ReactNode\n  facet: WithId<SearchFacetInputProps>\n}\n\nconst Container = styled<typeof Box, {$scheme: ThemeColorSchemeKey}>(Box)(({$scheme, theme}) => {\n  return css`\n    background: ${getSchemeColor($scheme, 'bg')};\n    border-radius: ${rem(theme.sanity.radius[2]!)};\n  `\n})\n\nconst SearchFacet = (props: Props) => {\n  const {children, facet} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n\n  const handleClose = () => {\n    dispatch(searchActions.facetsRemoveById({facetId: facet.id}))\n  }\n\n  return (\n    <Container padding={[2, 2, 1]} $scheme={scheme}>\n      <Flex align={['flex-start', 'flex-start', 'center']} direction={['column', 'column', 'row']}>\n        {/* Title */}\n        <Box paddingBottom={[3, 3, 0]} paddingLeft={1} paddingRight={2} paddingTop={[1, 1, 0]}>\n          <Label\n            size={0}\n            style={{\n              whiteSpace: 'nowrap',\n            }}\n          >\n            {facet.title}\n          </Label>\n        </Box>\n\n        <Flex align=\"center\">\n          {children}\n\n          {/* Close button */}\n          <Box marginLeft={1} paddingX={2}>\n            <Text muted size={0}>\n              <CloseIcon onClick={handleClose} />\n            </Text>\n          </Box>\n        </Flex>\n      </Flex>\n    </Container>\n  )\n}\n\nexport default SearchFacet\n","import {TextInput} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\n\n// TODO: use correct type\ntype Props = any & {\n  onValueChange: (value: number) => void\n  value?: number\n}\n\nconst TextInputNumber = (props: Props) => {\n  const {onValueChange, value, ...remainingProps} = props\n\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    const val = e.target.value\n    const regex = /^[0-9\\b]+$/\n\n    // Test for number and strip leading zeroes\n    if (val === '' || regex.test(val)) {\n      onValueChange(parseInt(val, 10) || '')\n    }\n  }\n\n  return (\n    <TextInput\n      {...remainingProps}\n      onChange={handleChange} //\n      value={value ?? ''}\n    />\n  )\n}\n\nexport default TextInputNumber\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button} from '@sanity/ui'\nimport {Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui/menu'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport type {\n  SearchFacetInputNumberModifier,\n  SearchFacetInputNumberProps,\n  SearchFacetOperatorType,\n  WithId,\n} from '../../types'\nimport SearchFacet from '../SearchFacet'\nimport TextInputNumber from '../TextInputNumber'\n\ntype Props = {\n  facet: WithId<SearchFacetInputNumberProps>\n}\n\nconst SearchFacetNumber = ({facet}: Props) => {\n  // Redux\n  const dispatch = useDispatch()\n\n  const popoverProps = usePortalPopoverProps()\n\n  const modifiers = facet?.modifiers\n  const selectedModifier = facet?.modifier\n    ? modifiers?.find((modifier) => modifier.name === facet?.modifier)\n    : modifiers?.[0]\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, operatorType}))\n  }\n\n  const handleModifierClick = (modifier: SearchFacetInputNumberModifier) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, modifier: modifier.name}))\n  }\n\n  const handleValueChange = (value: number) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, value}))\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet.operatorType ?? 'greaterThan'\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={operators[selectedOperatorType].label}\n            />\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* Value */}\n      <Box marginX={1} style={{maxWidth: '50px'}}>\n        <TextInputNumber\n          fontSize={1}\n          onValueChange={handleValueChange}\n          padding={2}\n          radius={2}\n          width={2}\n          value={facet?.value}\n        />\n      </Box>\n\n      {/* Modifiers */}\n      {modifiers && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={selectedModifier?.title}\n            />\n          }\n          id=\"modifier\"\n          menu={\n            <Menu>\n              {modifiers.map((modifier) => {\n                const selected = modifier.name === facet.modifier\n                return (\n                  <MenuItem\n                    disabled={selected}\n                    fontSize={1}\n                    key={modifier.name}\n                    onClick={() => handleModifierClick(modifier)}\n                    padding={2}\n                    text={modifier.title}\n                  />\n                )\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetNumber\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button} from '@sanity/ui'\nimport {Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui/menu'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport type {\n  SearchFacetInputSelectListItemProps,\n  SearchFacetInputSelectProps,\n  SearchFacetOperatorType,\n  WithId,\n} from '../../types'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n  facet: WithId<SearchFacetInputSelectProps>\n}\n\nconst SearchFacetSelect = ({facet}: Props) => {\n  // Redux\n  const dispatch = useDispatch()\n\n  const popoverProps = usePortalPopoverProps()\n\n  const options = facet?.options\n\n  const selectedItem = options?.find((v) => v.name === facet?.value)\n\n  const handleListItemClick = (option: SearchFacetInputSelectListItemProps) => {\n    dispatch(searchActions.facetsUpdate({name: facet.name, value: option.name}))\n  }\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(searchActions.facetsUpdate({name: facet.name, operatorType}))\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet?.operatorType ?? 'is'\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Box marginRight={1}>\n              <Button\n                fontSize={1}\n                iconRight={SelectIcon}\n                padding={2}\n                text={operators[selectedOperatorType].label}\n              />\n            </Box>\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* List */}\n      <MenuButton\n        button={\n          <Button fontSize={1} iconRight={SelectIcon} padding={2} text={selectedItem?.title} />\n        }\n        id=\"list\"\n        menu={\n          <Menu>\n            {options?.map((item) => {\n              const selected = item.name === selectedItem?.name\n              return (\n                <MenuItem\n                  disabled={selected}\n                  fontSize={1}\n                  key={item.name}\n                  onClick={() => handleListItemClick(item)}\n                  padding={2}\n                  text={item.title}\n                />\n              )\n            })}\n          </Menu>\n        }\n        popover={popoverProps}\n      />\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetSelect\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button, TextInput} from '@sanity/ui'\nimport {Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui/menu'\nimport {type ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {operators} from '../../config/searchFacets'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport {searchActions} from '../../modules/search'\nimport type {SearchFacetInputStringProps, SearchFacetOperatorType, WithId} from '../../types'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n  facet: WithId<SearchFacetInputStringProps>\n}\n\nconst SearchFacetString = ({facet}: Props) => {\n  // Redux\n  const dispatch = useDispatch()\n\n  const popoverProps = usePortalPopoverProps()\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, operatorType}))\n  }\n\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    dispatch(searchActions.facetsUpdateById({id: facet.id, value: e.target.value}))\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet.operatorType\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={operators[selectedOperatorType].label}\n            />\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* Value */}\n      {!operators[selectedOperatorType].hideInput && (\n        <Box marginLeft={1} style={{maxWidth: '125px'}}>\n          <TextInput\n            fontSize={1}\n            onChange={handleChange}\n            padding={2}\n            radius={2}\n            width={2}\n            value={facet?.value}\n          />\n        </Box>\n      )}\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetString\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Card, rem, studioTheme, Text, type ThemeColorSchemeKey} from '@sanity/ui'\nimport {components, type StylesConfig} from 'react-select'\nimport {Virtuoso} from 'react-virtuoso'\n\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\nconst {\n  fonts: {\n    text: {sizes: themeTextSizes},\n  },\n  radius: themeRadius,\n  space: themeSpace,\n} = studioTheme\n\nexport const reactSelectStyles = (scheme: ThemeColorSchemeKey): StylesConfig => {\n  return {\n    control: (styles, {isDisabled, isFocused}) => {\n      let boxShadow = `inset 0 0 0 1px var(--card-border-color)`\n      if (isFocused) {\n        boxShadow = `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputEnabledBorder')},\n        0 0 0 1px ${getSchemeColor(scheme, 'bg2')},\n        0 0 0 3px var(--card-focus-ring-color) !important`\n      }\n\n      return {\n        ...styles,\n        'backgroundColor': 'var(--card-bg-color)',\n        'color': 'inherit',\n        'border': 'none',\n        'borderRadius': themeRadius[2],\n        boxShadow,\n        'fontSize': themeTextSizes[1]!.fontSize,\n        'minHeight': '25px',\n        'opacity': isDisabled ? 0.5 : 'inherit',\n        'outline': 'none',\n        'transition': 'none',\n        '&:hover': {\n          boxShadow: `inset 0 0 0 1px ${getSchemeColor(scheme, 'inputHoveredBorder')}`,\n        },\n      }\n    },\n    input: (styles) => ({\n      ...styles,\n      color: 'var(--card-fg-color)',\n      fontFamily: studioTheme.fonts.text.family,\n      fontSize: themeTextSizes[1]!.fontSize,\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    menuList: (styles) => ({\n      ...styles,\n      padding: 0,\n    }),\n    noOptionsMessage: (styles) => ({\n      ...styles,\n      fontFamily: studioTheme.fonts.text.family,\n      fontSize: themeTextSizes[1]!.fontSize,\n      lineHeight: '1em',\n    }),\n    option: (styles, {isFocused}) => ({\n      ...styles,\n      'backgroundColor': isFocused ? getSchemeColor(scheme, 'spotBlue') : 'transparent',\n      'borderRadius': themeRadius[2],\n      'color': isFocused ? getSchemeColor(scheme, 'bg') : 'inherit',\n      'fontSize': themeTextSizes[1]!.fontSize,\n      'lineHeight': '1em',\n      'margin': 0,\n      'padding': rem(themeSpace[1]!),\n      '&:hover': {\n        backgroundColor: getSchemeColor(scheme, 'spotBlue'),\n        color: getSchemeColor(scheme, 'bg'),\n      },\n    }),\n    placeholder: (styles) => ({\n      ...styles,\n      fontSize: themeTextSizes[1]!.fontSize,\n      marginLeft: rem(themeSpace[2]!),\n      paddingLeft: 0,\n    }),\n    singleValue: (styles) => ({\n      ...styles,\n      alignItems: 'center',\n      display: 'inline-flex',\n      height: '100%',\n      marginLeft: rem(themeSpace[2]!),\n    }),\n    valueContainer: (styles) => ({\n      ...styles,\n      margin: 0,\n      padding: 0,\n    }),\n  }\n}\n\nconst ClearIndicator = (props: any) => {\n  return (\n    <components.ClearIndicator {...props}>\n      <Box\n        paddingRight={1}\n        style={{\n          transform: 'scale(0.85)',\n        }}\n      >\n        <Text muted size={0}>\n          <CloseIcon />\n        </Text>\n      </Box>\n    </components.ClearIndicator>\n  )\n}\n\nconst Menu = (props: any) => {\n  return (\n    <components.Menu {...props}>\n      <Card radius={1} shadow={2}>\n        {props.children}\n      </Card>\n    </components.Menu>\n  )\n}\n\nconst MenuList = (props: any) => {\n  const {children} = props\n\n  const MAX_ROWS = 5\n  const OPTION_HEIGHT = 33\n\n  if (Array.isArray(children)) {\n    const height =\n      children.length > MAX_ROWS ? OPTION_HEIGHT * MAX_ROWS : children.length * OPTION_HEIGHT\n\n    return (\n      <Virtuoso\n        className=\"media__custom-scrollbar\"\n        itemContent={(index) => {\n          const item = children[index]\n          return <Option {...item.props} />\n        }}\n        style={{height}}\n        totalCount={children.length}\n      />\n    )\n  }\n  return <components.MenuList {...props}>{children}</components.MenuList>\n}\n\nconst NoOptionsMessage = (props: any) => {\n  return <components.NoOptionsMessage {...props}>{props.children}</components.NoOptionsMessage>\n}\n\nconst Option = (props: any) => {\n  return (\n    <Box padding={1}>\n      <components.Option {...props}>\n        <Box paddingY={1}>\n          <Text size={1} style={{color: 'inherit'}} textOverflow=\"ellipsis\">\n            {props.children}\n          </Text>\n        </Box>\n      </components.Option>\n    </Box>\n  )\n}\n\nconst SingleValue = (props: any) => {\n  return (\n    <components.SingleValue {...props}>\n      <Text size={1} textOverflow=\"ellipsis\">\n        {props.children}\n      </Text>\n    </components.SingleValue>\n  )\n}\n\nexport const reactSelectComponents = {\n  ClearIndicator,\n  DropdownIndicator: null,\n  IndicatorSeparator: null,\n  Menu,\n  MenuList,\n  NoOptionsMessage,\n  Option,\n  SingleValue,\n}\n","import {SelectIcon} from '@sanity/icons/Select'\nimport {Box, Button} from '@sanity/ui'\nimport {Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui/menu'\nimport {useDispatch} from 'react-redux'\nimport Select from 'react-select'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {operators} from '../../config/searchFacets'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\nimport {selectTags} from '../../modules/tags'\nimport {reactSelectComponents, reactSelectStyles} from '../../styled/react-select/single'\nimport type {\n  TagSelectOption,\n  SearchFacetInputSearchableProps,\n  SearchFacetOperatorType,\n  WithId,\n} from '../../types'\nimport getTagSelectOptions from '../../utils/getTagSelectOptions'\nimport SearchFacet from '../SearchFacet'\n\ntype Props = {\n  facet: WithId<SearchFacetInputSearchableProps>\n}\n\nconst SearchFacetTags = ({facet}: Props) => {\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const {excludeTagSlugs} = useToolOptions()\n  const tagsAll = useTypedSelector((state) => selectTags(state))\n  const tags =\n    excludeTagSlugs.length > 0\n      ? tagsAll.filter((t) => !excludeTagSlugs.includes(t.tag.name.current))\n      : tagsAll\n  const tagsFetching = useTypedSelector((state) => state.tags.fetching)\n  const allTagOptions = getTagSelectOptions(tags)\n\n  const popoverProps = usePortalPopoverProps()\n\n  const handleChange = (option: TagSelectOption) => {\n    dispatch(\n      searchActions.facetsUpdateById({\n        id: facet.id,\n        value: option,\n      }),\n    )\n  }\n\n  const handleOperatorItemClick = (operatorType: SearchFacetOperatorType) => {\n    dispatch(\n      searchActions.facetsUpdateById({\n        id: facet.id,\n        operatorType,\n      }),\n    )\n  }\n\n  const selectedOperatorType: SearchFacetOperatorType = facet.operatorType\n\n  return (\n    <SearchFacet facet={facet}>\n      {/* Optional operators */}\n      {facet?.operatorTypes && (\n        <MenuButton\n          button={\n            <Button\n              fontSize={1}\n              iconRight={SelectIcon}\n              padding={2}\n              text={operators[selectedOperatorType].label}\n            />\n          }\n          id=\"operators\"\n          menu={\n            <Menu>\n              {facet.operatorTypes.map((operatorType, index) => {\n                if (operatorType) {\n                  const selected = operatorType === selectedOperatorType\n                  return (\n                    <MenuItem\n                      disabled={selected}\n                      fontSize={1}\n                      key={operatorType}\n                      onClick={() => handleOperatorItemClick(operatorType)}\n                      padding={2}\n                      gap={4}\n                      style={{minWidth: '150px'}}\n                      text={operators[operatorType].label}\n                    />\n                  )\n                }\n\n                return <MenuDivider key={index} />\n              })}\n            </Menu>\n          }\n          popover={popoverProps}\n        />\n      )}\n\n      {/* Value */}\n      {!operators[selectedOperatorType].hideInput && (\n        <Box marginX={1} style={{width: '160px'}}>\n          <Select\n            components={reactSelectComponents}\n            instanceId=\"facet-searchable\"\n            isClearable\n            isDisabled={tagsFetching}\n            isSearchable\n            name=\"tags\"\n            noOptionsMessage={() => 'No tags'}\n            onChange={(value: any) => handleChange(value as TagSelectOption)}\n            options={allTagOptions}\n            placeholder={tagsFetching ? 'Loading...' : 'Select...'}\n            styles={reactSelectStyles(scheme)}\n            value={facet?.value}\n          />\n        </Box>\n      )}\n    </SearchFacet>\n  )\n}\n\nexport default SearchFacetTags\n","import {Box, Flex, Inline, rem, type Theme} from '@sanity/ui'\nimport {styled, css} from 'styled-components'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport SearchFacetNumber from '../SearchFacetNumber'\nimport SearchFacetSelect from '../SearchFacetSelect'\nimport SearchFacetString from '../SearchFacetString'\nimport SearchFacetTags from '../SearchFacetTags'\n\ntype Props = {\n  layout?: 'inline' | 'stack'\n}\n\nconst StackContainer = styled(Flex)(({theme}: {theme: Theme}) => {\n  return css`\n    > * {\n      margin-bottom: ${rem(theme.sanity.space[2]!)};\n    }\n  `\n})\n\nconst SearchFacets = (props: Props) => {\n  const {layout = 'inline'} = props\n\n  // Redux\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n\n  const Items = searchFacets.map((facet) => {\n    const key = facet.id\n    if (facet.type === 'number') {\n      return <SearchFacetNumber facet={facet} key={key} />\n    }\n\n    if (facet.type === 'searchable') {\n      return <SearchFacetTags facet={facet} key={key} />\n    }\n\n    if (facet.type === 'select') {\n      return <SearchFacetSelect facet={facet} key={key} />\n    }\n\n    if (facet.type === 'string') {\n      return <SearchFacetString facet={facet} key={key} />\n    }\n\n    return null\n  })\n\n  if (layout === 'inline') {\n    if (searchFacets.length === 0) {\n      return null\n    }\n\n    return (\n      <Box marginBottom={2}>\n        <Inline gap={2}>{Items}</Inline>\n      </Box>\n    )\n  }\n\n  if (layout === 'stack') {\n    return (\n      <StackContainer align=\"flex-start\" direction=\"column\">\n        {Items}\n      </StackContainer>\n    )\n  }\n\n  throw Error('Invalid layout')\n}\n\nexport default SearchFacets\n","import {AddIcon} from '@sanity/icons/Add'\nimport {Button, Flex} from '@sanity/ui'\nimport {Menu, MenuButton, MenuDivider, MenuGroup, MenuItem} from '@sanity/ui/menu'\nimport {useDispatch} from 'react-redux'\n\nimport {FACETS} from '../../constants'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\nimport type {SearchFacetDivider, SearchFacetGroup, SearchFacetInputProps} from '../../types'\n\nconst SearchFacetsControl = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const assetTypes = useTypedSelector((state) => state.assets.assetTypes)\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n  const selectedDocument = useTypedSelector((state) => state.selected.document)\n\n  const popoverProps = usePortalPopoverProps()\n\n  const {creditLine} = useToolOptions()\n\n  const isTool = !selectedDocument\n\n  const filteredFacets = FACETS\n    // Filter facets based on current context, whether it's invoked as a tool, or via selection through via custom asset source.\n    .filter((facet) => {\n      // Remove credit line filter if it's not enabled\n      if (!creditLine?.enabled && facet?.type === 'string' && facet?.name === 'creditLine') {\n        return false\n      }\n\n      if (facet.type === 'group' || facet.type === 'divider') {\n        return true\n      }\n\n      if (isTool) {\n        return !facet?.selectOnly\n      }\n\n      const matchingAssetTypes = facet.assetTypes.filter((assetType) =>\n        assetTypes.includes(assetType),\n      )\n      return matchingAssetTypes.length > 0\n    })\n    // Remove adjacent and leading / trailing dividers\n    .filter((facet, index, facets) => {\n      const previousFacet = facets[index - 1]\n      // Ignore leading + trailing dividers\n      if (facet.type === 'divider' && (index === 0 || index === facets.length - 1)) {\n        return false\n      }\n      // Ignore adjacent dividers\n      if (facet.type === 'divider' && previousFacet?.type === 'divider') {\n        return false\n      }\n      return true\n    })\n\n  const hasSearchFacets = filteredFacets.length > 0\n\n  const renderMenuFacets = (\n    facets: (SearchFacetDivider | SearchFacetGroup | SearchFacetInputProps)[],\n    level: number = 0,\n  ) => {\n    return (\n      <>\n        {facets?.map((facet, index) => {\n          if (facet.type === 'divider') {\n            return <MenuDivider key={index} />\n          }\n\n          // Recursively render menu facets\n          if (facet.type === 'group') {\n            return (\n              <MenuGroup key={`group-${level}-${index}`} text={facet.title} title={facet.title}>\n                {renderMenuFacets(facet.facets, level + 1)}\n              </MenuGroup>\n            )\n          }\n\n          if (facet) {\n            const disabled =\n              !facet.operatorTypes && !!searchFacets.find((v) => v.name === facet.name)\n\n            return (\n              <MenuItem\n                disabled={disabled}\n                fontSize={1}\n                key={facet.name}\n                onClick={() => dispatch(searchActions.facetsAdd({facet}))}\n                padding={2}\n                text={facet.title}\n              />\n            )\n          }\n\n          return null\n        })}\n      </>\n    )\n  }\n\n  return (\n    <Flex>\n      {/* Add filter button */}\n      <MenuButton\n        button={\n          <Button\n            disabled={!hasSearchFacets}\n            fontSize={1}\n            icon={AddIcon}\n            mode=\"bleed\"\n            gap={2}\n            text=\"Add filter\"\n            tone=\"primary\"\n          />\n        }\n        id=\"facets\"\n        menu={<Menu>{renderMenuFacets(filteredFacets)}</Menu>}\n        popover={{\n          ...popoverProps,\n          placement: 'right-start',\n        }}\n      />\n\n      {/* Clear facets button */}\n      {searchFacets.length > 0 && (\n        <Button\n          fontSize={1}\n          mode=\"bleed\"\n          onClick={() => dispatch(searchActions.facetsClear())}\n          text=\"Clear\"\n        />\n      )}\n    </Flex>\n  )\n}\n\nexport default SearchFacetsControl\n","import {Box} from '@sanity/ui'\nimport {type ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogSearchFacetsProps} from '../../types'\nimport Dialog from '../Dialog'\nimport SearchFacets from '../SearchFacets'\nimport SearchFacetsControl from '../SearchFacetsControl'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogSearchFacetsProps\n}\n\nconst DialogSearchFacets = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.clear())\n  }, [dispatch])\n\n  return (\n    <Dialog animate header=\"Filters\" id={id} onClose={handleClose} width={1}>\n      <Box padding={3}>\n        <SearchFacets layout=\"stack\" />\n        <SearchFacetsControl />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogSearchFacets\n","import {Box, Flex} from '@sanity/ui'\nimport {type ReactNode, useEffect} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\n\nimport {tagFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {tagsActions} from '../../modules/tags'\nimport type {DialogTagCreateProps, TagFormData} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogTagCreateProps\n}\n\nconst DialogTagCreate = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  const dispatch = useDispatch()\n\n  const creating = useTypedSelector((state) => state.tags.creating)\n  const creatingError = useTypedSelector((state) => state.tags.creatingError)\n\n  const {\n    // Read the formState before render to subscribe the form state through Proxy\n    formState: {errors, isDirty, isValid},\n    handleSubmit,\n    register,\n    setError,\n  } = useForm<TagFormData>({\n    defaultValues: {\n      name: '',\n    },\n    mode: 'onChange',\n    resolver: zodFormResolver<TagFormData>(tagFormSchema),\n  })\n\n  const formUpdating = creating\n\n  const handleClose = () => {\n    dispatch(dialogActions.clear())\n  }\n\n  // - submit react-hook-form\n  const onSubmit: SubmitHandler<TagFormData> = (formData) => {\n    const sanitizedFormData = sanitizeFormData(formData)\n\n    dispatch(tagsActions.createRequest({name: sanitizedFormData['name']}))\n  }\n\n  useEffect(() => {\n    if (creatingError) {\n      setError('name', {\n        message: creatingError?.message,\n      })\n    }\n  }, [creatingError, setError])\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"flex-end\">\n        {/* Submit button */}\n        <FormSubmitButton\n          disabled={formUpdating || !isDirty || !isValid}\n          isValid={isValid}\n          onClick={handleSubmit(onSubmit)}\n        />\n      </Flex>\n    </Box>\n  )\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      header=\"Create Tag\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      {/* Form fields */}\n      <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n        {/* Hidden button to enable enter key submissions */}\n        <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n        {/* Title */}\n        <FormFieldInputText\n          {...register('name')}\n          disabled={formUpdating}\n          error={errors?.name?.message}\n          label=\"Name\"\n          name=\"name\"\n        />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogTagCreate\n","import type {MutationEvent} from '@sanity/client'\nimport {Box, Button, Card, Flex, Text} from '@sanity/ui'\nimport groq from 'groq'\nimport {type ReactNode, useCallback, useEffect, useState} from 'react'\nimport {type SubmitHandler, useForm} from 'react-hook-form'\nimport {useDispatch} from 'react-redux'\n\nimport {tagFormSchema} from '../../formSchema'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {dialogActions} from '../../modules/dialog'\nimport {selectTagById, tagsActions} from '../../modules/tags'\nimport type {DialogTagEditProps, Tag, TagFormData} from '../../types'\nimport sanitizeFormData from '../../utils/sanitizeFormData'\nimport zodFormResolver from '../../utils/zodFormResolver'\nimport Dialog from '../Dialog'\nimport FormFieldInputText from '../FormFieldInputText'\nimport FormSubmitButton from '../FormSubmitButton'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogTagEditProps\n}\n\nconst DialogTagEdit = (props: Props) => {\n  const {\n    children,\n    dialog: {id, tagId},\n  } = props\n\n  const client = useVersionedClient()\n\n  const dispatch = useDispatch()\n  const tagItem = useTypedSelector((state) => selectTagById(state, String(tagId))) // TODO: double check string cast\n\n  // - Generate a snapshot of the current tag\n  const [tagSnapshot, setTagSnapshot] = useState(tagItem?.tag)\n\n  const currentTag = tagItem ? tagItem?.tag : tagSnapshot\n  const generateDefaultValues = useCallback(\n    (tag?: Tag) => ({\n      name: tag?.name?.current || '',\n    }),\n    [],\n  )\n\n  const {\n    // Read the formState before render to subscribe the form state through Proxy\n    formState: {errors, isDirty, isValid},\n    handleSubmit,\n    register,\n    reset,\n    setError,\n  } = useForm<TagFormData>({\n    defaultValues: generateDefaultValues(tagItem?.tag),\n    mode: 'onChange',\n    resolver: zodFormResolver<TagFormData>(tagFormSchema),\n  })\n\n  const formUpdating = !tagItem || tagItem?.updating\n\n  const handleClose = () => {\n    dispatch(dialogActions.remove({id}))\n  }\n\n  // Submit react-hook-form\n  const onSubmit: SubmitHandler<TagFormData> = (formData) => {\n    if (!tagItem?.tag) {\n      return\n    }\n    const sanitizedFormData = sanitizeFormData(formData)\n    dispatch(\n      tagsActions.updateRequest({\n        closeDialogId: tagItem?.tag?._id,\n        formData: {\n          name: {\n            _type: 'slug',\n            current: sanitizedFormData['name'],\n          },\n        },\n        tag: tagItem?.tag,\n      }),\n    )\n  }\n\n  const handleDelete = () => {\n    if (!tagItem?.tag) {\n      return\n    }\n\n    dispatch(\n      dialogActions.showConfirmDeleteTag({\n        closeDialogId: tagItem?.tag?._id,\n        tag: tagItem?.tag,\n      }),\n    )\n  }\n\n  const handleTagUpdate = useCallback(\n    (update: MutationEvent) => {\n      const {result, transition} = update\n      if (result && transition === 'update') {\n        // Regenerate snapshot\n        setTagSnapshot(result as Tag)\n        // Reset react-hook-form\n        reset(generateDefaultValues(result as Tag))\n      }\n    },\n    [reset, generateDefaultValues],\n  )\n\n  useEffect(() => {\n    if (tagItem?.error) {\n      setError('name', {\n        message: tagItem.error?.message,\n      })\n    }\n  }, [setError, tagItem?.error])\n\n  // - Listen for asset mutations and update snapshot\n  useEffect(() => {\n    if (!tagItem?.tag) {\n      return undefined\n    }\n\n    // Remember that Sanity listeners ignore joins, order clauses and projections\n    const subscriptionAsset = client\n      .listen(groq`*[_id == $id]`, {id: tagItem?.tag._id})\n      .subscribe(handleTagUpdate)\n\n    return () => {\n      subscriptionAsset?.unsubscribe()\n    }\n  }, [client, handleTagUpdate, tagItem?.tag])\n\n  const Footer = () => (\n    <Box padding={3}>\n      <Flex justify=\"space-between\">\n        {/* Delete button */}\n        <Button\n          disabled={formUpdating}\n          fontSize={1}\n          mode=\"bleed\"\n          onClick={handleDelete}\n          text=\"Delete\"\n          tone=\"critical\"\n        />\n\n        {/* Submit button */}\n        <FormSubmitButton\n          disabled={formUpdating || !isDirty || !isValid}\n          isValid={isValid}\n          lastUpdated={tagItem?.tag?._updatedAt}\n          onClick={handleSubmit(onSubmit)}\n        />\n      </Flex>\n    </Box>\n  )\n\n  if (!currentTag) {\n    return null\n  }\n\n  return (\n    <Dialog\n      animate\n      // oxlint-disable-next-line react/react-compiler\n      footer={<Footer />}\n      header=\"Edit Tag\"\n      id={id}\n      onClose={handleClose}\n      width={1}\n    >\n      {/* Form fields */}\n      <Box as=\"form\" padding={4} onSubmit={handleSubmit(onSubmit)}>\n        {/* Deleted notification */}\n        {!tagItem && (\n          <Card marginBottom={3} padding={3} radius={2} shadow={1} tone=\"critical\">\n            <Text size={1}>This tag cannot be found – it may have been deleted.</Text>\n          </Card>\n        )}\n\n        {/* Hidden button to enable enter key submissions */}\n        <button style={{display: 'none'}} tabIndex={-1} type=\"submit\" />\n\n        {/* Title */}\n        <FormFieldInputText\n          {...register('name')}\n          disabled={formUpdating}\n          error={errors?.name?.message}\n          label=\"Name\"\n          name=\"name\"\n        />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogTagEdit\n","import {ArrowDownIcon} from '@sanity/icons/ArrowDown'\nimport {ArrowUpIcon} from '@sanity/icons/ArrowUp'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {Box, Button, Container, Flex, Text} from '@sanity/ui'\nimport {Tooltip} from '@sanity/ui/tooltip'\nimport {type ReactNode} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {styled} from 'styled-components'\n\nimport {inputs} from '../../config/searchFacets'\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPicked} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {searchActions, selectIsSearchFacetTag} from '../../modules/search'\nimport type {SearchFacetInputSearchableProps, TagActions, TagItem} from '../../types'\n\ntype Props = {\n  actions?: TagActions[]\n  tag: TagItem\n}\n\nconst TagContainer = styled(Flex)`\n  height: ${PANEL_HEIGHT}px;\n`\n\nconst ButtonContainer = styled(Flex)`\n  @media (pointer: fine) {\n    visibility: hidden;\n  }\n\n  @media (hover: hover) and (pointer: fine) {\n    ${TagContainer}:hover & {\n      visibility: visible;\n    }\n  }\n`\n\ntype TagButtonProps = {\n  disabled?: boolean\n  icon: ReactNode\n  onClick: () => void\n  tone?: 'critical' | 'primary'\n  tooltip: string\n}\n\nconst TagButton = (props: TagButtonProps) => {\n  const {disabled, icon, onClick, tone, tooltip} = props\n\n  return (\n    <Tooltip\n      animate\n      content={\n        <Container padding={2} width={0}>\n          <Text muted size={1}>\n            {tooltip}\n          </Text>\n        </Container>\n      }\n      disabled={'ontouchstart' in window}\n      placement=\"top\"\n      portal\n    >\n      <Button\n        disabled={disabled}\n        fontSize={1}\n        icon={icon}\n        mode=\"bleed\"\n        onClick={onClick}\n        padding={2}\n        tone={tone}\n      />\n    </Tooltip>\n  )\n}\n\nconst Tag = (props: Props) => {\n  const {actions, tag} = props\n\n  // Redux\n  const dispatch = useDispatch()\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n  const isSearchFacetTag = useTypedSelector((state) => selectIsSearchFacetTag(state, tag?.tag?._id))\n\n  // Callbacks\n  const handleSearchFacetTagRemove = () => {\n    dispatch(searchActions.facetsRemoveByTag({tagId: tag.tag._id}))\n  }\n\n  const handleShowAddTagToAssetsDialog = () => {\n    dispatch(dialogActions.showConfirmAssetsTagAdd({assetsPicked, tag: tag.tag}))\n  }\n\n  const handleShowRemoveTagFromAssetsDialog = () => {\n    dispatch(dialogActions.showConfirmAssetsTagRemove({assetsPicked, tag: tag.tag}))\n  }\n\n  const handleShowTagDeleteDialog = () => {\n    dispatch(dialogActions.showConfirmDeleteTag({tag: tag.tag}))\n  }\n\n  const handleShowTagEditDialog = () => {\n    dispatch(DIALOG_ACTIONS.showTagEdit({tagId: tag?.tag?._id}))\n  }\n\n  const handleSearchFacetTagAddOrUpdate = () => {\n    const searchFacet = {\n      ...inputs.tag,\n      value: {\n        label: tag?.tag?.name?.current,\n        value: tag?.tag?._id,\n      },\n    } as SearchFacetInputSearchableProps\n\n    if (isSearchFacetTag) {\n      dispatch(\n        searchActions.facetsUpdate({\n          name: 'tag',\n          operatorType: 'references',\n          value: searchFacet.value,\n        }),\n      )\n    } else {\n      dispatch(searchActions.facetsAdd({facet: searchFacet}))\n    }\n  }\n\n  return (\n    <TagContainer align=\"center\" flex={1} justify=\"space-between\" paddingLeft={3}>\n      <Box flex={1}>\n        <Text\n          muted\n          size={1}\n          style={{\n            opacity: tag?.updating ? 0.5 : 1.0,\n            userSelect: 'none',\n          }}\n          textOverflow=\"ellipsis\"\n        >\n          {tag?.tag?.name?.current}\n        </Text>\n      </Box>\n\n      <ButtonContainer align=\"center\" style={{flexShrink: 0}}>\n        {/* Search facet toggle */}\n        {actions?.includes('search') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={isSearchFacetTag ? <CloseIcon /> : <SearchIcon />}\n            onClick={\n              isSearchFacetTag ? handleSearchFacetTagRemove : handleSearchFacetTagAddOrUpdate\n            }\n            tooltip={isSearchFacetTag ? 'Remove filter' : 'Filter by tag'}\n          />\n        )}\n        {/* Edit icon */}\n        {actions?.includes('edit') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<EditIcon />}\n            onClick={handleShowTagEditDialog}\n            tone=\"primary\"\n            tooltip=\"Edit tag\"\n          />\n        )}\n        {/* Apply to all */}\n        {actions?.includes('applyAll') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<ArrowUpIcon />}\n            onClick={handleShowAddTagToAssetsDialog}\n            tone=\"primary\"\n            tooltip=\"Add tag to selected assets\"\n          />\n        )}\n        {/* Remove from all */}\n        {actions?.includes('removeAll') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<ArrowDownIcon />}\n            onClick={handleShowRemoveTagFromAssetsDialog}\n            tone=\"critical\"\n            tooltip=\"Remove tag from selected assets\"\n          />\n        )}\n\n        {/* Delete icon */}\n        {actions?.includes('delete') && (\n          <TagButton\n            disabled={tag?.updating}\n            icon={<TrashIcon />}\n            onClick={handleShowTagDeleteDialog}\n            tone=\"critical\"\n            tooltip=\"Delete tag\"\n          />\n        )}\n      </ButtonContainer>\n    </TagContainer>\n  )\n}\n\nexport default Tag\n","import {Flex, Label} from '@sanity/ui'\nimport {memo, useState} from 'react'\nimport {Virtuoso} from 'react-virtuoso'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPicked} from '../../modules/assets'\nimport type {TagActions, TagItem} from '../../types'\nimport Tag from '../Tag'\n\nconst VirtualRow = memo(\n  ({\n    isScrolling,\n    item,\n  }: {\n    isScrolling?: boolean\n    item:\n      | string\n      | (TagItem & {\n          actions: TagActions[]\n        })\n  }) => {\n    // Render label\n    if (typeof item === 'string') {\n      return (\n        <Flex\n          align=\"center\"\n          justify=\"space-between\"\n          key={item}\n          paddingX={3}\n          style={{height: `${PANEL_HEIGHT}px`}}\n        >\n          <Label size={0}>{item}</Label>\n        </Flex>\n      )\n    }\n\n    // Render tag - only display actions if we're not in the process of scrolling\n    return <Tag actions={isScrolling ? undefined : item.actions} key={item.tag?._id} tag={item} />\n  },\n)\n\nconst TagsVirtualized = ({tags}: {tags: TagItem[]}) => {\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n\n  // State\n  const [isScrolling, setIsScrolling] = useState(false)\n\n  // TODO: refactor, there's most certainly a more performant way to do this\n\n  // Filter out all tag IDS used (across all) and dedupe\n  const pickedTagIds = assetsPicked?.reduce((acc: string[], val) => {\n    const assetTagIds = val?.asset?.opt?.media?.tags?.map((tag) => tag._ref) || []\n    acc = acc.concat(assetTagIds)\n    return acc\n  }, [])\n  const pickedTagIdsUnique = [...new Set(pickedTagIds)]\n\n  // Segment tags into two buckets:\n  // 1. those which exist in all picked assets ('applied to all')\n  // 2. those which exist in some picked assets ('applied to some')\n  const tagIdsSegmented = pickedTagIdsUnique.reduce(\n    (acc: {appliedToAll: string[]; appliedToSome: string[]}, tagId) => {\n      const tagIsInEveryAsset = assetsPicked.every((assetItem) => {\n        const tagIndex =\n          assetItem.asset.opt?.media?.tags?.findIndex((tag) => tag._ref === tagId) ?? -1\n        return tagIndex >= 0\n      })\n\n      if (tagIsInEveryAsset) {\n        acc.appliedToAll.push(tagId)\n      } else {\n        acc.appliedToSome.push(tagId)\n      }\n\n      return acc\n    },\n    {\n      appliedToAll: [],\n      appliedToSome: [],\n    },\n  )\n\n  const tagsAppliedToAll = tags\n    .filter((tag) => tagIdsSegmented.appliedToAll.includes(tag.tag._id))\n    .map((tagItem) => ({\n      ...tagItem,\n      actions: ['delete', 'edit', 'removeAll', 'search'] as TagActions[],\n    }))\n  const tagsAppliedToSome = tags\n    .filter((tag) => tagIdsSegmented.appliedToSome.includes(tag.tag._id))\n    .map((tagItem) => ({\n      ...tagItem,\n      actions: ['applyAll', 'delete', 'edit', 'removeAll', 'search'] as TagActions[],\n    }))\n  const tagsUnused = tags\n    .filter((tag) => !pickedTagIdsUnique.includes(tag.tag._id))\n    .map((tagItem) => ({\n      ...tagItem,\n      actions: ['applyAll', 'delete', 'edit', 'search'] as TagActions[],\n    }))\n\n  let items: (\n    | string\n    | (TagItem & {\n        actions: TagActions[]\n      })\n  )[] = []\n  if (assetsPicked.length === 0) {\n    items = tags.map((tagItem) => ({\n      ...tagItem,\n      actions: ['delete', 'edit', 'search'] as TagActions[],\n    }))\n  } else {\n    if (tagsAppliedToAll?.length > 0) {\n      items = [\n        ...items, //\n        assetsPicked.length === 1 ? 'Used' : 'Used by all',\n        ...tagsAppliedToAll,\n      ]\n    }\n    if (tagsAppliedToSome?.length > 0) {\n      items = [\n        ...items, //\n        'Used by some',\n        ...tagsAppliedToSome,\n      ]\n    }\n    if (tagsUnused?.length > 0) {\n      items = [\n        ...items, //\n        'Unused',\n        ...tagsUnused,\n      ]\n    }\n  }\n\n  return (\n    <Virtuoso\n      className=\"media__custom-scrollbar\"\n      computeItemKey={(index) => {\n        const item = items[index]\n        if (typeof item === 'string') {\n          return item\n        }\n        return item!.tag._id\n      }}\n      isScrolling={setIsScrolling}\n      itemContent={(index) => {\n        return <VirtualRow isScrolling={isScrolling} item={items[index]!} />\n      }}\n      style={{flex: 1, overflowX: 'hidden'}}\n      totalCount={items.length}\n    />\n  )\n}\n\nexport default TagsVirtualized\n","import {ComposeIcon} from '@sanity/icons/Compose'\nimport {Box, Button, Flex, Inline, Label} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  allowCreate?: boolean\n  light?: boolean\n  title: string\n}\n\nconst TagViewHeader = ({allowCreate, light, title}: Props) => {\n  const scheme = useColorSchemeValue()\n\n  const dispatch = useDispatch()\n  const tagsCreating = useTypedSelector((state) => state.tags.creating)\n  const tagsFetching = useTypedSelector((state) => state.tags.fetching)\n\n  const handleTagCreate = () => {\n    dispatch(DIALOG_ACTIONS.showTagCreate())\n  }\n\n  return (\n    <>\n      <Flex\n        align=\"center\"\n        justify=\"space-between\"\n        paddingLeft={3}\n        style={{\n          background: light ? getSchemeColor(scheme, 'bg') : 'inherit',\n          borderBottom: '1px solid var(--card-border-color)',\n          flexShrink: 0,\n          height: `${PANEL_HEIGHT}px`,\n        }}\n      >\n        <Inline gap={2}>\n          <Label size={0}>{title}</Label>\n          {tagsFetching && (\n            <Label size={0} style={{opacity: 0.3}}>\n              Loading...\n            </Label>\n          )}\n        </Inline>\n        {/* Create new tag button */}\n        {allowCreate && (\n          <Box marginRight={1}>\n            <Button\n              disabled={tagsCreating}\n              fontSize={1} //\n              icon={ComposeIcon}\n              mode=\"bleed\"\n              onClick={handleTagCreate}\n              style={{\n                background: 'transparent',\n                boxShadow: 'none',\n              }}\n            />\n          </Box>\n        )}\n      </Flex>\n    </>\n  )\n}\n\nexport default TagViewHeader\n","import {Box, Flex, Text} from '@sanity/ui'\n\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectAssetsPickedLength} from '../../modules/assets'\nimport {selectTags} from '../../modules/tags'\nimport TagsVirtualized from '../TagsVirtualized'\nimport TagViewHeader from '../TagViewHeader'\n\nconst TagView = () => {\n  const numPickedAssets = useTypedSelector(selectAssetsPickedLength)\n  const {excludeTagSlugs} = useToolOptions()\n  const tagsAll = useTypedSelector(selectTags)\n  const tags =\n    excludeTagSlugs.length > 0\n      ? tagsAll.filter((t) => !excludeTagSlugs.includes(t.tag.name.current))\n      : tagsAll\n  const fetching = useTypedSelector((state) => state.tags.fetching)\n  const fetchCount = useTypedSelector((state) => state.tags.fetchCount)\n  const fetchComplete = fetchCount !== -1\n  const hasTags = !fetching && tags?.length > 0\n  const hasPicked = !!(numPickedAssets > 0)\n\n  return (\n    <Flex direction=\"column\" flex={1} height=\"fill\">\n      <TagViewHeader\n        allowCreate\n        light={hasPicked}\n        title={hasPicked ? 'Tags (in selection)' : 'Tags'}\n      />\n\n      {fetchComplete && !hasTags && (\n        <Box padding={3}>\n          <Text muted size={1}>\n            <em>No tags</em>\n          </Text>\n        </Box>\n      )}\n\n      {hasTags && <TagsVirtualized tags={tags} />}\n    </Flex>\n  )\n}\n\nexport default TagView\n","import {Box} from '@sanity/ui'\nimport {type ReactNode, useCallback} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport {dialogActions} from '../../modules/dialog'\nimport type {DialogTagsProps} from '../../types'\nimport Dialog from '../Dialog'\nimport TagView from '../TagView'\n\ntype Props = {\n  children: ReactNode\n  dialog: DialogTagsProps\n}\n\nconst DialogTags = (props: Props) => {\n  const {\n    children,\n    dialog: {id},\n  } = props\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleClose = useCallback(() => {\n    dispatch(dialogActions.clear())\n  }, [dispatch])\n\n  return (\n    <Dialog animate header=\"All Tags\" id={id} onClose={handleClose} width={1}>\n      <Box\n        style={{\n          height: '100%',\n          minHeight: '420px', // explicit height required as <TagView> is virtualized\n        }}\n      >\n        <TagView />\n      </Box>\n\n      {children}\n    </Dialog>\n  )\n}\n\nexport default DialogTags\n","import useTypedSelector from '../../hooks/useTypedSelector'\nimport type {Dialog} from '../../types'\nimport DialogAssetEdit from '../DialogAssetEdit'\nimport DialogAllAssets from '../DialogAssetsOverView'\nimport DialogConfirm from '../DialogConfirm'\nimport DialogFolderCreate from '../DialogFolderCreate'\nimport DialogFolderMove from '../DialogFolderMove'\nimport DialogFolderRename from '../DialogFolderRename'\nimport DialogFolders from '../DialogFolders'\nimport DialogSearchFacets from '../DialogSearchFacets'\nimport DialogTagCreate from '../DialogTagCreate'\nimport DialogTagEdit from '../DialogTagEdit'\nimport DialogTags from '../DialogTags'\n\nconst Dialogs = () => {\n  // Redux\n  const currentDialogs = useTypedSelector((state) => state.dialog.items)\n\n  const renderDialogs = (dialogs: Dialog[], index: number) => {\n    if (dialogs.length === 0 || index >= dialogs.length) {\n      return null\n    }\n\n    const dialog = dialogs[index]!\n    const childDialogs = renderDialogs(dialogs, index + 1)\n\n    if (dialog.type === 'assetEdit') {\n      return (\n        <DialogAssetEdit dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogAssetEdit>\n      )\n    }\n\n    if (dialog.type === 'confirm') {\n      return (\n        <DialogConfirm dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogConfirm>\n      )\n    }\n\n    if (dialog.type === 'folderCreate') {\n      return (\n        <DialogFolderCreate dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogFolderCreate>\n      )\n    }\n\n    if (dialog.type === 'folderMove') {\n      return (\n        <DialogFolderMove dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogFolderMove>\n      )\n    }\n\n    if (dialog.type === 'folderRename') {\n      return (\n        <DialogFolderRename dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogFolderRename>\n      )\n    }\n\n    if (dialog.type === 'folders') {\n      return (\n        <DialogFolders dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogFolders>\n      )\n    }\n\n    if (dialog.type === 'searchFacets') {\n      return (\n        <DialogSearchFacets dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogSearchFacets>\n      )\n    }\n\n    if (dialog.type === 'tagCreate') {\n      return (\n        <DialogTagCreate dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogTagCreate>\n      )\n    }\n\n    if (dialog.type === 'tagEdit') {\n      return (\n        <DialogTagEdit dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogTagEdit>\n      )\n    }\n\n    if (dialog.type === 'tags') {\n      return (\n        <DialogTags dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogTags>\n      )\n    }\n\n    if (dialog.type === 'dialogAllAssets') {\n      return (\n        <DialogAllAssets dialog={dialog} key={index}>\n          {childDialogs}\n        </DialogAllAssets>\n      )\n    }\n\n    return null\n  }\n\n  return renderDialogs(currentDialogs, 0)\n}\n\nexport default Dialogs\n","import {useToast} from '@sanity/ui/toast'\nimport {useEffect} from 'react'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\n\nconst Notifications = () => {\n  const items = useTypedSelector((state) => state.notifications.items)\n  const toast = useToast()\n\n  useEffect(() => {\n    if (items.length > 0) {\n      const lastItem = items[items.length - 1]!\n      toast.push({\n        closable: true,\n        status: lastItem.status,\n        title: lastItem.title,\n      })\n    }\n  }, [items, toast])\n\n  return null\n}\n\nexport default Notifications\n","import {type PayloadAction, createSlice} from '@reduxjs/toolkit'\n\ntype DebugReducerState = {\n  badConnection: boolean\n  enabled: boolean\n}\n\nconst initialState = {\n  badConnection: false,\n  enabled: false,\n} as DebugReducerState\n\nconst debugSlice = createSlice({\n  name: 'debug',\n  initialState,\n  reducers: {\n    setBadConnection(state, action: PayloadAction<boolean>) {\n      state.badConnection = action.payload\n    },\n    toggleEnabled(state) {\n      state.enabled = !state.enabled\n    },\n  },\n})\n\nexport const debugActions = {...debugSlice.actions}\n\nexport default debugSlice.reducer\n","import {type PayloadAction, createSlice} from '@reduxjs/toolkit'\nimport pluralize from 'pluralize'\nimport type {AnyAction} from 'redux'\nimport {ofType} from 'redux-observable'\nimport {of} from 'rxjs'\nimport {bufferTime, filter, mergeMap} from 'rxjs/operators'\n\nimport type {HttpError, ImageAsset, MyEpic} from '../../types'\nimport {assetsActions} from '../assets'\nimport {ASSETS_ACTIONS} from '../assets/actions'\nimport {foldersActions} from '../folders'\nimport {tagsActions} from '../tags'\nimport {uploadsActions} from '../uploads'\n\ntype Notification = {\n  asset?: ImageAsset\n  status?: 'error' | 'warning' | 'success' | 'info'\n  title?: string\n}\n\ntype NotificationsReducerState = {\n  items: Notification[]\n}\n\nfunction messageFromGenericErrorPayload(payload: unknown): string {\n  if (!payload || typeof payload !== 'object') {\n    return 'Unknown error'\n  }\n  if (\n    'error' in payload &&\n    payload.error &&\n    typeof payload.error === 'object' &&\n    payload.error !== null &&\n    'message' in payload.error\n  ) {\n    return String((payload.error as HttpError).message)\n  }\n  if ('message' in payload && typeof (payload as HttpError).message === 'string') {\n    return String((payload as HttpError).message)\n  }\n  return 'Unknown error'\n}\n\nconst initialState = {\n  items: [],\n} as NotificationsReducerState\n\nconst notificationsSlice = createSlice({\n  name: 'notifications',\n  initialState,\n  reducers: {\n    add(state, action: PayloadAction<Notification>) {\n      const {asset, status, title} = action.payload\n      state.items.push({\n        asset,\n        status,\n        title,\n      })\n    },\n  },\n})\n\n// Epics\n\nexport const notificationsAssetsDeleteCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.deleteComplete.match),\n    mergeMap((action) => {\n      const {assetIds} = action.payload\n      const deletedCount = assetIds.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `${deletedCount} ${pluralize('asset', deletedCount)} deleted`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsDeleteErrorEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.deleteError.match),\n    mergeMap((action) => {\n      const {assetIds} = action.payload\n      const count = assetIds.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'error',\n          title: `Unable to delete ${count} ${pluralize(\n            'asset',\n            count,\n          )}. Please review any asset errors and try again.`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsUploadCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(uploadsActions.checkComplete.match),\n    mergeMap((action) => {\n      const {results} = action.payload\n\n      const count = Object.keys(results).length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `Uploaded ${count} ${pluralize('asset', count)}`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsTagsAddCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(ASSETS_ACTIONS.tagsAddComplete.match),\n    mergeMap((action) => {\n      const count = action?.payload?.assets?.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `Tag added to ${count} ${pluralize('asset', count)}`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsTagsRemoveCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(ASSETS_ACTIONS.tagsRemoveComplete.match),\n    mergeMap((action) => {\n      const count = action?.payload?.assets?.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `Tag removed from ${count} ${pluralize('asset', count)}`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsAssetsUpdateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(assetsActions.updateComplete.match),\n    bufferTime(2000),\n    filter((actions) => actions.length > 0),\n    mergeMap((actions) => {\n      const updatedCount = actions.length\n      return of(\n        notificationsSlice.actions.add({\n          status: 'info',\n          title: `${updatedCount} ${pluralize('asset', updatedCount)} updated`,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsGenericErrorEpic: MyEpic = (action$) =>\n  action$.pipe(\n    ofType(\n      assetsActions.fetchError.type,\n      assetsActions.updateError.type,\n      tagsActions.createError.type,\n      tagsActions.deleteError.type,\n      tagsActions.fetchError.type,\n      tagsActions.updateError.type,\n      foldersActions.createError.type,\n      foldersActions.deleteError.type,\n      foldersActions.renameError.type,\n      uploadsActions.uploadError.type,\n    ),\n    mergeMap((action: AnyAction) => {\n      const title = `An error occurred: ${messageFromGenericErrorPayload(action['payload'])}`\n      return of(\n        notificationsSlice.actions.add({\n          status: 'error',\n          title,\n        }),\n      )\n    }),\n  )\n\nexport const notificationsTagCreateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.createComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag created`}))),\n  )\n\nexport const notificationsTagDeleteCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.deleteComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag deleted`}))),\n  )\n\nexport const notificationsTagUpdateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(tagsActions.updateComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Tag updated`}))),\n  )\n\nexport const notificationsFolderCreateCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(foldersActions.createComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Folder created`}))),\n  )\n\nexport const notificationsFolderDeleteCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(foldersActions.deleteComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Folder deleted`}))),\n  )\n\nexport const notificationsFolderRenameCompleteEpic: MyEpic = (action$) =>\n  action$.pipe(\n    filter(foldersActions.renameComplete.match),\n    mergeMap(() => of(notificationsSlice.actions.add({status: 'info', title: `Folder renamed`}))),\n  )\n\nexport const notificationsActions = {...notificationsSlice.actions}\n\nexport default notificationsSlice.reducer\n","import {createSlice} from '@reduxjs/toolkit'\nimport type {SanityAssetDocument, SanityDocument, SanityImageAssetDocument} from '@sanity/client'\n\ntype SelectedReducerState = {\n  assets: (SanityAssetDocument | SanityImageAssetDocument)[]\n  document?: SanityDocument\n  documentAssetIds?: string[]\n}\n\nconst initialState = {\n  assets: [],\n  document: undefined,\n  documentAssetIds: [],\n} as SelectedReducerState\n\nconst selectedSlice = createSlice({\n  name: 'selected',\n  initialState,\n  reducers: {},\n})\n\nexport default selectedSlice.reducer\n","import {type Reducer, type StateFromReducersMapObject, combineReducers} from '@reduxjs/toolkit'\nimport {combineEpics} from 'redux-observable'\n\nimport assetsReducer, {\n  assetsDeleteEpic,\n  assetsFetchAfterDeleteAllEpic,\n  assetsFetchEpic,\n  assetsFolderSetEpic,\n  assetsFolderSetRefreshEpic,\n  assetsFetchNextPageEpic,\n  assetsFetchPageIndexEpic,\n  assetsListenerCreateQueueEpic,\n  assetsListenerDeleteQueueEpic,\n  assetsListenerUpdateQueueEpic,\n  assetsOrderSetEpic,\n  assetsSearchEpic,\n  assetsSortEpic,\n  assetsTagsAddEpic,\n  assetsTagsRemoveEpic,\n  assetsUnpickEpic,\n  assetsUpdateEpic,\n  assetsUpdateImageReferencesEpic,\n} from './assets'\nimport debugReducer from './debug'\nimport dialogReducer, {\n  dialogClearOnAssetUpdateEpic,\n  dialogTagCreateEpic,\n  dialogTagDeleteEpic,\n} from './dialog'\nimport foldersReducer, {\n  foldersCurrentFolderEpic,\n  foldersCreateEpic,\n  foldersDeleteEpic,\n  foldersFetchEpic,\n  foldersRefreshEpic,\n  foldersRenameEpic,\n} from './folders'\nimport notificationsReducer, {\n  notificationsAssetsDeleteErrorEpic,\n  notificationsAssetsDeleteCompleteEpic,\n  notificationsAssetsTagsAddCompleteEpic,\n  notificationsAssetsTagsRemoveCompleteEpic,\n  notificationsAssetsUpdateCompleteEpic,\n  notificationsFolderCreateCompleteEpic,\n  notificationsFolderDeleteCompleteEpic,\n  notificationsFolderRenameCompleteEpic,\n  notificationsGenericErrorEpic,\n  notificationsTagCreateCompleteEpic,\n  notificationsTagDeleteCompleteEpic,\n  notificationsTagUpdateCompleteEpic,\n} from './notifications'\nimport searchReducer, {searchFacetTagUpdateEpic} from './search'\nimport selectedReducer from './selected'\nimport tagsReducer, {\n  tagsCreateEpic,\n  tagsDeleteEpic,\n  tagsFetchEpic,\n  tagsListenerCreateQueueEpic,\n  tagsListenerDeleteQueueEpic,\n  tagsListenerUpdateQueueEpic,\n  tagsSortEpic,\n  tagsUpdateEpic,\n} from './tags'\nimport uploadsReducer, {\n  uploadsAssetStartEpic,\n  uploadsAssetUploadEpic,\n  uploadsCheckRequestEpic,\n  uploadsCompleteQueueEpic,\n} from './uploads'\n\nexport const rootEpic = combineEpics(\n  assetsDeleteEpic,\n  assetsFetchEpic,\n  assetsFetchAfterDeleteAllEpic,\n  assetsFetchNextPageEpic,\n  assetsFetchPageIndexEpic,\n  assetsFolderSetEpic,\n  assetsFolderSetRefreshEpic,\n  assetsListenerCreateQueueEpic,\n  assetsListenerDeleteQueueEpic,\n  assetsListenerUpdateQueueEpic,\n  assetsOrderSetEpic,\n  assetsSearchEpic,\n  assetsSortEpic,\n  assetsTagsAddEpic,\n  assetsTagsRemoveEpic,\n  assetsUnpickEpic,\n  assetsUpdateEpic,\n  assetsUpdateImageReferencesEpic,\n  dialogClearOnAssetUpdateEpic,\n  dialogTagCreateEpic,\n  dialogTagDeleteEpic,\n  foldersCurrentFolderEpic,\n  foldersCreateEpic,\n  foldersDeleteEpic,\n  foldersFetchEpic,\n  foldersRefreshEpic,\n  foldersRenameEpic,\n  notificationsAssetsDeleteErrorEpic,\n  notificationsAssetsDeleteCompleteEpic,\n  notificationsAssetsTagsAddCompleteEpic,\n  notificationsAssetsTagsRemoveCompleteEpic,\n  notificationsAssetsUpdateCompleteEpic,\n  notificationsFolderCreateCompleteEpic,\n  notificationsFolderDeleteCompleteEpic,\n  notificationsFolderRenameCompleteEpic,\n  notificationsGenericErrorEpic,\n  notificationsTagCreateCompleteEpic,\n  notificationsTagDeleteCompleteEpic,\n  notificationsTagUpdateCompleteEpic,\n  searchFacetTagUpdateEpic,\n  tagsCreateEpic,\n  tagsDeleteEpic,\n  tagsFetchEpic,\n  tagsListenerCreateQueueEpic,\n  tagsListenerDeleteQueueEpic,\n  tagsListenerUpdateQueueEpic,\n  tagsSortEpic,\n  tagsUpdateEpic,\n  uploadsAssetStartEpic,\n  uploadsAssetUploadEpic,\n  uploadsCheckRequestEpic,\n  uploadsCompleteQueueEpic,\n)\n\nconst reducers = {\n  assets: assetsReducer,\n  debug: debugReducer,\n  dialog: dialogReducer,\n  folders: foldersReducer,\n  notifications: notificationsReducer,\n  search: searchReducer,\n  selected: selectedReducer,\n  tags: tagsReducer,\n  uploads: uploadsReducer,\n}\n\ntype ReducersMapObject = typeof reducers\n\n// Workaround to avoid `$CombinedState` ts errors\n// source: https://github.com/reduxjs/redux-toolkit/issues/2068#issuecomment-1130796500\n// TODO: remove once we use `redux-toolkit` v2\nexport const rootReducer: Reducer<StateFromReducersMapObject<ReducersMapObject>> =\n  combineReducers(reducers)\n","import type {SanityDocument} from '@sanity/client'\n\nconst isPlainObject = (value: any) =>\n  value !== null && typeof value === 'object' && !Array.isArray(value)\n\n// Recursively search node for any linked asset ids (`asset._type === 'reference'`)\nconst getAssetIds = (node: Record<string, any>, acc: string[] = []) => {\n  if (Array.isArray(node)) {\n    node.forEach((v) => {\n      getAssetIds(v, acc)\n    })\n  }\n\n  if (isPlainObject(node)) {\n    if (node?.['asset']?._type === 'reference' && node?.['asset']?._ref) {\n      acc.push(node['asset']._ref)\n    }\n\n    Object.values(node).forEach((val) => {\n      getAssetIds(val, acc)\n    })\n  }\n\n  return acc\n}\n\n// Retrieve all linked asset ids from a Sanity document\nconst getDocumentAssetIds = (document: SanityDocument): string[] => {\n  const assetIds = getAssetIds(document)\n\n  // Sort and dedupe\n  return [...new Set(assetIds.sort())]\n}\n\nexport default getDocumentAssetIds\n","import {SUPPORTED_ASSET_TYPES} from '../constants'\nimport type {AssetType} from '../types'\n\n/**\n * Determines whether or not the provided asset type (eg 'image', 'file', 'arbitrary')\n * is a supported asset type for this plugin.\n *\n * @param assetType - The asset type to check.\n * @returns True if the asset type is supported, false otherwise.\n * @internal\n */\nexport function isSupportedAssetType(assetType?: string): assetType is AssetType {\n  const supported: string[] = SUPPORTED_ASSET_TYPES\n  return assetType ? supported.includes(assetType) : false\n}\n","import {type AnyAction, configureStore, type Store} from '@reduxjs/toolkit'\nimport type {SanityClient} from '@sanity/client'\nimport {type ReactNode, useState} from 'react'\nimport {Provider} from 'react-redux'\nimport {createEpicMiddleware} from 'redux-observable'\nimport type {AssetSourceComponentProps, SanityDocument} from 'sanity'\n\nimport {rootEpic, rootReducer} from '../../modules'\nimport {initialState as assetsInitialState} from '../../modules/assets'\n// import {assetsActions} from '../../modules/assets'\n// import {searchActions} from '../../modules/search'\n// import {uploadsActions} from '../../modules/uploads'\nimport type {RootReducerState} from '../../modules/types'\nimport getDocumentAssetIds from '../../utils/getDocumentAssetIds'\nimport {isSupportedAssetType} from '../../utils/isSupportedAssetType'\n\ntype Props = {\n  assetType?: AssetSourceComponentProps['assetType']\n  children?: ReactNode\n  client: SanityClient\n  document?: SanityDocument\n  excludeTagSlugs?: string[]\n  selectedAssets?: AssetSourceComponentProps['selectedAssets']\n}\n\nfunction createReduxStore(props: Props): Store {\n  const epicMiddleware = createEpicMiddleware<AnyAction, AnyAction, RootReducerState>({\n    dependencies: {\n      client: props.client,\n    },\n  })\n\n  const store = configureStore({\n    reducer: rootReducer,\n    middleware: (getDefaultMiddleware) =>\n      getDefaultMiddleware({\n        /*\n        serializableCheck: {\n          ignoredActions: [\n            assetsActions.deleteError.type,\n            uploadsActions.uploadRequest.type,\n            uploadsActions.uploadStart.type,\n          ]\n        },\n        */\n        // TODO: remove once we're no longer storing non-serializable data in the store\n        serializableCheck: false,\n        thunk: false,\n      }).prepend(epicMiddleware),\n    devTools: true,\n    preloadedState: {\n      assets: {\n        ...assetsInitialState,\n        assetTypes: isSupportedAssetType(props?.assetType) ? [props.assetType] : ['file', 'image'],\n        excludeTagSlugs: props.excludeTagSlugs?.length ? [...props.excludeTagSlugs] : [],\n      },\n      debug: {\n        badConnection: false,\n        enabled: false,\n      },\n      dialog: {items: []},\n      folders: {\n        byId: {},\n        childrenByParentId: {},\n        rootIds: [],\n        exactCountByFolderId: {},\n        unfiledCount: 0,\n        currentFolderId: null,\n        currentFolderUnfiled: false,\n        panelVisible: false,\n        fetching: false,\n        fetchCount: -1,\n        creating: false,\n        renaming: false,\n      },\n      notifications: {items: []},\n      search: {facets: [], query: ''},\n      selected: {\n        assets: props.selectedAssets || [],\n        document: props.document,\n        documentAssetIds: props.document ? getDocumentAssetIds(props.document) : [],\n      },\n      tags: {\n        allIds: [],\n        byIds: {},\n        creating: false,\n        fetchCount: -1,\n        fetching: false,\n        panelVisible: true,\n      },\n      uploads: {\n        allIds: [],\n        byIds: {},\n      },\n    },\n  })\n\n  epicMiddleware.run(rootEpic)\n\n  return store\n}\n\nfunction ReduxProvider({children, ...props}: Props) {\n  const [store] = useState(() => createReduxStore(props))\n\n  return <Provider store={store}>{children}</Provider>\n}\n\nexport default ReduxProvider\n","import {PortalProvider} from '@sanity/ui'\nimport {useEffect, useRef} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {type AssetSourceComponentProps, type SanityDocument, useFormValue} from 'sanity'\n\nimport {AssetBrowserDispatchProvider} from '../../contexts/AssetSourceDispatchContext'\nimport useRootPortalElement from '../../hooks/useRootPortalElement'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {assetsActions} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {foldersActions} from '../../modules/folders'\nimport {tagsActions} from '../../modules/tags'\nimport GlobalStyle from '../../styled/GlobalStyles'\nimport constructFilter from '../../utils/constructFilter'\nimport Dialogs from '../Dialogs'\nimport Notifications from '../Notifications'\nimport ReduxProvider from '../ReduxProvider'\n\n/**\n * Fetches the already-selected asset into the store and opens the `assetEdit`\n * dialog for it. Once that dialog (and any nested dialogs, e.g. delete confirm)\n * are dismissed, the asset source itself is closed via `onClose`.\n *\n * Tracking the dialog lifecycle through redux is what allows the source to be\n * reopened: closing the inner dialog only removes it from the store, so without\n * this the source would stay mounted (showing nothing) and could not be opened\n * a second time.\n */\nconst EditAssetDialog = ({assetId, onClose}: {assetId: string; onClose: () => void}) => {\n  const dispatch = useDispatch()\n  const openDialogCount = useTypedSelector((state) => state.dialog.items.length)\n  const hasOpenedRef = useRef(false)\n\n  useEffect(() => {\n    // Only fetch the single asset being edited, then open its edit dialog.\n    const queryFilter = `${constructFilter({\n      assetTypes: ['file', 'image'],\n      searchFacets: [],\n    })} && _id == $assetId`\n\n    dispatch(assetsActions.fetchRequest({params: {assetId}, queryFilter}))\n\n    // Tags and folders must be loaded into the store so the edit dialog can\n    // resolve the asset's existing tag references and folder path (mirroring\n    // `useBrowserInit`). Without this, `selectTagSelectOptions` resolves no tags\n    // and saving would patch `opt.media.tags` to null, wiping existing tags.\n    dispatch(tagsActions.fetchRequest())\n    dispatch(foldersActions.fetchRequest())\n\n    dispatch(dialogActions.showAssetEdit({assetId}))\n  }, [assetId, dispatch])\n\n  useEffect(() => {\n    if (openDialogCount > 0) {\n      hasOpenedRef.current = true\n    } else if (hasOpenedRef.current) {\n      onClose()\n    }\n  }, [openDialogCount, onClose])\n\n  return (\n    <>\n      <Dialogs />\n      <Notifications />\n    </>\n  )\n}\n\nconst EditAssetTool = (props: AssetSourceComponentProps) => {\n  const {onClose, selectedAssets} = props\n\n  const portalElement = useRootPortalElement()\n\n  // `useFormValue` can return null/undefined (e.g. on a pristine/unsaved draft).\n  const currentDocument = useFormValue([]) as SanityDocument | null | undefined\n\n  const client = useVersionedClient()\n\n  const assetId = selectedAssets[0]?._id\n\n  // Nothing to edit (e.g. opened on an empty field) – close the source again.\n  useEffect(() => {\n    if (!assetId) {\n      onClose()\n    }\n  }, [assetId, onClose])\n\n  if (!assetId) {\n    return null\n  }\n\n  return (\n    <ReduxProvider\n      assetType={props.assetType}\n      client={client}\n      document={currentDocument ?? undefined}\n      selectedAssets={selectedAssets}\n    >\n      <AssetBrowserDispatchProvider onSelect={props.onSelect}>\n        <GlobalStyle />\n        <PortalProvider element={portalElement}>\n          <EditAssetDialog assetId={assetId} onClose={onClose} />\n        </PortalProvider>\n      </AssetBrowserDispatchProvider>\n    </ReduxProvider>\n  )\n}\n\nexport default EditAssetTool\n","import {ThLargeIcon} from '@sanity/icons/ThLarge'\nimport {ThListIcon} from '@sanity/icons/ThList'\nimport {Button, Inline} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\nconst ButtonViewGroup = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const view = useTypedSelector((state) => state.assets.view)\n\n  return (\n    <Inline gap={0} style={{whiteSpace: 'nowrap'}}>\n      <Button\n        fontSize={1}\n        icon={ThLargeIcon}\n        mode={view === 'grid' ? 'default' : 'ghost'}\n        onClick={() => dispatch(assetsActions.viewSet({view: 'grid'}))}\n        style={{\n          borderBottomRightRadius: 0,\n          borderTopRightRadius: 0,\n        }}\n      />\n      <Button\n        fontSize={1}\n        icon={ThListIcon}\n        mode={view === 'table' ? 'default' : 'ghost'}\n        onClick={() => dispatch(assetsActions.viewSet({view: 'table'}))}\n        style={{\n          borderBottomLeftRadius: 0,\n          borderTopLeftRadius: 0,\n        }}\n      />\n    </Inline>\n  )\n}\n\nexport default ButtonViewGroup\n","import {SortIcon} from '@sanity/icons/Sort'\nimport {Button} from '@sanity/ui'\nimport {Menu, MenuButton, MenuDivider, MenuItem} from '@sanity/ui/menu'\nimport {useDispatch} from 'react-redux'\n\nimport {getOrderTitle} from '../../config/orders'\nimport {ORDER_OPTIONS} from '../../constants'\nimport {usePortalPopoverProps} from '../../hooks/usePortalPopoverProps'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\nconst OrderSelect = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const order = useTypedSelector((state) => state.assets.order)\n\n  const popoverProps = usePortalPopoverProps()\n\n  return (\n    <MenuButton\n      button={\n        <Button\n          fontSize={1}\n          icon={SortIcon}\n          mode=\"bleed\"\n          padding={3}\n          text={getOrderTitle(order.field, order.direction)}\n        />\n      }\n      id=\"order\"\n      menu={\n        <Menu>\n          {ORDER_OPTIONS?.map((item, index) => {\n            if (item) {\n              const selected = order.field === item.field && order.direction === item.direction\n              return (\n                <MenuItem\n                  disabled={selected}\n                  fontSize={1}\n                  iconRight={selected}\n                  key={index}\n                  onClick={() =>\n                    dispatch(\n                      assetsActions.orderSet({\n                        order: {direction: item.direction, field: item.field},\n                      }),\n                    )\n                  }\n                  padding={2}\n                  selected={selected}\n                  gap={4}\n                  style={{minWidth: '200px'}}\n                  text={getOrderTitle(item.field, item.direction)}\n                />\n              )\n            }\n\n            return <MenuDivider key={index} />\n          })}\n        </Menu>\n      }\n      popover={popoverProps}\n    />\n  )\n}\n\nexport default OrderSelect\n","import {Box} from '@sanity/ui'\nimport {useNProgress} from '@tanem/react-nprogress'\n\ntype Props = {\n  loading?: boolean\n}\n\nconst Progress = (props: Props) => {\n  const {loading} = props\n\n  const {animationDuration, isFinished, progress} = useNProgress({\n    animationDuration: 300,\n    isAnimating: loading,\n  })\n\n  return (\n    <Box\n      style={{\n        opacity: isFinished ? 0 : 1,\n        transition: `opacity ${animationDuration}ms linear`,\n      }}\n    >\n      <Box\n        style={{\n          height: '1px',\n          background: 'rgba(255, 255, 255, 0.5)',\n          position: 'absolute',\n          left: 0,\n          top: 0,\n          transition: `width ${animationDuration}ms linear`,\n          width: `${progress * 100}%`,\n        }}\n      />\n    </Box>\n  )\n}\n\nexport default Progress\n","const TagIcon = () => (\n  <svg\n    data-sanity-icon=\"media__tag\" // For icon usage with @sanity/ui <Button />\n    fill=\"currentColor\"\n    height=\"1em\"\n    stroke=\"currentColor\"\n    strokeWidth=\"0\"\n    viewBox=\"0 0 512 512\"\n    width=\"1em\"\n  >\n    <path\n      d=\"M435.25 48h-122.9a14.46 14.46 0 00-10.2 4.2L56.45 297.9a28.85 28.85 0 000 40.7l117 117a28.85 28.85 0 0040.7 0L459.75 210a14.46 14.46 0 004.2-10.2v-123a28.66 28.66 0 00-28.7-28.8z\"\n      fill=\"none\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"32\"\n    />\n    <path d=\"M384 160a32 32 0 1132-32 32 32 0 01-32 32z\" />\n  </svg>\n)\n\nexport default TagIcon\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {Box, Flex, TextInput} from '@sanity/ui'\nimport {type ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {searchActions} from '../../modules/search'\n\nconst TextInputSearch = () => {\n  // Redux\n  const searchQuery = useTypedSelector((state) => state.search.query)\n\n  // Redux\n  const dispatch = useDispatch()\n\n  // Callbacks\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    dispatch(searchActions.querySet({searchQuery: e.currentTarget.value}))\n  }\n\n  const handleClear = () => {\n    dispatch(searchActions.querySet({searchQuery: ''}))\n  }\n\n  return (\n    <Box style={{position: 'relative'}}>\n      <TextInput\n        fontSize={1}\n        icon={SearchIcon}\n        onChange={handleChange}\n        placeholder=\"Search\"\n        radius={2}\n        value={searchQuery}\n      />\n\n      {/* Clear form button */}\n      {searchQuery.length > 0 && (\n        <Flex\n          align=\"center\"\n          justify=\"center\"\n          onClick={handleClear}\n          style={{\n            cursor: 'pointer',\n            height: '100%',\n            opacity: 0.75,\n            position: 'absolute',\n            right: 0,\n            top: 0,\n            width: '2em',\n            zIndex: 1, // force stacking context\n          }}\n        >\n          <CloseIcon />\n        </Flex>\n      )}\n    </Box>\n  )\n}\n\nexport default TextInputSearch\n","import {FolderIcon} from '@sanity/icons/Folder'\nimport {Box, Button, Flex, Inline, useMediaIndex} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {dialogActions} from '../../modules/dialog'\nimport {foldersActions} from '../../modules/folders'\nimport {tagsActions} from '../../modules/tags'\nimport ButtonViewGroup from '../ButtonViewGroup'\nimport OrderSelect from '../OrderSelect'\nimport Progress from '../Progress'\nimport SearchFacets from '../SearchFacets'\nimport SearchFacetsControl from '../SearchFacetsControl'\nimport TagIcon from '../TagIcon'\nimport TextInputSearch from '../TextInputSearch'\n\nconst Controls = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const foldersPanelVisible = useTypedSelector((state) => state.folders.panelVisible)\n  const pageIndex = useTypedSelector((state) => state.assets.pageIndex)\n  const searchFacets = useTypedSelector((state) => state.search.facets)\n  const tagsPanelVisible = useTypedSelector((state) => state.tags.panelVisible)\n\n  const mediaIndex = useMediaIndex()\n\n  // Callbacks\n  const handleShowSearchFacetDialog = () => {\n    dispatch(dialogActions.showSearchFacets())\n  }\n\n  const handleShowFoldersDialog = () => {\n    dispatch(dialogActions.showFolders())\n  }\n\n  const handleShowTagsDialog = () => {\n    dispatch(dialogActions.showTags())\n  }\n\n  const toggleFoldersPanel = () => {\n    dispatch(foldersActions.panelVisibleSet({panelVisible: !foldersPanelVisible}))\n  }\n\n  const toggleTagsPanelToggle = () => {\n    dispatch(tagsActions.panelVisibleSet({panelVisible: !tagsPanelVisible}))\n  }\n\n  return (\n    <Box\n      paddingY={2}\n      style={{\n        borderBottom: '1px solid var(--card-border-color)',\n        zIndex: 2,\n      }}\n    >\n      {/* Rows: search / filters / orders  */}\n      <Box marginBottom={2}>\n        <Flex\n          align=\"flex-start\"\n          direction={['column', 'column', 'column', 'column', 'row']}\n          justify=\"space-between\"\n        >\n          {/* Search + Filters */}\n          <Flex\n            flex={1}\n            style={{\n              alignItems: 'flex-start',\n              flex: 1,\n              height: '100%',\n              justifyContent: mediaIndex < 2 ? 'space-between' : 'flex-start',\n              position: 'relative',\n              width: '100%',\n            }}\n          >\n            <Box marginX={2} style={{minWidth: '200px'}}>\n              {/* Search */}\n              <TextInputSearch />\n            </Box>\n\n            <Box display={['none', 'none', 'block']}>\n              <SearchFacets />\n\n              {/* Search Facets Control (add / clear) */}\n              <Inline gap={2}>\n                <SearchFacetsControl />\n              </Inline>\n            </Box>\n\n            <Box display={['block', 'block', 'none']} marginX={2}>\n              <Inline gap={2} style={{whiteSpace: 'nowrap'}}>\n                {/* Filters button (small) */}\n                <Button\n                  fontSize={1}\n                  mode=\"ghost\"\n                  onClick={handleShowSearchFacetDialog}\n                  text={`Filters${searchFacets.length > 0 ? ` (${searchFacets.length})` : ''}`}\n                  tone=\"primary\"\n                />\n\n                {/* Tags button (small) */}\n                <Button\n                  fontSize={1}\n                  mode=\"ghost\"\n                  onClick={handleShowTagsDialog}\n                  text={`Tags`}\n                  tone=\"primary\"\n                />\n\n                {/* Folders button (small) */}\n                <Button\n                  fontSize={1}\n                  mode=\"ghost\"\n                  onClick={handleShowFoldersDialog}\n                  text=\"Folders\"\n                  tone=\"primary\"\n                />\n              </Inline>\n            </Box>\n          </Flex>\n        </Flex>\n      </Box>\n\n      <Box>\n        <Flex align=\"center\" justify={['space-between']}>\n          {/* Folders + Views */}\n          <Box marginX={2}>\n            <Inline gap={2} style={{whiteSpace: 'nowrap'}}>\n              <Box display={['none', 'none', 'block']}>\n                <Button\n                  aria-label=\"Toggle folders panel\"\n                  fontSize={1}\n                  icon={FolderIcon}\n                  mode={foldersPanelVisible ? 'default' : 'ghost'}\n                  onClick={toggleFoldersPanel}\n                />\n              </Box>\n              <ButtonViewGroup />\n            </Inline>\n          </Box>\n\n          <Flex marginX={2}>\n            {/* Orders */}\n            <OrderSelect />\n            {/* Tags panel toggle */}\n            <Box display={['none', 'none', 'block']} marginLeft={2}>\n              <Button\n                fontSize={1}\n                icon={\n                  <Box style={{transform: 'scale(0.75)'}}>\n                    <TagIcon />\n                  </Box>\n                }\n                onClick={toggleTagsPanelToggle}\n                mode={tagsPanelVisible ? 'default' : 'ghost'}\n                text={tagsPanelVisible ? 'Tags' : ''}\n              />\n            </Box>\n          </Flex>\n        </Flex>\n      </Box>\n\n      {/* Progress bar */}\n      <Progress key={pageIndex} loading={fetching} />\n    </Box>\n  )\n}\n\nexport default Controls\n","import {PlugIcon} from '@sanity/icons/Plug'\nimport {Box, Flex, Switch, Text} from '@sanity/ui'\nimport {Tooltip} from '@sanity/ui/tooltip'\nimport {type ChangeEvent} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {debugActions} from '../../modules/debug'\n\nconst DebugControls = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const badConnection = useTypedSelector((state) => state.debug.badConnection)\n  const debugEnabled = useTypedSelector((state) => state.debug.enabled)\n\n  // Callbacks\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    const checked = e.target.checked\n\n    dispatch(debugActions.setBadConnection(checked))\n  }\n\n  const handleToggleControls = () => {\n    dispatch(debugActions.toggleEnabled())\n  }\n\n  // Close on escape key press\n  useKeyPress('alt+ctrl+shift+/', handleToggleControls)\n\n  if (!debugEnabled) {\n    return null\n  }\n\n  return (\n    <Box\n      padding={4}\n      style={{\n        bottom: 0,\n        left: 0,\n        pointerEvents: 'none',\n        position: 'fixed',\n        width: '100%',\n      }}\n    >\n      {/* Bad connection toggle */}\n      <Flex align=\"center\">\n        <Box marginRight={3}>\n          <Text muted size={1}>\n            <PlugIcon />\n          </Text>\n        </Box>\n        <Tooltip\n          animate\n          content={\n            <Box padding={2}>\n              <Text muted size={1}>\n                {badConnection\n                  ? 'Bad connection: +3000ms & 50% chance to fail'\n                  : 'No connection throttling'}\n              </Text>\n            </Box>\n          }\n          fallbackPlacements={['right', 'left']}\n          placement=\"bottom\"\n          portal\n        >\n          <Switch\n            checked={badConnection}\n            onChange={handleChange}\n            style={{\n              pointerEvents: 'auto',\n            }}\n          />\n        </Tooltip>\n      </Flex>\n    </Box>\n  )\n}\n\nexport default DebugControls\n","import {Box, Button, Inline, Text} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {foldersActions, selectCurrentFolderSegments} from '../../modules/folders'\n\nconst FolderBreadcrumbs = () => {\n  const dispatch = useDispatch()\n  const currentFolderId = useTypedSelector((state) => state.folders.currentFolderId)\n  const segments = useTypedSelector(selectCurrentFolderSegments)\n\n  if (!currentFolderId) {\n    return null\n  }\n\n  return (\n    <Box display={['block', 'block', 'none']} padding={2}>\n      <Inline gap={1}>\n        <Button\n          fontSize={1}\n          padding={2}\n          mode=\"bleed\"\n          onClick={() => dispatch(foldersActions.currentFolderClear())}\n          text=\"All assets\"\n        />\n\n        {segments.map((segment) => (\n          <Inline key={segment.id} gap={1}>\n            <Text muted size={1}>\n              /\n            </Text>\n            <Button\n              fontSize={1}\n              padding={2}\n              mode={currentFolderId === segment.id ? 'default' : 'bleed'}\n              onClick={() => dispatch(foldersActions.currentFolderSet({folderId: segment.id}))}\n              text={segment.name}\n            />\n          </Inline>\n        ))}\n      </Inline>\n    </Box>\n  )\n}\n\nexport default FolderBreadcrumbs\n","import {Box} from '@sanity/ui'\n\nimport {FOLDERS_PANEL_WIDTH} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport FolderView from '../FolderView'\n\nconst FolderPanel = () => {\n  const foldersPanelVisible = useTypedSelector((state) => state.folders.panelVisible)\n\n  if (!foldersPanelVisible) {\n    return null\n  }\n\n  return (\n    <Box\n      style={{\n        position: 'relative',\n        width: FOLDERS_PANEL_WIDTH,\n      }}\n    >\n      <Box\n        className=\"media__custom-scrollbar\"\n        style={{\n          borderRight: '1px solid var(--card-border-color)',\n          height: '100%',\n          left: 0,\n          overflowX: 'hidden',\n          overflowY: 'auto',\n          position: 'absolute',\n          top: 0,\n          width: '100%',\n        }}\n      >\n        <FolderView />\n      </Box>\n    </Box>\n  )\n}\n\nexport default FolderPanel\n","import {type ReactNode, createContext, useContext, useMemo} from 'react'\n\ntype ContextProps = {\n  open: () => void\n}\n\ntype Props = {\n  children: ReactNode\n  open: () => void\n}\n\nconst DropzoneDispatchContext = createContext<ContextProps | undefined>(undefined)\n\nexport const DropzoneDispatchProvider = (props: Props) => {\n  const {children, open} = props\n\n  const contextValue: ContextProps = useMemo(() => ({open}), [open])\n\n  return (\n    <DropzoneDispatchContext.Provider value={contextValue}>\n      {children}\n    </DropzoneDispatchContext.Provider>\n  )\n}\n\nexport const useDropzoneActions = () => {\n  const context = useContext(DropzoneDispatchContext)\n  if (context === undefined) {\n    throw new Error('useDropzoneActions must be used within an DropzoneDispatchProvider')\n  }\n  return context\n}\n","import {ArrowRightIcon} from '@sanity/icons/ArrowRight'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {UploadIcon} from '@sanity/icons/Upload'\nimport {Box, Button, Flex, Inline, Text} from '@sanity/ui'\nimport pluralize from 'pluralize'\n\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport {useDropzoneActions} from '../../contexts/DropzoneDispatchContext'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\n\ntype Props = {\n  onClose?: () => void\n}\n\nconst Header = (props: Props) => {\n  const {onClose} = props\n\n  const {open} = useDropzoneActions()\n  const {onSelect} = useAssetSourceActions()\n\n  // Redux\n  const assetTypes = useTypedSelector((state) => state.assets.assetTypes)\n  const selectedDocument = useTypedSelector((state) => state.selected.document)\n\n  const {directUploads} = useToolOptions()\n\n  // Row: Current document / close button\n  return (\n    <Box paddingY={2}>\n      <Flex align=\"center\" justify=\"space-between\">\n        {/* Label */}\n        <Box flex={1} marginX={3}>\n          <Inline style={{whiteSpace: 'nowrap'}}>\n            <Text textOverflow=\"ellipsis\" weight=\"semibold\">\n              <span>{onSelect ? `Insert ${assetTypes.join(' or ')}` : 'Browse Assets'}</span>\n            </Text>\n\n            {selectedDocument && (\n              <Box display={['none', 'none', 'block']}>\n                <Text>\n                  <span style={{margin: '0 0.5em'}}>\n                    <ArrowRightIcon />\n                  </span>\n                  <span style={{textTransform: 'capitalize'}}>{selectedDocument._type}</span>\n                </Text>\n              </Box>\n            )}\n          </Inline>\n        </Box>\n\n        <Flex marginX={2}>\n          {/* Upload */}\n          {directUploads && (\n            <Button\n              fontSize={1}\n              icon={UploadIcon}\n              mode=\"bleed\"\n              onClick={open}\n              text={`Upload ${assetTypes.length === 1 ? pluralize(assetTypes[0]!) : 'assets'}`}\n            />\n          )}\n\n          {/* Close */}\n          {onClose && (\n            <Box style={{flexShrink: 0}}>\n              <Button\n                disabled={!onClose}\n                icon={CloseIcon}\n                mode=\"bleed\"\n                onClick={onClose}\n                radius={2}\n              />\n            </Box>\n          )}\n        </Flex>\n      </Flex>\n    </Box>\n  )\n}\n\nexport default Header\n","import {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {ChevronUpIcon} from '@sanity/icons/ChevronUp'\nimport {Box, Label} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\n\ntype Props = {\n  field?: string\n  title?: string\n}\n\nconst TableHeaderItem = (props: Props) => {\n  const {field, title} = props\n\n  // Redux\n  const dispatch = useDispatch()\n  const order = useTypedSelector((state) => state.assets.order)\n\n  const isActive = order.field === field\n\n  // Callbacks\n  const handleClick = () => {\n    if (!field || !title) {\n      return\n    }\n\n    if (isActive) {\n      const direction = order.direction === 'asc' ? 'desc' : 'asc'\n      dispatch(assetsActions.orderSet({order: {field, direction}}))\n    } else {\n      dispatch(assetsActions.orderSet({order: {field, direction: 'asc'}}))\n    }\n  }\n\n  return (\n    <Label muted={!field} size={0}>\n      <Box\n        onClick={field ? handleClick : undefined}\n        style={{\n          cursor: field ? 'pointer' : 'default',\n          display: 'inline',\n          whiteSpace: 'nowrap',\n        }}\n      >\n        <span\n          style={{\n            marginRight: '0.4em',\n          }}\n        >\n          {title}\n        </span>\n\n        {isActive && order?.direction === 'asc' && <ChevronUpIcon />}\n        {isActive && order?.direction === 'desc' && <ChevronDownIcon />}\n      </Box>\n    </Label>\n  )\n}\n\nexport default TableHeaderItem\n","import {Checkbox, Flex, Grid, type ThemeColorSchemeKey, useMediaIndex} from '@sanity/ui'\nimport {type MouseEvent} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {GRID_TEMPLATE_COLUMNS, PANEL_HEIGHT} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetsLength, selectAssetsPickedLength} from '../../modules/assets'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport TableHeaderItem from '../TableHeaderItem'\n\n// TODO: DRY\nconst ContextActionContainer = styled<typeof Flex, {$scheme: ThemeColorSchemeKey}>(Flex)(({\n  $scheme,\n}) => {\n  return css`\n    cursor: pointer;\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${getSchemeColor($scheme, 'bg')};\n      }\n    }\n  `\n})\n\nconst TableHeader = () => {\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const itemsLength = useTypedSelector(selectAssetsLength)\n  const numPickedAssets = useTypedSelector(selectAssetsPickedLength)\n\n  const mediaIndex = useMediaIndex()\n  const {onSelect} = useAssetSourceActions()\n\n  const allSelected = numPickedAssets === itemsLength\n\n  // Callbacks\n  const handleContextActionClick = (e: MouseEvent) => {\n    e.stopPropagation()\n\n    if (allSelected) {\n      dispatch(assetsActions.pickClear())\n    } else {\n      dispatch(assetsActions.pickAll())\n    }\n  }\n\n  // Note that even though we hide the table header on smaller breakpoints, we never set it to\n  // `display: none`, as doing so causes issues with react-virtuoso.\n  // Instead, we give it 0 height and hide it with `visibility: hidden`.\n  return (\n    <Grid\n      style={{\n        alignItems: 'center',\n        background: 'var(--card-bg-color)',\n        borderBottom: '1px solid var(--card-border-color)',\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridTemplateColumns: GRID_TEMPLATE_COLUMNS.LARGE,\n        height: mediaIndex < 3 ? 0 : `${PANEL_HEIGHT}px`,\n        letterSpacing: '0.025em',\n        position: 'sticky',\n        textTransform: 'uppercase',\n        top: 0,\n        visibility: mediaIndex < 3 ? 'hidden' : 'visible',\n        width: '100%',\n        zIndex: 1, // force stacking context\n      }}\n    >\n      {onSelect ? (\n        <TableHeaderItem />\n      ) : (\n        <ContextActionContainer\n          align=\"center\"\n          justify=\"center\"\n          onClick={handleContextActionClick}\n          $scheme={scheme}\n          style={{\n            height: '100%',\n            position: 'relative',\n          }}\n        >\n          <Checkbox\n            checked={!fetching && allSelected}\n            readOnly\n            style={{\n              pointerEvents: 'none', // TODO: consider alternative for usability\n              transform: 'scale(0.8)',\n            }}\n          />\n        </ContextActionContainer>\n      )}\n\n      <TableHeaderItem />\n      <TableHeaderItem field=\"originalFilename\" title=\"Filename\" />\n      <TableHeaderItem title=\"Resolution\" />\n      <TableHeaderItem field=\"mimeType\" title=\"MIME type\" />\n      <TableHeaderItem field=\"size\" title=\"Size\" />\n      <TableHeaderItem field=\"_updatedAt\" title=\"Last updated\" />\n      <TableHeaderItem title=\"References\" />\n      <TableHeaderItem />\n    </Grid>\n  )\n}\n\nexport default TableHeader\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {WarningFilledIcon} from '@sanity/icons/WarningFilled'\nimport {\n  Box,\n  Checkbox,\n  Container,\n  Flex,\n  Grid,\n  Spinner,\n  Text,\n  type ThemeColorSchemeKey,\n  useMediaIndex,\n} from '@sanity/ui'\nimport {Tooltip} from '@sanity/ui/tooltip'\nimport {formatRelative} from 'date-fns/formatRelative'\nimport filesize from 'filesize'\nimport {\n  memo,\n  type MouseEvent,\n  type RefObject,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n} from 'react'\nimport {useDispatch} from 'react-redux'\nimport {WithReferringDocuments, useColorSchemeValue} from 'sanity'\nimport {styled, css} from 'styled-components'\n\nimport {GRID_TEMPLATE_COLUMNS} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetById} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport getAssetResolution from '../../utils/getAssetResolution'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport {getUniqueDocuments} from '../../utils/getUniqueDocuments'\nimport imageDprUrl from '../../utils/imageDprUrl'\nimport {isFileAsset, isImageAsset} from '../../utils/typeGuards'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\n// Duration (ms) to wait before reference counts (and associated listeners) are rendered\nconst REFERENCE_COUNT_VISIBILITY_DELAY = 750\n\ntype Props = {\n  id: string\n  selected: boolean\n}\n\nconst ContainerGrid = styled<\n  typeof Grid,\n  {$selected?: boolean; $scheme: ThemeColorSchemeKey; $updating?: boolean}\n>(Grid)(({$scheme, $selected, $updating}) => {\n  return css`\n    align-items: center;\n    cursor: ${$selected ? 'default' : 'pointer'};\n    height: 100%;\n    pointer-events: ${$updating ? 'none' : 'auto'};\n    user-select: none;\n    white-space: nowrap;\n\n    ${\n      !$updating &&\n      css`\n        @media (hover: hover) and (pointer: fine) {\n          &:hover {\n            background: ${getSchemeColor($scheme, 'bg')};\n          }\n        }\n      `\n    }\n  `\n})\n\nconst ContextActionContainer = styled<typeof Flex, {$scheme: ThemeColorSchemeKey}>(Flex)(({\n  $scheme,\n}) => {\n  return css`\n    cursor: pointer;\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${getSchemeColor($scheme, 'bg2')};\n      }\n    }\n  `\n})\n\nconst StyledWarningIcon = styled(WarningFilledIcon)(({theme}) => {\n  return {\n    color: theme.sanity.color.spot.red,\n  }\n})\n\nconst TableRowAsset = (props: Props) => {\n  const {id, selected} = props\n\n  const scheme = useColorSchemeValue()\n\n  const shiftPressed: RefObject<boolean> = useKeyPress('shift')\n\n  const [referenceCountVisible, setReferenceCountVisible] = useState(false)\n  const refCountVisibleTimeout = useRef<ReturnType<typeof window.setTimeout>>(null)\n\n  const dispatch = useDispatch()\n  const lastPicked = useTypedSelector((state) => state.assets.lastPicked)\n  const item = useTypedSelector((state) => selectAssetById(state, id))\n\n  const mediaIndex = useMediaIndex()\n\n  const asset = item?.asset\n  const error = item?.error\n  const isOpaque = item?.asset?.metadata?.isOpaque\n  const picked = item?.picked\n  const updating = item?.updating\n\n  const {isMultiSelect, onSelect} = useAssetSourceActions()\n\n  const handleContextActionClick = useCallback(\n    (e: MouseEvent<HTMLDivElement>) => {\n      e.stopPropagation()\n\n      if (!asset) return\n      if (selected) return\n      if (onSelect && !isMultiSelect) {\n        dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n      } else if (shiftPressed.current && !picked) {\n        dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n      } else {\n        dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n      }\n    },\n    [asset, dispatch, isMultiSelect, lastPicked, onSelect, picked, selected, shiftPressed],\n  )\n\n  const handleClick = useCallback(\n    (e: MouseEvent<HTMLDivElement>) => {\n      e.stopPropagation()\n\n      if (!asset) return\n      if (selected) return\n      if (onSelect && !isMultiSelect) {\n        onSelect([{kind: 'assetDocumentId', value: asset._id}])\n      } else if (onSelect && isMultiSelect) {\n        if (shiftPressed.current && !picked) {\n          dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n        } else {\n          dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n        }\n      } else if (shiftPressed.current) {\n        if (picked) {\n          dispatch(assetsActions.pick({assetId: asset._id, picked: !picked}))\n        } else {\n          dispatch(assetsActions.pickRange({startId: lastPicked || asset._id, endId: asset._id}))\n        }\n      } else {\n        dispatch(dialogActions.showAssetEdit({assetId: asset._id}))\n      }\n    },\n    [asset, dispatch, isMultiSelect, lastPicked, onSelect, picked, selected, shiftPressed],\n  )\n\n  const opacityCell = updating ? 0.5 : 1\n  const opacityPreview = selected || updating ? 0.1 : 1\n\n  // Display reference count after an initial delay to prevent over-eager fetching\n  useEffect(() => {\n    refCountVisibleTimeout.current = setTimeout(\n      () => setReferenceCountVisible(true),\n      REFERENCE_COUNT_VISIBILITY_DELAY,\n    )\n    return () => {\n      if (refCountVisibleTimeout.current) {\n        clearTimeout(refCountVisibleTimeout.current)\n      }\n    }\n  }, [])\n\n  // Short circuit if no asset is available\n  if (!asset) {\n    return null\n  }\n\n  return (\n    <ContainerGrid\n      onClick={selected ? undefined : handleClick}\n      $scheme={scheme}\n      $selected={selected}\n      style={{\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridRowGap: 0,\n        gridTemplateColumns:\n          mediaIndex < 3 ? GRID_TEMPLATE_COLUMNS.SMALL : GRID_TEMPLATE_COLUMNS.LARGE,\n        gridTemplateRows: mediaIndex < 3 ? 'auto' : '1fr',\n      }}\n      $updating={item.updating}\n    >\n      {/* Picked checkbox */}\n      <ContextActionContainer\n        onClick={handleContextActionClick}\n        $scheme={scheme}\n        style={{\n          alignItems: 'center',\n          gridColumn: 1,\n          gridRowStart: 1,\n          gridRowEnd: 'span 5',\n          height: '100%',\n          justifyContent: 'center',\n          opacity: opacityCell,\n          position: 'relative',\n        }}\n      >\n        {onSelect && !isMultiSelect ? (\n          <EditIcon\n            style={{\n              flexShrink: 0,\n              opacity: 0.5,\n            }}\n          />\n        ) : (\n          <Checkbox\n            checked={picked}\n            readOnly\n            style={{\n              pointerEvents: 'none', // TODO: consider alternative for usability\n              transform: 'scale(0.8)',\n            }}\n          />\n        )}\n      </ContextActionContainer>\n\n      {/* Preview image + spinner */}\n      <Box\n        style={{\n          gridColumn: 2,\n          gridRowStart: 1,\n          gridRowEnd: 'span 5',\n          height: '90px',\n          width: '100px',\n        }}\n      >\n        <Flex align=\"center\" justify=\"center\" style={{height: '100%', position: 'relative'}}>\n          <Box style={{height: '100%', opacity: opacityPreview, position: 'relative'}}>\n            {/* File icon */}\n            {isFileAsset(asset) && <FileIcon extension={asset.extension} width=\"40px\" />}\n\n            {/* Image */}\n            {isImageAsset(asset) && (\n              <Image\n                draggable={false}\n                $scheme={scheme}\n                $showCheckerboard={!isOpaque}\n                src={imageDprUrl(asset, {height: 100, width: 100})}\n              />\n            )}\n          </Box>\n\n          {/* Spinner */}\n          {updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Spinner />\n            </Flex>\n          )}\n\n          {/* Selected check icon */}\n          {selected && !updating && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                height: '100%',\n                left: 0,\n                position: 'absolute',\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Text size={2}>\n                <CheckmarkCircleIcon />\n              </Text>\n            </Flex>\n          )}\n        </Flex>\n      </Box>\n\n      {/* Filename */}\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{\n          gridColumn: 3,\n          gridRow: mediaIndex < 3 ? 2 : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {asset.originalFilename}\n        </Text>\n      </Box>\n\n      {/* Resolution */}\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{\n          gridColumn: mediaIndex < 3 ? 3 : 4,\n          gridRow: mediaIndex < 3 ? 3 : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {isImageAsset(asset) && getAssetResolution(asset)}\n        </Text>\n      </Box>\n\n      {/* MIME type */}\n      <Box\n        style={{\n          display: mediaIndex < 3 ? 'none' : 'block',\n          gridColumn: 5,\n          gridRow: 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {asset.mimeType}\n        </Text>\n      </Box>\n\n      {/* Size */}\n      <Box\n        style={{\n          display: mediaIndex < 3 ? 'none' : 'block',\n          gridColumn: 6,\n          gridRow: 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {filesize(asset.size, {base: 10, round: 0})}\n        </Text>\n      </Box>\n\n      {/* Last updated */}\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{\n          gridColumn: mediaIndex < 3 ? 3 : 7,\n          gridRow: mediaIndex < 3 ? 4 : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {formatRelative(new Date(asset._updatedAt), new Date())}\n        </Text>\n      </Box>\n\n      {/* References */}\n      <Box\n        style={{\n          display: mediaIndex < 3 ? 'none' : 'block',\n          gridColumn: 8,\n          gridRow: 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        <Text muted size={1} style={{lineHeight: '2em'}} textOverflow=\"ellipsis\">\n          {referenceCountVisible ? (\n            <WithReferringDocuments id={id}>\n              {({isLoading, referringDocuments}) => {\n                const uniqueDocuments = getUniqueDocuments(referringDocuments)\n                return isLoading ? (\n                  <>-</>\n                ) : (\n                  <>{Array.isArray(uniqueDocuments) ? uniqueDocuments.length : 0}</>\n                )\n              }}\n            </WithReferringDocuments>\n          ) : (\n            <>-</>\n          )}\n        </Text>\n      </Box>\n\n      {/* Error */}\n      <Flex\n        align=\"center\"\n        justify=\"center\"\n        style={{\n          gridColumn: mediaIndex < 3 ? 4 : 9,\n          gridRowStart: '1',\n          gridRowEnd: mediaIndex < 3 ? 'span 5' : 'auto',\n          opacity: opacityCell,\n        }}\n      >\n        {/* TODO: DRY */}\n        {/* Error button */}\n        {error && (\n          <Box padding={2}>\n            <Tooltip\n              animate\n              content={\n                <Container padding={2} width={0}>\n                  <Text size={1}>{error}</Text>\n                </Container>\n              }\n              placement=\"left\"\n              portal\n            >\n              <Text size={1}>\n                <StyledWarningIcon color=\"critical\" />\n              </Text>\n            </Tooltip>\n          </Box>\n        )}\n      </Flex>\n    </ContainerGrid>\n  )\n}\n\nexport default memo(TableRowAsset)\n","import {Box, Flex, Grid, Stack, Text, useMediaIndex} from '@sanity/ui'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport {GRID_TEMPLATE_COLUMNS} from '../../constants'\nimport {foldersActions} from '../../modules/folders'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\n\ntype Props = {\n  folderId: string\n  name: string\n  totalCount: number\n}\n\nconst ContainerGrid = styled(Grid)(\n  ({theme}) => css`\n    align-items: center;\n    cursor: pointer;\n    height: 100%;\n    user-select: none;\n    white-space: nowrap;\n\n    @media (hover: hover) and (pointer: fine) {\n      &:hover {\n        background: ${theme.sanity.color.card.enabled.bg};\n      }\n    }\n  `,\n)\n\nconst FolderBadge = styled(Box)(\n  ({theme}) => css`\n    background: ${theme.sanity.color.spot.yellow};\n    border-radius: 6px;\n    height: 42px;\n    position: relative;\n    width: 52px;\n\n    &::before {\n      background: ${theme.sanity.color.spot.yellow};\n      border-radius: 6px 6px 0 0;\n      content: '';\n      height: 12px;\n      left: 0;\n      position: absolute;\n      top: -6px;\n      width: 18px;\n    }\n  `,\n)\n\nconst TableRowFolder = ({folderId, name, totalCount}: Props) => {\n  const dispatch = useDispatch()\n  const mediaIndex = useMediaIndex()\n  const scheme = useColorSchemeValue()\n\n  return (\n    <ContainerGrid\n      onClick={() => dispatch(foldersActions.currentFolderSet({folderId}))}\n      style={{\n        background: getSchemeColor(scheme, 'bg'),\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridTemplateColumns:\n          mediaIndex < 3 ? GRID_TEMPLATE_COLUMNS.SMALL : GRID_TEMPLATE_COLUMNS.LARGE,\n        gridTemplateRows: mediaIndex < 3 ? 'auto' : '1fr',\n      }}\n    >\n      <Box />\n      <Flex align=\"center\" justify=\"center\" style={{gridColumn: 2, height: '90px', width: '100px'}}>\n        <FolderBadge />\n      </Flex>\n      <Box\n        marginLeft={mediaIndex < 3 ? 3 : 0}\n        style={{gridColumn: mediaIndex < 3 ? 3 : 3, gridRow: mediaIndex < 3 ? '2/4' : 'auto'}}\n      >\n        <Stack gap={2}>\n          <Text size={1} style={{lineHeight: '1.2em'}} textOverflow=\"ellipsis\" weight=\"semibold\">\n            {name}\n          </Text>\n          <Text muted size={0} style={{lineHeight: '1.1em'}}>\n            Folder\n          </Text>\n        </Stack>\n      </Box>\n      <Box style={{display: mediaIndex < 3 ? 'none' : 'block', gridColumn: 7}}>\n        <Text muted size={1}>\n          {totalCount} item{totalCount === 1 ? '' : 's'}\n        </Text>\n      </Box>\n      <Box style={{display: mediaIndex < 3 ? 'none' : 'block', gridColumn: 8}}>\n        <Text muted size={1}>\n          Open folder\n        </Text>\n      </Box>\n      <Box />\n    </ContainerGrid>\n  )\n}\n\nexport default TableRowFolder\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Button, Flex, Grid, Stack, Text, useMediaIndex} from '@sanity/ui'\nimport filesize from 'filesize'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {GRID_TEMPLATE_COLUMNS} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {selectUploadById, uploadsActions} from '../../modules/uploads'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport FileIcon from '../FileIcon'\nimport Image from '../Image'\n\ntype Props = {\n  id: string\n}\n\nconst TableRowUpload = (props: Props) => {\n  const {id} = props\n\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const item = useTypedSelector((state) => selectUploadById(state, id))\n\n  const mediaIndex = useMediaIndex()\n\n  if (!item) {\n    return null\n  }\n\n  const fileSize = filesize(item.size, {base: 10, round: 0})\n  const percentLoaded = Math.round(item.percent || 0) // (0 - 100)\n\n  const isComplete = item.status === 'complete'\n  const isUploading = item.status === 'uploading'\n  const isQueued = item.status === 'queued'\n\n  let status\n  if (isComplete) {\n    status = 'Verifying'\n  }\n  if (isUploading) {\n    status = `${percentLoaded}%`\n  }\n  if (isQueued) {\n    status = 'Queued'\n  }\n\n  // Callbacks\n  const handleCancelUpload = () => {\n    dispatch(uploadsActions.uploadCancel({hash: item.hash}))\n  }\n\n  return (\n    <Grid\n      style={{\n        alignItems: 'center',\n        background: getSchemeColor(scheme, 'bg'),\n        gridColumnGap: mediaIndex < 3 ? 0 : '16px',\n        gridRowGap: 0,\n        gridTemplateColumns:\n          mediaIndex < 3 ? GRID_TEMPLATE_COLUMNS.SMALL : GRID_TEMPLATE_COLUMNS.LARGE,\n        gridTemplateRows: mediaIndex < 3 ? 'auto' : '1fr',\n        height: '100%',\n        position: 'relative',\n      }}\n    >\n      {/* Progress bar */}\n      <div\n        style={{\n          background: 'var(--card-fg-color)',\n          bottom: 0,\n          height: '1px',\n          left: 0,\n          position: 'absolute',\n          width: '100%',\n          transform: `scaleX(${percentLoaded * 0.01})`,\n          transformOrigin: 'bottom left',\n          transition: 'all 1000ms ease-out',\n        }}\n      />\n\n      {/* Image */}\n      <Box\n        style={{\n          gridColumn: 2,\n          gridRowStart: mediaIndex < 3 ? 1 : 'auto',\n          gridRowEnd: mediaIndex < 3 ? 'span 4' : 'auto',\n          height: '90px',\n          width: '100px',\n        }}\n      >\n        <Box style={{height: '100%', position: 'relative'}}>\n          {item.assetType === 'image' && item?.objectUrl && (\n            <Image\n              draggable={false}\n              $scheme={scheme}\n              src={item.objectUrl}\n              style={{opacity: 0.25}}\n            />\n          )}\n\n          {item.assetType === 'file' && (\n            <div style={{height: '100%', opacity: 0.1}}>\n              <FileIcon width=\"40px\" />\n            </div>\n          )}\n\n          {/*\n            Cancel upload button.\n            Assets will only have a `complete` status _after_ it has been created on your dataset.\n            As such, we also hide the cancel button when `percentLoaded === 100`, as cancelling when the asset\n            has been fully uploaded (even with a status of `progress`) won't stop the asset from being created.\n          */}\n          {!isComplete && percentLoaded !== 100 && (\n            <Flex\n              align=\"center\"\n              justify=\"center\"\n              style={{\n                position: 'absolute',\n                height: '100%',\n                left: 0,\n                top: 0,\n                width: '100%',\n              }}\n            >\n              <Button\n                fontSize={3}\n                icon={CloseIcon}\n                mode=\"bleed\"\n                onClick={handleCancelUpload}\n                padding={2}\n                style={{background: 'none', boxShadow: 'none'}}\n                tone=\"critical\"\n              />\n            </Flex>\n          )}\n        </Box>\n      </Box>\n\n      {/* Filename */}\n      <Box\n        style={{\n          gridColumn: mediaIndex < 3 ? 3 : '3/8',\n          gridRow: mediaIndex < 3 ? '2/4' : 'auto',\n          marginLeft: mediaIndex < 3 ? 3 : 0,\n        }}\n      >\n        <Stack gap={3}>\n          <Text muted size={1} textOverflow=\"ellipsis\">\n            {item.name} ({fileSize})\n          </Text>\n          <Text size={1} textOverflow=\"ellipsis\" weight=\"semibold\">\n            {status}\n          </Text>\n        </Stack>\n      </Box>\n    </Grid>\n  )\n}\n\nexport default TableRowUpload\n","import {Box} from '@sanity/ui'\nimport {memo} from 'react'\nimport {GroupedVirtuoso} from 'react-virtuoso'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport type {CardAssetData, CardFolderData, CardUploadData} from '../../types'\nimport TableHeader from '../TableHeader'\nimport TableRowAsset from '../TableRowAsset'\nimport TableRowFolder from '../TableRowFolder'\nimport TableRowUpload from '../TableRowUpload'\n\ntype Props = {\n  items: (CardAssetData | CardFolderData | CardUploadData)[]\n  onLoadMore?: () => void\n}\n\nconst VirtualRow = memo(\n  ({\n    item,\n    selected,\n  }: {\n    item: CardAssetData | CardFolderData | CardUploadData\n    selected: boolean\n  }) => {\n    if (item?.type === 'asset') {\n      return (\n        <Box style={{height: '100px'}}>\n          <TableRowAsset id={item.id} selected={selected} />\n        </Box>\n      )\n    }\n\n    if (item?.type === 'folder') {\n      return (\n        <Box style={{height: '100px'}}>\n          <TableRowFolder folderId={item.folderId} name={item.name} totalCount={item.totalCount} />\n        </Box>\n      )\n    }\n\n    if (item?.type === 'upload') {\n      return (\n        <Box style={{height: '100px'}}>\n          <TableRowUpload id={item.id} />\n        </Box>\n      )\n    }\n\n    return null\n  },\n)\n\nconst AssetTableVirtualized = (props: Props) => {\n  const {items, onLoadMore} = props\n\n  // Redux\n  const selectedAssets = useTypedSelector((state) => state.selected.assets)\n\n  const selectedIds = (selectedAssets && selectedAssets.map((asset) => asset._id)) || []\n  const totalCount = items?.length\n\n  if (totalCount === 0) {\n    return null\n  }\n\n  return (\n    <GroupedVirtuoso\n      className=\"media__custom-scrollbar\"\n      computeItemKey={(index) => {\n        const item = items[index]\n        return item?.id || index\n      }}\n      endReached={onLoadMore}\n      groupCounts={Array(1).fill(totalCount)}\n      groupContent={() => {\n        return <TableHeader />\n      }}\n      itemContent={(index) => {\n        const item = items[index]\n        const selected = selectedIds.includes(item?.id || '')\n        return <VirtualRow item={item!} selected={selected} />\n      }}\n      style={{overflowX: 'hidden'}}\n    />\n  )\n}\n\nexport default AssetTableVirtualized\n","import {Box, Text, useMediaIndex} from '@sanity/ui'\nimport {useEffect} from 'react'\nimport {useDispatch} from 'react-redux'\n\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions} from '../../modules/assets'\nimport {foldersActions} from '../../modules/folders'\nimport {selectCombinedItems} from '../../modules/selectors'\nimport {tagsActions} from '../../modules/tags'\nimport AssetGridVirtualized from '../AssetGridVirtualized'\nimport AssetTableVirtualized from '../AssetTableVirtualized'\n\nconst Items = () => {\n  // Redux\n  const dispatch = useDispatch()\n  const fetchCount = useTypedSelector((state) => state.assets.fetchCount)\n  const fetching = useTypedSelector((state) => state.assets.fetching)\n  const foldersPanelVisible = useTypedSelector((state) => state.folders.panelVisible)\n  const tagsPanelVisible = useTypedSelector((state) => state.tags.panelVisible)\n  const view = useTypedSelector((state) => state.assets.view)\n  const combinedItems = useTypedSelector(selectCombinedItems)\n\n  const mediaIndex = useMediaIndex()\n\n  const hasFetchedOnce = fetchCount >= 0\n  const hasItems = combinedItems.length > 0\n\n  // Only load 1 page of items at a time.\n  const handleLoadMoreItems = () => {\n    if (!fetching) {\n      dispatch(assetsActions.loadNextPage())\n    }\n  }\n\n  // Effects\n\n  // - Hide folders/tags panels on smaller breakpoints\n  useEffect(() => {\n    if (mediaIndex <= 1 && foldersPanelVisible) {\n      dispatch(foldersActions.panelVisibleSet({panelVisible: false}))\n    }\n\n    if (mediaIndex <= 1 && tagsPanelVisible) {\n      dispatch(tagsActions.panelVisibleSet({panelVisible: false}))\n    }\n  }, [dispatch, foldersPanelVisible, mediaIndex, tagsPanelVisible])\n\n  const isEmpty = !hasItems && hasFetchedOnce && !fetching\n\n  return (\n    <Box flex={1} style={{width: '100%'}}>\n      {isEmpty ? (\n        <Box padding={4}>\n          <Text size={1} weight=\"semibold\">\n            No results for the current query\n          </Text>\n        </Box>\n      ) : (\n        <>\n          {view === 'grid' && (\n            <AssetGridVirtualized items={combinedItems} onLoadMore={handleLoadMoreItems} />\n          )}\n\n          {view === 'table' && (\n            <AssetTableVirtualized items={combinedItems} onLoadMore={handleLoadMoreItems} />\n          )}\n        </>\n      )}\n    </Box>\n  )\n}\n\nexport default Items\n","import {Box, Button, Flex, Label} from '@sanity/ui'\nimport pluralize from 'pluralize'\nimport {useDispatch} from 'react-redux'\nimport {useColorSchemeValue} from 'sanity'\n\nimport {PANEL_HEIGHT} from '../../constants'\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {assetsActions, selectAssetsPicked} from '../../modules/assets'\nimport {dialogActions} from '../../modules/dialog'\nimport {DIALOG_ACTIONS} from '../../modules/dialog/actions'\nimport {getSchemeColor} from '../../utils/getSchemeColor'\nimport {isImageAsset} from '../../utils/typeGuards'\n\nconst PickedBar = () => {\n  const scheme = useColorSchemeValue()\n\n  // Redux\n  const dispatch = useDispatch()\n  const assetsPicked = useTypedSelector(selectAssetsPicked)\n  const currentFolderId = useTypedSelector((state) => state.folders.currentFolderId)\n  const {isMultiSelect, onSelect} = useAssetSourceActions()\n\n  // Replace only rewrites image field refs — only offer it for a single image asset.\n  const canReplace =\n    assetsPicked.length === 1 && !!assetsPicked[0] && isImageAsset(assetsPicked[0].asset)\n\n  // Callbacks\n  const handlePickClear = () => {\n    dispatch(assetsActions.pickClear())\n  }\n\n  const handleDeletePicked = () => {\n    dispatch(dialogActions.showConfirmDeleteAssets({assets: assetsPicked}))\n  }\n\n  const handleReplaceImages = () => {\n    const assetId = assetsPicked[0]?.asset._id\n    if (!assetId) {\n      return\n    }\n    dispatch(dialogActions.showAllAssetsDialog({assetId}))\n  }\n\n  const handleMovePicked = () =>\n    dispatch(DIALOG_ACTIONS.showFolderMove({assets: assetsPicked, folderId: currentFolderId}))\n\n  const handleRemovePickedFromFolder = () =>\n    dispatch(assetsActions.folderSetRequest({assets: assetsPicked, folderId: null}))\n\n  const handleInsertPicked = () => {\n    if (!onSelect) {\n      return\n    }\n\n    const pickedAssetIds = assetsPicked.map((item) => ({\n      kind: 'assetDocumentId' as const,\n      value: item.asset._id,\n    }))\n\n    if (pickedAssetIds.length === 0) {\n      return\n    }\n\n    onSelect(pickedAssetIds)\n  }\n\n  if (assetsPicked.length === 0) {\n    return null\n  }\n\n  return (\n    <Flex\n      align=\"center\"\n      justify=\"flex-start\"\n      style={{\n        background: getSchemeColor(scheme, 'bg'),\n        borderBottom: '1px solid var(--card-border-color)',\n        height: `${PANEL_HEIGHT}px`,\n        position: 'relative',\n        width: '100%',\n      }}\n    >\n      <Flex align=\"center\" paddingX={3}>\n        <Box paddingRight={2}>\n          <Label size={0} style={{color: 'inherit'}}>\n            {assetsPicked.length} {pluralize('asset', assetsPicked.length)} selected\n          </Label>\n        </Box>\n\n        {/* Deselect button */}\n        <Button\n          mode=\"bleed\"\n          onClick={handlePickClear}\n          padding={2}\n          style={{background: 'none', boxShadow: 'none'}}\n          tone=\"default\"\n        >\n          <Label size={0}>Deselect</Label>\n        </Button>\n\n        {onSelect && isMultiSelect ? (\n          <Button\n            mode=\"bleed\"\n            onClick={handleInsertPicked}\n            padding={2}\n            style={{background: 'none', boxShadow: 'none'}}\n            tone=\"primary\"\n          >\n            <Label size={0}>Insert selected</Label>\n          </Button>\n        ) : (\n          <Button\n            mode=\"bleed\"\n            onClick={handleDeletePicked}\n            padding={2}\n            style={{background: 'none', boxShadow: 'none'}}\n            tone=\"critical\"\n          >\n            <Label size={0}>Delete</Label>\n          </Button>\n        )}\n\n        {/* Replace button */}\n        {canReplace && (\n          <Button\n            mode=\"bleed\"\n            onClick={handleReplaceImages}\n            padding={2}\n            style={{background: 'none', boxShadow: 'none'}}\n            tone=\"default\"\n          >\n            <Label size={0}>Replace</Label>\n          </Button>\n        )}\n\n        {!onSelect && (\n          <>\n            <Button\n              mode=\"bleed\"\n              onClick={handleMovePicked}\n              padding={2}\n              style={{background: 'none', boxShadow: 'none'}}\n              tone=\"primary\"\n            >\n              <Label size={0}>Move to folder</Label>\n            </Button>\n            {currentFolderId && (\n              <Button\n                mode=\"bleed\"\n                onClick={handleRemovePickedFromFolder}\n                padding={2}\n                style={{background: 'none', boxShadow: 'none'}}\n                tone=\"critical\"\n              >\n                <Label size={0}>Remove from folder</Label>\n              </Button>\n            )}\n          </>\n        )}\n      </Flex>\n    </Flex>\n  )\n}\n\nexport default PickedBar\n","import {Box} from '@sanity/ui'\n\nimport {TAGS_PANEL_WIDTH} from '../../constants'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport TagView from '../TagView'\n\nconst TagsPanel = () => {\n  const tagsPanelVisible = useTypedSelector((state) => state.tags.panelVisible)\n\n  if (!tagsPanelVisible) {\n    return null\n  }\n\n  return (\n    <Box\n      style={{\n        position: 'relative',\n        width: TAGS_PANEL_WIDTH,\n      }}\n    >\n      <Box\n        className=\"media__custom-scrollbar\"\n        style={{\n          borderLeft: '1px solid var(--card-border-color)',\n          height: '100%',\n          overflowX: 'hidden',\n          overflowY: 'auto',\n          position: 'absolute',\n          right: 0,\n          top: 0,\n          width: '100%',\n        }}\n      >\n        <TagView />\n      </Box>\n    </Box>\n  )\n}\n\nexport default TagsPanel\n","import {white} from '@sanity/color'\nimport {Flex, Text} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {type DropEvent, type DropzoneOptions, useDropzone} from 'react-dropzone'\nimport {useDispatch} from 'react-redux'\nimport {styled} from 'styled-components'\n\nimport {useAssetSourceActions} from '../../contexts/AssetSourceDispatchContext'\nimport {DropzoneDispatchProvider} from '../../contexts/DropzoneDispatchContext'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useTypedSelector from '../../hooks/useTypedSelector'\nimport {notificationsActions} from '../../modules/notifications'\nimport {uploadsActions} from '../../modules/uploads'\n\ntype Props = {\n  children: ReactNode\n}\n\nconst UploadContainer = styled.div`\n  color: white;\n  height: 100%;\n  min-height: 100%;\n  right: 0;\n  top: 0;\n  width: 100%;\n\n  &:focus {\n    outline: none;\n  }\n`\n\nconst DragActiveContainer = styled.div`\n  align-items: center;\n  background: rgba(0, 0, 0, 0.75);\n  display: flex;\n  height: 100%;\n  justify-content: center;\n  position: absolute;\n  right: 0;\n  top: 0;\n  width: 100%;\n  z-index: 3;\n`\n\n// Iterate through all files and only return non-folders / packages.\n// We check for files by reading the first byte of the file\nasync function filterFiles(fileList: FileList) {\n  const files = Array.from(fileList)\n\n  const filteredFiles: File[] = []\n\n  for (const file of files) {\n    try {\n      await file.slice(0, 1).arrayBuffer()\n      filteredFiles.push(file)\n    } catch {\n      // do nothing: file is a package or folder\n    }\n  }\n\n  return filteredFiles\n}\n\nconst UploadDropzone = (props: Props) => {\n  const {children} = props\n\n  const {\n    dropzone: {maxSize},\n    directUploads,\n  } = useToolOptions()\n\n  const {onSelect} = useAssetSourceActions()\n\n  // Redux\n  const dispatch = useDispatch()\n  const assetTypes = useTypedSelector((state) => state.assets.assetTypes)\n\n  const isImageAssetType = assetTypes.length === 1 && assetTypes[0] === 'image'\n\n  // Callbacks\n  const handleDrop = async (acceptedFiles: File[]) => {\n    acceptedFiles.forEach((file) =>\n      dispatch(\n        uploadsActions.uploadRequest({\n          file,\n          forceAsAssetType: assetTypes.length === 1 ? assetTypes[0] : undefined,\n        }),\n      ),\n    )\n  }\n\n  const handleDropRejected: DropzoneOptions['onDropRejected'] = (rejections) => {\n    const errorCodes = rejections.flatMap(({errors}) => errors.map(({code}) => code))\n\n    if (errorCodes.includes('file-too-large')) {\n      dispatch(\n        notificationsActions.add({\n          status: 'error',\n          title: 'One or more files exceed the maximum upload size.',\n        }),\n      )\n    }\n  }\n\n  // Use custom file selector to obtain files on file drop + change events (excluding folders and packages)\n  const handleFileGetter = async (event: DropEvent) => {\n    let fileList: FileList | undefined\n    if (event.type === 'drop' && 'dataTransfer' in event) {\n      fileList = event?.dataTransfer?.files\n    }\n    if (event.type === 'change') {\n      const target = event?.target as HTMLInputElement\n      if (target?.files) {\n        fileList = target.files\n      }\n    }\n\n    if (!fileList) {\n      return []\n    }\n\n    // Filter out non-folders / packages\n    const files: File[] = await filterFiles(fileList)\n\n    // Dispatch error if some files have been filtered out\n    if (fileList?.length !== files.length) {\n      dispatch(\n        notificationsActions.add({\n          status: 'error',\n          title: `Unable to upload some items (folders and packages aren't supported)`,\n        }),\n      )\n    }\n\n    return files\n  }\n\n  // Limit file picking to only images if we're specifically within an image selection context (e.g. picking from image fields)\n  const {getRootProps, getInputProps, isDragActive, open} = useDropzone({\n    accept: isImageAssetType ? 'image/*' : '',\n    getFilesFromEvent: handleFileGetter,\n    noClick: true,\n    // HACK: Disable drag and drop functionality when in a selecting context\n    // (This is currently due to Sanity's native image input taking precedence with drag and drop)\n    noDrag: !!onSelect,\n    onDrop: handleDrop,\n    maxSize,\n    onDropRejected: handleDropRejected,\n    disabled: !directUploads,\n  })\n\n  return (\n    <DropzoneDispatchProvider open={open}>\n      <UploadContainer {...getRootProps()}>\n        <input {...getInputProps()} />\n\n        {isDragActive && (\n          <DragActiveContainer>\n            <Flex direction=\"column\" justify=\"center\" style={{color: white.hex}}>\n              <Text size={3} style={{color: 'inherit'}}>\n                Drop files to upload\n              </Text>\n            </Flex>\n          </DragActiveContainer>\n        )}\n\n        {children}\n      </UploadContainer>\n    </DropzoneDispatchProvider>\n  )\n}\n\nexport default UploadDropzone\n","import type {MutationEvent, SanityClient} from '@sanity/client'\nimport groq from 'groq'\nimport {useEffect} from 'react'\nimport {useDispatch, useSelector} from 'react-redux'\nimport type {Dispatch} from 'redux'\nimport type {AssetSourceComponentProps} from 'sanity'\n\nimport {inputs} from '../../config/searchFacets'\nimport {FOLDER_DOCUMENT_NAME, TAG_DOCUMENT_NAME} from '../../constants'\nimport {assetsActions} from '../../modules/assets'\nimport {foldersActions} from '../../modules/folders'\nimport {searchActions} from '../../modules/search'\nimport {tagsActions} from '../../modules/tags'\nimport type {RootReducerState} from '../../modules/types'\nimport type {Asset, Tag} from '../../types'\n\nfunction getMediaTagNames(schemaType?: AssetSourceComponentProps['schemaType']): string[] {\n  const mediaTags = (schemaType?.options as {mediaTags?: string[]} | undefined)?.mediaTags\n  if (!mediaTags?.length) return []\n  const unique = new Set(\n    mediaTags.map((t) => t?.trim()).filter((t): t is string => Boolean(t?.length)),\n  )\n  return Array.from(unique)\n}\n\nfunction createAssetHandler(dispatch: Dispatch) {\n  return (update: MutationEvent) => {\n    const {documentId, result, transition} = update\n\n    switch (transition) {\n      case 'appear':\n        dispatch(assetsActions.listenerCreateQueue({asset: result as Asset}))\n        break\n      case 'disappear':\n        dispatch(assetsActions.listenerDeleteQueue({assetId: documentId}))\n        break\n      case 'update':\n        dispatch(assetsActions.listenerUpdateQueue({asset: result as Asset}))\n        break\n      default:\n        break\n    }\n  }\n}\n\nfunction createTagHandler(dispatch: Dispatch) {\n  return (update: MutationEvent) => {\n    const {documentId, result, transition} = update\n\n    switch (transition) {\n      case 'appear':\n        dispatch(tagsActions.listenerCreateQueue({tag: result as Tag}))\n        break\n      case 'disappear':\n        dispatch(tagsActions.listenerDeleteQueue({tagId: documentId}))\n        break\n      case 'update':\n        dispatch(tagsActions.listenerUpdateQueue({tag: result as Tag}))\n        break\n      default:\n        break\n    }\n  }\n}\n\nexport function useBrowserInit(\n  client: SanityClient,\n  schemaType?: AssetSourceComponentProps['schemaType'],\n): void {\n  const dispatch = useDispatch()\n  const tagsByIds = useSelector((state: RootReducerState) => state.tags.byIds)\n  const tagsFetchCount = useSelector((state: RootReducerState) => state.tags.fetchCount)\n\n  const tagNames = getMediaTagNames(schemaType)\n  const hasMediaTags = tagNames.length > 0\n\n  useEffect(() => {\n    if (!hasMediaTags) {\n      dispatch(searchActions.facetsClear())\n    }\n\n    dispatch(tagsActions.fetchRequest())\n\n    // Fetch all folders\n    dispatch(foldersActions.fetchRequest())\n\n    const assetSubscription = client\n      .listen(\n        groq`*[_type in [\"sanity.fileAsset\", \"sanity.imageAsset\"] && !(_id in path(\"drafts.**\"))]`,\n      )\n      .subscribe(createAssetHandler(dispatch))\n\n    const tagSubscription = client\n      .listen(groq`*[_type == \"${TAG_DOCUMENT_NAME}\" && !(_id in path(\"drafts.**\"))]`)\n      .subscribe(createTagHandler(dispatch))\n\n    const folderSubscription = client\n      .listen(groq`*[_type == \"${FOLDER_DOCUMENT_NAME}\" && !(_id in path(\"drafts.**\"))]`)\n      .subscribe(() => dispatch(foldersActions.fetchRequest()))\n\n    return () => {\n      assetSubscription.unsubscribe()\n      tagSubscription.unsubscribe()\n      folderSubscription.unsubscribe()\n    }\n  }, [client, dispatch, hasMediaTags])\n\n  // When mediaTags are configured, wait for the tag fetch to complete then apply facets.\n  // Dispatching clear + add synchronously keeps all actions within assetsSearchEpic's\n  // 400ms debounce window, so the browser performs exactly one asset fetch on open.\n  useEffect(() => {\n    if (!hasMediaTags || tagsFetchCount < 0) return\n\n    const tagFacetInput = inputs.tag\n    if (tagFacetInput.type !== 'searchable') return\n\n    const resolvedTags = tagNames\n      .map((name) => Object.values(tagsByIds).find((item) => item.tag.name.current === name))\n      .filter((item): item is NonNullable<typeof item> => Boolean(item))\n\n    dispatch(searchActions.facetsClear())\n\n    for (const tagItem of resolvedTags) {\n      dispatch(\n        searchActions.facetsAdd({\n          facet: {\n            ...tagFacetInput,\n            operatorType: 'references',\n            value: {label: tagItem.tag.name.current, value: tagItem.tag._id},\n          },\n        }),\n      )\n    }\n  }, [tagsFetchCount, hasMediaTags]) // eslint-disable-line react-hooks/exhaustive-deps\n}\n","import {Card, Flex, PortalProvider} from '@sanity/ui'\nimport {useState} from 'react'\nimport {type AssetSourceComponentProps, type SanityDocument} from 'sanity'\n\nimport {AssetBrowserDispatchProvider} from '../../contexts/AssetSourceDispatchContext'\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport GlobalStyle from '../../styled/GlobalStyles'\nimport Controls from '../Controls'\nimport DebugControls from '../DebugControls'\nimport Dialogs from '../Dialogs'\nimport FolderBreadcrumbs from '../FolderBreadcrumbs'\nimport FolderPanel from '../FolderPanel'\nimport Header from '../Header'\nimport Items from '../Items'\nimport Notifications from '../Notifications'\nimport PickedBar from '../PickedBar'\nimport ReduxProvider from '../ReduxProvider'\nimport TagsPanel from '../TagsPanel'\nimport UploadDropzone from '../UploadDropzone'\nimport {useBrowserInit} from './useBrowserInit'\n\ntype Props = {\n  assetType?: AssetSourceComponentProps['assetType']\n  document?: SanityDocument\n  isMultiSelect?: boolean\n  onClose?: AssetSourceComponentProps['onClose']\n  onSelect?: AssetSourceComponentProps['onSelect']\n  selectedAssets?: AssetSourceComponentProps['selectedAssets']\n  schemaType?: AssetSourceComponentProps['schemaType']\n}\n\nconst BrowserContent = ({\n  onClose,\n  schemaType,\n}: {\n  onClose?: AssetSourceComponentProps['onClose']\n  schemaType?: AssetSourceComponentProps['schemaType']\n}) => {\n  const client = useVersionedClient()\n  const [portalElement, setPortalElement] = useState<HTMLDivElement | null>(null)\n\n  useBrowserInit(client, schemaType)\n\n  return (\n    <PortalProvider element={portalElement}>\n      <UploadDropzone>\n        <Dialogs />\n        <Notifications />\n\n        <Card data-testid=\"media-browser\" display=\"flex\" height=\"fill\" ref={setPortalElement}>\n          <Flex direction=\"column\" flex={1}>\n            {/* Header */}\n            <Header onClose={onClose} />\n\n            {/* Browser Controls */}\n            <Controls />\n\n            <FolderBreadcrumbs />\n\n            <Flex flex={1}>\n              <FolderPanel />\n              <Flex align=\"flex-end\" direction=\"column\" flex={1} style={{position: 'relative'}}>\n                <PickedBar />\n                <Items />\n              </Flex>\n              <TagsPanel />\n            </Flex>\n\n            {/* Debug */}\n            <DebugControls />\n          </Flex>\n        </Card>\n      </UploadDropzone>\n    </PortalProvider>\n  )\n}\n\nconst Browser = (props: Props) => {\n  const client = useVersionedClient()\n  const {excludeTagSlugs} = useToolOptions()\n\n  return (\n    <ReduxProvider\n      assetType={props?.assetType}\n      client={client}\n      document={props?.document}\n      excludeTagSlugs={excludeTagSlugs}\n      selectedAssets={props?.selectedAssets}\n    >\n      <AssetBrowserDispatchProvider isMultiSelect={props?.isMultiSelect} onSelect={props?.onSelect}>\n        <GlobalStyle />\n        <BrowserContent onClose={props?.onClose} schemaType={props?.schemaType} />\n      </AssetBrowserDispatchProvider>\n    </ReduxProvider>\n  )\n}\n\nexport default Browser\n","import {Box, Portal, PortalProvider, useLayer} from '@sanity/ui'\nimport {type SyntheticEvent} from 'react'\nimport {type AssetSourceComponentProps, type SanityDocument, useFormValue} from 'sanity'\n\nimport useKeyPress from '../../hooks/useKeyPress'\nimport useRootPortalElement from '../../hooks/useRootPortalElement'\nimport Browser from '../Browser'\n\nconst FormBuilderTool = (props: AssetSourceComponentProps) => {\n  const {onClose} = props\n\n  const portalElement = useRootPortalElement()\n\n  // Get current Sanity document\n  const currentDocument = useFormValue([]) as SanityDocument\n  const selectionType = (props as unknown as {selectionType?: string})?.selectionType\n  const schemaJsonType = (props?.schemaType as {jsonType?: string} | undefined)?.jsonType\n  const isMultiSelect = selectionType === 'multiple' || schemaJsonType === 'array'\n\n  // Close on escape key press\n  useKeyPress('escape', onClose)\n\n  // Stop propagation and prevent document mouse events from firing.\n  // This is a bit of a hack to make this work with `editModal = 'popover'` and prevent Sanity's <Popover /> component from\n  // prematurely closing, as it attaches events on `document` to detect outside clicks.\n  const handleStopPropagation = (event: SyntheticEvent) => {\n    event.nativeEvent.stopImmediatePropagation()\n    event.stopPropagation()\n  }\n\n  const {zIndex} = useLayer()\n\n  return (\n    <PortalProvider element={portalElement}>\n      <Portal>\n        <Box\n          onDragEnter={handleStopPropagation}\n          onDragLeave={handleStopPropagation}\n          onDragOver={handleStopPropagation}\n          onDrop={handleStopPropagation}\n          onMouseUp={handleStopPropagation}\n          style={{\n            bottom: 0,\n            height: 'auto',\n            left: 0,\n            position: 'fixed',\n            top: 0,\n            width: '100%',\n            zIndex,\n          }}\n        >\n          <Browser\n            document={currentDocument}\n            isMultiSelect={isMultiSelect}\n            schemaType={props.schemaType}\n            {...props}\n          />\n        </Box>\n      </Portal>\n    </PortalProvider>\n  )\n}\n\nexport default FormBuilderTool\n","import {Flex} from '@sanity/ui'\n\nimport Browser from '../Browser'\n\nconst Tool = () => {\n  return (\n    <Flex direction=\"column\" height=\"fill\" flex={1}>\n      <Browser />\n    </Flex>\n  )\n}\n\nexport default Tool\n","import {FolderIcon} from '@sanity/icons/Folder'\n\nimport {FOLDER_DOCUMENT_NAME} from '../constants'\n\nexport default {\n  title: 'Media Folder',\n  icon: FolderIcon,\n  name: FOLDER_DOCUMENT_NAME,\n  type: 'document',\n  fields: [\n    {\n      title: 'Name',\n      name: 'name',\n      type: 'string',\n    },\n    {\n      title: 'Parent',\n      name: 'parent',\n      type: 'reference',\n      to: [{type: FOLDER_DOCUMENT_NAME}],\n      weak: true,\n    },\n  ],\n  preview: {\n    select: {\n      name: 'name',\n      parentName: 'parent.name',\n    },\n    prepare(selection: {name?: string; parentName?: string}): {\n      media: typeof FolderIcon\n      subtitle?: string\n      title: string\n    } {\n      const {name, parentName} = selection\n      return {\n        media: FolderIcon,\n        title: name || 'Folder',\n        subtitle: parentName ? `in ${parentName}` : undefined,\n      }\n    },\n  },\n}\n","import TagIcon from '../components/TagIcon'\nimport {TAG_DOCUMENT_NAME} from '../constants'\n\nexport default {\n  title: 'Media Tag',\n  icon: TagIcon,\n  name: TAG_DOCUMENT_NAME,\n  type: 'document',\n  fields: [\n    {\n      title: 'Name',\n      name: 'name',\n      type: 'slug',\n    },\n  ],\n  preview: {\n    select: {\n      name: 'name',\n    },\n    prepare(selection: any) {\n      const {name} = selection\n      return {\n        media: TagIcon,\n        title: name?.current,\n      }\n    },\n  },\n}\n","import {EditIcon} from '@sanity/icons/Edit'\nimport {ImageIcon} from '@sanity/icons/Image'\nimport {type AssetSource, type Tool as SanityTool, definePlugin} from 'sanity'\n\nimport EditAssetTool from './components/EditAssetTool'\nimport FormBuilderTool from './components/FormBuilderTool'\nimport Tool from './components/Tool'\nimport {ToolOptionsProvider} from './contexts/ToolOptionsContext'\nimport mediaFolder from './schemas/folder'\nimport mediaTag from './schemas/tag'\nimport type {MediaToolOptions} from './types'\n\nconst plugin = {\n  icon: ImageIcon,\n  name: 'media',\n  title: 'Media',\n}\n\nexport const mediaAssetSource = {\n  ...plugin,\n  component: FormBuilderTool,\n} satisfies AssetSource\n\nconst editMediaAssetSource = {\n  icon: EditIcon,\n  name: 'edit-media',\n  title: 'Edit Media',\n  component: EditAssetTool,\n} satisfies AssetSource\n\nconst tool = {\n  ...plugin,\n  component: Tool,\n  __internalApplicationType: 'sanity/media',\n} satisfies SanityTool\n\nexport const media = definePlugin<MediaToolOptions | void>((options) => ({\n  name: 'media',\n  studio: {\n    components: {\n      layout: (props) => (\n        <ToolOptionsProvider options={options}>{props.renderDefault(props)}</ToolOptionsProvider>\n      ),\n    },\n  },\n  form: {\n    file: {\n      assetSources: (prev) => {\n        return [...prev, mediaAssetSource, editMediaAssetSource]\n      },\n    },\n    image: {\n      assetSources: (prev) => {\n        return [...prev, mediaAssetSource, editMediaAssetSource]\n      },\n    },\n  },\n  schema: {\n    types: [mediaTag, mediaFolder],\n  },\n  tools: (prev) => {\n    return [...prev, tool]\n  },\n}))\n","import type {SanityClient} from '@sanity/client'\nimport groq from 'groq'\nimport {nanoid} from 'nanoid'\n\nimport {TAG_DOCUMENT_NAME} from '../constants'\nimport type {Tag} from '../types'\n\ntype ApplyMediaTagsOptions = {\n  client: SanityClient\n  assetId: string\n  mediaTags: string[]\n  createTagsOnUpload?: boolean\n}\n\n// Serialize calls per asset so concurrent fields reading the same asset\n// don't race each other — the second call always runs after the first commits.\nconst pendingByAsset = new Map<string, Promise<void>>()\n\nexport function applyMediaTags(options: ApplyMediaTagsOptions): Promise<void> {\n  const {assetId} = options\n  const chain = (pendingByAsset.get(assetId) ?? Promise.resolve()).then(() =>\n    doApplyMediaTags(options),\n  )\n  const cleanup = chain\n    .catch(() => {})\n    .finally(() => {\n      if (pendingByAsset.get(assetId) === cleanup) pendingByAsset.delete(assetId)\n    })\n  pendingByAsset.set(assetId, cleanup)\n  return chain\n}\n\nasync function doApplyMediaTags({\n  client,\n  assetId,\n  mediaTags,\n  createTagsOnUpload = true,\n}: ApplyMediaTagsOptions): Promise<void> {\n  if (!mediaTags || mediaTags.length === 0) return\n\n  const resolvedTags = await Promise.all(\n    mediaTags.map(async (tagName) => {\n      const existingTag = await client.fetch<Tag | null>(\n        groq`*[_type == \"${TAG_DOCUMENT_NAME}\" && name.current == $tagName][0]`,\n        {tagName},\n      )\n      if (existingTag) return existingTag\n      if (createTagsOnUpload) {\n        const newTag = await client.create({\n          _type: TAG_DOCUMENT_NAME,\n          name: {_type: 'slug', current: tagName},\n        })\n        return newTag as Tag\n      }\n      return null\n    }),\n  )\n\n  const validTags = resolvedTags.filter((tag): tag is Tag => tag !== null)\n  if (validTags.length === 0) return\n\n  const existing = await client.fetch<{tagIds: string[]} | null>(\n    groq`*[_id == $assetId][0]{'tagIds': opt.media.tags[]._ref}`,\n    {assetId},\n    {useCdn: false}, // bypass CDN cache so we see the latest committed tag refs\n  )\n  const existingIds = new Set(existing?.tagIds ?? [])\n\n  const tagReferences = validTags\n    .filter((tag) => !existingIds.has(tag._id))\n    .map((tag) => ({\n      _key: nanoid(),\n      _ref: tag._id,\n      _type: 'reference' as const,\n      _weak: true,\n    }))\n\n  if (tagReferences.length === 0) return\n\n  await client\n    .patch(assetId)\n    .setIfMissing({opt: {}})\n    .setIfMissing({'opt.media': {}})\n    .setIfMissing({'opt.media.tags': []})\n    .append('opt.media.tags', tagReferences)\n    .commit()\n}\n","import {useToast} from '@sanity/ui/toast'\nimport {useEffect, useRef} from 'react'\nimport {type InputProps} from 'sanity'\n\nimport {useToolOptions} from '../../contexts/ToolOptionsContext'\nimport useVersionedClient from '../../hooks/useVersionedClient'\nimport {applyMediaTags} from '../../utils/applyMediaTags'\n\ntype AssetValue = {\n  _type: 'image' | 'file'\n  asset?: {\n    _ref: string\n    _type: 'reference'\n  }\n}\n\nexport type AutoTagInputProps = InputProps & {\n  mediaTags?: string[]\n}\n\n/**\n * Input component that automatically applies media tags when an asset is selected or uploaded.\n *\n * Apply explicitly to image/file fields that should be auto-tagged:\n * ```ts\n * import {AutoTagInput} from 'sanity-plugin-media'\n *\n * defineField({\n *   type: 'image',\n *   options: { mediaTags: ['product'] },   // also pre-filters the media browser\n *   components: { input: AutoTagInput },\n * })\n * ```\n *\n * Pass `mediaTags` as a prop to override or use without `options`:\n * ```ts\n * components: { input: (props) => <AutoTagInput {...props} mediaTags={['product']} /> }\n * ```\n */\nexport function AutoTagInput(props: AutoTagInputProps) {\n  const {renderDefault, schemaType, value, mediaTags: mediaTagsProp} = props\n  const toast = useToast()\n\n  // Prop takes precedence; fall back to schemaType.options.mediaTags (set for browser pre-filtering)\n  const mediaTags =\n    mediaTagsProp ?? (schemaType?.options as {mediaTags?: string[]} | undefined)?.mediaTags\n\n  const client = useVersionedClient()\n  const {createTagsOnUpload} = useToolOptions()\n\n  const prevAssetRef = useRef<string | undefined>(undefined)\n  const isInitialMount = useRef(true)\n\n  const currentAssetRef = (value as AssetValue | undefined)?.asset?._ref\n\n  useEffect(() => {\n    if (isInitialMount.current) {\n      isInitialMount.current = false\n      prevAssetRef.current = currentAssetRef\n      return\n    }\n\n    const previousRef = prevAssetRef.current\n    prevAssetRef.current = currentAssetRef\n\n    if (!mediaTags?.length || !currentAssetRef || currentAssetRef === previousRef) return\n\n    applyMediaTags({\n      client,\n      assetId: currentAssetRef,\n      mediaTags,\n      createTagsOnUpload,\n    }).catch((err) => {\n      console.error('[sanity-plugin-media] Failed to apply auto-tags:', err)\n      const label = mediaTags.length === 1 ? 'tag' : 'tags'\n      toast.push({\n        closable: true,\n        status: 'error',\n        title: `Failed to apply the media ${label} ${mediaTags.join(', ')}`,\n      })\n    })\n  }, [currentAssetRef, mediaTags, client, createTagsOnUpload, toast])\n\n  return renderDefault(props as InputProps)\n}\n","import type {\n  FieldDefinitionBase,\n  FileDefinition,\n  ImageDefinition,\n  WidenInitialValue,\n  WidenValidation,\n} from 'sanity'\n\nimport {AutoTagInput} from '../components/AutoTagInputWrapper'\n\ntype ImageMediaFieldConfig = Omit<ImageDefinition, 'options'> &\n  FieldDefinitionBase & {\n    name: string\n    mediaTags: string[]\n    options?: ImageDefinition['options']\n  }\n\ntype FileMediaFieldConfig = Omit<FileDefinition, 'options'> &\n  FieldDefinitionBase & {\n    name: string\n    mediaTags: string[]\n    options?: FileDefinition['options']\n  }\n\ntype ImageMediaFieldResult = Omit<ImageDefinition, 'options'> &\n  FieldDefinitionBase & {\n    options?: ImageDefinition['options'] & {mediaTags: string[]}\n    components: {input: typeof AutoTagInput}\n  } & WidenValidation &\n  WidenInitialValue\n\ntype FileMediaFieldResult = Omit<FileDefinition, 'options'> &\n  FieldDefinitionBase & {\n    options?: FileDefinition['options'] & {mediaTags: string[]}\n    components: {input: typeof AutoTagInput}\n  } & WidenValidation &\n  WidenInitialValue\n\n/**\n * Defines an image or file field with automatic media tag application when an asset is selected.\n *\n * Pass `mediaTags` at the top level — they are moved into `options.mediaTags` (for media browser\n * pre-filtering) and wire up {@link AutoTagInput} as the field component automatically:\n * ```ts\n * import {mediaField} from 'sanity-plugin-media'\n *\n * mediaField({\n *   name: 'coverImage',\n *   type: 'image',\n *   mediaTags: ['product-cover'],\n *   options: { hotspot: true },\n * })\n * ```\n *\n * For file fields, set `type: 'file'`:\n * ```ts\n * mediaField({ name: 'drawing', type: 'file', mediaTags: ['model-drawing'] })\n * ```\n */\nexport function mediaField(config: ImageMediaFieldConfig): ImageMediaFieldResult\nexport function mediaField(config: FileMediaFieldConfig): FileMediaFieldResult\nexport function mediaField(\n  config: ImageMediaFieldConfig | FileMediaFieldConfig,\n): ImageMediaFieldResult | FileMediaFieldResult {\n  const {mediaTags, options, components, ...rest} = config as ImageMediaFieldConfig & {\n    components?: Record<string, unknown>\n  }\n  return {\n    ...rest,\n    options: {...options, mediaTags},\n    components: {...components, input: AutoTagInput},\n  } as unknown as ImageMediaFieldResult\n}\n"],"mappings":"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"}
\ No newline at end of file