diff --git a/404.html b/404.html index b10916568..38fb1f30a 100644 --- a/404.html +++ b/404.html @@ -10,13 +10,13 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - + + \ No newline at end of file diff --git a/assets/js/096fb135.eb58b521.js b/assets/js/096fb135.771100c8.js similarity index 99% rename from assets/js/096fb135.eb58b521.js rename to assets/js/096fb135.771100c8.js index ebb857e22..c9e948a10 100644 --- a/assets/js/096fb135.eb58b521.js +++ b/assets/js/096fb135.771100c8.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6299],{4137:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>d});var r=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},m="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},N=r.forwardRef((function(e,t){var a=e.components,i=e.mdxType,n=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),m=p(a),N=i,d=m["".concat(s,".").concat(N)]||m[N]||k[N]||n;return a?r.createElement(d,l(l({ref:t},u),{},{components:a})):r.createElement(d,l({ref:t},u))}));function d(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=a.length,l=new Array(n);l[0]=N;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[m]="string"==typeof e?e:i,l[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>k,frontMatter:()=>n,metadata:()=>o,toc:()=>p});var r=a(7462),i=(a(7294),a(4137));const n={},l=void 0,o={unversionedId:"unraid-os/release-notes/6.11.0",id:"unraid-os/release-notes/6.11.0",title:"6.11.0",description:"Version 6.11.0 2022-09-23",source:"@site/docs/unraid-os/release-notes/6.11.0.md",sourceDirName:"unraid-os/release-notes",slug:"/unraid-os/release-notes/6.11.0",permalink:"/unraid-os/release-notes/6.11.0",draft:!1,editUrl:"https://github.com/unraid/docs/tree/main/docs/unraid-os/release-notes/6.11.0.md",tags:[],version:"current",frontMatter:{},sidebar:"unraidSidebar",previous:{title:"Version 6.12.3 2023-07-14",permalink:"/unraid-os/release-notes/6.12.3"},next:{title:"6.11.1",permalink:"/unraid-os/release-notes/6.11.1"}},s={},p=[{value:"Version 6.11.0 2022-09-23",id:"version-6110-2022-09-23",level:2},{value:"Improvements",id:"improvements",level:3},{value:"Bug fixes",id:"bug-fixes",level:3},{value:"Change Log vs. Unraid OS 6.10.3",id:"change-log-vs-unraid-os-6103",level:2},{value:"Management",id:"management",level:4},{value:"Linux kernel",id:"linux-kernel",level:4},{value:"Base distro",id:"base-distro",level:4}],u={toc:p},m="wrapper";function k(e){let{components:t,...a}=e;return(0,i.kt)(m,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"version-6110-2022-09-23"},"Version 6.11.0 2022-09-23"),(0,i.kt)("h3",{id:"improvements"},"Improvements"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"With this release there have been many base package updates including several CVE mitigations.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"The Linux kernel update includes mitigation for ",(0,i.kt)("a",{parentName:"p",href:"https://lwn.net/Articles/898011/"},"Processor MMIO stale-data vulnerabilities"),".")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"The plugin system has been refactored so that 'plugin install' can proceed in the background. This alleviates\nissue where a user may think installation has crashed and closes the window, when actually it has not crashed.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Many other webGUI improvements.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Added support for specifying custom VNC ports in VM manager form editor. Custom port number specified\nusing XML editor will be preserved when switching to forms-based editor.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Spin down for non-rotational devices now places those devices in standby mode if supported by the device. Similarly,\nspin up, or any I/O to the device will restore normal operation.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Display NVMe device capabilities obtained from SMART info.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Added necessary kernel CONFIG options to support Sr-iov with mellanox connectx4+ cards")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Merged Dynamix SSD Trim plugin into Unraid OS webGUI.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Preliminary support for cgroup2. Pass 'unraidcgroup2' on syslinux append line to activate.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Included perl in base distro."))),(0,i.kt)("h3",{id:"bug-fixes"},"Bug fixes"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fixed issue in VM manager where VM log can not open when VM name has an embedded '#' character.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fixed issue where Parity check pause/resume on schedule was broken.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fixed issue installing registration keys.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Updated 'samba' to address security mitigations. Also should get rid of kernel message\ncomplaining about \"Attempt to set a LOCK_MAND lock via flock(2).\"")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fixed issue switching from 'test' branch to 'next'.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Quit trying to spin down devices which do not support standby mode.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fixed AD join issued caused by outdated cyras-sasl library")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Do not start mcelog daemon if CPU is unsupported (most AMD processors).")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fix nginx not recognizing SSL certificate renewal.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"wireguard: check the reachability of the gateway (next-hop) before starting the WG tunnel.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},'Ignore "ERROR:" strings mixed in "btrfs filesystem show" command output.\nThis solves problem where libblkid could tag a parity disk as having btrfs file system\nbecause the place it looks for the "magic number" happens to matches btrfs. Subsequent\n"btrfs fi" commands will attempt to read btrfs metadata from this device which fails\nbecause there really is not a btrfs filesystem there.')),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fixed bug in mover that prevented files from being moved from unRAID array to a cache pool (mode Prefer)\nif the share name contains a space."))),(0,i.kt)("h2",{id:"change-log-vs-unraid-os-6103"},"Change Log vs. Unraid OS 6.10.3"),(0,i.kt)("h4",{id:"management"},"Management"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Add sha256 checks of un-zipped files in unRAIDServer.plg."),(0,i.kt)("li",{parentName:"ul"},'bash: in /etc/profile omit "." (current directory) from PATH'),(0,i.kt)("li",{parentName:"ul"},"docker: do not call 'docker stop' if there are no running containers"),(0,i.kt)("li",{parentName:"ul"},"emhttpd: improve standby (spinning) support"),(0,i.kt)("li",{parentName:"ul"},"mover: fixed issue preventing moving filed from array to cache if share name contains a space"),(0,i.kt)("li",{parentName:"ul"},"rc.nginx: enable OCSP stapling on certs which include an OCSP responder URL"),(0,i.kt)("li",{parentName:"ul"},"rc.nginx: compress 'woff' font files and instruct browser to cache"),(0,i.kt)("li",{parentName:"ul"},"rc.wireguard: add better troubleshooting for WireGuard autostart"),(0,i.kt)("li",{parentName:"ul"},"rc.S: support early load of plugin driver modules"),(0,i.kt)("li",{parentName:"ul"},"SMB: fixed 'fruit' settings for the USB Flash boot device"),(0,i.kt)("li",{parentName:"ul"},"SMB: remove NTLMv1 support since removed from Linux kernel"),(0,i.kt)("li",{parentName:"ul"},"SMB: (temporarily) move vfs_fruit settings into separate /etc/samba/smb-fruit.conf file"),(0,i.kt)("li",{parentName:"ul"},"SMB: (temporarily) get rid of Samba 'idmap_hash is deprecated' nag lines"),(0,i.kt)("li",{parentName:"ul"},"startup: Prevent installing downgraded versions of packages which might exist in /boot/extra"),(0,i.kt)("li",{parentName:"ul"},"upc: version v1.3.0"),(0,i.kt)("li",{parentName:"ul"},"webgui: Plugin system update",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Detach frontend and backend operation"),(0,i.kt)("li",{parentName:"ul"},"Use nchan as communication channel"),(0,i.kt)("li",{parentName:"ul"},"Allow window to be closed while backend continues"),(0,i.kt)("li",{parentName:"ul"},"Use SWAL as window manager"),(0,i.kt)("li",{parentName:"ul"},"Added multi remove ability on Plugins page"),(0,i.kt)("li",{parentName:"ul"},"Added update all plugins with details"))),(0,i.kt)("li",{parentName:"ul"},"webgui: docker: use docker label as primary source for WebUI",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"This makes the 'net.unraid.docker.webui' docker label the primary source when parsing the web UI address. If the docker label is missing, the template value will be used instead."))),(0,i.kt)("li",{parentName:"ul"},"webgui: Update Credits.page"),(0,i.kt)("li",{parentName:"ul"},"webgui: VM manager: Fix VM log can not open when VM name has an embedded '#'"),(0,i.kt)("li",{parentName:"ul"},"webgui: Management Access page: add details for self-signed certs"),(0,i.kt)("li",{parentName:"ul"},"webgui: Parity check: fix regression error"),(0,i.kt)("li",{parentName:"ul"},"webgui: Remove session creation in scripts"),(0,i.kt)("li",{parentName:"ul"},"webgui: Update ssh key regex",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Add support for ed25519/sk-ed25519"),(0,i.kt)("li",{parentName:"ul"},"Remove support for ecdsa (insecure)"),(0,i.kt)("li",{parentName:"ul"},"Use proper regex to check for valid key types"))),(0,i.kt)("li",{parentName:"ul"},"webgui: misc. style updates"),(0,i.kt)("li",{parentName:"ul"},"webgui: Management access: HTTP port setting should always be enabled"),(0,i.kt)("li",{parentName:"ul"},"webgui: Fix: preserve vnc port settings"),(0,i.kt)("li",{parentName:"ul"},"webgui: Fix regression error in plugin system"),(0,i.kt)("li",{parentName:"ul"},"webgui: Fix issue installing registration keys"),(0,i.kt)("li",{parentName:"ul"},"webgui: Highlight case selection when custom image is selected"),(0,i.kt)("li",{parentName:"ul"},"webgui: fix(upc): v1.4.2 apiVersion check regression"),(0,i.kt)("li",{parentName:"ul"},"webgui: Update Disk Capabilities pages for NVME drives"),(0,i.kt)("li",{parentName:"ul"},"webgui: chore(upc): v1.6.0"),(0,i.kt)("li",{parentName:"ul"},"webgui: Plugin system and docker update"),(0,i.kt)("li",{parentName:"ul"},"webgui: System info - style update"),(0,i.kt)("li",{parentName:"ul"},"webgui: Plugins: keep header buttons in same position"),(0,i.kt)("li",{parentName:"ul"},"webgui: Prevent overflow in container size for low resolutions"),(0,i.kt)("li",{parentName:"ul"},"webgui: VM Manager: Add boot order to GUI and CD hot plug function"),(0,i.kt)("li",{parentName:"ul"},"webgui: Docker Manager: add ability to specify shell with container label."),(0,i.kt)("li",{parentName:"ul"},"webgui: fix: Discord notification agent url"),(0,i.kt)("li",{parentName:"ul"},"webgui: Suppress info icon in banner message when no info is available"),(0,i.kt)("li",{parentName:"ul"},"webgui: Add Spindown message and use -n for identity if scsi drive."),(0,i.kt)("li",{parentName:"ul"},"webgui: Fix SAS Selftest"),(0,i.kt)("li",{parentName:"ul"},"webgui: Fix plugin multi updates"),(0,i.kt)("li",{parentName:"ul"},"webgui: UPS display enhancements:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Add icon for each category"),(0,i.kt)("li",{parentName:"ul"},"Add translation in UPS section on dashboard"),(0,i.kt)("li",{parentName:"ul"},"Add Output voltage / frequency value"),(0,i.kt)("li",{parentName:"ul"},"Add coloring depending on settings"),(0,i.kt)("li",{parentName:"ul"},"Normalize units"),(0,i.kt)("li",{parentName:"ul"},"Make updates near real-time"),(0,i.kt)("li",{parentName:"ul"},"Added UPS model field"))),(0,i.kt)("li",{parentName:"ul"},"webgui: JQuery: version 3.6.1"),(0,i.kt)("li",{parentName:"ul"},"webgui: JQueryUI: version 1.13.2"),(0,i.kt)("li",{parentName:"ul"},"webgui: improved 'cache busting' on font file urls"),(0,i.kt)("li",{parentName:"ul"},"webgui: Fixed: text color in docker popup window sometimes wrong"),(0,i.kt)("li",{parentName:"ul"},"webgui: Fixed: show read errors during Read Check"),(0,i.kt)("li",{parentName:"ul"},"webgui: VM Manager: Add USB Startup policy; add Missing USB support"),(0,i.kt)("li",{parentName:"ul"},"webgui: Docker: fixed javascript error when no containers exist"),(0,i.kt)("li",{parentName:"ul"},"webgui: added 3rd party system diagnostics",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"added diagnostics for third party plugin packages"),(0,i.kt)("li",{parentName:"ul"},"added diagnostics for /dev/dri devices"),(0,i.kt)("li",{parentName:"ul"},"added diagnostics for /dev/dvb devices"),(0,i.kt)("li",{parentName:"ul"},"added diagnostics for nvidia devices")))),(0,i.kt)("h4",{id:"linux-kernel"},"Linux kernel"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"version 5.19.9 (CVE-2022-21123 (CVE-2022-21123 CVE-2022-21125 CVE-2022-21166)"),(0,i.kt)("li",{parentName:"ul"},"md/unraid: version 2.9.24"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_IOMMU_DEFAULT_PASSTHROUGH: Passthrough"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_VIRTIO_IOMMU: Virtio IOMMU driver"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_X86_AMD_PSTATE: AMD Processor P-State driver"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_FIREWIRE: FireWire driver stack"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_FIREWIRE_OHCI: OHCI-1394 controllers"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_FIREWIRE_SBP2: Storage devices (SBP-2 protocol)"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_FIREWIRE_NET: IP networking over 1394"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_INPUT_UINPUT: User level driver support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_INPUT_JOYDEV: Joystick interface"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_INPUT_JOYSTICK: Joysticks/Gamepads"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_JOYSTICK_XPAD: X-Box gamepad support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_JOYSTICK_XPAD_FF: X-Box gamepad rumble support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_JOYSTICK_XPAD_LEDS: LED Support for Xbox360 controller 'BigX' LED"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_MLX5_TLS: Mellanox Technologies TLS Connect-X support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_MLX5_ESWITCH: Mellanox Technologies MLX5 SRIOV E-Switch suppor"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_MLX5_CLS_ACT: MLX5 TC classifier action support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_MLX5_TC_SAMPLE: MLX5 TC sample offload support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_MLXSW_SPECTRUM: Mellanox Technologies Spectrum family support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_NET_SWITCHDEV: Switch (and switch-ish) device support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_TLS: Transport Layer Security support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_TLS_DEVICE: Transport Layer Security HW offload"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_TLS_TOE: Transport Layer Security TCP stack bypass"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_VMD: Intel Volume Management Device Driver"),(0,i.kt)("li",{parentName:"ul"},"added additional sensor drivers:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"CONFIG_AMD_SFH_HID: AMD Sensor Fusion Hub"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_AQUACOMPUTER_D5NEXT: Aquacomputer D5 Next watercooling pump"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_MAX6620: Maxim MAX6620 fan controller"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_NZXT_SMART2: NZXT RGB & Fan Controller/Smart Device v2"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_SBRMI: Emulated SB-RMI sensor"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_SHT4x: Sensiron humidity and temperature sensors. SHT4x and compat."),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_SY7636A: Silergy SY7636A"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_INA238: Texas Instruments INA238"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_TMP464: Texas Instruments TMP464 and compatible"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_ASUS_WMI: ASUS WMI X370/X470/B450/X399"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_ASUS_WMI_EC: ASUS WMI B550/X570"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_ASUS_EC: ASUS EC Sensors"))),(0,i.kt)("li",{parentName:"ul"},"patch: add reference to missing firmware in drivers/bluetooth/btrtl.c",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"rtl8723d_fw.bin"),(0,i.kt)("li",{parentName:"ul"},"rtl8761b_fw.bin"),(0,i.kt)("li",{parentName:"ul"},"rtl8761bu_fw.bin"),(0,i.kt)("li",{parentName:"ul"},"rtl8821c_fw.bin"),(0,i.kt)("li",{parentName:"ul"},"rtl8822cs_fw.bin"),(0,i.kt)("li",{parentName:"ul"},"rtl8822cu_fw.bin"))),(0,i.kt)("li",{parentName:"ul"},"CONFIG_BPF_UNPRIV_DEFAULT_OFF: Disable unprivileged BPF by default"),(0,i.kt)("li",{parentName:"ul"},"patch: quirk for Team Group MP33 M.2 2280 1TB NVMe (globally duplicate IDs for nsid)"),(0,i.kt)("li",{parentName:"ul"},"turn on all IPv6 kernel options:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"CONFIG",(0,i.kt)("em",{parentName:"li"},"INET6"),"*"),(0,i.kt)("li",{parentName:"ul"},"CONFIG",(0,i.kt)("em",{parentName:"li"},"IPV6"),"*"))),(0,i.kt)("li",{parentName:"ul"},"CONFIG_RC_CORE: Remote Controller support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SFC_SIENA: Solarflare SFC9000 support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SFC_SIENA_MCDI_LOGGING: Solarflare SFC9000-family MCDI logging support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SFC_SIENA_MCDI_MON: Solarflare SFC9000-family hwmon support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SFC_SIENA_SRIOV: Solarflare SFC9000-family SR-IOV support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_ZRAM: Compressed RAM block device support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_ZRAM_DEF_COMP_LZ4: Default ram compressor (lz4)"),(0,i.kt)("li",{parentName:"ul"},"turn on all EDAC kernel options",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"CONFIG_EDAC: EDAC (Error Detection And Correction) reporting"),(0,i.kt)("li",{parentName:"ul"},"CONFIG",(0,i.kt)("em",{parentName:"li"},"EDAC"),"*")))),(0,i.kt)("h4",{id:"base-distro"},"Base distro"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"aaa_base: version 15.1"),(0,i.kt)("li",{parentName:"ul"},"aaa_glibc-solibs: version 2.36"),(0,i.kt)("li",{parentName:"ul"},"aaa_libraries: version 15.1"),(0,i.kt)("li",{parentName:"ul"},"at: version 3.2.3"),(0,i.kt)("li",{parentName:"ul"},"bind: version 9.18.6"),(0,i.kt)("li",{parentName:"ul"},"btrfs-progs: version 5.19.1"),(0,i.kt)("li",{parentName:"ul"},"ca-certificates: version 20220622"),(0,i.kt)("li",{parentName:"ul"},"cifs-utils: version 7.0"),(0,i.kt)("li",{parentName:"ul"},"coreutils: version 9.1"),(0,i.kt)("li",{parentName:"ul"},"cracklib: version 2.9.8"),(0,i.kt)("li",{parentName:"ul"},"cryptsetup: version 2.5.0"),(0,i.kt)("li",{parentName:"ul"},"curl: version 7.85.0"),(0,i.kt)("li",{parentName:"ul"},"cyrus-sasl: version 2.1.28"),(0,i.kt)("li",{parentName:"ul"},"dbus: version 1.14.0"),(0,i.kt)("li",{parentName:"ul"},"dhcpcd: version 9.4.1"),(0,i.kt)("li",{parentName:"ul"},"dmidecode: version 3.4"),(0,i.kt)("li",{parentName:"ul"},"docker: version 20.10.17 (CVE-2022-29526 CVE-2022-30634 CVE-2022-30629 CVE-2022-30580 CVE-2022-29804 CVE-2022-29162 CVE-2022-31030)"),(0,i.kt)("li",{parentName:"ul"},"etc: version 15.1"),(0,i.kt)("li",{parentName:"ul"},"ethtool: version 5.19"),(0,i.kt)("li",{parentName:"ul"},"eudev: version 3.2.11"),(0,i.kt)("li",{parentName:"ul"},"file: version 5.43"),(0,i.kt)("li",{parentName:"ul"},"findutils: version 4.9.0"),(0,i.kt)("li",{parentName:"ul"},"firefox: version 105.0.r20220922151854-x86_64 (AppImage)"),(0,i.kt)("li",{parentName:"ul"},"fuse3: version 3.12.0"),(0,i.kt)("li",{parentName:"ul"},"gawk: version 5.2.0"),(0,i.kt)("li",{parentName:"ul"},"gdbm: version 1.23"),(0,i.kt)("li",{parentName:"ul"},"git: version 2.37.3"),(0,i.kt)("li",{parentName:"ul"},"glib2: version 2.72.3"),(0,i.kt)("li",{parentName:"ul"},"glibc: version 2.36"),(0,i.kt)("li",{parentName:"ul"},"glibc-zoneinfo: version 2022c"),(0,i.kt)("li",{parentName:"ul"},"gnutls: version 3.7.7"),(0,i.kt)("li",{parentName:"ul"},"gptfdisk: version 1.0.9"),(0,i.kt)("li",{parentName:"ul"},"grep: version 3.8"),(0,i.kt)("li",{parentName:"ul"},"gzip: version 1.12"),(0,i.kt)("li",{parentName:"ul"},"hdparm: version 9.65"),(0,i.kt)("li",{parentName:"ul"},"htop: version 3.2.1"),(0,i.kt)("li",{parentName:"ul"},"icu4c: version 71.1"),(0,i.kt)("li",{parentName:"ul"},"inotify-tools: version 3.22.6.0"),(0,i.kt)("li",{parentName:"ul"},"iperf3: version 3.11"),(0,i.kt)("li",{parentName:"ul"},"iproute2: version 5.19.0"),(0,i.kt)("li",{parentName:"ul"},"iptables: version 1.8.8"),(0,i.kt)("li",{parentName:"ul"},"jemalloc: version 5.3.0"),(0,i.kt)("li",{parentName:"ul"},"json-c: version 0.16_20220414"),(0,i.kt)("li",{parentName:"ul"},"json-glib: version 1.6.6"),(0,i.kt)("li",{parentName:"ul"},"kmod: version 30"),(0,i.kt)("li",{parentName:"ul"},"krb5: version 1.20"),(0,i.kt)("li",{parentName:"ul"},"libaio: version 0.3.113"),(0,i.kt)("li",{parentName:"ul"},"libarchive: version 3.6.1"),(0,i.kt)("li",{parentName:"ul"},"libcap-ng: version 0.8.3"),(0,i.kt)("li",{parentName:"ul"},"libcgroup: version 3.0.0"),(0,i.kt)("li",{parentName:"ul"},"libdrm: version 2.4.113"),(0,i.kt)("li",{parentName:"ul"},"libepoxy: version 1.5.10"),(0,i.kt)("li",{parentName:"ul"},"libffi: version 3.4.2"),(0,i.kt)("li",{parentName:"ul"},"libgcrypt: version 1.10.1"),(0,i.kt)("li",{parentName:"ul"},"libgpg-error: version 1.45"),(0,i.kt)("li",{parentName:"ul"},"libidn: version 1.41"),(0,i.kt)("li",{parentName:"ul"},"libjpeg-turbo: version 2.1.4"),(0,i.kt)("li",{parentName:"ul"},"libmnl: version 1.0.5"),(0,i.kt)("li",{parentName:"ul"},"libnetfilter_conntrack: version 1.0.9"),(0,i.kt)("li",{parentName:"ul"},"libnfnetlink: version 1.0.2"),(0,i.kt)("li",{parentName:"ul"},"libnftnl: version 1.2.3"),(0,i.kt)("li",{parentName:"ul"},"libnl3: version 3.7.0"),(0,i.kt)("li",{parentName:"ul"},"libpng: version 1.6.38"),(0,i.kt)("li",{parentName:"ul"},"libssh: version 0.10.4"),(0,i.kt)("li",{parentName:"ul"},"libtasn1: version 4.19.0"),(0,i.kt)("li",{parentName:"ul"},"libtirpc: version 1.3.3"),(0,i.kt)("li",{parentName:"ul"},"liburcu: version 0.13.1"),(0,i.kt)("li",{parentName:"ul"},"libusb: version 1.0.26"),(0,i.kt)("li",{parentName:"ul"},"libwebp: version 1.2.4"),(0,i.kt)("li",{parentName:"ul"},"libxml2: version 2.9.14"),(0,i.kt)("li",{parentName:"ul"},"libxslt: version 1.1.36"),(0,i.kt)("li",{parentName:"ul"},"libzip: version 1.9.2"),(0,i.kt)("li",{parentName:"ul"},"logrotate: version 3.20.1"),(0,i.kt)("li",{parentName:"ul"},"lsof: version 4.95.0"),(0,i.kt)("li",{parentName:"ul"},"lzip: version 1.23"),(0,i.kt)("li",{parentName:"ul"},"mc: version 4.8.28"),(0,i.kt)("li",{parentName:"ul"},"mcelog: version 189"),(0,i.kt)("li",{parentName:"ul"},"nano: version 6.4"),(0,i.kt)("li",{parentName:"ul"},"nfs-utils: version 2.6.2"),(0,i.kt)("li",{parentName:"ul"},"nghttp2: version 1.49.0"),(0,i.kt)("li",{parentName:"ul"},"nginx: version 1.22.0"),(0,i.kt)("li",{parentName:"ul"},"ntfs-3g: version 2022.5.17"),(0,i.kt)("li",{parentName:"ul"},"ntp: version 4.2.8p15"),(0,i.kt)("li",{parentName:"ul"},"oniguruma: version 6.9.8"),(0,i.kt)("li",{parentName:"ul"},"openssh: version 9.0p1"),(0,i.kt)("li",{parentName:"ul"},"openssl: version 1.1.1q (CVE-2022-1292 CVE-2022-2097 CVE-2022-2274)"),(0,i.kt)("li",{parentName:"ul"},"openssl-solibs: version 1.1.1q (CVE-2022-1292)"),(0,i.kt)("li",{parentName:"ul"},"p11-kit: version 0.24.1"),(0,i.kt)("li",{parentName:"ul"},"pciutils: version 3.8.0"),(0,i.kt)("li",{parentName:"ul"},"pcre2: version 10.40"),(0,i.kt)("li",{parentName:"ul"},"perl: version 5.36.0"),(0,i.kt)("li",{parentName:"ul"},"php: version 7.4.30 (CVE-2022-31625 CVE-2022-31626)"),(0,i.kt)("li",{parentName:"ul"},"pkgtools: version 15.1"),(0,i.kt)("li",{parentName:"ul"},"rpcbind: version 1.2.6"),(0,i.kt)("li",{parentName:"ul"},"rsync: version 3.2.6"),(0,i.kt)("li",{parentName:"ul"},"samba: version 4.17.0 (CVE-2022-2031 CVE-2022-32744 CVE-2022-32745 CVE-2022-32746 CVE-2022-32742)"),(0,i.kt)("li",{parentName:"ul"},"sqlite: version 3.39.3"),(0,i.kt)("li",{parentName:"ul"},"sudo: version 1.9.11p3"),(0,i.kt)("li",{parentName:"ul"},"sysfsutils: version 2.1.1"),(0,i.kt)("li",{parentName:"ul"},"sysstat: version 12.6.0"),(0,i.kt)("li",{parentName:"ul"},"sysvinit-scripts: version 15.1"),(0,i.kt)("li",{parentName:"ul"},"talloc: version 2.3.4"),(0,i.kt)("li",{parentName:"ul"},"tar: version 1.34"),(0,i.kt)("li",{parentName:"ul"},"tevent: version 0.13.0"),(0,i.kt)("li",{parentName:"ul"},"tree: version 2.0.2"),(0,i.kt)("li",{parentName:"ul"},"util-linux: version 2.38.1"),(0,i.kt)("li",{parentName:"ul"},"wayland: version 1.21.0"),(0,i.kt)("li",{parentName:"ul"},"wget: version 1.21.3"),(0,i.kt)("li",{parentName:"ul"},"xfsprogs: version 5.18.0"),(0,i.kt)("li",{parentName:"ul"},"xz: version 5.2.6"),(0,i.kt)("li",{parentName:"ul"},"zlib: version 1.2.12")),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://www.wireguard.com/"},'"WireGuard" and the "WireGuard" logo are registered trademarks of Jason A. Donenfeld.')))}k.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6299],{4137:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>d});var r=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},m="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},N=r.forwardRef((function(e,t){var a=e.components,i=e.mdxType,n=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),m=p(a),N=i,d=m["".concat(s,".").concat(N)]||m[N]||k[N]||n;return a?r.createElement(d,l(l({ref:t},u),{},{components:a})):r.createElement(d,l({ref:t},u))}));function d(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=a.length,l=new Array(n);l[0]=N;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[m]="string"==typeof e?e:i,l[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>k,frontMatter:()=>n,metadata:()=>o,toc:()=>p});var r=a(7462),i=(a(7294),a(4137));const n={},l=void 0,o={unversionedId:"unraid-os/release-notes/6.11.0",id:"unraid-os/release-notes/6.11.0",title:"6.11.0",description:"Version 6.11.0 2022-09-23",source:"@site/docs/unraid-os/release-notes/6.11.0.md",sourceDirName:"unraid-os/release-notes",slug:"/unraid-os/release-notes/6.11.0",permalink:"/unraid-os/release-notes/6.11.0",draft:!1,editUrl:"https://github.com/unraid/docs/tree/main/docs/unraid-os/release-notes/6.11.0.md",tags:[],version:"current",frontMatter:{},sidebar:"unraidSidebar",previous:{title:"Version 6.12.4 2023-08-31",permalink:"/unraid-os/release-notes/6.12.4"},next:{title:"6.11.1",permalink:"/unraid-os/release-notes/6.11.1"}},s={},p=[{value:"Version 6.11.0 2022-09-23",id:"version-6110-2022-09-23",level:2},{value:"Improvements",id:"improvements",level:3},{value:"Bug fixes",id:"bug-fixes",level:3},{value:"Change Log vs. Unraid OS 6.10.3",id:"change-log-vs-unraid-os-6103",level:2},{value:"Management",id:"management",level:4},{value:"Linux kernel",id:"linux-kernel",level:4},{value:"Base distro",id:"base-distro",level:4}],u={toc:p},m="wrapper";function k(e){let{components:t,...a}=e;return(0,i.kt)(m,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"version-6110-2022-09-23"},"Version 6.11.0 2022-09-23"),(0,i.kt)("h3",{id:"improvements"},"Improvements"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"With this release there have been many base package updates including several CVE mitigations.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"The Linux kernel update includes mitigation for ",(0,i.kt)("a",{parentName:"p",href:"https://lwn.net/Articles/898011/"},"Processor MMIO stale-data vulnerabilities"),".")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"The plugin system has been refactored so that 'plugin install' can proceed in the background. This alleviates\nissue where a user may think installation has crashed and closes the window, when actually it has not crashed.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Many other webGUI improvements.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Added support for specifying custom VNC ports in VM manager form editor. Custom port number specified\nusing XML editor will be preserved when switching to forms-based editor.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Spin down for non-rotational devices now places those devices in standby mode if supported by the device. Similarly,\nspin up, or any I/O to the device will restore normal operation.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Display NVMe device capabilities obtained from SMART info.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Added necessary kernel CONFIG options to support Sr-iov with mellanox connectx4+ cards")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Merged Dynamix SSD Trim plugin into Unraid OS webGUI.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Preliminary support for cgroup2. Pass 'unraidcgroup2' on syslinux append line to activate.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Included perl in base distro."))),(0,i.kt)("h3",{id:"bug-fixes"},"Bug fixes"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fixed issue in VM manager where VM log can not open when VM name has an embedded '#' character.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fixed issue where Parity check pause/resume on schedule was broken.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fixed issue installing registration keys.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Updated 'samba' to address security mitigations. Also should get rid of kernel message\ncomplaining about \"Attempt to set a LOCK_MAND lock via flock(2).\"")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fixed issue switching from 'test' branch to 'next'.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Quit trying to spin down devices which do not support standby mode.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fixed AD join issued caused by outdated cyras-sasl library")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Do not start mcelog daemon if CPU is unsupported (most AMD processors).")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fix nginx not recognizing SSL certificate renewal.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"wireguard: check the reachability of the gateway (next-hop) before starting the WG tunnel.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},'Ignore "ERROR:" strings mixed in "btrfs filesystem show" command output.\nThis solves problem where libblkid could tag a parity disk as having btrfs file system\nbecause the place it looks for the "magic number" happens to matches btrfs. Subsequent\n"btrfs fi" commands will attempt to read btrfs metadata from this device which fails\nbecause there really is not a btrfs filesystem there.')),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Fixed bug in mover that prevented files from being moved from unRAID array to a cache pool (mode Prefer)\nif the share name contains a space."))),(0,i.kt)("h2",{id:"change-log-vs-unraid-os-6103"},"Change Log vs. Unraid OS 6.10.3"),(0,i.kt)("h4",{id:"management"},"Management"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Add sha256 checks of un-zipped files in unRAIDServer.plg."),(0,i.kt)("li",{parentName:"ul"},'bash: in /etc/profile omit "." (current directory) from PATH'),(0,i.kt)("li",{parentName:"ul"},"docker: do not call 'docker stop' if there are no running containers"),(0,i.kt)("li",{parentName:"ul"},"emhttpd: improve standby (spinning) support"),(0,i.kt)("li",{parentName:"ul"},"mover: fixed issue preventing moving filed from array to cache if share name contains a space"),(0,i.kt)("li",{parentName:"ul"},"rc.nginx: enable OCSP stapling on certs which include an OCSP responder URL"),(0,i.kt)("li",{parentName:"ul"},"rc.nginx: compress 'woff' font files and instruct browser to cache"),(0,i.kt)("li",{parentName:"ul"},"rc.wireguard: add better troubleshooting for WireGuard autostart"),(0,i.kt)("li",{parentName:"ul"},"rc.S: support early load of plugin driver modules"),(0,i.kt)("li",{parentName:"ul"},"SMB: fixed 'fruit' settings for the USB Flash boot device"),(0,i.kt)("li",{parentName:"ul"},"SMB: remove NTLMv1 support since removed from Linux kernel"),(0,i.kt)("li",{parentName:"ul"},"SMB: (temporarily) move vfs_fruit settings into separate /etc/samba/smb-fruit.conf file"),(0,i.kt)("li",{parentName:"ul"},"SMB: (temporarily) get rid of Samba 'idmap_hash is deprecated' nag lines"),(0,i.kt)("li",{parentName:"ul"},"startup: Prevent installing downgraded versions of packages which might exist in /boot/extra"),(0,i.kt)("li",{parentName:"ul"},"upc: version v1.3.0"),(0,i.kt)("li",{parentName:"ul"},"webgui: Plugin system update",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Detach frontend and backend operation"),(0,i.kt)("li",{parentName:"ul"},"Use nchan as communication channel"),(0,i.kt)("li",{parentName:"ul"},"Allow window to be closed while backend continues"),(0,i.kt)("li",{parentName:"ul"},"Use SWAL as window manager"),(0,i.kt)("li",{parentName:"ul"},"Added multi remove ability on Plugins page"),(0,i.kt)("li",{parentName:"ul"},"Added update all plugins with details"))),(0,i.kt)("li",{parentName:"ul"},"webgui: docker: use docker label as primary source for WebUI",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"This makes the 'net.unraid.docker.webui' docker label the primary source when parsing the web UI address. If the docker label is missing, the template value will be used instead."))),(0,i.kt)("li",{parentName:"ul"},"webgui: Update Credits.page"),(0,i.kt)("li",{parentName:"ul"},"webgui: VM manager: Fix VM log can not open when VM name has an embedded '#'"),(0,i.kt)("li",{parentName:"ul"},"webgui: Management Access page: add details for self-signed certs"),(0,i.kt)("li",{parentName:"ul"},"webgui: Parity check: fix regression error"),(0,i.kt)("li",{parentName:"ul"},"webgui: Remove session creation in scripts"),(0,i.kt)("li",{parentName:"ul"},"webgui: Update ssh key regex",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Add support for ed25519/sk-ed25519"),(0,i.kt)("li",{parentName:"ul"},"Remove support for ecdsa (insecure)"),(0,i.kt)("li",{parentName:"ul"},"Use proper regex to check for valid key types"))),(0,i.kt)("li",{parentName:"ul"},"webgui: misc. style updates"),(0,i.kt)("li",{parentName:"ul"},"webgui: Management access: HTTP port setting should always be enabled"),(0,i.kt)("li",{parentName:"ul"},"webgui: Fix: preserve vnc port settings"),(0,i.kt)("li",{parentName:"ul"},"webgui: Fix regression error in plugin system"),(0,i.kt)("li",{parentName:"ul"},"webgui: Fix issue installing registration keys"),(0,i.kt)("li",{parentName:"ul"},"webgui: Highlight case selection when custom image is selected"),(0,i.kt)("li",{parentName:"ul"},"webgui: fix(upc): v1.4.2 apiVersion check regression"),(0,i.kt)("li",{parentName:"ul"},"webgui: Update Disk Capabilities pages for NVME drives"),(0,i.kt)("li",{parentName:"ul"},"webgui: chore(upc): v1.6.0"),(0,i.kt)("li",{parentName:"ul"},"webgui: Plugin system and docker update"),(0,i.kt)("li",{parentName:"ul"},"webgui: System info - style update"),(0,i.kt)("li",{parentName:"ul"},"webgui: Plugins: keep header buttons in same position"),(0,i.kt)("li",{parentName:"ul"},"webgui: Prevent overflow in container size for low resolutions"),(0,i.kt)("li",{parentName:"ul"},"webgui: VM Manager: Add boot order to GUI and CD hot plug function"),(0,i.kt)("li",{parentName:"ul"},"webgui: Docker Manager: add ability to specify shell with container label."),(0,i.kt)("li",{parentName:"ul"},"webgui: fix: Discord notification agent url"),(0,i.kt)("li",{parentName:"ul"},"webgui: Suppress info icon in banner message when no info is available"),(0,i.kt)("li",{parentName:"ul"},"webgui: Add Spindown message and use -n for identity if scsi drive."),(0,i.kt)("li",{parentName:"ul"},"webgui: Fix SAS Selftest"),(0,i.kt)("li",{parentName:"ul"},"webgui: Fix plugin multi updates"),(0,i.kt)("li",{parentName:"ul"},"webgui: UPS display enhancements:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Add icon for each category"),(0,i.kt)("li",{parentName:"ul"},"Add translation in UPS section on dashboard"),(0,i.kt)("li",{parentName:"ul"},"Add Output voltage / frequency value"),(0,i.kt)("li",{parentName:"ul"},"Add coloring depending on settings"),(0,i.kt)("li",{parentName:"ul"},"Normalize units"),(0,i.kt)("li",{parentName:"ul"},"Make updates near real-time"),(0,i.kt)("li",{parentName:"ul"},"Added UPS model field"))),(0,i.kt)("li",{parentName:"ul"},"webgui: JQuery: version 3.6.1"),(0,i.kt)("li",{parentName:"ul"},"webgui: JQueryUI: version 1.13.2"),(0,i.kt)("li",{parentName:"ul"},"webgui: improved 'cache busting' on font file urls"),(0,i.kt)("li",{parentName:"ul"},"webgui: Fixed: text color in docker popup window sometimes wrong"),(0,i.kt)("li",{parentName:"ul"},"webgui: Fixed: show read errors during Read Check"),(0,i.kt)("li",{parentName:"ul"},"webgui: VM Manager: Add USB Startup policy; add Missing USB support"),(0,i.kt)("li",{parentName:"ul"},"webgui: Docker: fixed javascript error when no containers exist"),(0,i.kt)("li",{parentName:"ul"},"webgui: added 3rd party system diagnostics",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"added diagnostics for third party plugin packages"),(0,i.kt)("li",{parentName:"ul"},"added diagnostics for /dev/dri devices"),(0,i.kt)("li",{parentName:"ul"},"added diagnostics for /dev/dvb devices"),(0,i.kt)("li",{parentName:"ul"},"added diagnostics for nvidia devices")))),(0,i.kt)("h4",{id:"linux-kernel"},"Linux kernel"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"version 5.19.9 (CVE-2022-21123 (CVE-2022-21123 CVE-2022-21125 CVE-2022-21166)"),(0,i.kt)("li",{parentName:"ul"},"md/unraid: version 2.9.24"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_IOMMU_DEFAULT_PASSTHROUGH: Passthrough"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_VIRTIO_IOMMU: Virtio IOMMU driver"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_X86_AMD_PSTATE: AMD Processor P-State driver"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_FIREWIRE: FireWire driver stack"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_FIREWIRE_OHCI: OHCI-1394 controllers"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_FIREWIRE_SBP2: Storage devices (SBP-2 protocol)"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_FIREWIRE_NET: IP networking over 1394"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_INPUT_UINPUT: User level driver support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_INPUT_JOYDEV: Joystick interface"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_INPUT_JOYSTICK: Joysticks/Gamepads"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_JOYSTICK_XPAD: X-Box gamepad support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_JOYSTICK_XPAD_FF: X-Box gamepad rumble support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_JOYSTICK_XPAD_LEDS: LED Support for Xbox360 controller 'BigX' LED"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_MLX5_TLS: Mellanox Technologies TLS Connect-X support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_MLX5_ESWITCH: Mellanox Technologies MLX5 SRIOV E-Switch suppor"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_MLX5_CLS_ACT: MLX5 TC classifier action support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_MLX5_TC_SAMPLE: MLX5 TC sample offload support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_MLXSW_SPECTRUM: Mellanox Technologies Spectrum family support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_NET_SWITCHDEV: Switch (and switch-ish) device support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_TLS: Transport Layer Security support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_TLS_DEVICE: Transport Layer Security HW offload"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_TLS_TOE: Transport Layer Security TCP stack bypass"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_VMD: Intel Volume Management Device Driver"),(0,i.kt)("li",{parentName:"ul"},"added additional sensor drivers:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"CONFIG_AMD_SFH_HID: AMD Sensor Fusion Hub"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_AQUACOMPUTER_D5NEXT: Aquacomputer D5 Next watercooling pump"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_MAX6620: Maxim MAX6620 fan controller"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_NZXT_SMART2: NZXT RGB & Fan Controller/Smart Device v2"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_SBRMI: Emulated SB-RMI sensor"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_SHT4x: Sensiron humidity and temperature sensors. SHT4x and compat."),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_SY7636A: Silergy SY7636A"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_INA238: Texas Instruments INA238"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_TMP464: Texas Instruments TMP464 and compatible"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_ASUS_WMI: ASUS WMI X370/X470/B450/X399"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_ASUS_WMI_EC: ASUS WMI B550/X570"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SENSORS_ASUS_EC: ASUS EC Sensors"))),(0,i.kt)("li",{parentName:"ul"},"patch: add reference to missing firmware in drivers/bluetooth/btrtl.c",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"rtl8723d_fw.bin"),(0,i.kt)("li",{parentName:"ul"},"rtl8761b_fw.bin"),(0,i.kt)("li",{parentName:"ul"},"rtl8761bu_fw.bin"),(0,i.kt)("li",{parentName:"ul"},"rtl8821c_fw.bin"),(0,i.kt)("li",{parentName:"ul"},"rtl8822cs_fw.bin"),(0,i.kt)("li",{parentName:"ul"},"rtl8822cu_fw.bin"))),(0,i.kt)("li",{parentName:"ul"},"CONFIG_BPF_UNPRIV_DEFAULT_OFF: Disable unprivileged BPF by default"),(0,i.kt)("li",{parentName:"ul"},"patch: quirk for Team Group MP33 M.2 2280 1TB NVMe (globally duplicate IDs for nsid)"),(0,i.kt)("li",{parentName:"ul"},"turn on all IPv6 kernel options:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"CONFIG",(0,i.kt)("em",{parentName:"li"},"INET6"),"*"),(0,i.kt)("li",{parentName:"ul"},"CONFIG",(0,i.kt)("em",{parentName:"li"},"IPV6"),"*"))),(0,i.kt)("li",{parentName:"ul"},"CONFIG_RC_CORE: Remote Controller support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SFC_SIENA: Solarflare SFC9000 support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SFC_SIENA_MCDI_LOGGING: Solarflare SFC9000-family MCDI logging support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SFC_SIENA_MCDI_MON: Solarflare SFC9000-family hwmon support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_SFC_SIENA_SRIOV: Solarflare SFC9000-family SR-IOV support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_ZRAM: Compressed RAM block device support"),(0,i.kt)("li",{parentName:"ul"},"CONFIG_ZRAM_DEF_COMP_LZ4: Default ram compressor (lz4)"),(0,i.kt)("li",{parentName:"ul"},"turn on all EDAC kernel options",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"CONFIG_EDAC: EDAC (Error Detection And Correction) reporting"),(0,i.kt)("li",{parentName:"ul"},"CONFIG",(0,i.kt)("em",{parentName:"li"},"EDAC"),"*")))),(0,i.kt)("h4",{id:"base-distro"},"Base distro"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"aaa_base: version 15.1"),(0,i.kt)("li",{parentName:"ul"},"aaa_glibc-solibs: version 2.36"),(0,i.kt)("li",{parentName:"ul"},"aaa_libraries: version 15.1"),(0,i.kt)("li",{parentName:"ul"},"at: version 3.2.3"),(0,i.kt)("li",{parentName:"ul"},"bind: version 9.18.6"),(0,i.kt)("li",{parentName:"ul"},"btrfs-progs: version 5.19.1"),(0,i.kt)("li",{parentName:"ul"},"ca-certificates: version 20220622"),(0,i.kt)("li",{parentName:"ul"},"cifs-utils: version 7.0"),(0,i.kt)("li",{parentName:"ul"},"coreutils: version 9.1"),(0,i.kt)("li",{parentName:"ul"},"cracklib: version 2.9.8"),(0,i.kt)("li",{parentName:"ul"},"cryptsetup: version 2.5.0"),(0,i.kt)("li",{parentName:"ul"},"curl: version 7.85.0"),(0,i.kt)("li",{parentName:"ul"},"cyrus-sasl: version 2.1.28"),(0,i.kt)("li",{parentName:"ul"},"dbus: version 1.14.0"),(0,i.kt)("li",{parentName:"ul"},"dhcpcd: version 9.4.1"),(0,i.kt)("li",{parentName:"ul"},"dmidecode: version 3.4"),(0,i.kt)("li",{parentName:"ul"},"docker: version 20.10.17 (CVE-2022-29526 CVE-2022-30634 CVE-2022-30629 CVE-2022-30580 CVE-2022-29804 CVE-2022-29162 CVE-2022-31030)"),(0,i.kt)("li",{parentName:"ul"},"etc: version 15.1"),(0,i.kt)("li",{parentName:"ul"},"ethtool: version 5.19"),(0,i.kt)("li",{parentName:"ul"},"eudev: version 3.2.11"),(0,i.kt)("li",{parentName:"ul"},"file: version 5.43"),(0,i.kt)("li",{parentName:"ul"},"findutils: version 4.9.0"),(0,i.kt)("li",{parentName:"ul"},"firefox: version 105.0.r20220922151854-x86_64 (AppImage)"),(0,i.kt)("li",{parentName:"ul"},"fuse3: version 3.12.0"),(0,i.kt)("li",{parentName:"ul"},"gawk: version 5.2.0"),(0,i.kt)("li",{parentName:"ul"},"gdbm: version 1.23"),(0,i.kt)("li",{parentName:"ul"},"git: version 2.37.3"),(0,i.kt)("li",{parentName:"ul"},"glib2: version 2.72.3"),(0,i.kt)("li",{parentName:"ul"},"glibc: version 2.36"),(0,i.kt)("li",{parentName:"ul"},"glibc-zoneinfo: version 2022c"),(0,i.kt)("li",{parentName:"ul"},"gnutls: version 3.7.7"),(0,i.kt)("li",{parentName:"ul"},"gptfdisk: version 1.0.9"),(0,i.kt)("li",{parentName:"ul"},"grep: version 3.8"),(0,i.kt)("li",{parentName:"ul"},"gzip: version 1.12"),(0,i.kt)("li",{parentName:"ul"},"hdparm: version 9.65"),(0,i.kt)("li",{parentName:"ul"},"htop: version 3.2.1"),(0,i.kt)("li",{parentName:"ul"},"icu4c: version 71.1"),(0,i.kt)("li",{parentName:"ul"},"inotify-tools: version 3.22.6.0"),(0,i.kt)("li",{parentName:"ul"},"iperf3: version 3.11"),(0,i.kt)("li",{parentName:"ul"},"iproute2: version 5.19.0"),(0,i.kt)("li",{parentName:"ul"},"iptables: version 1.8.8"),(0,i.kt)("li",{parentName:"ul"},"jemalloc: version 5.3.0"),(0,i.kt)("li",{parentName:"ul"},"json-c: version 0.16_20220414"),(0,i.kt)("li",{parentName:"ul"},"json-glib: version 1.6.6"),(0,i.kt)("li",{parentName:"ul"},"kmod: version 30"),(0,i.kt)("li",{parentName:"ul"},"krb5: version 1.20"),(0,i.kt)("li",{parentName:"ul"},"libaio: version 0.3.113"),(0,i.kt)("li",{parentName:"ul"},"libarchive: version 3.6.1"),(0,i.kt)("li",{parentName:"ul"},"libcap-ng: version 0.8.3"),(0,i.kt)("li",{parentName:"ul"},"libcgroup: version 3.0.0"),(0,i.kt)("li",{parentName:"ul"},"libdrm: version 2.4.113"),(0,i.kt)("li",{parentName:"ul"},"libepoxy: version 1.5.10"),(0,i.kt)("li",{parentName:"ul"},"libffi: version 3.4.2"),(0,i.kt)("li",{parentName:"ul"},"libgcrypt: version 1.10.1"),(0,i.kt)("li",{parentName:"ul"},"libgpg-error: version 1.45"),(0,i.kt)("li",{parentName:"ul"},"libidn: version 1.41"),(0,i.kt)("li",{parentName:"ul"},"libjpeg-turbo: version 2.1.4"),(0,i.kt)("li",{parentName:"ul"},"libmnl: version 1.0.5"),(0,i.kt)("li",{parentName:"ul"},"libnetfilter_conntrack: version 1.0.9"),(0,i.kt)("li",{parentName:"ul"},"libnfnetlink: version 1.0.2"),(0,i.kt)("li",{parentName:"ul"},"libnftnl: version 1.2.3"),(0,i.kt)("li",{parentName:"ul"},"libnl3: version 3.7.0"),(0,i.kt)("li",{parentName:"ul"},"libpng: version 1.6.38"),(0,i.kt)("li",{parentName:"ul"},"libssh: version 0.10.4"),(0,i.kt)("li",{parentName:"ul"},"libtasn1: version 4.19.0"),(0,i.kt)("li",{parentName:"ul"},"libtirpc: version 1.3.3"),(0,i.kt)("li",{parentName:"ul"},"liburcu: version 0.13.1"),(0,i.kt)("li",{parentName:"ul"},"libusb: version 1.0.26"),(0,i.kt)("li",{parentName:"ul"},"libwebp: version 1.2.4"),(0,i.kt)("li",{parentName:"ul"},"libxml2: version 2.9.14"),(0,i.kt)("li",{parentName:"ul"},"libxslt: version 1.1.36"),(0,i.kt)("li",{parentName:"ul"},"libzip: version 1.9.2"),(0,i.kt)("li",{parentName:"ul"},"logrotate: version 3.20.1"),(0,i.kt)("li",{parentName:"ul"},"lsof: version 4.95.0"),(0,i.kt)("li",{parentName:"ul"},"lzip: version 1.23"),(0,i.kt)("li",{parentName:"ul"},"mc: version 4.8.28"),(0,i.kt)("li",{parentName:"ul"},"mcelog: version 189"),(0,i.kt)("li",{parentName:"ul"},"nano: version 6.4"),(0,i.kt)("li",{parentName:"ul"},"nfs-utils: version 2.6.2"),(0,i.kt)("li",{parentName:"ul"},"nghttp2: version 1.49.0"),(0,i.kt)("li",{parentName:"ul"},"nginx: version 1.22.0"),(0,i.kt)("li",{parentName:"ul"},"ntfs-3g: version 2022.5.17"),(0,i.kt)("li",{parentName:"ul"},"ntp: version 4.2.8p15"),(0,i.kt)("li",{parentName:"ul"},"oniguruma: version 6.9.8"),(0,i.kt)("li",{parentName:"ul"},"openssh: version 9.0p1"),(0,i.kt)("li",{parentName:"ul"},"openssl: version 1.1.1q (CVE-2022-1292 CVE-2022-2097 CVE-2022-2274)"),(0,i.kt)("li",{parentName:"ul"},"openssl-solibs: version 1.1.1q (CVE-2022-1292)"),(0,i.kt)("li",{parentName:"ul"},"p11-kit: version 0.24.1"),(0,i.kt)("li",{parentName:"ul"},"pciutils: version 3.8.0"),(0,i.kt)("li",{parentName:"ul"},"pcre2: version 10.40"),(0,i.kt)("li",{parentName:"ul"},"perl: version 5.36.0"),(0,i.kt)("li",{parentName:"ul"},"php: version 7.4.30 (CVE-2022-31625 CVE-2022-31626)"),(0,i.kt)("li",{parentName:"ul"},"pkgtools: version 15.1"),(0,i.kt)("li",{parentName:"ul"},"rpcbind: version 1.2.6"),(0,i.kt)("li",{parentName:"ul"},"rsync: version 3.2.6"),(0,i.kt)("li",{parentName:"ul"},"samba: version 4.17.0 (CVE-2022-2031 CVE-2022-32744 CVE-2022-32745 CVE-2022-32746 CVE-2022-32742)"),(0,i.kt)("li",{parentName:"ul"},"sqlite: version 3.39.3"),(0,i.kt)("li",{parentName:"ul"},"sudo: version 1.9.11p3"),(0,i.kt)("li",{parentName:"ul"},"sysfsutils: version 2.1.1"),(0,i.kt)("li",{parentName:"ul"},"sysstat: version 12.6.0"),(0,i.kt)("li",{parentName:"ul"},"sysvinit-scripts: version 15.1"),(0,i.kt)("li",{parentName:"ul"},"talloc: version 2.3.4"),(0,i.kt)("li",{parentName:"ul"},"tar: version 1.34"),(0,i.kt)("li",{parentName:"ul"},"tevent: version 0.13.0"),(0,i.kt)("li",{parentName:"ul"},"tree: version 2.0.2"),(0,i.kt)("li",{parentName:"ul"},"util-linux: version 2.38.1"),(0,i.kt)("li",{parentName:"ul"},"wayland: version 1.21.0"),(0,i.kt)("li",{parentName:"ul"},"wget: version 1.21.3"),(0,i.kt)("li",{parentName:"ul"},"xfsprogs: version 5.18.0"),(0,i.kt)("li",{parentName:"ul"},"xz: version 5.2.6"),(0,i.kt)("li",{parentName:"ul"},"zlib: version 1.2.12")),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://www.wireguard.com/"},'"WireGuard" and the "WireGuard" logo are registered trademarks of Jason A. Donenfeld.')))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0ba4e87b.01870995.js b/assets/js/0ba4e87b.01870995.js deleted file mode 100644 index e287533a8..000000000 --- a/assets/js/0ba4e87b.01870995.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8868],{4137:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=u(r),m=a,f=p["".concat(s,".").concat(m)]||p[m]||c[m]||i;return r?n.createElement(f,o(o({ref:t},d),{},{components:r})):n.createElement(f,o({ref:t},d))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,o[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var n=r(7462),a=(r(7294),r(4137));const i={},o="Version 6.12.2 2023-06-29",l={unversionedId:"unraid-os/release-notes/6.12.2",id:"unraid-os/release-notes/6.12.2",title:"Version 6.12.2 2023-06-29",description:"Changes vs. 6.12.1",source:"@site/docs/unraid-os/release-notes/6.12.2.md",sourceDirName:"unraid-os/release-notes",slug:"/unraid-os/release-notes/6.12.2",permalink:"/unraid-os/release-notes/6.12.2",draft:!1,editUrl:"https://github.com/unraid/docs/tree/main/docs/unraid-os/release-notes/6.12.2.md",tags:[],version:"current",frontMatter:{},sidebar:"unraidSidebar",previous:{title:"Version 6.12.1 2023-06-20",permalink:"/unraid-os/release-notes/6.12.1"},next:{title:"Version 6.12.3 2023-07-14",permalink:"/unraid-os/release-notes/6.12.3"}},s={},u=[{value:"Bug fixes and improvements",id:"bug-fixes-and-improvements",level:2},{value:"Linux kernel",id:"linux-kernel",level:2},{value:"Base Distro",id:"base-distro",level:2}],d={toc:u},p="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"version-6122-2023-06-29"},"Version 6.12.2 2023-06-29"),(0,a.kt)("p",null,"Changes vs. ",(0,a.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.1"},"6.12.1")),(0,a.kt)("p",null,"This is mainly a bug fix release, including also a minor security update. Other highlights:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We reverted ",(0,a.kt)("strong",{parentName:"li"},"docker")," from v23.0.6, introduced during Unraid OS 6.12 development, to v20.10.24, which is the latest patch\nrelease of ",(0,a.kt)("strong",{parentName:"li"},"docker")," used in Unraid OS 6.11. This to address increased memory usage and other issues\ndiscovered with ",(0,a.kt)("strong",{parentName:"li"},"docker"),"."),(0,a.kt)("li",{parentName:"ul"},"A small necessary change to invoke our 'update_services' script whenever a WireGuard tunnel starts or stops\nis automatically applied to all 'config/wireguard/*.conf' files when you update via Update OS page. For\nmanual update or if you downgrade, it is necessary to make a \"dummy change\" in a setting on the Settings/VPN Manager page and\nthen click Apply.")),(0,a.kt)("h2",{id:"bug-fixes-and-improvements"},"Bug fixes and improvements"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"email notifications: add line in /etc/php.ini: 'mail.mixed_lf_and_crlf=On' to workaround change in PHP8 CRLF handling"),(0,a.kt)("li",{parentName:"ul"},"emhttpd: Fix regression: emulated ZFS volumes not recognized"),(0,a.kt)("li",{parentName:"ul"},"emhttpd: Fix regression: format fails if diskFsType==auto and defaultFsType specifies encryption"),(0,a.kt)("li",{parentName:"ul"},"emhtptd: Fix regression: mount fails if diskFsType==auto"),(0,a.kt)("li",{parentName:"ul"},"htop: remove predefined /root/.config/htop/htoprc file"),(0,a.kt)("li",{parentName:"ul"},"network: RC services update:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"NFS - fix service reload"),(0,a.kt)("li",{parentName:"ul"},"RPC - fix service reload"),(0,a.kt)("li",{parentName:"ul"},"NGINX - remove HTTPS port in FQDN redirect when default 443"),(0,a.kt)("li",{parentName:"ul"},"All services - register IPv4 Link local assignment (169.254.xxx.xxx)"),(0,a.kt)("li",{parentName:"ul"},"All services - make lock file programmable"),(0,a.kt)("li",{parentName:"ul"},"WireGuard: delayed service update to avoid race condition"),(0,a.kt)("li",{parentName:"ul"},"rc.library: do not allow duplicates in bind list"))),(0,a.kt)("li",{parentName:"ul"},"webgui: Dashboard updates:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Re-introduce show/hide tile content"),(0,a.kt)("li",{parentName:"ul"},"Add new icon function to show/hide all content at once"),(0,a.kt)("li",{parentName:"ul"},"Reduce gap between columns"),(0,a.kt)("li",{parentName:"ul"},"description -> model"),(0,a.kt)("li",{parentName:"ul"},"ZFS: fix percentage value to max 100%"),(0,a.kt)("li",{parentName:"ul"},"Use prototype function: This makes it easier for 3rd party developers to automatically hide dynamic content"),(0,a.kt)("li",{parentName:"ul"},"Handle duplicate IP assignments and give warning"),(0,a.kt)("li",{parentName:"ul"},"change header MEMORY to SYSTEM"))),(0,a.kt)("li",{parentName:"ul"},"webgui: OS Update: add checkbox to confirm reading release notes before upgrading"),(0,a.kt)("li",{parentName:"ul"},"webgui: diagnostics: include list of duplicate assignments"),(0,a.kt)("li",{parentName:"ul"},"webgui: NFS: for Security/Private increase Rule field from 256 to 512 characters.")),(0,a.kt)("h2",{id:"linux-kernel"},"Linux kernel"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"version 6.1.36")),(0,a.kt)("h2",{id:"base-distro"},"Base Distro"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"bind: version -9.16.42 (CVE-2023-2911)"),(0,a.kt)("li",{parentName:"ul"},"docker: 20.10.24 (revert from v23.0.6)")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0ba4e87b.da658898.js b/assets/js/0ba4e87b.da658898.js new file mode 100644 index 000000000..106c337a7 --- /dev/null +++ b/assets/js/0ba4e87b.da658898.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8868],{4137:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=u(n),m=a,k=p["".concat(s,".").concat(m)]||p[m]||c[m]||i;return n?r.createElement(k,l(l({ref:t},d),{},{components:n})):r.createElement(k,l({ref:t},d))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[p]="string"==typeof e?e:a,l[1]=o;for(var u=2;u{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var r=n(7462),a=(n(7294),n(4137));const i={},l="Version 6.12.2 2023-06-29",o={unversionedId:"unraid-os/release-notes/6.12.2",id:"unraid-os/release-notes/6.12.2",title:"Version 6.12.2 2023-06-29",description:"Changes vs. 6.12.1",source:"@site/docs/unraid-os/release-notes/6.12.2.md",sourceDirName:"unraid-os/release-notes",slug:"/unraid-os/release-notes/6.12.2",permalink:"/unraid-os/release-notes/6.12.2",draft:!1,editUrl:"https://github.com/unraid/docs/tree/main/docs/unraid-os/release-notes/6.12.2.md",tags:[],version:"current",frontMatter:{},sidebar:"unraidSidebar",previous:{title:"Version 6.12.1 2023-06-20",permalink:"/unraid-os/release-notes/6.12.1"},next:{title:"Version 6.12.3 2023-07-14",permalink:"/unraid-os/release-notes/6.12.3"}},s={},u=[{value:"Upgrade notes",id:"upgrade-notes",level:2},{value:"Known issues",id:"known-issues",level:3},{value:"Rolling back",id:"rolling-back",level:3},{value:"Highlights",id:"highlights",level:2},{value:"Bug fixes and improvements",id:"bug-fixes-and-improvements",level:2},{value:"Linux kernel",id:"linux-kernel",level:2},{value:"Base Distro",id:"base-distro",level:2}],d={toc:u},p="wrapper";function c(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"version-6122-2023-06-29"},"Version 6.12.2 2023-06-29"),(0,a.kt)("p",null,"Changes vs. ",(0,a.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.1"},"6.12.1")),(0,a.kt)("h2",{id:"upgrade-notes"},"Upgrade notes"),(0,a.kt)("h3",{id:"known-issues"},"Known issues"),(0,a.kt)("p",null,"Please see the ",(0,a.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.0#known-issues"},"6.12.0 release notes")," for general known issues."),(0,a.kt)("h3",{id:"rolling-back"},"Rolling back"),(0,a.kt)("p",null,"If rolling back earlier than 6.12.0, also see the ",(0,a.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.0#rolling-back"},"6.12.0 release notes"),"."),(0,a.kt)("h2",{id:"highlights"},"Highlights"),(0,a.kt)("p",null,"This is mainly a bug fix release, including also a minor security update. Other highlights:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"We reverted ",(0,a.kt)("strong",{parentName:"li"},"docker")," from v23.0.6, introduced during Unraid OS 6.12 development, to v20.10.24, which is the latest patch\nrelease of ",(0,a.kt)("strong",{parentName:"li"},"docker")," used in Unraid OS 6.11. This to address increased memory usage and other issues\ndiscovered with ",(0,a.kt)("strong",{parentName:"li"},"docker"),"."),(0,a.kt)("li",{parentName:"ul"},"A small necessary change to invoke our 'update_services' script whenever a WireGuard tunnel starts or stops\nis automatically applied to all 'config/wireguard/*.conf' files when you update via Update OS page. For\nmanual update or if you downgrade, it is necessary to make a \"dummy change\" in a setting on the Settings/VPN Manager page and\nthen click Apply.")),(0,a.kt)("h2",{id:"bug-fixes-and-improvements"},"Bug fixes and improvements"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"email notifications: add line in /etc/php.ini: 'mail.mixed_lf_and_crlf=On' to workaround change in PHP8 CRLF handling"),(0,a.kt)("li",{parentName:"ul"},"emhttpd: Fix regression: emulated ZFS volumes not recognized"),(0,a.kt)("li",{parentName:"ul"},"emhttpd: Fix regression: format fails if diskFsType==auto and defaultFsType specifies encryption"),(0,a.kt)("li",{parentName:"ul"},"emhtptd: Fix regression: mount fails if diskFsType==auto"),(0,a.kt)("li",{parentName:"ul"},"htop: remove predefined /root/.config/htop/htoprc file"),(0,a.kt)("li",{parentName:"ul"},"network: RC services update:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"NFS - fix service reload"),(0,a.kt)("li",{parentName:"ul"},"RPC - fix service reload"),(0,a.kt)("li",{parentName:"ul"},"NGINX - remove HTTPS port in FQDN redirect when default 443"),(0,a.kt)("li",{parentName:"ul"},"All services - register IPv4 Link local assignment (169.254.xxx.xxx)"),(0,a.kt)("li",{parentName:"ul"},"All services - make lock file programmable"),(0,a.kt)("li",{parentName:"ul"},"WireGuard: delayed service update to avoid race condition"),(0,a.kt)("li",{parentName:"ul"},"rc.library: do not allow duplicates in bind list"))),(0,a.kt)("li",{parentName:"ul"},"webgui: Dashboard updates:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Re-introduce show/hide tile content"),(0,a.kt)("li",{parentName:"ul"},"Add new icon function to show/hide all content at once"),(0,a.kt)("li",{parentName:"ul"},"Reduce gap between columns"),(0,a.kt)("li",{parentName:"ul"},"description -> model"),(0,a.kt)("li",{parentName:"ul"},"ZFS: fix percentage value to max 100%"),(0,a.kt)("li",{parentName:"ul"},"Use prototype function: This makes it easier for 3rd party developers to automatically hide dynamic content"),(0,a.kt)("li",{parentName:"ul"},"Handle duplicate IP assignments and give warning"),(0,a.kt)("li",{parentName:"ul"},"change header MEMORY to SYSTEM"))),(0,a.kt)("li",{parentName:"ul"},"webgui: OS Update: add checkbox to confirm reading release notes before upgrading"),(0,a.kt)("li",{parentName:"ul"},"webgui: diagnostics: include list of duplicate assignments"),(0,a.kt)("li",{parentName:"ul"},"webgui: NFS: for Security/Private increase Rule field from 256 to 512 characters.")),(0,a.kt)("h2",{id:"linux-kernel"},"Linux kernel"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"version 6.1.36")),(0,a.kt)("h2",{id:"base-distro"},"Base Distro"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"bind: version -9.16.42 (CVE-2023-2911)"),(0,a.kt)("li",{parentName:"ul"},"docker: 20.10.24 (revert from v23.0.6)")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/49ecab1a.e58b9d52.js b/assets/js/49ecab1a.e58b9d52.js new file mode 100644 index 000000000..1c715985f --- /dev/null +++ b/assets/js/49ecab1a.e58b9d52.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3011],{4137:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=u(n),m=r,k=p["".concat(l,".").concat(m)]||p[m]||c[m]||i;return n?a.createElement(k,o(o({ref:t},d),{},{components:n})):a.createElement(k,o({ref:t},d))}));function k(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,o[1]=s;for(var u=2;u{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>s,toc:()=>u});var a=n(7462),r=(n(7294),n(4137));const i={},o="Version 6.12.4 2023-08-31",s={unversionedId:"unraid-os/release-notes/6.12.4",id:"unraid-os/release-notes/6.12.4",title:"Version 6.12.4 2023-08-31",description:"Upgrade notes",source:"@site/docs/unraid-os/release-notes/6.12.4.md",sourceDirName:"unraid-os/release-notes",slug:"/unraid-os/release-notes/6.12.4",permalink:"/unraid-os/release-notes/6.12.4",draft:!1,editUrl:"https://github.com/unraid/docs/tree/main/docs/unraid-os/release-notes/6.12.4.md",tags:[],version:"current",frontMatter:{},sidebar:"unraidSidebar",previous:{title:"Version 6.12.3 2023-07-14",permalink:"/unraid-os/release-notes/6.12.3"},next:{title:"6.11.0",permalink:"/unraid-os/release-notes/6.11.0"}},l={},u=[{value:"Upgrade notes",id:"upgrade-notes",level:2},{value:"Known issues",id:"known-issues",level:3},{value:"Rolling back",id:"rolling-back",level:3},{value:"Fix for macvlan call traces",id:"fix-for-macvlan-call-traces",level:2},{value:"Troubleshooting",id:"troubleshooting",level:3},{value:"To get a little more technical...",id:"to-get-a-little-more-technical",level:3},{value:"System Drivers page",id:"system-drivers-page",level:2},{value:"Other bug fixes and improvements",id:"other-bug-fixes-and-improvements",level:2},{value:"Changes vs. 6.12.3",id:"changes-vs-6123",level:2},{value:"Base distro",id:"base-distro",level:3},{value:"Package updates",id:"package-updates",level:4},{value:"Linux kernel",id:"linux-kernel",level:3},{value:"webGUI",id:"webgui",level:3}],d={toc:u},p="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"version-6124-2023-08-31"},"Version 6.12.4 2023-08-31"),(0,r.kt)("h2",{id:"upgrade-notes"},"Upgrade notes"),(0,r.kt)("h3",{id:"known-issues"},"Known issues"),(0,r.kt)("p",null,"Please see the ",(0,r.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.0#known-issues"},"6.12.0 release notes")," for general known issues."),(0,r.kt)("h3",{id:"rolling-back"},"Rolling back"),(0,r.kt)("p",null,"Before rolling back to an earlier version, it is important to ensure Bridging is enabled:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("em",{parentName:"strong"},"Settings > Network Settings > eth0 > Enable Bridging"))," = Yes")),(0,r.kt)("p",null,"Then Start the array (along with the Docker and VM services) to update your Docker containers, VMs, and\nWireGuard tunnels back to their previous settings which should work in older releases."),(0,r.kt)("p",null,"Once in the older version, confirm these settings are correct for your setup:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("em",{parentName:"strong"},"Settings > Docker > Host access to custom networks"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("em",{parentName:"strong"},"Settings > Docker > Docker custom network type")))),(0,r.kt)("p",null,"If rolling back earlier than 6.12.0, also see the ",(0,r.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.0#rolling-back"},"6.12.0 release notes"),"."),(0,r.kt)("h2",{id:"fix-for-macvlan-call-traces"},"Fix for macvlan call traces"),(0,r.kt)("p",null,"The big news in this release is that we have resolved issues related to macvlan call traces and crashes!"),(0,r.kt)("p",null,"The root of the problem is that macvlan used for custom Docker networks is unreliable when the parent interface is a\nbridge (like br0), it works best on a physical interface (like eth0). We believe this to be a longstanding kernel\nissue and have posted a ",(0,r.kt)("a",{parentName:"p",href:"https://bugzilla.kernel.org/show_bug.cgi?id=217777"},"bug report"),"."),(0,r.kt)("p",null,"If you are getting call traces related to macvlan, as a first step we recommend navigating to ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},"Settings > Docker")),',\nswitch to advanced view, and change the "Docker custom network type" from macvlan to ipvlan. This is the default\nconfiguration that Unraid has shipped with since version 6.11.5 and should work for most systems.'),(0,r.kt)("p",null,"However, some users have reported issues with port forwarding from certain routers (Fritzbox) and reduced functionality\nwith advanced network management tools (Ubiquity) when in ipvlan mode."),(0,r.kt)("p",null,"For those users, we have a new method that reworks networking to avoid this. Tweak a few settings and your\nDocker containers, VMs, and WireGuard tunnels should automatically adjust to use them:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("em",{parentName:"strong"},"Settings > Network Settings > eth0 > Enable Bridging"))," = No"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("em",{parentName:"strong"},"Settings > Docker > Host access to custom networks"))," = Enabled")),(0,r.kt)("p",null,"Note: if you previously used the ",(0,r.kt)("a",{parentName:"p",href:"https://forums.unraid.net/topic/137048-guide-how-to-solve-macvlan-and-ipvlan-issues-with-containers-on-a-custom-network/"},"2-nic docker segmentation method"),",\nyou will also want to revert that:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("em",{parentName:"strong"},"Settings > Docker > custom network on interface eth0"))," (i.e. make sure eth0 is configured for the custom network, not eth1)")),(0,r.kt)("p",null,"When you Start the array, the host, VMs, and Docker containers will all be able to communicate, and there should be no more call traces!"),(0,r.kt)("h3",{id:"troubleshooting"},"Troubleshooting"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'If your Docker containers with custom IPs are not starting, edit them and change the "Network type" to "Custom: eth0". We attempted\nto do this automatically, but depending on how things were customized you may need to do it manually.'),(0,r.kt)("li",{parentName:"ul"},'If your VMs are having network issues, edit them and set the Network Source to "vhost0". Also, ensure there is a MAC address assigned.'),(0,r.kt)("li",{parentName:"ul"},"If your WireGuard tunnels will not start, make a dummy change to each tunnel and save."),(0,r.kt)("li",{parentName:"ul"},"If you are having issues port forwarding to Docker containers (particularly with a Fritzbox router) delete and recreate the port\nforward in your router.")),(0,r.kt)("h3",{id:"to-get-a-little-more-technical"},"To get a little more technical..."),(0,r.kt)("p",null,"After upgrading to this release, if bridging remains enabled on eth0 then everything works as it used to. You can attempt to work\naround the call traces by disabling the custom Docker network, or using ipvlan instead of macvlan, or using the 2-nic Docker\nsegmentation method with containers on eth1."),(0,r.kt)("p",null,"Starting with this release, when you disable bridging on eth0 we create a new macvtap network for Docker containers and VMs to use.\nIt has a parent of eth0 instead of br0, which is how we avoid the call traces."),(0,r.kt)("p",null,"A side benefit is that macvtap networks are reported to be faster than bridged networks, so you may see speed improvements when\ncommunicating with Docker containers and VMs."),(0,r.kt)("p",null,"FYI: With bridging disabled for the main interface (eth0), then the Docker custom network type will be set to macvlan and hidden\nunless there are other interfaces on your system that have bridging enabled, in which case the legacy ipvlan option is available.\nTo use the new fix being discussed here you will want to keep that set to macvlan."),(0,r.kt)("h2",{id:"system-drivers-page"},"System Drivers page"),(0,r.kt)("p",null,"Navigate to ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},"Tools > System Drivers"))," for visibility into the drivers available/in use on your system. 3rd party drivers installed\nby plugins (such as NVIDIA and Realtek) have an icon that links to the support page for that driver. You can also\nnow add/modify/delete the modeprobe.d config file for any driver without having to find that file on your flash drive."),(0,r.kt)("h2",{id:"other-bug-fixes-and-improvements"},"Other bug fixes and improvements"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"This release resolves corner cases in networking, Libvirt, Docker, WireGuard, NTP, NGINX, NFS and RPC. And includes an improvement\nto the VM Manager so it retains the VNC password during an update.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The shutdown process was modified to allow the NUT plugin to properly shut the system down.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The notification display time before auto-closing is now configugurable (see ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},"Settings > Notification Settings")),").")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"A small change is that packages in /boot/extra are now treated more like packages installed by plugins, and the installation is\nlogged to syslog rather than to the console.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The Update OS process will automatically update the Plugin-Update-Helper script if necessary."))),(0,r.kt)("h2",{id:"changes-vs-6123"},"Changes vs. ",(0,r.kt)("a",{parentName:"h2",href:"/unraid-os/release-notes/6.12.3"},"6.12.3")),(0,r.kt)("h3",{id:"base-distro"},"Base distro"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"create_network_ini:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"fixed dhcp hook"),(0,r.kt)("li",{parentName:"ul"},"improved IP address collection"))),(0,r.kt)("li",{parentName:"ul"},"diagnostics:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Add previous Unraid version to diagnostics version txt file."),(0,r.kt)("li",{parentName:"ul"},"Add ntp.conf, sshd.config, and servers.conf (with anonymized URLs)"),(0,r.kt)("li",{parentName:"ul"},"anonymize IP addresses"))),(0,r.kt)("li",{parentName:"ul"},"docker:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"add routing when shim or macvtap network is used"),(0,r.kt)("li",{parentName:"ul"},'fix routing when "host access" is enabled'),(0,r.kt)("li",{parentName:"ul"},"remove IPv6 from shim/vhost interface (some routers are incompatible)"))),(0,r.kt)("li",{parentName:"ul"},"libvirt, nginx, nfs, rpc: changed running process detection"),(0,r.kt)("li",{parentName:"ul"},"nfsclient: start negotiation with v4, turn off atime modification"),(0,r.kt)("li",{parentName:"ul"},"rc.6: leave /usr and /lib mounted during shutdown"),(0,r.kt)("li",{parentName:"ul"},"rc.docker:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"create same IPv6 network for containers and services"),(0,r.kt)("li",{parentName:"ul"},"add more logging when stopping dockerd"))),(0,r.kt)("li",{parentName:"ul"},"rc.inet1:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"do not use promiscuous mode for bridging"),(0,r.kt)("li",{parentName:"ul"},"add persistent option to dhcpcd"))),(0,r.kt)("li",{parentName:"ul"},"rc.library: interfaces always listed in the same order, fix show ipv6"),(0,r.kt)("li",{parentName:"ul"},"rc.libvirt: remove 'itco' watchdog from XML if present"),(0,r.kt)("li",{parentName:"ul"},"rc.local: annotate auto-generated /etc/modprobe.d/zfs.conf file"),(0,r.kt)("li",{parentName:"ul"},"rc.services:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"add logging"),(0,r.kt)("li",{parentName:"ul"},'exclude WireGuard "VPN tunneled access for docker" tunnels from services'),(0,r.kt)("li",{parentName:"ul"},"exclude WireGuard tunnels for ntp (code optimization)")))),(0,r.kt)("h4",{id:"package-updates"},"Package updates"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"btrfs-progs: 6.3.3"),(0,r.kt)("li",{parentName:"ul"},"curl: version 8.2.0 (CVE-2023-32001)"),(0,r.kt)("li",{parentName:"ul"},"firefox: version 117.0.r20230824132758 (AppImage)"),(0,r.kt)("li",{parentName:"ul"},"kernel-firmware: version 20230724_59fbffa"),(0,r.kt)("li",{parentName:"ul"},"krb5: version 1.19.2 (CVE-2023-36054)"),(0,r.kt)("li",{parentName:"ul"},"openssh: version 9.3p2 (CVE-2023-38408)"),(0,r.kt)("li",{parentName:"ul"},"openssl: version 1.1.1v (CVE-2023-3817 CVE-2023-3446)"),(0,r.kt)("li",{parentName:"ul"},"samba: version 4.17.10 (CVE-2023-3496 CVE-2022-2127 CVE-2023-34968 CVE-2023-3496 CVE-2023-3347)")),(0,r.kt)("h3",{id:"linux-kernel"},"Linux kernel"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"version 6.1.49 (CVE-2023-20593)"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_SCSI_MPI3MR: Broadcom MPI3 Storage Controller Device Driver")),(0,r.kt)("h3",{id:"webgui"},"webGUI"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Dashboard: hide ZFS bar when no ZFS is used"),(0,r.kt)("li",{parentName:"ul"},"Docker settings: fix subnet sizes"),(0,r.kt)("li",{parentName:"ul"},"Feedback: refactor feedback script"),(0,r.kt)("li",{parentName:"ul"},"Network settings: fix DNS settings sometimes disappear"),(0,r.kt)("li",{parentName:"ul"},"Notifications: new notification option: auto-closure time, default is 5 seconds"),(0,r.kt)("li",{parentName:"ul"},"Pools: minimum free space: only enabled when array is stopped"),(0,r.kt)("li",{parentName:"ul"},'Shares and Pools: show "Minimum free space" as absolute number instead of percentage'),(0,r.kt)("li",{parentName:"ul"},"System Drivers: new page"),(0,r.kt)("li",{parentName:"ul"},"Translations: trim key and value in language files"),(0,r.kt)("li",{parentName:"ul"},"VM Manager: Retain VNC password during update."),(0,r.kt)("li",{parentName:"ul"},"VM Manager: Remove downloaded '.vv' files."),(0,r.kt)("li",{parentName:"ul"},"CSS: set overflow-x to 'auto'"),(0,r.kt)("li",{parentName:"ul"},"update monitor_nchan")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7a2d53ea.1603ec4e.js b/assets/js/7a2d53ea.1603ec4e.js new file mode 100644 index 000000000..d879d35ef --- /dev/null +++ b/assets/js/7a2d53ea.1603ec4e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5833],{4137:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=u(n),m=a,k=c["".concat(s,".").concat(m)]||c[m]||d[m]||i;return n?r.createElement(k,o(o({ref:t},p),{},{components:n})):r.createElement(k,o({ref:t},p))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:a,o[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var r=n(7462),a=(n(7294),n(4137));const i={},o="Version 6.12.3 2023-07-14",l={unversionedId:"unraid-os/release-notes/6.12.3",id:"unraid-os/release-notes/6.12.3",title:"Version 6.12.3 2023-07-14",description:"Changes vs. 6.12.2",source:"@site/docs/unraid-os/release-notes/6.12.3.md",sourceDirName:"unraid-os/release-notes",slug:"/unraid-os/release-notes/6.12.3",permalink:"/unraid-os/release-notes/6.12.3",draft:!1,editUrl:"https://github.com/unraid/docs/tree/main/docs/unraid-os/release-notes/6.12.3.md",tags:[],version:"current",frontMatter:{},sidebar:"unraidSidebar",previous:{title:"Version 6.12.2 2023-06-29",permalink:"/unraid-os/release-notes/6.12.2"},next:{title:"Version 6.12.4 2023-08-31",permalink:"/unraid-os/release-notes/6.12.4"}},s={},u=[{value:"Upgrade notes",id:"upgrade-notes",level:2},{value:"Known issues",id:"known-issues",level:3},{value:"Rolling back",id:"rolling-back",level:3},{value:"Networking",id:"networking",level:2},{value:"Docker",id:"docker",level:2},{value:"Bug fixes and improvements",id:"bug-fixes-and-improvements",level:2},{value:"Linux kernel",id:"linux-kernel",level:2},{value:"Base Distro",id:"base-distro",level:2}],p={toc:u},c="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"version-6123-2023-07-14"},"Version 6.12.3 2023-07-14"),(0,a.kt)("p",null,"Changes vs. ",(0,a.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.2"},"6.12.2")),(0,a.kt)("h2",{id:"upgrade-notes"},"Upgrade notes"),(0,a.kt)("h3",{id:"known-issues"},"Known issues"),(0,a.kt)("p",null,"Please see the ",(0,a.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.0#known-issues"},"6.12.0 release notes")," for general known issues."),(0,a.kt)("h3",{id:"rolling-back"},"Rolling back"),(0,a.kt)("p",null,"If rolling back earlier than 6.12.0, also see the ",(0,a.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.0#rolling-back"},"6.12.0 release notes"),"."),(0,a.kt)("h2",{id:"networking"},"Networking"),(0,a.kt)("p",null,"This release has fixes for networking, particularly as it relates to IPv6. A side effect is that this should resolve\nan issue where the webGUI will not load in certain instances."),(0,a.kt)("p",null,"Note: If you have code in your 'go' script to disable IPv6, remove that and disable it via the 'Settings/Network Settings'\npage instead. Manually disabling IPv6 will cause conflicts."),(0,a.kt)("h2",{id:"docker"},"Docker"),(0,a.kt)("p",null,"This release resolves an issue where Docker does not properly stop when the array Stops, which can result in an unclean shutdown."),(0,a.kt)("p",null,"If Docker containers have issues starting after a while, and you are running Plex, go to your Plex Docker container settings,\nswitch to advanced view, and add this to the Extra Params: ",(0,a.kt)("inlineCode",{parentName:"p"},"--no-healthcheck")),(0,a.kt)("h2",{id:"bug-fixes-and-improvements"},"Bug fixes and improvements"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"rc.docker:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"revised docker daemon running check"),(0,a.kt)("li",{parentName:"ul"},"rc.docker: change route metric of main interface as needed to avoid conflict with shim interface with shim interface"))),(0,a.kt)("li",{parentName:"ul"},"rc.library:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"code optimization for ipv6 max/min"),(0,a.kt)("li",{parentName:"ul"},"support ipv4 mapped addresses"))),(0,a.kt)("li",{parentName:"ul"},"rc.nginx: explicit ipv4/ipv6 selection on lo interface"),(0,a.kt)("li",{parentName:"ul"},"shfs: correct share size calculation when ZFS is one of the volumes"),(0,a.kt)("li",{parentName:"ul"},"webgui:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"VM settings page: fixed typo"),(0,a.kt)("li",{parentName:"ul"},"Share Edit page: make minimum free space settings always available"),(0,a.kt)("li",{parentName:"ul"},"Wireguard: fix typo in Ipv6 mask"),(0,a.kt)("li",{parentName:"ul"},"Routing table: fix display of metric value when zero")))),(0,a.kt)("h2",{id:"linux-kernel"},"Linux kernel"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"version 6.1.38"),(0,a.kt)("li",{parentName:"ul"},"Added support to monitor and also limit power on Intel Core (2nd Gen+) CPU models:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"CONFIG_POWERCAP: Generic powercap sysfs driver"),(0,a.kt)("li",{parentName:"ul"},"CONFIG_INTEL_RAPL: Intel RAPL Support via MSR Interface"),(0,a.kt)("li",{parentName:"ul"},"CONFIG_IDLE_INJECT: Idle injection framework")))),(0,a.kt)("h2",{id:"base-distro"},"Base Distro"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"firefox: version 115.0.r20230710165010 (AppImage)")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7a2d53ea.9ce3779c.js b/assets/js/7a2d53ea.9ce3779c.js deleted file mode 100644 index 606c73dda..000000000 --- a/assets/js/7a2d53ea.9ce3779c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5833],{4137:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=n.createContext({}),u=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=u(r),m=a,f=p["".concat(s,".").concat(m)]||p[m]||d[m]||i;return r?n.createElement(f,o(o({ref:t},c),{},{components:r})):n.createElement(f,o({ref:t},c))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,o[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var n=r(7462),a=(r(7294),r(4137));const i={},o="Version 6.12.3 2023-07-14",l={unversionedId:"unraid-os/release-notes/6.12.3",id:"unraid-os/release-notes/6.12.3",title:"Version 6.12.3 2023-07-14",description:"Changes vs. 6.12.2",source:"@site/docs/unraid-os/release-notes/6.12.3.md",sourceDirName:"unraid-os/release-notes",slug:"/unraid-os/release-notes/6.12.3",permalink:"/unraid-os/release-notes/6.12.3",draft:!1,editUrl:"https://github.com/unraid/docs/tree/main/docs/unraid-os/release-notes/6.12.3.md",tags:[],version:"current",frontMatter:{},sidebar:"unraidSidebar",previous:{title:"Version 6.12.2 2023-06-29",permalink:"/unraid-os/release-notes/6.12.2"},next:{title:"6.11.0",permalink:"/unraid-os/release-notes/6.11.0"}},s={},u=[{value:"Networking",id:"networking",level:2},{value:"Docker",id:"docker",level:2},{value:"Bug fixes and improvements",id:"bug-fixes-and-improvements",level:2},{value:"Linux kernel",id:"linux-kernel",level:2},{value:"Base Distro",id:"base-distro",level:2}],c={toc:u},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"version-6123-2023-07-14"},"Version 6.12.3 2023-07-14"),(0,a.kt)("p",null,"Changes vs. ",(0,a.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.2"},"6.12.2")),(0,a.kt)("h2",{id:"networking"},"Networking"),(0,a.kt)("p",null,"This release has fixes for networking, particularly as it relates to IPv6. A side effect is that this should resolve\nan issue where the webGUI will not load in certain instances."),(0,a.kt)("p",null,"Note: If you have code in your 'go' script to disable IPv6, remove that and disable it via the 'Settings/Network Settings'\npage instead. Manually disabling IPv6 will cause conflicts."),(0,a.kt)("h2",{id:"docker"},"Docker"),(0,a.kt)("p",null,"This release resolves an issue where Docker does not properly stop when the array Stops, which can result in an unclean shutdown."),(0,a.kt)("p",null,"If Docker containers have issues starting after a while, and you are running Plex, go to your Plex Docker container settings,\nswitch to advanced view, and add this to the Extra Params: --no-healthcheck"),(0,a.kt)("h2",{id:"bug-fixes-and-improvements"},"Bug fixes and improvements"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"rc.docker:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"revised docker daemon running check"),(0,a.kt)("li",{parentName:"ul"},"rc.docker: change route metric of main interface as needed to avoid conflict with shim interface with shim interface"))),(0,a.kt)("li",{parentName:"ul"},"rc.library:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"code optimization for ipv6 max/min"),(0,a.kt)("li",{parentName:"ul"},"support ipv4 mapped addresses"))),(0,a.kt)("li",{parentName:"ul"},"rc.nginx: explicit ipv4/ipv6 selection on lo interface"),(0,a.kt)("li",{parentName:"ul"},"shfs: correct share size calculation when ZFS is one of the volumes"),(0,a.kt)("li",{parentName:"ul"},"webgui:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"VM settings page: fixed typo"),(0,a.kt)("li",{parentName:"ul"},"Share Edit page: make minimum free space settings always available"),(0,a.kt)("li",{parentName:"ul"},"Wireguard: fix typo in Ipv6 mask"),(0,a.kt)("li",{parentName:"ul"},"Routing table: fix display of metric value when zero")))),(0,a.kt)("h2",{id:"linux-kernel"},"Linux kernel"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"version 6.1.38"),(0,a.kt)("li",{parentName:"ul"},"Added support to monitor and also limit power on Intel Core (2nd Gen+) CPU models:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"CONFIG_POWERCAP: Generic powercap sysfs driver"),(0,a.kt)("li",{parentName:"ul"},"CONFIG_INTEL_RAPL: Intel RAPL Support via MSR Interface"),(0,a.kt)("li",{parentName:"ul"},"CONFIG_IDLE_INJECT: Idle injection framework")))),(0,a.kt)("h2",{id:"base-distro"},"Base Distro"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"firefox: version 115.0.r20230710165010 (AppImage)")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.52175e15.js b/assets/js/935f2afb.52175e15.js deleted file mode 100644 index 2873a1925..000000000 --- a/assets/js/935f2afb.52175e15.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2197],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"unraidSidebar":[{"type":"link","label":"Home","href":"/","docId":"docs-home"},{"type":"category","label":"Unraid OS","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Release Notes","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"6.12","items":[{"type":"link","label":"6.12.0","href":"/unraid-os/release-notes/6.12.0","docId":"unraid-os/release-notes/6.12.0"},{"type":"link","label":"6.12.1","href":"/unraid-os/release-notes/6.12.1","docId":"unraid-os/release-notes/6.12.1"},{"type":"link","label":"6.12.2","href":"/unraid-os/release-notes/6.12.2","docId":"unraid-os/release-notes/6.12.2"},{"type":"link","label":"6.12.3","href":"/unraid-os/release-notes/6.12.3","docId":"unraid-os/release-notes/6.12.3"}],"collapsed":false,"collapsible":true},{"type":"category","label":"6.11","items":[{"type":"link","label":"6.11.0","href":"/unraid-os/release-notes/6.11.0","docId":"unraid-os/release-notes/6.11.0"},{"type":"link","label":"6.11.1","href":"/unraid-os/release-notes/6.11.1","docId":"unraid-os/release-notes/6.11.1"},{"type":"link","label":"6.11.2","href":"/unraid-os/release-notes/6.11.2","docId":"unraid-os/release-notes/6.11.2"},{"type":"link","label":"6.11.3","href":"/unraid-os/release-notes/6.11.3","docId":"unraid-os/release-notes/6.11.3"},{"type":"link","label":"6.11.4","href":"/unraid-os/release-notes/6.11.4","docId":"unraid-os/release-notes/6.11.4"},{"type":"link","label":"6.11.5","href":"/unraid-os/release-notes/6.11.5","docId":"unraid-os/release-notes/6.11.5"}],"collapsed":true,"collapsible":true},{"type":"category","label":"6.10","items":[{"type":"link","label":"6.10.0","href":"/unraid-os/release-notes/6.10.0","docId":"unraid-os/release-notes/6.10.0"},{"type":"link","label":"6.10.1","href":"/unraid-os/release-notes/6.10.1","docId":"unraid-os/release-notes/6.10.1"},{"type":"link","label":"6.10.2","href":"/unraid-os/release-notes/6.10.2","docId":"unraid-os/release-notes/6.10.2"},{"type":"link","label":"6.10.3","href":"/unraid-os/release-notes/6.10.3","docId":"unraid-os/release-notes/6.10.3"}],"collapsed":true,"collapsible":true},{"type":"category","label":"6.9","items":[{"type":"link","label":"6.9.0","href":"/unraid-os/release-notes/6.9.0","docId":"unraid-os/release-notes/6.9.0"},{"type":"link","label":"6.9.1","href":"/unraid-os/release-notes/6.9.1","docId":"unraid-os/release-notes/6.9.1"},{"type":"link","label":"6.9.2","href":"/unraid-os/release-notes/6.9.2","docId":"unraid-os/release-notes/6.9.2"}],"collapsed":true,"collapsible":true}],"href":"/category/release-notes"},{"type":"category","label":"FAQ","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Licensing","href":"/unraid-os/faq/licensing-faq","docId":"unraid-os/faq/licensing-faq"},{"type":"link","label":"OS","href":"/unraid-os/faq/os-faq","docId":"unraid-os/faq/os-faq"},{"type":"link","label":"Redeem License Activation Code","href":"/unraid-os/faq/redeem-license-activation-code","docId":"unraid-os/faq/redeem-license-activation-code"},{"type":"link","label":"Unraid Account","href":"/unraid-os/faq/unraid-account","docId":"unraid-os/faq/unraid-account"}],"href":"/category/faq"},{"type":"category","label":"Guides","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Apple Time Machine","href":"/unraid-os/guides/configuring-time-machine","docId":"unraid-os/guides/configuring-time-machine"},{"type":"link","label":"How To Setup Wake On LAN (WOL) for UNRAID","href":"/unraid-os/guides/wol-setup-for-unraid","docId":"unraid-os/guides/wol-setup-for-unraid"}],"href":"/category/guides"},{"type":"category","label":"Manual","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Shares","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"User shares","href":"/unraid-os/manual/shares/user-shares","docId":"unraid-os/manual/shares/user-shares"},{"type":"link","label":"Disk shares","href":"/unraid-os/manual/shares/disk-shares","docId":"unraid-os/manual/shares/disk-shares"},{"type":"link","label":"Network access","href":"/unraid-os/manual/shares/network-access","docId":"unraid-os/manual/shares/network-access"},{"type":"link","label":"Create a new share","href":"/unraid-os/manual/shares/create-a-share","docId":"unraid-os/manual/shares/create-a-share"},{"type":"link","label":"Delete a share","href":"/unraid-os/manual/shares/delete-a-share","docId":"unraid-os/manual/shares/delete-a-share"}],"href":"/unraid-os/manual/shares/"},{"type":"link","label":"Overview","href":"/unraid-os/manual/what-is-unraid","docId":"unraid-os/manual/what-is-unraid"},{"type":"link","label":"Storage Management","href":"/unraid-os/manual/storage-management","docId":"unraid-os/manual/storage-management"},{"type":"link","label":"Docker Management","href":"/unraid-os/manual/docker-management","docId":"unraid-os/manual/docker-management"},{"type":"link","label":"VM Support","href":"/unraid-os/manual/vm-support","docId":"unraid-os/manual/vm-support"},{"type":"link","label":"Managing VMs","href":"/unraid-os/manual/vm-management","docId":"unraid-os/manual/vm-management"},{"type":"link","label":"Community Applications","href":"/unraid-os/manual/applications","docId":"unraid-os/manual/applications"},{"type":"category","label":"Security","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Good Practices","href":"/unraid-os/manual/security/good-practices","docId":"unraid-os/manual/security/good-practices"},{"type":"link","label":"Securing webGUI connections (SSL)","href":"/unraid-os/manual/security/secure-webgui-ssl","docId":"unraid-os/manual/security/secure-webgui-ssl"},{"type":"link","label":"Data Encryption","href":"/unraid-os/manual/security/data-encryption","docId":"unraid-os/manual/security/data-encryption"},{"type":"link","label":"Flash Drive","href":"/unraid-os/manual/security/flash-drive","docId":"unraid-os/manual/security/flash-drive"},{"type":"link","label":"VPN","href":"/unraid-os/manual/security/vpn","docId":"unraid-os/manual/security/vpn"}],"href":"/unraid-os/manual/security/"},{"type":"link","label":"Multi-Language Support","href":"/unraid-os/manual/multi-language","docId":"unraid-os/manual/multi-language"},{"type":"link","label":"Troubleshooting","href":"/unraid-os/manual/troubleshooting","docId":"unraid-os/manual/troubleshooting"},{"type":"link","label":"Additional Settings","href":"/unraid-os/manual/additional-settings","docId":"unraid-os/manual/additional-settings"},{"type":"link","label":"Changing the Flash Device","href":"/unraid-os/manual/changing-the-flash-device","docId":"unraid-os/manual/changing-the-flash-device"},{"type":"category","label":"Getting Started","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Getting Started","href":"/unraid-os/manual/getting-started/","docId":"unraid-os/manual/getting-started/getting-started"},{"type":"link","label":"Manual Install Method","href":"/unraid-os/manual/getting-started/manual-install-method","docId":"unraid-os/manual/getting-started/manual-install-method"}],"href":"/category/getting-started"},{"type":"link","label":"Tools","href":"/unraid-os/manual/tools","docId":"unraid-os/manual/tools"},{"type":"link","label":"Upgrading Unraid","href":"/unraid-os/manual/upgrade-instructions","docId":"unraid-os/manual/upgrade-instructions"},{"type":"link","label":"Users","href":"/unraid-os/manual/users","docId":"unraid-os/manual/users"},{"type":"category","label":"ZFS","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"About","href":"/unraid-os/manual/zfs/placeholder","docId":"unraid-os/manual/zfs/placeholder"}],"href":"/category/zfs"}],"href":"/category/manual"}],"href":"/category/unraid-os"},{"type":"category","label":"Unraid Connect","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"About Unraid Connect","href":"/connect/about","docId":"connect/about"},{"type":"link","label":"Unraid Connect Help","href":"/connect/help","docId":"connect/help"},{"type":"link","label":"Remote Access","href":"/connect/remote-access","docId":"connect/remote-access"}],"href":"/category/unraid-connect"},{"type":"category","label":"Legacy Documentation","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Articles","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Dual Booting Windows & Unraid","href":"/legacy/Articles/dual-boot-unraid-and-windows","docId":"legacy/Articles/dual-boot-unraid-and-windows"},{"type":"link","label":"Expanding Windows VM VDisk Partitions","href":"/legacy/Articles/expanding-windows-vm-vdisk-partitions","docId":"legacy/Articles/expanding-windows-vm-vdisk-partitions"},{"type":"link","label":"Upgrading to Unraid 6","href":"/legacy/Articles/upgrading-to-unraid-6","docId":"legacy/Articles/upgrading-to-unraid-6"}]},{"type":"category","label":"FAQ","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Parity","href":"/legacy/FAQ/Parity","docId":"legacy/FAQ/Parity"},{"type":"link","label":"Cache Disk","href":"/legacy/FAQ/cache-disk","docId":"legacy/FAQ/cache-disk"},{"type":"link","label":"Checking and fixing file systems","href":"/legacy/FAQ/check-disk-filesystems","docId":"legacy/FAQ/check-disk-filesystems"},{"type":"link","label":"Check Harddrive Speed","href":"/legacy/FAQ/check-harddrive-speed","docId":"legacy/FAQ/check-harddrive-speed"},{"type":"link","label":"Console","href":"/legacy/FAQ/console","docId":"legacy/FAQ/console"},{"type":"link","label":"The Parity Swap Procedure","href":"/legacy/FAQ/parity-swap-procedure","docId":"legacy/FAQ/parity-swap-procedure"},{"type":"link","label":"Replacing a Data Drive","href":"/legacy/FAQ/replacing-a-data-drive","docId":"legacy/FAQ/replacing-a-data-drive"},{"type":"link","label":"Replacing Multiple Data Drives with a Single Larger Drive","href":"/legacy/FAQ/replacing-multiple-data-drives","docId":"legacy/FAQ/replacing-multiple-data-drives"},{"type":"link","label":"Setting Up CPU and Board Temperature Sensing","href":"/legacy/FAQ/setting-up-cpu-and-board-temperature-sensing","docId":"legacy/FAQ/setting-up-cpu-and-board-temperature-sensing"},{"type":"link","label":"Setup Sleep (S3) and Wake on Lan (WOL)","href":"/legacy/FAQ/setup-sleep-and-wake-on-lan","docId":"legacy/FAQ/setup-sleep-and-wake-on-lan"},{"type":"link","label":"Shrink Array","href":"/legacy/FAQ/shrink-array","docId":"legacy/FAQ/shrink-array"},{"type":"link","label":"Terminal Access","href":"/legacy/FAQ/terminal-access","docId":"legacy/FAQ/terminal-access"},{"type":"link","label":"Transferring Files from a Network Share to Unraid","href":"/legacy/FAQ/transferring-files-from-a-network-share-to-unraid","docId":"legacy/FAQ/transferring-files-from-a-network-share-to-unraid"},{"type":"link","label":"Transferring Files Within the Unraid Server","href":"/legacy/FAQ/transferring-files-within-the-unraid-server","docId":"legacy/FAQ/transferring-files-within-the-unraid-server"},{"type":"link","label":"Understanding SMART Reports","href":"/legacy/FAQ/understanding-smart-reports","docId":"legacy/FAQ/understanding-smart-reports"},{"type":"link","label":"USB Flash Drive Preparation","href":"/legacy/FAQ/usb-flash-drive-preparation","docId":"legacy/FAQ/usb-flash-drive-preparation"}]}],"href":"/category/legacy-documentation"},{"type":"category","label":"Contribute","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Contributing to Unraid Documentation","href":"/contribute-to-docs/intro","docId":"contribute-to-docs/intro"},{"type":"category","label":"Tutorial - Basics","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Create a Page","href":"/contribute-to-docs/tutorial-basics/create-a-page","docId":"contribute-to-docs/tutorial-basics/create-a-page"},{"type":"link","label":"Create a Document","href":"/contribute-to-docs/tutorial-basics/create-a-document","docId":"contribute-to-docs/tutorial-basics/create-a-document"},{"type":"link","label":"Create a Blog Post","href":"/contribute-to-docs/tutorial-basics/create-a-blog-post","docId":"contribute-to-docs/tutorial-basics/create-a-blog-post"},{"type":"link","label":"Markdown Features","href":"/contribute-to-docs/tutorial-basics/markdown-features","docId":"contribute-to-docs/tutorial-basics/markdown-features"},{"type":"link","label":"Congratulations","href":"/contribute-to-docs/tutorial-basics/congratulations","docId":"contribute-to-docs/tutorial-basics/congratulations"}],"href":"/category/tutorial---basics"},{"type":"category","label":"Tutorial - Extras","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Manage Docs Versions","href":"/contribute-to-docs/tutorial-extras/manage-docs-versions","docId":"contribute-to-docs/tutorial-extras/manage-docs-versions"},{"type":"link","label":"Translate your site","href":"/contribute-to-docs/tutorial-extras/translate-your-site","docId":"contribute-to-docs/tutorial-extras/translate-your-site"}],"href":"/category/tutorial---extras"}],"href":"/category/contribute"}]},"docs":{"connect/about":{"id":"connect/about","title":"About Unraid Connect","description":"What is Unraid Connect?","sidebar":"unraidSidebar"},"connect/help":{"id":"connect/help","title":"Unraid Connect Help","description":"How to Install","sidebar":"unraidSidebar"},"connect/remote-access":{"id":"connect/remote-access","title":"Remote Access","description":"The Remote Access feature","sidebar":"unraidSidebar"},"contribute-to-docs/intro":{"id":"contribute-to-docs/intro","title":"Contributing to Unraid Documentation","description":"Contribute to a Docs Page that already Exists","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-basics/congratulations":{"id":"contribute-to-docs/tutorial-basics/congratulations","title":"Congratulations","description":"You have just learned the basics of Docusaurus and made some changes to the initial template.","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-basics/create-a-blog-post":{"id":"contribute-to-docs/tutorial-basics/create-a-blog-post","title":"Create a Blog Post","description":"Docusaurus creates a page for each blog post, but also a blog index page, a tag system, an RSS feed...","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-basics/create-a-document":{"id":"contribute-to-docs/tutorial-basics/create-a-document","title":"Create a Document","description":"Documents are groups of pages connected through:","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-basics/create-a-page":{"id":"contribute-to-docs/tutorial-basics/create-a-page","title":"Create a Page","description":"Add Markdown or React files to src/pages to create a standalone page:","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-basics/markdown-features":{"id":"contribute-to-docs/tutorial-basics/markdown-features","title":"Markdown Features","description":"Docusaurus supports Markdown and a few additional features.","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-extras/manage-docs-versions":{"id":"contribute-to-docs/tutorial-extras/manage-docs-versions","title":"Manage Docs Versions","description":"Docusaurus can manage multiple versions of your docs.","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-extras/translate-your-site":{"id":"contribute-to-docs/tutorial-extras/translate-your-site","title":"Translate your site","description":"Let\'s translate docs/intro.md to French.","sidebar":"unraidSidebar"},"docs-home":{"id":"docs-home","title":"Home","description":"Unraid Documentation","sidebar":"unraidSidebar"},"legacy/Articles/dual-boot-unraid-and-windows":{"id":"legacy/Articles/dual-boot-unraid-and-windows","title":"Dual Booting Windows & Unraid","description":"This procedure is intended to help someone with moderate Linux","sidebar":"unraidSidebar"},"legacy/Articles/expanding-windows-vm-vdisk-partitions":{"id":"legacy/Articles/expanding-windows-vm-vdisk-partitions","title":"Expanding Windows VM VDisk Partitions","description":"Overview","sidebar":"unraidSidebar"},"legacy/Articles/upgrading-to-unraid-6":{"id":"legacy/Articles/upgrading-to-unraid-6","title":"Upgrading to Unraid 6","description":"Before upgrading, we highly recommend making a complete back up of your","sidebar":"unraidSidebar"},"legacy/FAQ/cache-disk":{"id":"legacy/FAQ/cache-disk","title":"Cache Disk","description":"Important! This page is a basic introduction to the Unraid Cache","sidebar":"unraidSidebar"},"legacy/FAQ/check-disk-filesystems":{"id":"legacy/FAQ/check-disk-filesystems","title":"Checking and fixing file systems","description":"Is this the right page?","sidebar":"unraidSidebar"},"legacy/FAQ/check-harddrive-speed":{"id":"legacy/FAQ/check-harddrive-speed","title":"Check Harddrive Speed","description":"The native Linux command hdparm (Hard Disk Parameters) can be used","sidebar":"unraidSidebar"},"legacy/FAQ/console":{"id":"legacy/FAQ/console","title":"Console","description":"Knowledgeable authors and editors are heartily welcomed! Please help","sidebar":"unraidSidebar"},"legacy/FAQ/Parity":{"id":"legacy/FAQ/Parity","title":"Parity","description":"Parity is used by Unraid to protect against data loss. If a drive in the","sidebar":"unraidSidebar"},"legacy/FAQ/parity-swap-procedure":{"id":"legacy/FAQ/parity-swap-procedure","title":"The Parity Swap Procedure","description":"_First release, tested only on v6.1 & 6.7.2_","sidebar":"unraidSidebar"},"legacy/FAQ/replacing-a-data-drive":{"id":"legacy/FAQ/replacing-a-data-drive","title":"Replacing a Data Drive","description":"This page describes how to replace an Unraid array data drive. Why","sidebar":"unraidSidebar"},"legacy/FAQ/replacing-multiple-data-drives":{"id":"legacy/FAQ/replacing-multiple-data-drives","title":"Replacing Multiple Data Drives with a Single Larger Drive","description":"Problem: You want to consolidate several smaller drives onto a new and","sidebar":"unraidSidebar"},"legacy/FAQ/setting-up-cpu-and-board-temperature-sensing":{"id":"legacy/FAQ/setting-up-cpu-and-board-temperature-sensing","title":"Setting Up CPU and Board Temperature Sensing","description":"This page is designed to help you obtain your CPU and motherboard","sidebar":"unraidSidebar"},"legacy/FAQ/setup-sleep-and-wake-on-lan":{"id":"legacy/FAQ/setup-sleep-and-wake-on-lan","title":"Setup Sleep (S3) and Wake on Lan (WOL)","description":"The following are my notes for setting up my Unraid server to sleep to","sidebar":"unraidSidebar"},"legacy/FAQ/shrink-array":{"id":"legacy/FAQ/shrink-array","title":"Shrink Array","description":"Note: this page has been tested for v6,","sidebar":"unraidSidebar"},"legacy/FAQ/terminal-access":{"id":"legacy/FAQ/terminal-access","title":"Terminal Access","description":"What is \\"Terminal access\\"?","sidebar":"unraidSidebar"},"legacy/FAQ/transferring-files-from-a-network-share-to-unraid":{"id":"legacy/FAQ/transferring-files-from-a-network-share-to-unraid","title":"Transferring Files from a Network Share to Unraid","description":"Open a terminal session with SSH or Telnet","sidebar":"unraidSidebar"},"legacy/FAQ/transferring-files-within-the-unraid-server":{"id":"legacy/FAQ/transferring-files-within-the-unraid-server","title":"Transferring Files Within the Unraid Server","description":"If you are using Windows Explorer to move files between drives, you are","sidebar":"unraidSidebar"},"legacy/FAQ/understanding-smart-reports":{"id":"legacy/FAQ/understanding-smart-reports","title":"Understanding SMART Reports","description":"under\xa0construction,\xa0only\xa0slightly\xa0usable\xa0so\xa0far","sidebar":"unraidSidebar"},"legacy/FAQ/usb-flash-drive-preparation":{"id":"legacy/FAQ/usb-flash-drive-preparation","title":"USB Flash Drive Preparation","description":"USB Flash Drives","sidebar":"unraidSidebar"},"unraid-os/faq/licensing-faq":{"id":"unraid-os/faq/licensing-faq","title":"Licensing","description":"Is Pricing for Unraid OS \\"one time\\"? Are There Additional Fees for OS Updates?","sidebar":"unraidSidebar"},"unraid-os/faq/os-faq":{"id":"unraid-os/faq/os-faq","title":"OS","description":"I Need Help with a Build / System Configuration. Where do I go?","sidebar":"unraidSidebar"},"unraid-os/faq/redeem-license-activation-code":{"id":"unraid-os/faq/redeem-license-activation-code","title":"Redeem License Activation Code","description":"First, buy an activation code via our website. Your unique activation code will be on your purchase receipt.","sidebar":"unraidSidebar"},"unraid-os/faq/unraid-account":{"id":"unraid-os/faq/unraid-account","title":"Unraid Account","description":"What is an Unraid.net Account?","sidebar":"unraidSidebar"},"unraid-os/guides/configuring-time-machine":{"id":"unraid-os/guides/configuring-time-machine","title":"Apple Time Machine","description":"Guide: Setting up a Time Machine Share on your Unraid Server","sidebar":"unraidSidebar"},"unraid-os/guides/wol-setup-for-unraid":{"id":"unraid-os/guides/wol-setup-for-unraid","title":"How To Setup Wake On LAN (WOL) for UNRAID","description":"(assuming onboard NIC and WOL activated in motherboard\'s BIOS)","sidebar":"unraidSidebar"},"unraid-os/manual/additional-settings":{"id":"unraid-os/manual/additional-settings","title":"Additional Settings","description":"While Unraid is configured to work automatically, you may wish to","sidebar":"unraidSidebar"},"unraid-os/manual/applications":{"id":"unraid-os/manual/applications","title":"Community Applications","description":"This section discusses running applications on an Unraid server or","sidebar":"unraidSidebar"},"unraid-os/manual/changing-the-flash-device":{"id":"unraid-os/manual/changing-the-flash-device","title":"Changing the Flash Device","description":"There are two ways to swap out your USB flash device. If you are using a","sidebar":"unraidSidebar"},"unraid-os/manual/docker-management":{"id":"unraid-os/manual/docker-management","title":"Docker Management","description":"Docker is a technology that allows users to provide each application","sidebar":"unraidSidebar"},"unraid-os/manual/getting-started/getting-started":{"id":"unraid-os/manual/getting-started/getting-started","title":"Getting Started","description":"In this guide, we will be covering how to prepare your flash device,","sidebar":"unraidSidebar"},"unraid-os/manual/getting-started/manual-install-method":{"id":"unraid-os/manual/getting-started/manual-install-method","title":"Manual Install Method","description":"If for some reason the USB Flash Creator tool cannot be used, or your USB flash device is not detected,","sidebar":"unraidSidebar"},"unraid-os/manual/multi-language":{"id":"unraid-os/manual/multi-language","title":"Multi-Language Support","description":"Introduction","sidebar":"unraidSidebar"},"unraid-os/manual/security/data-encryption":{"id":"unraid-os/manual/security/data-encryption","title":"Data Encryption","description":"Unraid supports the use of encrypted drives in both the cache and the array. It does this using the Linux LUKS (Linux Unified Key System) encryption modules.","sidebar":"unraidSidebar"},"unraid-os/manual/security/flash-drive":{"id":"unraid-os/manual/security/flash-drive","title":"Flash Drive","description":"The flash drive that is used to boot Unraid is important as it contains all the configuration information for your Unraid server. Because of this, you want to consider the security of the information it contains and how it is accessed.","sidebar":"unraidSidebar"},"unraid-os/manual/security/good-practices":{"id":"unraid-os/manual/security/good-practices","title":"Good Practices","description":"We have compiled a set of recommendations to help you secure your server. While not all may apply to your specific scenario, they provide a solid foundation to preserve the security and privacy of your system.","sidebar":"unraidSidebar"},"unraid-os/manual/security/secure-webgui-ssl":{"id":"unraid-os/manual/security/secure-webgui-ssl","title":"Securing webGUI connections (SSL)","description":"As of Unraid 6.10, you can improve the security of the SSL implementation for both local access and Unraid Connect Remote Access using wildcard SSL Certificates provisioned by Let\'s Encrypt.","sidebar":"unraidSidebar"},"unraid-os/manual/security/security":{"id":"unraid-os/manual/security/security","title":"Security","description":"An Unraid server is likely to contain data that is sensitive or that you would otherwise hate to lose. Since most users will have their home network connected to the internet, precautions should be taken to avoid an Unraid server being compromised by malicious actors trying to access them remotely.","sidebar":"unraidSidebar"},"unraid-os/manual/security/vpn":{"id":"unraid-os/manual/security/vpn","title":"VPN","description":"Unraid servers are not hardened against attack via the network so should never be exposed to the internet without use of a VPN.","sidebar":"unraidSidebar"},"unraid-os/manual/shares/create-a-share":{"id":"unraid-os/manual/shares/create-a-share","title":"Create a new share","description":"When you create a new share, plan ahead.","sidebar":"unraidSidebar"},"unraid-os/manual/shares/delete-a-share":{"id":"unraid-os/manual/shares/delete-a-share","title":"Delete a share","description":"To delete a share on your Unraid server the share must contain no data.","sidebar":"unraidSidebar"},"unraid-os/manual/shares/disk-shares":{"id":"unraid-os/manual/shares/disk-shares","title":"Disk shares","description":"Enable or disable disk shares in Settings > Global Share Settings. Disk shares are disabled by default.","sidebar":"unraidSidebar"},"unraid-os/manual/shares/network-access":{"id":"unraid-os/manual/shares/network-access","title":"Network access","description":"Communication protocols","sidebar":"unraidSidebar"},"unraid-os/manual/shares/shares":{"id":"unraid-os/manual/shares/shares","title":"Shares","description":"Once you have assigned devices to Unraid and started the array, we recommend that you plan and create shares to simplify how you store data across multiple disks in the array.","sidebar":"unraidSidebar"},"unraid-os/manual/shares/user-shares":{"id":"unraid-os/manual/shares/user-shares","title":"User shares","description":"Enable or disable user shares in Settings > Global Share Settings. User shares are enabled by default.","sidebar":"unraidSidebar"},"unraid-os/manual/storage-management":{"id":"unraid-os/manual/storage-management","title":"Storage Management","description":"To assign devices to","sidebar":"unraidSidebar"},"unraid-os/manual/tools":{"id":"unraid-os/manual/tools","title":"Tools","description":"THIS SECTION IS STILL UNDER CONSTRUCTION","sidebar":"unraidSidebar"},"unraid-os/manual/troubleshooting":{"id":"unraid-os/manual/troubleshooting","title":"Troubleshooting","description":"THIS SECTION IS STILL UNDER CONSTRUCTION","sidebar":"unraidSidebar"},"unraid-os/manual/upgrade-instructions":{"id":"unraid-os/manual/upgrade-instructions","title":"Upgrading Unraid","description":"Prerequisites","sidebar":"unraidSidebar"},"unraid-os/manual/users":{"id":"unraid-os/manual/users","title":"Users","description":"THIS SECTION IS STILL UNDER CONSTRUCTION","sidebar":"unraidSidebar"},"unraid-os/manual/vm-management":{"id":"unraid-os/manual/vm-management","title":"Managing VMs","description":"Overview","sidebar":"unraidSidebar"},"unraid-os/manual/vm-support":{"id":"unraid-os/manual/vm-support","title":"VM Support","description":"Unraid 6 currently supports the virtualization of nearly any 64-bit","sidebar":"unraidSidebar"},"unraid-os/manual/what-is-unraid":{"id":"unraid-os/manual/what-is-unraid","title":"What is Unraid?","description":"Unraid\xae is an embedded operating system that is designed to provide you","sidebar":"unraidSidebar"},"unraid-os/manual/zfs/placeholder":{"id":"unraid-os/manual/zfs/placeholder","title":"About","description":"Please add guides on how to use and configure ZFS in this subfolder","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.10.0":{"id":"unraid-os/release-notes/6.10.0","title":"6.10.0","description":"Version 6.10.0 2022-05-07","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.10.1":{"id":"unraid-os/release-notes/6.10.1","title":"6.10.1","description":"Version 6.10.1 2022-05-21","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.10.2":{"id":"unraid-os/release-notes/6.10.2","title":"6.10.2","description":"Version 6.10.2 2022-05-27","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.10.3":{"id":"unraid-os/release-notes/6.10.3","title":"6.10.3","description":"Version 6.10.3 2022-06-14","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.11.0":{"id":"unraid-os/release-notes/6.11.0","title":"6.11.0","description":"Version 6.11.0 2022-09-23","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.11.1":{"id":"unraid-os/release-notes/6.11.1","title":"6.11.1","description":"Version 6.11.1 2022-10-06","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.11.2":{"id":"unraid-os/release-notes/6.11.2","title":"6.11.2","description":"Version 6.11.2 2022-11-04","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.11.3":{"id":"unraid-os/release-notes/6.11.3","title":"6.11.3","description":"Version 6.11.3 2022-11-08","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.11.4":{"id":"unraid-os/release-notes/6.11.4","title":"6.11.4","description":"Version 6.11.4 2022-11-18","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.11.5":{"id":"unraid-os/release-notes/6.11.5","title":"6.11.5","description":"Version 6.11.5 2022-11-20","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.12.0":{"id":"unraid-os/release-notes/6.12.0","title":"Version 6.12.0 2023-06-14","description":"Upgrade notes","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.12.1":{"id":"unraid-os/release-notes/6.12.1","title":"Version 6.12.1 2023-06-20","description":"Changes vs. 6.12.0","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.12.2":{"id":"unraid-os/release-notes/6.12.2","title":"Version 6.12.2 2023-06-29","description":"Changes vs. 6.12.1","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.12.3":{"id":"unraid-os/release-notes/6.12.3","title":"Version 6.12.3 2023-07-14","description":"Changes vs. 6.12.2","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.9.0":{"id":"unraid-os/release-notes/6.9.0","title":"6.9.0","description":"Version 6.9.0 2021-02-27","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.9.1":{"id":"unraid-os/release-notes/6.9.1","title":"6.9.1","description":"Version 6.9.1 2021-03-08","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.9.2":{"id":"unraid-os/release-notes/6.9.2","title":"6.9.2","description":"Version 6.9.2 2021-04-07","sidebar":"unraidSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.fac87c0f.js b/assets/js/935f2afb.fac87c0f.js new file mode 100644 index 000000000..514b70d3f --- /dev/null +++ b/assets/js/935f2afb.fac87c0f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2197],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"unraidSidebar":[{"type":"link","label":"Home","href":"/","docId":"docs-home"},{"type":"category","label":"Unraid OS","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Release Notes","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"6.12","items":[{"type":"link","label":"6.12.0","href":"/unraid-os/release-notes/6.12.0","docId":"unraid-os/release-notes/6.12.0"},{"type":"link","label":"6.12.1","href":"/unraid-os/release-notes/6.12.1","docId":"unraid-os/release-notes/6.12.1"},{"type":"link","label":"6.12.2","href":"/unraid-os/release-notes/6.12.2","docId":"unraid-os/release-notes/6.12.2"},{"type":"link","label":"6.12.3","href":"/unraid-os/release-notes/6.12.3","docId":"unraid-os/release-notes/6.12.3"},{"type":"link","label":"6.12.4","href":"/unraid-os/release-notes/6.12.4","docId":"unraid-os/release-notes/6.12.4"}],"collapsed":false,"collapsible":true},{"type":"category","label":"6.11","items":[{"type":"link","label":"6.11.0","href":"/unraid-os/release-notes/6.11.0","docId":"unraid-os/release-notes/6.11.0"},{"type":"link","label":"6.11.1","href":"/unraid-os/release-notes/6.11.1","docId":"unraid-os/release-notes/6.11.1"},{"type":"link","label":"6.11.2","href":"/unraid-os/release-notes/6.11.2","docId":"unraid-os/release-notes/6.11.2"},{"type":"link","label":"6.11.3","href":"/unraid-os/release-notes/6.11.3","docId":"unraid-os/release-notes/6.11.3"},{"type":"link","label":"6.11.4","href":"/unraid-os/release-notes/6.11.4","docId":"unraid-os/release-notes/6.11.4"},{"type":"link","label":"6.11.5","href":"/unraid-os/release-notes/6.11.5","docId":"unraid-os/release-notes/6.11.5"}],"collapsed":true,"collapsible":true},{"type":"category","label":"6.10","items":[{"type":"link","label":"6.10.0","href":"/unraid-os/release-notes/6.10.0","docId":"unraid-os/release-notes/6.10.0"},{"type":"link","label":"6.10.1","href":"/unraid-os/release-notes/6.10.1","docId":"unraid-os/release-notes/6.10.1"},{"type":"link","label":"6.10.2","href":"/unraid-os/release-notes/6.10.2","docId":"unraid-os/release-notes/6.10.2"},{"type":"link","label":"6.10.3","href":"/unraid-os/release-notes/6.10.3","docId":"unraid-os/release-notes/6.10.3"}],"collapsed":true,"collapsible":true},{"type":"category","label":"6.9","items":[{"type":"link","label":"6.9.0","href":"/unraid-os/release-notes/6.9.0","docId":"unraid-os/release-notes/6.9.0"},{"type":"link","label":"6.9.1","href":"/unraid-os/release-notes/6.9.1","docId":"unraid-os/release-notes/6.9.1"},{"type":"link","label":"6.9.2","href":"/unraid-os/release-notes/6.9.2","docId":"unraid-os/release-notes/6.9.2"}],"collapsed":true,"collapsible":true}],"href":"/category/release-notes"},{"type":"category","label":"FAQ","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Licensing","href":"/unraid-os/faq/licensing-faq","docId":"unraid-os/faq/licensing-faq"},{"type":"link","label":"OS","href":"/unraid-os/faq/os-faq","docId":"unraid-os/faq/os-faq"},{"type":"link","label":"Redeem License Activation Code","href":"/unraid-os/faq/redeem-license-activation-code","docId":"unraid-os/faq/redeem-license-activation-code"},{"type":"link","label":"Unraid Account","href":"/unraid-os/faq/unraid-account","docId":"unraid-os/faq/unraid-account"}],"href":"/category/faq"},{"type":"category","label":"Guides","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Apple Time Machine","href":"/unraid-os/guides/configuring-time-machine","docId":"unraid-os/guides/configuring-time-machine"},{"type":"link","label":"How To Setup Wake On LAN (WOL) for UNRAID","href":"/unraid-os/guides/wol-setup-for-unraid","docId":"unraid-os/guides/wol-setup-for-unraid"}],"href":"/category/guides"},{"type":"category","label":"Manual","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Shares","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"User shares","href":"/unraid-os/manual/shares/user-shares","docId":"unraid-os/manual/shares/user-shares"},{"type":"link","label":"Disk shares","href":"/unraid-os/manual/shares/disk-shares","docId":"unraid-os/manual/shares/disk-shares"},{"type":"link","label":"Network access","href":"/unraid-os/manual/shares/network-access","docId":"unraid-os/manual/shares/network-access"},{"type":"link","label":"Create a new share","href":"/unraid-os/manual/shares/create-a-share","docId":"unraid-os/manual/shares/create-a-share"},{"type":"link","label":"Delete a share","href":"/unraid-os/manual/shares/delete-a-share","docId":"unraid-os/manual/shares/delete-a-share"}],"href":"/unraid-os/manual/shares/"},{"type":"link","label":"Overview","href":"/unraid-os/manual/what-is-unraid","docId":"unraid-os/manual/what-is-unraid"},{"type":"link","label":"Storage Management","href":"/unraid-os/manual/storage-management","docId":"unraid-os/manual/storage-management"},{"type":"link","label":"Docker Management","href":"/unraid-os/manual/docker-management","docId":"unraid-os/manual/docker-management"},{"type":"link","label":"VM Support","href":"/unraid-os/manual/vm-support","docId":"unraid-os/manual/vm-support"},{"type":"link","label":"Managing VMs","href":"/unraid-os/manual/vm-management","docId":"unraid-os/manual/vm-management"},{"type":"link","label":"Community Applications","href":"/unraid-os/manual/applications","docId":"unraid-os/manual/applications"},{"type":"category","label":"Security","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Good Practices","href":"/unraid-os/manual/security/good-practices","docId":"unraid-os/manual/security/good-practices"},{"type":"link","label":"Securing webGUI connections (SSL)","href":"/unraid-os/manual/security/secure-webgui-ssl","docId":"unraid-os/manual/security/secure-webgui-ssl"},{"type":"link","label":"Data Encryption","href":"/unraid-os/manual/security/data-encryption","docId":"unraid-os/manual/security/data-encryption"},{"type":"link","label":"Flash Drive","href":"/unraid-os/manual/security/flash-drive","docId":"unraid-os/manual/security/flash-drive"},{"type":"link","label":"VPN","href":"/unraid-os/manual/security/vpn","docId":"unraid-os/manual/security/vpn"}],"href":"/unraid-os/manual/security/"},{"type":"link","label":"Multi-Language Support","href":"/unraid-os/manual/multi-language","docId":"unraid-os/manual/multi-language"},{"type":"link","label":"Troubleshooting","href":"/unraid-os/manual/troubleshooting","docId":"unraid-os/manual/troubleshooting"},{"type":"link","label":"Additional Settings","href":"/unraid-os/manual/additional-settings","docId":"unraid-os/manual/additional-settings"},{"type":"link","label":"Changing the Flash Device","href":"/unraid-os/manual/changing-the-flash-device","docId":"unraid-os/manual/changing-the-flash-device"},{"type":"category","label":"Getting Started","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Getting Started","href":"/unraid-os/manual/getting-started/","docId":"unraid-os/manual/getting-started/getting-started"},{"type":"link","label":"Manual Install Method","href":"/unraid-os/manual/getting-started/manual-install-method","docId":"unraid-os/manual/getting-started/manual-install-method"}],"href":"/category/getting-started"},{"type":"link","label":"Tools","href":"/unraid-os/manual/tools","docId":"unraid-os/manual/tools"},{"type":"link","label":"Upgrading Unraid","href":"/unraid-os/manual/upgrade-instructions","docId":"unraid-os/manual/upgrade-instructions"},{"type":"link","label":"Users","href":"/unraid-os/manual/users","docId":"unraid-os/manual/users"},{"type":"category","label":"ZFS","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"About","href":"/unraid-os/manual/zfs/placeholder","docId":"unraid-os/manual/zfs/placeholder"}],"href":"/category/zfs"}],"href":"/category/manual"}],"href":"/category/unraid-os"},{"type":"category","label":"Unraid Connect","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"About Unraid Connect","href":"/connect/about","docId":"connect/about"},{"type":"link","label":"Unraid Connect Help","href":"/connect/help","docId":"connect/help"},{"type":"link","label":"Remote Access","href":"/connect/remote-access","docId":"connect/remote-access"}],"href":"/category/unraid-connect"},{"type":"category","label":"Legacy Documentation","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Articles","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Dual Booting Windows & Unraid","href":"/legacy/Articles/dual-boot-unraid-and-windows","docId":"legacy/Articles/dual-boot-unraid-and-windows"},{"type":"link","label":"Expanding Windows VM VDisk Partitions","href":"/legacy/Articles/expanding-windows-vm-vdisk-partitions","docId":"legacy/Articles/expanding-windows-vm-vdisk-partitions"},{"type":"link","label":"Upgrading to Unraid 6","href":"/legacy/Articles/upgrading-to-unraid-6","docId":"legacy/Articles/upgrading-to-unraid-6"}]},{"type":"category","label":"FAQ","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Parity","href":"/legacy/FAQ/Parity","docId":"legacy/FAQ/Parity"},{"type":"link","label":"Cache Disk","href":"/legacy/FAQ/cache-disk","docId":"legacy/FAQ/cache-disk"},{"type":"link","label":"Checking and fixing file systems","href":"/legacy/FAQ/check-disk-filesystems","docId":"legacy/FAQ/check-disk-filesystems"},{"type":"link","label":"Check Harddrive Speed","href":"/legacy/FAQ/check-harddrive-speed","docId":"legacy/FAQ/check-harddrive-speed"},{"type":"link","label":"Console","href":"/legacy/FAQ/console","docId":"legacy/FAQ/console"},{"type":"link","label":"The Parity Swap Procedure","href":"/legacy/FAQ/parity-swap-procedure","docId":"legacy/FAQ/parity-swap-procedure"},{"type":"link","label":"Replacing a Data Drive","href":"/legacy/FAQ/replacing-a-data-drive","docId":"legacy/FAQ/replacing-a-data-drive"},{"type":"link","label":"Replacing Multiple Data Drives with a Single Larger Drive","href":"/legacy/FAQ/replacing-multiple-data-drives","docId":"legacy/FAQ/replacing-multiple-data-drives"},{"type":"link","label":"Setting Up CPU and Board Temperature Sensing","href":"/legacy/FAQ/setting-up-cpu-and-board-temperature-sensing","docId":"legacy/FAQ/setting-up-cpu-and-board-temperature-sensing"},{"type":"link","label":"Setup Sleep (S3) and Wake on Lan (WOL)","href":"/legacy/FAQ/setup-sleep-and-wake-on-lan","docId":"legacy/FAQ/setup-sleep-and-wake-on-lan"},{"type":"link","label":"Shrink Array","href":"/legacy/FAQ/shrink-array","docId":"legacy/FAQ/shrink-array"},{"type":"link","label":"Terminal Access","href":"/legacy/FAQ/terminal-access","docId":"legacy/FAQ/terminal-access"},{"type":"link","label":"Transferring Files from a Network Share to Unraid","href":"/legacy/FAQ/transferring-files-from-a-network-share-to-unraid","docId":"legacy/FAQ/transferring-files-from-a-network-share-to-unraid"},{"type":"link","label":"Transferring Files Within the Unraid Server","href":"/legacy/FAQ/transferring-files-within-the-unraid-server","docId":"legacy/FAQ/transferring-files-within-the-unraid-server"},{"type":"link","label":"Understanding SMART Reports","href":"/legacy/FAQ/understanding-smart-reports","docId":"legacy/FAQ/understanding-smart-reports"},{"type":"link","label":"USB Flash Drive Preparation","href":"/legacy/FAQ/usb-flash-drive-preparation","docId":"legacy/FAQ/usb-flash-drive-preparation"}]}],"href":"/category/legacy-documentation"},{"type":"category","label":"Contribute","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Contributing to Unraid Documentation","href":"/contribute-to-docs/intro","docId":"contribute-to-docs/intro"},{"type":"category","label":"Tutorial - Basics","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Create a Page","href":"/contribute-to-docs/tutorial-basics/create-a-page","docId":"contribute-to-docs/tutorial-basics/create-a-page"},{"type":"link","label":"Create a Document","href":"/contribute-to-docs/tutorial-basics/create-a-document","docId":"contribute-to-docs/tutorial-basics/create-a-document"},{"type":"link","label":"Create a Blog Post","href":"/contribute-to-docs/tutorial-basics/create-a-blog-post","docId":"contribute-to-docs/tutorial-basics/create-a-blog-post"},{"type":"link","label":"Markdown Features","href":"/contribute-to-docs/tutorial-basics/markdown-features","docId":"contribute-to-docs/tutorial-basics/markdown-features"},{"type":"link","label":"Congratulations","href":"/contribute-to-docs/tutorial-basics/congratulations","docId":"contribute-to-docs/tutorial-basics/congratulations"}],"href":"/category/tutorial---basics"},{"type":"category","label":"Tutorial - Extras","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Manage Docs Versions","href":"/contribute-to-docs/tutorial-extras/manage-docs-versions","docId":"contribute-to-docs/tutorial-extras/manage-docs-versions"},{"type":"link","label":"Translate your site","href":"/contribute-to-docs/tutorial-extras/translate-your-site","docId":"contribute-to-docs/tutorial-extras/translate-your-site"}],"href":"/category/tutorial---extras"}],"href":"/category/contribute"}]},"docs":{"connect/about":{"id":"connect/about","title":"About Unraid Connect","description":"What is Unraid Connect?","sidebar":"unraidSidebar"},"connect/help":{"id":"connect/help","title":"Unraid Connect Help","description":"How to Install","sidebar":"unraidSidebar"},"connect/remote-access":{"id":"connect/remote-access","title":"Remote Access","description":"The Remote Access feature","sidebar":"unraidSidebar"},"contribute-to-docs/intro":{"id":"contribute-to-docs/intro","title":"Contributing to Unraid Documentation","description":"Contribute to a Docs Page that already Exists","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-basics/congratulations":{"id":"contribute-to-docs/tutorial-basics/congratulations","title":"Congratulations","description":"You have just learned the basics of Docusaurus and made some changes to the initial template.","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-basics/create-a-blog-post":{"id":"contribute-to-docs/tutorial-basics/create-a-blog-post","title":"Create a Blog Post","description":"Docusaurus creates a page for each blog post, but also a blog index page, a tag system, an RSS feed...","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-basics/create-a-document":{"id":"contribute-to-docs/tutorial-basics/create-a-document","title":"Create a Document","description":"Documents are groups of pages connected through:","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-basics/create-a-page":{"id":"contribute-to-docs/tutorial-basics/create-a-page","title":"Create a Page","description":"Add Markdown or React files to src/pages to create a standalone page:","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-basics/markdown-features":{"id":"contribute-to-docs/tutorial-basics/markdown-features","title":"Markdown Features","description":"Docusaurus supports Markdown and a few additional features.","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-extras/manage-docs-versions":{"id":"contribute-to-docs/tutorial-extras/manage-docs-versions","title":"Manage Docs Versions","description":"Docusaurus can manage multiple versions of your docs.","sidebar":"unraidSidebar"},"contribute-to-docs/tutorial-extras/translate-your-site":{"id":"contribute-to-docs/tutorial-extras/translate-your-site","title":"Translate your site","description":"Let\'s translate docs/intro.md to French.","sidebar":"unraidSidebar"},"docs-home":{"id":"docs-home","title":"Home","description":"Unraid Documentation","sidebar":"unraidSidebar"},"legacy/Articles/dual-boot-unraid-and-windows":{"id":"legacy/Articles/dual-boot-unraid-and-windows","title":"Dual Booting Windows & Unraid","description":"This procedure is intended to help someone with moderate Linux","sidebar":"unraidSidebar"},"legacy/Articles/expanding-windows-vm-vdisk-partitions":{"id":"legacy/Articles/expanding-windows-vm-vdisk-partitions","title":"Expanding Windows VM VDisk Partitions","description":"Overview","sidebar":"unraidSidebar"},"legacy/Articles/upgrading-to-unraid-6":{"id":"legacy/Articles/upgrading-to-unraid-6","title":"Upgrading to Unraid 6","description":"Before upgrading, we highly recommend making a complete back up of your","sidebar":"unraidSidebar"},"legacy/FAQ/cache-disk":{"id":"legacy/FAQ/cache-disk","title":"Cache Disk","description":"Important! This page is a basic introduction to the Unraid Cache","sidebar":"unraidSidebar"},"legacy/FAQ/check-disk-filesystems":{"id":"legacy/FAQ/check-disk-filesystems","title":"Checking and fixing file systems","description":"Is this the right page?","sidebar":"unraidSidebar"},"legacy/FAQ/check-harddrive-speed":{"id":"legacy/FAQ/check-harddrive-speed","title":"Check Harddrive Speed","description":"The native Linux command hdparm (Hard Disk Parameters) can be used","sidebar":"unraidSidebar"},"legacy/FAQ/console":{"id":"legacy/FAQ/console","title":"Console","description":"Knowledgeable authors and editors are heartily welcomed! Please help","sidebar":"unraidSidebar"},"legacy/FAQ/Parity":{"id":"legacy/FAQ/Parity","title":"Parity","description":"Parity is used by Unraid to protect against data loss. If a drive in the","sidebar":"unraidSidebar"},"legacy/FAQ/parity-swap-procedure":{"id":"legacy/FAQ/parity-swap-procedure","title":"The Parity Swap Procedure","description":"_First release, tested only on v6.1 & 6.7.2_","sidebar":"unraidSidebar"},"legacy/FAQ/replacing-a-data-drive":{"id":"legacy/FAQ/replacing-a-data-drive","title":"Replacing a Data Drive","description":"This page describes how to replace an Unraid array data drive. Why","sidebar":"unraidSidebar"},"legacy/FAQ/replacing-multiple-data-drives":{"id":"legacy/FAQ/replacing-multiple-data-drives","title":"Replacing Multiple Data Drives with a Single Larger Drive","description":"Problem: You want to consolidate several smaller drives onto a new and","sidebar":"unraidSidebar"},"legacy/FAQ/setting-up-cpu-and-board-temperature-sensing":{"id":"legacy/FAQ/setting-up-cpu-and-board-temperature-sensing","title":"Setting Up CPU and Board Temperature Sensing","description":"This page is designed to help you obtain your CPU and motherboard","sidebar":"unraidSidebar"},"legacy/FAQ/setup-sleep-and-wake-on-lan":{"id":"legacy/FAQ/setup-sleep-and-wake-on-lan","title":"Setup Sleep (S3) and Wake on Lan (WOL)","description":"The following are my notes for setting up my Unraid server to sleep to","sidebar":"unraidSidebar"},"legacy/FAQ/shrink-array":{"id":"legacy/FAQ/shrink-array","title":"Shrink Array","description":"Note: this page has been tested for v6,","sidebar":"unraidSidebar"},"legacy/FAQ/terminal-access":{"id":"legacy/FAQ/terminal-access","title":"Terminal Access","description":"What is \\"Terminal access\\"?","sidebar":"unraidSidebar"},"legacy/FAQ/transferring-files-from-a-network-share-to-unraid":{"id":"legacy/FAQ/transferring-files-from-a-network-share-to-unraid","title":"Transferring Files from a Network Share to Unraid","description":"Open a terminal session with SSH or Telnet","sidebar":"unraidSidebar"},"legacy/FAQ/transferring-files-within-the-unraid-server":{"id":"legacy/FAQ/transferring-files-within-the-unraid-server","title":"Transferring Files Within the Unraid Server","description":"If you are using Windows Explorer to move files between drives, you are","sidebar":"unraidSidebar"},"legacy/FAQ/understanding-smart-reports":{"id":"legacy/FAQ/understanding-smart-reports","title":"Understanding SMART Reports","description":"under\xa0construction,\xa0only\xa0slightly\xa0usable\xa0so\xa0far","sidebar":"unraidSidebar"},"legacy/FAQ/usb-flash-drive-preparation":{"id":"legacy/FAQ/usb-flash-drive-preparation","title":"USB Flash Drive Preparation","description":"USB Flash Drives","sidebar":"unraidSidebar"},"unraid-os/faq/licensing-faq":{"id":"unraid-os/faq/licensing-faq","title":"Licensing","description":"Is Pricing for Unraid OS \\"one time\\"? Are There Additional Fees for OS Updates?","sidebar":"unraidSidebar"},"unraid-os/faq/os-faq":{"id":"unraid-os/faq/os-faq","title":"OS","description":"I Need Help with a Build / System Configuration. Where do I go?","sidebar":"unraidSidebar"},"unraid-os/faq/redeem-license-activation-code":{"id":"unraid-os/faq/redeem-license-activation-code","title":"Redeem License Activation Code","description":"First, buy an activation code via our website. Your unique activation code will be on your purchase receipt.","sidebar":"unraidSidebar"},"unraid-os/faq/unraid-account":{"id":"unraid-os/faq/unraid-account","title":"Unraid Account","description":"What is an Unraid.net Account?","sidebar":"unraidSidebar"},"unraid-os/guides/configuring-time-machine":{"id":"unraid-os/guides/configuring-time-machine","title":"Apple Time Machine","description":"Guide: Setting up a Time Machine Share on your Unraid Server","sidebar":"unraidSidebar"},"unraid-os/guides/wol-setup-for-unraid":{"id":"unraid-os/guides/wol-setup-for-unraid","title":"How To Setup Wake On LAN (WOL) for UNRAID","description":"(assuming onboard NIC and WOL activated in motherboard\'s BIOS)","sidebar":"unraidSidebar"},"unraid-os/manual/additional-settings":{"id":"unraid-os/manual/additional-settings","title":"Additional Settings","description":"While Unraid is configured to work automatically, you may wish to","sidebar":"unraidSidebar"},"unraid-os/manual/applications":{"id":"unraid-os/manual/applications","title":"Community Applications","description":"This section discusses running applications on an Unraid server or","sidebar":"unraidSidebar"},"unraid-os/manual/changing-the-flash-device":{"id":"unraid-os/manual/changing-the-flash-device","title":"Changing the Flash Device","description":"There are two ways to swap out your USB flash device. If you are using a","sidebar":"unraidSidebar"},"unraid-os/manual/docker-management":{"id":"unraid-os/manual/docker-management","title":"Docker Management","description":"Docker is a technology that allows users to provide each application","sidebar":"unraidSidebar"},"unraid-os/manual/getting-started/getting-started":{"id":"unraid-os/manual/getting-started/getting-started","title":"Getting Started","description":"In this guide, we will be covering how to prepare your flash device,","sidebar":"unraidSidebar"},"unraid-os/manual/getting-started/manual-install-method":{"id":"unraid-os/manual/getting-started/manual-install-method","title":"Manual Install Method","description":"If for some reason the USB Flash Creator tool cannot be used, or your USB flash device is not detected,","sidebar":"unraidSidebar"},"unraid-os/manual/multi-language":{"id":"unraid-os/manual/multi-language","title":"Multi-Language Support","description":"Introduction","sidebar":"unraidSidebar"},"unraid-os/manual/security/data-encryption":{"id":"unraid-os/manual/security/data-encryption","title":"Data Encryption","description":"Unraid supports the use of encrypted drives in both the cache and the array. It does this using the Linux LUKS (Linux Unified Key System) encryption modules.","sidebar":"unraidSidebar"},"unraid-os/manual/security/flash-drive":{"id":"unraid-os/manual/security/flash-drive","title":"Flash Drive","description":"The flash drive that is used to boot Unraid is important as it contains all the configuration information for your Unraid server. Because of this, you want to consider the security of the information it contains and how it is accessed.","sidebar":"unraidSidebar"},"unraid-os/manual/security/good-practices":{"id":"unraid-os/manual/security/good-practices","title":"Good Practices","description":"We have compiled a set of recommendations to help you secure your server. While not all may apply to your specific scenario, they provide a solid foundation to preserve the security and privacy of your system.","sidebar":"unraidSidebar"},"unraid-os/manual/security/secure-webgui-ssl":{"id":"unraid-os/manual/security/secure-webgui-ssl","title":"Securing webGUI connections (SSL)","description":"As of Unraid 6.10, you can improve the security of the SSL implementation for both local access and Unraid Connect Remote Access using wildcard SSL Certificates provisioned by Let\'s Encrypt.","sidebar":"unraidSidebar"},"unraid-os/manual/security/security":{"id":"unraid-os/manual/security/security","title":"Security","description":"An Unraid server is likely to contain data that is sensitive or that you would otherwise hate to lose. Since most users will have their home network connected to the internet, precautions should be taken to avoid an Unraid server being compromised by malicious actors trying to access them remotely.","sidebar":"unraidSidebar"},"unraid-os/manual/security/vpn":{"id":"unraid-os/manual/security/vpn","title":"VPN","description":"Unraid servers are not hardened against attack via the network so should never be exposed to the internet without use of a VPN.","sidebar":"unraidSidebar"},"unraid-os/manual/shares/create-a-share":{"id":"unraid-os/manual/shares/create-a-share","title":"Create a new share","description":"When you create a new share, plan ahead.","sidebar":"unraidSidebar"},"unraid-os/manual/shares/delete-a-share":{"id":"unraid-os/manual/shares/delete-a-share","title":"Delete a share","description":"To delete a share on your Unraid server the share must contain no data.","sidebar":"unraidSidebar"},"unraid-os/manual/shares/disk-shares":{"id":"unraid-os/manual/shares/disk-shares","title":"Disk shares","description":"Enable or disable disk shares in Settings > Global Share Settings. Disk shares are disabled by default.","sidebar":"unraidSidebar"},"unraid-os/manual/shares/network-access":{"id":"unraid-os/manual/shares/network-access","title":"Network access","description":"Communication protocols","sidebar":"unraidSidebar"},"unraid-os/manual/shares/shares":{"id":"unraid-os/manual/shares/shares","title":"Shares","description":"Once you have assigned devices to Unraid and started the array, we recommend that you plan and create shares to simplify how you store data across multiple disks in the array.","sidebar":"unraidSidebar"},"unraid-os/manual/shares/user-shares":{"id":"unraid-os/manual/shares/user-shares","title":"User shares","description":"Enable or disable user shares in Settings > Global Share Settings. User shares are enabled by default.","sidebar":"unraidSidebar"},"unraid-os/manual/storage-management":{"id":"unraid-os/manual/storage-management","title":"Storage Management","description":"To assign devices to","sidebar":"unraidSidebar"},"unraid-os/manual/tools":{"id":"unraid-os/manual/tools","title":"Tools","description":"THIS SECTION IS STILL UNDER CONSTRUCTION","sidebar":"unraidSidebar"},"unraid-os/manual/troubleshooting":{"id":"unraid-os/manual/troubleshooting","title":"Troubleshooting","description":"THIS SECTION IS STILL UNDER CONSTRUCTION","sidebar":"unraidSidebar"},"unraid-os/manual/upgrade-instructions":{"id":"unraid-os/manual/upgrade-instructions","title":"Upgrading Unraid","description":"Prerequisites","sidebar":"unraidSidebar"},"unraid-os/manual/users":{"id":"unraid-os/manual/users","title":"Users","description":"THIS SECTION IS STILL UNDER CONSTRUCTION","sidebar":"unraidSidebar"},"unraid-os/manual/vm-management":{"id":"unraid-os/manual/vm-management","title":"Managing VMs","description":"Overview","sidebar":"unraidSidebar"},"unraid-os/manual/vm-support":{"id":"unraid-os/manual/vm-support","title":"VM Support","description":"Unraid 6 currently supports the virtualization of nearly any 64-bit","sidebar":"unraidSidebar"},"unraid-os/manual/what-is-unraid":{"id":"unraid-os/manual/what-is-unraid","title":"What is Unraid?","description":"Unraid\xae is an embedded operating system that is designed to provide you","sidebar":"unraidSidebar"},"unraid-os/manual/zfs/placeholder":{"id":"unraid-os/manual/zfs/placeholder","title":"About","description":"Please add guides on how to use and configure ZFS in this subfolder","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.10.0":{"id":"unraid-os/release-notes/6.10.0","title":"6.10.0","description":"Version 6.10.0 2022-05-07","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.10.1":{"id":"unraid-os/release-notes/6.10.1","title":"6.10.1","description":"Version 6.10.1 2022-05-21","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.10.2":{"id":"unraid-os/release-notes/6.10.2","title":"6.10.2","description":"Version 6.10.2 2022-05-27","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.10.3":{"id":"unraid-os/release-notes/6.10.3","title":"6.10.3","description":"Version 6.10.3 2022-06-14","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.11.0":{"id":"unraid-os/release-notes/6.11.0","title":"6.11.0","description":"Version 6.11.0 2022-09-23","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.11.1":{"id":"unraid-os/release-notes/6.11.1","title":"6.11.1","description":"Version 6.11.1 2022-10-06","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.11.2":{"id":"unraid-os/release-notes/6.11.2","title":"6.11.2","description":"Version 6.11.2 2022-11-04","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.11.3":{"id":"unraid-os/release-notes/6.11.3","title":"6.11.3","description":"Version 6.11.3 2022-11-08","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.11.4":{"id":"unraid-os/release-notes/6.11.4","title":"6.11.4","description":"Version 6.11.4 2022-11-18","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.11.5":{"id":"unraid-os/release-notes/6.11.5","title":"6.11.5","description":"Version 6.11.5 2022-11-20","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.12.0":{"id":"unraid-os/release-notes/6.12.0","title":"Version 6.12.0 2023-06-14","description":"Upgrade notes","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.12.1":{"id":"unraid-os/release-notes/6.12.1","title":"Version 6.12.1 2023-06-20","description":"Changes vs. 6.12.0","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.12.2":{"id":"unraid-os/release-notes/6.12.2","title":"Version 6.12.2 2023-06-29","description":"Changes vs. 6.12.1","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.12.3":{"id":"unraid-os/release-notes/6.12.3","title":"Version 6.12.3 2023-07-14","description":"Changes vs. 6.12.2","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.12.4":{"id":"unraid-os/release-notes/6.12.4","title":"Version 6.12.4 2023-08-31","description":"Upgrade notes","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.9.0":{"id":"unraid-os/release-notes/6.9.0","title":"6.9.0","description":"Version 6.9.0 2021-02-27","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.9.1":{"id":"unraid-os/release-notes/6.9.1","title":"6.9.1","description":"Version 6.9.1 2021-03-08","sidebar":"unraidSidebar"},"unraid-os/release-notes/6.9.2":{"id":"unraid-os/release-notes/6.9.2","title":"6.9.2","description":"Version 6.9.2 2021-04-07","sidebar":"unraidSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/98a2ad9f.5a658061.js b/assets/js/98a2ad9f.5a658061.js deleted file mode 100644 index 5c5b42313..000000000 --- a/assets/js/98a2ad9f.5a658061.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4579],{4137:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var o=n.createContext({}),u=function(e){var t=n.useContext(o),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(o.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,o=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=u(r),m=a,f=c["".concat(o,".").concat(m)]||c[m]||d[m]||i;return r?n.createElement(f,l(l({ref:t},p),{},{components:r})):n.createElement(f,l({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,l=new Array(i);l[0]=m;var s={};for(var o in t)hasOwnProperty.call(t,o)&&(s[o]=t[o]);s.originalType=e,s[c]="string"==typeof e?e:a,l[1]=s;for(var u=2;u{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>u});var n=r(7462),a=(r(7294),r(4137));const i={},l="Version 6.12.1 2023-06-20",s={unversionedId:"unraid-os/release-notes/6.12.1",id:"unraid-os/release-notes/6.12.1",title:"Version 6.12.1 2023-06-20",description:"Changes vs. 6.12.0",source:"@site/docs/unraid-os/release-notes/6.12.1.md",sourceDirName:"unraid-os/release-notes",slug:"/unraid-os/release-notes/6.12.1",permalink:"/unraid-os/release-notes/6.12.1",draft:!1,editUrl:"https://github.com/unraid/docs/tree/main/docs/unraid-os/release-notes/6.12.1.md",tags:[],version:"current",frontMatter:{},sidebar:"unraidSidebar",previous:{title:"Version 6.12.0 2023-06-14",permalink:"/unraid-os/release-notes/6.12.0"},next:{title:"Version 6.12.2 2023-06-29",permalink:"/unraid-os/release-notes/6.12.2"}},o={},u=[{value:"Bug fixes",id:"bug-fixes",level:2},{value:"Linux kernel",id:"linux-kernel",level:2},{value:"Base Distro",id:"base-distro",level:2},{value:"Security updates",id:"security-updates",level:3}],p={toc:u},c="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"version-6121-2023-06-20"},"Version 6.12.1 2023-06-20"),(0,a.kt)("p",null,"Changes vs. ",(0,a.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.0"},"6.12.0")),(0,a.kt)("h2",{id:"bug-fixes"},"Bug fixes"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},'emhttpd: remove "unraid" from reserved names list'),(0,a.kt)("li",{parentName:"ul"},"emhttpd: properly handle \"ERROR\" strings in 'btrfs filesystem show' command output"),(0,a.kt)("li",{parentName:"ul"},"emhttpd: prevent cmdStart if already Started"),(0,a.kt)("li",{parentName:"ul"},"network: Revised service reload functionality: ensures the services are only reloaded once"),(0,a.kt)("li",{parentName:"ul"},"network: rc.library: read IP addresses directly from interfaces instead of file"),(0,a.kt)("li",{parentName:"ul"},"network: NTP: fix listening interfaces"),(0,a.kt)("li",{parentName:"ul"},"network: NTP: exclude WG tunnels and user defined interfaces"),(0,a.kt)("li",{parentName:"ul"},"network: NTP: add interface name in config"),(0,a.kt)("li",{parentName:"ul"},"network: SSH: add interface name in config"),(0,a.kt)("li",{parentName:"ul"},"webgui: fix PHP8 warning in UPS Settings page"),(0,a.kt)("li",{parentName:"ul"},"webgui: Dashboard: show ZFS percentage based on c_max value"),(0,a.kt)("li",{parentName:"ul"},"webgui: Dashboard: suppress coloring of ZFS utilization bar"),(0,a.kt)("li",{parentName:"ul"},"webgui: Dashboard: other misc fixes")),(0,a.kt)("h2",{id:"linux-kernel"},"Linux kernel"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"version 6.1.34")),(0,a.kt)("h2",{id:"base-distro"},"Base Distro"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"ttyd: version 1.7.3 (fixes issue of invisible underbar characters with certain FireFox versions)")),(0,a.kt)("h3",{id:"security-updates"},"Security updates"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"ca-certificates: version 20230506"),(0,a.kt)("li",{parentName:"ul"},"curl: version 8.1.2 (CVE-2023-28322 CVE-2023-28321 CVE-2023-28320 CVE-2023-28319)"),(0,a.kt)("li",{parentName:"ul"},"git: version 2.35.8 (CVE-2023-25652 CVE-2023-25815 CVE-2023-29007)"),(0,a.kt)("li",{parentName:"ul"},"ntp: version 4.2.8p17 (CVE-2023-26551 CVE-2023-26552 CVE-2023-26553 CVE-2023-26554 CVE-2023-26555)"),(0,a.kt)("li",{parentName:"ul"},"openssl: version 1.1.1u (CVE-2023-2650)"),(0,a.kt)("li",{parentName:"ul"},"openssh: version 9.3p1"),(0,a.kt)("li",{parentName:"ul"},"php: version 8.2.7"),(0,a.kt)("li",{parentName:"ul"},"libX11: version 1.8.6 (CVE-2023-3138)"),(0,a.kt)("li",{parentName:"ul"},"libssh: version 0.10.5 (CVE-2023-1667 CVE-2023-2283)"),(0,a.kt)("li",{parentName:"ul"},"zstd: version 1.5.5")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/98a2ad9f.6addc98f.js b/assets/js/98a2ad9f.6addc98f.js new file mode 100644 index 000000000..0a33b7a2e --- /dev/null +++ b/assets/js/98a2ad9f.6addc98f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4579],{4137:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var o=n.createContext({}),u=function(e){var t=n.useContext(o),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(o.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,o=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=u(r),m=a,f=c["".concat(o,".").concat(m)]||c[m]||d[m]||i;return r?n.createElement(f,s(s({ref:t},p),{},{components:r})):n.createElement(f,s({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,s=new Array(i);s[0]=m;var l={};for(var o in t)hasOwnProperty.call(t,o)&&(l[o]=t[o]);l.originalType=e,l[c]="string"==typeof e?e:a,s[1]=l;for(var u=2;u{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>s,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var n=r(7462),a=(r(7294),r(4137));const i={},s="Version 6.12.1 2023-06-20",l={unversionedId:"unraid-os/release-notes/6.12.1",id:"unraid-os/release-notes/6.12.1",title:"Version 6.12.1 2023-06-20",description:"Changes vs. 6.12.0",source:"@site/docs/unraid-os/release-notes/6.12.1.md",sourceDirName:"unraid-os/release-notes",slug:"/unraid-os/release-notes/6.12.1",permalink:"/unraid-os/release-notes/6.12.1",draft:!1,editUrl:"https://github.com/unraid/docs/tree/main/docs/unraid-os/release-notes/6.12.1.md",tags:[],version:"current",frontMatter:{},sidebar:"unraidSidebar",previous:{title:"Version 6.12.0 2023-06-14",permalink:"/unraid-os/release-notes/6.12.0"},next:{title:"Version 6.12.2 2023-06-29",permalink:"/unraid-os/release-notes/6.12.2"}},o={},u=[{value:"Upgrade notes",id:"upgrade-notes",level:2},{value:"Known issues",id:"known-issues",level:3},{value:"Rolling back",id:"rolling-back",level:3},{value:"Bug fixes",id:"bug-fixes",level:2},{value:"Linux kernel",id:"linux-kernel",level:2},{value:"Base Distro",id:"base-distro",level:2},{value:"Security updates",id:"security-updates",level:3}],p={toc:u},c="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(c,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"version-6121-2023-06-20"},"Version 6.12.1 2023-06-20"),(0,a.kt)("p",null,"Changes vs. ",(0,a.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.0"},"6.12.0")),(0,a.kt)("h2",{id:"upgrade-notes"},"Upgrade notes"),(0,a.kt)("h3",{id:"known-issues"},"Known issues"),(0,a.kt)("p",null,"Please see the ",(0,a.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.0#known-issues"},"6.12.0 release notes")," for general known issues."),(0,a.kt)("h3",{id:"rolling-back"},"Rolling back"),(0,a.kt)("p",null,"If rolling back earlier than 6.12.0, also see the ",(0,a.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.0#rolling-back"},"6.12.0 release notes"),"."),(0,a.kt)("h2",{id:"bug-fixes"},"Bug fixes"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},'emhttpd: remove "unraid" from reserved names list'),(0,a.kt)("li",{parentName:"ul"},"emhttpd: properly handle \"ERROR\" strings in 'btrfs filesystem show' command output"),(0,a.kt)("li",{parentName:"ul"},"emhttpd: prevent cmdStart if already Started"),(0,a.kt)("li",{parentName:"ul"},"network: Revised service reload functionality: ensures the services are only reloaded once"),(0,a.kt)("li",{parentName:"ul"},"network: rc.library: read IP addresses directly from interfaces instead of file"),(0,a.kt)("li",{parentName:"ul"},"network: NTP: fix listening interfaces"),(0,a.kt)("li",{parentName:"ul"},"network: NTP: exclude WG tunnels and user defined interfaces"),(0,a.kt)("li",{parentName:"ul"},"network: NTP: add interface name in config"),(0,a.kt)("li",{parentName:"ul"},"network: SSH: add interface name in config"),(0,a.kt)("li",{parentName:"ul"},"webgui: fix PHP8 warning in UPS Settings page"),(0,a.kt)("li",{parentName:"ul"},"webgui: Dashboard: show ZFS percentage based on c_max value"),(0,a.kt)("li",{parentName:"ul"},"webgui: Dashboard: suppress coloring of ZFS utilization bar"),(0,a.kt)("li",{parentName:"ul"},"webgui: Dashboard: other misc fixes")),(0,a.kt)("h2",{id:"linux-kernel"},"Linux kernel"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"version 6.1.34")),(0,a.kt)("h2",{id:"base-distro"},"Base Distro"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"ttyd: version 1.7.3 (fixes issue of invisible underbar characters with certain FireFox versions)")),(0,a.kt)("h3",{id:"security-updates"},"Security updates"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"ca-certificates: version 20230506"),(0,a.kt)("li",{parentName:"ul"},"curl: version 8.1.2 (CVE-2023-28322 CVE-2023-28321 CVE-2023-28320 CVE-2023-28319)"),(0,a.kt)("li",{parentName:"ul"},"git: version 2.35.8 (CVE-2023-25652 CVE-2023-25815 CVE-2023-29007)"),(0,a.kt)("li",{parentName:"ul"},"ntp: version 4.2.8p17 (CVE-2023-26551 CVE-2023-26552 CVE-2023-26553 CVE-2023-26554 CVE-2023-26555)"),(0,a.kt)("li",{parentName:"ul"},"openssl: version 1.1.1u (CVE-2023-2650)"),(0,a.kt)("li",{parentName:"ul"},"openssh: version 9.3p1"),(0,a.kt)("li",{parentName:"ul"},"php: version 8.2.7"),(0,a.kt)("li",{parentName:"ul"},"libX11: version 1.8.6 (CVE-2023-3138)"),(0,a.kt)("li",{parentName:"ul"},"libssh: version 0.10.5 (CVE-2023-1667 CVE-2023-2283)"),(0,a.kt)("li",{parentName:"ul"},"zstd: version 1.5.5")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e1256ee6.0c6b3e91.js b/assets/js/e1256ee6.0c6b3e91.js deleted file mode 100644 index 2ebc812ef..000000000 --- a/assets/js/e1256ee6.0c6b3e91.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8925],{4137:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),p=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},u=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),m=p(a),c=r,k=m["".concat(s,".").concat(c)]||m[c]||d[c]||i;return a?n.createElement(k,l(l({ref:t},u),{},{components:a})):n.createElement(k,l({ref:t},u))}));function k(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,l=new Array(i);l[0]=c;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[m]="string"==typeof e?e:r,l[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var n=a(7462),r=(a(7294),a(4137));const i={},l="Version 6.12.0 2023-06-14",o={unversionedId:"unraid-os/release-notes/6.12.0",id:"unraid-os/release-notes/6.12.0",title:"Version 6.12.0 2023-06-14",description:"Upgrade notes",source:"@site/docs/unraid-os/release-notes/6.12.0.md",sourceDirName:"unraid-os/release-notes",slug:"/unraid-os/release-notes/6.12.0",permalink:"/unraid-os/release-notes/6.12.0",draft:!1,editUrl:"https://github.com/unraid/docs/tree/main/docs/unraid-os/release-notes/6.12.0.md",tags:[],version:"current",frontMatter:{},sidebar:"unraidSidebar",previous:{title:"Release Notes",permalink:"/category/release-notes"},next:{title:"Version 6.12.1 2023-06-20",permalink:"/unraid-os/release-notes/6.12.1"}},s={},p=[{value:"Upgrade notes",id:"upgrade-notes",level:2},{value:"Obsolete/Broken plugins",id:"obsoletebroken-plugins",level:3},{value:"Known issues",id:"known-issues",level:3},{value:"Crashes related to i915 driver",id:"crashes-related-to-i915-driver",level:4},{value:"Call traces related to macvlan",id:"call-traces-related-to-macvlan",level:4},{value:"ZFS pools",id:"zfs-pools",level:2},{value:"Share storage conceptual change",id:"share-storage-conceptual-change",level:2},{value:"Mover action",id:"mover-action",level:3},{value:"Exclusive shares",id:"exclusive-shares",level:3},{value:"Clean Up button",id:"clean-up-button",level:3},{value:"Other Improvements",id:"other-improvements",level:2},{value:"btrfs",id:"btrfs",level:3},{value:"xfs",id:"xfs",level:3},{value:"Docker",id:"docker",level:3},{value:"Other Docker changes",id:"other-docker-changes",level:4},{value:"VM Manager",id:"vm-manager",level:3},{value:"Other VM changes",id:"other-vm-changes",level:4},{value:"Dashboard",id:"dashboard",level:3},{value:"Network improvements",id:"network-improvements",level:3},{value:"Other Network changes",id:"other-network-changes",level:4},{value:"Other Improvements/Bug fixes",id:"other-improvementsbug-fixes",level:3},{value:"Release bz file differences",id:"release-bz-file-differences",level:3},{value:"Manual update",id:"manual-update",level:4},{value:"Linux kernel",id:"linux-kernel",level:2},{value:"Base Distro updates",id:"base-distro-updates",level:2}],u={toc:p},m="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"version-6120-2023-06-14"},"Version 6.12.0 2023-06-14"),(0,r.kt)("h2",{id:"upgrade-notes"},"Upgrade notes"),(0,r.kt)("p",null,"Upon boot, if all PCI devices specified in 'config/vfio-pci.cfg' do not properly bind, VM Autostart is prevented. You may still\nstart individual VMs. This is to prevent Unraid host crash if hardware PCI IDs changed because of a kernel update or physical hardware\nchange. To restore VM autostart, examine '/var/log/vfio-pci-errors' and remove offending PCI IDs from 'config/vfio-pci.cfg' file and\nreboot."),(0,r.kt)("p",null,"If you revert back from 6.12 to 6.11.5 or earlier, you have to force update all your Docker containers and start them\nmanually after downgrading. This is necessary because of the underlying change to cgroup v2 starting with 6.12.0-rc1."),(0,r.kt)("p",null,"Linux ",(0,r.kt)("a",{parentName:"p",href:"https://lwn.net/Articles/856931/"},"Multi-Gen LRU")," is a relatively new feature now included but not\nenabled by default. You can enable by adding this line to your 'config/go' file:"),(0,r.kt)("p",null," ",(0,r.kt)("inlineCode",{parentName:"p"},"echo y > /sys/kernel/mm/lru_gen/enabled")),(0,r.kt)("p",null,"If you revert back from 6.12 to 6.11.5 or earlier, you may need to remove that line."),(0,r.kt)("p",null,"If you created any zpools using 6.12.0-beta5, please Erase those pools and recreate."),(0,r.kt)("h3",{id:"obsoletebroken-plugins"},"Obsolete/Broken plugins"),(0,r.kt)("p",null,"There are a few plugins which are known to be incompatible with Unraid 6.12, and upon boot will not be installed. You will get a notification for each plugin\nthat is affected and can review the list by going to ",(0,r.kt)("strong",{parentName:"p"},"Plugins/Plugin File Install Errors"),"."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"disklocation-master version 2022.06.18 (",(0,r.kt)("inlineCode",{parentName:"li"},"Disk Location")," by olehj, breaks the dashboard)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Update this plugin before upgrading the OS"))),(0,r.kt)("li",{parentName:"ul"},"plexstreams version 2022.08.31 (",(0,r.kt)("inlineCode",{parentName:"li"},"Plex Streams")," by dorgan, breaks the dashboard)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Update this plugin before upgrading the OS"))),(0,r.kt)("li",{parentName:"ul"},"corsairpsu version 2021.10.05 (",(0,r.kt)("inlineCode",{parentName:"li"},"Corsair PSU Statistics")," by Fma965, breaks the dashboard)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Update this plugin before upgrading the OS"))),(0,r.kt)("li",{parentName:"ul"},"gpustat version 2022.11.30a (",(0,r.kt)("inlineCode",{parentName:"li"},"GPU Statistics")," by b3rs3rk, breaks the dashboard)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Switch to ",(0,r.kt)("inlineCode",{parentName:"li"},"GPU Statistics")," by SimonF"))),(0,r.kt)("li",{parentName:"ul"},"ipmi version 2021.01.08 (",(0,r.kt)("inlineCode",{parentName:"li"},"IPMI Tools")," by dmacias72, breaks the dashboard)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Switch to ",(0,r.kt)("inlineCode",{parentName:"li"},"IPMI Tools")," by SimonF"))),(0,r.kt)("li",{parentName:"ul"},"nut version 2022.03.20 (",(0,r.kt)("inlineCode",{parentName:"li"},"NUT - Network UPS Tools")," by dmacias72, breaks the dashboard)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Switch to ",(0,r.kt)("inlineCode",{parentName:"li"},"NUT - Network UPS Tools")," by SimonF"))),(0,r.kt)("li",{parentName:"ul"},"NerdPack version 2021.08.11 (",(0,r.kt)("inlineCode",{parentName:"li"},"Nerd Tools")," by dmacias72)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Switch to ",(0,r.kt)("inlineCode",{parentName:"li"},"NerdTools")," by UnRAIDES"))),(0,r.kt)("li",{parentName:"ul"},"upnp-monitor version 2020.01.04c (",(0,r.kt)("inlineCode",{parentName:"li"},"UPnP Monitor")," by ljm42, not PHP 8 compatible)"),(0,r.kt)("li",{parentName:"ul"},"ZFS-companion version 2021.08.24 (",(0,r.kt)("inlineCode",{parentName:"li"},"ZFS-Companion")," by campusantu, breaks the dashboard)")),(0,r.kt)("p",null,"Some of the affected plugins have been taken over by different developers, we recommend that you go to the ",(0,r.kt)("strong",{parentName:"p"},"Apps")," page and search for replacements. Please ask\nplugin-specific questions in the support thread for that plugin."),(0,r.kt)("h3",{id:"known-issues"},"Known issues"),(0,r.kt)("h4",{id:"crashes-related-to-i915-driver"},"Crashes related to i915 driver"),(0,r.kt)("p",null,"We are aware that some 11th gen Intel Rocket Lake systems are experiencing crashes related to the i915 iGPU. If your Rocket Lake system crashes under\nUnraid 6.12.0, open a web terminal and type this, then reboot:"),(0,r.kt)("p",null," ",(0,r.kt)("inlineCode",{parentName:"p"},'echo "options i915 enable_dc=0" >> /boot/config/modprobe.d/i915.conf')),(0,r.kt)("p",null,"Setting this option may result in higher power use but it may resolve this issue for these GPUs."),(0,r.kt)("h4",{id:"call-traces-related-to-macvlan"},"Call traces related to macvlan"),(0,r.kt)("p",null,'If "Docker custom network type" is set to "macvlan" you may get call traces and crashes on 6.12 even if you did not on 6.11. If so, we recommend\nchanging to "ipvlan", or if you have two network cards you can avoid the issue completely: refer\nto ',(0,r.kt)("a",{parentName:"p",href:"https://forums.unraid.net/topic/137048-guide-how-to-solve-macvlan-and-ipvlan-issues-with-containers-on-a-custom-network/"},"this Community forum post"),"."),(0,r.kt)("h2",{id:"zfs-pools"},"ZFS pools"),(0,r.kt)("p",null,"New in this release is the ability to create a ZFS file system in a user-defined pool. You may also format any data\ndevice in the unRAID array with a single-device ZFS file system. For a good overview of ZFS,\nsee ",(0,r.kt)("a",{parentName:"p",href:"https://arstechnica.com/information-technology/2020/05/zfs-101-understanding-zfs-storage-and-performance/"},"this article"),"."),(0,r.kt)("p",null,"We are splitting full ZFS implementation across two Unraid OS releases. Initial support in this release includes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Support raid0, mirror, raidz1, raidz2 and raidz3 root profiles. Up to 4-way mirror in a mirror vdev. Multiple vdev groups."),(0,r.kt)("li",{parentName:"ul"},"Support removing single device: if device is still present in server, 'wipefs' is used to clear the partition table."),(0,r.kt)("li",{parentName:"ul"},"Support replacing single missing device with a new device of same or larger size."),(0,r.kt)("li",{parentName:"ul"},"Support scheduled trimming of ZFS pools."),(0,r.kt)("li",{parentName:"ul"},"Support pool rename."),(0,r.kt)("li",{parentName:"ul"},"Pool names must begin with a lowercase letter and only contain lowercase letters, digits, the underscore,\nand dash. Pool names must not end with a digit."),(0,r.kt)("li",{parentName:"ul"},"Non-root vdev cannot be configured in this release, however, they can be imported. Note: imported hybrid pools may not be\nexpanded in this release."),(0,r.kt)("li",{parentName:"ul"},"Pools created on other systems may or may not import depending on how the pool was created. A future update will permit\nimporting pools from any system.")),(0,r.kt)("p",null,"A ZFS pool has three variables:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"profile - the root data organization: raid0, mirror (up to 4-way), raidz1, raidz2, raidz3"),(0,r.kt)("li",{parentName:"ul"},"width - the number of devices per root vdev"),(0,r.kt)("li",{parentName:"ul"},"groups - the number of root vdevs in the pool")),(0,r.kt)("p",null,"At time of ZFS pool creation, the webGUI will present all topology options based on the number of devices assigned to the pool."),(0,r.kt)("p",null,"Special treatment for root single-vdev mirrors:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"A single-device ZFS pool can be converted to multiple-device mirror by adding up to 3 additional devices in one operation."),(0,r.kt)("li",{parentName:"ul"},"A 2-device mirror can be increased to 3-device by adding a single device; similarly, a 3-device mirror can be increased to\n4-device mirror by adding a single device.")),(0,r.kt)("p",null,"To add an additional root vdev, you must assign 'width' number of new devices to the pool at the same time. The new vdev will be\ncreated with the same 'profile' as the existing vdevs. Additional flexibility in adding/expanding vdevs will be provided in a future update."),(0,r.kt)("p",null,"Pools created with the ",(0,r.kt)("strong",{parentName:"p"},"steini84")," plugin can be imported as follows: First create a new pool with the number\nof slots corresponding to the number of devices in the pool to be imported. Next assign all the devices to\nthe new pool. Upon array Start the pool should be recognized, though certain zpool topologies may not be\nrecognized (please report). Please note that only pools using partition #1 can be imported in this release, e.g. this ",(0,r.kt)("inlineCode",{parentName:"p"},"lsblk")," output:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"# lsblk\nNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS\nsdb 8:16 0 7.3T 0 disk\n\u251c\u2500sdb1 8:17 0 2G 0 part\n\u2514\u2500sdb2 8:18 0 7.3T 0 part\n")),(0,r.kt)("p",null,"indicates that the second (",(0,r.kt)("inlineCode",{parentName:"p"},"sdb2"),") partition of the disk is being used for data, and ",(0,r.kt)("strong",{parentName:"p"},"cannot")," be imported."),(0,r.kt)("p",null,"Mixed topologies are not supported. For example, a pool with both a mirror root vdev and a raidz root vdev is not\nrecognized."),(0,r.kt)("p",null,"Autotrim can be configured as ",(0,r.kt)("strong",{parentName:"p"},"on")," or ",(0,r.kt)("strong",{parentName:"p"},"off")," (except for single-device ZFS volumes in the unRAID array)."),(0,r.kt)("p",null,"Compression can be configured as ",(0,r.kt)("strong",{parentName:"p"},"on")," or ",(0,r.kt)("strong",{parentName:"p"},"off"),", where ",(0,r.kt)("strong",{parentName:"p"},"on")," selects ",(0,r.kt)("strong",{parentName:"p"},"lz4"),". Future update will permit specifying other algorithms/levels."),(0,r.kt)("p",null,"When creating a new ZFS pool you may choose ",(0,r.kt)("strong",{parentName:"p"},"zfs - encrypted"),", which, like other encrypted volumes, applies device-level encryption\nvia LUKS. ZFS native encryption is not supported at this time."),(0,r.kt)("p",null,"During system boot, the file /etc/modprobe.d/zfs.conf is auto-generated to limit the ZFS ARC to 1/8 of installed memory. This can\nbe overridden if necessary by creating a custom 'config/modprobe.d/zfs.conf' file. Future update will include ability to configure\nthe ARC via webGUI, including auto-adjust according to memory pressure, e.g., VM start/stop."),(0,r.kt)("p",null,"Top-level user shares in a ZFS pool are created as datasets instead of ordinary directories."),(0,r.kt)("h2",{id:"share-storage-conceptual-change"},"Share storage conceptual change"),(0,r.kt)("p",null,'New in this release is a conceptual change in the way storage is assigned to shares. The old concept of main storage being the unRAID array\nwith an optional "Cache" is confusing to many new users, especially since ',(0,r.kt)("em",{parentName:"p"},"cache")," has a specific meaning in ZFS."),(0,r.kt)("p",null,"Also outlined below, we introduced the concept of an ",(0,r.kt)("em",{parentName:"p"},"exclusive share"),". This is simply a share where all the data exists in a single named\npool. In this case, the FUSE-based User Share file system returns a ",(0,r.kt)("strong",{parentName:"p"},"symlink")," to the actual share directory in the pool. All operations within\nthe share, including data transfer, therefore bypass FUSE, resulting in greater performance. This feature is primarily aimed at maximizing\nI/O for large fast ZFS pools accessed via a fast network"),(0,r.kt)("p",null,"This is a front-end change only; existing shares will be viewed with this new structure automatically upon upgrading,\nand will automatically revert to the previous style if you revert to an earlier version."),(0,r.kt)("p",null,"Configuring the storage options for a share is specified using two inputs:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Primary storage"),(0,r.kt)("li",{parentName:"ul"},"Secondary storage")),(0,r.kt)("p",null,"Primary storage is where ",(0,r.kt)("strong",{parentName:"p"},"new")," files/folders are created. If Primary storage is below the Minimum Free Space setting then new files\nand folders will be created in Secondary storage, if configured."),(0,r.kt)("p",null,'Each input presents a drop-down which lists "array", "none", and each named pool as a selection according to some configuration rules:'),(0,r.kt)("p",null,"For the Primary storage drop-down:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'the "none" option is omitted, ie, Primary storage must be selected'),(0,r.kt)("li",{parentName:"ul"},"any named pool can be selected"),(0,r.kt)("li",{parentName:"ul"},'"Array" can be selected (meaning the unRAID array)')),(0,r.kt)("p",null,"For the Secondary storage drop-down:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'the "none" option is included, ie, Secondary storage is optional'),(0,r.kt)("li",{parentName:"ul"},'if Primary storage is a pool name, then the only options are "none" and "Array". In the future other pools will be listed here as well.'),(0,r.kt)("li",{parentName:"ul"},'if Primary storage is "Array", then only "none" appears as an option')),(0,r.kt)("p",null,'When "Array" is selected for either Primary or Secondary storage, a set of additional settings slide in:'),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Allocation method"),(0,r.kt)("li",{parentName:"ul"},"Included disk(s)"),(0,r.kt)("li",{parentName:"ul"},"Excluded disk(s)"),(0,r.kt)("li",{parentName:"ul"},"Split level")),(0,r.kt)("p",null,"When a ",(0,r.kt)("em",{parentName:"p"},"btrfs")," named pool is selected for either Primary or Secondary storage, an additional setting slides in:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Enable Copy-on-write")),(0,r.kt)("p",null,"When a ",(0,r.kt)("em",{parentName:"p"},"ZFS")," named pool is selected for either Primary or Secondary storage, there are no additional settings at this time\nbut there could be some in the future. For example, since a share is created as a ZFS dataset, it could have a different\ncompression setting than the parent pool if we need to implement this."),(0,r.kt)("h3",{id:"mover-action"},"Mover action"),(0,r.kt)("p",null,'When there is Secondary storage configured for a share the "Mover action" setting becomes enabled, letting the user\nselect the transfer direction of the mover:'),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Primary to Secondary (default)"),(0,r.kt)("li",{parentName:"ul"},"Secondary to Primary")),(0,r.kt)("h3",{id:"exclusive-shares"},"Exclusive shares"),(0,r.kt)("p",null,'We added a new setting: "Settings/Global Share Settings/Permit exclusive shares" ',"[Yes/No]",' default: No. If set to Yes\nand if Primary storage for a share is a pool and Secondary storage is set to "none", then a symlink is created\nin /mnt/user/',(0,r.kt)("em",{parentName:"p"},"share")," pointing directly to the pool share directory. (An additional check is made to ensure the share also does\nnot exist on any other volumes.)"),(0,r.kt)("p",null,"There is a new status flag, 'Exclusive access' which is set to 'Yes' when a symlink is in place; and, 'No' otherwise.\nExclusive shares are also indicated on the Shares page."),(0,r.kt)("p",null,"The advantage of setting up symlinks is that I/O bypasses FUSE-based user share file system (shfs) which can significantly\nincrease performance."),(0,r.kt)("p",null,"There are some restrictions:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Both the share Min Free Space and pool Min Free Space settings are ignored when creating new files on an exclusive share."),(0,r.kt)("li",{parentName:"ul"},"If a share is NFS-exported it cannot be exclusive, i.e., the syslink is not created. This is because symlinks are resolved in\nthe NFS client, not the server. We hope to lift this restriction in a future update.")),(0,r.kt)("h3",{id:"clean-up-button"},"Clean Up button"),(0,r.kt)("p",null,"Appearing on the Shares page, a button called CLEAN UP, when enabled indicates there are config/share/",(0,r.kt)("em",{parentName:"p"},"share"),".cfg files for\nshares that do not exist. Clicking this button will remove those files."),(0,r.kt)("h2",{id:"other-improvements"},"Other Improvements"),(0,r.kt)("h3",{id:"btrfs"},"btrfs"),(0,r.kt)("p",null,"Autotrim can be configured as ",(0,r.kt)("strong",{parentName:"p"},"on")," or ",(0,r.kt)("strong",{parentName:"p"},"off")," when used in a pool."),(0,r.kt)("p",null,"Compression can be configured as ",(0,r.kt)("strong",{parentName:"p"},"on")," or ",(0,r.kt)("strong",{parentName:"p"},"off"),". ",(0,r.kt)("strong",{parentName:"p"},"on")," selects ",(0,r.kt)("strong",{parentName:"p"},"zstd"),". Future update to permit specifying other algorithms/levels."),(0,r.kt)("h3",{id:"xfs"},"xfs"),(0,r.kt)("p",null,"Autotrim can be configured as ",(0,r.kt)("strong",{parentName:"p"},"on")," or ",(0,r.kt)("strong",{parentName:"p"},"off")," when used as a single-slot pool."),(0,r.kt)("h3",{id:"docker"},"Docker"),(0,r.kt)("p",null,"It is possible to configure the ",(0,r.kt)("strong",{parentName:"p"},"Docker data-root")," to be placed in a directory on a ZFS storage pool. In this\ncase, Docker will use the 'zfs' storage driver. This driver creates a separate dataset for each image layer. Because\nof this, here is our recommendation for setting up Docker using ",(0,r.kt)("strong",{parentName:"p"},"directory"),":"),(0,r.kt)("p",null,"First, create a ",(0,r.kt)("strong",{parentName:"p"},"docker")," user share configured as follows:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Share name: ",(0,r.kt)("strong",{parentName:"li"},"docker")),(0,r.kt)("li",{parentName:"ul"},"Primary storage: ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("em",{parentName:"strong"},"name of your ZFS pool"))),(0,r.kt)("li",{parentName:"ul"},"Secondary storage: ",(0,r.kt)("strong",{parentName:"li"},"none"))),(0,r.kt)("p",null,"Next, on ",(0,r.kt)("strong",{parentName:"p"},"Docker settings")," page:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Enable docker: ",(0,r.kt)("strong",{parentName:"li"},"Yes")),(0,r.kt)("li",{parentName:"ul"},"Docker data-root: ",(0,r.kt)("strong",{parentName:"li"},"directory")),(0,r.kt)("li",{parentName:"ul"},"Docker directory: ",(0,r.kt)("strong",{parentName:"li"},"/mnt/user/docker"))),(0,r.kt)("p",null,"If you ever need to delete the docker persistent state, then bring up\nthe Docker settings page and set ",(0,r.kt)("strong",{parentName:"p"},"Enable docker")," to ",(0,r.kt)("strong",{parentName:"p"},"No")," and click ",(0,r.kt)("strong",{parentName:"p"},"Apply"),". After docker has shut down click\nthe ",(0,r.kt)("strong",{parentName:"p"},"Delete directory")," checkbox and then click ",(0,r.kt)("strong",{parentName:"p"},"Delete"),". This\nwill result in deleting not only the various files and directories, but also all layers stored as datasets."),(0,r.kt)("p",null,"Before enabling Docker again, be sure to first re-create the ",(0,r.kt)("strong",{parentName:"p"},"docker")," share as described above."),(0,r.kt)("h4",{id:"other-docker-changes"},"Other Docker changes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"CreateDocker: changed label ",(0,r.kt)("strong",{parentName:"li"},"Docker Hub URL")," to ",(0,r.kt)("strong",{parentName:"li"},"Registry URL")," because of GHCR and other new container\nregistries becoming more and more popular."),(0,r.kt)("li",{parentName:"ul"},"Honor user setting of stop time-out."),(0,r.kt)("li",{parentName:"ul"},"Accept images in OCI format."),(0,r.kt)("li",{parentName:"ul"},"Add option to disable readmore-js on container table."),(0,r.kt)("li",{parentName:"ul"},"Fix: Docker Containers console will not use bash if selected."),(0,r.kt)("li",{parentName:"ul"},"Fix issue detecting proper shutdown of docker."),(0,r.kt)("li",{parentName:"ul"},"rc.docker: give dockerd 30 sec instead of 15 to start up.")),(0,r.kt)("h3",{id:"vm-manager"},"VM Manager"),(0,r.kt)("p",null,"If you enable copy/paste for virtual consoles you need to install additional software on the client in addition to the QEMU agent\nif that has been installed. ",(0,r.kt)("a",{parentName:"p",href:"https://www.spice-space.org/download.html"},"Here is the location")," for spice-vdagent for both Windows and Linux.\nNote copy/paste function will not work with web spice viewer you need to use virt-viewer."),(0,r.kt)("h4",{id:"other-vm-changes"},"Other VM changes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Add Serial option to vdisk."),(0,r.kt)("li",{parentName:"ul"},"Spice Bug fix for users with non standard GUI ports defined."),(0,r.kt)("li",{parentName:"ul"},"OVMF for QEMU: version stable202302"),(0,r.kt)("li",{parentName:"ul"},"Fix for bus text."),(0,r.kt)("li",{parentName:"ul"},"Enable copy paste option for virtual consoles."),(0,r.kt)("li",{parentName:"ul"},"Update Memory Backup processing for Virtiofs."),(0,r.kt)("li",{parentName:"ul"},"Fix lockup when no VMs are present."),(0,r.kt)("li",{parentName:"ul"},"Add support for rtl8139 network model."),(0,r.kt)("li",{parentName:"ul"},"fix translation omission."),(0,r.kt)("li",{parentName:"ul"},"added lock/unlock for sortable items."),(0,r.kt)("li",{parentName:"ul"},"Fix for Spice Mouse if Copy paste enabled."),(0,r.kt)("li",{parentName:"ul"},"Let page load even when PCI devices appear missing or are misassigned."),(0,r.kt)("li",{parentName:"ul"},"Make remote viewer and web console options selectable."),(0,r.kt)("li",{parentName:"ul"},"Option to download .vv file and start remote viewer is browser set to open file .vv when downloaded."),(0,r.kt)("li",{parentName:"ul"},"Add remote viewer console support."),(0,r.kt)("li",{parentName:"ul"},"Remove-lock-posix='on'-flock='on'/-"),(0,r.kt)("li",{parentName:"ul"},"Fix VM marked as Autostart not starting following manual array Start."),(0,r.kt)("li",{parentName:"ul"},"Fix for Max memory > 1TB."),(0,r.kt)("li",{parentName:"ul"},"Fix issues with VM page loads if users have removed vcpu pinning."),(0,r.kt)("li",{parentName:"ul"},"ovmf-stable: version 202305 (build 3)."),(0,r.kt)("li",{parentName:"ul"},"fixed notification subject.")),(0,r.kt)("h3",{id:"dashboard"},"Dashboard"),(0,r.kt)("p",null,"The webGUI Dashboard has been redesigned and it is now possible to move elements (tiles) up and down and between columns. This allows\nthe user to organize the tiles in any way they desire. There is a small ",(0,r.kt)("strong",{parentName:"p"},"lock")," icon on the menu bar which must be clicked to enable\nthis function:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Green is normal state (page is locked)"),(0,r.kt)("li",{parentName:"ul"},"Red is attention state (page is unlocked)")),(0,r.kt)("p",null,"Note: The ",(0,r.kt)("strong",{parentName:"p"},"lock")," icon also appears on the Docker and VM pages and must be clicked to rearrange the startup order."),(0,r.kt)("h3",{id:"network-improvements"},"Network improvements"),(0,r.kt)("p",null,"We added a new section: Settings/Network Settings/Interface Extra"),(0,r.kt)("p",null,"This new section allows the user to define which interfaces are used by the Unraid services. By default all regular interfaces with an\nIP address are included in the list of listening interfaces."),(0,r.kt)("p",null,"The tunnels of the built-in WireGuard function of Unraid are automatically added or removed from the list when the Wireguard tunnels are\nactivated or deactivated. The user may exclude these tunnels from the list of listening interfaces."),(0,r.kt)("p",null,"To use the Tailscale or Zerotier interface, it is required to add the interface name or IP address of the communication to the list of\nincluded listening interfaces. ",(0,r.kt)("strong",{parentName:"p"},"Important:")," It is imperative that Tailscale or Zerotier container is running before the interface is\nadded to the list. For more information,\nrefer to ",(0,r.kt)("a",{parentName:"p",href:"https://forums.unraid.net/bug-reports/prereleases/unraid-os-version-6120-rc7-available-r2427/?tab=comments#comment-24235"},"this Community forum post"),"."),(0,r.kt)("h4",{id:"other-network-changes"},"Other Network changes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Support custom interfaces (e.g. Tailscale VPN tunnel or zerotier L2 tunnel)"),(0,r.kt)("li",{parentName:"ul"},"create_network_ini - restart smb when network changes are done"),(0,r.kt)("li",{parentName:"ul"},"rc.inet1 - add iptables processing to bridge interfaces to make them operate similarly as macvlan interfaces"),(0,r.kt)("li",{parentName:"ul"},"rc.avahidaemon - let service listen on regular interfaces only which have an IP address, this includes the primary interface + set ipv4 / ipv6 support"),(0,r.kt)("li",{parentName:"ul"},"rc.docker - suppress ipv6 link-local address for docker0 and shim interfaces when set as ipv4 only"),(0,r.kt)("li",{parentName:"ul"},"rc.samba - let smb, nmb service listen on regular interfaces only which have an IP address, this includes the primary interface + set ipv4 / ipv6 support (also for wsdd2)"),(0,r.kt)("li",{parentName:"ul"},"rc.ssh - listen on regular interfaces only which have an IP address, this includes the primary interface + set ipv4 / ipv6 support"),(0,r.kt)("li",{parentName:"ul"},"Fix issue where /etc/resolve.conf can get deleted when switching DNS Server between auto/static."),(0,r.kt)("li",{parentName:"ul"},"Fix bug in handling description field."),(0,r.kt)("li",{parentName:"ul"},"fix nginx recognizing IP address from slow dhcp servers")),(0,r.kt)("h3",{id:"other-improvementsbug-fixes"},"Other Improvements/Bug fixes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Increased max number of devices per pool from 30 to 60. In a future release we will eliminate the upper maximum entirely."),(0,r.kt)("li",{parentName:"ul"},"webTerminal: For better readability, changed background color on directory listings where 'w+o' is set. Also changed\nrenderer from webgl to canvas to mitigate issue with latest Chrome versions."),(0,r.kt)("li",{parentName:"ul"},"Fixed ntp drift file save/restore from persistent USB flash 'config' directory."),(0,r.kt)("li",{parentName:"ul"},"Removed extraneous /root/.config/remmina file"),(0,r.kt)("li",{parentName:"ul"},"Share Edit: warn when invalid ZFS name is used"),(0,r.kt)("li",{parentName:"ul"},"Share Edit: allow 1 letter names"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/pushbits/server"},"Pushbits Agent")," for Matrix/Synapse integration."),(0,r.kt)("li",{parentName:"ul"},"cgroup2 now the default"),(0,r.kt)("li",{parentName:"ul"},"loopback images no longer mounted using directio"),(0,r.kt)("li",{parentName:"ul"},"newperms script restricted to operate on /mnt/ only."),(0,r.kt)("li",{parentName:"ul"},"upgradepkg patched to prevent replacing existing package with older version."),(0,r.kt)("li",{parentName:"ul"},"current PCI bus/device information saved in file '/boot/previous/hardware' upon Unraid OS upgrade."),(0,r.kt)("li",{parentName:"ul"},"NFS: enable UPD transport"),(0,r.kt)("li",{parentName:"ul"},"emhttp: fix cache pool (null) syslog strings"),(0,r.kt)("li",{parentName:"ul"},"emhttp: fix cache pool display wrong device size for selected replacement device"),(0,r.kt)("li",{parentName:"ul"},"mover: fix improper handling of symlinks"),(0,r.kt)("li",{parentName:"ul"},"mover: fix mover logging syslog entries format different from previous releases"),(0,r.kt)("li",{parentName:"ul"},"plugin: Display Run command retval in error message"),(0,r.kt)("li",{parentName:"ul"},"shfs: igonore top-level hidden directoris (names beginning with '.')"),(0,r.kt)("li",{parentName:"ul"},"terminal: OpenTerminal: change termination signal (hard stop)"),(0,r.kt)("li",{parentName:"ul"},"upgrade Unraid OS: check for earlier upgrade without reboot"),(0,r.kt)("li",{parentName:"ul"},"webgui: support PHP8, increase PHP max memory from 128M to 256M"),(0,r.kt)("li",{parentName:"ul"},"webgui: ManagementAccess: Disable Provision/Renew/Upgrade buttons when no IP on eth0"),(0,r.kt)("li",{parentName:"ul"},"webgui: ManagementAccess: Support wireguard local IP addresses in combination with myservers.unraid.net SSL cert"),(0,r.kt)("li",{parentName:"ul"},'webgui: Move "view" icon on Main and Shares page to the left'),(0,r.kt)("li",{parentName:"ul"},"webgui: Keep dismissed banners hidden for a month"),(0,r.kt)("li",{parentName:"ul"},'webgui: Dashboard: fix regression error in "select case"'),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: make items moveable between columns"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: API for adding custom tiles"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: rearrange processor information"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: rearrange UPS info"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: rearrange memory info"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: VPN header rearrangement"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: header rearrangements"),(0,r.kt)("li",{parentName:"ul"},"webgui: Add jqueryUI touch punch for mobile devices"),(0,r.kt)("li",{parentName:"ul"},"webgui: Changed ID to CLASS for elements occurring more than once"),(0,r.kt)("li",{parentName:"ul"},"webgui: Make header in white and black themes scrollable",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"When more items are present than screen space, the user can now scroll through them (previously these items were invisible)"))),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard and Docker: introduce lock button for sortable items",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"By default sortable items are locked, which allows mobile devices to scroll the page. Upon request items can be made sortable"))),(0,r.kt)("li",{parentName:"ul"},"webgui: Users: add icon to title bar"),(0,r.kt)("li",{parentName:"ul"},"webgui: Tools: new function -> PHP Settings",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"View PHP info"),(0,r.kt)("li",{parentName:"ul"},"Configure error reporting"),(0,r.kt)("li",{parentName:"ul"},"Open LOG to see errors in real-time"))),(0,r.kt)("li",{parentName:"ul"},"webgui: System info: fix reading inactive ports"),(0,r.kt)("li",{parentName:"ul"},"webgui: Plugin: Include the actual command being executed"),(0,r.kt)("li",{parentName:"ul"},"webgui: System info: cache enhancement"),(0,r.kt)("li",{parentName:"ul"},"webgui: System info: memory enhancement"),(0,r.kt)("li",{parentName:"ul"},"webgui: DeviceInfo: disable buttons when erase operation is running"),(0,r.kt)("li",{parentName:"ul"},"webgui: Docker: filetree corrections"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: fixed show heat alarm per pool"),(0,r.kt)("li",{parentName:"ul"},"webgui: Notifications: revised operation",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Autoclose new notifications after 3 seconds"),(0,r.kt)("li",{parentName:"ul"},"Fix notifications reappearing after closure"))),(0,r.kt)("li",{parentName:"ul"},"webgui: DeviceList: add FS type in offline state"),(0,r.kt)("li",{parentName:"ul"},"webgui: Add notification agent for Bark"),(0,r.kt)("li",{parentName:"ul"},"webgui: Main: hide browse icon when disk is not mounted"),(0,r.kt)("li",{parentName:"ul"},"webgui: Diagnostics: add additional btrfs and zfs info"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: add ZFS memory usage"),(0,r.kt)("li",{parentName:"ul"},"webgui: Revised New Permissions",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Select either disks or shares (not both)"))),(0,r.kt)("li",{parentName:"ul"},"webgui: Add testparm to diagnostics"),(0,r.kt)("li",{parentName:"ul"},"webgui: Support new UD reserved mount point of /mnt/addons"),(0,r.kt)("li",{parentName:"ul"},"webgui: fix issue displaying Attributes when temperature display set to Fahrenheit"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard changes:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"lock the Dashboard completely: Editing/moving only becomes possible when unlocking the page"),(0,r.kt)("li",{parentName:"ul"},"An empty column is refilled when the respective tiles are made visible again, no need to reset everything"),(0,r.kt)("li",{parentName:"ul"},'added a visual "move indicator" on the Docker and VM page, to make clearer that rows can be moved now.'),(0,r.kt)("li",{parentName:"ul"},"change cursor shape when moving is enabled"),(0,r.kt)("li",{parentName:"ul"},"use tile title as index"))),(0,r.kt)("li",{parentName:"ul"},"webgui: fix: Local Firefox account pop-up postmessages not working"),(0,r.kt)("li",{parentName:"ul"},"webgui: SMART test cannot be run on a UD disk because there is no spin down delay selection"),(0,r.kt)("li",{parentName:"ul"},'webgui: status footer stuck on "Starting services" when applying share config setting chagnes.'),(0,r.kt)("li",{parentName:"ul"},"webgui: Fix table layout for orphan images"),(0,r.kt)("li",{parentName:"ul"},"webgui: Plugin: Do not show update button if incompatible"),(0,r.kt)("li",{parentName:"ul"},"webgui: Plugin: Make wget percentage detection more robust"),(0,r.kt)("li",{parentName:"ul"},"webgui: OpenTerminal: limit clients"),(0,r.kt)("li",{parentName:"ul"},"webgui: Context menu: automatic triangle placement"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: fix pool warnings"),(0,r.kt)("li",{parentName:"ul"},"webgui: Allow SMART long test for UD"),(0,r.kt)("li",{parentName:"ul"},"webgui: Read processor type from /proc/cpuinfo"),(0,r.kt)("li",{parentName:"ul"},"webgui: CSS: solve scrollbar issue in firefox"),(0,r.kt)("li",{parentName:"ul"},"webgui: Add share: fix hidden share name check"),(0,r.kt)("li",{parentName:"ul"},"webgui: Display settings: add missing defaults"),(0,r.kt)("li",{parentName:"ul"},"webgui: Array Operation: prevent double clicking of Start button"),(0,r.kt)("li",{parentName:"ul"},"webgui: DeviceInfo: show shareFloor with units"),(0,r.kt)("li",{parentName:"ul"},"webgui: DeviceInfo: added automatic floor calculation"),(0,r.kt)("li",{parentName:"ul"},"webgui: Added autosize message"),(0,r.kt)("li",{parentName:"ul"},"webgui: Shares: added info icon"),(0,r.kt)("li",{parentName:"ul"},"webgui: Updated DeviceInfo and Shares page"),(0,r.kt)("li",{parentName:"ul"},"webgui: Fix network display aberration."),(0,r.kt)("li",{parentName:"ul"},"webgui: Auto fill-in minimum free space for new shares"),(0,r.kt)("li",{parentName:"ul"},"webgui: feat(upc): update to v3 for connect"),(0,r.kt)("li",{parentName:"ul"},"webgui: Share/Pool size calculation: show and allow percentage values"),(0,r.kt)("li",{parentName:"ul"},"wireguard: add SSL support for WG tunnel IP addresses (myunraid.net wildcard certs only)"),(0,r.kt)("li",{parentName:"ul"},"wireguard: fix nginx issue when partial WireGuard config")),(0,r.kt)("h3",{id:"release-bz-file-differences"},"Release ",(0,r.kt)("em",{parentName:"h3"},"bz")," file differences"),(0,r.kt)("p",null,"Unraid OS is comprised of a set of 5 so-called ",(0,r.kt)("em",{parentName:"p"},"bz")," files in the root of the\nUSB Flash boot device:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"bzimage - the Linux kernel"),(0,r.kt)("li",{parentName:"ul"},"bzroot - the root file system, sans console desktop"),(0,r.kt)("li",{parentName:"ul"},"bzroot-gui - additional files needed for console desktop"),(0,r.kt)("li",{parentName:"ul"},"bzmodules - modules (drivers) associated with the Linux kernel"),(0,r.kt)("li",{parentName:"ul"},"bzfirmware - device firmware required by certain modules")),(0,r.kt)("p",null,"Starting with 6.12 release, the content of these files has been rearranged:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"bzimage - the Linux kernel (same as before)"),(0,r.kt)("li",{parentName:"ul"},"bzroot - the root file system excluding the /usr directory tree"),(0,r.kt)("li",{parentName:"ul"},"bzroot-gui - a single file which auto-starts the console desktop (for compatibility)"),(0,r.kt)("li",{parentName:"ul"},"bzmodules - modules (drivers) associated with the Linux kernel and device firmware required by certain modules"),(0,r.kt)("li",{parentName:"ul"},"bzfirmware - the /usr directory and all files contained therein, including console desktop")),(0,r.kt)("p",null,'These changes speed up the boot process and free up nearly 1G of RAM. It also permits\nus to add more "stuff" to Unraid OS in the future without requiring more RAM. Finally, when booted in ',(0,r.kt)("strong",{parentName:"p"},"non-GUI")," mode,\nthe desktop can be started by logging in at the console and typig the 'slim' command."),(0,r.kt)("h4",{id:"manual-update"},"Manual update"),(0,r.kt)("p",null,"Manual update refers to updating Unraid OS on your USB flash boot device without using the ",(0,r.kt)("strong",{parentName:"p"},"Tools/Update OS")," function.\nTypically one would either:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"open a Terminal window, wget the release zip file, unzip the release, and then 'cp' the ",(0,r.kt)("em",{parentName:"li"},"bz")," files to root of the boot device.")),(0,r.kt)("p",null,"or"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"export the 'flash' share on your network and drag the ",(0,r.kt)("em",{parentName:"li"},"bz")," files from a PC directly to the flash.")),(0,r.kt)("p",null,"Either method, starting with 6.12 ",(0,r.kt)("strong",{parentName:"p"},"can fail")," because the ",(0,r.kt)("em",{parentName:"p"},"bzfirmware")," file will be overwritten while it is\nstill mounted - not good."),(0,r.kt)("p",null,"To get around this, you must first create a temp directory on the flash device and then 'mv' (or drag)\nall the existing ",(0,r.kt)("em",{parentName:"p"},"bz")," files into this temp directory. Now you can copy the new ",(0,r.kt)("em",{parentName:"p"},"bz")," files to the root of\nthe flash device and reboot."),(0,r.kt)("h2",{id:"linux-kernel"},"Linux kernel"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"version 6.1.33"),(0,r.kt)("li",{parentName:"ul"},"md/unraid: version 2.9.27"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_FS_DAX: File system based Direct Access (DAX) support"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_VIRTIO_FS: Virtio Filesystem"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_ZONE_DEVICE: Device memory (pmem, HMM, etc...) hotplug support"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_USBIP_HOST: Host driver"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_INTEL_MEI: Intel Management Engine Interface"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_INTEL_MEI_ME: ME Enabled Intel Chipsets"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_INTEL_MEI_GSC: Intel MEI GSC embedded device"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_INTEL_MEI_PXP: Intel PXP services of ME Interface"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_INTEL_MEI_HDCP: Intel HDCP2.2 services of ME Interface"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_INTEL_PMC_CORE: Intel PMC Core driver"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_DRM_I915_PXP: Enable Intel PXP support"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_SCSI_FC_ATTRS: FiberChannel Transport Attributes"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_FUSION_SPI: Fusion MPT ScsiHost drivers for SPI"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_FUSION_FC: Fusion MPT ScsiHost drivers for FC"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_FUSION_CTL: Fusion MPT misc device (ioctl) driver"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_FUSION_LOGGING: Fusion MPT logging facility"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_X86_AMD_PSTATE: AMD Processor P-State driver"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_LRU_GEN: Multi-Gen LRU"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_SERIAL_8250_NR_UARTS=32: Maximum number of 8250/16550 serial ports"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_SERIAL_8250_RUNTIME_UARTS=4: Number of 8250/16550 serial ports to register at runtime"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_FANOTIFY: Filesystem wide access notification")),(0,r.kt)("h2",{id:"base-distro-updates"},"Base Distro updates"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"aaa_glibc-solibs: version 2.37"),(0,r.kt)("li",{parentName:"ul"},"adwaita-icon-theme: version 43"),(0,r.kt)("li",{parentName:"ul"},"at-spi2-core: version 2.46.0"),(0,r.kt)("li",{parentName:"ul"},"bash: version 5.2.015"),(0,r.kt)("li",{parentName:"ul"},"bash_completion: version 2.11"),(0,r.kt)("li",{parentName:"ul"},"bind: version 9.18.12"),(0,r.kt)("li",{parentName:"ul"},"btrfs-progs: version 6.2.1"),(0,r.kt)("li",{parentName:"ul"},"ca-certificates: version 20221205"),(0,r.kt)("li",{parentName:"ul"},"cryptsetup: version 2.6.1"),(0,r.kt)("li",{parentName:"ul"},"curl: version 7.88.1"),(0,r.kt)("li",{parentName:"ul"},"dbus: version 1.14.6"),(0,r.kt)("li",{parentName:"ul"},"diffutils: version 3.9"),(0,r.kt)("li",{parentName:"ul"},"dnsmasq: version 2.89"),(0,r.kt)("li",{parentName:"ul"},"docker: version 23.0.6"),(0,r.kt)("li",{parentName:"ul"},"e2fsprogs: version 1.47.0"),(0,r.kt)("li",{parentName:"ul"},"encodings: version 1.0.7"),(0,r.kt)("li",{parentName:"ul"},"file: version 5.44"),(0,r.kt)("li",{parentName:"ul"},"firefox: version 111.0 (AppImage)"),(0,r.kt)("li",{parentName:"ul"},"freetype: version 2.13.0"),(0,r.kt)("li",{parentName:"ul"},"fuse3: version 3.12.0"),(0,r.kt)("li",{parentName:"ul"},"gawk: version 5.2.1"),(0,r.kt)("li",{parentName:"ul"},"git: version 2.39.2"),(0,r.kt)("li",{parentName:"ul"},"glib2: version 2.74.6"),(0,r.kt)("li",{parentName:"ul"},"glibc: version 2.37"),(0,r.kt)("li",{parentName:"ul"},"glibc-zoneinfo: version 2022g"),(0,r.kt)("li",{parentName:"ul"},"gnutls: version 3.7.9"),(0,r.kt)("li",{parentName:"ul"},"gptfdisk: version 1.0.9"),(0,r.kt)("li",{parentName:"ul"},"gtk+3: version 3.24.37"),(0,r.kt)("li",{parentName:"ul"},"harfbuzz: version 7.1.0"),(0,r.kt)("li",{parentName:"ul"},"htop: version 3.2.2"),(0,r.kt)("li",{parentName:"ul"},"iproute2: version 6.2.0"),(0,r.kt)("li",{parentName:"ul"},"iptables: version 1.8.9"),(0,r.kt)("li",{parentName:"ul"},"iputils: version 20221126"),(0,r.kt)("li",{parentName:"ul"},"kernel-firmware: 20230531_fc90c59"),(0,r.kt)("li",{parentName:"ul"},"less: version 612"),(0,r.kt)("li",{parentName:"ul"},"libICE: version 1.1.1"),(0,r.kt)("li",{parentName:"ul"},"libSM: version 1.2.4"),(0,r.kt)("li",{parentName:"ul"},"libX11: version 1.8.4"),(0,r.kt)("li",{parentName:"ul"},"libXau: version 1.0.11"),(0,r.kt)("li",{parentName:"ul"},"libXcomposite: version 0.4.6"),(0,r.kt)("li",{parentName:"ul"},"libXdamage: version 1.1.6"),(0,r.kt)("li",{parentName:"ul"},"libXdmcp: version 1.1.4"),(0,r.kt)("li",{parentName:"ul"},"libXpm: version 3.5.15"),(0,r.kt)("li",{parentName:"ul"},"libXrandr: version 1.5.3"),(0,r.kt)("li",{parentName:"ul"},"libXres: version 1.2.2"),(0,r.kt)("li",{parentName:"ul"},"libXxf86dga: version 1.1.6"),(0,r.kt)("li",{parentName:"ul"},"libarchive: version 3.6.2"),(0,r.kt)("li",{parentName:"ul"},"libdrm: version 2.4.115"),(0,r.kt)("li",{parentName:"ul"},"libfontenc: version 1.1.7"),(0,r.kt)("li",{parentName:"ul"},"libglvnd: version 1.6.0"),(0,r.kt)("li",{parentName:"ul"},"libjpeg-turbo: version 2.1.5.1"),(0,r.kt)("li",{parentName:"ul"},"libpcap: version 1.10.3"),(0,r.kt)("li",{parentName:"ul"},"libpng: version 1.6.39"),(0,r.kt)("li",{parentName:"ul"},"libpsl: version 0.21.2"),(0,r.kt)("li",{parentName:"ul"},"liburcu: version 0.14.0"),(0,r.kt)("li",{parentName:"ul"},"libwebp: version 1.3.0"),(0,r.kt)("li",{parentName:"ul"},"libxkbcommon: version 1.5.0"),(0,r.kt)("li",{parentName:"ul"},"libxkbfile: version 1.1.2"),(0,r.kt)("li",{parentName:"ul"},"libxshmfence: version 1.3.2"),(0,r.kt)("li",{parentName:"ul"},"lmdb: version 0.9.30"),(0,r.kt)("li",{parentName:"ul"},"logrotate: version 3.21.0"),(0,r.kt)("li",{parentName:"ul"},"lsof: version 4.98.0"),(0,r.kt)("li",{parentName:"ul"},"lz4: version 1.9.4"),(0,r.kt)("li",{parentName:"ul"},"lzlib: version 1.13"),(0,r.kt)("li",{parentName:"ul"},"mc: version 4.8.29"),(0,r.kt)("li",{parentName:"ul"},"mcelog: version 191"),(0,r.kt)("li",{parentName:"ul"},"mpfr: version 4.2.0"),(0,r.kt)("li",{parentName:"ul"},"nano: version 7.2"),(0,r.kt)("li",{parentName:"ul"},"ncurses: version 6.4"),(0,r.kt)("li",{parentName:"ul"},"nginx: version 1.23.3"),(0,r.kt)("li",{parentName:"ul"},"nghttp2: version 1.52.0"),(0,r.kt)("li",{parentName:"ul"},"openssh: version 9.2p1"),(0,r.kt)("li",{parentName:"ul"},"openssl: version 1.1.1t"),(0,r.kt)("li",{parentName:"ul"},"openssl-solibs: version 1.1.1t"),(0,r.kt)("li",{parentName:"ul"},"openzfs: version 2.1.12"),(0,r.kt)("li",{parentName:"ul"},"pango: version 1.50.14"),(0,r.kt)("li",{parentName:"ul"},"pciutils: version 3.9.0"),(0,r.kt)("li",{parentName:"ul"},"pcre2: version 10.42"),(0,r.kt)("li",{parentName:"ul"},"php: version 8.2.4"),(0,r.kt)("li",{parentName:"ul"},"php-libvirt: version 0.5.7"),(0,r.kt)("li",{parentName:"ul"},"php-markdown: version 2.0.0"),(0,r.kt)("li",{parentName:"ul"},"samba: version 4.17.7"),(0,r.kt)("li",{parentName:"ul"},"sqlite: version 3.41.0"),(0,r.kt)("li",{parentName:"ul"},"sudo: version 1.9.13p2"),(0,r.kt)("li",{parentName:"ul"},"sysstat: version 12.7.2"),(0,r.kt)("li",{parentName:"ul"},"tdb: version 1.4.8"),(0,r.kt)("li",{parentName:"ul"},"tevent: version 0.14.1"),(0,r.kt)("li",{parentName:"ul"},"traceroute: version 2.1.2"),(0,r.kt)("li",{parentName:"ul"},"transset: version 1.0.3"),(0,r.kt)("li",{parentName:"ul"},"tree: version 2.1.0"),(0,r.kt)("li",{parentName:"ul"},"usbutils: version 015"),(0,r.kt)("li",{parentName:"ul"},"xcb-util: version 0.4.1"),(0,r.kt)("li",{parentName:"ul"},"xdriinfo: version 1.0.7"),(0,r.kt)("li",{parentName:"ul"},"xf86-video-vesa: version 2.6.0"),(0,r.kt)("li",{parentName:"ul"},"xfsprogs: version 6.1.1"),(0,r.kt)("li",{parentName:"ul"},"xhost: version 1.0.9"),(0,r.kt)("li",{parentName:"ul"},"xinit: version 1.4.2"),(0,r.kt)("li",{parentName:"ul"},"xkbcomp: version 1.4.6"),(0,r.kt)("li",{parentName:"ul"},"xkeyboard-config: version 2.38"),(0,r.kt)("li",{parentName:"ul"},"xorg-server: version 21.1.7"),(0,r.kt)("li",{parentName:"ul"},"xprop: version 1.2.6"),(0,r.kt)("li",{parentName:"ul"},"xrandr: version 1.5.2"),(0,r.kt)("li",{parentName:"ul"},"xset: version 1.2.5"),(0,r.kt)("li",{parentName:"ul"},"xterm: version 379"),(0,r.kt)("li",{parentName:"ul"},"xz: version 5.4.1"),(0,r.kt)("li",{parentName:"ul"},"zstd: version 1.5.4")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e1256ee6.9a1add52.js b/assets/js/e1256ee6.9a1add52.js new file mode 100644 index 000000000..e424b167c --- /dev/null +++ b/assets/js/e1256ee6.9a1add52.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8925],{4137:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),p=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},u=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),d=p(a),c=r,k=d["".concat(s,".").concat(c)]||d[c]||m[c]||i;return a?n.createElement(k,l(l({ref:t},u),{},{components:a})):n.createElement(k,l({ref:t},u))}));function k(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,l=new Array(i);l[0]=c;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[d]="string"==typeof e?e:r,l[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var n=a(7462),r=(a(7294),a(4137));const i={},l="Version 6.12.0 2023-06-14",o={unversionedId:"unraid-os/release-notes/6.12.0",id:"unraid-os/release-notes/6.12.0",title:"Version 6.12.0 2023-06-14",description:"Upgrade notes",source:"@site/docs/unraid-os/release-notes/6.12.0.md",sourceDirName:"unraid-os/release-notes",slug:"/unraid-os/release-notes/6.12.0",permalink:"/unraid-os/release-notes/6.12.0",draft:!1,editUrl:"https://github.com/unraid/docs/tree/main/docs/unraid-os/release-notes/6.12.0.md",tags:[],version:"current",frontMatter:{},sidebar:"unraidSidebar",previous:{title:"Release Notes",permalink:"/category/release-notes"},next:{title:"Version 6.12.1 2023-06-20",permalink:"/unraid-os/release-notes/6.12.1"}},s={},p=[{value:"Upgrade notes",id:"upgrade-notes",level:2},{value:"Obsolete/Broken plugins",id:"obsoletebroken-plugins",level:3},{value:"Known issues",id:"known-issues",level:3},{value:"Crashes related to i915 driver",id:"crashes-related-to-i915-driver",level:4},{value:"Call traces related to macvlan",id:"call-traces-related-to-macvlan",level:4},{value:"Plex",id:"plex",level:4},{value:"Rolling back",id:"rolling-back",level:3},{value:"ZFS pools",id:"zfs-pools",level:2},{value:"Share storage conceptual change",id:"share-storage-conceptual-change",level:2},{value:"Mover action",id:"mover-action",level:3},{value:"Exclusive shares",id:"exclusive-shares",level:3},{value:"Clean Up button",id:"clean-up-button",level:3},{value:"Other Improvements",id:"other-improvements",level:2},{value:"btrfs",id:"btrfs",level:3},{value:"xfs",id:"xfs",level:3},{value:"Docker",id:"docker",level:3},{value:"Other Docker changes",id:"other-docker-changes",level:4},{value:"VM Manager",id:"vm-manager",level:3},{value:"Other VM changes",id:"other-vm-changes",level:4},{value:"Dashboard",id:"dashboard",level:3},{value:"Network improvements",id:"network-improvements",level:3},{value:"Other Network changes",id:"other-network-changes",level:4},{value:"Other Improvements/Bug fixes",id:"other-improvementsbug-fixes",level:3},{value:"Release bz file differences",id:"release-bz-file-differences",level:3},{value:"Manual update",id:"manual-update",level:4},{value:"Linux kernel",id:"linux-kernel",level:2},{value:"Base Distro updates",id:"base-distro-updates",level:2}],u={toc:p},d="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"version-6120-2023-06-14"},"Version 6.12.0 2023-06-14"),(0,r.kt)("h2",{id:"upgrade-notes"},"Upgrade notes"),(0,r.kt)("p",null,"Upon boot, if all PCI devices specified in 'config/vfio-pci.cfg' do not properly bind, VM Autostart is prevented. You may still\nstart individual VMs. This is to prevent Unraid host crash if hardware PCI IDs changed because of a kernel update or physical hardware\nchange. To restore VM autostart, examine '/var/log/vfio-pci-errors' and remove offending PCI IDs from 'config/vfio-pci.cfg' file and\nreboot."),(0,r.kt)("p",null,"If you revert back from 6.12 to 6.11.5 or earlier, you have to force update all your Docker containers and start them\nmanually after downgrading. This is necessary because of the underlying change to cgroup v2 starting with 6.12.0-rc1."),(0,r.kt)("p",null,"Linux ",(0,r.kt)("a",{parentName:"p",href:"https://lwn.net/Articles/856931/"},"Multi-Gen LRU")," is a relatively new feature now included but not\nenabled by default. You can enable by adding this line to your 'config/go' file:"),(0,r.kt)("p",null," ",(0,r.kt)("inlineCode",{parentName:"p"},"echo y > /sys/kernel/mm/lru_gen/enabled")),(0,r.kt)("p",null,"If you revert back from 6.12 to 6.11.5 or earlier, you may need to remove that line."),(0,r.kt)("p",null,"If you created any zpools using 6.12.0-beta5, please Erase those pools and recreate."),(0,r.kt)("h3",{id:"obsoletebroken-plugins"},"Obsolete/Broken plugins"),(0,r.kt)("p",null,"There are a few plugins which are known to be incompatible with Unraid 6.12, and upon boot will not be installed. You will get a notification for each plugin\nthat is affected and can review the list by going to ",(0,r.kt)("strong",{parentName:"p"},"Plugins/Plugin File Install Errors"),"."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"disklocation-master version 2022.06.18 (",(0,r.kt)("inlineCode",{parentName:"li"},"Disk Location")," by olehj, breaks the dashboard)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Update this plugin before upgrading the OS"))),(0,r.kt)("li",{parentName:"ul"},"plexstreams version 2022.08.31 (",(0,r.kt)("inlineCode",{parentName:"li"},"Plex Streams")," by dorgan, breaks the dashboard)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Update this plugin before upgrading the OS"))),(0,r.kt)("li",{parentName:"ul"},"corsairpsu version 2021.10.05 (",(0,r.kt)("inlineCode",{parentName:"li"},"Corsair PSU Statistics")," by Fma965, breaks the dashboard)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Update this plugin before upgrading the OS"))),(0,r.kt)("li",{parentName:"ul"},"gpustat version 2022.11.30a (",(0,r.kt)("inlineCode",{parentName:"li"},"GPU Statistics")," by b3rs3rk, breaks the dashboard)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Switch to ",(0,r.kt)("inlineCode",{parentName:"li"},"GPU Statistics")," by SimonF"))),(0,r.kt)("li",{parentName:"ul"},"ipmi version 2021.01.08 (",(0,r.kt)("inlineCode",{parentName:"li"},"IPMI Tools")," by dmacias72, breaks the dashboard)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Switch to ",(0,r.kt)("inlineCode",{parentName:"li"},"IPMI Tools")," by SimonF"))),(0,r.kt)("li",{parentName:"ul"},"nut version 2022.03.20 (",(0,r.kt)("inlineCode",{parentName:"li"},"NUT - Network UPS Tools")," by dmacias72, breaks the dashboard)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Switch to ",(0,r.kt)("inlineCode",{parentName:"li"},"NUT - Network UPS Tools")," by SimonF"))),(0,r.kt)("li",{parentName:"ul"},"NerdPack version 2021.08.11 (",(0,r.kt)("inlineCode",{parentName:"li"},"Nerd Tools")," by dmacias72)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Switch to ",(0,r.kt)("inlineCode",{parentName:"li"},"NerdTools")," by UnRAIDES"))),(0,r.kt)("li",{parentName:"ul"},"upnp-monitor version 2020.01.04c (",(0,r.kt)("inlineCode",{parentName:"li"},"UPnP Monitor")," by ljm42, not PHP 8 compatible)"),(0,r.kt)("li",{parentName:"ul"},"ZFS-companion version 2021.08.24 (",(0,r.kt)("inlineCode",{parentName:"li"},"ZFS-Companion")," by campusantu, breaks the dashboard)")),(0,r.kt)("p",null,"Some of the affected plugins have been taken over by different developers, we recommend that you go to the ",(0,r.kt)("strong",{parentName:"p"},"Apps")," page and search for replacements. Please ask\nplugin-specific questions in the support thread for that plugin."),(0,r.kt)("h3",{id:"known-issues"},"Known issues"),(0,r.kt)("h4",{id:"crashes-related-to-i915-driver"},"Crashes related to i915 driver"),(0,r.kt)("p",null,"We are aware that some 11th gen Intel Rocket Lake systems are experiencing crashes related to the i915 iGPU. If your Rocket Lake system crashes under\nUnraid 6.12.0, open a web terminal and type this, then reboot:"),(0,r.kt)("p",null," ",(0,r.kt)("inlineCode",{parentName:"p"},'echo "options i915 enable_dc=0" >> /boot/config/modprobe.d/i915.conf')),(0,r.kt)("p",null,"Setting this option may result in higher power use but it may resolve this issue for these GPUs."),(0,r.kt)("h4",{id:"call-traces-related-to-macvlan"},"Call traces related to macvlan"),(0,r.kt)("p",null,'If you are getting call traces related to macvlan, as a first step we\'d recommend navigating to Settings/Docker, switching to advanced view, and changing the "Docker custom network type" from macvlan to ipvlan. This is the default configuration that Unraid has shipped with since version 6.11.5 and should work for most systems.'),(0,r.kt)("p",null,"However, some users have reported issues with port forwarding from certain routers (Fritzbox) and reduced functionality with advanced network management tools (Ubiquity) when in ipvlan mode."),(0,r.kt)("p",null,"In 6.12.0, the ",(0,r.kt)("a",{parentName:"p",href:"https://forums.unraid.net/topic/137048-guide-how-to-solve-macvlan-and-ipvlan-issues-with-containers-on-a-custom-network/"},"two-nic docker segmentation method")," is a viable workaround, but our recommendation is to upgrade to Unraid ",(0,r.kt)("a",{parentName:"p",href:"/unraid-os/release-notes/6.12.4"},"6.12.4")," which has a better solution."),(0,r.kt)("h4",{id:"plex"},"Plex"),(0,r.kt)("p",null,"If Docker containers have issues starting after a while, and you are running Plex, go to your Plex Docker container settings,\nswitch to advanced view, and add this to the Extra Params: ",(0,r.kt)("inlineCode",{parentName:"p"},"--no-healthcheck")),(0,r.kt)("h3",{id:"rolling-back"},"Rolling back"),(0,r.kt)("p",null,"See the comments under ",(0,r.kt)("a",{parentName:"p",href:"#upgrade-notes"},"Upgrade Notes")),(0,r.kt)("h2",{id:"zfs-pools"},"ZFS pools"),(0,r.kt)("p",null,"New in this release is the ability to create a ZFS file system in a user-defined pool. You may also format any data\ndevice in the unRAID array with a single-device ZFS file system. For a good overview of ZFS,\nsee ",(0,r.kt)("a",{parentName:"p",href:"https://arstechnica.com/information-technology/2020/05/zfs-101-understanding-zfs-storage-and-performance/"},"this article"),"."),(0,r.kt)("p",null,"We are splitting full ZFS implementation across two Unraid OS releases. Initial support in this release includes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Support raid0, mirror, raidz1, raidz2 and raidz3 root profiles. Up to 4-way mirror in a mirror vdev. Multiple vdev groups."),(0,r.kt)("li",{parentName:"ul"},"Support removing single device: if device is still present in server, 'wipefs' is used to clear the partition table."),(0,r.kt)("li",{parentName:"ul"},"Support replacing single missing device with a new device of same or larger size."),(0,r.kt)("li",{parentName:"ul"},"Support scheduled trimming of ZFS pools."),(0,r.kt)("li",{parentName:"ul"},"Support pool rename."),(0,r.kt)("li",{parentName:"ul"},"Pool names must begin with a lowercase letter and only contain lowercase letters, digits, the underscore,\nand dash. Pool names must not end with a digit."),(0,r.kt)("li",{parentName:"ul"},"Non-root vdev cannot be configured in this release, however, they can be imported. Note: imported hybrid pools may not be\nexpanded in this release."),(0,r.kt)("li",{parentName:"ul"},"Pools created on other systems may or may not import depending on how the pool was created. A future update will permit\nimporting pools from any system.")),(0,r.kt)("p",null,"A ZFS pool has three variables:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"profile - the root data organization: raid0, mirror (up to 4-way), raidz1, raidz2, raidz3"),(0,r.kt)("li",{parentName:"ul"},"width - the number of devices per root vdev"),(0,r.kt)("li",{parentName:"ul"},"groups - the number of root vdevs in the pool")),(0,r.kt)("p",null,"At time of ZFS pool creation, the webGUI will present all topology options based on the number of devices assigned to the pool."),(0,r.kt)("p",null,"Special treatment for root single-vdev mirrors:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"A single-device ZFS pool can be converted to multiple-device mirror by adding up to 3 additional devices in one operation."),(0,r.kt)("li",{parentName:"ul"},"A 2-device mirror can be increased to 3-device by adding a single device; similarly, a 3-device mirror can be increased to\n4-device mirror by adding a single device.")),(0,r.kt)("p",null,"To add an additional root vdev, you must assign 'width' number of new devices to the pool at the same time. The new vdev will be\ncreated with the same 'profile' as the existing vdevs. Additional flexibility in adding/expanding vdevs will be provided in a future update."),(0,r.kt)("p",null,"Pools created with the ",(0,r.kt)("strong",{parentName:"p"},"steini84")," plugin can be imported as follows: First create a new pool with the number\nof slots corresponding to the number of devices in the pool to be imported. Next assign all the devices to\nthe new pool. Upon array Start the pool should be recognized, though certain zpool topologies may not be\nrecognized (please report). Please note that only pools using partition #1 can be imported in this release, e.g. this ",(0,r.kt)("inlineCode",{parentName:"p"},"lsblk")," output:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"# lsblk\nNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS\nsdb 8:16 0 7.3T 0 disk\n\u251c\u2500sdb1 8:17 0 2G 0 part\n\u2514\u2500sdb2 8:18 0 7.3T 0 part\n")),(0,r.kt)("p",null,"indicates that the second (",(0,r.kt)("inlineCode",{parentName:"p"},"sdb2"),") partition of the disk is being used for data, and ",(0,r.kt)("strong",{parentName:"p"},"cannot")," be imported."),(0,r.kt)("p",null,"Mixed topologies are not supported. For example, a pool with both a mirror root vdev and a raidz root vdev is not\nrecognized."),(0,r.kt)("p",null,"Autotrim can be configured as ",(0,r.kt)("strong",{parentName:"p"},"on")," or ",(0,r.kt)("strong",{parentName:"p"},"off")," (except for single-device ZFS volumes in the unRAID array)."),(0,r.kt)("p",null,"Compression can be configured as ",(0,r.kt)("strong",{parentName:"p"},"on")," or ",(0,r.kt)("strong",{parentName:"p"},"off"),", where ",(0,r.kt)("strong",{parentName:"p"},"on")," selects ",(0,r.kt)("strong",{parentName:"p"},"lz4"),". Future update will permit specifying other algorithms/levels."),(0,r.kt)("p",null,"When creating a new ZFS pool you may choose ",(0,r.kt)("strong",{parentName:"p"},"zfs - encrypted"),", which, like other encrypted volumes, applies device-level encryption\nvia LUKS. ZFS native encryption is not supported at this time."),(0,r.kt)("p",null,"During system boot, the file /etc/modprobe.d/zfs.conf is auto-generated to limit the ZFS ARC to 1/8 of installed memory. This can\nbe overridden if necessary by creating a custom 'config/modprobe.d/zfs.conf' file. Future update will include ability to configure\nthe ARC via webGUI, including auto-adjust according to memory pressure, e.g., VM start/stop."),(0,r.kt)("p",null,"Top-level user shares in a ZFS pool are created as datasets instead of ordinary directories."),(0,r.kt)("h2",{id:"share-storage-conceptual-change"},"Share storage conceptual change"),(0,r.kt)("p",null,'New in this release is a conceptual change in the way storage is assigned to shares. The old concept of main storage being the unRAID array\nwith an optional "Cache" is confusing to many new users, especially since ',(0,r.kt)("em",{parentName:"p"},"cache")," has a specific meaning in ZFS."),(0,r.kt)("p",null,"Also outlined below, we introduced the concept of an ",(0,r.kt)("em",{parentName:"p"},"exclusive share"),". This is simply a share where all the data exists in a single named\npool. In this case, the FUSE-based User Share file system returns a ",(0,r.kt)("strong",{parentName:"p"},"symlink")," to the actual share directory in the pool. All operations within\nthe share, including data transfer, therefore bypass FUSE, resulting in greater performance. This feature is primarily aimed at maximizing\nI/O for large fast ZFS pools accessed via a fast network"),(0,r.kt)("p",null,"This is a front-end change only; existing shares will be viewed with this new structure automatically upon upgrading,\nand will automatically revert to the previous style if you revert to an earlier version."),(0,r.kt)("p",null,"Configuring the storage options for a share is specified using two inputs:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Primary storage"),(0,r.kt)("li",{parentName:"ul"},"Secondary storage")),(0,r.kt)("p",null,"Primary storage is where ",(0,r.kt)("strong",{parentName:"p"},"new")," files/folders are created. If Primary storage is below the Minimum Free Space setting then new files\nand folders will be created in Secondary storage, if configured."),(0,r.kt)("p",null,'Each input presents a drop-down which lists "array", "none", and each named pool as a selection according to some configuration rules:'),(0,r.kt)("p",null,"For the Primary storage drop-down:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'the "none" option is omitted, ie, Primary storage must be selected'),(0,r.kt)("li",{parentName:"ul"},"any named pool can be selected"),(0,r.kt)("li",{parentName:"ul"},'"Array" can be selected (meaning the unRAID array)')),(0,r.kt)("p",null,"For the Secondary storage drop-down:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'the "none" option is included, ie, Secondary storage is optional'),(0,r.kt)("li",{parentName:"ul"},'if Primary storage is a pool name, then the only options are "none" and "Array". In the future other pools will be listed here as well.'),(0,r.kt)("li",{parentName:"ul"},'if Primary storage is "Array", then only "none" appears as an option')),(0,r.kt)("p",null,'When "Array" is selected for either Primary or Secondary storage, a set of additional settings slide in:'),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Allocation method"),(0,r.kt)("li",{parentName:"ul"},"Included disk(s)"),(0,r.kt)("li",{parentName:"ul"},"Excluded disk(s)"),(0,r.kt)("li",{parentName:"ul"},"Split level")),(0,r.kt)("p",null,"When a ",(0,r.kt)("em",{parentName:"p"},"btrfs")," named pool is selected for either Primary or Secondary storage, an additional setting slides in:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Enable Copy-on-write")),(0,r.kt)("p",null,"When a ",(0,r.kt)("em",{parentName:"p"},"ZFS")," named pool is selected for either Primary or Secondary storage, there are no additional settings at this time\nbut there could be some in the future. For example, since a share is created as a ZFS dataset, it could have a different\ncompression setting than the parent pool if we need to implement this."),(0,r.kt)("h3",{id:"mover-action"},"Mover action"),(0,r.kt)("p",null,'When there is Secondary storage configured for a share the "Mover action" setting becomes enabled, letting the user\nselect the transfer direction of the mover:'),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Primary to Secondary (default)"),(0,r.kt)("li",{parentName:"ul"},"Secondary to Primary")),(0,r.kt)("h3",{id:"exclusive-shares"},"Exclusive shares"),(0,r.kt)("p",null,'We added a new setting: "Settings/Global Share Settings/Permit exclusive shares" ',"[Yes/No]",' default: No. If set to Yes\nand if Primary storage for a share is a pool and Secondary storage is set to "none", then a symlink is created\nin /mnt/user/',(0,r.kt)("em",{parentName:"p"},"share")," pointing directly to the pool share directory. (An additional check is made to ensure the share also does\nnot exist on any other volumes.)"),(0,r.kt)("p",null,"There is a new status flag, 'Exclusive access' which is set to 'Yes' when a symlink is in place; and, 'No' otherwise.\nExclusive shares are also indicated on the Shares page."),(0,r.kt)("p",null,"The advantage of setting up symlinks is that I/O bypasses FUSE-based user share file system (shfs) which can significantly\nincrease performance."),(0,r.kt)("p",null,"There are some restrictions:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Both the share Min Free Space and pool Min Free Space settings are ignored when creating new files on an exclusive share."),(0,r.kt)("li",{parentName:"ul"},"If a share is NFS-exported it cannot be exclusive, i.e., the syslink is not created. This is because symlinks are resolved in\nthe NFS client, not the server. We hope to lift this restriction in a future update.")),(0,r.kt)("h3",{id:"clean-up-button"},"Clean Up button"),(0,r.kt)("p",null,"Appearing on the Shares page, a button called CLEAN UP, when enabled indicates there are config/share/",(0,r.kt)("em",{parentName:"p"},"share"),".cfg files for\nshares that do not exist. Clicking this button will remove those files."),(0,r.kt)("h2",{id:"other-improvements"},"Other Improvements"),(0,r.kt)("h3",{id:"btrfs"},"btrfs"),(0,r.kt)("p",null,"Autotrim can be configured as ",(0,r.kt)("strong",{parentName:"p"},"on")," or ",(0,r.kt)("strong",{parentName:"p"},"off")," when used in a pool."),(0,r.kt)("p",null,"Compression can be configured as ",(0,r.kt)("strong",{parentName:"p"},"on")," or ",(0,r.kt)("strong",{parentName:"p"},"off"),". ",(0,r.kt)("strong",{parentName:"p"},"on")," selects ",(0,r.kt)("strong",{parentName:"p"},"zstd"),". Future update to permit specifying other algorithms/levels."),(0,r.kt)("h3",{id:"xfs"},"xfs"),(0,r.kt)("p",null,"Autotrim can be configured as ",(0,r.kt)("strong",{parentName:"p"},"on")," or ",(0,r.kt)("strong",{parentName:"p"},"off")," when used as a single-slot pool."),(0,r.kt)("h3",{id:"docker"},"Docker"),(0,r.kt)("p",null,"It is possible to configure the ",(0,r.kt)("strong",{parentName:"p"},"Docker data-root")," to be placed in a directory on a ZFS storage pool. In this\ncase, Docker will use the 'zfs' storage driver. This driver creates a separate dataset for each image layer. Because\nof this, here is our recommendation for setting up Docker using ",(0,r.kt)("strong",{parentName:"p"},"directory"),":"),(0,r.kt)("p",null,"First, create a ",(0,r.kt)("strong",{parentName:"p"},"docker")," user share configured as follows:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Share name: ",(0,r.kt)("strong",{parentName:"li"},"docker")),(0,r.kt)("li",{parentName:"ul"},"Primary storage: ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("em",{parentName:"strong"},"name of your ZFS pool"))),(0,r.kt)("li",{parentName:"ul"},"Secondary storage: ",(0,r.kt)("strong",{parentName:"li"},"none"))),(0,r.kt)("p",null,"Next, on ",(0,r.kt)("strong",{parentName:"p"},"Docker settings")," page:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Enable docker: ",(0,r.kt)("strong",{parentName:"li"},"Yes")),(0,r.kt)("li",{parentName:"ul"},"Docker data-root: ",(0,r.kt)("strong",{parentName:"li"},"directory")),(0,r.kt)("li",{parentName:"ul"},"Docker directory: ",(0,r.kt)("strong",{parentName:"li"},"/mnt/user/docker"))),(0,r.kt)("p",null,"If you ever need to delete the docker persistent state, then bring up\nthe Docker settings page and set ",(0,r.kt)("strong",{parentName:"p"},"Enable docker")," to ",(0,r.kt)("strong",{parentName:"p"},"No")," and click ",(0,r.kt)("strong",{parentName:"p"},"Apply"),". After docker has shut down click\nthe ",(0,r.kt)("strong",{parentName:"p"},"Delete directory")," checkbox and then click ",(0,r.kt)("strong",{parentName:"p"},"Delete"),". This\nwill result in deleting not only the various files and directories, but also all layers stored as datasets."),(0,r.kt)("p",null,"Before enabling Docker again, be sure to first re-create the ",(0,r.kt)("strong",{parentName:"p"},"docker")," share as described above."),(0,r.kt)("h4",{id:"other-docker-changes"},"Other Docker changes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"CreateDocker: changed label ",(0,r.kt)("strong",{parentName:"li"},"Docker Hub URL")," to ",(0,r.kt)("strong",{parentName:"li"},"Registry URL")," because of GHCR and other new container\nregistries becoming more and more popular."),(0,r.kt)("li",{parentName:"ul"},"Honor user setting of stop time-out."),(0,r.kt)("li",{parentName:"ul"},"Accept images in OCI format."),(0,r.kt)("li",{parentName:"ul"},"Add option to disable readmore-js on container table."),(0,r.kt)("li",{parentName:"ul"},"Fix: Docker Containers console will not use bash if selected."),(0,r.kt)("li",{parentName:"ul"},"Fix issue detecting proper shutdown of docker."),(0,r.kt)("li",{parentName:"ul"},"rc.docker: give dockerd 30 sec instead of 15 to start up.")),(0,r.kt)("h3",{id:"vm-manager"},"VM Manager"),(0,r.kt)("p",null,"If you enable copy/paste for virtual consoles you need to install additional software on the client in addition to the QEMU agent\nif that has been installed. ",(0,r.kt)("a",{parentName:"p",href:"https://www.spice-space.org/download.html"},"Here is the location")," for spice-vdagent for both Windows and Linux.\nNote copy/paste function will not work with web spice viewer you need to use virt-viewer."),(0,r.kt)("h4",{id:"other-vm-changes"},"Other VM changes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Add Serial option to vdisk."),(0,r.kt)("li",{parentName:"ul"},"Spice Bug fix for users with non standard GUI ports defined."),(0,r.kt)("li",{parentName:"ul"},"OVMF for QEMU: version stable202302"),(0,r.kt)("li",{parentName:"ul"},"Fix for bus text."),(0,r.kt)("li",{parentName:"ul"},"Enable copy paste option for virtual consoles."),(0,r.kt)("li",{parentName:"ul"},"Update Memory Backup processing for Virtiofs."),(0,r.kt)("li",{parentName:"ul"},"Fix lockup when no VMs are present."),(0,r.kt)("li",{parentName:"ul"},"Add support for rtl8139 network model."),(0,r.kt)("li",{parentName:"ul"},"fix translation omission."),(0,r.kt)("li",{parentName:"ul"},"added lock/unlock for sortable items."),(0,r.kt)("li",{parentName:"ul"},"Fix for Spice Mouse if Copy paste enabled."),(0,r.kt)("li",{parentName:"ul"},"Let page load even when PCI devices appear missing or are misassigned."),(0,r.kt)("li",{parentName:"ul"},"Make remote viewer and web console options selectable."),(0,r.kt)("li",{parentName:"ul"},"Option to download .vv file and start remote viewer is browser set to open file .vv when downloaded."),(0,r.kt)("li",{parentName:"ul"},"Add remote viewer console support."),(0,r.kt)("li",{parentName:"ul"},"Remove-lock-posix='on'-flock='on'/-"),(0,r.kt)("li",{parentName:"ul"},"Fix VM marked as Autostart not starting following manual array Start."),(0,r.kt)("li",{parentName:"ul"},"Fix for Max memory > 1TB."),(0,r.kt)("li",{parentName:"ul"},"Fix issues with VM page loads if users have removed vcpu pinning."),(0,r.kt)("li",{parentName:"ul"},"ovmf-stable: version 202305 (build 3)."),(0,r.kt)("li",{parentName:"ul"},"fixed notification subject.")),(0,r.kt)("h3",{id:"dashboard"},"Dashboard"),(0,r.kt)("p",null,"The webGUI Dashboard has been redesigned and it is now possible to move elements (tiles) up and down and between columns. This allows\nthe user to organize the tiles in any way they desire. There is a small ",(0,r.kt)("strong",{parentName:"p"},"lock")," icon on the menu bar which must be clicked to enable\nthis function:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Green is normal state (page is locked)"),(0,r.kt)("li",{parentName:"ul"},"Red is attention state (page is unlocked)")),(0,r.kt)("p",null,"Note: The ",(0,r.kt)("strong",{parentName:"p"},"lock")," icon also appears on the Docker and VM pages and must be clicked to rearrange the startup order."),(0,r.kt)("h3",{id:"network-improvements"},"Network improvements"),(0,r.kt)("p",null,"We added a new section: Settings/Network Settings/Interface Extra"),(0,r.kt)("p",null,"This new section allows the user to define which interfaces are used by the Unraid services. By default all regular interfaces with an\nIP address are included in the list of listening interfaces."),(0,r.kt)("p",null,"The tunnels of the built-in WireGuard function of Unraid are automatically added or removed from the list when the Wireguard tunnels are\nactivated or deactivated. The user may exclude these tunnels from the list of listening interfaces."),(0,r.kt)("p",null,"To use the Tailscale or Zerotier interface, it is required to add the interface name or IP address of the communication to the list of\nincluded listening interfaces. ",(0,r.kt)("strong",{parentName:"p"},"Important:")," It is imperative that Tailscale or Zerotier container is running before the interface is\nadded to the list. For more information,\nrefer to ",(0,r.kt)("a",{parentName:"p",href:"https://forums.unraid.net/bug-reports/prereleases/unraid-os-version-6120-rc7-available-r2427/?tab=comments#comment-24235"},"this Community forum post"),"."),(0,r.kt)("h4",{id:"other-network-changes"},"Other Network changes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Support custom interfaces (e.g. Tailscale VPN tunnel or zerotier L2 tunnel)"),(0,r.kt)("li",{parentName:"ul"},"create_network_ini - restart smb when network changes are done"),(0,r.kt)("li",{parentName:"ul"},"rc.inet1 - add iptables processing to bridge interfaces to make them operate similarly as macvlan interfaces"),(0,r.kt)("li",{parentName:"ul"},"rc.avahidaemon - let service listen on regular interfaces only which have an IP address, this includes the primary interface + set ipv4 / ipv6 support"),(0,r.kt)("li",{parentName:"ul"},"rc.docker - suppress ipv6 link-local address for docker0 and shim interfaces when set as ipv4 only"),(0,r.kt)("li",{parentName:"ul"},"rc.samba - let smb, nmb service listen on regular interfaces only which have an IP address, this includes the primary interface + set ipv4 / ipv6 support (also for wsdd2)"),(0,r.kt)("li",{parentName:"ul"},"rc.ssh - listen on regular interfaces only which have an IP address, this includes the primary interface + set ipv4 / ipv6 support"),(0,r.kt)("li",{parentName:"ul"},"Fix issue where /etc/resolve.conf can get deleted when switching DNS Server between auto/static."),(0,r.kt)("li",{parentName:"ul"},"Fix bug in handling description field."),(0,r.kt)("li",{parentName:"ul"},"fix nginx recognizing IP address from slow dhcp servers")),(0,r.kt)("h3",{id:"other-improvementsbug-fixes"},"Other Improvements/Bug fixes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Increased max number of devices per pool from 30 to 60. In a future release we will eliminate the upper maximum entirely."),(0,r.kt)("li",{parentName:"ul"},"webTerminal: For better readability, changed background color on directory listings where 'w+o' is set. Also changed\nrenderer from webgl to canvas to mitigate issue with latest Chrome versions."),(0,r.kt)("li",{parentName:"ul"},"Fixed ntp drift file save/restore from persistent USB flash 'config' directory."),(0,r.kt)("li",{parentName:"ul"},"Removed extraneous /root/.config/remmina file"),(0,r.kt)("li",{parentName:"ul"},"Share Edit: warn when invalid ZFS name is used"),(0,r.kt)("li",{parentName:"ul"},"Share Edit: allow 1 letter names"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/pushbits/server"},"Pushbits Agent")," for Matrix/Synapse integration."),(0,r.kt)("li",{parentName:"ul"},"cgroup2 now the default"),(0,r.kt)("li",{parentName:"ul"},"loopback images no longer mounted using directio"),(0,r.kt)("li",{parentName:"ul"},"newperms script restricted to operate on /mnt/ only."),(0,r.kt)("li",{parentName:"ul"},"upgradepkg patched to prevent replacing existing package with older version."),(0,r.kt)("li",{parentName:"ul"},"current PCI bus/device information saved in file '/boot/previous/hardware' upon Unraid OS upgrade."),(0,r.kt)("li",{parentName:"ul"},"NFS: enable UPD transport"),(0,r.kt)("li",{parentName:"ul"},"emhttp: fix cache pool (null) syslog strings"),(0,r.kt)("li",{parentName:"ul"},"emhttp: fix cache pool display wrong device size for selected replacement device"),(0,r.kt)("li",{parentName:"ul"},"mover: fix improper handling of symlinks"),(0,r.kt)("li",{parentName:"ul"},"mover: fix mover logging syslog entries format different from previous releases"),(0,r.kt)("li",{parentName:"ul"},"plugin: Display Run command retval in error message"),(0,r.kt)("li",{parentName:"ul"},"shfs: igonore top-level hidden directoris (names beginning with '.')"),(0,r.kt)("li",{parentName:"ul"},"terminal: OpenTerminal: change termination signal (hard stop)"),(0,r.kt)("li",{parentName:"ul"},"upgrade Unraid OS: check for earlier upgrade without reboot"),(0,r.kt)("li",{parentName:"ul"},"webgui: support PHP8, increase PHP max memory from 128M to 256M"),(0,r.kt)("li",{parentName:"ul"},"webgui: ManagementAccess: Disable Provision/Renew/Upgrade buttons when no IP on eth0"),(0,r.kt)("li",{parentName:"ul"},"webgui: ManagementAccess: Support wireguard local IP addresses in combination with myservers.unraid.net SSL cert"),(0,r.kt)("li",{parentName:"ul"},'webgui: Move "view" icon on Main and Shares page to the left'),(0,r.kt)("li",{parentName:"ul"},"webgui: Keep dismissed banners hidden for a month"),(0,r.kt)("li",{parentName:"ul"},'webgui: Dashboard: fix regression error in "select case"'),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: make items moveable between columns"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: API for adding custom tiles"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: rearrange processor information"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: rearrange UPS info"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: rearrange memory info"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: VPN header rearrangement"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: header rearrangements"),(0,r.kt)("li",{parentName:"ul"},"webgui: Add jqueryUI touch punch for mobile devices"),(0,r.kt)("li",{parentName:"ul"},"webgui: Changed ID to CLASS for elements occurring more than once"),(0,r.kt)("li",{parentName:"ul"},"webgui: Make header in white and black themes scrollable",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"When more items are present than screen space, the user can now scroll through them (previously these items were invisible)"))),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard and Docker: introduce lock button for sortable items",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"By default sortable items are locked, which allows mobile devices to scroll the page. Upon request items can be made sortable"))),(0,r.kt)("li",{parentName:"ul"},"webgui: Users: add icon to title bar"),(0,r.kt)("li",{parentName:"ul"},"webgui: Tools: new function -> PHP Settings",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"View PHP info"),(0,r.kt)("li",{parentName:"ul"},"Configure error reporting"),(0,r.kt)("li",{parentName:"ul"},"Open LOG to see errors in real-time"))),(0,r.kt)("li",{parentName:"ul"},"webgui: System info: fix reading inactive ports"),(0,r.kt)("li",{parentName:"ul"},"webgui: Plugin: Include the actual command being executed"),(0,r.kt)("li",{parentName:"ul"},"webgui: System info: cache enhancement"),(0,r.kt)("li",{parentName:"ul"},"webgui: System info: memory enhancement"),(0,r.kt)("li",{parentName:"ul"},"webgui: DeviceInfo: disable buttons when erase operation is running"),(0,r.kt)("li",{parentName:"ul"},"webgui: Docker: filetree corrections"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: fixed show heat alarm per pool"),(0,r.kt)("li",{parentName:"ul"},"webgui: Notifications: revised operation",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Autoclose new notifications after 3 seconds"),(0,r.kt)("li",{parentName:"ul"},"Fix notifications reappearing after closure"))),(0,r.kt)("li",{parentName:"ul"},"webgui: DeviceList: add FS type in offline state"),(0,r.kt)("li",{parentName:"ul"},"webgui: Add notification agent for Bark"),(0,r.kt)("li",{parentName:"ul"},"webgui: Main: hide browse icon when disk is not mounted"),(0,r.kt)("li",{parentName:"ul"},"webgui: Diagnostics: add additional btrfs and zfs info"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: add ZFS memory usage"),(0,r.kt)("li",{parentName:"ul"},"webgui: Revised New Permissions",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Select either disks or shares (not both)"))),(0,r.kt)("li",{parentName:"ul"},"webgui: Add testparm to diagnostics"),(0,r.kt)("li",{parentName:"ul"},"webgui: Support new UD reserved mount point of /mnt/addons"),(0,r.kt)("li",{parentName:"ul"},"webgui: fix issue displaying Attributes when temperature display set to Fahrenheit"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard changes:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"lock the Dashboard completely: Editing/moving only becomes possible when unlocking the page"),(0,r.kt)("li",{parentName:"ul"},"An empty column is refilled when the respective tiles are made visible again, no need to reset everything"),(0,r.kt)("li",{parentName:"ul"},'added a visual "move indicator" on the Docker and VM page, to make clearer that rows can be moved now.'),(0,r.kt)("li",{parentName:"ul"},"change cursor shape when moving is enabled"),(0,r.kt)("li",{parentName:"ul"},"use tile title as index"))),(0,r.kt)("li",{parentName:"ul"},"webgui: fix: Local Firefox account pop-up postmessages not working"),(0,r.kt)("li",{parentName:"ul"},"webgui: SMART test cannot be run on a UD disk because there is no spin down delay selection"),(0,r.kt)("li",{parentName:"ul"},'webgui: status footer stuck on "Starting services" when applying share config setting chagnes.'),(0,r.kt)("li",{parentName:"ul"},"webgui: Fix table layout for orphan images"),(0,r.kt)("li",{parentName:"ul"},"webgui: Plugin: Do not show update button if incompatible"),(0,r.kt)("li",{parentName:"ul"},"webgui: Plugin: Make wget percentage detection more robust"),(0,r.kt)("li",{parentName:"ul"},"webgui: OpenTerminal: limit clients"),(0,r.kt)("li",{parentName:"ul"},"webgui: Context menu: automatic triangle placement"),(0,r.kt)("li",{parentName:"ul"},"webgui: Dashboard: fix pool warnings"),(0,r.kt)("li",{parentName:"ul"},"webgui: Allow SMART long test for UD"),(0,r.kt)("li",{parentName:"ul"},"webgui: Read processor type from /proc/cpuinfo"),(0,r.kt)("li",{parentName:"ul"},"webgui: CSS: solve scrollbar issue in firefox"),(0,r.kt)("li",{parentName:"ul"},"webgui: Add share: fix hidden share name check"),(0,r.kt)("li",{parentName:"ul"},"webgui: Display settings: add missing defaults"),(0,r.kt)("li",{parentName:"ul"},"webgui: Array Operation: prevent double clicking of Start button"),(0,r.kt)("li",{parentName:"ul"},"webgui: DeviceInfo: show shareFloor with units"),(0,r.kt)("li",{parentName:"ul"},"webgui: DeviceInfo: added automatic floor calculation"),(0,r.kt)("li",{parentName:"ul"},"webgui: Added autosize message"),(0,r.kt)("li",{parentName:"ul"},"webgui: Shares: added info icon"),(0,r.kt)("li",{parentName:"ul"},"webgui: Updated DeviceInfo and Shares page"),(0,r.kt)("li",{parentName:"ul"},"webgui: Fix network display aberration."),(0,r.kt)("li",{parentName:"ul"},"webgui: Auto fill-in minimum free space for new shares"),(0,r.kt)("li",{parentName:"ul"},"webgui: feat(upc): update to v3 for connect"),(0,r.kt)("li",{parentName:"ul"},"webgui: Share/Pool size calculation: show and allow percentage values"),(0,r.kt)("li",{parentName:"ul"},"wireguard: add SSL support for WG tunnel IP addresses (myunraid.net wildcard certs only)"),(0,r.kt)("li",{parentName:"ul"},"wireguard: fix nginx issue when partial WireGuard config")),(0,r.kt)("h3",{id:"release-bz-file-differences"},"Release ",(0,r.kt)("em",{parentName:"h3"},"bz")," file differences"),(0,r.kt)("p",null,"Unraid OS is comprised of a set of 5 so-called ",(0,r.kt)("em",{parentName:"p"},"bz")," files in the root of the\nUSB Flash boot device:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"bzimage - the Linux kernel"),(0,r.kt)("li",{parentName:"ul"},"bzroot - the root file system, sans console desktop"),(0,r.kt)("li",{parentName:"ul"},"bzroot-gui - additional files needed for console desktop"),(0,r.kt)("li",{parentName:"ul"},"bzmodules - modules (drivers) associated with the Linux kernel"),(0,r.kt)("li",{parentName:"ul"},"bzfirmware - device firmware required by certain modules")),(0,r.kt)("p",null,"Starting with 6.12 release, the content of these files has been rearranged:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"bzimage - the Linux kernel (same as before)"),(0,r.kt)("li",{parentName:"ul"},"bzroot - the root file system excluding the /usr directory tree"),(0,r.kt)("li",{parentName:"ul"},"bzroot-gui - a single file which auto-starts the console desktop (for compatibility)"),(0,r.kt)("li",{parentName:"ul"},"bzmodules - modules (drivers) associated with the Linux kernel and device firmware required by certain modules"),(0,r.kt)("li",{parentName:"ul"},"bzfirmware - the /usr directory and all files contained therein, including console desktop")),(0,r.kt)("p",null,'These changes speed up the boot process and free up nearly 1G of RAM. It also permits\nus to add more "stuff" to Unraid OS in the future without requiring more RAM. Finally, when booted in ',(0,r.kt)("strong",{parentName:"p"},"non-GUI")," mode,\nthe desktop can be started by logging in at the console and typig the 'slim' command."),(0,r.kt)("h4",{id:"manual-update"},"Manual update"),(0,r.kt)("p",null,"Manual update refers to updating Unraid OS on your USB flash boot device without using the ",(0,r.kt)("strong",{parentName:"p"},"Tools/Update OS")," function.\nTypically one would either:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"open a Terminal window, wget the release zip file, unzip the release, and then 'cp' the ",(0,r.kt)("em",{parentName:"li"},"bz")," files to root of the boot device.")),(0,r.kt)("p",null,"or"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"export the 'flash' share on your network and drag the ",(0,r.kt)("em",{parentName:"li"},"bz")," files from a PC directly to the flash.")),(0,r.kt)("p",null,"Either method, starting with 6.12 ",(0,r.kt)("strong",{parentName:"p"},"can fail")," because the ",(0,r.kt)("em",{parentName:"p"},"bzfirmware")," file will be overwritten while it is\nstill mounted - not good."),(0,r.kt)("p",null,"To get around this, you must first create a temp directory on the flash device and then 'mv' (or drag)\nall the existing ",(0,r.kt)("em",{parentName:"p"},"bz")," files into this temp directory. Now you can copy the new ",(0,r.kt)("em",{parentName:"p"},"bz")," files to the root of\nthe flash device and reboot."),(0,r.kt)("h2",{id:"linux-kernel"},"Linux kernel"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"version 6.1.33"),(0,r.kt)("li",{parentName:"ul"},"md/unraid: version 2.9.27"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_FS_DAX: File system based Direct Access (DAX) support"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_VIRTIO_FS: Virtio Filesystem"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_ZONE_DEVICE: Device memory (pmem, HMM, etc...) hotplug support"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_USBIP_HOST: Host driver"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_INTEL_MEI: Intel Management Engine Interface"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_INTEL_MEI_ME: ME Enabled Intel Chipsets"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_INTEL_MEI_GSC: Intel MEI GSC embedded device"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_INTEL_MEI_PXP: Intel PXP services of ME Interface"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_INTEL_MEI_HDCP: Intel HDCP2.2 services of ME Interface"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_INTEL_PMC_CORE: Intel PMC Core driver"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_DRM_I915_PXP: Enable Intel PXP support"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_SCSI_FC_ATTRS: FiberChannel Transport Attributes"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_FUSION_SPI: Fusion MPT ScsiHost drivers for SPI"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_FUSION_FC: Fusion MPT ScsiHost drivers for FC"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_FUSION_CTL: Fusion MPT misc device (ioctl) driver"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_FUSION_LOGGING: Fusion MPT logging facility"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_X86_AMD_PSTATE: AMD Processor P-State driver"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_LRU_GEN: Multi-Gen LRU"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_SERIAL_8250_NR_UARTS=32: Maximum number of 8250/16550 serial ports"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_SERIAL_8250_RUNTIME_UARTS=4: Number of 8250/16550 serial ports to register at runtime"),(0,r.kt)("li",{parentName:"ul"},"CONFIG_FANOTIFY: Filesystem wide access notification")),(0,r.kt)("h2",{id:"base-distro-updates"},"Base Distro updates"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"aaa_glibc-solibs: version 2.37"),(0,r.kt)("li",{parentName:"ul"},"adwaita-icon-theme: version 43"),(0,r.kt)("li",{parentName:"ul"},"at-spi2-core: version 2.46.0"),(0,r.kt)("li",{parentName:"ul"},"bash: version 5.2.015"),(0,r.kt)("li",{parentName:"ul"},"bash_completion: version 2.11"),(0,r.kt)("li",{parentName:"ul"},"bind: version 9.18.12"),(0,r.kt)("li",{parentName:"ul"},"btrfs-progs: version 6.2.1"),(0,r.kt)("li",{parentName:"ul"},"ca-certificates: version 20221205"),(0,r.kt)("li",{parentName:"ul"},"cryptsetup: version 2.6.1"),(0,r.kt)("li",{parentName:"ul"},"curl: version 7.88.1"),(0,r.kt)("li",{parentName:"ul"},"dbus: version 1.14.6"),(0,r.kt)("li",{parentName:"ul"},"diffutils: version 3.9"),(0,r.kt)("li",{parentName:"ul"},"dnsmasq: version 2.89"),(0,r.kt)("li",{parentName:"ul"},"docker: version 23.0.6"),(0,r.kt)("li",{parentName:"ul"},"e2fsprogs: version 1.47.0"),(0,r.kt)("li",{parentName:"ul"},"encodings: version 1.0.7"),(0,r.kt)("li",{parentName:"ul"},"file: version 5.44"),(0,r.kt)("li",{parentName:"ul"},"firefox: version 111.0 (AppImage)"),(0,r.kt)("li",{parentName:"ul"},"freetype: version 2.13.0"),(0,r.kt)("li",{parentName:"ul"},"fuse3: version 3.12.0"),(0,r.kt)("li",{parentName:"ul"},"gawk: version 5.2.1"),(0,r.kt)("li",{parentName:"ul"},"git: version 2.39.2"),(0,r.kt)("li",{parentName:"ul"},"glib2: version 2.74.6"),(0,r.kt)("li",{parentName:"ul"},"glibc: version 2.37"),(0,r.kt)("li",{parentName:"ul"},"glibc-zoneinfo: version 2022g"),(0,r.kt)("li",{parentName:"ul"},"gnutls: version 3.7.9"),(0,r.kt)("li",{parentName:"ul"},"gptfdisk: version 1.0.9"),(0,r.kt)("li",{parentName:"ul"},"gtk+3: version 3.24.37"),(0,r.kt)("li",{parentName:"ul"},"harfbuzz: version 7.1.0"),(0,r.kt)("li",{parentName:"ul"},"htop: version 3.2.2"),(0,r.kt)("li",{parentName:"ul"},"iproute2: version 6.2.0"),(0,r.kt)("li",{parentName:"ul"},"iptables: version 1.8.9"),(0,r.kt)("li",{parentName:"ul"},"iputils: version 20221126"),(0,r.kt)("li",{parentName:"ul"},"kernel-firmware: 20230531_fc90c59"),(0,r.kt)("li",{parentName:"ul"},"less: version 612"),(0,r.kt)("li",{parentName:"ul"},"libICE: version 1.1.1"),(0,r.kt)("li",{parentName:"ul"},"libSM: version 1.2.4"),(0,r.kt)("li",{parentName:"ul"},"libX11: version 1.8.4"),(0,r.kt)("li",{parentName:"ul"},"libXau: version 1.0.11"),(0,r.kt)("li",{parentName:"ul"},"libXcomposite: version 0.4.6"),(0,r.kt)("li",{parentName:"ul"},"libXdamage: version 1.1.6"),(0,r.kt)("li",{parentName:"ul"},"libXdmcp: version 1.1.4"),(0,r.kt)("li",{parentName:"ul"},"libXpm: version 3.5.15"),(0,r.kt)("li",{parentName:"ul"},"libXrandr: version 1.5.3"),(0,r.kt)("li",{parentName:"ul"},"libXres: version 1.2.2"),(0,r.kt)("li",{parentName:"ul"},"libXxf86dga: version 1.1.6"),(0,r.kt)("li",{parentName:"ul"},"libarchive: version 3.6.2"),(0,r.kt)("li",{parentName:"ul"},"libdrm: version 2.4.115"),(0,r.kt)("li",{parentName:"ul"},"libfontenc: version 1.1.7"),(0,r.kt)("li",{parentName:"ul"},"libglvnd: version 1.6.0"),(0,r.kt)("li",{parentName:"ul"},"libjpeg-turbo: version 2.1.5.1"),(0,r.kt)("li",{parentName:"ul"},"libpcap: version 1.10.3"),(0,r.kt)("li",{parentName:"ul"},"libpng: version 1.6.39"),(0,r.kt)("li",{parentName:"ul"},"libpsl: version 0.21.2"),(0,r.kt)("li",{parentName:"ul"},"liburcu: version 0.14.0"),(0,r.kt)("li",{parentName:"ul"},"libwebp: version 1.3.0"),(0,r.kt)("li",{parentName:"ul"},"libxkbcommon: version 1.5.0"),(0,r.kt)("li",{parentName:"ul"},"libxkbfile: version 1.1.2"),(0,r.kt)("li",{parentName:"ul"},"libxshmfence: version 1.3.2"),(0,r.kt)("li",{parentName:"ul"},"lmdb: version 0.9.30"),(0,r.kt)("li",{parentName:"ul"},"logrotate: version 3.21.0"),(0,r.kt)("li",{parentName:"ul"},"lsof: version 4.98.0"),(0,r.kt)("li",{parentName:"ul"},"lz4: version 1.9.4"),(0,r.kt)("li",{parentName:"ul"},"lzlib: version 1.13"),(0,r.kt)("li",{parentName:"ul"},"mc: version 4.8.29"),(0,r.kt)("li",{parentName:"ul"},"mcelog: version 191"),(0,r.kt)("li",{parentName:"ul"},"mpfr: version 4.2.0"),(0,r.kt)("li",{parentName:"ul"},"nano: version 7.2"),(0,r.kt)("li",{parentName:"ul"},"ncurses: version 6.4"),(0,r.kt)("li",{parentName:"ul"},"nginx: version 1.23.3"),(0,r.kt)("li",{parentName:"ul"},"nghttp2: version 1.52.0"),(0,r.kt)("li",{parentName:"ul"},"openssh: version 9.2p1"),(0,r.kt)("li",{parentName:"ul"},"openssl: version 1.1.1t"),(0,r.kt)("li",{parentName:"ul"},"openssl-solibs: version 1.1.1t"),(0,r.kt)("li",{parentName:"ul"},"openzfs: version 2.1.12"),(0,r.kt)("li",{parentName:"ul"},"pango: version 1.50.14"),(0,r.kt)("li",{parentName:"ul"},"pciutils: version 3.9.0"),(0,r.kt)("li",{parentName:"ul"},"pcre2: version 10.42"),(0,r.kt)("li",{parentName:"ul"},"php: version 8.2.4"),(0,r.kt)("li",{parentName:"ul"},"php-libvirt: version 0.5.7"),(0,r.kt)("li",{parentName:"ul"},"php-markdown: version 2.0.0"),(0,r.kt)("li",{parentName:"ul"},"samba: version 4.17.7"),(0,r.kt)("li",{parentName:"ul"},"sqlite: version 3.41.0"),(0,r.kt)("li",{parentName:"ul"},"sudo: version 1.9.13p2"),(0,r.kt)("li",{parentName:"ul"},"sysstat: version 12.7.2"),(0,r.kt)("li",{parentName:"ul"},"tdb: version 1.4.8"),(0,r.kt)("li",{parentName:"ul"},"tevent: version 0.14.1"),(0,r.kt)("li",{parentName:"ul"},"traceroute: version 2.1.2"),(0,r.kt)("li",{parentName:"ul"},"transset: version 1.0.3"),(0,r.kt)("li",{parentName:"ul"},"tree: version 2.1.0"),(0,r.kt)("li",{parentName:"ul"},"usbutils: version 015"),(0,r.kt)("li",{parentName:"ul"},"xcb-util: version 0.4.1"),(0,r.kt)("li",{parentName:"ul"},"xdriinfo: version 1.0.7"),(0,r.kt)("li",{parentName:"ul"},"xf86-video-vesa: version 2.6.0"),(0,r.kt)("li",{parentName:"ul"},"xfsprogs: version 6.1.1"),(0,r.kt)("li",{parentName:"ul"},"xhost: version 1.0.9"),(0,r.kt)("li",{parentName:"ul"},"xinit: version 1.4.2"),(0,r.kt)("li",{parentName:"ul"},"xkbcomp: version 1.4.6"),(0,r.kt)("li",{parentName:"ul"},"xkeyboard-config: version 2.38"),(0,r.kt)("li",{parentName:"ul"},"xorg-server: version 21.1.7"),(0,r.kt)("li",{parentName:"ul"},"xprop: version 1.2.6"),(0,r.kt)("li",{parentName:"ul"},"xrandr: version 1.5.2"),(0,r.kt)("li",{parentName:"ul"},"xset: version 1.2.5"),(0,r.kt)("li",{parentName:"ul"},"xterm: version 379"),(0,r.kt)("li",{parentName:"ul"},"xz: version 5.4.1"),(0,r.kt)("li",{parentName:"ul"},"zstd: version 1.5.4")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.508d7eec.js b/assets/js/main.508d7eec.js new file mode 100644 index 000000000..0cf5f7d0b --- /dev/null +++ b/assets/js/main.508d7eec.js @@ -0,0 +1,2 @@ +/*! For license information please see main.508d7eec.js.LICENSE.txt */ +(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[179],{830:(e,t,n)=>{"use strict";n.d(t,{W:()=>a});var r=n(7294);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},4334:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(7462),o=n(8356),i=n.n(o),l=n(6887);const s={"036bad42":[()=>n.e(5078).then(n.bind(n,85)),"@site/docs/legacy/FAQ/setup-sleep-and-wake-on-lan.md",85],"039cd775":[()=>n.e(9114).then(n.bind(n,9798)),"@site/docs/legacy/FAQ/check-harddrive-speed.md",9798],"06988216":[()=>n.e(322).then(n.bind(n,6873)),"@site/docs/unraid-os/release-notes/6.9.0.md",6873],"06cd2fd6":[()=>n.e(6279).then(n.bind(n,7067)),"@site/docs/contribute-to-docs/tutorial-basics/congratulations.md",7067],"096fb135":[()=>n.e(6299).then(n.bind(n,6798)),"@site/docs/unraid-os/release-notes/6.11.0.md",6798],"0993abe5":[()=>n.e(9554).then(n.bind(n,4887)),"@site/docs/contribute-to-docs/tutorial-extras/manage-docs-versions.md",4887],"0a18b2d8":[()=>n.e(1377).then(n.bind(n,9618)),"@site/docs/unraid-os/guides/wol-setup-for-unraid.md",9618],"0a1bdeaa":[()=>n.e(967).then(n.bind(n,3940)),"@site/docs/unraid-os/manual/security/secure-webgui-ssl.md",3940],"0ba4e87b":[()=>n.e(8868).then(n.bind(n,3845)),"@site/docs/unraid-os/release-notes/6.12.2.md",3845],"0ca4c500":[()=>n.e(4618).then(n.bind(n,4893)),"@site/docs/unraid-os/manual/changing-the-flash-device.md",4893],"0d582783":[()=>n.e(2410).then(n.t.bind(n,5752,19)),"~docs/default/category-unraidsidebar-category-getting-started-a72.json",5752],"104dd0b4":[()=>n.e(4262).then(n.bind(n,4505)),"@site/docs/unraid-os/manual/troubleshooting.md",4505],"10869db1":[()=>n.e(3563).then(n.bind(n,2127)),"@site/docs/unraid-os/manual/security/flash-drive.md",2127],"14087e5e":[()=>n.e(2263).then(n.t.bind(n,183,19)),"~docs/default/category-unraidsidebar-category-faq-290.json",183],"14eb3368":[()=>Promise.all([n.e(532),n.e(9817)]).then(n.bind(n,853)),"@theme/DocCategoryGeneratedIndexPage",853],17896441:[()=>Promise.all([n.e(532),n.e(7918)]).then(n.bind(n,9711)),"@theme/DocItem",9711],"18ade0c5":[()=>n.e(53).then(n.bind(n,5691)),"@site/docs/unraid-os/manual/getting-started/manual-install-method.md",5691],"1942e1e1":[()=>n.e(1317).then(n.bind(n,6932)),"@site/docs/unraid-os/manual/additional-settings.md",6932],"1a4e3797":[()=>Promise.all([n.e(532),n.e(7920)]).then(n.bind(n,1065)),"@theme/SearchPage",1065],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,1299)),"@theme/DocPage",1299],"1c36a847":[()=>n.e(5289).then(n.bind(n,7732)),"@site/docs/unraid-os/manual/security/vpn.md",7732],"216240fb":[()=>n.e(3444).then(n.t.bind(n,171,19)),"~docs/default/category-unraidsidebar-category-zfs-f45.json",171],"247783bb":[()=>n.e(9334).then(n.t.bind(n,3769,19)),"/home/runner/work/docs/docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"26113f5d":[()=>n.e(4813).then(n.bind(n,6844)),"@site/docs/unraid-os/faq/licensing-faq.md",6844],"277cf690":[()=>n.e(9821).then(n.bind(n,3593)),"@site/docs/unraid-os/manual/security/security.md",3593],"2dd62328":[()=>n.e(8145).then(n.bind(n,817)),"@site/docs/legacy/FAQ/console.md",817],"313b9001":[()=>n.e(559).then(n.bind(n,3283)),"@site/docs/unraid-os/manual/security/good-practices.md",3283],"38a408e2":[()=>n.e(6594).then(n.t.bind(n,9586,19)),"~docs/default/category-unraidsidebar-category-tutorial-extras-da0.json",9586],"38c3fa26":[()=>n.e(4077).then(n.bind(n,2256)),"@site/docs/legacy/FAQ/transferring-files-within-the-unraid-server.md",2256],"39304afb":[()=>n.e(8298).then(n.bind(n,8372)),"@site/docs/legacy/Articles/upgrading-to-unraid-6.md",8372],"3d3d1f9d":[()=>n.e(6461).then(n.bind(n,7242)),"@site/docs/unraid-os/manual/vm-management.md",7242],40147886:[()=>n.e(9185).then(n.bind(n,6860)),"@site/docs/unraid-os/manual/users.md",6860],"49332cbb":[()=>n.e(1698).then(n.bind(n,7930)),"@site/docs/unraid-os/release-notes/6.9.1.md",7930],"49ecab1a":[()=>n.e(3011).then(n.bind(n,916)),"@site/docs/unraid-os/release-notes/6.12.4.md",916],"4caccc33":[()=>n.e(3967).then(n.bind(n,9749)),"@site/docs/unraid-os/manual/docker-management.md",9749],"5034631f":[()=>n.e(7054).then(n.bind(n,1309)),"@site/docs/legacy/FAQ/check-disk-filesystems.md",1309],"54219b20":[()=>n.e(5236).then(n.bind(n,3950)),"@site/docs/unraid-os/release-notes/6.10.3.md",3950],"54f4a7b0":[()=>n.e(2926).then(n.bind(n,4874)),"@site/docs/legacy/FAQ/Parity.md",4874],"54fe4512":[()=>n.e(2269).then(n.bind(n,6959)),"@site/docs/connect/help.md",6959],"55054ac6":[()=>n.e(7537).then(n.bind(n,8836)),"@site/docs/unraid-os/manual/storage-management.md",8836],"5565d3f9":[()=>n.e(496).then(n.bind(n,7761)),"@site/docs/unraid-os/faq/unraid-account.md",7761],"59b068d1":[()=>n.e(6385).then(n.t.bind(n,7085,19)),"/home/runner/work/docs/docs/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",7085],"5df36282":[()=>n.e(1791).then(n.bind(n,9924)),"@site/docs/unraid-os/manual/zfs/placeholder.md",9924],"5f60a020":[()=>n.e(4863).then(n.bind(n,6260)),"@site/docs/unraid-os/manual/shares/disk-shares.md",6260],"6618ba01":[()=>n.e(563).then(n.bind(n,5846)),"@site/docs/legacy/FAQ/setting-up-cpu-and-board-temperature-sensing.md",5846],"67a4e8b6":[()=>n.e(3203).then(n.bind(n,5851)),"@site/docs/legacy/FAQ/transferring-files-from-a-network-share-to-unraid.md",5851],"6937eda1":[()=>n.e(3923).then(n.bind(n,690)),"@site/docs/contribute-to-docs/tutorial-basics/create-a-page.md",690],"69f90a2c":[()=>n.e(6305).then(n.bind(n,9747)),"@site/docs/legacy/Articles/expanding-windows-vm-vdisk-partitions.md",9747],"6ab841ae":[()=>n.e(3009).then(n.t.bind(n,6466,19)),"~docs/default/category-unraidsidebar-category-legacy-documentation-79f.json",6466],"6b42df2b":[()=>n.e(7044).then(n.bind(n,3966)),"@site/docs/unraid-os/manual/multi-language.md",3966],"6b97f0f9":[()=>n.e(4472).then(n.bind(n,6563)),"@site/docs/unraid-os/release-notes/6.11.1.md",6563],"6e6b2999":[()=>n.e(3659).then(n.bind(n,3943)),"@site/docs/unraid-os/release-notes/6.9.2.md",3943],"6e7e0dfd":[()=>n.e(2121).then(n.bind(n,6354)),"@site/docs/docs-home.md",6354],"71791e0b":[()=>n.e(2338).then(n.t.bind(n,8773,19)),"~docs/default/category-unraidsidebar-category-release-notes-e00.json",8773],"73c1707a":[()=>n.e(7317).then(n.bind(n,9026)),"@site/docs/contribute-to-docs/tutorial-basics/create-a-document.md",9026],"74287a25":[()=>n.e(8078).then(n.bind(n,8615)),"@site/docs/legacy/FAQ/replacing-a-data-drive.md",8615],"7436a388":[()=>n.e(4710).then(n.bind(n,5245)),"@site/docs/unraid-os/manual/upgrade-instructions.md",5245],"79722de7":[()=>n.e(9725).then(n.bind(n,3543)),"@site/docs/legacy/FAQ/usb-flash-drive-preparation.md",3543],"798531cc":[()=>n.e(7748).then(n.bind(n,6238)),"@site/docs/unraid-os/release-notes/6.10.0.md",6238],"7a2d53ea":[()=>n.e(5833).then(n.bind(n,8542)),"@site/docs/unraid-os/release-notes/6.12.3.md",8542],"7b378cd1":[()=>n.e(1367).then(n.bind(n,6582)),"@site/docs/unraid-os/manual/applications.md",6582],"7c081f1b":[()=>n.e(5069).then(n.bind(n,634)),"@site/docs/unraid-os/manual/tools.md",634],"81b28c9f":[()=>n.e(6617).then(n.bind(n,9582)),"@site/docs/unraid-os/faq/os-faq.md",9582],"81e75708":[()=>n.e(3229).then(n.t.bind(n,7963,19)),"~docs/default/category-unraidsidebar-category-tutorial-basics-86a.json",7963],"88941ca4":[()=>n.e(9401).then(n.bind(n,8339)),"@site/docs/unraid-os/manual/vm-support.md",8339],"88a1b883":[()=>n.e(1036).then(n.bind(n,7421)),"@site/docs/legacy/FAQ/cache-disk.md",7421],"8944547a":[()=>Promise.all([n.e(532),n.e(5450)]).then(n.bind(n,3135)),"@site/docs/unraid-os/manual/shares/user-shares.md",3135],"8a89048a":[()=>n.e(1770).then(n.bind(n,8829)),"@site/docs/unraid-os/manual/shares/create-a-share.md",8829],"935f2afb":[()=>n.e(2197).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"989b789d":[()=>n.e(9846).then(n.t.bind(n,7591,19)),"~docs/default/category-unraidsidebar-category-manual-456.json",7591],"98a2ad9f":[()=>n.e(4579).then(n.bind(n,7804)),"@site/docs/unraid-os/release-notes/6.12.1.md",7804],"9aea375b":[()=>n.e(3838).then(n.t.bind(n,8952,19)),"~docs/default/category-unraidsidebar-category-contribute-3d7.json",8952],"9c8e01a5":[()=>n.e(4399).then(n.bind(n,2255)),"@site/docs/contribute-to-docs/intro.md",2255],"9d093beb":[()=>n.e(7124).then(n.bind(n,847)),"@site/docs/legacy/FAQ/shrink-array.md",847],"9d23aec8":[()=>n.e(1754).then(n.bind(n,6419)),"@site/docs/unraid-os/manual/shares/delete-a-share.md",6419],"9fa2d074":[()=>n.e(7645).then(n.t.bind(n,7726,19)),"~docs/default/category-unraidsidebar-category-guides-a9f.json",7726],a0c90937:[()=>n.e(5275).then(n.bind(n,4306)),"@site/docs/unraid-os/release-notes/6.11.2.md",4306],a2cf01cc:[()=>n.e(6014).then(n.t.bind(n,5212,19)),"~docs/default/category-unraidsidebar-category-unraid-os-e8f.json",5212],a3ef1cf6:[()=>n.e(1868).then(n.t.bind(n,6318,19)),"~docs/default/category-unraidsidebar-category-unraid-connect-93f.json",6318],ae93aaeb:[()=>n.e(7415).then(n.bind(n,9561)),"@site/docs/unraid-os/release-notes/6.11.5.md",9561],aed38285:[()=>n.e(1932).then(n.bind(n,3976)),"@site/docs/unraid-os/manual/shares/shares.md",3976],b13723e0:[()=>n.e(4567).then(n.bind(n,678)),"@site/docs/unraid-os/manual/getting-started/getting-started.md",678],b3a9d7ab:[()=>n.e(909).then(n.bind(n,2763)),"@site/docs/unraid-os/release-notes/6.10.1.md",2763],ba2ffba3:[()=>n.e(4321).then(n.bind(n,5510)),"@site/docs/connect/remote-access.md",5510],bd5544b1:[()=>n.e(335).then(n.bind(n,5575)),"@site/docs/connect/about.md",5575],c5b893f4:[()=>n.e(7603).then(n.bind(n,7670)),"@site/docs/legacy/Articles/dual-boot-unraid-and-windows.md",7670],c8335b6e:[()=>n.e(347).then(n.bind(n,963)),"@site/docs/unraid-os/release-notes/6.11.4.md",963],caa9baff:[()=>n.e(5832).then(n.bind(n,4320)),"@site/docs/unraid-os/release-notes/6.10.2.md",4320],d31ea43a:[()=>n.e(8882).then(n.bind(n,81)),"@site/docs/unraid-os/release-notes/6.11.3.md",81],d441ea6d:[()=>n.e(879).then(n.bind(n,1075)),"@site/docs/legacy/FAQ/replacing-multiple-data-drives.md",1075],dec1eefe:[()=>n.e(6596).then(n.bind(n,1809)),"@site/docs/legacy/FAQ/understanding-smart-reports.md",1809],e1256ee6:[()=>n.e(8925).then(n.bind(n,1548)),"@site/docs/unraid-os/release-notes/6.12.0.md",1548],e624f8a6:[()=>n.e(9347).then(n.bind(n,4621)),"@site/docs/legacy/FAQ/terminal-access.md",4621],e62fd64a:[()=>n.e(7570).then(n.bind(n,3072)),"@site/docs/contribute-to-docs/tutorial-basics/create-a-blog-post.md",3072],e8c37b9f:[()=>n.e(7436).then(n.bind(n,1779)),"@site/docs/unraid-os/faq/redeem-license-activation-code.md",1779],f0844d9f:[()=>n.e(2697).then(n.bind(n,3630)),"@site/docs/unraid-os/manual/what-is-unraid.md",3630],f2577e9f:[()=>n.e(8894).then(n.bind(n,3808)),"@site/docs/legacy/FAQ/parity-swap-procedure.md",3808],f568d666:[()=>n.e(4149).then(n.bind(n,5317)),"@site/docs/contribute-to-docs/tutorial-extras/translate-your-site.md",5317],f7b0b541:[()=>n.e(2454).then(n.bind(n,7088)),"@site/docs/unraid-os/manual/shares/network-access.md",7088],f9ab548b:[()=>n.e(4622).then(n.bind(n,9304)),"@site/docs/unraid-os/guides/configuring-time-machine.md",9304],fd47d4b7:[()=>n.e(4688).then(n.bind(n,7219)),"@site/docs/contribute-to-docs/tutorial-basics/markdown-features.mdx",7219],fee3ac30:[()=>n.e(7328).then(n.bind(n,8330)),"@site/docs/unraid-os/manual/security/data-encryption.md",8330]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(5304),d=n(9656);function f(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(4248).then(n.bind(n,4248)),modules:["@theme/NotFound"],webpack:()=>[4248],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],f={},p=[],m=[],h=(0,c.Z)(o);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),m.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const p=[{path:"/search/",component:f("/search/","db4"),exact:!0},{path:"/",component:f("/","a19"),routes:[{path:"/",component:f("/","3fb"),exact:!0,sidebar:"unraidSidebar"},{path:"/category/contribute/",component:f("/category/contribute/","92d"),exact:!0,sidebar:"unraidSidebar"},{path:"/category/faq/",component:f("/category/faq/","7e2"),exact:!0,sidebar:"unraidSidebar"},{path:"/category/getting-started/",component:f("/category/getting-started/","d9e"),exact:!0,sidebar:"unraidSidebar"},{path:"/category/guides/",component:f("/category/guides/","d00"),exact:!0,sidebar:"unraidSidebar"},{path:"/category/legacy-documentation/",component:f("/category/legacy-documentation/","012"),exact:!0,sidebar:"unraidSidebar"},{path:"/category/manual/",component:f("/category/manual/","93f"),exact:!0,sidebar:"unraidSidebar"},{path:"/category/release-notes/",component:f("/category/release-notes/","eed"),exact:!0,sidebar:"unraidSidebar"},{path:"/category/tutorial---basics/",component:f("/category/tutorial---basics/","734"),exact:!0,sidebar:"unraidSidebar"},{path:"/category/tutorial---extras/",component:f("/category/tutorial---extras/","0c6"),exact:!0,sidebar:"unraidSidebar"},{path:"/category/unraid-connect/",component:f("/category/unraid-connect/","f8e"),exact:!0,sidebar:"unraidSidebar"},{path:"/category/unraid-os/",component:f("/category/unraid-os/","268"),exact:!0,sidebar:"unraidSidebar"},{path:"/category/zfs/",component:f("/category/zfs/","ebc"),exact:!0,sidebar:"unraidSidebar"},{path:"/connect/about/",component:f("/connect/about/","060"),exact:!0,sidebar:"unraidSidebar"},{path:"/connect/help/",component:f("/connect/help/","741"),exact:!0,sidebar:"unraidSidebar"},{path:"/connect/remote-access/",component:f("/connect/remote-access/","eb4"),exact:!0,sidebar:"unraidSidebar"},{path:"/contribute-to-docs/intro/",component:f("/contribute-to-docs/intro/","7ef"),exact:!0,sidebar:"unraidSidebar"},{path:"/contribute-to-docs/tutorial-basics/congratulations/",component:f("/contribute-to-docs/tutorial-basics/congratulations/","0da"),exact:!0,sidebar:"unraidSidebar"},{path:"/contribute-to-docs/tutorial-basics/create-a-blog-post/",component:f("/contribute-to-docs/tutorial-basics/create-a-blog-post/","cab"),exact:!0,sidebar:"unraidSidebar"},{path:"/contribute-to-docs/tutorial-basics/create-a-document/",component:f("/contribute-to-docs/tutorial-basics/create-a-document/","461"),exact:!0,sidebar:"unraidSidebar"},{path:"/contribute-to-docs/tutorial-basics/create-a-page/",component:f("/contribute-to-docs/tutorial-basics/create-a-page/","415"),exact:!0,sidebar:"unraidSidebar"},{path:"/contribute-to-docs/tutorial-basics/markdown-features/",component:f("/contribute-to-docs/tutorial-basics/markdown-features/","053"),exact:!0,sidebar:"unraidSidebar"},{path:"/contribute-to-docs/tutorial-extras/manage-docs-versions/",component:f("/contribute-to-docs/tutorial-extras/manage-docs-versions/","72f"),exact:!0,sidebar:"unraidSidebar"},{path:"/contribute-to-docs/tutorial-extras/translate-your-site/",component:f("/contribute-to-docs/tutorial-extras/translate-your-site/","200"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/Articles/dual-boot-unraid-and-windows/",component:f("/legacy/Articles/dual-boot-unraid-and-windows/","69c"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/Articles/expanding-windows-vm-vdisk-partitions/",component:f("/legacy/Articles/expanding-windows-vm-vdisk-partitions/","84f"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/Articles/upgrading-to-unraid-6/",component:f("/legacy/Articles/upgrading-to-unraid-6/","376"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/cache-disk/",component:f("/legacy/FAQ/cache-disk/","739"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/check-disk-filesystems/",component:f("/legacy/FAQ/check-disk-filesystems/","087"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/check-harddrive-speed/",component:f("/legacy/FAQ/check-harddrive-speed/","448"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/console/",component:f("/legacy/FAQ/console/","7e8"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/parity-swap-procedure/",component:f("/legacy/FAQ/parity-swap-procedure/","e1a"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/Parity/",component:f("/legacy/FAQ/Parity/","168"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/replacing-a-data-drive/",component:f("/legacy/FAQ/replacing-a-data-drive/","e1c"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/replacing-multiple-data-drives/",component:f("/legacy/FAQ/replacing-multiple-data-drives/","117"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/setting-up-cpu-and-board-temperature-sensing/",component:f("/legacy/FAQ/setting-up-cpu-and-board-temperature-sensing/","824"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/setup-sleep-and-wake-on-lan/",component:f("/legacy/FAQ/setup-sleep-and-wake-on-lan/","39b"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/shrink-array/",component:f("/legacy/FAQ/shrink-array/","514"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/terminal-access/",component:f("/legacy/FAQ/terminal-access/","365"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/transferring-files-from-a-network-share-to-unraid/",component:f("/legacy/FAQ/transferring-files-from-a-network-share-to-unraid/","998"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/transferring-files-within-the-unraid-server/",component:f("/legacy/FAQ/transferring-files-within-the-unraid-server/","e0a"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/understanding-smart-reports/",component:f("/legacy/FAQ/understanding-smart-reports/","f98"),exact:!0,sidebar:"unraidSidebar"},{path:"/legacy/FAQ/usb-flash-drive-preparation/",component:f("/legacy/FAQ/usb-flash-drive-preparation/","d87"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/faq/licensing-faq/",component:f("/unraid-os/faq/licensing-faq/","5d9"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/faq/os-faq/",component:f("/unraid-os/faq/os-faq/","d5d"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/faq/redeem-license-activation-code/",component:f("/unraid-os/faq/redeem-license-activation-code/","115"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/faq/unraid-account/",component:f("/unraid-os/faq/unraid-account/","24e"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/guides/configuring-time-machine/",component:f("/unraid-os/guides/configuring-time-machine/","241"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/guides/wol-setup-for-unraid/",component:f("/unraid-os/guides/wol-setup-for-unraid/","9c0"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/additional-settings/",component:f("/unraid-os/manual/additional-settings/","4d7"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/applications/",component:f("/unraid-os/manual/applications/","e0e"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/changing-the-flash-device/",component:f("/unraid-os/manual/changing-the-flash-device/","296"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/docker-management/",component:f("/unraid-os/manual/docker-management/","b83"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/getting-started/",component:f("/unraid-os/manual/getting-started/","852"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/getting-started/manual-install-method/",component:f("/unraid-os/manual/getting-started/manual-install-method/","dba"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/multi-language/",component:f("/unraid-os/manual/multi-language/","cd3"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/security/",component:f("/unraid-os/manual/security/","1d0"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/security/data-encryption/",component:f("/unraid-os/manual/security/data-encryption/","519"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/security/flash-drive/",component:f("/unraid-os/manual/security/flash-drive/","f44"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/security/good-practices/",component:f("/unraid-os/manual/security/good-practices/","788"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/security/secure-webgui-ssl/",component:f("/unraid-os/manual/security/secure-webgui-ssl/","779"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/security/vpn/",component:f("/unraid-os/manual/security/vpn/","dc3"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/shares/",component:f("/unraid-os/manual/shares/","e82"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/shares/create-a-share/",component:f("/unraid-os/manual/shares/create-a-share/","04f"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/shares/delete-a-share/",component:f("/unraid-os/manual/shares/delete-a-share/","c94"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/shares/disk-shares/",component:f("/unraid-os/manual/shares/disk-shares/","46f"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/shares/network-access/",component:f("/unraid-os/manual/shares/network-access/","495"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/shares/user-shares/",component:f("/unraid-os/manual/shares/user-shares/","3da"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/storage-management/",component:f("/unraid-os/manual/storage-management/","1f3"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/tools/",component:f("/unraid-os/manual/tools/","e57"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/troubleshooting/",component:f("/unraid-os/manual/troubleshooting/","247"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/upgrade-instructions/",component:f("/unraid-os/manual/upgrade-instructions/","956"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/users/",component:f("/unraid-os/manual/users/","98d"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/vm-management/",component:f("/unraid-os/manual/vm-management/","72a"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/vm-support/",component:f("/unraid-os/manual/vm-support/","61d"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/what-is-unraid/",component:f("/unraid-os/manual/what-is-unraid/","3e1"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/manual/zfs/placeholder/",component:f("/unraid-os/manual/zfs/placeholder/","0c3"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.10.0/",component:f("/unraid-os/release-notes/6.10.0/","a8f"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.10.1/",component:f("/unraid-os/release-notes/6.10.1/","ef4"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.10.2/",component:f("/unraid-os/release-notes/6.10.2/","e30"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.10.3/",component:f("/unraid-os/release-notes/6.10.3/","dec"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.11.0/",component:f("/unraid-os/release-notes/6.11.0/","64c"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.11.1/",component:f("/unraid-os/release-notes/6.11.1/","230"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.11.2/",component:f("/unraid-os/release-notes/6.11.2/","66e"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.11.3/",component:f("/unraid-os/release-notes/6.11.3/","284"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.11.4/",component:f("/unraid-os/release-notes/6.11.4/","498"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.11.5/",component:f("/unraid-os/release-notes/6.11.5/","be7"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.12.0/",component:f("/unraid-os/release-notes/6.12.0/","361"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.12.1/",component:f("/unraid-os/release-notes/6.12.1/","2e4"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.12.2/",component:f("/unraid-os/release-notes/6.12.2/","53a"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.12.3/",component:f("/unraid-os/release-notes/6.12.3/","fdf"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.12.4/",component:f("/unraid-os/release-notes/6.12.4/","bb0"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.9.0/",component:f("/unraid-os/release-notes/6.9.0/","2fd"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.9.1/",component:f("/unraid-os/release-notes/6.9.1/","a8d"),exact:!0,sidebar:"unraidSidebar"},{path:"/unraid-os/release-notes/6.9.2/",component:f("/unraid-os/release-notes/6.9.2/","bc2"),exact:!0,sidebar:"unraidSidebar"}]},{path:"*",component:f("*")}]},8121:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},654:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(405),l=n(6136);const s=[n(4313),n(984),n(2251),n(9957),n(6930)];var u=n(997),c=n(6550),d=n(8790);function f(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var p=n(7462),m=n(1514),h=n(9962),g=n(9524),b=n(107),v=n(9488),y=n(626),w=n(8181),k=n(246),S=n(3647);function E(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function x(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),a=function(){const{siteConfig:{url:e}}=(0,h.Z)(),{pathname:t}=(0,c.TH)();return e+(0,g.Z)(t)}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function _(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,b.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(v.d,{image:n}),r.createElement(x,null),r.createElement(E,null),r.createElement(S.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const C=new Map;function T(e){if(C.has(e.pathname))return{...e,pathname:C.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}var A=n(8121),L=n(694);function R(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),R("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function N(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class O extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?R("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=R("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),N(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(P,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const I=O,D="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",F="__docusaurus-base-url-issue-banner-suggestion-container",B="__DOCUSAURUS_INSERT_BASEURL_BANNER";function j(e){return`\nwindow['${B}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${B}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${D}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{window[B]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,j(e))),r.createElement("div",{id:D}))}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(z,null):null}function $(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var q=n(3256);function G(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(q.Z,null,r.createElement(L.M,null,r.createElement(A.t,null,r.createElement(f,null,r.createElement($,null),r.createElement(_,null),r.createElement(U,null),r.createElement(I,{location:T(t)},e)))))}var H=n(6887);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var V=n(5304);const Q=new Set,W=new Set,K=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,Y={prefetch(e){if(!(e=>!K()&&!W.has(e)&&!Q.has(e))(e))return!1;Q.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(H).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,V.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!K()&&!W.has(e))(e)&&(W.add(e),N(e))},X=Object.freeze(Y);if(l.Z.canUseDOM){window.docusaurus=X;const e=a.hydrate;N(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(G,null))),document.getElementById("__docusaurus"))}))}},694:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-google-gtag":{"default":{"trackingID":["G-CZENQ1ZPEH"],"anonymizeIP":true,"id":"default"}},"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/","mainDocId":"docs-home","docs":[{"id":"connect/about","path":"/connect/about","sidebar":"unraidSidebar"},{"id":"connect/help","path":"/connect/help","sidebar":"unraidSidebar"},{"id":"connect/remote-access","path":"/connect/remote-access","sidebar":"unraidSidebar"},{"id":"contribute-to-docs/intro","path":"/contribute-to-docs/intro","sidebar":"unraidSidebar"},{"id":"contribute-to-docs/tutorial-basics/congratulations","path":"/contribute-to-docs/tutorial-basics/congratulations","sidebar":"unraidSidebar"},{"id":"contribute-to-docs/tutorial-basics/create-a-blog-post","path":"/contribute-to-docs/tutorial-basics/create-a-blog-post","sidebar":"unraidSidebar"},{"id":"contribute-to-docs/tutorial-basics/create-a-document","path":"/contribute-to-docs/tutorial-basics/create-a-document","sidebar":"unraidSidebar"},{"id":"contribute-to-docs/tutorial-basics/create-a-page","path":"/contribute-to-docs/tutorial-basics/create-a-page","sidebar":"unraidSidebar"},{"id":"contribute-to-docs/tutorial-basics/markdown-features","path":"/contribute-to-docs/tutorial-basics/markdown-features","sidebar":"unraidSidebar"},{"id":"contribute-to-docs/tutorial-extras/manage-docs-versions","path":"/contribute-to-docs/tutorial-extras/manage-docs-versions","sidebar":"unraidSidebar"},{"id":"contribute-to-docs/tutorial-extras/translate-your-site","path":"/contribute-to-docs/tutorial-extras/translate-your-site","sidebar":"unraidSidebar"},{"id":"docs-home","path":"/","sidebar":"unraidSidebar"},{"id":"legacy/Articles/dual-boot-unraid-and-windows","path":"/legacy/Articles/dual-boot-unraid-and-windows","sidebar":"unraidSidebar"},{"id":"legacy/Articles/expanding-windows-vm-vdisk-partitions","path":"/legacy/Articles/expanding-windows-vm-vdisk-partitions","sidebar":"unraidSidebar"},{"id":"legacy/Articles/upgrading-to-unraid-6","path":"/legacy/Articles/upgrading-to-unraid-6","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/cache-disk","path":"/legacy/FAQ/cache-disk","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/check-disk-filesystems","path":"/legacy/FAQ/check-disk-filesystems","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/check-harddrive-speed","path":"/legacy/FAQ/check-harddrive-speed","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/console","path":"/legacy/FAQ/console","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/Parity","path":"/legacy/FAQ/Parity","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/parity-swap-procedure","path":"/legacy/FAQ/parity-swap-procedure","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/replacing-a-data-drive","path":"/legacy/FAQ/replacing-a-data-drive","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/replacing-multiple-data-drives","path":"/legacy/FAQ/replacing-multiple-data-drives","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/setting-up-cpu-and-board-temperature-sensing","path":"/legacy/FAQ/setting-up-cpu-and-board-temperature-sensing","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/setup-sleep-and-wake-on-lan","path":"/legacy/FAQ/setup-sleep-and-wake-on-lan","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/shrink-array","path":"/legacy/FAQ/shrink-array","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/terminal-access","path":"/legacy/FAQ/terminal-access","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/transferring-files-from-a-network-share-to-unraid","path":"/legacy/FAQ/transferring-files-from-a-network-share-to-unraid","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/transferring-files-within-the-unraid-server","path":"/legacy/FAQ/transferring-files-within-the-unraid-server","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/understanding-smart-reports","path":"/legacy/FAQ/understanding-smart-reports","sidebar":"unraidSidebar"},{"id":"legacy/FAQ/usb-flash-drive-preparation","path":"/legacy/FAQ/usb-flash-drive-preparation","sidebar":"unraidSidebar"},{"id":"unraid-os/faq/licensing-faq","path":"/unraid-os/faq/licensing-faq","sidebar":"unraidSidebar"},{"id":"unraid-os/faq/os-faq","path":"/unraid-os/faq/os-faq","sidebar":"unraidSidebar"},{"id":"unraid-os/faq/redeem-license-activation-code","path":"/unraid-os/faq/redeem-license-activation-code","sidebar":"unraidSidebar"},{"id":"unraid-os/faq/unraid-account","path":"/unraid-os/faq/unraid-account","sidebar":"unraidSidebar"},{"id":"unraid-os/guides/configuring-time-machine","path":"/unraid-os/guides/configuring-time-machine","sidebar":"unraidSidebar"},{"id":"unraid-os/guides/wol-setup-for-unraid","path":"/unraid-os/guides/wol-setup-for-unraid","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/additional-settings","path":"/unraid-os/manual/additional-settings","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/applications","path":"/unraid-os/manual/applications","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/changing-the-flash-device","path":"/unraid-os/manual/changing-the-flash-device","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/docker-management","path":"/unraid-os/manual/docker-management","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/getting-started/getting-started","path":"/unraid-os/manual/getting-started/","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/getting-started/manual-install-method","path":"/unraid-os/manual/getting-started/manual-install-method","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/multi-language","path":"/unraid-os/manual/multi-language","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/security/data-encryption","path":"/unraid-os/manual/security/data-encryption","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/security/flash-drive","path":"/unraid-os/manual/security/flash-drive","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/security/good-practices","path":"/unraid-os/manual/security/good-practices","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/security/secure-webgui-ssl","path":"/unraid-os/manual/security/secure-webgui-ssl","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/security/security","path":"/unraid-os/manual/security/","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/security/vpn","path":"/unraid-os/manual/security/vpn","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/shares/create-a-share","path":"/unraid-os/manual/shares/create-a-share","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/shares/delete-a-share","path":"/unraid-os/manual/shares/delete-a-share","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/shares/disk-shares","path":"/unraid-os/manual/shares/disk-shares","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/shares/network-access","path":"/unraid-os/manual/shares/network-access","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/shares/shares","path":"/unraid-os/manual/shares/","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/shares/user-shares","path":"/unraid-os/manual/shares/user-shares","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/storage-management","path":"/unraid-os/manual/storage-management","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/tools","path":"/unraid-os/manual/tools","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/troubleshooting","path":"/unraid-os/manual/troubleshooting","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/upgrade-instructions","path":"/unraid-os/manual/upgrade-instructions","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/users","path":"/unraid-os/manual/users","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/vm-management","path":"/unraid-os/manual/vm-management","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/vm-support","path":"/unraid-os/manual/vm-support","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/what-is-unraid","path":"/unraid-os/manual/what-is-unraid","sidebar":"unraidSidebar"},{"id":"unraid-os/manual/zfs/placeholder","path":"/unraid-os/manual/zfs/placeholder","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.10.0","path":"/unraid-os/release-notes/6.10.0","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.10.1","path":"/unraid-os/release-notes/6.10.1","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.10.2","path":"/unraid-os/release-notes/6.10.2","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.10.3","path":"/unraid-os/release-notes/6.10.3","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.11.0","path":"/unraid-os/release-notes/6.11.0","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.11.1","path":"/unraid-os/release-notes/6.11.1","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.11.2","path":"/unraid-os/release-notes/6.11.2","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.11.3","path":"/unraid-os/release-notes/6.11.3","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.11.4","path":"/unraid-os/release-notes/6.11.4","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.11.5","path":"/unraid-os/release-notes/6.11.5","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.12.0","path":"/unraid-os/release-notes/6.12.0","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.12.1","path":"/unraid-os/release-notes/6.12.1","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.12.2","path":"/unraid-os/release-notes/6.12.2","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.12.3","path":"/unraid-os/release-notes/6.12.3","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.12.4","path":"/unraid-os/release-notes/6.12.4","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.9.0","path":"/unraid-os/release-notes/6.9.0","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.9.1","path":"/unraid-os/release-notes/6.9.1","sidebar":"unraidSidebar"},{"id":"unraid-os/release-notes/6.9.2","path":"/unraid-os/release-notes/6.9.2","sidebar":"unraidSidebar"},{"id":"/category/unraid-os","path":"/category/unraid-os","sidebar":"unraidSidebar"},{"id":"/category/release-notes","path":"/category/release-notes","sidebar":"unraidSidebar"},{"id":"/category/faq","path":"/category/faq","sidebar":"unraidSidebar"},{"id":"/category/guides","path":"/category/guides","sidebar":"unraidSidebar"},{"id":"/category/manual","path":"/category/manual","sidebar":"unraidSidebar"},{"id":"/category/getting-started","path":"/category/getting-started","sidebar":"unraidSidebar"},{"id":"/category/zfs","path":"/category/zfs","sidebar":"unraidSidebar"},{"id":"/category/unraid-connect","path":"/category/unraid-connect","sidebar":"unraidSidebar"},{"id":"/category/legacy-documentation","path":"/category/legacy-documentation","sidebar":"unraidSidebar"},{"id":"/category/contribute","path":"/category/contribute","sidebar":"unraidSidebar"},{"id":"/category/tutorial---basics","path":"/category/tutorial---basics","sidebar":"unraidSidebar"},{"id":"/category/tutorial---extras","path":"/category/tutorial---extras","sidebar":"unraidSidebar"}],"draftIds":[],"sidebars":{"unraidSidebar":{"link":{"path":"/","label":"docs-home"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en","zh","es","fr","de"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"},"zh":{"label":"\u4e2d\u6587","direction":"ltr","htmlLang":"zh","calendar":"gregory","path":"zh"},"es":{"label":"Espa\xf1ol","direction":"ltr","htmlLang":"es","calendar":"gregory","path":"es"},"fr":{"label":"Fran\xe7ais","direction":"ltr","htmlLang":"fr","calendar":"gregory","path":"fr"},"de":{"label":"Deutsch","direction":"ltr","htmlLang":"de","calendar":"gregory","path":"de"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.4.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.1"},"docusaurus-plugin-google-gtag":{"type":"package","name":"@docusaurus/plugin-google-gtag","version":"2.4.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.1"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"2.4.1"},"docusaurus-plugin-ideal-image":{"type":"package","name":"@docusaurus/plugin-ideal-image","version":"2.4.1"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"2.4.1"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},3256:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(6136),o=n(1514),i=n(3905),l=n(241);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},6136:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},1514:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},3699:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7462),a=n(7294),o=n(3727),i=n(3905),l=n(9962),s=n(2735),u=n(6136);const c=a.createContext({collectLink:()=>{}});var d=n(9524);function f(e,t){let{isNavLink:n,to:f,href:p,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:b=!0,...v}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.Z)(),{withBaseUrl:k}=(0,d.C)(),S=(0,a.useContext)(c),E=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>E.current));const x=f||p;const _=(0,s.Z)(x),C=x?.replace("pathname://","");let T=void 0!==C?(A=C,b&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&_&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const L=(0,a.useRef)(!1),R=n?o.OL:o.rU,P=u.Z.canUseIntersectionObserver,N=(0,a.useRef)(),O=()=>{L.current||null==T||(window.docusaurus.preload(T),L.current=!0)};(0,a.useEffect)((()=>(!P&&_&&null!=T&&window.docusaurus.prefetch(T),()=>{P&&N.current&&N.current.disconnect()})),[N,T,P,_]);const I=T?.startsWith("#")??!1,D=!T||!_||I;return D||g||S.collectLink(T),D?a.createElement("a",(0,r.Z)({ref:E,href:T},x&&!_&&{target:"_blank",rel:"noopener noreferrer"},v)):a.createElement(R,(0,r.Z)({},v,{onMouseEnter:O,onTouchStart:O,innerRef:e=>{E.current=e,P&&e&&_&&(N.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(N.current.unobserve(e),N.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),N.current.observe(e))},to:T},n&&{isActive:h,activeClassName:m}))}const p=a.forwardRef(f)},7325:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},6875:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},2735:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},9524:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(9962),o=n(2735);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},9962:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(694);function o(){return(0,r.useContext)(a._)}},1048:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8121);function o(){return(0,r.useContext)(a._)}},5304:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},9656:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},9871:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>b,gA:()=>p,WS:()=>m,_r:()=>d,Jo:()=>v,zh:()=>f,yW:()=>g,gB:()=>h});var r=n(6550),a=n(9962),o=n(6875);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function u(e,t){const n=s(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const c={},d=()=>i("docusaurus-plugin-content-docs")??c,f=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function m(e){void 0===e&&(e={});const t=p(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:s(t.pluginData,n)}}function h(e){return f(e).versions}function g(e){const t=f(e);return l(t)}function b(e){const t=f(e),{pathname:n}=(0,r.TH)();return u(t,n)}function v(e){const t=f(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:u(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},4313:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||setTimeout((()=>{window.gtag("event","page_view",{page_title:document.title,page_location:window.location.href,page_path:t.pathname+t.search+t.hash})}))}}},9957:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},2251:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},4082:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},241:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Rt});var r=n(7294),a=n(4334),o=n(3256),i=n(9488),l=n(7462),s=n(6550),u=n(7325),c=n(3266);const d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&f(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(e.current)})),{containerRef:e,onClick:n}}const m=(0,u.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:a}=p();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),t))}var g=n(3702),b=n(8181);const v={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(h,{className:v.skipToContent})}var w=n(107),k=n(5830);function S(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const E={closeButton:"closeButton_CVFx"};function x(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,u.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",E.closeButton,e.className)}),r.createElement(S,{width:14,height:14,strokeWidth:3.1}))}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,a.Z)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:T.announcementBarPlaceholder}),r.createElement(C,{className:T.announcementBarContent}),i&&r.createElement(x,{onClick:n,className:T.announcementBarClose}))}var L=n(735),R=n(2957);var P=n(3768),N=n(3086);const O=r.createContext(null);function I(e){let{children:t}=e;const n=function(){const e=(0,L.e)(),t=(0,N.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,P.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(O.Provider,{value:n},t)}function D(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function M(){const e=(0,r.useContext)(O);if(!e)throw new P.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,N.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:D(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var B=n(9200),j=n(1048);function z(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function U(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,j.Z)(),s=(0,u.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,u.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,u.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)($.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",$.toggleButton,!l&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,a.Z)($.toggleIcon,$.lightToggleIcon)}),r.createElement(U,{className:(0,a.Z)($.toggleIcon,$.darkToggleIcon)})))}const G=r.memo(q),H={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,B.I)();return a?null:r.createElement(G,{className:t,buttonClassName:"dark"===n?H.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var V=n(6811);function Q(){return r.createElement(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function W(){const e=(0,L.e)();return r.createElement("button",{type:"button","aria-label":(0,u.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(S,{color:"var(--ifm-color-emphasis-600)"}))}function K(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(Q,null),r.createElement(Z,{className:"margin-right--md"}),r.createElement(W,null))}var Y=n(3699),X=n(9524),J=n(2735),ee=n(1500),te=n(4082);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:s,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const f=(0,X.Z)(a),p=(0,X.Z)(t),m=(0,X.Z)(o,{forcePrependBaseUrl:!0}),h=i&&o&&!(0,J.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(te.Z,u&&{width:12,height:12}))};return o?r.createElement(Y.Z,(0,l.Z)({href:c?m:o},d,g)):r.createElement(Y.Z,(0,l.Z)({to:f,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?(0,ee.F)(n,t.pathname):t.pathname.startsWith(p)},d,g))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(4639),le=n(9003),se=n(9962);function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!(0,ee.F)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ce(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const u=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{u.current&&!u.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[u]),r.createElement("div",{ref:u,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c})},r.createElement(ne,(0,l.Z)({"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(qe,(0,l.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:o,onClick:i,...u}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:f,toggleCollapsed:p,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f})},r.createElement(ne,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),p()}}),u.children??u.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f},t.map(((e,t)=>r.createElement(qe,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function fe(e){let{mobile:t=!1,...n}=e;const a=t?de:ce;return r.createElement(a,n)}var pe=n(626);function me(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const he="iconLanguage_nlXk";function ge(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var be=n(830),ve=["translations"];function ye(){return ye=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var Ee="Ctrl";var xe=r.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,o=Se(e,ve),i=a.buttonText,l=void 0===i?"Search":i,s=a.buttonAriaLabel,u=void 0===s?"Search":s,c=we((0,r.useState)(null),2),d=c[0],f=c[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?f("\u2318"):f(Ee))}),[]),r.createElement("button",ye({type:"button",className:"DocSearch DocSearch-Button","aria-label":u},o,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(be.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},l)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},d===Ee?r.createElement(ge,null):d),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),_e=n(1514),Ce=n(5358),Te=n(2327),Ae=n(246);var Le=n(3935);const Re={button:{buttonText:(0,u.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,u.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,u.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,u.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,u.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,u.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,u.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,u.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,u.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,u.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,u.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,u.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,u.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,u.I)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,u.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,u.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,u.I)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,u.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,u.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,u.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,u.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,u.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,u.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,u.I)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,u.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,u.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,u.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let Pe=null;function Ne(e){let{hit:t,children:n}=e;return r.createElement(Y.Z,{to:t.url},n)}function Oe(e){let{state:t,onClose:n}=e;const a=(0,Ce.M)();return r.createElement(Y.Z,{to:a(t.query),onClick:n},r.createElement(u.Z,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits}},"See all {count} results"))}function Ie(e){let{contextualSearch:t,externalUrlRegex:a,...o}=e;const{siteMetadata:i}=(0,se.Z)(),u=(0,Te.l)(),c=function(){const{locale:e,tags:t}=(0,Ae._q)();return[`language:${e}`,t.map((e=>`docusaurus_tag:${e}`))]}(),d=o.searchParameters?.facetFilters??[],f=t?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(c,d):d,p={...o.searchParameters,facetFilters:f},m=(0,s.k6)(),h=(0,r.useRef)(null),g=(0,r.useRef)(null),[b,v]=(0,r.useState)(!1),[y,w]=(0,r.useState)(void 0),k=(0,r.useCallback)((()=>Pe?Promise.resolve():Promise.all([n.e(9724).then(n.bind(n,9724)),Promise.all([n.e(532),n.e(6945)]).then(n.bind(n,6945)),Promise.all([n.e(532),n.e(2153)]).then(n.bind(n,2153))]).then((e=>{let[{DocSearchModal:t}]=e;Pe=t}))),[]),S=(0,r.useCallback)((()=>{k().then((()=>{h.current=document.createElement("div"),document.body.insertBefore(h.current,document.body.firstChild),v(!0)}))}),[k,v]),E=(0,r.useCallback)((()=>{v(!1),h.current?.remove()}),[v]),x=(0,r.useCallback)((e=>{k().then((()=>{v(!0),w(e.key)}))}),[k,v,w]),_=(0,r.useRef)({navigate(e){let{itemUrl:t}=e;(0,ee.F)(a,t)?window.location.href=t:m.push(t)}}).current,C=(0,r.useRef)((e=>o.transformItems?o.transformItems(e):e.map((e=>({...e,url:u(e.url)}))))).current,T=(0,r.useMemo)((()=>e=>r.createElement(Oe,(0,l.Z)({},e,{onClose:E}))),[E]),A=(0,r.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e)),[i.docusaurusVersion]);return function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;(27===e.keyCode&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,o,i])}({isOpen:b,onOpen:S,onClose:E,onInput:x,searchButtonRef:g}),r.createElement(r.Fragment,null,r.createElement(_e.Z,null,r.createElement("link",{rel:"preconnect",href:`https://${o.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})),r.createElement(xe,{onTouchStart:k,onFocus:k,onMouseOver:k,onClick:S,ref:g,translations:Re.button}),b&&Pe&&h.current&&(0,Le.createPortal)(r.createElement(Pe,(0,l.Z)({onClose:E,initialScrollY:window.scrollY,initialQuery:y,navigator:_,transformItems:C,hitComponent:Ne,transformSearchClient:A},o.searchPagePath&&{resultsFooterComponent:T},o,{searchParameters:p,placeholder:Re.placeholder,translations:Re.modal})),h.current))}function De(){const{siteConfig:e}=(0,se.Z)();return r.createElement(Ie,e.themeConfig.algolia)}const Me={searchBox:"searchBox_ZlJk"};function Fe(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,Me.searchBox)},t)}var Be=n(9871),je=n(8259);var ze=n(6409);const Ue=e=>e.docs.find((t=>t.id===e.mainDocId));const $e={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.Z)(),f=(0,pe.l)(),{search:p,hash:m}=(0,s.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],g=t?(0,u.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(fe,(0,l.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(me,{className:he}),g),items:h}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(Fe,{className:n},r.createElement(De,null))},dropdown:fe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Be.Iw)(a),s=(0,je.vY)(t,a);return null===s?null:r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Be.Iw)(a),s=(0,je.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,je.lO)(a)[0],s=t??i.label,u=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,l.Z)({},o,{label:s,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...c}=e;const{search:d,hash:f}=(0,s.TH)(),p=(0,Be.Iw)(n),m=(0,Be.gB)(n),{savePreferredVersionName:h}=(0,ze.J)(n),g=[...o,...m.map((e=>{const t=p.alternateDocVersions[e.name]??Ue(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...i],b=(0,je.lO)(n)[0],v=t&&g.length>1?(0,u.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,y=t&&g.length>1?void 0:Ue(b).path;return g.length<=1?r.createElement(oe,(0,l.Z)({},c,{mobile:t,label:v,to:y,isActive:a?()=>!1:void 0})):r.createElement(fe,(0,l.Z)({},c,{mobile:t,label:v,to:y,items:g,isActive:a?()=>!1:void 0}))}};function qe(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=$e[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function Ge(){const e=(0,L.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(qe,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function He(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(u.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function Ze(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(He,{onClick:()=>t.hide()}),t.content)}function Ve(){const e=(0,L.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(F,{header:r.createElement(K,null),primaryMenu:r.createElement(Ge,null),secondaryMenu:r.createElement(Ze,null)}):null}const Qe={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function We(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function Ke(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,L.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,R.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,u.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Qe.navbarHideable,!s&&Qe.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(We,{onClick:i.toggle}),r.createElement(Ve,null))}var Ye=n(3905);const Xe={errorBoundaryError:"errorBoundaryError_a6uf"};function Je(e){return r.createElement("button",(0,l.Z)({type:"button"},e),r.createElement(u.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function et(e){let{error:t}=e;const n=(0,Ye.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:Xe.errorBoundaryError},n)}class tt extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const nt="right";function rt(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function at(){const{toggle:e,shown:t}=(0,L.e)();return r.createElement("button",{onClick:e,"aria-label":(0,u.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(rt,null))}const ot={colorModeToggle:"colorModeToggle_DEke"};function it(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(tt,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(qe,e)))))}function lt(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function st(){const e=(0,L.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??nt)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(lt,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(at,null),r.createElement(Q,null),r.createElement(it,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(it,{items:a}),r.createElement(Z,{className:ot.colorModeToggle}),!o&&r.createElement(Fe,null,r.createElement(De,null)))})}function ut(){return r.createElement(Ke,null,r.createElement(st,null))}function ct(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,u=(0,X.Z)(n),c=(0,X.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(Y.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?c:a}:{to:u},s),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function dt(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(ct,{item:t}))}function ft(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(dt,{key:t,item:e})))))}function pt(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(ft,{key:t,column:e}))))}function mt(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function ht(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(ct,{item:t})}function gt(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(ht,{item:e}),t.length!==n+1&&r.createElement(mt,null))))))}function bt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(pt,{columns:t}):r.createElement(gt,{links:t})}var vt=n(7909);const yt={footerLogoLink:"footerLogoLink_BH7S"};function wt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(vt.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function kt(e){let{logo:t}=e;return t.href?r.createElement(Y.Z,{href:t.href,className:yt.footerLogoLink,target:t.target},r.createElement(wt,{logo:t})):r.createElement(wt,{logo:t})}function St(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Et(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function xt(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(Et,{style:o,links:n&&n.length>0&&r.createElement(bt,{links:n}),logo:a&&r.createElement(kt,{logo:a}),copyright:t&&r.createElement(St,{copyright:t})})}const _t=r.memo(xt),Ct=(0,P.Qc)([B.S,k.pl,R.OC,ze.L5,i.VC,function(e){let{children:t}=e;return r.createElement(N.n2,null,r.createElement(L.M,null,r.createElement(I,null,t)))}]);function Tt(e){let{children:t}=e;return r.createElement(Ct,null,t)}function At(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(u.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(Je,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(et,{error:t})))))}const Lt={mainWrapper:"mainWrapper_z2l0"};function Rt(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:u}=e;return(0,b.t)(),r.createElement(Tt,null,r.createElement(i.d,{title:s,description:u}),r.createElement(y,null),r.createElement(A,null),r.createElement(ut,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,Lt.mainWrapper,l)},r.createElement(o.Z,{fallback:e=>r.createElement(At,e)},t)),!n&&r.createElement(_t,null))}},6811:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=n(3699),i=n(9524),l=n(9962),s=n(107),u=n(7909);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(u.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:u}}=(0,s.L)(),{imageClassName:d,titleClassName:f,...p}=e,m=(0,i.Z)(u?.href||"/"),h=n?"":t,g=u?.alt??h;return a.createElement(o.Z,(0,r.Z)({to:m},p,u?.target&&{target:u.target}),u&&a.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:f},n))}},3647:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(1514);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},7909:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(4334),i=n(1048),l=n(9200);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...f}=e,p=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,p.map((e=>a.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],c)},f)))))}},4639:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>g});var r=n(7462),a=n(7294),o=n(6136),i=n(8986);const l="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const u={display:"none",overflow:"hidden",height:"0px"},c={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?u:c;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??l}`,height:`${t}px`}}function s(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return d(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function p(e){if(!o.Z.canUseDOM)return e?u:c}function m(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const u=(0,a.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:o}),a.createElement(t,{ref:u,style:s?void 0:p(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(u.current,n),i?.(n))},className:l},r)}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(m,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?h:m;return a.createElement(r,n)}},5830:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>p});var r=n(7294),a=n(1048),o=n(2560),i=n(3768),l=n(107);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},9200:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>h});var r=n(7294),a=n(6136),o=n(3768),i=n(2560),l=n(107);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},f=e=>e===d.dark?d.dark:d.light,p=e=>a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),m=e=>{c.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(p(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},6409:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>g,Oh:()=>y});var r=n(7294),a=n(9871),o=n(6875),i=n(107),l=n(8259),s=n(3768),u=n(2560);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const p=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=m();return r.createElement(p.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(h,null,t):r.createElement(r.Fragment,null,t)}function b(){const e=(0,r.useContext)(p);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function y(){const e=(0,a._r)(),[t]=b();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},4432:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),a=n(3768);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},8801:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>i});var r=n(7294),a=n(3768);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},735:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>f});var r=n(7294),a=n(3086),o=n(3488),i=n(5238),l=n(107),s=n(3768);const u=r.createContext(void 0);function c(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,u]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:s})),[e,n,c,s])}function d(e){let{children:t}=e;const n=c();return r.createElement(u.Provider,{value:n},t)}function f(){const e=r.useContext(u);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},3086:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),a=n(3768);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},8181:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},5358:(e,t,n)=>{"use strict";n.d(t,{K:()=>l,M:()=>s});var r=n(7294),a=n(9962),o=n(5238);const i="q";function l(){return(0,o.Nc)(i)}function s(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,a.Z)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)((t=>`${e}${n}?${i}=${encodeURIComponent(t)}`),[e,n])}},3488:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),a=n(6136);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function u(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},3702:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},8986:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},8259:(e,t,n)=>{"use strict";n.d(t,{MN:()=>_,Wl:()=>m,_F:()=>v,cE:()=>f,hI:()=>x,jA:()=>h,lO:()=>k,oz:()=>S,s1:()=>w,vY:()=>E,xz:()=>p});var r=n(7294),a=n(6550),o=n(8790),i=n(9871),l=n(6409),s=n(8801),u=n(4432),c=n(3609),d=n(9003);const f=!!i._r;function p(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=m(t);if(e)return e}}}function h(){const{pathname:e}=(0,a.TH)(),t=(0,u.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=y({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const g=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),b=(e,t)=>e.some((e=>v(e,t)));function v(e,t){return"link"===e.type?g(e.href,t):"category"===e.type&&(g(e.href,t)||b(e.items,t))}function y(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,u.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?y({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,a].filter(Boolean))),[t,n,a])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function E(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function x(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}function _(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},2733:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(9962);function a(e){const{siteConfig:t}=(0,r.Z)(),{title:n,titleDelimiter:a}=t;return e?.trim().length?`${e.trim()} ${a} ${n}`:n}},5238:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>u,Rb:()=>l,_X:()=>s});var r=n(7294),a=n(6550),o=n(1688),i=n(3768);function l(e){!function(e){const t=(0,a.k6)(),n=(0,i.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){return function(e){const t=(0,a.k6)();return(0,o.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function u(e){const t=s(e)??"",n=function(){const e=(0,a.k6)();return(0,r.useCallback)(((t,n,r)=>{const a=new URLSearchParams(e.location.search);n?a.set(t,n):a.delete(t),(r?.push?e.push:e.replace)({search:a.toString()})}),[e])}();return[t,(0,r.useCallback)(((t,r)=>{n(e,t,r)}),[n,e])]}},3609:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},9488:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(7294),a=n(7459),o=n(1514),i=n(9656);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(9524),u=n(2733);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=(0,u.p)(t),{withBaseUrl:d}=(0,s.C)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.Z)(o,i)},t)}},3768:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7294);const a=n(6136).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},1500:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{F:()=>r})},9003:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),a=n(997),o=n(9962);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2957:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d,o5:()=>f});var r=n(7294),a=n(6136),o=n(1048),i=n(3768);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=u(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function p(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},246:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>s,os:()=>l});var r=n(9871),a=n(9962),o=n(6409);const i="default";function l(e,t){return`docs-${e}-${t}`}function s(){const{i18n:e}=(0,a.Z)(),t=(0,r._r)(),n=(0,r.WS)(),s=(0,o.Oh)();const u=[i,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,a=s[e],o=t[e].versions.find((e=>e.isLast));return l(e,(r??a??o).name)}))];return{locale:e.currentLocale,tags:u}}},2560:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>c});var r=n(7294),a=n(1688);const o="localStorage";function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function l(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,s||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),s=!0),null}var t}let s=!1;const u={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=l(t?.persistence);return null===n?u:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),i({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),i({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?u:c(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,a.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},626:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(9962),a=n(6550);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.Z)(),{pathname:i}=(0,a.TH)(),l=o===n?e:e.replace(`/${o}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${l}`:`${l}${e}/`}(r)}${s}`}}}},3266:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),a=n(6550),o=n(3768);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},107:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(9962);function a(){return(0,r.Z)().siteConfig.themeConfig}},7263:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(9962);function a(){const{siteConfig:{themeConfig:e}}=(0,r.Z)();return e}},2327:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(7294),a=n(1500),o=n(9524),i=n(7263);function l(){const{withBaseUrl:e}=(0,o.C)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.L)();return(0,r.useCallback)((r=>{const o=new URL(r);if((0,a.F)(t,o.href))return r;const i=`${o.pathname+o.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},4136:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},5806:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},3905:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(4136);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(5806);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>p,PP:()=>A,Ep:()=>f});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(8776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=p(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},984:(e,t,n)=>{"use strict";n.r(t)},6930:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s{var r=n(5826);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var m=e[i],h=n[2],g=n[3],b=n[4],v=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,S="+"===y||"*"===y,E="?"===y||"*"===y,x=n[2]||c,_=b||v;r.push({name:g||o++,prefix:h||"",delimiter:x,optional:E,repeat:S,partial:k,asterisk:!!w,pattern:_?u(_):w?".*":"[^"+s(x)+"]+?"})}}return i{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);E+=S.value.length,S=S.next){var x=S.value;if(t.length>e.length)return;if(!(x instanceof a)){var _,C=1;if(v){if(!(_=o(k,E,e,b))||_.index>=e.length)break;var T=_.index,A=_.index+_[0].length,L=E;for(L+=S.value.length;T>=L;)L+=(S=S.next).value.length;if(E=L-=S.value.length,S.value instanceof a)continue;for(var R=S;R!==t.tail&&(Ld.reach&&(d.reach=I);var D=S.prev;if(N&&(D=s(t,D,N),E+=N.length),u(t,D,C),S=s(t,D,new a(f,g?r.tokenize(P,g):P,y,P)),O&&s(t,S,O),C>1){var M={cause:f+","+m,reach:I};i(e,t,n,S.prev,E,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),p){var h=[p];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++a;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=f.substring(m+p.length),v=[];h&&v.push.apply(v,i([h])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof u?l.splice.apply(l,[s,1].concat(v)):u.content=v}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},9901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},6500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),m=c;a(m);){for(var h in f={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(f[e]=!0)}))}for(var b in d)if(!(b in c))for(var v in p(b))if(v in c){f[b]=!0;break}for(var y in m=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(7418),o=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n