@sidekick-coder/zenith-kit 0.0.12 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/zenith.js +27 -0
- package/bin/zkit.js +26 -0
- package/cli/commands/build.js +49 -0
- package/cli/commands/generateLegacyFolder.js +38 -0
- package/cli/commands/generatePluginId.js +17 -0
- package/cli/config.js +23 -0
- package/cli/utils/createWrapper.js +17 -0
- package/dist/client/index.d.mts +513 -0
- package/dist/client/index.mjs +2 -0
- package/dist/components/index.es.js +63946 -0
- package/dist/components/styles.css +4833 -0
- package/dist/server/index.d.mts +1780 -1314
- package/dist/server/index.mjs +5 -7754
- package/dist/shared/chunk-0Lt9GpW0.mjs +1 -0
- package/dist/shared/index.d.mts +472 -19
- package/dist/shared/index.mjs +2 -841
- package/legacy/client/components/Alert.vue +3 -0
- package/legacy/client/components/AlertButton.vue +3 -0
- package/legacy/client/components/Button.vue +3 -0
- package/legacy/client/components/ClientOnly.vue +3 -0
- package/legacy/client/components/ColorPicker.vue +3 -0
- package/legacy/client/components/ColorWheel.vue +3 -0
- package/legacy/client/components/Component.vue +3 -0
- package/legacy/client/components/DataTable.vue +4 -0
- package/legacy/client/components/DataTablePagination.vue +3 -0
- package/legacy/client/components/DatePicker.vue +3 -0
- package/legacy/client/components/DialogForm.vue +4 -0
- package/legacy/client/components/FileUploader.vue +3 -0
- package/legacy/client/components/FormAutoFieldList.vue +3 -0
- package/legacy/client/components/FormAutocomplete.vue +3 -0
- package/legacy/client/components/FormColorPicker.vue +3 -0
- package/legacy/client/components/FormDatePicker.vue +3 -0
- package/legacy/client/components/FormFilePicker.vue +3 -0
- package/legacy/client/components/FormFileUploader.vue +3 -0
- package/legacy/client/components/FormImageUploader.vue +3 -0
- package/legacy/client/components/FormJsonInput.vue +3 -0
- package/legacy/client/components/FormSelect.vue +3 -0
- package/legacy/client/components/FormStringListInput.vue +3 -0
- package/legacy/client/components/FormSwitch.vue +3 -0
- package/legacy/client/components/FormTextField.vue +3 -0
- package/legacy/client/components/FormTextarea.vue +3 -0
- package/legacy/client/components/Icon.vue +3 -0
- package/legacy/client/components/Image.vue +3 -0
- package/legacy/client/components/JsonInput.vue +3 -0
- package/legacy/client/components/Logo.vue +3 -0
- package/legacy/client/components/LogoIcon.vue +3 -0
- package/legacy/client/components/ObjectInspect.vue +3 -0
- package/legacy/client/components/PageCrud.vue +3 -0
- package/legacy/client/components/PageSubtitle.vue +3 -0
- package/legacy/client/components/PageTable.vue +3 -0
- package/legacy/client/components/PageTitle.vue +3 -0
- package/legacy/client/components/Pagination.vue +3 -0
- package/legacy/client/components/Select.vue +3 -0
- package/legacy/client/components/StringListInput.vue +3 -0
- package/legacy/client/components/Switch.vue +3 -0
- package/legacy/client/components/TextField.vue +3 -0
- package/legacy/client/components/Textarea.vue +3 -0
- package/legacy/client/components/UserMenu.vue +3 -0
- package/legacy/client/components/index.ts +349 -0
- package/legacy/client/components/ui/accordion/Accordion.vue +3 -0
- package/legacy/client/components/ui/accordion/AccordionContent.vue +3 -0
- package/legacy/client/components/ui/accordion/AccordionItem.vue +3 -0
- package/legacy/client/components/ui/accordion/AccordionTrigger.vue +3 -0
- package/legacy/client/components/ui/accordion/index.ts +1 -0
- package/legacy/client/components/ui/alert/Alert.vue +3 -0
- package/legacy/client/components/ui/alert/AlertDescription.vue +3 -0
- package/legacy/client/components/ui/alert/AlertTitle.vue +3 -0
- package/legacy/client/components/ui/alert/index.ts +1 -0
- package/legacy/client/components/ui/alert-dialog/AlertDialog.vue +3 -0
- package/legacy/client/components/ui/alert-dialog/AlertDialogAction.vue +3 -0
- package/legacy/client/components/ui/alert-dialog/AlertDialogCancel.vue +3 -0
- package/legacy/client/components/ui/alert-dialog/AlertDialogContent.vue +3 -0
- package/legacy/client/components/ui/alert-dialog/AlertDialogDescription.vue +3 -0
- package/legacy/client/components/ui/alert-dialog/AlertDialogFooter.vue +3 -0
- package/legacy/client/components/ui/alert-dialog/AlertDialogHeader.vue +3 -0
- package/legacy/client/components/ui/alert-dialog/AlertDialogTitle.vue +3 -0
- package/legacy/client/components/ui/alert-dialog/AlertDialogTrigger.vue +3 -0
- package/legacy/client/components/ui/alert-dialog/index.ts +1 -0
- package/legacy/client/components/ui/aspect-ratio/AspectRatio.vue +3 -0
- package/legacy/client/components/ui/aspect-ratio/index.ts +1 -0
- package/legacy/client/components/ui/avatar/Avatar.vue +3 -0
- package/legacy/client/components/ui/avatar/AvatarFallback.vue +3 -0
- package/legacy/client/components/ui/avatar/AvatarImage.vue +3 -0
- package/legacy/client/components/ui/avatar/index.ts +1 -0
- package/legacy/client/components/ui/badge/Badge.vue +3 -0
- package/legacy/client/components/ui/badge/index.ts +1 -0
- package/legacy/client/components/ui/breadcrumb/Breadcrumb.vue +3 -0
- package/legacy/client/components/ui/breadcrumb/BreadcrumbEllipsis.vue +3 -0
- package/legacy/client/components/ui/breadcrumb/BreadcrumbItem.vue +3 -0
- package/legacy/client/components/ui/breadcrumb/BreadcrumbLink.vue +3 -0
- package/legacy/client/components/ui/breadcrumb/BreadcrumbList.vue +3 -0
- package/legacy/client/components/ui/breadcrumb/BreadcrumbPage.vue +3 -0
- package/legacy/client/components/ui/breadcrumb/BreadcrumbSeparator.vue +3 -0
- package/legacy/client/components/ui/breadcrumb/index.ts +1 -0
- package/legacy/client/components/ui/button/Button.vue +3 -0
- package/legacy/client/components/ui/button/index.ts +1 -0
- package/legacy/client/components/ui/calendar/Calendar.vue +3 -0
- package/legacy/client/components/ui/calendar/CalendarCell.vue +3 -0
- package/legacy/client/components/ui/calendar/CalendarCellTrigger.vue +3 -0
- package/legacy/client/components/ui/calendar/CalendarGrid.vue +3 -0
- package/legacy/client/components/ui/calendar/CalendarGridBody.vue +3 -0
- package/legacy/client/components/ui/calendar/CalendarGridHead.vue +3 -0
- package/legacy/client/components/ui/calendar/CalendarGridRow.vue +3 -0
- package/legacy/client/components/ui/calendar/CalendarHeadCell.vue +3 -0
- package/legacy/client/components/ui/calendar/CalendarHeader.vue +3 -0
- package/legacy/client/components/ui/calendar/CalendarHeading.vue +3 -0
- package/legacy/client/components/ui/calendar/CalendarNextButton.vue +3 -0
- package/legacy/client/components/ui/calendar/CalendarPrevButton.vue +3 -0
- package/legacy/client/components/ui/calendar/index.ts +1 -0
- package/legacy/client/components/ui/card/Card.vue +3 -0
- package/legacy/client/components/ui/card/CardAction.vue +3 -0
- package/legacy/client/components/ui/card/CardContent.vue +3 -0
- package/legacy/client/components/ui/card/CardDescription.vue +3 -0
- package/legacy/client/components/ui/card/CardFooter.vue +3 -0
- package/legacy/client/components/ui/card/CardHeader.vue +3 -0
- package/legacy/client/components/ui/card/CardTitle.vue +3 -0
- package/legacy/client/components/ui/card/index.ts +1 -0
- package/legacy/client/components/ui/carousel/Carousel.vue +3 -0
- package/legacy/client/components/ui/carousel/CarouselContent.vue +3 -0
- package/legacy/client/components/ui/carousel/CarouselItem.vue +3 -0
- package/legacy/client/components/ui/carousel/CarouselNext.vue +3 -0
- package/legacy/client/components/ui/carousel/CarouselPrevious.vue +3 -0
- package/legacy/client/components/ui/carousel/index.ts +1 -0
- package/legacy/client/components/ui/checkbox/Checkbox.vue +3 -0
- package/legacy/client/components/ui/checkbox/index.ts +1 -0
- package/legacy/client/components/ui/collapsible/Collapsible.vue +3 -0
- package/legacy/client/components/ui/collapsible/CollapsibleContent.vue +3 -0
- package/legacy/client/components/ui/collapsible/CollapsibleTrigger.vue +3 -0
- package/legacy/client/components/ui/collapsible/index.ts +1 -0
- package/legacy/client/components/ui/combobox/Combobox.vue +3 -0
- package/legacy/client/components/ui/combobox/ComboboxAnchor.vue +3 -0
- package/legacy/client/components/ui/combobox/ComboboxEmpty.vue +3 -0
- package/legacy/client/components/ui/combobox/ComboboxGroup.vue +3 -0
- package/legacy/client/components/ui/combobox/ComboboxInput.vue +3 -0
- package/legacy/client/components/ui/combobox/ComboboxItem.vue +3 -0
- package/legacy/client/components/ui/combobox/ComboboxItemIndicator.vue +3 -0
- package/legacy/client/components/ui/combobox/ComboboxList.vue +3 -0
- package/legacy/client/components/ui/combobox/ComboboxSeparator.vue +3 -0
- package/legacy/client/components/ui/combobox/ComboboxTrigger.vue +3 -0
- package/legacy/client/components/ui/combobox/ComboboxViewport.vue +3 -0
- package/legacy/client/components/ui/combobox/index.ts +1 -0
- package/legacy/client/components/ui/command/Command.vue +3 -0
- package/legacy/client/components/ui/command/CommandDialog.vue +3 -0
- package/legacy/client/components/ui/command/CommandEmpty.vue +3 -0
- package/legacy/client/components/ui/command/CommandGroup.vue +3 -0
- package/legacy/client/components/ui/command/CommandInput.vue +3 -0
- package/legacy/client/components/ui/command/CommandItem.vue +3 -0
- package/legacy/client/components/ui/command/CommandList.vue +3 -0
- package/legacy/client/components/ui/command/CommandSeparator.vue +3 -0
- package/legacy/client/components/ui/command/CommandShortcut.vue +3 -0
- package/legacy/client/components/ui/command/index.ts +1 -0
- package/legacy/client/components/ui/context-menu/ContextMenu.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuCheckboxItem.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuContent.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuGroup.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuItem.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuLabel.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuPortal.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuRadioGroup.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuRadioItem.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuSeparator.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuShortcut.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuSub.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuSubContent.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuSubTrigger.vue +3 -0
- package/legacy/client/components/ui/context-menu/ContextMenuTrigger.vue +3 -0
- package/legacy/client/components/ui/context-menu/index.ts +1 -0
- package/legacy/client/components/ui/dialog/Dialog.vue +3 -0
- package/legacy/client/components/ui/dialog/DialogClose.vue +3 -0
- package/legacy/client/components/ui/dialog/DialogContent.vue +3 -0
- package/legacy/client/components/ui/dialog/DialogDescription.vue +3 -0
- package/legacy/client/components/ui/dialog/DialogFooter.vue +3 -0
- package/legacy/client/components/ui/dialog/DialogHeader.vue +3 -0
- package/legacy/client/components/ui/dialog/DialogOverlay.vue +3 -0
- package/legacy/client/components/ui/dialog/DialogScrollContent.vue +3 -0
- package/legacy/client/components/ui/dialog/DialogTitle.vue +3 -0
- package/legacy/client/components/ui/dialog/DialogTrigger.vue +3 -0
- package/legacy/client/components/ui/dialog/index.ts +1 -0
- package/legacy/client/components/ui/drawer/Drawer.vue +3 -0
- package/legacy/client/components/ui/drawer/DrawerClose.vue +3 -0
- package/legacy/client/components/ui/drawer/DrawerContent.vue +3 -0
- package/legacy/client/components/ui/drawer/DrawerDescription.vue +3 -0
- package/legacy/client/components/ui/drawer/DrawerFooter.vue +3 -0
- package/legacy/client/components/ui/drawer/DrawerHeader.vue +3 -0
- package/legacy/client/components/ui/drawer/DrawerOverlay.vue +3 -0
- package/legacy/client/components/ui/drawer/DrawerTitle.vue +3 -0
- package/legacy/client/components/ui/drawer/DrawerTrigger.vue +3 -0
- package/legacy/client/components/ui/drawer/index.ts +1 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenu.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenuContent.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenuGroup.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenuItem.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenuLabel.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenuSeparator.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenuShortcut.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenuSub.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenuSubContent.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/DropdownMenuTrigger.vue +3 -0
- package/legacy/client/components/ui/dropdown-menu/index.ts +1 -0
- package/legacy/client/components/ui/form/FormControl.vue +3 -0
- package/legacy/client/components/ui/form/FormDescription.vue +3 -0
- package/legacy/client/components/ui/form/FormItem.vue +3 -0
- package/legacy/client/components/ui/form/FormLabel.vue +3 -0
- package/legacy/client/components/ui/form/FormMessage.vue +3 -0
- package/legacy/client/components/ui/form/index.ts +1 -0
- package/legacy/client/components/ui/hover-card/HoverCard.vue +3 -0
- package/legacy/client/components/ui/hover-card/HoverCardContent.vue +3 -0
- package/legacy/client/components/ui/hover-card/HoverCardTrigger.vue +3 -0
- package/legacy/client/components/ui/hover-card/index.ts +1 -0
- package/legacy/client/components/ui/input/Input.vue +3 -0
- package/legacy/client/components/ui/input/index.ts +1 -0
- package/legacy/client/components/ui/label/Label.vue +3 -0
- package/legacy/client/components/ui/label/index.ts +1 -0
- package/legacy/client/components/ui/menubar/Menubar.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarCheckboxItem.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarContent.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarGroup.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarItem.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarLabel.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarMenu.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarRadioGroup.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarRadioItem.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarSeparator.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarShortcut.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarSub.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarSubContent.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarSubTrigger.vue +3 -0
- package/legacy/client/components/ui/menubar/MenubarTrigger.vue +3 -0
- package/legacy/client/components/ui/menubar/index.ts +1 -0
- package/legacy/client/components/ui/navigation-menu/NavigationMenu.vue +3 -0
- package/legacy/client/components/ui/navigation-menu/NavigationMenuContent.vue +3 -0
- package/legacy/client/components/ui/navigation-menu/NavigationMenuIndicator.vue +3 -0
- package/legacy/client/components/ui/navigation-menu/NavigationMenuItem.vue +3 -0
- package/legacy/client/components/ui/navigation-menu/NavigationMenuLink.vue +3 -0
- package/legacy/client/components/ui/navigation-menu/NavigationMenuList.vue +3 -0
- package/legacy/client/components/ui/navigation-menu/NavigationMenuTrigger.vue +3 -0
- package/legacy/client/components/ui/navigation-menu/NavigationMenuViewport.vue +3 -0
- package/legacy/client/components/ui/navigation-menu/index.ts +1 -0
- package/legacy/client/components/ui/number-field/NumberField.vue +3 -0
- package/legacy/client/components/ui/number-field/NumberFieldContent.vue +3 -0
- package/legacy/client/components/ui/number-field/NumberFieldDecrement.vue +3 -0
- package/legacy/client/components/ui/number-field/NumberFieldIncrement.vue +3 -0
- package/legacy/client/components/ui/number-field/NumberFieldInput.vue +3 -0
- package/legacy/client/components/ui/number-field/index.ts +1 -0
- package/legacy/client/components/ui/pagination/Pagination.vue +3 -0
- package/legacy/client/components/ui/pagination/PaginationContent.vue +3 -0
- package/legacy/client/components/ui/pagination/PaginationEllipsis.vue +3 -0
- package/legacy/client/components/ui/pagination/PaginationFirst.vue +3 -0
- package/legacy/client/components/ui/pagination/PaginationItem.vue +3 -0
- package/legacy/client/components/ui/pagination/PaginationLast.vue +3 -0
- package/legacy/client/components/ui/pagination/PaginationNext.vue +3 -0
- package/legacy/client/components/ui/pagination/PaginationPrevious.vue +3 -0
- package/legacy/client/components/ui/pagination/index.ts +1 -0
- package/legacy/client/components/ui/pin-input/PinInput.vue +3 -0
- package/legacy/client/components/ui/pin-input/PinInputGroup.vue +3 -0
- package/legacy/client/components/ui/pin-input/PinInputSeparator.vue +3 -0
- package/legacy/client/components/ui/pin-input/PinInputSlot.vue +3 -0
- package/legacy/client/components/ui/pin-input/index.ts +1 -0
- package/legacy/client/components/ui/popover/Popover.vue +3 -0
- package/legacy/client/components/ui/popover/PopoverAnchor.vue +3 -0
- package/legacy/client/components/ui/popover/PopoverContent.vue +3 -0
- package/legacy/client/components/ui/popover/PopoverTrigger.vue +3 -0
- package/legacy/client/components/ui/popover/index.ts +1 -0
- package/legacy/client/components/ui/progress/Progress.vue +3 -0
- package/legacy/client/components/ui/progress/index.ts +1 -0
- package/legacy/client/components/ui/radio-group/RadioGroup.vue +3 -0
- package/legacy/client/components/ui/radio-group/RadioGroupItem.vue +3 -0
- package/legacy/client/components/ui/radio-group/index.ts +1 -0
- package/legacy/client/components/ui/range-calendar/RangeCalendar.vue +3 -0
- package/legacy/client/components/ui/range-calendar/RangeCalendarCell.vue +3 -0
- package/legacy/client/components/ui/range-calendar/RangeCalendarCellTrigger.vue +3 -0
- package/legacy/client/components/ui/range-calendar/RangeCalendarGrid.vue +3 -0
- package/legacy/client/components/ui/range-calendar/RangeCalendarGridBody.vue +3 -0
- package/legacy/client/components/ui/range-calendar/RangeCalendarGridHead.vue +3 -0
- package/legacy/client/components/ui/range-calendar/RangeCalendarGridRow.vue +3 -0
- package/legacy/client/components/ui/range-calendar/RangeCalendarHeadCell.vue +3 -0
- package/legacy/client/components/ui/range-calendar/RangeCalendarHeader.vue +3 -0
- package/legacy/client/components/ui/range-calendar/RangeCalendarHeading.vue +3 -0
- package/legacy/client/components/ui/range-calendar/RangeCalendarNextButton.vue +3 -0
- package/legacy/client/components/ui/range-calendar/RangeCalendarPrevButton.vue +3 -0
- package/legacy/client/components/ui/range-calendar/index.ts +1 -0
- package/legacy/client/components/ui/resizable/ResizableHandle.vue +3 -0
- package/legacy/client/components/ui/resizable/ResizablePanel.vue +3 -0
- package/legacy/client/components/ui/resizable/ResizablePanelGroup.vue +3 -0
- package/legacy/client/components/ui/resizable/index.ts +1 -0
- package/legacy/client/components/ui/scroll-area/ScrollArea.vue +3 -0
- package/legacy/client/components/ui/scroll-area/ScrollBar.vue +3 -0
- package/legacy/client/components/ui/scroll-area/index.ts +1 -0
- package/legacy/client/components/ui/select/Select.vue +3 -0
- package/legacy/client/components/ui/select/SelectContent.vue +3 -0
- package/legacy/client/components/ui/select/SelectGroup.vue +3 -0
- package/legacy/client/components/ui/select/SelectItem.vue +3 -0
- package/legacy/client/components/ui/select/SelectItemText.vue +3 -0
- package/legacy/client/components/ui/select/SelectLabel.vue +3 -0
- package/legacy/client/components/ui/select/SelectScrollDownButton.vue +3 -0
- package/legacy/client/components/ui/select/SelectScrollUpButton.vue +3 -0
- package/legacy/client/components/ui/select/SelectSeparator.vue +3 -0
- package/legacy/client/components/ui/select/SelectTrigger.vue +3 -0
- package/legacy/client/components/ui/select/SelectValue.vue +3 -0
- package/legacy/client/components/ui/select/index.ts +1 -0
- package/legacy/client/components/ui/separator/Separator.vue +3 -0
- package/legacy/client/components/ui/separator/index.ts +1 -0
- package/legacy/client/components/ui/sheet/Sheet.vue +3 -0
- package/legacy/client/components/ui/sheet/SheetClose.vue +3 -0
- package/legacy/client/components/ui/sheet/SheetContent.vue +3 -0
- package/legacy/client/components/ui/sheet/SheetDescription.vue +3 -0
- package/legacy/client/components/ui/sheet/SheetFooter.vue +3 -0
- package/legacy/client/components/ui/sheet/SheetHeader.vue +3 -0
- package/legacy/client/components/ui/sheet/SheetOverlay.vue +3 -0
- package/legacy/client/components/ui/sheet/SheetTitle.vue +3 -0
- package/legacy/client/components/ui/sheet/SheetTrigger.vue +3 -0
- package/legacy/client/components/ui/sheet/index.ts +1 -0
- package/legacy/client/components/ui/sidebar/Sidebar.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarContent.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarFooter.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarGroup.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarGroupAction.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarGroupContent.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarGroupLabel.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarHeader.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarInput.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarInset.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarMenu.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarMenuAction.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarMenuBadge.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarMenuButton.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarMenuButtonChild.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarMenuItem.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarMenuSkeleton.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarMenuSub.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarMenuSubButton.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarMenuSubItem.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarProvider.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarRail.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarSeparator.vue +3 -0
- package/legacy/client/components/ui/sidebar/SidebarTrigger.vue +3 -0
- package/legacy/client/components/ui/sidebar/index.ts +1 -0
- package/legacy/client/components/ui/skeleton/Skeleton.vue +3 -0
- package/legacy/client/components/ui/skeleton/index.ts +1 -0
- package/legacy/client/components/ui/slider/Slider.vue +3 -0
- package/legacy/client/components/ui/slider/index.ts +1 -0
- package/legacy/client/components/ui/sonner/Sonner.vue +3 -0
- package/legacy/client/components/ui/sonner/index.ts +1 -0
- package/legacy/client/components/ui/stepper/Stepper.vue +3 -0
- package/legacy/client/components/ui/stepper/StepperDescription.vue +3 -0
- package/legacy/client/components/ui/stepper/StepperIndicator.vue +3 -0
- package/legacy/client/components/ui/stepper/StepperItem.vue +3 -0
- package/legacy/client/components/ui/stepper/StepperSeparator.vue +3 -0
- package/legacy/client/components/ui/stepper/StepperTitle.vue +3 -0
- package/legacy/client/components/ui/stepper/StepperTrigger.vue +3 -0
- package/legacy/client/components/ui/stepper/index.ts +1 -0
- package/legacy/client/components/ui/switch/Switch.vue +3 -0
- package/legacy/client/components/ui/switch/index.ts +1 -0
- package/legacy/client/components/ui/table/Table.vue +3 -0
- package/legacy/client/components/ui/table/TableBody.vue +3 -0
- package/legacy/client/components/ui/table/TableCaption.vue +3 -0
- package/legacy/client/components/ui/table/TableCell.vue +3 -0
- package/legacy/client/components/ui/table/TableEmpty.vue +3 -0
- package/legacy/client/components/ui/table/TableFooter.vue +3 -0
- package/legacy/client/components/ui/table/TableHead.vue +3 -0
- package/legacy/client/components/ui/table/TableHeader.vue +3 -0
- package/legacy/client/components/ui/table/TableRow.vue +3 -0
- package/legacy/client/components/ui/table/index.ts +1 -0
- package/legacy/client/components/ui/tabs/Tabs.vue +3 -0
- package/legacy/client/components/ui/tabs/TabsContent.vue +3 -0
- package/legacy/client/components/ui/tabs/TabsList.vue +3 -0
- package/legacy/client/components/ui/tabs/TabsTrigger.vue +3 -0
- package/legacy/client/components/ui/tabs/index.ts +1 -0
- package/legacy/client/components/ui/tags-input/TagsInput.vue +3 -0
- package/legacy/client/components/ui/tags-input/TagsInputInput.vue +3 -0
- package/legacy/client/components/ui/tags-input/TagsInputItem.vue +3 -0
- package/legacy/client/components/ui/tags-input/TagsInputItemDelete.vue +3 -0
- package/legacy/client/components/ui/tags-input/TagsInputItemText.vue +3 -0
- package/legacy/client/components/ui/tags-input/index.ts +1 -0
- package/legacy/client/components/ui/textarea/Textarea.vue +3 -0
- package/legacy/client/components/ui/textarea/index.ts +1 -0
- package/legacy/client/components/ui/toggle/Toggle.vue +3 -0
- package/legacy/client/components/ui/toggle/index.ts +1 -0
- package/legacy/client/components/ui/toggle-group/ToggleGroup.vue +3 -0
- package/legacy/client/components/ui/toggle-group/ToggleGroupItem.vue +3 -0
- package/legacy/client/components/ui/toggle-group/index.ts +1 -0
- package/legacy/client/components/ui/tooltip/Tooltip.vue +3 -0
- package/legacy/client/components/ui/tooltip/TooltipContent.vue +3 -0
- package/legacy/client/components/ui/tooltip/TooltipProvider.vue +3 -0
- package/legacy/client/components/ui/tooltip/TooltipTrigger.vue +3 -0
- package/legacy/client/components/ui/tooltip/index.ts +1 -0
- package/legacy/client/facades/acl.facade.ts +1 -0
- package/legacy/client/facades/app.facade.ts +6 -0
- package/legacy/client/facades/auth.facade.ts +1 -0
- package/legacy/client/facades/config.facade.ts +1 -0
- package/legacy/client/facades/fetch.facade.ts +1 -0
- package/legacy/client/facades/logger.facade.ts +1 -0
- package/legacy/client/facades/menu.facade.ts +1 -0
- package/legacy/client/facades/router.facade.ts +1 -0
- package/legacy/client/facades/translator.facade.ts +10 -0
- package/legacy/client/utils/autoPages.ts +1 -0
- package/legacy/client/utils/createId.ts +1 -0
- package/legacy/client/utils/di.ts +1 -0
- package/legacy/client/utils/fetcher.ts +1 -0
- package/legacy/client/utils/file.ts +1 -0
- package/legacy/client/utils/index.ts +7 -0
- package/legacy/client/utils/logger.ts +1 -0
- package/legacy/client/utils/toast.ts +1 -0
- package/legacy/server/entities/file.entity.ts +4 -0
- package/legacy/server/exceptions/base.ts +4 -0
- package/legacy/server/facades/arte.facade.ts +6 -0
- package/legacy/server/facades/config.facade.ts +4 -0
- package/legacy/server/facades/db.facade.ts +4 -0
- package/legacy/server/facades/download.facade.ts +4 -0
- package/legacy/server/facades/drive.facade.ts +4 -0
- package/legacy/server/facades/logger.facade.ts +4 -0
- package/legacy/server/facades/router.facade.ts +4 -0
- package/legacy/server/middlewares/auth.middleware.ts +6 -0
- package/legacy/server/middlewares/authorization.middleware.ts +8 -0
- package/legacy/server/mixins/hooks.mixin.ts +6 -0
- package/legacy/server/mixins/model.mixin.ts +6 -0
- package/legacy/server/mixins/modelConfig.mixin.ts +4 -0
- package/legacy/server/queries/index.ts +6 -0
- package/legacy/server/services/metadataQuery.service.ts +6 -0
- package/legacy/server/services/routerResourceConfig.service.ts +5 -0
- package/legacy/shared/services/validator.service.ts +4 -0
- package/legacy/shared/utils/compose.ts +8 -0
- package/legacy/shared/utils/tryCatch.ts +7 -0
- package/package.json +57 -13
- package/tsconfig.client.json +3 -3
- package/tsconfig.server.json +1 -1
- package/tsdown/createTsdownConfig.js +29 -0
- package/tsdown.config.ts +55 -2
- package/vite/createViteConfig.js +55 -0
- package/vite/plugins/zenith.js +143 -0
- package/vite.config.ts +72 -0
- package/dist/shared/chunk-CfYAbeIz.mjs +0 -13
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
import * as _$vue_sonner0 from "vue-sonner";
|
|
2
|
+
import * as _$_casl_ability0 from "@casl/ability";
|
|
3
|
+
import { defineAbility } from "@casl/ability";
|
|
4
|
+
import { NavigationGuard, RouteLocationNormalizedGeneric, RouteRecordRaw, Router as Router$1 } from "vue-router";
|
|
5
|
+
import * as _$vue from "vue";
|
|
6
|
+
import { DefineComponent } from "vue";
|
|
7
|
+
|
|
8
|
+
//#region src/shared/utils/compose.d.ts
|
|
9
|
+
type Constructor$1<T = {}> = new (...args: any[]) => T;
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region src/shared/entities/PermissionEntity.d.ts
|
|
12
|
+
declare const PermissionEntity_base: {
|
|
13
|
+
new (...args: any[]): {
|
|
14
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
15
|
+
};
|
|
16
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
17
|
+
} & Constructor$1;
|
|
18
|
+
declare class PermissionEntity extends PermissionEntity_base {
|
|
19
|
+
id: number;
|
|
20
|
+
name: string;
|
|
21
|
+
description: string | null;
|
|
22
|
+
origin: string;
|
|
23
|
+
subject: string;
|
|
24
|
+
action: string;
|
|
25
|
+
conditions: string | null | Record<string, any>;
|
|
26
|
+
get editable(): boolean;
|
|
27
|
+
get parsedConditions(): any;
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region src/shared/entities/RoleEntity.d.ts
|
|
31
|
+
declare const Role_base: {
|
|
32
|
+
new (...args: any[]): {
|
|
33
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
34
|
+
};
|
|
35
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
36
|
+
} & Constructor$1 & {
|
|
37
|
+
new (...args: any[]): {
|
|
38
|
+
created_at: Date | string;
|
|
39
|
+
updated_at: Date | string;
|
|
40
|
+
};
|
|
41
|
+
} & {
|
|
42
|
+
new (...args: any[]): {
|
|
43
|
+
deleted_at: Date | string | null;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
declare class Role extends Role_base {
|
|
47
|
+
id: number;
|
|
48
|
+
name: string;
|
|
49
|
+
description?: string;
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
//#region src/shared/entities/UserEntity.d.ts
|
|
53
|
+
declare const UserEntity_base: {
|
|
54
|
+
new (...args: any[]): {
|
|
55
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
56
|
+
};
|
|
57
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
58
|
+
} & Constructor$1 & {
|
|
59
|
+
new (...args: any[]): {
|
|
60
|
+
created_at: Date | string;
|
|
61
|
+
updated_at: Date | string;
|
|
62
|
+
};
|
|
63
|
+
} & {
|
|
64
|
+
new (...args: any[]): {
|
|
65
|
+
deleted_at: Date | string | null;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
declare class UserEntity extends UserEntity_base {
|
|
69
|
+
id: number;
|
|
70
|
+
email: string;
|
|
71
|
+
name: string;
|
|
72
|
+
username: string;
|
|
73
|
+
password?: string;
|
|
74
|
+
verified_at?: Date | string | null;
|
|
75
|
+
permissions?: PermissionEntity[];
|
|
76
|
+
roles?: Role[];
|
|
77
|
+
get initials(): string;
|
|
78
|
+
}
|
|
79
|
+
//#endregion
|
|
80
|
+
//#region src/client/services/AuthService.d.ts
|
|
81
|
+
interface LogoutOptions {
|
|
82
|
+
redirect?: string;
|
|
83
|
+
}
|
|
84
|
+
declare class AuthService {
|
|
85
|
+
static __container_entry_key: string;
|
|
86
|
+
user: UserEntity | null;
|
|
87
|
+
constructor(data?: Partial<AuthService>);
|
|
88
|
+
logout(options?: LogoutOptions): Promise<void>;
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region src/client/services/FetchService.d.ts
|
|
92
|
+
interface FetchOptions extends RequestInit {
|
|
93
|
+
query?: Record<string, any>;
|
|
94
|
+
data?: Record<string, any>;
|
|
95
|
+
}
|
|
96
|
+
declare class FetchService {
|
|
97
|
+
static __container_entry_key: string;
|
|
98
|
+
protected handleError(response: Response): Promise<void>;
|
|
99
|
+
protected buildUrl(url: string, query?: Record<string, any>): string;
|
|
100
|
+
protected buildRequestInit(options: FetchOptions): RequestInit;
|
|
101
|
+
protected parseResponse<T>(response: Response): Promise<T>;
|
|
102
|
+
fetch<T>(_url: string, _options?: FetchOptions): Promise<T>;
|
|
103
|
+
try<T = any>(url: string, options?: FetchOptions): Promise<[Error, null] | [null, Awaited<T>]>;
|
|
104
|
+
get<T = any>(url: string, options?: FetchOptions): Promise<T>;
|
|
105
|
+
post<T = any>(url: string, options?: FetchOptions): Promise<T>;
|
|
106
|
+
put<T = any>(url: string, options?: FetchOptions): Promise<T>;
|
|
107
|
+
delete<T = any>(url: string, options?: FetchOptions): Promise<T>;
|
|
108
|
+
}
|
|
109
|
+
//#endregion
|
|
110
|
+
//#region src/client/services/FetchBrowserService.d.ts
|
|
111
|
+
declare class FetchBrowserService extends FetchService {
|
|
112
|
+
fetch<T>(url: string, options?: FetchOptions): Promise<T>;
|
|
113
|
+
}
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region src/client/services/FetchNodeService.d.ts
|
|
116
|
+
declare class FetchNodeService extends FetchService {
|
|
117
|
+
fetch<T>(url: string, options?: FetchOptions): Promise<T>;
|
|
118
|
+
protected fetchExternal<T>(url: string, options?: FetchOptions): Promise<T>;
|
|
119
|
+
protected fetchInternal<T>(url: string, options?: FetchOptions): Promise<T>;
|
|
120
|
+
}
|
|
121
|
+
//#endregion
|
|
122
|
+
//#region src/shared/services/LoggerService.d.ts
|
|
123
|
+
declare class LoggerService {
|
|
124
|
+
static __container_entry_key: string;
|
|
125
|
+
info(message: string, meta?: any): void;
|
|
126
|
+
debug(message: string, meta?: any): void;
|
|
127
|
+
warn(message: string, meta?: any): void;
|
|
128
|
+
error(message: string, meta?: any): void;
|
|
129
|
+
child(options: any): LoggerService;
|
|
130
|
+
}
|
|
131
|
+
//#endregion
|
|
132
|
+
//#region src/shared/entities/LifecycleHook.d.ts
|
|
133
|
+
declare class LifecycleHook {
|
|
134
|
+
hook_id: string;
|
|
135
|
+
hook_aliases?: string[];
|
|
136
|
+
order?: number;
|
|
137
|
+
subhooks?: LifecycleHook[];
|
|
138
|
+
register(): Promise<void>;
|
|
139
|
+
load(): Promise<void>;
|
|
140
|
+
boot(): Promise<void>;
|
|
141
|
+
shutdown(): Promise<void>;
|
|
142
|
+
/** @deprecated Use register */
|
|
143
|
+
onRegister(): Promise<void>;
|
|
144
|
+
/** @deprecated Use load */
|
|
145
|
+
onLoad(): Promise<void>;
|
|
146
|
+
/** @deprecated Use boot */
|
|
147
|
+
onBoot(): Promise<void>;
|
|
148
|
+
/** @deprecated Use shutdown */
|
|
149
|
+
onShutdown(): Promise<void>;
|
|
150
|
+
}
|
|
151
|
+
//#endregion
|
|
152
|
+
//#region src/shared/services/LifecycleService.d.ts
|
|
153
|
+
type LifecycleMethod = 'register' | 'load' | 'boot' | 'shutdown';
|
|
154
|
+
interface ListOptions {
|
|
155
|
+
include?: string | string[];
|
|
156
|
+
exclude?: string | string[];
|
|
157
|
+
}
|
|
158
|
+
interface LifecycleServiceOptions {
|
|
159
|
+
debug?: boolean;
|
|
160
|
+
hooks?: Map<string, LifecycleHook>;
|
|
161
|
+
logger?: LoggerService;
|
|
162
|
+
onError?: (error: Error, context: {
|
|
163
|
+
hookId: string;
|
|
164
|
+
method: LifecycleMethod;
|
|
165
|
+
}) => void;
|
|
166
|
+
}
|
|
167
|
+
declare class LifecycleService$1 {
|
|
168
|
+
static __container_entry_key: string;
|
|
169
|
+
hooks: Map<string, LifecycleHook>;
|
|
170
|
+
logger: LoggerService;
|
|
171
|
+
debug: boolean;
|
|
172
|
+
constructor(data?: LifecycleServiceOptions);
|
|
173
|
+
onError(error: Error, context: {
|
|
174
|
+
hookId: string;
|
|
175
|
+
method: LifecycleMethod;
|
|
176
|
+
}): void;
|
|
177
|
+
mapAliases(args: string[]): string[];
|
|
178
|
+
list(options?: ListOptions): LifecycleHook[];
|
|
179
|
+
add(...payload: (LifecycleHook | Constructor$1<LifecycleHook>)[]): void;
|
|
180
|
+
emitMethod(method: LifecycleMethod, options?: ListOptions): Promise<void>;
|
|
181
|
+
emit(payload: LifecycleMethod | LifecycleMethod[], options?: ListOptions): Promise<void>;
|
|
182
|
+
register(options?: ListOptions): Promise<void>;
|
|
183
|
+
load(options?: ListOptions): Promise<void>;
|
|
184
|
+
boot(options?: ListOptions): Promise<void>;
|
|
185
|
+
shutdown(options?: ListOptions): Promise<void>;
|
|
186
|
+
clear(): void;
|
|
187
|
+
}
|
|
188
|
+
//#endregion
|
|
189
|
+
//#region src/client/services/LifecycleService.d.ts
|
|
190
|
+
declare class LifecycleService extends LifecycleService$1 {
|
|
191
|
+
addImports(imports: Record<string, any>): void;
|
|
192
|
+
}
|
|
193
|
+
//#endregion
|
|
194
|
+
//#region src/client/entities/MenuItemEntity.d.ts
|
|
195
|
+
declare const MenuItem_base: {
|
|
196
|
+
new (...args: any[]): {
|
|
197
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
198
|
+
};
|
|
199
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
200
|
+
} & Constructor$1;
|
|
201
|
+
declare class MenuItem extends MenuItem_base {
|
|
202
|
+
id: string;
|
|
203
|
+
label: string;
|
|
204
|
+
layout: string;
|
|
205
|
+
to?: string;
|
|
206
|
+
target?: '_blank' | '_self' | '_parent' | '_top';
|
|
207
|
+
group?: string;
|
|
208
|
+
order?: number;
|
|
209
|
+
icon?: string;
|
|
210
|
+
parent?: string;
|
|
211
|
+
}
|
|
212
|
+
//#endregion
|
|
213
|
+
//#region src/client/services/MenuService.d.ts
|
|
214
|
+
interface ListFilter {
|
|
215
|
+
layout?: string;
|
|
216
|
+
group?: string;
|
|
217
|
+
parent?: string;
|
|
218
|
+
allowed?: boolean;
|
|
219
|
+
}
|
|
220
|
+
declare class MenuService {
|
|
221
|
+
static __container_entry_key: string;
|
|
222
|
+
items: Map<string, MenuItem>;
|
|
223
|
+
add(...item: Omit<Partial<MenuItem>, 'merge' | 'from'>[]): void;
|
|
224
|
+
remove(id: MenuItem['id']): void;
|
|
225
|
+
list(filter?: ListFilter): MenuItem[];
|
|
226
|
+
clear(): void;
|
|
227
|
+
}
|
|
228
|
+
//#endregion
|
|
229
|
+
//#region src/client/services/RouterService.d.ts
|
|
230
|
+
interface Router extends Router$1 {
|
|
231
|
+
auto: typeof auto;
|
|
232
|
+
}
|
|
233
|
+
interface AutoOptions {
|
|
234
|
+
guards?: NavigationGuard[] | ((record: RouteRecordRaw) => NavigationGuard[]);
|
|
235
|
+
strip?: (string | RegExp)[];
|
|
236
|
+
exclude?: (string | RegExp)[];
|
|
237
|
+
prefix?: string;
|
|
238
|
+
refine?: (records: RouteRecordRaw[]) => RouteRecordRaw[];
|
|
239
|
+
}
|
|
240
|
+
declare function auto(imports: Record<string, DefineComponent | (() => Promise<DefineComponent>)>, options?: AutoOptions): RouteRecordRaw[];
|
|
241
|
+
declare function createRouter(): Router;
|
|
242
|
+
//#endregion
|
|
243
|
+
//#region src/client/services/ToastService.d.ts
|
|
244
|
+
declare class ToastService {
|
|
245
|
+
static __container_entry_key: string;
|
|
246
|
+
success(message: string, options?: Record<string, any>): void;
|
|
247
|
+
error(message: string, options?: Record<string, any>): void;
|
|
248
|
+
}
|
|
249
|
+
//#endregion
|
|
250
|
+
//#region src/shared/entities/AclEntity.d.ts
|
|
251
|
+
declare class AclEntity {
|
|
252
|
+
static __container_entry_key: string;
|
|
253
|
+
ability: ReturnType<typeof defineAbility>;
|
|
254
|
+
permissions: PermissionEntity[];
|
|
255
|
+
debug: boolean;
|
|
256
|
+
logger: LoggerService;
|
|
257
|
+
constructor(data?: Partial<AclEntity>);
|
|
258
|
+
can(action: string, subject: any, object?: Record<string, any>): boolean;
|
|
259
|
+
cannot(action: string, subject: any, object?: Record<string, any>): boolean;
|
|
260
|
+
subject(subject: string, object: Record<string, any>): Record<string, any> & _$_casl_ability0.ForcedSubject<string>;
|
|
261
|
+
}
|
|
262
|
+
//#endregion
|
|
263
|
+
//#region src/client/facades/acl.d.ts
|
|
264
|
+
declare const acl: AclEntity;
|
|
265
|
+
//#endregion
|
|
266
|
+
//#region src/client/facades/auth.d.ts
|
|
267
|
+
declare const auth: AuthService;
|
|
268
|
+
//#endregion
|
|
269
|
+
//#region src/shared/services/ConfigService.d.ts
|
|
270
|
+
interface Entry {
|
|
271
|
+
key: string;
|
|
272
|
+
value: any;
|
|
273
|
+
source: string;
|
|
274
|
+
}
|
|
275
|
+
declare class ConfigService {
|
|
276
|
+
static __container_entry_key: string;
|
|
277
|
+
entries: Map<string, Entry>;
|
|
278
|
+
constructor();
|
|
279
|
+
list(): Entry[];
|
|
280
|
+
parseValue(value: any): any;
|
|
281
|
+
loadFromRecord(record: Record<string, any>, source?: string): void;
|
|
282
|
+
loadFromEntries(entries: [string, any][], source?: string): void;
|
|
283
|
+
toRecord(): Record<string, any>;
|
|
284
|
+
has(key: string): boolean;
|
|
285
|
+
get<T = any | undefined>(key: string, defaultValue?: any): T;
|
|
286
|
+
getOne<T = any | undefined>(keys: string[], defaultValue?: any): T;
|
|
287
|
+
set(key: string, value: any, source?: string): void;
|
|
288
|
+
unset(key: string): void;
|
|
289
|
+
clear(): void;
|
|
290
|
+
dump(): Record<string, any>;
|
|
291
|
+
}
|
|
292
|
+
//#endregion
|
|
293
|
+
//#region src/client/facades/config.d.ts
|
|
294
|
+
declare const config: ConfigService;
|
|
295
|
+
//#endregion
|
|
296
|
+
//#region src/shared/services/ContainerService.d.ts
|
|
297
|
+
type Constructor<T = object> = new (...args: any[]) => T;
|
|
298
|
+
type EntryKey = string | symbol | Constructor;
|
|
299
|
+
declare class ContainerService {
|
|
300
|
+
private entries;
|
|
301
|
+
loadFromRecord(record: Record<string, any>): void;
|
|
302
|
+
toRecord(): Record<string, any>;
|
|
303
|
+
private getKey;
|
|
304
|
+
set(payload: EntryKey, value: any): this;
|
|
305
|
+
has(payload: EntryKey): boolean;
|
|
306
|
+
get<T>(payload: EntryKey): T;
|
|
307
|
+
singleton<T>(classConstructor: Constructor<T>): T;
|
|
308
|
+
load(entries: Record<any, any>): void;
|
|
309
|
+
proxy<T = unknown>(key: EntryKey): T;
|
|
310
|
+
keys(): EntryKey[];
|
|
311
|
+
}
|
|
312
|
+
//#endregion
|
|
313
|
+
//#region src/client/facades/container.d.ts
|
|
314
|
+
declare const _default: ContainerService;
|
|
315
|
+
//#endregion
|
|
316
|
+
//#region src/client/facades/fetcher.d.ts
|
|
317
|
+
declare const fetcher: FetchService;
|
|
318
|
+
//#endregion
|
|
319
|
+
//#region src/client/facades/logger.d.ts
|
|
320
|
+
declare const logger: LoggerService;
|
|
321
|
+
//#endregion
|
|
322
|
+
//#region src/client/facades/menu.d.ts
|
|
323
|
+
declare const menu: MenuService;
|
|
324
|
+
//#endregion
|
|
325
|
+
//#region src/client/facades/route.d.ts
|
|
326
|
+
declare const route: RouteLocationNormalizedGeneric;
|
|
327
|
+
//#endregion
|
|
328
|
+
//#region src/client/facades/router.d.ts
|
|
329
|
+
declare const router: Router;
|
|
330
|
+
//#endregion
|
|
331
|
+
//#region src/client/facades/toast.d.ts
|
|
332
|
+
declare const toast: ToastService;
|
|
333
|
+
//#endregion
|
|
334
|
+
//#region src/shared/entities/ModuleManifestEntity.d.ts
|
|
335
|
+
interface ModuleManifestBuildImport {
|
|
336
|
+
from: string;
|
|
337
|
+
to?: string;
|
|
338
|
+
type: 'global_import';
|
|
339
|
+
}
|
|
340
|
+
interface ModuleManifestBuild {
|
|
341
|
+
imports?: ModuleManifestBuildImport[];
|
|
342
|
+
}
|
|
343
|
+
declare const ModuleManifest_base: {
|
|
344
|
+
new (...args: any[]): {
|
|
345
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
346
|
+
};
|
|
347
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
348
|
+
} & Constructor$1;
|
|
349
|
+
declare class ModuleManifest extends ModuleManifest_base {
|
|
350
|
+
id: string;
|
|
351
|
+
name: string;
|
|
352
|
+
version: string;
|
|
353
|
+
description?: string;
|
|
354
|
+
enabled: boolean;
|
|
355
|
+
author?: string;
|
|
356
|
+
dependencies?: Record<string, string>;
|
|
357
|
+
build?: ModuleManifestBuild;
|
|
358
|
+
[key: string]: any;
|
|
359
|
+
}
|
|
360
|
+
//#endregion
|
|
361
|
+
//#region src/shared/entities/ModuleEntity.d.ts
|
|
362
|
+
interface ModuleUpgradeInfo {
|
|
363
|
+
source: 'git' | 'zip';
|
|
364
|
+
[key: string]: any;
|
|
365
|
+
}
|
|
366
|
+
declare const Module_base$1: {
|
|
367
|
+
new (...args: any[]): {
|
|
368
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
369
|
+
};
|
|
370
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
371
|
+
} & Constructor$1 & Constructor$1<{}> & typeof LifecycleHook;
|
|
372
|
+
declare class Module$1 extends Module_base$1 {
|
|
373
|
+
id: string;
|
|
374
|
+
name: string;
|
|
375
|
+
enabled: boolean;
|
|
376
|
+
dependencies: Record<string, any>;
|
|
377
|
+
build: ModuleManifest['build'];
|
|
378
|
+
directory: string;
|
|
379
|
+
upgrade_info?: ModuleUpgradeInfo;
|
|
380
|
+
setData(data: Partial<Module$1 | ModuleManifest>): void;
|
|
381
|
+
}
|
|
382
|
+
//#endregion
|
|
383
|
+
//#region src/client/entities/ModuleEntity.d.ts
|
|
384
|
+
declare const Module_base: typeof Module$1;
|
|
385
|
+
declare class Module extends Module_base {}
|
|
386
|
+
//#endregion
|
|
387
|
+
//#region src/shared/entities/PluginEntity.d.ts
|
|
388
|
+
declare const PluginEntity_base$1: {
|
|
389
|
+
new (...args: any[]): {
|
|
390
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
391
|
+
};
|
|
392
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
393
|
+
} & Constructor$1;
|
|
394
|
+
declare class PluginEntity$1 extends PluginEntity_base$1 {
|
|
395
|
+
id: string;
|
|
396
|
+
name: string;
|
|
397
|
+
version: string;
|
|
398
|
+
enabled: boolean;
|
|
399
|
+
aliases: string[];
|
|
400
|
+
}
|
|
401
|
+
//#endregion
|
|
402
|
+
//#region src/client/entities/PluginEntity.d.ts
|
|
403
|
+
declare const PluginEntity_base: typeof PluginEntity$1;
|
|
404
|
+
declare class PluginEntity extends PluginEntity_base {
|
|
405
|
+
addPagesFolder(imports: any, options?: AutoOptions): void;
|
|
406
|
+
load(): Promise<void>;
|
|
407
|
+
}
|
|
408
|
+
//#endregion
|
|
409
|
+
//#region src/client/utils/autoPages.d.ts
|
|
410
|
+
/** @deprecated Use auto from RouterService instead */
|
|
411
|
+
declare function autoRoutes(imports: Record<string, DefineComponent | (() => Promise<DefineComponent>)>, options?: AutoOptions): RouteRecordRaw[];
|
|
412
|
+
//#endregion
|
|
413
|
+
//#region src/shared/utils/createId.d.ts
|
|
414
|
+
declare function createId(prefix?: string): string;
|
|
415
|
+
//#endregion
|
|
416
|
+
//#region src/client/utils/fetcher.d.ts
|
|
417
|
+
/** @deprecated Use fetcher facade */
|
|
418
|
+
declare const $fetch: FetchService;
|
|
419
|
+
//#endregion
|
|
420
|
+
//#region src/client/utils/file.d.ts
|
|
421
|
+
interface PickOptions {
|
|
422
|
+
accept?: string;
|
|
423
|
+
multiple?: boolean;
|
|
424
|
+
}
|
|
425
|
+
type PickResult<T extends PickOptions> = T['multiple'] extends true ? File[] : File | null;
|
|
426
|
+
declare function pick<T extends PickOptions>(options: T): Promise<PickResult<T>>;
|
|
427
|
+
declare function toUint8Array(file: File): Promise<Uint8Array>;
|
|
428
|
+
interface UploadOptions {
|
|
429
|
+
driveId: string;
|
|
430
|
+
file: File;
|
|
431
|
+
directory?: string;
|
|
432
|
+
}
|
|
433
|
+
declare function upload(options: UploadOptions): Promise<any>;
|
|
434
|
+
declare const $file: {
|
|
435
|
+
pick: typeof pick;
|
|
436
|
+
upload: typeof upload;
|
|
437
|
+
toUint8Array: typeof toUint8Array;
|
|
438
|
+
};
|
|
439
|
+
//#endregion
|
|
440
|
+
//#region src/client/utils/toast.d.ts
|
|
441
|
+
declare const $toast: ((message: string | (() => string | _$vue.Component) | _$vue.Component, data?: _$vue_sonner0.ExternalToast) => string | number) & {
|
|
442
|
+
success: (message: string | (() => string | _$vue.Component) | _$vue.Component, data?: _$vue_sonner0.ExternalToast) => string | number;
|
|
443
|
+
info: (message: string | (() => string | _$vue.Component) | _$vue.Component, data?: _$vue_sonner0.ExternalToast) => string | number;
|
|
444
|
+
warning: (message: string | (() => string | _$vue.Component) | _$vue.Component, data?: _$vue_sonner0.ExternalToast) => string | number;
|
|
445
|
+
error: (message: string | (() => string | _$vue.Component) | _$vue.Component, data?: _$vue_sonner0.ExternalToast) => string | number;
|
|
446
|
+
custom: (component: _$vue.Component, data?: _$vue_sonner0.ExternalToast) => string | number;
|
|
447
|
+
message: (message: string | (() => string | _$vue.Component) | _$vue.Component, data?: _$vue_sonner0.ExternalToast) => string | number;
|
|
448
|
+
promise: <ToastData>(promise: Promise<ToastData> | (() => Promise<ToastData>), data?: ({
|
|
449
|
+
id?: number | string | undefined;
|
|
450
|
+
toasterId?: string | undefined;
|
|
451
|
+
icon?: _$vue.Component | undefined;
|
|
452
|
+
component?: _$vue.Component | undefined;
|
|
453
|
+
componentProps?: any;
|
|
454
|
+
richColors?: boolean | undefined;
|
|
455
|
+
invert?: boolean | undefined;
|
|
456
|
+
closeButton?: boolean | undefined;
|
|
457
|
+
dismissible?: boolean | undefined;
|
|
458
|
+
duration?: number | undefined;
|
|
459
|
+
important?: boolean | undefined;
|
|
460
|
+
action?: (_$vue_sonner0.Action | _$vue.Component) | undefined;
|
|
461
|
+
cancel?: (_$vue_sonner0.Action | _$vue.Component) | undefined;
|
|
462
|
+
onDismiss?: ((toast: _$vue_sonner0.ToastT) => void) | undefined;
|
|
463
|
+
onAutoClose?: ((toast: _$vue_sonner0.ToastT) => void) | undefined;
|
|
464
|
+
cancelButtonStyle?: _$vue.CSSProperties | undefined;
|
|
465
|
+
actionButtonStyle?: _$vue.CSSProperties | undefined;
|
|
466
|
+
style?: _$vue.CSSProperties | undefined;
|
|
467
|
+
unstyled?: boolean | undefined;
|
|
468
|
+
class?: string | undefined;
|
|
469
|
+
classes?: _$vue_sonner0.ToastClasses | undefined;
|
|
470
|
+
descriptionClass?: string | undefined;
|
|
471
|
+
position?: ("top-left" | "top-right" | "bottom-left" | "bottom-right" | "top-center" | "bottom-center") | undefined;
|
|
472
|
+
closeButtonPosition?: ("top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
|
|
473
|
+
testId?: string | undefined;
|
|
474
|
+
} & {
|
|
475
|
+
loading?: string | _$vue.Component;
|
|
476
|
+
success?: (string | _$vue.Component | ((data: ToastData) => _$vue.Component | string | Promise<_$vue.Component | string>)) | (_$vue_sonner0.PromiseIExtendedResult | ((data: ToastData) => _$vue_sonner0.PromiseIExtendedResult | Promise<_$vue_sonner0.PromiseIExtendedResult>)) | undefined;
|
|
477
|
+
error?: (string | _$vue.Component | ((data: any) => _$vue.Component | string | Promise<_$vue.Component | string>)) | (_$vue_sonner0.PromiseIExtendedResult | ((data: any) => _$vue_sonner0.PromiseIExtendedResult | Promise<_$vue_sonner0.PromiseIExtendedResult>));
|
|
478
|
+
description?: string | _$vue.Component | ((data: any) => _$vue.Component | string | Promise<_$vue.Component | string>);
|
|
479
|
+
finally?: () => void | Promise<void>;
|
|
480
|
+
}) | undefined) => (string & {
|
|
481
|
+
unwrap: () => Promise<ToastData>;
|
|
482
|
+
}) | (number & {
|
|
483
|
+
unwrap: () => Promise<ToastData>;
|
|
484
|
+
}) | {
|
|
485
|
+
unwrap: () => Promise<ToastData>;
|
|
486
|
+
} | undefined;
|
|
487
|
+
dismiss: (id?: number | string) => string | number | undefined;
|
|
488
|
+
loading: (message: string | (() => string | _$vue.Component) | _$vue.Component, data?: _$vue_sonner0.ExternalToast) => string | number;
|
|
489
|
+
} & {
|
|
490
|
+
getHistory: () => (_$vue_sonner0.ToastT<_$vue.Component> | _$vue_sonner0.ToastToDismiss)[];
|
|
491
|
+
getToasts: () => (_$vue_sonner0.ToastT<_$vue.Component> | _$vue_sonner0.ToastToDismiss)[];
|
|
492
|
+
};
|
|
493
|
+
//#endregion
|
|
494
|
+
//#region src/client/guards/authGuard.d.ts
|
|
495
|
+
interface AuthGuardOptions {
|
|
496
|
+
redirect: string;
|
|
497
|
+
exclude?: string[];
|
|
498
|
+
}
|
|
499
|
+
declare function createAuthGuard(options: AuthGuardOptions): NavigationGuard;
|
|
500
|
+
declare const authGuard: NavigationGuard;
|
|
501
|
+
//#endregion
|
|
502
|
+
//#region src/client/guards/guestGuard.d.ts
|
|
503
|
+
interface GuestGuardOptions {
|
|
504
|
+
redirect: string;
|
|
505
|
+
}
|
|
506
|
+
declare function createGuestGuard(options: GuestGuardOptions): () => string | undefined;
|
|
507
|
+
declare const guestGuard: () => string | undefined;
|
|
508
|
+
//#endregion
|
|
509
|
+
//#region src/client/guards/setupGuard.d.ts
|
|
510
|
+
declare const setupGuard: NavigationGuard;
|
|
511
|
+
//#endregion
|
|
512
|
+
export { $fetch, $file, $toast, AuthGuardOptions, AuthService, AutoOptions, FetchBrowserService, FetchNodeService, FetchOptions, FetchService, GuestGuardOptions, LifecycleService, ListFilter, MenuItem as MenuItemEntity, MenuService, Module as ModuleEntity, PluginEntity, Router, ToastService, acl, auth, authGuard, auto, autoRoutes, config, _default as container, createAuthGuard, createGuestGuard, createId, createRouter, fetcher, guestGuard, logger, menu, route, router, setupGuard, toast };
|
|
513
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5tdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYXJlZC91dGlscy9jb21wb3NlLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL1Blcm1pc3Npb25FbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvUm9sZUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Vc2VyRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0F1dGhTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0ZldGNoU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9zZXJ2aWNlcy9GZXRjaEJyb3dzZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0ZldGNoTm9kZVNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvTG9nZ2VyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9MaWZlY3ljbGVIb29rLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL0xpZmVjeWNsZVNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvc2VydmljZXMvTGlmZWN5Y2xlU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9lbnRpdGllcy9NZW51SXRlbUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9zZXJ2aWNlcy9NZW51U2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9zZXJ2aWNlcy9Sb3V0ZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL1RvYXN0U2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9BY2xFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9hY2wuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9hdXRoLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL0NvbmZpZ1NlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9jb25maWcuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvQ29udGFpbmVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL2NvbnRhaW5lci5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL2ZldGNoZXIuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9sb2dnZXIuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9tZW51LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvcm91dGUuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9yb3V0ZXIuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy90b2FzdC5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Nb2R1bGVNYW5pZmVzdEVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Nb2R1bGVFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZW50aXRpZXMvTW9kdWxlRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL1BsdWdpbkVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9lbnRpdGllcy9QbHVnaW5FbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvdXRpbHMvYXV0b1BhZ2VzLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3V0aWxzL2NyZWF0ZUlkLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3V0aWxzL2ZldGNoZXIuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvdXRpbHMvZmlsZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC91dGlscy90b2FzdC5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9ndWFyZHMvYXV0aEd1YXJkLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2d1YXJkcy9ndWVzdEd1YXJkLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2d1YXJkcy9zZXR1cEd1YXJkLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVbmlvblRvSW50ZXJzZWN0aW9uIH0gZnJvbSAnLi90eXBpbmcudHMnO1xuZXhwb3J0IHR5cGUgQW55Q2xhc3MgPSBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk7XG5leHBvcnQgdHlwZSBDb25zdHJ1Y3RvcjxUID0ge30+ID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVDtcbmV4cG9ydCB0eXBlIE1peGluPFQ+ID0gKGJhc2U6IENvbnN0cnVjdG9yKSA9PiBDb25zdHJ1Y3RvcjxUPjtcbi8qKlxuICogQ29tcG9zZXMgbXVsdGlwbGUgbWl4aW5zIGludG8gYSBzaW5nbGUgY2xhc3MgdGhhdCBjYW4gYmUgZXh0ZW5kZWQuXG4gKiBBbGxvd3MgZm9yIG11bHRpcGxlIGluaGVyaXRhbmNlLWxpa2UgYmVoYXZpb3IgYnkgYXBwbHlpbmcgbWl4aW5zIHNlcXVlbnRpYWxseS5cbiAqXG4gKiBAcGFyYW0gbWl4aW5zIC0gQXJyYXkgb2YgbWl4aW4gZnVuY3Rpb25zIHRvIGNvbXBvc2VcbiAqIEByZXR1cm5zIEEgY2xhc3MgY29uc3RydWN0b3IgdGhhdCBpbmNsdWRlcyBhbGwgbWl4aW4gZnVuY3Rpb25hbGl0eVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBVc2VyIGV4dGVuZHMgY29tcG9zZShUaW1lc3RhbXAsIFNvZnREZWxldGUpIHtcbiAqICAgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZykge1xuICogICAgIHN1cGVyKClcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNvbXBvc2U8TSBleHRlbmRzIEFycmF5PChiYXNlOiBDb25zdHJ1Y3Rvcjxhbnk+KSA9PiBDb25zdHJ1Y3Rvcjxhbnk+Pj4oLi4ubWl4aW5zOiBNKTogVW5pb25Ub0ludGVyc2VjdGlvbjxSZXR1cm5UeXBlPE1bbnVtYmVyXT4+O1xuLyoqXG4gKiBBbHRlcm5hdGl2ZSBjb21wb3NlIGZ1bmN0aW9uIHRoYXQgc3RhcnRzIHdpdGggYSBiYXNlIGNsYXNzXG4gKlxuICogQHBhcmFtIGJhc2VDbGFzcyAtIFRoZSBiYXNlIGNsYXNzIHRvIHN0YXJ0IHdpdGhcbiAqIEBwYXJhbSBtaXhpbnMgLSBBcnJheSBvZiBtaXhpbiBmdW5jdGlvbnMgdG8gYXBwbHlcbiAqIEByZXR1cm5zIEEgY2xhc3MgY29uc3RydWN0b3IgdGhhdCBleHRlbmRzIHRoZSBiYXNlIGNsYXNzIHdpdGggYWxsIG1peGluIGZ1bmN0aW9uYWxpdHlcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgVXNlciBleHRlbmRzIGNvbXBvc2VXaXRoKEJhc2VFbnRpdHksIFRpbWVzdGFtcCwgU29mdERlbGV0ZSkge1xuICogICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nKSB7XG4gKiAgICAgc3VwZXIoKVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY29tcG9zZVdpdGg8VEJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3RvciwgTSBleHRlbmRzIEFycmF5PChiYXNlOiBDb25zdHJ1Y3RvcikgPT4gQ29uc3RydWN0b3I8YW55Pj4+KGJhc2VDbGFzczogVEJhc2UsIC4uLm1peGluczogTSk6IFRCYXNlICYgVW5pb25Ub0ludGVyc2VjdGlvbjxSZXR1cm5UeXBlPE1bbnVtYmVyXT4+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gbWl4aW48VEJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4oU291cmNlOiBUQmFzZSk6IDxUVGFyZ2V0IGV4dGVuZHMgQ29uc3RydWN0b3I+KFRhcmdldDogVFRhcmdldCkgPT4gVFRhcmdldCAmIFRCYXNlO1xuIiwiZGVjbGFyZSBjb25zdCBQZXJtaXNzaW9uRW50aXR5X2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVybWlzc2lvbkVudGl0eSBleHRlbmRzIFBlcm1pc3Npb25FbnRpdHlfYmFzZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gICAgb3JpZ2luOiBzdHJpbmc7XG4gICAgc3ViamVjdDogc3RyaW5nO1xuICAgIGFjdGlvbjogc3RyaW5nO1xuICAgIGNvbmRpdGlvbnM6IHN0cmluZyB8IG51bGwgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGdldCBlZGl0YWJsZSgpOiBib29sZWFuO1xuICAgIGdldCBwYXJzZWRDb25kaXRpb25zKCk6IGFueTtcbn1cbmV4cG9ydCB7fTtcbiIsImRlY2xhcmUgY29uc3QgUm9sZV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvciAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBjcmVhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgICAgICB1cGRhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgIH07XG59ICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGRlbGV0ZWRfYXQ6IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm9sZSBleHRlbmRzIFJvbGVfYmFzZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSBQZXJtaXNzaW9uIGZyb20gJy4vUGVybWlzc2lvbkVudGl0eS50cyc7XG5pbXBvcnQgdHlwZSBSb2xlIGZyb20gJy4vUm9sZUVudGl0eS50cyc7XG5kZWNsYXJlIGNvbnN0IFVzZXJFbnRpdHlfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3IgJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgY3JlYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgICAgICAgdXBkYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgICB9O1xufSAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBkZWxldGVkX2F0OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVzZXJFbnRpdHkgZXh0ZW5kcyBVc2VyRW50aXR5X2Jhc2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICBwYXNzd29yZD86IHN0cmluZztcbiAgICB2ZXJpZmllZF9hdD86IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICAgIHBlcm1pc3Npb25zPzogUGVybWlzc2lvbltdO1xuICAgIHJvbGVzPzogUm9sZVtdO1xuICAgIGdldCBpbml0aWFscygpOiBzdHJpbmc7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgVXNlciBmcm9tICcjc2hhcmVkL2VudGl0aWVzL1VzZXJFbnRpdHkudHMnO1xuaW50ZXJmYWNlIExvZ291dE9wdGlvbnMge1xuICAgIHJlZGlyZWN0Pzogc3RyaW5nO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICB1c2VyOiBVc2VyIHwgbnVsbDtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogUGFydGlhbDxBdXRoU2VydmljZT4pO1xuICAgIGxvZ291dChvcHRpb25zPzogTG9nb3V0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG59XG5leHBvcnQge307XG4iLCJleHBvcnQgaW50ZXJmYWNlIEZldGNoT3B0aW9ucyBleHRlbmRzIFJlcXVlc3RJbml0IHtcbiAgICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZXRjaFNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXJyb3IocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPjtcbiAgICBwcm90ZWN0ZWQgYnVpbGRVcmwodXJsOiBzdHJpbmcsIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgYnVpbGRSZXF1ZXN0SW5pdChvcHRpb25zOiBGZXRjaE9wdGlvbnMpOiBSZXF1ZXN0SW5pdDtcbiAgICBwcm90ZWN0ZWQgcGFyc2VSZXNwb25zZTxUPihyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPFQ+O1xuICAgIGZldGNoPFQ+KF91cmw6IHN0cmluZywgX29wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xuICAgIHRyeTxUID0gYW55Pih1cmw6IHN0cmluZywgb3B0aW9ucz86IEZldGNoT3B0aW9ucyk6IFByb21pc2U8W0Vycm9yLCBudWxsXSB8IFtudWxsLCBBd2FpdGVkPFQ+XT47XG4gICAgZ2V0PFQgPSBhbnk+KHVybDogc3RyaW5nLCBvcHRpb25zPzogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgICBwb3N0PFQgPSBhbnk+KHVybDogc3RyaW5nLCBvcHRpb25zPzogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgICBwdXQ8VCA9IGFueT4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xuICAgIGRlbGV0ZTxUID0gYW55Pih1cmw6IHN0cmluZywgb3B0aW9ucz86IEZldGNoT3B0aW9ucyk6IFByb21pc2U8VD47XG59XG4iLCJpbXBvcnQgdHlwZSB7IEZldGNoT3B0aW9ucyB9IGZyb20gJy4vRmV0Y2hTZXJ2aWNlLnRzJztcbmltcG9ydCBGZXRjaFNlcnZpY2UgZnJvbSAnLi9GZXRjaFNlcnZpY2UudHMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmV0Y2hCcm93c2VyU2VydmljZSBleHRlbmRzIEZldGNoU2VydmljZSB7XG4gICAgZmV0Y2g8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xufVxuIiwiaW1wb3J0IHR5cGUgeyBGZXRjaE9wdGlvbnMgfSBmcm9tICcuL0ZldGNoU2VydmljZS50cyc7XG5pbXBvcnQgRmV0Y2hTZXJ2aWNlIGZyb20gJy4vRmV0Y2hTZXJ2aWNlLnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZldGNoTm9kZVNlcnZpY2UgZXh0ZW5kcyBGZXRjaFNlcnZpY2Uge1xuICAgIGZldGNoPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgICBwcm90ZWN0ZWQgZmV0Y2hFeHRlcm5hbDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IEZldGNoT3B0aW9ucyk6IFByb21pc2U8VD47XG4gICAgcHJvdGVjdGVkIGZldGNoSW50ZXJuYWw8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGluZm8obWVzc2FnZTogc3RyaW5nLCBtZXRhPzogYW55KTogdm9pZDtcbiAgICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIG1ldGE/OiBhbnkpOiB2b2lkO1xuICAgIHdhcm4obWVzc2FnZTogc3RyaW5nLCBtZXRhPzogYW55KTogdm9pZDtcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIG1ldGE/OiBhbnkpOiB2b2lkO1xuICAgIGNoaWxkKG9wdGlvbnM6IGFueSk6IExvZ2dlclNlcnZpY2U7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBMaWZlY3ljbGVIb29rIHtcbiAgICBob29rX2lkOiBzdHJpbmc7XG4gICAgaG9va19hbGlhc2VzPzogc3RyaW5nW107XG4gICAgb3JkZXI/OiBudW1iZXI7XG4gICAgc3ViaG9va3M/OiBMaWZlY3ljbGVIb29rW107XG4gICAgcmVnaXN0ZXIoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBsb2FkKCk6IFByb21pc2U8dm9pZD47XG4gICAgYm9vdCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHNodXRkb3duKCk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIEBkZXByZWNhdGVkIFVzZSByZWdpc3RlciAqL1xuICAgIG9uUmVnaXN0ZXIoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIGxvYWQgKi9cbiAgICBvbkxvYWQoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIGJvb3QgKi9cbiAgICBvbkJvb3QoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIHNodXRkb3duICovXG4gICAgb25TaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+O1xufVxuIiwiaW1wb3J0IExvZ2dlclNlcnZpY2UgZnJvbSAnLi9Mb2dnZXJTZXJ2aWNlLnRzJztcbmltcG9ydCB0eXBlIExpZmVjeWNsZUhvb2sgZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9MaWZlY3ljbGVIb29rLnRzJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0b3IgfSBmcm9tICcjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHMnO1xudHlwZSBMaWZlY3ljbGVNZXRob2QgPSAncmVnaXN0ZXInIHwgJ2xvYWQnIHwgJ2Jvb3QnIHwgJ3NodXRkb3duJztcbmludGVyZmFjZSBMaXN0T3B0aW9ucyB7XG4gICAgaW5jbHVkZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIGV4Y2x1ZGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlU2VydmljZU9wdGlvbnMge1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICBob29rcz86IE1hcDxzdHJpbmcsIExpZmVjeWNsZUhvb2s+O1xuICAgIGxvZ2dlcj86IExvZ2dlclNlcnZpY2U7XG4gICAgb25FcnJvcj86IChlcnJvcjogRXJyb3IsIGNvbnRleHQ6IHtcbiAgICAgICAgaG9va0lkOiBzdHJpbmc7XG4gICAgICAgIG1ldGhvZDogTGlmZWN5Y2xlTWV0aG9kO1xuICAgIH0pID0+IHZvaWQ7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaWZlY3ljbGVTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgaG9va3M6IE1hcDxzdHJpbmcsIExpZmVjeWNsZUhvb2s+O1xuICAgIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogTGlmZWN5Y2xlU2VydmljZU9wdGlvbnMpO1xuICAgIG9uRXJyb3IoZXJyb3I6IEVycm9yLCBjb250ZXh0OiB7XG4gICAgICAgIGhvb2tJZDogc3RyaW5nO1xuICAgICAgICBtZXRob2Q6IExpZmVjeWNsZU1ldGhvZDtcbiAgICB9KTogdm9pZDtcbiAgICBtYXBBbGlhc2VzKGFyZ3M6IHN0cmluZ1tdKTogc3RyaW5nW107XG4gICAgbGlzdChvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBMaWZlY3ljbGVIb29rW107XG4gICAgYWRkKC4uLnBheWxvYWQ6IChMaWZlY3ljbGVIb29rIHwgQ29uc3RydWN0b3I8TGlmZWN5Y2xlSG9vaz4pW10pOiB2b2lkO1xuICAgIGVtaXRNZXRob2QobWV0aG9kOiBMaWZlY3ljbGVNZXRob2QsIG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgZW1pdChwYXlsb2FkOiBMaWZlY3ljbGVNZXRob2QgfCBMaWZlY3ljbGVNZXRob2RbXSwgb3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICByZWdpc3RlcihvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxvYWQob3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBib290KG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgc2h1dGRvd24ob3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBjbGVhcigpOiB2b2lkO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IEJhc2VMaWZlY3ljbGVTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvTGlmZWN5Y2xlU2VydmljZS50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaWZlY3ljbGVTZXJ2aWNlIGV4dGVuZHMgQmFzZUxpZmVjeWNsZVNlcnZpY2Uge1xuICAgIGFkZEltcG9ydHMoaW1wb3J0czogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQ7XG59XG4iLCJkZWNsYXJlIGNvbnN0IE1lbnVJdGVtX2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWVudUl0ZW0gZXh0ZW5kcyBNZW51SXRlbV9iYXNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbGF5b3V0OiBzdHJpbmc7XG4gICAgdG8/OiBzdHJpbmc7XG4gICAgdGFyZ2V0PzogJ19ibGFuaycgfCAnX3NlbGYnIHwgJ19wYXJlbnQnIHwgJ190b3AnO1xuICAgIGdyb3VwPzogc3RyaW5nO1xuICAgIG9yZGVyPzogbnVtYmVyO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgcGFyZW50Pzogc3RyaW5nO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IE1lbnVJdGVtIGZyb20gJyNjbGllbnQvZW50aXRpZXMvTWVudUl0ZW1FbnRpdHkudHMnO1xuZXhwb3J0IGludGVyZmFjZSBMaXN0RmlsdGVyIHtcbiAgICBsYXlvdXQ/OiBzdHJpbmc7XG4gICAgZ3JvdXA/OiBzdHJpbmc7XG4gICAgcGFyZW50Pzogc3RyaW5nO1xuICAgIGFsbG93ZWQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWVudVNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBpdGVtczogTWFwPHN0cmluZywgTWVudUl0ZW0+O1xuICAgIGFkZCguLi5pdGVtOiBPbWl0PFBhcnRpYWw8TWVudUl0ZW0+LCAnbWVyZ2UnIHwgJ2Zyb20nPltdKTogdm9pZDtcbiAgICByZW1vdmUoaWQ6IE1lbnVJdGVtWydpZCddKTogdm9pZDtcbiAgICBsaXN0KGZpbHRlcj86IExpc3RGaWx0ZXIpOiBNZW51SXRlbVtdO1xuICAgIGNsZWFyKCk6IHZvaWQ7XG59XG4iLCJpbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25HdWFyZCwgUm91dGVyIGFzIFZ1ZVJvdXRlciB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZVJlY29yZFJhdyB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xuaW1wb3J0IHR5cGUgeyBEZWZpbmVDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZXIgZXh0ZW5kcyBWdWVSb3V0ZXIge1xuICAgIGF1dG86IHR5cGVvZiBhdXRvO1xufVxuZXhwb3J0IGludGVyZmFjZSBBdXRvT3B0aW9ucyB7XG4gICAgZ3VhcmRzPzogTmF2aWdhdGlvbkd1YXJkW10gfCAoKHJlY29yZDogUm91dGVSZWNvcmRSYXcpID0+IE5hdmlnYXRpb25HdWFyZFtdKTtcbiAgICBzdHJpcD86IChzdHJpbmcgfCBSZWdFeHApW107XG4gICAgZXhjbHVkZT86IChzdHJpbmcgfCBSZWdFeHApW107XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHJlZmluZT86IChyZWNvcmRzOiBSb3V0ZVJlY29yZFJhd1tdKSA9PiBSb3V0ZVJlY29yZFJhd1tdO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYXV0byhpbXBvcnRzOiBSZWNvcmQ8c3RyaW5nLCBEZWZpbmVDb21wb25lbnQgfCAoKCkgPT4gUHJvbWlzZTxEZWZpbmVDb21wb25lbnQ+KT4sIG9wdGlvbnM/OiBBdXRvT3B0aW9ucyk6IFJvdXRlUmVjb3JkUmF3W107XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVSb3V0ZXIoKTogUm91dGVyO1xuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9hc3RTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZDtcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZDtcbn1cbiIsImltcG9ydCB7IGRlZmluZUFiaWxpdHkgfSBmcm9tICdAY2FzbC9hYmlsaXR5JztcbmltcG9ydCBQZXJtaXNzaW9uIGZyb20gJy4vUGVybWlzc2lvbkVudGl0eS50cyc7XG5pbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWNsRW50aXR5IHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgYWJpbGl0eTogUmV0dXJuVHlwZTx0eXBlb2YgZGVmaW5lQWJpbGl0eT47XG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXTtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8QWNsRW50aXR5Pik7XG4gICAgY2FuKGFjdGlvbjogc3RyaW5nLCBzdWJqZWN0OiBhbnksIG9iamVjdD86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBib29sZWFuO1xuICAgIGNhbm5vdChhY3Rpb246IHN0cmluZywgc3ViamVjdDogYW55LCBvYmplY3Q/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogYm9vbGVhbjtcbiAgICBzdWJqZWN0KHN1YmplY3Q6IHN0cmluZywgb2JqZWN0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUmVjb3JkPHN0cmluZywgYW55PiAmIGltcG9ydChcIkBjYXNsL2FiaWxpdHlcIikuRm9yY2VkU3ViamVjdDxzdHJpbmc+O1xufVxuIiwiaW1wb3J0IEFjbEVudGl0eSBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0FjbEVudGl0eS50cyc7XG5kZWNsYXJlIGNvbnN0IGFjbDogQWNsRW50aXR5O1xuZXhwb3J0IGRlZmF1bHQgYWNsO1xuIiwiaW1wb3J0IEF1dGhTZXJ2aWNlIGZyb20gJyNjbGllbnQvc2VydmljZXMvQXV0aFNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBhdXRoOiBBdXRoU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IGF1dGg7XG4iLCJpbnRlcmZhY2UgRW50cnkge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBhbnk7XG4gICAgc291cmNlOiBzdHJpbmc7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25maWdTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgZW50cmllczogTWFwPHN0cmluZywgRW50cnk+O1xuICAgIGNvbnN0cnVjdG9yKCk7XG4gICAgbGlzdCgpOiBFbnRyeVtdO1xuICAgIHBhcnNlVmFsdWUodmFsdWU6IGFueSk6IGFueTtcbiAgICBsb2FkRnJvbVJlY29yZChyZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4sIHNvdXJjZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgbG9hZEZyb21FbnRyaWVzKGVudHJpZXM6IFtzdHJpbmcsIGFueV1bXSwgc291cmNlPzogc3RyaW5nKTogdm9pZDtcbiAgICB0b1JlY29yZCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW47XG4gICAgZ2V0PFQgPSBhbnkgfCB1bmRlZmluZWQ+KGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBhbnkpOiBUO1xuICAgIGdldE9uZTxUID0gYW55IHwgdW5kZWZpbmVkPihrZXlzOiBzdHJpbmdbXSwgZGVmYXVsdFZhbHVlPzogYW55KTogVDtcbiAgICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHNvdXJjZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgdW5zZXQoa2V5OiBzdHJpbmcpOiB2b2lkO1xuICAgIGNsZWFyKCk6IHZvaWQ7XG4gICAgZHVtcCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IENvbmZpZ1NlcnZpY2UgZnJvbSAnI3NoYXJlZC9zZXJ2aWNlcy9Db25maWdTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3QgY29uZmlnOiBDb25maWdTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgY29uZmlnO1xuIiwidHlwZSBDb25zdHJ1Y3RvcjxUID0gb2JqZWN0PiA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQ7XG50eXBlIEVudHJ5S2V5ID0gc3RyaW5nIHwgc3ltYm9sIHwgQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250YWluZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGVudHJpZXM7XG4gICAgbG9hZEZyb21SZWNvcmQocmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZDtcbiAgICB0b1JlY29yZCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHByaXZhdGUgZ2V0S2V5O1xuICAgIHNldChwYXlsb2FkOiBFbnRyeUtleSwgdmFsdWU6IGFueSk6IHRoaXM7XG4gICAgaGFzKHBheWxvYWQ6IEVudHJ5S2V5KTogYm9vbGVhbjtcbiAgICBnZXQ8VD4ocGF5bG9hZDogRW50cnlLZXkpOiBUO1xuICAgIHNpbmdsZXRvbjxUPihjbGFzc0NvbnN0cnVjdG9yOiBDb25zdHJ1Y3RvcjxUPik6IFQ7XG4gICAgbG9hZChlbnRyaWVzOiBSZWNvcmQ8YW55LCBhbnk+KTogdm9pZDtcbiAgICBwcm94eTxUID0gdW5rbm93bj4oa2V5OiBFbnRyeUtleSk6IFQ7XG4gICAga2V5cygpOiBFbnRyeUtleVtdO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IENvbnRhaW5lclNlcnZpY2UgZnJvbSBcIiNzaGFyZWQvc2VydmljZXMvQ29udGFpbmVyU2VydmljZS50c1wiO1xuZGVjbGFyZSBjb25zdCBfZGVmYXVsdDogQ29udGFpbmVyU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IF9kZWZhdWx0O1xuIiwiaW1wb3J0IEZldGNoU2VydmljZSBmcm9tICcjY2xpZW50L3NlcnZpY2VzL0ZldGNoU2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IGZldGNoZXI6IEZldGNoU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IGZldGNoZXI7XG4iLCJpbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iLCJpbXBvcnQgTWVudVNlcnZpY2UgZnJvbSAnI2NsaWVudC9zZXJ2aWNlcy9NZW51U2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IG1lbnU6IE1lbnVTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgbWVudTtcbiIsImltcG9ydCB0eXBlIHsgUm91dGVMb2NhdGlvbk5vcm1hbGl6ZWRHZW5lcmljIH0gZnJvbSAndnVlLXJvdXRlcic7XG5kZWNsYXJlIGNvbnN0IHJvdXRlOiBSb3V0ZUxvY2F0aW9uTm9ybWFsaXplZEdlbmVyaWM7XG5leHBvcnQgZGVmYXVsdCByb3V0ZTtcbiIsImltcG9ydCB0eXBlIHsgUm91dGVyIH0gZnJvbSAnI2NsaWVudC9zZXJ2aWNlcy9Sb3V0ZXJTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3Qgcm91dGVyOiBSb3V0ZXI7XG5leHBvcnQgZGVmYXVsdCByb3V0ZXI7XG4iLCJpbXBvcnQgVG9hc3RTZXJ2aWNlIGZyb20gJyNjbGllbnQvc2VydmljZXMvVG9hc3RTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3QgdG9hc3Q6IFRvYXN0U2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IHRvYXN0O1xuIiwiZXhwb3J0IGludGVyZmFjZSBNb2R1bGVNYW5pZmVzdEJ1aWxkSW1wb3J0IHtcbiAgICBmcm9tOiBzdHJpbmc7XG4gICAgdG8/OiBzdHJpbmc7XG4gICAgdHlwZTogJ2dsb2JhbF9pbXBvcnQnO1xufVxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVNYW5pZmVzdEJ1aWxkIHtcbiAgICBpbXBvcnRzPzogTW9kdWxlTWFuaWZlc3RCdWlsZEltcG9ydFtdO1xufVxuZGVjbGFyZSBjb25zdCBNb2R1bGVNYW5pZmVzdF9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvcjtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZHVsZU1hbmlmZXN0IGV4dGVuZHMgTW9kdWxlTWFuaWZlc3RfYmFzZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgYXV0aG9yPzogc3RyaW5nO1xuICAgIGRlcGVuZGVuY2llcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgYnVpbGQ/OiBNb2R1bGVNYW5pZmVzdEJ1aWxkO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIE1vZHVsZU1hbmlmZXN0IGZyb20gJy4vTW9kdWxlTWFuaWZlc3RFbnRpdHkudHMnO1xuaW1wb3J0IExpZmVjeWNsZUhvb2sgZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9MaWZlY3ljbGVIb29rLnRzJztcbmludGVyZmFjZSBNb2R1bGVVcGdyYWRlSW5mbyB7XG4gICAgc291cmNlOiAnZ2l0JyB8ICd6aXAnO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbmRlY2xhcmUgY29uc3QgTW9kdWxlX2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yPHt9PiAmIHR5cGVvZiBMaWZlY3ljbGVIb29rO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kdWxlIGV4dGVuZHMgTW9kdWxlX2Jhc2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgZGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGJ1aWxkOiBNb2R1bGVNYW5pZmVzdFsnYnVpbGQnXTtcbiAgICBkaXJlY3Rvcnk6IHN0cmluZztcbiAgICB1cGdyYWRlX2luZm8/OiBNb2R1bGVVcGdyYWRlSW5mbztcbiAgICBzZXREYXRhKGRhdGE6IFBhcnRpYWw8TW9kdWxlIHwgTW9kdWxlTWFuaWZlc3Q+KTogdm9pZDtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCBCYXNlIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvTW9kdWxlRW50aXR5LnRzJztcbmRlY2xhcmUgY29uc3QgTW9kdWxlX2Jhc2U6IHR5cGVvZiBCYXNlO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kdWxlIGV4dGVuZHMgTW9kdWxlX2Jhc2Uge1xufVxuZXhwb3J0IHt9O1xuIiwiZGVjbGFyZSBjb25zdCBQbHVnaW5FbnRpdHlfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbHVnaW5FbnRpdHkgZXh0ZW5kcyBQbHVnaW5FbnRpdHlfYmFzZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgYWxpYXNlczogc3RyaW5nW107XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgQmFzZSBmcm9tICcjc2hhcmVkL2VudGl0aWVzL1BsdWdpbkVudGl0eS50cyc7XG5pbXBvcnQgdHlwZSB7IEF1dG9PcHRpb25zIH0gZnJvbSAnI2NsaWVudC9zZXJ2aWNlcy9Sb3V0ZXJTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3QgUGx1Z2luRW50aXR5X2Jhc2U6IHR5cGVvZiBCYXNlO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luRW50aXR5IGV4dGVuZHMgUGx1Z2luRW50aXR5X2Jhc2Uge1xuICAgIGFkZFBhZ2VzRm9sZGVyKGltcG9ydHM6IGFueSwgb3B0aW9ucz86IEF1dG9PcHRpb25zKTogdm9pZDtcbiAgICBsb2FkKCk6IFByb21pc2U8dm9pZD47XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSB7IEF1dG9PcHRpb25zIH0gZnJvbSAnI2NsaWVudC9zZXJ2aWNlcy9Sb3V0ZXJTZXJ2aWNlLnRzJztcbmltcG9ydCB0eXBlIHsgRGVmaW5lQ29tcG9uZW50IH0gZnJvbSAndnVlJztcbmltcG9ydCB0eXBlIHsgUm91dGVSZWNvcmRSYXcgfSBmcm9tICd2dWUtcm91dGVyJztcbi8qKiBAZGVwcmVjYXRlZCBVc2UgYXV0byBmcm9tIFJvdXRlclNlcnZpY2UgaW5zdGVhZCAqL1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYXV0b1JvdXRlcyhpbXBvcnRzOiBSZWNvcmQ8c3RyaW5nLCBEZWZpbmVDb21wb25lbnQgfCAoKCkgPT4gUHJvbWlzZTxEZWZpbmVDb21wb25lbnQ+KT4sIG9wdGlvbnM/OiBBdXRvT3B0aW9ucyk6IFJvdXRlUmVjb3JkUmF3W107XG4iLCJleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVJZChwcmVmaXg/OiBzdHJpbmcpOiBzdHJpbmc7XG4iLCIvKiogQGRlcHJlY2F0ZWQgVXNlIGZldGNoZXIgZmFjYWRlICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCAkZmV0Y2g6IGltcG9ydChcIi4uXCIpLkZldGNoU2VydmljZTtcbiIsImludGVyZmFjZSBQaWNrT3B0aW9ucyB7XG4gICAgYWNjZXB0Pzogc3RyaW5nO1xuICAgIG11bHRpcGxlPzogYm9vbGVhbjtcbn1cbnR5cGUgUGlja1Jlc3VsdDxUIGV4dGVuZHMgUGlja09wdGlvbnM+ID0gVFsnbXVsdGlwbGUnXSBleHRlbmRzIHRydWUgPyBGaWxlW10gOiBGaWxlIHwgbnVsbDtcbmRlY2xhcmUgZnVuY3Rpb24gcGljazxUIGV4dGVuZHMgUGlja09wdGlvbnM+KG9wdGlvbnM6IFQpOiBQcm9taXNlPFBpY2tSZXN1bHQ8VD4+O1xuZGVjbGFyZSBmdW5jdGlvbiB0b1VpbnQ4QXJyYXkoZmlsZTogRmlsZSk6IFByb21pc2U8VWludDhBcnJheT47XG5pbnRlcmZhY2UgVXBsb2FkT3B0aW9ucyB7XG4gICAgZHJpdmVJZDogc3RyaW5nO1xuICAgIGZpbGU6IEZpbGU7XG4gICAgZGlyZWN0b3J5Pzogc3RyaW5nO1xufVxuZGVjbGFyZSBmdW5jdGlvbiB1cGxvYWQob3B0aW9uczogVXBsb2FkT3B0aW9ucyk6IFByb21pc2U8YW55PjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0ICRmaWxlOiB7XG4gICAgcGljazogdHlwZW9mIHBpY2s7XG4gICAgdXBsb2FkOiB0eXBlb2YgdXBsb2FkO1xuICAgIHRvVWludDhBcnJheTogdHlwZW9mIHRvVWludDhBcnJheTtcbn07XG5leHBvcnQge307XG4iLCJleHBvcnQgZGVjbGFyZSBjb25zdCAkdG9hc3Q6ICgobWVzc2FnZTogc3RyaW5nIHwgKCgpID0+IHN0cmluZyB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQpIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCwgZGF0YT86IGltcG9ydChcInZ1ZS1zb25uZXJcIikuRXh0ZXJuYWxUb2FzdCkgPT4gc3RyaW5nIHwgbnVtYmVyKSAmIHtcbiAgICBzdWNjZXNzOiAobWVzc2FnZTogc3RyaW5nIHwgKCgpID0+IHN0cmluZyB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQpIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCwgZGF0YT86IGltcG9ydChcInZ1ZS1zb25uZXJcIikuRXh0ZXJuYWxUb2FzdCkgPT4gc3RyaW5nIHwgbnVtYmVyO1xuICAgIGluZm86IChtZXNzYWdlOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCkgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50LCBkYXRhPzogaW1wb3J0KFwidnVlLXNvbm5lclwiKS5FeHRlcm5hbFRvYXN0KSA9PiBzdHJpbmcgfCBudW1iZXI7XG4gICAgd2FybmluZzogKG1lc3NhZ2U6IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50KSB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQsIGRhdGE/OiBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLkV4dGVybmFsVG9hc3QpID0+IHN0cmluZyB8IG51bWJlcjtcbiAgICBlcnJvcjogKG1lc3NhZ2U6IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50KSB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQsIGRhdGE/OiBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLkV4dGVybmFsVG9hc3QpID0+IHN0cmluZyB8IG51bWJlcjtcbiAgICBjdXN0b206IChjb21wb25lbnQ6IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQsIGRhdGE/OiBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLkV4dGVybmFsVG9hc3QpID0+IHN0cmluZyB8IG51bWJlcjtcbiAgICBtZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nIHwgKCgpID0+IHN0cmluZyB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQpIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCwgZGF0YT86IGltcG9ydChcInZ1ZS1zb25uZXJcIikuRXh0ZXJuYWxUb2FzdCkgPT4gc3RyaW5nIHwgbnVtYmVyO1xuICAgIHByb21pc2U6IDxUb2FzdERhdGE+KHByb21pc2U6IFByb21pc2U8VG9hc3REYXRhPiB8ICgoKSA9PiBQcm9taXNlPFRvYXN0RGF0YT4pLCBkYXRhPzogKHtcbiAgICAgICAgaWQ/OiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHRvYXN0ZXJJZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWNvbj86IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNvbXBvbmVudD86IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNvbXBvbmVudFByb3BzPzogYW55O1xuICAgICAgICByaWNoQ29sb3JzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgaW52ZXJ0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgY2xvc2VCdXR0b24/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICBkaXNtaXNzaWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgICAgIGR1cmF0aW9uPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgICBpbXBvcnRhbnQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgICBhY3Rpb24/OiAoaW1wb3J0KFwidnVlLXNvbm5lclwiKS5BY3Rpb24gfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50KSB8IHVuZGVmaW5lZDtcbiAgICAgICAgY2FuY2VsPzogKGltcG9ydChcInZ1ZS1zb25uZXJcIikuQWN0aW9uIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCkgfCB1bmRlZmluZWQ7XG4gICAgICAgIG9uRGlzbWlzcz86ICgodG9hc3Q6IGltcG9ydChcInZ1ZS1zb25uZXJcIikuVG9hc3RUKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgb25BdXRvQ2xvc2U/OiAoKHRvYXN0OiBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLlRvYXN0VCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNhbmNlbEJ1dHRvblN0eWxlPzogaW1wb3J0KFwidnVlXCIpLkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7XG4gICAgICAgIGFjdGlvbkJ1dHRvblN0eWxlPzogaW1wb3J0KFwidnVlXCIpLkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7XG4gICAgICAgIHN0eWxlPzogaW1wb3J0KFwidnVlXCIpLkNTU1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7XG4gICAgICAgIHVuc3R5bGVkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgY2xhc3M/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNsYXNzZXM/OiBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLlRvYXN0Q2xhc3NlcyB8IHVuZGVmaW5lZDtcbiAgICAgICAgZGVzY3JpcHRpb25DbGFzcz86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgcG9zaXRpb24/OiAoXCJ0b3AtbGVmdFwiIHwgXCJ0b3AtcmlnaHRcIiB8IFwiYm90dG9tLWxlZnRcIiB8IFwiYm90dG9tLXJpZ2h0XCIgfCBcInRvcC1jZW50ZXJcIiB8IFwiYm90dG9tLWNlbnRlclwiKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgY2xvc2VCdXR0b25Qb3NpdGlvbj86IChcInRvcC1sZWZ0XCIgfCBcInRvcC1yaWdodFwiIHwgXCJib3R0b20tbGVmdFwiIHwgXCJib3R0b20tcmlnaHRcIikgfCB1bmRlZmluZWQ7XG4gICAgICAgIHRlc3RJZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB9ICYge1xuICAgICAgICBsb2FkaW5nPzogc3RyaW5nIHwgaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudDtcbiAgICAgICAgc3VjY2Vzcz86IChzdHJpbmcgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50IHwgKChkYXRhOiBUb2FzdERhdGEpID0+IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQgfCBzdHJpbmcgfCBQcm9taXNlPGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQgfCBzdHJpbmc+KSkgfCAoaW1wb3J0KFwidnVlLXNvbm5lclwiKS5Qcm9taXNlSUV4dGVuZGVkUmVzdWx0IHwgKChkYXRhOiBUb2FzdERhdGEpID0+IGltcG9ydChcInZ1ZS1zb25uZXJcIikuUHJvbWlzZUlFeHRlbmRlZFJlc3VsdCB8IFByb21pc2U8aW1wb3J0KFwidnVlLXNvbm5lclwiKS5Qcm9taXNlSUV4dGVuZGVkUmVzdWx0PikpIHwgdW5kZWZpbmVkO1xuICAgICAgICBlcnJvcj86IChzdHJpbmcgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50IHwgKChkYXRhOiBhbnkpID0+IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQgfCBzdHJpbmcgfCBQcm9taXNlPGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQgfCBzdHJpbmc+KSkgfCAoaW1wb3J0KFwidnVlLXNvbm5lclwiKS5Qcm9taXNlSUV4dGVuZGVkUmVzdWx0IHwgKChkYXRhOiBhbnkpID0+IGltcG9ydChcInZ1ZS1zb25uZXJcIikuUHJvbWlzZUlFeHRlbmRlZFJlc3VsdCB8IFByb21pc2U8aW1wb3J0KFwidnVlLXNvbm5lclwiKS5Qcm9taXNlSUV4dGVuZGVkUmVzdWx0PikpO1xuICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQgfCAoKGRhdGE6IGFueSkgPT4gaW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCB8IHN0cmluZyB8IFByb21pc2U8aW1wb3J0KFwidnVlXCIpLkNvbXBvbmVudCB8IHN0cmluZz4pO1xuICAgICAgICBmaW5hbGx5PzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgfSkgfCB1bmRlZmluZWQpID0+IChzdHJpbmcgJiB7XG4gICAgICAgIHVud3JhcDogKCkgPT4gUHJvbWlzZTxUb2FzdERhdGE+O1xuICAgIH0pIHwgKG51bWJlciAmIHtcbiAgICAgICAgdW53cmFwOiAoKSA9PiBQcm9taXNlPFRvYXN0RGF0YT47XG4gICAgfSkgfCB7XG4gICAgICAgIHVud3JhcDogKCkgPT4gUHJvbWlzZTxUb2FzdERhdGE+O1xuICAgIH0gfCB1bmRlZmluZWQ7XG4gICAgZGlzbWlzczogKGlkPzogbnVtYmVyIHwgc3RyaW5nKSA9PiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbG9hZGluZzogKG1lc3NhZ2U6IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcgfCBpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50KSB8IGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQsIGRhdGE/OiBpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLkV4dGVybmFsVG9hc3QpID0+IHN0cmluZyB8IG51bWJlcjtcbn0gJiB7XG4gICAgZ2V0SGlzdG9yeTogKCkgPT4gKGltcG9ydChcInZ1ZS1zb25uZXJcIikuVG9hc3RUPGltcG9ydChcInZ1ZVwiKS5Db21wb25lbnQ+IHwgaW1wb3J0KFwidnVlLXNvbm5lclwiKS5Ub2FzdFRvRGlzbWlzcylbXTtcbiAgICBnZXRUb2FzdHM6ICgpID0+IChpbXBvcnQoXCJ2dWUtc29ubmVyXCIpLlRvYXN0VDxpbXBvcnQoXCJ2dWVcIikuQ29tcG9uZW50PiB8IGltcG9ydChcInZ1ZS1zb25uZXJcIikuVG9hc3RUb0Rpc21pc3MpW107XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uR3VhcmQgfSBmcm9tICd2dWUtcm91dGVyJztcbmV4cG9ydCBpbnRlcmZhY2UgQXV0aEd1YXJkT3B0aW9ucyB7XG4gICAgcmVkaXJlY3Q6IHN0cmluZztcbiAgICBleGNsdWRlPzogc3RyaW5nW107XG59XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVBdXRoR3VhcmQob3B0aW9uczogQXV0aEd1YXJkT3B0aW9ucyk6IE5hdmlnYXRpb25HdWFyZDtcbmRlY2xhcmUgY29uc3QgYXV0aEd1YXJkOiBOYXZpZ2F0aW9uR3VhcmQ7XG5leHBvcnQgZGVmYXVsdCBhdXRoR3VhcmQ7XG4iLCJleHBvcnQgaW50ZXJmYWNlIEd1ZXN0R3VhcmRPcHRpb25zIHtcbiAgICByZWRpcmVjdDogc3RyaW5nO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlR3Vlc3RHdWFyZChvcHRpb25zOiBHdWVzdEd1YXJkT3B0aW9ucyk6ICgpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbmRlY2xhcmUgY29uc3QgZ3Vlc3RHdWFyZDogKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGRlZmF1bHQgZ3Vlc3RHdWFyZDtcbiIsImltcG9ydCB0eXBlIHsgTmF2aWdhdGlvbkd1YXJkIH0gZnJvbSAndnVlLXJvdXRlcic7XG5kZWNsYXJlIGNvbnN0IHNldHVwR3VhcmQ6IE5hdmlnYXRpb25HdWFyZDtcbmV4cG9ydCBkZWZhdWx0IHNldHVwR3VhcmQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsSUFBVyxnQkFBYztDQUFDO0VBQUksTUFBSSxDQUFBLEVBQUk7Q0FBRTtFQUFDO0VBQUM7RUFBTTtFQUFJO0NBQUM7Ozs7QUNEckQsSUFBSSx3QkFBc0I7Q0FBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzFCLElBQUksbUJBQWdCO0NBQUE7T0FBVSxDQUFBLFFBQWEsc0JBQWlCO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0Q1RCxJQUFJLFlBQVk7Q0FBQztFQUFJLE1BQUs7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMxQixJQUFJLE9BQUk7Q0FBQTtPQUFZLENBQUEsVUFBVTtDQUFBO0VBQU07RUFBRztFQUFLO0VBQUk7RUFBQTtDQUFBOzs7O0FDQ2hELElBQUksa0JBQWtCO0NBQUM7RUFBRyxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBSSxhQUFVO0NBQUk7T0FBVTtFQUFDO0VBQUM7RUFBaUI7RUFBQztFQUFZO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNINUQsSUFBQSxnQkFBVTtDQUFBO09BQWMsRUFBQTtDQUFBLENBQUEsR0FBQTtDQUFBO0FBQ3hCLElBQUksY0FBVztDQUFBO09BQU07RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRnJCLElBQU8sZUFBVTtDQUFBO09BQWE7RUFBTztFQUFDO0VBQVk7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDbEQsSUFBSSxlQUFlO0NBQUE7RUFBQSxNQUFRO0VBQUE7RUFBSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0MvQixJQUFBLHNCQUFxQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQTRCO0VBQUE7RUFBYTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0E5RCxJQUFBLG1CQUFxQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQXlCO0VBQUE7RUFBYTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNGM0QsSUFBQSxnQkFBb0I7Q0FBQztPQUFBLENBQUEsY0FBYztDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQW5DLElBQUEsZ0JBQW9CO0NBQUM7T0FBQTtFQUFBO0VBQWM7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDR25DLElBQUksa0JBQWtCO0NBQUM7T0FBVSxFQUFFO0NBQUUsRUFBQTtDQUFBO0FBQ3JDLElBQUEsY0FBVTtDQUFBO09BQVksRUFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDdEIsSUFBVywwQkFBb0I7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDL0IsSUFBSSxxQkFBbUI7Q0FBQTtPQUFRO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNML0IsSUFBQSxtQkFBcUI7Q0FBQTtPQUFBLENBQUEsUUFBaUIsbUJBQVE7Q0FBQTtFQUFvQjtFQUFDO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNBbkUsSUFBSSxnQkFBYztDQUFHO0VBQUksTUFBQztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBSSxXQUFVO0NBQUE7T0FBTSxDQUFPLGNBQVk7Q0FBSTtFQUFDO0VBQUk7RUFBQTtFQUFRO0VBQUk7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0Q1RCxJQUFPLGFBQVU7Q0FBQTtPQUFXLEVBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUM1QixJQUFJLGNBQVM7Q0FBTTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0NuQixJQUFPLFNBQVU7Q0FBQTtPQUFjLENBQUMsTUFBQSxTQUFVO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzFDLElBQVUsY0FBVztDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNyQixJQUFBLE9BQUE7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ0EsSUFBTyxlQUFVO0NBQUE7T0FBWSxDQUFBLE9BQUE7Q0FBQSxDQUFBLEdBQUE7Q0FBQTs7OztBQ043QixJQUFBLGVBQWU7Q0FBSztPQUFDLENBQUEsUUFBYSxPQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDSWxDLElBQUksWUFBTztDQUFBO09BQUE7RUFBQTtFQUE2QjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQSxpQkFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0h4QyxJQUFBLE1BQVE7Q0FBQTtPQUFXLENBQUEsVUFBUztDQUFBLENBQUEsR0FBQTtDQUFBOzs7O0FDQTVCLElBQUEsT0FBUTtDQUFBO09BQVksQ0FBQSxZQUFXO0NBQUEsQ0FBQSxHQUFBO0NBQUE7Ozs7QUNEL0IsSUFBQSxRQUFVO0NBQUE7T0FBTSxFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ2hCLElBQUksZ0JBQVc7Q0FBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNBZixJQUFBLFNBQWE7Q0FBQztPQUFRLENBQUEsY0FBYTtDQUFBLENBQUEsR0FBQTtDQUFBOzs7O0FDRG5DLElBQUksY0FBYztDQUFDO0VBQUUsTUFBTyxDQUFDLEVBQUU7Q0FBQTtFQUFHO0VBQUk7RUFBQztFQUFNO0NBQUE7QUFDN0MsSUFBSSxXQUFXO0NBQUM7T0FBUyxDQUFBLFlBQVM7Q0FBQSxDQUFBLEdBQVc7Q0FBQTtBQUM3QyxJQUFBLG1CQUFxQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQWlCO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0R0QyxJQUFBLFdBQWM7Q0FBQTtPQUFVLENBQUEsaUJBQWdCO0NBQUEsQ0FBQSxHQUFBO0NBQUE7Ozs7QUNBeEMsSUFBQSxVQUFjO0NBQUE7T0FBUyxDQUFBLGFBQVk7Q0FBQSxDQUFBLEdBQUE7Q0FBQTs7OztBQ0FuQyxJQUFBLFNBQWE7Q0FBQztPQUFRLENBQUEsY0FBYTtDQUFBLENBQUEsR0FBQTtDQUFBOzs7O0FDQW5DLElBQUEsT0FBUTtDQUFBO09BQVksQ0FBQSxZQUFXO0NBQUEsQ0FBQSxHQUFBO0NBQUE7Ozs7QUNBL0IsSUFBQSxRQUFRO0NBQUs7T0FBUSxDQUFBLCtCQUE4QjtDQUFBLENBQUEsR0FBQTtDQUFBOzs7O0FDQW5ELElBQUEsU0FBYTtDQUFDO09BQVEsQ0FBQSxPQUFNO0NBQUEsQ0FBQSxHQUFBO0NBQUE7Ozs7QUNBNUIsSUFBQSxRQUFRO0NBQUs7T0FBUSxDQUFBLGFBQVk7Q0FBQSxDQUFBLEdBQUE7Q0FBQTs7OztBQ0FqQyxJQUFVLDRCQUFNO0NBQUE7T0FBQSxFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ2hCLElBQVMsc0JBQU07Q0FBQTtPQUFBLENBQUEsMEJBQUE7Q0FBQSxDQUFBLElBQUEsR0FBQTtDQUFBO0FBQ2YsSUFBSSxzQkFBcUI7Q0FBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3pCLElBQUEsaUJBQUE7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNEQSxJQUFJLG9CQUFvQjtDQUFDO09BQUEsRUFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDekIsSUFBSSxnQkFBYztDQUFDO0VBQUcsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN0QixJQUFBLFdBQUE7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDSkEsSUFBQSxjQUFjO0NBQUE7T0FBYSxDQUFBLFNBQU87Q0FBQSxDQUFJLEdBQUE7Q0FBQTtBQUN0QyxJQUFBLFNBQU87Q0FBTztPQUFPLENBQUEsWUFBZTtDQUFBLENBQUEsR0FBQTtDQUFBOzs7O0FDRHBDLElBQUksc0JBQW9CO0NBQUM7RUFBQyxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMxQixJQUFJLGlCQUFlO0NBQUM7T0FBVSxDQUFBLG9CQUFrQjtDQUFBO0VBQUE7RUFBUTtFQUFJO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0E1RCxJQUFBLG9CQUFjO0NBQUE7T0FBbUIsQ0FBQSxlQUFPO0NBQUEsQ0FBSSxHQUFBO0NBQUE7QUFDNUMsSUFBQSxlQUFlO0NBQUs7T0FBQztFQUFBO0VBQXFCO0VBQUE7RUFBa0I7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0E1RCxJQUFLLGFBQW1CO0NBQUM7T0FBSztFQUFBO0VBQXVCO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNIckQsSUFBTyxXQUFRO0NBQVE7T0FBVSxFQUFBO0NBQUEsQ0FBQSxHQUFRO0NBQUM7Ozs7QUNDMUMsSUFBTyxTQUFhO0NBQUM7T0FBUSxDQUFBLGFBQWE7Q0FBQSxDQUFZLEdBQUE7Q0FBQTs7OztBQ0R0RCxJQUFBLGNBQVU7Q0FBQTtPQUFZLEVBQUE7Q0FBQSxDQUFBLElBQUEsR0FBQTtDQUFBO0FBQ3RCLElBQUksYUFBUztDQUFBO0VBQU0sTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ25CLElBQUksT0FBQTtDQUFRO0VBQUcsTUFBQTtFQUFPO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3RCLElBQUEsZUFBQTtDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ0EsSUFBSSxnQkFBYztDQUFBO09BQVEsQ0FBQSxLQUFXO0NBQUU7RUFBQztFQUFJO0VBQUE7RUFBUTtFQUFHO0NBQUE7QUFDdkQsSUFBQSxTQUFRO0NBQUE7T0FBZ0IsQ0FBQSxlQUFRLFFBQWE7Q0FBQTtFQUFBO0VBQVU7RUFBRztFQUFBO0NBQUE7QUFDMUQsSUFBUSxRQUFTO0NBQUE7T0FBYTtFQUFBO0VBQU07RUFBTztFQUFRO0NBQUE7RUFBVTtFQUFDO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDSjlELElBQVcsU0FBUztDQUFBO0VBQUEsY0FBZ0I7RUFBQSxNQUFTO0VBQVcsTUFBRztFQUFhLGNBQWM7RUFBZ0IsTUFBRTtFQUFZLE1BQVM7RUFBQSxjQUF5QjtFQUFRLE1BQUE7RUFBQSxNQUFBO0VBQUEsY0FBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUEsY0FBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUEsY0FBQTtFQUFBLE1BQUE7RUFBQSxjQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQSxjQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBLGNBQUE7RUFBQSxNQUFBO0VBQUEsY0FBQTtFQUFBLE1BQUE7RUFBQSxjQUFBO0VBQUEsY0FBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBLGNBQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQTtFQUFBLGNBQUE7RUFBQTtFQUFBLGNBQUE7RUFBQSxjQUFBO0VBQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQTtFQUFBLGNBQUE7RUFBQSxjQUFBO0VBQUEsY0FBQTtFQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUEsY0FBQTtFQUFBLE1BQUE7RUFBQSxjQUFBO0VBQUEsY0FBQTtFQUFBLE1BQUE7RUFBQSxjQUFBO0VBQUEsY0FBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0Q5SixJQUFPLG1CQUFVO0NBQUE7T0FBaUIsRUFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDbEMsSUFBSSxrQkFBZ0I7Q0FBQTtPQUFBLENBQUEsa0JBQUEsZ0JBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDcEIsSUFBSSxZQUFVO0NBQUE7T0FBUSxDQUFBLGdCQUFBO0NBQUEsQ0FBQSxHQUFBO0NBQUE7Ozs7QUNIdEIsSUFBTyxvQkFBVTtDQUFBO09BQWtCLEVBQUE7Q0FBQSxDQUFBLEdBQUE7Q0FBQTtBQUNuQyxJQUFJLG1CQUFnQjtDQUFBO09BQUEsQ0FBQSxrQkFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDcEIsSUFBQSxhQUFBO0NBQUE7T0FBQSxFQUFBO0NBQUEsRUFBQTtDQUFBOzs7O0FDREEsSUFBQSxhQUFjO0NBQUE7T0FBWSxDQUFBLGdCQUFlO0NBQUEsQ0FBQSxHQUFBO0NBQUEifQ==
|