@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.
Files changed (436) hide show
  1. package/bin/zenith.js +27 -0
  2. package/bin/zkit.js +26 -0
  3. package/cli/commands/build.js +49 -0
  4. package/cli/commands/generateLegacyFolder.js +38 -0
  5. package/cli/commands/generatePluginId.js +17 -0
  6. package/cli/config.js +23 -0
  7. package/cli/utils/createWrapper.js +17 -0
  8. package/dist/client/index.d.mts +513 -0
  9. package/dist/client/index.mjs +2 -0
  10. package/dist/components/index.es.js +63946 -0
  11. package/dist/components/styles.css +4833 -0
  12. package/dist/server/index.d.mts +1780 -1314
  13. package/dist/server/index.mjs +5 -7754
  14. package/dist/shared/chunk-0Lt9GpW0.mjs +1 -0
  15. package/dist/shared/index.d.mts +472 -19
  16. package/dist/shared/index.mjs +2 -841
  17. package/legacy/client/components/Alert.vue +3 -0
  18. package/legacy/client/components/AlertButton.vue +3 -0
  19. package/legacy/client/components/Button.vue +3 -0
  20. package/legacy/client/components/ClientOnly.vue +3 -0
  21. package/legacy/client/components/ColorPicker.vue +3 -0
  22. package/legacy/client/components/ColorWheel.vue +3 -0
  23. package/legacy/client/components/Component.vue +3 -0
  24. package/legacy/client/components/DataTable.vue +4 -0
  25. package/legacy/client/components/DataTablePagination.vue +3 -0
  26. package/legacy/client/components/DatePicker.vue +3 -0
  27. package/legacy/client/components/DialogForm.vue +4 -0
  28. package/legacy/client/components/FileUploader.vue +3 -0
  29. package/legacy/client/components/FormAutoFieldList.vue +3 -0
  30. package/legacy/client/components/FormAutocomplete.vue +3 -0
  31. package/legacy/client/components/FormColorPicker.vue +3 -0
  32. package/legacy/client/components/FormDatePicker.vue +3 -0
  33. package/legacy/client/components/FormFilePicker.vue +3 -0
  34. package/legacy/client/components/FormFileUploader.vue +3 -0
  35. package/legacy/client/components/FormImageUploader.vue +3 -0
  36. package/legacy/client/components/FormJsonInput.vue +3 -0
  37. package/legacy/client/components/FormSelect.vue +3 -0
  38. package/legacy/client/components/FormStringListInput.vue +3 -0
  39. package/legacy/client/components/FormSwitch.vue +3 -0
  40. package/legacy/client/components/FormTextField.vue +3 -0
  41. package/legacy/client/components/FormTextarea.vue +3 -0
  42. package/legacy/client/components/Icon.vue +3 -0
  43. package/legacy/client/components/Image.vue +3 -0
  44. package/legacy/client/components/JsonInput.vue +3 -0
  45. package/legacy/client/components/Logo.vue +3 -0
  46. package/legacy/client/components/LogoIcon.vue +3 -0
  47. package/legacy/client/components/ObjectInspect.vue +3 -0
  48. package/legacy/client/components/PageCrud.vue +3 -0
  49. package/legacy/client/components/PageSubtitle.vue +3 -0
  50. package/legacy/client/components/PageTable.vue +3 -0
  51. package/legacy/client/components/PageTitle.vue +3 -0
  52. package/legacy/client/components/Pagination.vue +3 -0
  53. package/legacy/client/components/Select.vue +3 -0
  54. package/legacy/client/components/StringListInput.vue +3 -0
  55. package/legacy/client/components/Switch.vue +3 -0
  56. package/legacy/client/components/TextField.vue +3 -0
  57. package/legacy/client/components/Textarea.vue +3 -0
  58. package/legacy/client/components/UserMenu.vue +3 -0
  59. package/legacy/client/components/index.ts +349 -0
  60. package/legacy/client/components/ui/accordion/Accordion.vue +3 -0
  61. package/legacy/client/components/ui/accordion/AccordionContent.vue +3 -0
  62. package/legacy/client/components/ui/accordion/AccordionItem.vue +3 -0
  63. package/legacy/client/components/ui/accordion/AccordionTrigger.vue +3 -0
  64. package/legacy/client/components/ui/accordion/index.ts +1 -0
  65. package/legacy/client/components/ui/alert/Alert.vue +3 -0
  66. package/legacy/client/components/ui/alert/AlertDescription.vue +3 -0
  67. package/legacy/client/components/ui/alert/AlertTitle.vue +3 -0
  68. package/legacy/client/components/ui/alert/index.ts +1 -0
  69. package/legacy/client/components/ui/alert-dialog/AlertDialog.vue +3 -0
  70. package/legacy/client/components/ui/alert-dialog/AlertDialogAction.vue +3 -0
  71. package/legacy/client/components/ui/alert-dialog/AlertDialogCancel.vue +3 -0
  72. package/legacy/client/components/ui/alert-dialog/AlertDialogContent.vue +3 -0
  73. package/legacy/client/components/ui/alert-dialog/AlertDialogDescription.vue +3 -0
  74. package/legacy/client/components/ui/alert-dialog/AlertDialogFooter.vue +3 -0
  75. package/legacy/client/components/ui/alert-dialog/AlertDialogHeader.vue +3 -0
  76. package/legacy/client/components/ui/alert-dialog/AlertDialogTitle.vue +3 -0
  77. package/legacy/client/components/ui/alert-dialog/AlertDialogTrigger.vue +3 -0
  78. package/legacy/client/components/ui/alert-dialog/index.ts +1 -0
  79. package/legacy/client/components/ui/aspect-ratio/AspectRatio.vue +3 -0
  80. package/legacy/client/components/ui/aspect-ratio/index.ts +1 -0
  81. package/legacy/client/components/ui/avatar/Avatar.vue +3 -0
  82. package/legacy/client/components/ui/avatar/AvatarFallback.vue +3 -0
  83. package/legacy/client/components/ui/avatar/AvatarImage.vue +3 -0
  84. package/legacy/client/components/ui/avatar/index.ts +1 -0
  85. package/legacy/client/components/ui/badge/Badge.vue +3 -0
  86. package/legacy/client/components/ui/badge/index.ts +1 -0
  87. package/legacy/client/components/ui/breadcrumb/Breadcrumb.vue +3 -0
  88. package/legacy/client/components/ui/breadcrumb/BreadcrumbEllipsis.vue +3 -0
  89. package/legacy/client/components/ui/breadcrumb/BreadcrumbItem.vue +3 -0
  90. package/legacy/client/components/ui/breadcrumb/BreadcrumbLink.vue +3 -0
  91. package/legacy/client/components/ui/breadcrumb/BreadcrumbList.vue +3 -0
  92. package/legacy/client/components/ui/breadcrumb/BreadcrumbPage.vue +3 -0
  93. package/legacy/client/components/ui/breadcrumb/BreadcrumbSeparator.vue +3 -0
  94. package/legacy/client/components/ui/breadcrumb/index.ts +1 -0
  95. package/legacy/client/components/ui/button/Button.vue +3 -0
  96. package/legacy/client/components/ui/button/index.ts +1 -0
  97. package/legacy/client/components/ui/calendar/Calendar.vue +3 -0
  98. package/legacy/client/components/ui/calendar/CalendarCell.vue +3 -0
  99. package/legacy/client/components/ui/calendar/CalendarCellTrigger.vue +3 -0
  100. package/legacy/client/components/ui/calendar/CalendarGrid.vue +3 -0
  101. package/legacy/client/components/ui/calendar/CalendarGridBody.vue +3 -0
  102. package/legacy/client/components/ui/calendar/CalendarGridHead.vue +3 -0
  103. package/legacy/client/components/ui/calendar/CalendarGridRow.vue +3 -0
  104. package/legacy/client/components/ui/calendar/CalendarHeadCell.vue +3 -0
  105. package/legacy/client/components/ui/calendar/CalendarHeader.vue +3 -0
  106. package/legacy/client/components/ui/calendar/CalendarHeading.vue +3 -0
  107. package/legacy/client/components/ui/calendar/CalendarNextButton.vue +3 -0
  108. package/legacy/client/components/ui/calendar/CalendarPrevButton.vue +3 -0
  109. package/legacy/client/components/ui/calendar/index.ts +1 -0
  110. package/legacy/client/components/ui/card/Card.vue +3 -0
  111. package/legacy/client/components/ui/card/CardAction.vue +3 -0
  112. package/legacy/client/components/ui/card/CardContent.vue +3 -0
  113. package/legacy/client/components/ui/card/CardDescription.vue +3 -0
  114. package/legacy/client/components/ui/card/CardFooter.vue +3 -0
  115. package/legacy/client/components/ui/card/CardHeader.vue +3 -0
  116. package/legacy/client/components/ui/card/CardTitle.vue +3 -0
  117. package/legacy/client/components/ui/card/index.ts +1 -0
  118. package/legacy/client/components/ui/carousel/Carousel.vue +3 -0
  119. package/legacy/client/components/ui/carousel/CarouselContent.vue +3 -0
  120. package/legacy/client/components/ui/carousel/CarouselItem.vue +3 -0
  121. package/legacy/client/components/ui/carousel/CarouselNext.vue +3 -0
  122. package/legacy/client/components/ui/carousel/CarouselPrevious.vue +3 -0
  123. package/legacy/client/components/ui/carousel/index.ts +1 -0
  124. package/legacy/client/components/ui/checkbox/Checkbox.vue +3 -0
  125. package/legacy/client/components/ui/checkbox/index.ts +1 -0
  126. package/legacy/client/components/ui/collapsible/Collapsible.vue +3 -0
  127. package/legacy/client/components/ui/collapsible/CollapsibleContent.vue +3 -0
  128. package/legacy/client/components/ui/collapsible/CollapsibleTrigger.vue +3 -0
  129. package/legacy/client/components/ui/collapsible/index.ts +1 -0
  130. package/legacy/client/components/ui/combobox/Combobox.vue +3 -0
  131. package/legacy/client/components/ui/combobox/ComboboxAnchor.vue +3 -0
  132. package/legacy/client/components/ui/combobox/ComboboxEmpty.vue +3 -0
  133. package/legacy/client/components/ui/combobox/ComboboxGroup.vue +3 -0
  134. package/legacy/client/components/ui/combobox/ComboboxInput.vue +3 -0
  135. package/legacy/client/components/ui/combobox/ComboboxItem.vue +3 -0
  136. package/legacy/client/components/ui/combobox/ComboboxItemIndicator.vue +3 -0
  137. package/legacy/client/components/ui/combobox/ComboboxList.vue +3 -0
  138. package/legacy/client/components/ui/combobox/ComboboxSeparator.vue +3 -0
  139. package/legacy/client/components/ui/combobox/ComboboxTrigger.vue +3 -0
  140. package/legacy/client/components/ui/combobox/ComboboxViewport.vue +3 -0
  141. package/legacy/client/components/ui/combobox/index.ts +1 -0
  142. package/legacy/client/components/ui/command/Command.vue +3 -0
  143. package/legacy/client/components/ui/command/CommandDialog.vue +3 -0
  144. package/legacy/client/components/ui/command/CommandEmpty.vue +3 -0
  145. package/legacy/client/components/ui/command/CommandGroup.vue +3 -0
  146. package/legacy/client/components/ui/command/CommandInput.vue +3 -0
  147. package/legacy/client/components/ui/command/CommandItem.vue +3 -0
  148. package/legacy/client/components/ui/command/CommandList.vue +3 -0
  149. package/legacy/client/components/ui/command/CommandSeparator.vue +3 -0
  150. package/legacy/client/components/ui/command/CommandShortcut.vue +3 -0
  151. package/legacy/client/components/ui/command/index.ts +1 -0
  152. package/legacy/client/components/ui/context-menu/ContextMenu.vue +3 -0
  153. package/legacy/client/components/ui/context-menu/ContextMenuCheckboxItem.vue +3 -0
  154. package/legacy/client/components/ui/context-menu/ContextMenuContent.vue +3 -0
  155. package/legacy/client/components/ui/context-menu/ContextMenuGroup.vue +3 -0
  156. package/legacy/client/components/ui/context-menu/ContextMenuItem.vue +3 -0
  157. package/legacy/client/components/ui/context-menu/ContextMenuLabel.vue +3 -0
  158. package/legacy/client/components/ui/context-menu/ContextMenuPortal.vue +3 -0
  159. package/legacy/client/components/ui/context-menu/ContextMenuRadioGroup.vue +3 -0
  160. package/legacy/client/components/ui/context-menu/ContextMenuRadioItem.vue +3 -0
  161. package/legacy/client/components/ui/context-menu/ContextMenuSeparator.vue +3 -0
  162. package/legacy/client/components/ui/context-menu/ContextMenuShortcut.vue +3 -0
  163. package/legacy/client/components/ui/context-menu/ContextMenuSub.vue +3 -0
  164. package/legacy/client/components/ui/context-menu/ContextMenuSubContent.vue +3 -0
  165. package/legacy/client/components/ui/context-menu/ContextMenuSubTrigger.vue +3 -0
  166. package/legacy/client/components/ui/context-menu/ContextMenuTrigger.vue +3 -0
  167. package/legacy/client/components/ui/context-menu/index.ts +1 -0
  168. package/legacy/client/components/ui/dialog/Dialog.vue +3 -0
  169. package/legacy/client/components/ui/dialog/DialogClose.vue +3 -0
  170. package/legacy/client/components/ui/dialog/DialogContent.vue +3 -0
  171. package/legacy/client/components/ui/dialog/DialogDescription.vue +3 -0
  172. package/legacy/client/components/ui/dialog/DialogFooter.vue +3 -0
  173. package/legacy/client/components/ui/dialog/DialogHeader.vue +3 -0
  174. package/legacy/client/components/ui/dialog/DialogOverlay.vue +3 -0
  175. package/legacy/client/components/ui/dialog/DialogScrollContent.vue +3 -0
  176. package/legacy/client/components/ui/dialog/DialogTitle.vue +3 -0
  177. package/legacy/client/components/ui/dialog/DialogTrigger.vue +3 -0
  178. package/legacy/client/components/ui/dialog/index.ts +1 -0
  179. package/legacy/client/components/ui/drawer/Drawer.vue +3 -0
  180. package/legacy/client/components/ui/drawer/DrawerClose.vue +3 -0
  181. package/legacy/client/components/ui/drawer/DrawerContent.vue +3 -0
  182. package/legacy/client/components/ui/drawer/DrawerDescription.vue +3 -0
  183. package/legacy/client/components/ui/drawer/DrawerFooter.vue +3 -0
  184. package/legacy/client/components/ui/drawer/DrawerHeader.vue +3 -0
  185. package/legacy/client/components/ui/drawer/DrawerOverlay.vue +3 -0
  186. package/legacy/client/components/ui/drawer/DrawerTitle.vue +3 -0
  187. package/legacy/client/components/ui/drawer/DrawerTrigger.vue +3 -0
  188. package/legacy/client/components/ui/drawer/index.ts +1 -0
  189. package/legacy/client/components/ui/dropdown-menu/DropdownMenu.vue +3 -0
  190. package/legacy/client/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +3 -0
  191. package/legacy/client/components/ui/dropdown-menu/DropdownMenuContent.vue +3 -0
  192. package/legacy/client/components/ui/dropdown-menu/DropdownMenuGroup.vue +3 -0
  193. package/legacy/client/components/ui/dropdown-menu/DropdownMenuItem.vue +3 -0
  194. package/legacy/client/components/ui/dropdown-menu/DropdownMenuLabel.vue +3 -0
  195. package/legacy/client/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +3 -0
  196. package/legacy/client/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +3 -0
  197. package/legacy/client/components/ui/dropdown-menu/DropdownMenuSeparator.vue +3 -0
  198. package/legacy/client/components/ui/dropdown-menu/DropdownMenuShortcut.vue +3 -0
  199. package/legacy/client/components/ui/dropdown-menu/DropdownMenuSub.vue +3 -0
  200. package/legacy/client/components/ui/dropdown-menu/DropdownMenuSubContent.vue +3 -0
  201. package/legacy/client/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +3 -0
  202. package/legacy/client/components/ui/dropdown-menu/DropdownMenuTrigger.vue +3 -0
  203. package/legacy/client/components/ui/dropdown-menu/index.ts +1 -0
  204. package/legacy/client/components/ui/form/FormControl.vue +3 -0
  205. package/legacy/client/components/ui/form/FormDescription.vue +3 -0
  206. package/legacy/client/components/ui/form/FormItem.vue +3 -0
  207. package/legacy/client/components/ui/form/FormLabel.vue +3 -0
  208. package/legacy/client/components/ui/form/FormMessage.vue +3 -0
  209. package/legacy/client/components/ui/form/index.ts +1 -0
  210. package/legacy/client/components/ui/hover-card/HoverCard.vue +3 -0
  211. package/legacy/client/components/ui/hover-card/HoverCardContent.vue +3 -0
  212. package/legacy/client/components/ui/hover-card/HoverCardTrigger.vue +3 -0
  213. package/legacy/client/components/ui/hover-card/index.ts +1 -0
  214. package/legacy/client/components/ui/input/Input.vue +3 -0
  215. package/legacy/client/components/ui/input/index.ts +1 -0
  216. package/legacy/client/components/ui/label/Label.vue +3 -0
  217. package/legacy/client/components/ui/label/index.ts +1 -0
  218. package/legacy/client/components/ui/menubar/Menubar.vue +3 -0
  219. package/legacy/client/components/ui/menubar/MenubarCheckboxItem.vue +3 -0
  220. package/legacy/client/components/ui/menubar/MenubarContent.vue +3 -0
  221. package/legacy/client/components/ui/menubar/MenubarGroup.vue +3 -0
  222. package/legacy/client/components/ui/menubar/MenubarItem.vue +3 -0
  223. package/legacy/client/components/ui/menubar/MenubarLabel.vue +3 -0
  224. package/legacy/client/components/ui/menubar/MenubarMenu.vue +3 -0
  225. package/legacy/client/components/ui/menubar/MenubarRadioGroup.vue +3 -0
  226. package/legacy/client/components/ui/menubar/MenubarRadioItem.vue +3 -0
  227. package/legacy/client/components/ui/menubar/MenubarSeparator.vue +3 -0
  228. package/legacy/client/components/ui/menubar/MenubarShortcut.vue +3 -0
  229. package/legacy/client/components/ui/menubar/MenubarSub.vue +3 -0
  230. package/legacy/client/components/ui/menubar/MenubarSubContent.vue +3 -0
  231. package/legacy/client/components/ui/menubar/MenubarSubTrigger.vue +3 -0
  232. package/legacy/client/components/ui/menubar/MenubarTrigger.vue +3 -0
  233. package/legacy/client/components/ui/menubar/index.ts +1 -0
  234. package/legacy/client/components/ui/navigation-menu/NavigationMenu.vue +3 -0
  235. package/legacy/client/components/ui/navigation-menu/NavigationMenuContent.vue +3 -0
  236. package/legacy/client/components/ui/navigation-menu/NavigationMenuIndicator.vue +3 -0
  237. package/legacy/client/components/ui/navigation-menu/NavigationMenuItem.vue +3 -0
  238. package/legacy/client/components/ui/navigation-menu/NavigationMenuLink.vue +3 -0
  239. package/legacy/client/components/ui/navigation-menu/NavigationMenuList.vue +3 -0
  240. package/legacy/client/components/ui/navigation-menu/NavigationMenuTrigger.vue +3 -0
  241. package/legacy/client/components/ui/navigation-menu/NavigationMenuViewport.vue +3 -0
  242. package/legacy/client/components/ui/navigation-menu/index.ts +1 -0
  243. package/legacy/client/components/ui/number-field/NumberField.vue +3 -0
  244. package/legacy/client/components/ui/number-field/NumberFieldContent.vue +3 -0
  245. package/legacy/client/components/ui/number-field/NumberFieldDecrement.vue +3 -0
  246. package/legacy/client/components/ui/number-field/NumberFieldIncrement.vue +3 -0
  247. package/legacy/client/components/ui/number-field/NumberFieldInput.vue +3 -0
  248. package/legacy/client/components/ui/number-field/index.ts +1 -0
  249. package/legacy/client/components/ui/pagination/Pagination.vue +3 -0
  250. package/legacy/client/components/ui/pagination/PaginationContent.vue +3 -0
  251. package/legacy/client/components/ui/pagination/PaginationEllipsis.vue +3 -0
  252. package/legacy/client/components/ui/pagination/PaginationFirst.vue +3 -0
  253. package/legacy/client/components/ui/pagination/PaginationItem.vue +3 -0
  254. package/legacy/client/components/ui/pagination/PaginationLast.vue +3 -0
  255. package/legacy/client/components/ui/pagination/PaginationNext.vue +3 -0
  256. package/legacy/client/components/ui/pagination/PaginationPrevious.vue +3 -0
  257. package/legacy/client/components/ui/pagination/index.ts +1 -0
  258. package/legacy/client/components/ui/pin-input/PinInput.vue +3 -0
  259. package/legacy/client/components/ui/pin-input/PinInputGroup.vue +3 -0
  260. package/legacy/client/components/ui/pin-input/PinInputSeparator.vue +3 -0
  261. package/legacy/client/components/ui/pin-input/PinInputSlot.vue +3 -0
  262. package/legacy/client/components/ui/pin-input/index.ts +1 -0
  263. package/legacy/client/components/ui/popover/Popover.vue +3 -0
  264. package/legacy/client/components/ui/popover/PopoverAnchor.vue +3 -0
  265. package/legacy/client/components/ui/popover/PopoverContent.vue +3 -0
  266. package/legacy/client/components/ui/popover/PopoverTrigger.vue +3 -0
  267. package/legacy/client/components/ui/popover/index.ts +1 -0
  268. package/legacy/client/components/ui/progress/Progress.vue +3 -0
  269. package/legacy/client/components/ui/progress/index.ts +1 -0
  270. package/legacy/client/components/ui/radio-group/RadioGroup.vue +3 -0
  271. package/legacy/client/components/ui/radio-group/RadioGroupItem.vue +3 -0
  272. package/legacy/client/components/ui/radio-group/index.ts +1 -0
  273. package/legacy/client/components/ui/range-calendar/RangeCalendar.vue +3 -0
  274. package/legacy/client/components/ui/range-calendar/RangeCalendarCell.vue +3 -0
  275. package/legacy/client/components/ui/range-calendar/RangeCalendarCellTrigger.vue +3 -0
  276. package/legacy/client/components/ui/range-calendar/RangeCalendarGrid.vue +3 -0
  277. package/legacy/client/components/ui/range-calendar/RangeCalendarGridBody.vue +3 -0
  278. package/legacy/client/components/ui/range-calendar/RangeCalendarGridHead.vue +3 -0
  279. package/legacy/client/components/ui/range-calendar/RangeCalendarGridRow.vue +3 -0
  280. package/legacy/client/components/ui/range-calendar/RangeCalendarHeadCell.vue +3 -0
  281. package/legacy/client/components/ui/range-calendar/RangeCalendarHeader.vue +3 -0
  282. package/legacy/client/components/ui/range-calendar/RangeCalendarHeading.vue +3 -0
  283. package/legacy/client/components/ui/range-calendar/RangeCalendarNextButton.vue +3 -0
  284. package/legacy/client/components/ui/range-calendar/RangeCalendarPrevButton.vue +3 -0
  285. package/legacy/client/components/ui/range-calendar/index.ts +1 -0
  286. package/legacy/client/components/ui/resizable/ResizableHandle.vue +3 -0
  287. package/legacy/client/components/ui/resizable/ResizablePanel.vue +3 -0
  288. package/legacy/client/components/ui/resizable/ResizablePanelGroup.vue +3 -0
  289. package/legacy/client/components/ui/resizable/index.ts +1 -0
  290. package/legacy/client/components/ui/scroll-area/ScrollArea.vue +3 -0
  291. package/legacy/client/components/ui/scroll-area/ScrollBar.vue +3 -0
  292. package/legacy/client/components/ui/scroll-area/index.ts +1 -0
  293. package/legacy/client/components/ui/select/Select.vue +3 -0
  294. package/legacy/client/components/ui/select/SelectContent.vue +3 -0
  295. package/legacy/client/components/ui/select/SelectGroup.vue +3 -0
  296. package/legacy/client/components/ui/select/SelectItem.vue +3 -0
  297. package/legacy/client/components/ui/select/SelectItemText.vue +3 -0
  298. package/legacy/client/components/ui/select/SelectLabel.vue +3 -0
  299. package/legacy/client/components/ui/select/SelectScrollDownButton.vue +3 -0
  300. package/legacy/client/components/ui/select/SelectScrollUpButton.vue +3 -0
  301. package/legacy/client/components/ui/select/SelectSeparator.vue +3 -0
  302. package/legacy/client/components/ui/select/SelectTrigger.vue +3 -0
  303. package/legacy/client/components/ui/select/SelectValue.vue +3 -0
  304. package/legacy/client/components/ui/select/index.ts +1 -0
  305. package/legacy/client/components/ui/separator/Separator.vue +3 -0
  306. package/legacy/client/components/ui/separator/index.ts +1 -0
  307. package/legacy/client/components/ui/sheet/Sheet.vue +3 -0
  308. package/legacy/client/components/ui/sheet/SheetClose.vue +3 -0
  309. package/legacy/client/components/ui/sheet/SheetContent.vue +3 -0
  310. package/legacy/client/components/ui/sheet/SheetDescription.vue +3 -0
  311. package/legacy/client/components/ui/sheet/SheetFooter.vue +3 -0
  312. package/legacy/client/components/ui/sheet/SheetHeader.vue +3 -0
  313. package/legacy/client/components/ui/sheet/SheetOverlay.vue +3 -0
  314. package/legacy/client/components/ui/sheet/SheetTitle.vue +3 -0
  315. package/legacy/client/components/ui/sheet/SheetTrigger.vue +3 -0
  316. package/legacy/client/components/ui/sheet/index.ts +1 -0
  317. package/legacy/client/components/ui/sidebar/Sidebar.vue +3 -0
  318. package/legacy/client/components/ui/sidebar/SidebarContent.vue +3 -0
  319. package/legacy/client/components/ui/sidebar/SidebarFooter.vue +3 -0
  320. package/legacy/client/components/ui/sidebar/SidebarGroup.vue +3 -0
  321. package/legacy/client/components/ui/sidebar/SidebarGroupAction.vue +3 -0
  322. package/legacy/client/components/ui/sidebar/SidebarGroupContent.vue +3 -0
  323. package/legacy/client/components/ui/sidebar/SidebarGroupLabel.vue +3 -0
  324. package/legacy/client/components/ui/sidebar/SidebarHeader.vue +3 -0
  325. package/legacy/client/components/ui/sidebar/SidebarInput.vue +3 -0
  326. package/legacy/client/components/ui/sidebar/SidebarInset.vue +3 -0
  327. package/legacy/client/components/ui/sidebar/SidebarMenu.vue +3 -0
  328. package/legacy/client/components/ui/sidebar/SidebarMenuAction.vue +3 -0
  329. package/legacy/client/components/ui/sidebar/SidebarMenuBadge.vue +3 -0
  330. package/legacy/client/components/ui/sidebar/SidebarMenuButton.vue +3 -0
  331. package/legacy/client/components/ui/sidebar/SidebarMenuButtonChild.vue +3 -0
  332. package/legacy/client/components/ui/sidebar/SidebarMenuItem.vue +3 -0
  333. package/legacy/client/components/ui/sidebar/SidebarMenuSkeleton.vue +3 -0
  334. package/legacy/client/components/ui/sidebar/SidebarMenuSub.vue +3 -0
  335. package/legacy/client/components/ui/sidebar/SidebarMenuSubButton.vue +3 -0
  336. package/legacy/client/components/ui/sidebar/SidebarMenuSubItem.vue +3 -0
  337. package/legacy/client/components/ui/sidebar/SidebarProvider.vue +3 -0
  338. package/legacy/client/components/ui/sidebar/SidebarRail.vue +3 -0
  339. package/legacy/client/components/ui/sidebar/SidebarSeparator.vue +3 -0
  340. package/legacy/client/components/ui/sidebar/SidebarTrigger.vue +3 -0
  341. package/legacy/client/components/ui/sidebar/index.ts +1 -0
  342. package/legacy/client/components/ui/skeleton/Skeleton.vue +3 -0
  343. package/legacy/client/components/ui/skeleton/index.ts +1 -0
  344. package/legacy/client/components/ui/slider/Slider.vue +3 -0
  345. package/legacy/client/components/ui/slider/index.ts +1 -0
  346. package/legacy/client/components/ui/sonner/Sonner.vue +3 -0
  347. package/legacy/client/components/ui/sonner/index.ts +1 -0
  348. package/legacy/client/components/ui/stepper/Stepper.vue +3 -0
  349. package/legacy/client/components/ui/stepper/StepperDescription.vue +3 -0
  350. package/legacy/client/components/ui/stepper/StepperIndicator.vue +3 -0
  351. package/legacy/client/components/ui/stepper/StepperItem.vue +3 -0
  352. package/legacy/client/components/ui/stepper/StepperSeparator.vue +3 -0
  353. package/legacy/client/components/ui/stepper/StepperTitle.vue +3 -0
  354. package/legacy/client/components/ui/stepper/StepperTrigger.vue +3 -0
  355. package/legacy/client/components/ui/stepper/index.ts +1 -0
  356. package/legacy/client/components/ui/switch/Switch.vue +3 -0
  357. package/legacy/client/components/ui/switch/index.ts +1 -0
  358. package/legacy/client/components/ui/table/Table.vue +3 -0
  359. package/legacy/client/components/ui/table/TableBody.vue +3 -0
  360. package/legacy/client/components/ui/table/TableCaption.vue +3 -0
  361. package/legacy/client/components/ui/table/TableCell.vue +3 -0
  362. package/legacy/client/components/ui/table/TableEmpty.vue +3 -0
  363. package/legacy/client/components/ui/table/TableFooter.vue +3 -0
  364. package/legacy/client/components/ui/table/TableHead.vue +3 -0
  365. package/legacy/client/components/ui/table/TableHeader.vue +3 -0
  366. package/legacy/client/components/ui/table/TableRow.vue +3 -0
  367. package/legacy/client/components/ui/table/index.ts +1 -0
  368. package/legacy/client/components/ui/tabs/Tabs.vue +3 -0
  369. package/legacy/client/components/ui/tabs/TabsContent.vue +3 -0
  370. package/legacy/client/components/ui/tabs/TabsList.vue +3 -0
  371. package/legacy/client/components/ui/tabs/TabsTrigger.vue +3 -0
  372. package/legacy/client/components/ui/tabs/index.ts +1 -0
  373. package/legacy/client/components/ui/tags-input/TagsInput.vue +3 -0
  374. package/legacy/client/components/ui/tags-input/TagsInputInput.vue +3 -0
  375. package/legacy/client/components/ui/tags-input/TagsInputItem.vue +3 -0
  376. package/legacy/client/components/ui/tags-input/TagsInputItemDelete.vue +3 -0
  377. package/legacy/client/components/ui/tags-input/TagsInputItemText.vue +3 -0
  378. package/legacy/client/components/ui/tags-input/index.ts +1 -0
  379. package/legacy/client/components/ui/textarea/Textarea.vue +3 -0
  380. package/legacy/client/components/ui/textarea/index.ts +1 -0
  381. package/legacy/client/components/ui/toggle/Toggle.vue +3 -0
  382. package/legacy/client/components/ui/toggle/index.ts +1 -0
  383. package/legacy/client/components/ui/toggle-group/ToggleGroup.vue +3 -0
  384. package/legacy/client/components/ui/toggle-group/ToggleGroupItem.vue +3 -0
  385. package/legacy/client/components/ui/toggle-group/index.ts +1 -0
  386. package/legacy/client/components/ui/tooltip/Tooltip.vue +3 -0
  387. package/legacy/client/components/ui/tooltip/TooltipContent.vue +3 -0
  388. package/legacy/client/components/ui/tooltip/TooltipProvider.vue +3 -0
  389. package/legacy/client/components/ui/tooltip/TooltipTrigger.vue +3 -0
  390. package/legacy/client/components/ui/tooltip/index.ts +1 -0
  391. package/legacy/client/facades/acl.facade.ts +1 -0
  392. package/legacy/client/facades/app.facade.ts +6 -0
  393. package/legacy/client/facades/auth.facade.ts +1 -0
  394. package/legacy/client/facades/config.facade.ts +1 -0
  395. package/legacy/client/facades/fetch.facade.ts +1 -0
  396. package/legacy/client/facades/logger.facade.ts +1 -0
  397. package/legacy/client/facades/menu.facade.ts +1 -0
  398. package/legacy/client/facades/router.facade.ts +1 -0
  399. package/legacy/client/facades/translator.facade.ts +10 -0
  400. package/legacy/client/utils/autoPages.ts +1 -0
  401. package/legacy/client/utils/createId.ts +1 -0
  402. package/legacy/client/utils/di.ts +1 -0
  403. package/legacy/client/utils/fetcher.ts +1 -0
  404. package/legacy/client/utils/file.ts +1 -0
  405. package/legacy/client/utils/index.ts +7 -0
  406. package/legacy/client/utils/logger.ts +1 -0
  407. package/legacy/client/utils/toast.ts +1 -0
  408. package/legacy/server/entities/file.entity.ts +4 -0
  409. package/legacy/server/exceptions/base.ts +4 -0
  410. package/legacy/server/facades/arte.facade.ts +6 -0
  411. package/legacy/server/facades/config.facade.ts +4 -0
  412. package/legacy/server/facades/db.facade.ts +4 -0
  413. package/legacy/server/facades/download.facade.ts +4 -0
  414. package/legacy/server/facades/drive.facade.ts +4 -0
  415. package/legacy/server/facades/logger.facade.ts +4 -0
  416. package/legacy/server/facades/router.facade.ts +4 -0
  417. package/legacy/server/middlewares/auth.middleware.ts +6 -0
  418. package/legacy/server/middlewares/authorization.middleware.ts +8 -0
  419. package/legacy/server/mixins/hooks.mixin.ts +6 -0
  420. package/legacy/server/mixins/model.mixin.ts +6 -0
  421. package/legacy/server/mixins/modelConfig.mixin.ts +4 -0
  422. package/legacy/server/queries/index.ts +6 -0
  423. package/legacy/server/services/metadataQuery.service.ts +6 -0
  424. package/legacy/server/services/routerResourceConfig.service.ts +5 -0
  425. package/legacy/shared/services/validator.service.ts +4 -0
  426. package/legacy/shared/utils/compose.ts +8 -0
  427. package/legacy/shared/utils/tryCatch.ts +7 -0
  428. package/package.json +57 -13
  429. package/tsconfig.client.json +3 -3
  430. package/tsconfig.server.json +1 -1
  431. package/tsdown/createTsdownConfig.js +29 -0
  432. package/tsdown.config.ts +55 -2
  433. package/vite/createViteConfig.js +55 -0
  434. package/vite/plugins/zenith.js +143 -0
  435. package/vite.config.ts +72 -0
  436. 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+IHN0cmluZyB8IHVuZGVmaW5lZDtcbmRlY2xhcmUgY29uc3QgZ3Vlc3RHdWFyZDogKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGRlZmF1bHQgZ3Vlc3RHdWFyZDtcbiIsImltcG9ydCB0eXBlIHsgTmF2aWdhdGlvbkd1YXJkIH0gZnJvbSAndnVlLXJvdXRlcic7XG5kZWNsYXJlIGNvbnN0IHNldHVwR3VhcmQ6IE5hdmlnYXRpb25HdWFyZDtcbmV4cG9ydCBkZWZhdWx0IHNldHVwR3VhcmQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsSUFBVyxnQkFBYztDQUFDO0VBQUksTUFBSSxDQUFBLEVBQUk7Q0FBRTtFQUFDO0VBQUM7RUFBTTtFQUFJO0NBQUM7Ozs7QUNEckQsSUFBSSx3QkFBc0I7Q0FBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzFCLElBQUksbUJBQWdCO0NBQUE7T0FBVSxDQUFBLFFBQWEsc0JBQWlCO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0Q1RCxJQUFJLFlBQVk7Q0FBQztFQUFJLE1BQUs7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMxQixJQUFJLE9BQUk7Q0FBQTtPQUFZLENBQUEsVUFBVTtDQUFBO0VBQU07RUFBRztFQUFLO0VBQUk7RUFBQTtDQUFBOzs7O0FDQ2hELElBQUksa0JBQWtCO0NBQUM7RUFBRyxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBSSxhQUFVO0NBQUk7T0FBVTtFQUFDO0VBQUM7RUFBaUI7RUFBQztFQUFZO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNINUQsSUFBQSxnQkFBVTtDQUFBO09BQWMsRUFBQTtDQUFBLENBQUEsR0FBQTtDQUFBO0FBQ3hCLElBQUksY0FBVztDQUFBO09BQU07RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRnJCLElBQU8sZUFBVTtDQUFBO09BQWE7RUFBTztFQUFDO0VBQVk7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDbEQsSUFBSSxlQUFlO0NBQUE7RUFBQSxNQUFRO0VBQUE7RUFBSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0MvQixJQUFBLHNCQUFxQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQTRCO0VBQUE7RUFBYTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0E5RCxJQUFBLG1CQUFxQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQXlCO0VBQUE7RUFBYTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNGM0QsSUFBQSxnQkFBb0I7Q0FBQztPQUFBLENBQUEsY0FBYztDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQW5DLElBQUEsZ0JBQW9CO0NBQUM7T0FBQTtFQUFBO0VBQWM7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDR25DLElBQUksa0JBQWtCO0NBQUM7T0FBVSxFQUFFO0NBQUUsRUFBQTtDQUFBO0FBQ3JDLElBQUEsY0FBVTtDQUFBO09BQVksRUFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDdEIsSUFBVywwQkFBb0I7Q0FBQTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDL0IsSUFBSSxxQkFBbUI7Q0FBQTtPQUFRO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNML0IsSUFBQSxtQkFBcUI7Q0FBQTtPQUFBLENBQUEsUUFBaUIsbUJBQVE7Q0FBQTtFQUFvQjtFQUFDO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNBbkUsSUFBSSxnQkFBYztDQUFHO0VBQUksTUFBQztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBSSxXQUFVO0NBQUE7T0FBTSxDQUFPLGNBQVk7Q0FBSTtFQUFDO0VBQUk7RUFBQTtFQUFRO0VBQUk7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0Q1RCxJQUFPLGFBQVU7Q0FBQTtPQUFXLEVBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUM1QixJQUFJLGNBQVM7Q0FBTTtPQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0NuQixJQUFPLFNBQVU7Q0FBQTtPQUFj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O0VBQUEsY0FBQTtFQUFBLE1BQUE7RUFBQSxjQUFBO0VBQUEsY0FBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBLGNBQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQTtFQUFBLGNBQUE7RUFBQTtFQUFBLGNBQUE7RUFBQSxjQUFBO0VBQUE7RUFBQSxNQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQTtFQUFBLGNBQUE7RUFBQSxjQUFBO0VBQUEsY0FBQTtFQUFBO0VBQUEsTUFBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBLE1BQUE7RUFBQSxNQUFBO0VBQUEsY0FBQTtFQUFBLE1BQUE7RUFBQSxjQUFBO0VBQUEsY0FBQTtFQUFBLE1BQUE7RUFBQSxjQUFBO0VBQUEsY0FBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0Q5SixJQUFPLG1CQUFVO0NBQUE7T0FBaUIsRUFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDbEMsSUFBSSxrQkFBZ0I7Q0FBQTtPQUFBLENBQUEsa0JBQUEsZ0JBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDcEIsSUFBSSxZQUFVO0NBQUE7T0FBUSxDQUFBLGdCQUFBO0NBQUEsQ0FBQSxHQUFBO0NBQUE7Ozs7QUNIdEIsSUFBTyxvQkFBVTtDQUFBO09BQWtCLEVBQUE7Q0FBQSxDQUFBLEdBQUE7Q0FBQTtBQUNuQyxJQUFJLG1CQUFnQjtDQUFBO09BQUEsQ0FBQSxrQkFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDcEIsSUFBQSxhQUFBO0NBQUE7T0FBQSxFQUFBO0NBQUEsRUFBQTtDQUFBOzs7O0FDREEsSUFBQSxhQUFjO0NBQUE7T0FBWSxDQUFBLGdCQUFlO0NBQUEsQ0FBQSxHQUFBO0NBQUEifQ==