diff --git a/CMakeLists.txt b/CMakeLists.txt index 92bd22cc27c..d8d716b1bcc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,6 +97,7 @@ include(CMakeDependentOption) include(cmake/scripts/common/DependencyOptions.cmake) # general +option(HEADERS_ONLY "Skip building" OFF) option(VERBOSE "Enable verbose output?" OFF) option(VERBOSE_FIND "Enable verbose output of library searches only?" OFF) option(ENABLE_CLANGTIDY "Enable clang-tidy support?" OFF) @@ -183,6 +184,7 @@ core_find_git_rev(APP_SCMID FULL) set(AUDIO_BACKENDS_LIST "" CACHE STRING "Available audio backends") set(GL_INTERFACES_LIST "" CACHE STRING "Available GL interfaces") +if(NOT HEADERS_ONLY) # Dynamically loaded libraries built with the project add_custom_target(${APP_NAME_LC}-libraries) set(LIBRARY_FILES "" CACHE STRING "" FORCE) @@ -463,6 +465,7 @@ core_add_optional_subdirs_from_filelist(${CMAKE_SOURCE_DIR}/cmake/treedata/optio # SYSTEM_LDFLAGS: system linker flags # DEPLIBS: system libraries for linking target_link_libraries(lib${APP_NAME_LC} PUBLIC ${core_DEPENDS} ${SYSTEM_LDFLAGS} ${DEPLIBS} ${CMAKE_DL_LIBS}) +target_link_libraries(lib${APP_NAME_LC} PUBLIC obu_util) core_target_link_libraries(lib${APP_NAME_LC}) set_target_properties(lib${APP_NAME_LC} PROPERTIES PROJECT_LABEL "xbmc") source_group_by_folder(lib${APP_NAME_LC} RELATIVE ${CMAKE_SOURCE_DIR}/xbmc) @@ -673,6 +676,7 @@ if(FFMPEG_XCODE_WRAPPER) set(CMAKE_XCODE_ATTRIBUTE_LD "${FFMPEG_XCODE_WRAPPER}") set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS "${FFMPEG_XCODE_WRAPPER}") endif() +endif() # Platform specific additional extra targets if(EXISTS ${CMAKE_SOURCE_DIR}/cmake/scripts/${CORE_SYSTEM_NAME}/ExtraTargets.cmake) diff --git a/addons/repository.xbmc.org/addon.xml b/addons/repository.xbmc.org/addon.xml index 2a595c681d9..96ef8533444 100644 --- a/addons/repository.xbmc.org/addon.xml +++ b/addons/repository.xbmc.org/addon.xml @@ -1,7 +1,7 @@ @@ -9,10 +9,10 @@ - https://mirrors.kodi.tv/addons/piers/addons.xml.gz - https://mirrors.kodi.tv/addons/piers/addons.xml.gz?sha256 - https://mirrors.kodi.tv/addons/piers - https://mirrors.kodi.tv/addons/piers + https://addons.coreelec.org/piers/addons.xml.gz + https://addons.coreelec.org/piers/addons.xml.gz?sha256 + https://addons.coreelec.org/piers + https://addons.coreelec.org/piers sha256 diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po index 77a0d2d9841..1f7269569f6 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po @@ -626,7 +626,7 @@ msgstr "" #: addons/skin.estuary/xml/SettingsSystemInfo.xml msgctxt "#144" -msgid "Build:" +msgid "Build" msgstr "" msgctxt "#145" @@ -761,7 +761,7 @@ msgstr "" #: addons/skin.estuary/xml/SettingsSystemInfo.xml msgctxt "#174" -msgid "Compiled:" +msgid "Compiled" msgstr "" #: xbmc/dialogs/GUIDialogMediaFilter.cpp @@ -2256,7 +2256,15 @@ msgctxt "#470" msgid "Credits" msgstr "" -#empty strings from id 471 to 473 +msgctxt "#471" +msgid "Input layout" +msgstr "" + +msgctxt "#472" +msgid "Output layout" +msgstr "" + +#empty string with id 473 msgctxt "#474" msgid "Off" @@ -6337,7 +6345,12 @@ msgctxt "#12398" msgid "kodi.tv/donate" msgstr "" -#empty strings from id 12399 to 12599 +#: xbmc/windows/GUIWindowSystemInfo.cpp +msgctxt "#12399" +msgid "Linux version" +msgstr "" + +#empty strings from id 12400 to 12599 #: xbmc/guilib/WindowIDs.h msgctxt "#12600" @@ -7561,7 +7574,7 @@ msgstr "" #: system/settings/settings.xml msgctxt "#13438" -msgid "Allow hardware acceleration with DRM PRIME" +msgid "Allow hardware acceleration - amcodec" msgstr "" #: system/settings/settings.xml @@ -8584,6 +8597,11 @@ msgstr "" #: system/settings/settings.xml msgctxt "#14128" +msgid "Allow whole-number frame repeat" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14129" msgid "Allow double refresh rates" msgstr "" @@ -8936,8 +8954,175 @@ msgctxt "#14304" msgid "RDS Radio" msgstr "" +#: system/settings/settings.xml +msgctxt "#14310" +msgid "Tone map SDR to Dolby Vision" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14311" +msgid "Intended for Dolby Vision enabled displays. SDR content will be tone mapped by Dolby Vision VS-Engine." +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14312" +msgid "Tone map HDR to Dolby Vision" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14313" +msgid "Intended for Dolby Vision enabled displays. HDR content will be tone mapped by Dolby Vision VS-Engine." +msgstr "" + #empty strings from id 14305 to 15010 +#: system/settings/settings.xml +msgctxt "#14400" +msgid "CoreELEC" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14401" +msgid "This category contains settings added for CoreELEC." +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14402" +msgid "Disable noise reduction" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14403" +msgid "Enable this to disable noise reduction. Requires reboot." +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14404" +msgid "Tone map SDR to HDR" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14405" +msgid "Intended for HDR enabled displays - not recommended. Turn this On to have HDR mode always on. GUI and SDR content will be tone mapped. Requires reboot." +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14406" +msgid "Tone map HDR to SDR" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14407" +msgid "Intended for SDR displays. Turn this On to have HDR content tone mapped to SDR. This improves color saturation and contrast of HDR content on SDR displays. Requires reboot." +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14408" +msgid "Force display colour depth" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14409" +msgid "Force display colour depth to set value if display mode does support it. Requires resolution change to get active." +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14410" +msgid "Force colour subsampling" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14411" +msgid "Force colour subsampling to set value. Requires resolution change to get active." +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14412" +msgid "Disable GUI scaling" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14413" +msgid "For optimal performance across all devices, the GUI is rendered at 1080P and scaled to 4K by default, this option disables that scaling and renders the GUI at 4K. This can make thumbnails and other textures sharper, however some devices may have issues with this option being set." +msgstr "" + +#. Force colour subsampling +#: system/settings/settings.xml +msgctxt "#14414" +msgid "RGB" +msgstr "" + +#. Force colour subsampling +#: system/settings/settings.xml +msgctxt "#14415" +msgid "4:2:0" +msgstr "" + +#. Force colour subsampling +#: system/settings/settings.xml +msgctxt "#14416" +msgid "4:2:2" +msgstr "" + +#. Force colour subsampling +#: system/settings/settings.xml +msgctxt "#14417" +msgid "4:4:4" +msgstr "" + +#. Display colour depth limit +#: system/settings/settings.xml +msgctxt "#14418" +msgid "8 bits" +msgstr "" + +#. Display colour depth limit +#: system/settings/settings.xml +msgctxt "#14419" +msgid "10 bits" +msgstr "" + +#. Display colour depth limit +#: system/settings/settings.xml +msgctxt "#14420" +msgid "12 bits" +msgstr "" + +#. Display colour depth limit +#: system/settings/settings.xml +msgctxt "#14421" +msgid "16 bits" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14422" +msgid "Disable Dolby Vision support" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14423" +msgid "Use this option to disable Dolby Vision support if available." +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14424" +msgid "Dolby Vision Led mode" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14425" +msgid "Choose TV-Led (RGB 4:4:4) or Player-Led (YCbCr 4:2:2) mode for Dolby Vision." +msgstr "" + +#: system/settings/settings.xml +msgctxt "#14426" +msgid "TV-Led" +msgstr "" + +msgctxt "#14427" +msgid "Player-Led" +msgstr "" + #: xbmc/music/MusicDatabase.cpp #: xbmc/video/VideoDatabase.cpp msgctxt "#15011" @@ -19581,7 +19766,7 @@ msgstr "" #: system/peripherals.xml msgctxt "#36021" -msgid "Physical address (overrules HDMI port)" +msgid "Physical address" msgstr "" #empty string with id 36022 @@ -19793,7 +19978,27 @@ msgctxt "#36058" msgid "Automatic" msgstr "" -#empty strings from id 36059 to 36095 +#: system/peripherals.xml +msgctxt "#36059" +msgid "OSD name" +msgstr "" + +#: system/peripherals.xml +msgctxt "#36060" +msgid "Wake-Up by auto power on" +msgstr "" + +#: system/peripherals.xml +msgctxt "#36061" +msgid "Wake-Up by streaming path/routing change" +msgstr "" + +#: system/peripherals.xml +msgctxt "#36062" +msgid "Wake-Up by active route" +msgstr "" + +#empty strings from id 36063 to 36095 #. Label of setting "System / Display / Use system HDR/SDR brightness balance" #: system/settings/settings.xml @@ -21748,6 +21953,11 @@ msgstr "" #: system/settings/settings.xml msgctxt "#36439" msgid "Enable automatic playback of the next programme when playing past programmes (catchup) or for Video On Demand (VOD) channels. Please note that catchup and VOD only work if supported by the channel provider." + +#. Description of setting with label #13438 "Allow hardware acceleration (amcodec)" +#: system/settings/settings.xml +msgctxt "#36440" +msgid "Enable hardware video decode using Amlogic decoder." msgstr "" #. Description of setting with label #14085 "Video disc insert action" @@ -21783,6 +21993,12 @@ msgstr "" #. Description of setting with label #14128 "Whitelist" #: system/settings/settings.xml msgctxt "#36445" +msgid "Select this option to allow using whole-number repeat rate (playing 24 FPS video on a 120 Hz monitor or playing 30 FPS video on a 120 Hz monitor)." +msgstr "" + +#. Description of setting with label #14129 "Whitelist" +#: system/settings/settings.xml +msgctxt "#36446" msgid "Select this option to allow using double refresh rates (playing 29.97 FPS video on a 59.94 Hz monitor or playing 30 FPS video on a 60 Hz monitor). You may want to use this option if your monitor doesn't have a 29.97 Hz or 30 Hz mode." msgstr "" @@ -23103,6 +23319,21 @@ msgstr "" #empty strings from id 37134 to 38010 +#: system/settings/settings.xml +msgctxt "#38007" +msgid "Boost centre channel when downmixing" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#38008" +msgid "Increase this value to make the dialogue louder compared to background sounds when downmixing multichannel audio" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#38009" +msgid "{0} dB" +msgstr "" + #. Setting #38011 "Show All Items entry" #: system/settings/settings.xml msgctxt "#38011" @@ -23778,7 +24009,27 @@ msgctxt "#38354" msgid "Unable to read xml file" msgstr "" -#empty strings from id 38355 to 39003 +#empty strings from id 38355 to 38999 + +#: system/settings/settings.xml +msgctxt "#39000" +msgid "HD and up" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#39001" +msgid "Accelerate MPEG2" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#39002" +msgid "Accelerate MPEG4" +msgstr "" + +#: system/settings/settings.xml +msgctxt "#39003" +msgid "Accelerate h264" +msgstr "" #. Description of category "Library" with label #14202 #: system/settings/settings.xml diff --git a/addons/skin.estuary/colors/cinema.xml b/addons/skin.estuary/colors/cinema.xml new file mode 100644 index 00000000000..7af17524703 --- /dev/null +++ b/addons/skin.estuary/colors/cinema.xml @@ -0,0 +1,9 @@ + + + FF666666 + 33DA845C + FF940606 + FF9E040D + 809E040D + FFF70C1A + diff --git a/addons/skin.estuary/colors/classic.xml b/addons/skin.estuary/colors/classic.xml new file mode 100644 index 00000000000..dcee11cc8cf --- /dev/null +++ b/addons/skin.estuary/colors/classic.xml @@ -0,0 +1,9 @@ + + + FF0E597E + 330BAA8E + FF1A2123 + FF12A0C7 + 8012A0C7 + FF11E7B1 + diff --git a/addons/skin.estuary/colors/defaults.xml b/addons/skin.estuary/colors/defaults.xml index 24648aa8603..3d5263f5d52 100644 --- a/addons/skin.estuary/colors/defaults.xml +++ b/addons/skin.estuary/colors/defaults.xml @@ -1,9 +1,9 @@ - FF0E597E - 330BAA8E - FF1A2123 - FF147995 + FF666666 + 33DA845C + FF242728 + FF940606 FF000000 FF909090 30FFFFFF @@ -12,11 +12,11 @@ FFA0A0A0 FF7ACAFE FFCE4421 - FF12A0C7 - 8012A0C7 + FF9E040D + 809E040D 22000000 60FFFFFF 40FFFFFF - FFFFB70F + FFF70C1A FFFF0000 diff --git a/addons/skin.estuary/language/resource.language.en_gb/strings.po b/addons/skin.estuary/language/resource.language.en_gb/strings.po index a98ad2b03f8..a06456d8168 100644 --- a/addons/skin.estuary/language/resource.language.en_gb/strings.po +++ b/addons/skin.estuary/language/resource.language.en_gb/strings.po @@ -470,7 +470,7 @@ msgstr "" #: /xml/LoginScreen.xml msgctxt "#31098" -msgid "Select your Kodi user profile[CR]to login and continue" +msgid "Select your CoreELEC user profile[CR]to login and continue" msgstr "" #. viewtype name @@ -581,7 +581,7 @@ msgstr "" #: /xml/Home.xml msgctxt "#31119" -msgid "You do not have any add-ons installed yet. Visit our add-on browser to browse through our collection and improve your Kodi experience." +msgid "You do not have any add-ons installed yet. Visit our add-on browser to browse through our collection and improve your CoreELEC experience." msgstr "" #: /xml/Home.xml @@ -889,6 +889,10 @@ msgctxt "#31177" msgid "Choose weather icon pack" msgstr "" +#: /xml/Variables.xml +msgctxt "#31178" +msgid "Playerprocessinfo" + #empty strings from id 31178 to 31596 #: /xml/Includes_SettingsDialog.xml @@ -1004,3 +1008,68 @@ msgstr "" msgctxt "#31615" msgid "Subtitle language" msgstr "" + +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31630" +msgid "System FPS" +msgstr "" + +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31631" +msgid "CPU frequency" +msgstr "" + +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31632" +msgid "SoC temp" +msgstr "" + +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31633" +msgid "Video stream cache" +msgstr "" + +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31634" +msgid "Player process info" +msgstr "" + +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31635" +msgid "Video source" +msgstr "" + +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31636" +msgid "Display mode" +msgstr "" + +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31637" +msgid "EOTF & Gamut" +msgstr "" + +#: /xml/DialogPlayerProcessInfo.xml +#. Label to show the video pixel format +msgctxt "#31638" +msgid "Pixel format" +msgstr "" + + +#: /xml/DialogPlayerProcessInfo.xml +#. Label to show the video resolution +msgctxt "#31639" +msgid "Video resolution" +msgstr "" + +#: /xml/DialogPlayerProcessInfo.xml +#. Label to show the Audio Object Base +msgctxt "#31640" +msgid "Audio object base" +msgstr "" + +#: /xml/DialogPlayerProcessInfo.xml +#. Label to show passtrough +msgctxt "#31641" +msgid "Passthrough" +msgstr "" diff --git a/addons/skin.estuary/language/resource.language.hu_hu/strings.po b/addons/skin.estuary/language/resource.language.hu_hu/strings.po index 8f24755531a..c8aea330545 100644 --- a/addons/skin.estuary/language/resource.language.hu_hu/strings.po +++ b/addons/skin.estuary/language/resource.language.hu_hu/strings.po @@ -796,65 +796,84 @@ msgctxt "#31612" msgid "channels" msgstr "csatornák" +#: /xml/DialogPlayerProcessInfo.xml #. Label to show the subtitle decoder name msgctxt "#31613" msgid "Subtitle decoder" msgstr "Felirat dekóder" +#: /xml/DialogPlayerProcessInfo.xml #. Label to show the subtitle codec name msgctxt "#31614" msgid "Subtitle codec" msgstr "Felirat kodek" +#: /xml/DialogPlayerProcessInfo.xml #. Label to show the subtitle language msgctxt "#31615" msgid "Subtitle language" msgstr "Feliratnyelv" -#~ msgctxt "#31025" -#~ msgid "No favourites found. You can add any item from media views to this list by using the context menu." -#~ msgstr "Nem találhatóak kedvencek. Bármely elemet hozzáadhat ehhez a listához a média nézetekből, a környezeti menü használatával." +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31630" +msgid "System FPS" +msgstr "Rendszer FPS" -#~ msgctxt "#31149" -#~ msgid "Select genre fanart pack" -#~ msgstr "Műfaj illusztrációs csomag kiválasztása" +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31631" +msgid "CPU frequency" +msgstr "CPU frekvencia" -#~ msgctxt "#31112" -#~ msgid "Toggle audio stream" -#~ msgstr "Hangfolyam ki- és bekapcsolása" +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31632" +msgid "SoC temp" +msgstr "SoC hőmérséklet" -#~ msgctxt "#31115" -#~ msgid "Toggle subtitle" -#~ msgstr "Felirat váltás" - -#~ msgctxt "#31612" -#~ msgid "Add version" -#~ msgstr "Verzió hozzáadása" - -#~ msgctxt "#31613" -#~ msgid "Add extras" -#~ msgstr "Extrák hozzáadása" +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31633" +msgid "Video stream cache" +msgstr "Videófolyam puffer" -#~ msgctxt "#31614" -#~ msgid "Set default" -#~ msgstr "Alapállapotba állít" +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31634" +msgid "Player process info" +msgstr "Lejátszó információ" -#~ msgctxt "#31615" -#~ msgid "Extras" -#~ msgstr "Extrák" +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31635" +msgid "Video source" +msgstr "Videó forrás" -#~ msgctxt "#31059" -#~ msgid "Select + X" -#~ msgstr "Kiválasztás + X" +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31636" +msgid "Display mode" +msgstr "Kijelző mód" -#~ msgctxt "#31060" -#~ msgid "Select + Start" -#~ msgstr "Kiválasztás + indítás" +#: /xml/DialogPlayerProcessInfo.xml +msgctxt "#31637" +msgid "EOTF & Gamut" +msgstr "EOTF & Gamut" -#~ msgctxt "#31137" -#~ msgid "PVR info" -#~ msgstr "PVR információ" +#: /xml/DialogPlayerProcessInfo.xml +#. Label to show the video pixel format +msgctxt "#31638" +msgid "Pixel format" +msgstr "Színmélység" -#~ msgctxt "#31138" -#~ msgid "Player process info" -#~ msgstr "Feldolgozási információ" +#: /xml/DialogPlayerProcessInfo.xml +#. Label to show the video resolution +msgctxt "#31639" +msgid "Video resolution" +msgstr "Videó felbontás" + +#: /xml/DialogPlayerProcessInfo.xml +#. Label to show the Audio Object Base +msgctxt "#31640" +msgid "Audio object base" +msgstr "HD hang típus" + +#: /xml/DialogPlayerProcessInfo.xml +#. Label to show passtrough +msgctxt "#31641" +msgid "Passthrough" +msgstr "Hangtovábbítás" diff --git a/addons/skin.estuary/media/calibrate/cal_ratio.png b/addons/skin.estuary/media/calibrate/cal_ratio.png index a8ee5a32c83..ef21a1c24b3 100644 Binary files a/addons/skin.estuary/media/calibrate/cal_ratio.png and b/addons/skin.estuary/media/calibrate/cal_ratio.png differ diff --git a/addons/skin.estuary/media/icons/logo-nocenter.png b/addons/skin.estuary/media/icons/logo-nocenter.png new file mode 100644 index 00000000000..2153f3c2a8e Binary files /dev/null and b/addons/skin.estuary/media/icons/logo-nocenter.png differ diff --git a/addons/skin.estuary/media/icons/logo-text-withcenter.png b/addons/skin.estuary/media/icons/logo-text-withcenter.png new file mode 100644 index 00000000000..2bd6e104c89 Binary files /dev/null and b/addons/skin.estuary/media/icons/logo-text-withcenter.png differ diff --git a/addons/skin.estuary/media/icons/power.png b/addons/skin.estuary/media/icons/power.png index bd8f092458a..41ce30d26c4 100644 Binary files a/addons/skin.estuary/media/icons/power.png and b/addons/skin.estuary/media/icons/power.png differ diff --git a/addons/skin.estuary/media/icons/settings/coreelec.png b/addons/skin.estuary/media/icons/settings/coreelec.png new file mode 100644 index 00000000000..00101421e17 Binary files /dev/null and b/addons/skin.estuary/media/icons/settings/coreelec.png differ diff --git a/addons/skin.estuary/media/osd/fullscreen/buttons/processinfo.png b/addons/skin.estuary/media/osd/fullscreen/buttons/processinfo.png new file mode 100644 index 00000000000..082f11fbf21 Binary files /dev/null and b/addons/skin.estuary/media/osd/fullscreen/buttons/processinfo.png differ diff --git a/addons/skin.estuary/xml/DialogButtonMenu.xml b/addons/skin.estuary/xml/DialogButtonMenu.xml index a02833352d3..3323896a9bb 100644 --- a/addons/skin.estuary/xml/DialogButtonMenu.xml +++ b/addons/skin.estuary/xml/DialogButtonMenu.xml @@ -55,6 +55,16 @@ Reset() System.CanReboot + + + System.ExecWait("/usr/sbin/rebootfromnand") + Reset() + System.PathExist("/dev/system") | System.PathExist("/dev/super") | System.PathExist("/dev/userdata") | System.PathExist("/dev/data") + + + + RestartApp() + dialog.close(all,true) diff --git a/addons/skin.estuary/xml/DialogPlayerProcessInfo.xml b/addons/skin.estuary/xml/DialogPlayerProcessInfo.xml index c4f1c10ae4a..ce13a46c367 100644 --- a/addons/skin.estuary/xml/DialogPlayerProcessInfo.xml +++ b/addons/skin.estuary/xml/DialogPlayerProcessInfo.xml @@ -132,270 +132,240 @@ 50 -204 - String.IsEqual(Window(Home).Property(PlayerInfoDialogFocus),5552) + String.IsEqual(Window(Home).Property(PlayerInfoDialogFocus),5553) - 885 - 50 + 900 + 40 bottom - - font14 + + font12 black - !String.IsEmpty(VideoPlayer.VideoCodec) + Player.HasVideo - 885 - 50 + 900 + 40 bottom - - font14 + + font12 black - !String.IsEmpty(VideoPlayer.VideoResolution) + Player.HasVideo - 885 - 50 - - font14 + 900 + 40 + bottom + + font12 black - !String.IsEmpty(VideoPlayer.HdrType) - 885 - 50 + 900 + 40 bottom - - font14 + + font12 black - !String.IsEmpty(VideoPlayer.VideoAspect) - 885 - 50 + 900 + 40 bottom - - font14 + + font12 black - !String.IsEmpty(VideoPlayer.VideoBitrate) - - - 985 - -204 - String.IsEqual(Window(Home).Property(PlayerInfoDialogFocus),5552) - 885 - 50 + 900 + 40 bottom - - font14 + + font12 black - !String.IsEmpty(VideoPlayer.AudioCodec) + Player.HasVideo - 885 - 50 + 820 + 40 bottom - - font14 + + font12 + true black - !String.IsEmpty(VideoPlayer.AudioChannels) + System.SupportsCPUUsage - 885 - 50 + 6 + 750 bottom - - font14 + + font8 black - !String.IsEmpty(VideoPlayer.AudioBitrate) - - 880 - 38 - - font14 - black - !String.IsEmpty(VideoPlayer.AudioLanguage) + + CPU BAR + 750 + 18 + System.CPUUsage - 985 - -4 - String.IsEqual(Window(Home).Property(PlayerInfoDialogFocus),5552) + 900 + -204 + String.IsEqual(Window(Home).Property(PlayerInfoDialogFocus),5553) - 885 - 50 + 420 + 40 bottom - - font14 + + font12 black - VideoPlayer.HasSubtitles + VideoPlayer.SubtitlesEnabled + !String.IsEmpty(VideoPlayer.SubtitleCodec) + Player.HasVideo - 885 - 50 + 420 + 40 bottom - - font14 + + font12 black - VideoPlayer.HasSubtitles + VideoPlayer.SubtitlesEnabled + !String.IsEmpty(VideoPlayer.SubtitlesLanguage) + Player.HasVideo - - - 50 - -204 - String.IsEqual(Window(Home).Property(PlayerInfoDialogFocus),5553) - 885 - 50 + 420 + 40 bottom - - font14 + + font12 black - !String.IsEmpty(Player.Process(videodecoder)) + !String.IsEmpty(VideoPlayer.AudioCodec) - 885 - 50 + 420 + 40 bottom - - font14 + + font12 black - !String.IsEmpty(Player.Process(pixformat)) + [String.IsEqual(VideoPlayer.AudioCodec,eac3_ddp_atmos) | String.IsEqual(VideoPlayer.AudioCodec,truehd_atmos) | String.IsEqual(VideoPlayer.AudioCodec,dtshd_ma_x) | String.IsEqual(VideoPlayer.AudioCodec,dtshd_ma_x_imax)] - 885 - 50 + 420 + 40 bottom - - font14 + + font12 black - !String.IsEmpty(Player.Process(deintmethod)) + !String.IsEmpty(VideoPlayer.AudioLanguage) - 885 - 50 + 425 + 40 bottom - - font14 - black - !String.IsEmpty(Player.Process(videowidth)) - - - 885 - 50 - - font14 + + font12 + true black - !String.IsEmpty(Player.CacheLevel) - 985 - -204 + 900 + 35 String.IsEqual(Window(Home).Property(PlayerInfoDialogFocus),5553) - 885 - 50 + 870 + 40 bottom - - font14 + + font12 black - !String.IsEmpty(Player.Process(audiodecoder)) + Player.HasVideo - 885 - 50 + 6 + 870 bottom - - font14 + + font8 black - !String.IsEmpty(Player.Process(audiochannels)) - - 885 - 50 - bottom - - font14 - black - !String.IsEmpty(Player.Process(audiobitspersample)) + + RAM BAR + 970 + 18 + system.memory(used) - 985 - -4 - String.IsEqual(Window(Home).Property(PlayerInfoDialogFocus),5553) + 1350 + -204 + Control.HasFocus(5553) - 885 - 50 + 520 + 40 bottom - - font14 + + font12 black - VideoPlayer.HasSubtitles + VideoPlayer.SubtitlesEnabled + !String.IsEmpty(Player.Process(subtitledecoder)) + Player.HasVideo - - - 50 - -204 - String.IsEqual(Window(Home).Property(PlayerInfoDialogFocus),5554) - 1820 - 50 + 420 + 40 bottom - - font14 + + font12 black - !String.IsEmpty(System.ScreenResolution) + Player.HasVideo - 1820 - 50 + 420 + 40 bottom - - font14 + + font12 black - !String.IsEmpty(System.FPS) + Player.HasVideo - 1820 - 50 + 520 + 40 bottom - - font14 + + font12 + true black - System.SupportsCPUUsage + !Player.Passthrough - 1820 - 50 + 520 + 40 bottom - - font14 + + font12 + true black - System.SupportsCPUUsage + Player.Passthrough - 1820 - 50 + 420 + 40 bottom - - font14 + + font12 black - !System.SupportsCPUUsage - 1820 - 50 - - font14 + 420 + 40 + bottom + + font12 black - !String.IsEmpty(System.CPUTemperature) - 20 + 15 -310 1000 100 @@ -413,27 +383,13 @@ VideoPlayer.Content(livetv) SetProperty(PlayerInfoDialogFocus,5551,Home) - - auto - 100 - 40 - - SetProperty(PlayerInfoDialogFocus,5552,Home) - auto 100 40 - + SetProperty(PlayerInfoDialogFocus,5553,Home) - - auto - 100 - 40 - - SetProperty(PlayerInfoDialogFocus,5554,Home) - diff --git a/addons/skin.estuary/xml/Home.xml b/addons/skin.estuary/xml/Home.xml index 25da58c2f53..0fdcf2df2f7 100644 --- a/addons/skin.estuary/xml/Home.xml +++ b/addons/skin.estuary/xml/Home.xml @@ -1168,8 +1168,8 @@ conditional WindowOpen WindowClose - 30 - 90 + 22 + 95 4 0 diff --git a/addons/skin.estuary/xml/Includes_Animations.xml b/addons/skin.estuary/xml/Includes_Animations.xml index a317b31c9cb..f52f3706e8b 100644 --- a/addons/skin.estuary/xml/Includes_Animations.xml +++ b/addons/skin.estuary/xml/Includes_Animations.xml @@ -34,8 +34,8 @@ WindowClose - Visible_Fade - + Visible_Fade + @@ -50,8 +50,8 @@ - Visible_Fade - Vis_FadeSlide_Right + Visible_Fade + Vis_FadeSlide_Right @@ -84,8 +84,8 @@ - Visible_Fade - Vis_FadeSlide_Left + Visible_Fade + Vis_FadeSlide_Left @@ -98,8 +98,8 @@ - OpenClose_Fade - OpenClose_FadeSlide_Left + OpenClose_Fade + OpenClose_FadeSlide_Left @@ -112,8 +112,8 @@ - OpenClose_Fade - OpenClose_FadeSlide_Right + OpenClose_Fade + OpenClose_FadeSlide_Right diff --git a/addons/skin.estuary/xml/Settings.xml b/addons/skin.estuary/xml/Settings.xml index 8d51703075c..a074d89bb26 100644 --- a/addons/skin.estuary/xml/Settings.xml +++ b/addons/skin.estuary/xml/Settings.xml @@ -114,10 +114,10 @@ icons/settings/system.png - - RunAddon(service.libreelec.settings) - icons/settings/libreelec.png - System.AddonIsEnabled(service.libreelec.settings) + + RunAddon(service.coreelec.settings) + icons/settings/coreelec.png + System.AddonIsEnabled(service.coreelec.settings) diff --git a/addons/skin.estuary/xml/SettingsSystemInfo.xml b/addons/skin.estuary/xml/SettingsSystemInfo.xml index d1b17323e0b..058cf7979e5 100644 --- a/addons/skin.estuary/xml/SettingsSystemInfo.xml +++ b/addons/skin.estuary/xml/SettingsSystemInfo.xml @@ -214,14 +214,6 @@ 420 - - Button "Thank you!" - - - - 420 - - @@ -245,7 +237,7 @@ vertical Memory Text - auto + 1420 80 top @@ -255,13 +247,13 @@ Memory BAR - 730 + 1420 16 system.memory(used) CPU Text - auto + 1420 40 center @@ -271,7 +263,7 @@ CPU BAR - 730 + 1420 16 System.CPUUsage System.SupportsCPUUsage @@ -279,91 +271,6 @@ Conditional - - 155 - 420 - auto - 50 - bottom - 10 - - black - font25_title - - - Kodi build version - 10 - 200 - 420 - 820 - horizontal - - Build label - auto - 40 - font12 - - black - - - Kodi Build Version - auto - 40 - font12 - - button_focus - black - - - - Git version - 10 - 235 - 420 - 820 - horizontal - - Git label - auto - 40 - font12 - - black - - - Git version - auto - 40 - font12 - - button_focus - black - - - - Build date - 10 - 270 - 420 - 820 - horizontal - - kodi Compiled Text - auto - 40 - font12 - - black - - - Kodi Build Date - auto - 40 - font12 - button_focus - black - - diff --git a/addons/skin.estuary/xml/SkinSettings.xml b/addons/skin.estuary/xml/SkinSettings.xml index be8e94097a1..60f11506b3c 100644 --- a/addons/skin.estuary/xml/SkinSettings.xml +++ b/addons/skin.estuary/xml/SkinSettings.xml @@ -33,8 +33,8 @@ DefaultSettingButton - !Skin.HasSetting(no_slide_animations) - Skin.ToggleSetting(no_slide_animations) + Skin.HasSetting(slide_animations) + Skin.ToggleSetting(slide_animations) diff --git a/addons/skin.estuary/xml/Variables.xml b/addons/skin.estuary/xml/Variables.xml index e2e621458ec..151d97a52c8 100644 --- a/addons/skin.estuary/xml/Variables.xml +++ b/addons/skin.estuary/xml/Variables.xml @@ -358,6 +358,7 @@ $LOCALIZE[19059] $LOCALIZE[264] $LOCALIZE[33061] + $LOCALIZE[31178] $LOCALIZE[19019] $LOCALIZE[19069] $LOCALIZE[31065] @@ -947,4 +948,80 @@ 60FFFFFF FFFFFFFF + + AAC + AAC-LC + AAC-SSR + AAC-LTP + HE-AACv2 + HE-AAC + AAC + Dolby Digital + AIFF + AIFF + AIFF + ALAC + APE + AVC + CDDA + Dolby Digital + DTS + DTS-HD HRA + DTS-HD MA + DTS-HD MA + DTS-HD MA + DTS-HD MA + Dolby Digital+ + Dolby Digital+ + FLAC + MP1 + MP2 + MP3 + MP3 + OGG + OPUS + PCM + PCM + PCM + PCM + Dolby TrueHD + Dolby TrueHD + Vorbis + WAV + WAVP + WMA-PRO + WMA + $INFO[VideoPlayer.AudioCodec] + $INFO[MusicPlayer.Codec] + $INFO[ListItem.AudioCodec] + + + [COLOR dimgrey]$LOCALIZE[36623][/COLOR] + [COLOR dimgrey]$LOCALIZE[1223][/COLOR] + [COLOR grey]$LOCALIZE[13205][/COLOR] + [COLOR grey]$VAR[SubtitleCodecVar][/COLOR] + $INFO[VideoPlayer.SubtitlesLanguage] $VAR[SubtitleCodecVar] + + + Dolby Vision + HDR10+ + HDR10 + HLG + SDR + + + Dolby Atmos + Dolby Atmos + DTS:X + DTS:X IMAX + + + P7 [COLOR orange]MEL[/COLOR] + P7 [COLOR lightgreen]FEL[/COLOR] + P$INFO[VideoPlayer.HdrDetail] + + + $INFO[Player.Process(audiodecoder)]$INFO[Player.Process(audiobitspersample),$COMMA , bits]$INFO[Player.Process(audiosamplerate),$COMMA , Hz]$INFO[Player.Process(audiolivebitrate),$COMMA ,] + $INFO[Player.Process(audiodecoder)]$INFO[Player.Process(audiosamplerate),$COMMA , Hz]$INFO[Player.Process(audiolivebitrate),$COMMA ,] + diff --git a/addons/skin.estuary/xml/VideoOSD.xml b/addons/skin.estuary/xml/VideoOSD.xml index 5dd32eef504..07b1fb18af6 100644 --- a/addons/skin.estuary/xml/VideoOSD.xml +++ b/addons/skin.estuary/xml/VideoOSD.xml @@ -150,6 +150,13 @@ PlayerControl(ShowVideoMenu) VideoPlayer.HasMenu + + + + + Action(Close) + ActivateWindow(playerprocessinfo) + diff --git a/addons/webinterface.default/addon.xml b/addons/webinterface.default/addon.xml index cef2274b676..7abab526c9f 100644 --- a/addons/webinterface.default/addon.xml +++ b/addons/webinterface.default/addon.xml @@ -2,7 +2,7 @@ @@ -59,7 +59,7 @@ Procházejte a interagujte přes prohlížeč se svou hudbou, filmy, televizními pořady a ostatním. Streamujte hudbu a videa do vašeho prohlížeče. Upravujte a spravujte vaši multimediální knihovnu Kodi. Gennemse og interager med din musik, film, tv-serier og mere via en webbrowser. Stream musik og videoer i din browser. Rediger og administrer dit Kodi-mediebibliotek. Musik, Filme, Serien und mehr mit dem Webbrowser durchsuchen und steuern, Musik und Videos im Browser streamen. Die Kodi Medienbibliothek ändern und verwalten. - Browse and interact with your Music, Movies, TV Shows and more via a web browser. Stream music and videos on your browser. Edit and manage your Kodi media library. + Browse and interact with your Music, Movies, TV Shows and more via a web browser. Stream music and videos on your browser. Edit and manage your CoreELEC media library. Navega e interactúa con tu Música, Películas, Series de TV y mas por medio de un navegador web. Reproduce música y vídeo desde el navegador. Edita y gestiona tu colección de contenidos de Kodi. Navega e interactúa con tu Música, Películas, Series de TV y mas por medio de un navegador web. Reproduce música y vídeo desde el navegador. Edita y gestiona tu colección de contenidos de Kodi. Sirvi oma meediakogu veebibrauseri kaudu. Voogesita muusikat ja videoid oma brauseris. Muuda ja halda oma Kodi meediakogu. diff --git a/addons/webinterface.default/favicon.png b/addons/webinterface.default/favicon.png index 39aea127a7b..bd2600eae51 100644 Binary files a/addons/webinterface.default/favicon.png and b/addons/webinterface.default/favicon.png differ diff --git a/addons/webinterface.default/icon-128.png b/addons/webinterface.default/icon-128.png index 85def0fd256..032b4a79fce 100644 Binary files a/addons/webinterface.default/icon-128.png and b/addons/webinterface.default/icon-128.png differ diff --git a/addons/webinterface.default/icon-144.png b/addons/webinterface.default/icon-144.png index 5da9014a3ab..21528a6394e 100644 Binary files a/addons/webinterface.default/icon-144.png and b/addons/webinterface.default/icon-144.png differ diff --git a/addons/webinterface.default/icon-152.png b/addons/webinterface.default/icon-152.png index 13024d517fc..db3fff61316 100644 Binary files a/addons/webinterface.default/icon-152.png and b/addons/webinterface.default/icon-152.png differ diff --git a/addons/webinterface.default/icon-192.png b/addons/webinterface.default/icon-192.png index d469bccbeae..f0e710f5cf6 100644 Binary files a/addons/webinterface.default/icon-192.png and b/addons/webinterface.default/icon-192.png differ diff --git a/addons/webinterface.default/icon.png b/addons/webinterface.default/icon.png index d2a6a57b0dc..a9ca1d05c26 100644 Binary files a/addons/webinterface.default/icon.png and b/addons/webinterface.default/icon.png differ diff --git a/addons/webinterface.default/images/thumbnail_default.png b/addons/webinterface.default/images/thumbnail_default.png index 463902f32e8..f43d51519cb 100644 Binary files a/addons/webinterface.default/images/thumbnail_default.png and b/addons/webinterface.default/images/thumbnail_default.png differ diff --git a/addons/webinterface.default/index.html b/addons/webinterface.default/index.html index eaf695ffc7c..5c0977e0a39 100644 --- a/addons/webinterface.default/index.html +++ b/addons/webinterface.default/index.html @@ -2,7 +2,7 @@ - Chorus 2 - Kodi web interface + Chorus 2 - CoreELEC web interface diff --git a/addons/webinterface.default/js/kodi-webinterface.js b/addons/webinterface.default/js/kodi-webinterface.js index 2a584e7ac6b..89f703cf396 100644 --- a/addons/webinterface.default/js/kodi-webinterface.js +++ b/addons/webinterface.default/js/kodi-webinterface.js @@ -1,6 +1,6 @@ /*! Chorus 2 - A web interface for Kodi. Created by Jeremy Graham - built on 23-03-2024 */ -!function(t,e){"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(p,t){function e(t,e){return e.toUpperCase()}var h=[],c=h.slice,g=h.concat,a=h.push,r=h.indexOf,n={},i=n.toString,v=n.hasOwnProperty,m={},o="1.11.1",S=function(t,e){return new S.fn.init(t,e)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,l=/^-ms-/,u=/-([\da-z])/gi;function d(t){var e=t.length,n=S.type(t);return"function"!==n&&!S.isWindow(t)&&(!(1!==t.nodeType||!e)||("array"===n||0===e||"number"==typeof e&&0>10|55296,1023&i|56320)}var t,p,w,o,i,g,d,v,_,u,c,m,x,r,y,b,s,a,S,T="sizzle"+-new Date,C=n.document,E=0,f=0,l=rt(),k=rt(),M=rt(),D=function(t,e){return t===e&&(c=!0),0},O="undefined",A={}.hasOwnProperty,e=[],N=e.pop,j=e.push,R=e.push,L=e.slice,I=e.indexOf||function(t){for(var e=0,n=this.length;e+~]|"+F+")"+F+"*"),W=new RegExp("="+F+"*([^\\]'\"]*?)"+F+"*\\]","g"),J=new RegExp(U),G=new RegExp("^"+q+"$"),X={ID:new RegExp("^#("+H+")"),CLASS:new RegExp("^\\.("+H+")"),TAG:new RegExp("^("+H.replace("w","w*")+")"),ATTR:new RegExp("^"+$),PSEUDO:new RegExp("^"+U),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+F+"*(even|odd|(([+-]|)(\\d*)n|)"+F+"*(?:([+-]|)"+F+"*(\\d+)|))"+F+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+F+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+F+"*((?:-\\d)?\\d*)"+F+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,tt=/[+~]/,et=/'|\\/g,nt=new RegExp("\\\\([\\da-f]{1,6}"+F+"?|("+F+")|.)","ig");try{R.apply(e=L.call(C.childNodes),C.childNodes),e[C.childNodes.length].nodeType}catch(t){R={apply:e.length?function(t,e){j.apply(t,L.call(e))}:function(t,e){for(var n=t.length,i=0;t[n++]=e[i++];);t.length=n-1}}}function it(t,e,n,i){var r,o,s,a,l,u,c,h,d,f;if((e?e.ownerDocument||e:C)!==x&&m(e),n=n||[],!t||"string"!=typeof t)return n;if(1!==(a=(e=e||x).nodeType)&&9!==a)return[];if(y&&!i){if(r=Z.exec(t))if(s=r[1]){if(9===a){if(!(o=e.getElementById(s))||!o.parentNode)return n;if(o.id===s)return n.push(o),n}else if(e.ownerDocument&&(o=e.ownerDocument.getElementById(s))&&S(e,o)&&o.id===s)return n.push(o),n}else{if(r[2])return R.apply(n,e.getElementsByTagName(t)),n;if((s=r[3])&&p.getElementsByClassName&&e.getElementsByClassName)return R.apply(n,e.getElementsByClassName(s)),n}if(p.qsa&&(!b||!b.test(t))){if(h=c=T,d=e,f=9===a&&t,1===a&&"object"!==e.nodeName.toLowerCase()){for(u=g(t),(c=e.getAttribute("id"))?h=c.replace(et,"\\$&"):e.setAttribute("id",h),h="[id='"+h+"'] ",l=u.length;l--;)u[l]=h+pt(u[l]);d=tt.test(t)&&dt(e.parentNode)||e,f=u.join(",")}if(f)try{return R.apply(n,d.querySelectorAll(f)),n}catch(t){}finally{c||e.removeAttribute("id")}}}return v(t.replace(B,"$1"),e,n,i)}function rt(){var i=[];return function t(e,n){return i.push(e+" ")>w.cacheLength&&delete t[i.shift()],t[e+" "]=n}}function ot(t){return t[T]=!0,t}function st(t){var e=x.createElement("div");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function at(t,e){for(var n=t.split("|"),i=t.length;i--;)w.attrHandle[n[i]]=e}function lt(t,e){var n=e&&t,i=n&&1===t.nodeType&&1===e.nodeType&&(~e.sourceIndex||1<<31)-(~t.sourceIndex||1<<31);if(i)return i;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function ut(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function ct(n){return function(t){var e=t.nodeName.toLowerCase();return("input"===e||"button"===e)&&t.type===n}}function ht(s){return ot(function(o){return o=+o,ot(function(t,e){for(var n,i=s([],t.length,o),r=i.length;r--;)t[n=i[r]]&&(t[n]=!(e[n]=t[n]))})})}function dt(t){return t&&typeof t.getElementsByTagName!==O&&t}for(t in p=it.support={},i=it.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},m=it.setDocument=function(t){var e,l=t?t.ownerDocument||t:C,n=l.defaultView;return l!==x&&9===l.nodeType&&l.documentElement?(r=(x=l).documentElement,y=!i(l),n&&n!==n.top&&(n.addEventListener?n.addEventListener("unload",function(){m()},!1):n.attachEvent&&n.attachEvent("onunload",function(){m()})),p.attributes=st(function(t){return t.className="i",!t.getAttribute("className")}),p.getElementsByTagName=st(function(t){return t.appendChild(l.createComment("")),!t.getElementsByTagName("*").length}),p.getElementsByClassName=Q.test(l.getElementsByClassName)&&st(function(t){return t.innerHTML="
",t.firstChild.className="i",2===t.getElementsByClassName("i").length}),p.getById=st(function(t){return r.appendChild(t).id=T,!l.getElementsByName||!l.getElementsByName(T).length}),p.getById?(w.find.ID=function(t,e){if(typeof e.getElementById!==O&&y){var n=e.getElementById(t);return n&&n.parentNode?[n]:[]}},w.filter.ID=function(t){var e=t.replace(nt,h);return function(t){return t.getAttribute("id")===e}}):(delete w.find.ID,w.filter.ID=function(t){var n=t.replace(nt,h);return function(t){var e=typeof t.getAttributeNode!==O&&t.getAttributeNode("id");return e&&e.value===n}}),w.find.TAG=p.getElementsByTagName?function(t,e){if(typeof e.getElementsByTagName!==O)return e.getElementsByTagName(t)}:function(t,e){var n,i=[],r=0,o=e.getElementsByTagName(t);if("*"!==t)return o;for(;n=o[r++];)1===n.nodeType&&i.push(n);return i},w.find.CLASS=p.getElementsByClassName&&function(t,e){if(typeof e.getElementsByClassName!==O&&y)return e.getElementsByClassName(t)},s=[],b=[],(p.qsa=Q.test(l.querySelectorAll))&&(st(function(t){t.innerHTML="",t.querySelectorAll("[msallowclip^='']").length&&b.push("[*^$]="+F+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||b.push("\\["+F+"*(?:value|"+P+")"),t.querySelectorAll(":checked").length||b.push(":checked")}),st(function(t){var e=l.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&b.push("name"+F+"*[*^$|!~]?="),t.querySelectorAll(":enabled").length||b.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),b.push(",.*:")})),(p.matchesSelector=Q.test(a=r.matches||r.webkitMatchesSelector||r.mozMatchesSelector||r.oMatchesSelector||r.msMatchesSelector))&&st(function(t){p.disconnectedMatch=a.call(t,"div"),a.call(t,"[s!='']:x"),s.push("!=",U)}),b=b.length&&new RegExp(b.join("|")),s=s.length&&new RegExp(s.join("|")),e=Q.test(r.compareDocumentPosition),S=e||Q.test(r.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,i=e&&e.parentNode;return t===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):t.compareDocumentPosition&&16&t.compareDocumentPosition(i)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},D=e?function(t,e){if(t===e)return c=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n||(1&(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!p.sortDetached&&e.compareDocumentPosition(t)===n?t===l||t.ownerDocument===C&&S(C,t)?-1:e===l||e.ownerDocument===C&&S(C,e)?1:u?I.call(u,t)-I.call(u,e):0:4&n?-1:1)}:function(t,e){if(t===e)return c=!0,0;var n,i=0,r=t.parentNode,o=e.parentNode,s=[t],a=[e];if(!r||!o)return t===l?-1:e===l?1:r?-1:o?1:u?I.call(u,t)-I.call(u,e):0;if(r===o)return lt(t,e);for(n=t;n=n.parentNode;)s.unshift(n);for(n=e;n=n.parentNode;)a.unshift(n);for(;s[i]===a[i];)i++;return i?lt(s[i],a[i]):s[i]===C?-1:a[i]===C?1:0},l):x},it.matches=function(t,e){return it(t,null,null,e)},it.matchesSelector=function(t,e){if((t.ownerDocument||t)!==x&&m(t),e=e.replace(W,"='$1']"),p.matchesSelector&&y&&(!s||!s.test(e))&&(!b||!b.test(e)))try{var n=a.call(t,e);if(n||p.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(nt,h),t[3]=(t[3]||t[4]||t[5]||"").replace(nt,h),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||it.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&it.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return X.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&J.test(n)&&(e=g(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(nt,h).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=l[t+" "];return e||(e=new RegExp("(^|"+F+")"+t+"("+F+"|$)"))&&l(t,function(t){return e.test("string"==typeof t.className&&t.className||typeof t.getAttribute!==O&&t.getAttribute("class")||"")})},ATTR:function(n,i,r){return function(t){var e=it.attr(t,n);return null==e?"!="===i:!i||(e+="","="===i?e===r:"!="===i?e!==r:"^="===i?r&&0===e.indexOf(r):"*="===i?r&&-1(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function _(t,n,i){if(S.isFunction(n))return S.grep(t,function(t,e){return!!n.call(t,e,t)!==i});if(n.nodeType)return S.grep(t,function(t){return t===n!==i});if("string"==typeof n){if(w.test(n))return S.filter(n,t,i);n=S.filter(n,t)}return S.grep(t,function(t){return 0<=S.inArray(t,n)!==i})}S.filter=function(t,e,n){var i=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===i.nodeType?S.find.matchesSelector(i,t)?[i]:[]:S.find.matches(t,S.grep(e,function(t){return 1===t.nodeType}))},S.fn.extend({find:function(t){var e,n=[],i=this,r=i.length;if("string"!=typeof t)return this.pushStack(S(t).filter(function(){for(e=0;e)[^>]*|#([\w-]*))$/;(S.fn.init=function(t,e){var n,i;if(!t)return this;if("string"!=typeof t)return t.nodeType?(this.context=this[0]=t,this.length=1,this):S.isFunction(t)?void 0!==x.ready?x.ready(t):t(S):(void 0!==t.selector&&(this.selector=t.selector,this.context=t.context),S.makeArray(t,this));if(!(n="<"===t.charAt(0)&&">"===t.charAt(t.length-1)&&3<=t.length?[null,t,null]:C.exec(t))||!n[1]&&e)return!e||e.jquery?(e||x).find(t):this.constructor(e).find(t);if(n[1]){if(e=e instanceof S?e[0]:e,S.merge(this,S.parseHTML(n[1],e&&e.nodeType?e.ownerDocument||e:T,!0)),b.test(n[1])&&S.isPlainObject(e))for(n in e)S.isFunction(this[n])?this[n](e[n]):this.attr(n,e[n]);return this}if((i=T.getElementById(n[2]))&&i.parentNode){if(i.id!==n[2])return x.find(t);this.length=1,this[0]=i}return this.context=T,this.selector=t,this}).prototype=S.fn,x=S(T);var E=/^(?:parents|prev(?:Until|All))/,k={children:!0,contents:!0,next:!0,prev:!0};function M(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}S.extend({dir:function(t,e,n){for(var i=[],r=t[e];r&&9!==r.nodeType&&(void 0===n||1!==r.nodeType||!S(r).is(n));)1===r.nodeType&&i.push(r),r=r[e];return i},sibling:function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n}}),S.fn.extend({has:function(t){var e,n=S(t,this),i=n.length;return this.filter(function(){for(e=0;e
a",m.leadingWhitespace=3===e.firstChild.nodeType,m.tbody=!e.getElementsByTagName("tbody").length,m.htmlSerialize=!!e.getElementsByTagName("link").length,m.html5Clone="<:nav>"!==T.createElement("nav").cloneNode(!0).outerHTML,t.type="checkbox",t.checked=!0,n.appendChild(t),m.appendChecked=t.checked,e.innerHTML="",m.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,n.appendChild(e),e.innerHTML="",m.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,m.noCloneEvent=!0,e.attachEvent&&(e.attachEvent("onclick",function(){m.noCloneEvent=!1}),e.cloneNode(!0).click()),null==m.deleteExpando){m.deleteExpando=!0;try{delete e.test}catch(t){m.deleteExpando=!1}}}(),function(){var t,e,n=T.createElement("div");for(t in{submit:!0,change:!0,focusin:!0})e="on"+t,(m[t+"Bubbles"]=e in p)||(n.setAttribute(e,"t"),m[t+"Bubbles"]=!1===n.attributes[e].expando);n=null}();var J=/^(?:input|select|textarea)$/i,G=/^key/,X=/^(?:mouse|pointer|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,K=/^([^.]*)(?:\.(.+)|)$/;function Q(){return!0}function Z(){return!1}function tt(){try{return T.activeElement}catch(t){}}function et(t){var e=nt.split("|"),n=t.createDocumentFragment();if(n.createElement)for(;e.length;)n.createElement(e.pop());return n}S.event={global:{},add:function(t,e,n,i,r){var o,s,a,l,u,c,h,d,f,p,g,v=S._data(t);if(v){for(n.handler&&(n=(l=n).handler,r=l.selector),n.guid||(n.guid=S.guid++),(s=v.events)||(s=v.events={}),(c=v.handle)||((c=v.handle=function(t){return typeof S===L||t&&S.event.triggered===t.type?void 0:S.event.dispatch.apply(c.elem,arguments)}).elem=t),a=(e=(e||"").match(O)||[""]).length;a--;)f=g=(o=K.exec(e[a])||[])[1],p=(o[2]||"").split(".").sort(),f&&(u=S.event.special[f]||{},f=(r?u.delegateType:u.bindType)||f,u=S.event.special[f]||{},h=S.extend({type:f,origType:g,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&S.expr.match.needsContext.test(r),namespace:p.join(".")},l),(d=s[f])||((d=s[f]=[]).delegateCount=0,u.setup&&!1!==u.setup.call(t,i,p,c)||(t.addEventListener?t.addEventListener(f,c,!1):t.attachEvent&&t.attachEvent("on"+f,c))),u.add&&(u.add.call(t,h),h.handler.guid||(h.handler.guid=n.guid)),r?d.splice(d.delegateCount++,0,h):d.push(h),S.event.global[f]=!0);t=null}},remove:function(t,e,n,i,r){var o,s,a,l,u,c,h,d,f,p,g,v=S.hasData(t)&&S._data(t);if(v&&(c=v.events)){for(u=(e=(e||"").match(O)||[""]).length;u--;)if(f=g=(a=K.exec(e[u])||[])[1],p=(a[2]||"").split(".").sort(),f){for(h=S.event.special[f]||{},d=c[f=(i?h.delegateType:h.bindType)||f]||[],a=a[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=d.length;o--;)s=d[o],!r&&g!==s.origType||n&&n.guid!==s.guid||a&&!a.test(s.namespace)||i&&i!==s.selector&&("**"!==i||!s.selector)||(d.splice(o,1),s.selector&&d.delegateCount--,h.remove&&h.remove.call(t,s));l&&!d.length&&(h.teardown&&!1!==h.teardown.call(t,p,v.handle)||S.removeEvent(t,f,v.handle),delete c[f])}else for(f in c)S.event.remove(t,f+e[u],n,i,!0);S.isEmptyObject(c)&&(delete v.handle,S._removeData(t,"events"))}},trigger:function(t,e,n,i){var r,o,s,a,l,u,c,h=[n||T],d=v.call(t,"type")?t.type:t,f=v.call(t,"namespace")?t.namespace.split("."):[];if(s=u=n=n||T,3!==n.nodeType&&8!==n.nodeType&&!Y.test(d+S.event.triggered)&&(0<=d.indexOf(".")&&(d=(f=d.split(".")).shift(),f.sort()),o=d.indexOf(":")<0&&"on"+d,(t=t[S.expando]?t:new S.Event(d,"object"==typeof t&&t)).isTrigger=i?2:3,t.namespace=f.join("."),t.namespace_re=t.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=n),e=null==e?[t]:S.makeArray(e,[t]),l=S.event.special[d]||{},i||!l.trigger||!1!==l.trigger.apply(n,e))){if(!i&&!l.noBubble&&!S.isWindow(n)){for(a=l.delegateType||d,Y.test(a+d)||(s=s.parentNode);s;s=s.parentNode)h.push(s),u=s;u===(n.ownerDocument||T)&&h.push(u.defaultView||u.parentWindow||p)}for(c=0;(s=h[c++])&&!t.isPropagationStopped();)t.type=1]","i"),ot=/^\s+/,st=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,at=/<([\w:]+)/,lt=/\s*$/g,gt={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:m.htmlSerialize?[0,"",""]:[1,"X
","
"]},vt=et(T).appendChild(T.createElement("div"));function mt(t,e){var n,i,r=0,o=typeof t.getElementsByTagName!==L?t.getElementsByTagName(e||"*"):typeof t.querySelectorAll!==L?t.querySelectorAll(e||"*"):void 0;if(!o)for(o=[],n=t.childNodes||t;null!=(i=n[r]);r++)!e||S.nodeName(i,e)?o.push(i):S.merge(o,mt(i,e));return void 0===e||e&&S.nodeName(t,e)?S.merge([t],o):o}function yt(t){W.test(t.type)&&(t.defaultChecked=t.checked)}function bt(t,e){return S.nodeName(t,"table")&&S.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t.appendChild(t.ownerDocument.createElement("tbody")):t}function wt(t){return t.type=(null!==S.find.attr(t,"type"))+"/"+t.type,t}function _t(t){var e=ft.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function xt(t,e){for(var n,i=0;null!=(n=t[i]);i++)S._data(n,"globalEval",!e||S._data(e[i],"globalEval"))}function St(t,e){if(1===e.nodeType&&S.hasData(t)){var n,i,r,o=S._data(t),s=S._data(e,o),a=o.events;if(a)for(n in delete s.handle,s.events={},a)for(i=0,r=a[n].length;i")?o=t.cloneNode(!0):(vt.innerHTML=t.outerHTML,vt.removeChild(o=vt.firstChild)),!(m.noCloneEvent&&m.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||S.isXMLDoc(t)))for(i=mt(o),a=mt(t),s=0;null!=(r=a[s]);++s)i[s]&&Tt(r,i[s]);if(e)if(n)for(a=a||mt(t),i=i||mt(o),s=0;null!=(r=a[s]);s++)St(r,i[s]);else St(t,o);return 0<(i=mt(o,"script")).length&&xt(i,!l&&mt(t,"script")),i=a=r=null,o},buildFragment:function(t,e,n,i){for(var r,o,s,a,l,u,c,h=t.length,d=et(e),f=[],p=0;p")+c[2],r=c[0];r--;)a=a.lastChild;if(!m.leadingWhitespace&&ot.test(o)&&f.push(e.createTextNode(ot.exec(o)[0])),!m.tbody)for(r=(o="table"!==l||lt.test(o)?""!==c[1]||lt.test(o)?0:a:a.firstChild)&&o.childNodes.length;r--;)S.nodeName(u=o.childNodes[r],"tbody")&&!u.childNodes.length&&o.removeChild(u);for(S.merge(f,a.childNodes),a.textContent="";a.firstChild;)a.removeChild(a.firstChild);a=d.lastChild}else f.push(e.createTextNode(o));for(a&&d.removeChild(a),m.appendChecked||S.grep(mt(f,"input"),yt),p=0;o=f[p++];)if((!i||-1===S.inArray(o,i))&&(s=S.contains(o.ownerDocument,o),a=mt(d.appendChild(o),"script"),s&&xt(a),n))for(r=0;o=a[r++];)dt.test(o.type||"")&&n.push(o);return a=null,d},cleanData:function(t,e){for(var n,i,r,o,s=0,a=S.expando,l=S.cache,u=m.deleteExpando,c=S.event.special;null!=(n=t[s]);s++)if((e||S.acceptData(n))&&(o=(r=n[a])&&l[r])){if(o.events)for(i in o.events)c[i]?S.event.remove(n,i):S.removeEvent(n,i,o.handle);l[r]&&(delete l[r],u?delete n[a]:typeof n.removeAttribute!==L?n.removeAttribute(a):n[a]=null,h.push(r))}}}),S.fn.extend({text:function(t){return z(this,function(t){return void 0===t?S.text(this):this.empty().append((this[0]&&this[0].ownerDocument||T).createTextNode(t))},null,t,arguments.length)},append:function(){return this.domManip(arguments,function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||bt(this,t).appendChild(t)})},prepend:function(){return this.domManip(arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=bt(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return this.domManip(arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return this.domManip(arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},remove:function(t,e){for(var n,i=t?S.filter(t,this):this,r=0;null!=(n=i[r]);r++)e||1!==n.nodeType||S.cleanData(mt(n)),n.parentNode&&(e&&S.contains(n.ownerDocument,n)&&xt(mt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){for(var t,e=0;null!=(t=this[e]);e++){for(1===t.nodeType&&S.cleanData(mt(t,!1));t.firstChild;)t.removeChild(t.firstChild);t.options&&S.nodeName(t,"select")&&(t.options.length=0)}return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return S.clone(this,t,e)})},html:function(t){return z(this,function(t){var e=this[0]||{},n=0,i=this.length;if(void 0===t)return 1===e.nodeType?e.innerHTML.replace(it,""):void 0;if("string"==typeof t&&!ct.test(t)&&(m.htmlSerialize||!rt.test(t))&&(m.leadingWhitespace||!ot.test(t))&&!gt[(at.exec(t)||["",""])[1].toLowerCase()]){t=t.replace(st,"<$1>");try{for(;n")).appendTo(e.documentElement))[0].contentWindow||Ct[0].contentDocument).document).write(),e.close(),n=Mt(t,e),Ct.detach()),kt[t]=n),n}m.shrinkWrapBlocks=function(){return null!=Et?Et:(Et=!1,(e=T.getElementsByTagName("body")[0])&&e.style?(t=T.createElement("div"),(n=T.createElement("div")).style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",e.appendChild(n).appendChild(t),typeof t.style.zoom!==L&&(t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",t.appendChild(T.createElement("div")).style.width="5px",Et=3!==t.offsetWidth),e.removeChild(n),Et):void 0);var t,e,n};var Ot,At,Nt,jt,Rt,Lt,It,Pt,Ft,Ht=/^margin/,qt=new RegExp("^("+B+")(?!px)[a-z%]+$","i"),$t=/^(top|right|bottom|left)$/;function Ut(e,n){return{get:function(){var t=e();if(null!=t){if(!t)return(this.get=n).apply(this,arguments);delete this.get}}}}function Bt(){var t,e,n,i;(e=T.getElementsByTagName("body")[0])&&e.style&&(t=T.createElement("div"),(n=T.createElement("div")).style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",e.appendChild(n).appendChild(t),t.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",Lt=It=!1,Ft=!0,p.getComputedStyle&&(Lt="1%"!==(p.getComputedStyle(t,null)||{}).top,It="4px"===(p.getComputedStyle(t,null)||{width:"4px"}).width,(i=t.appendChild(T.createElement("div"))).style.cssText=t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",t.style.width="1px",Ft=!parseFloat((p.getComputedStyle(i,null)||{}).marginRight)),t.innerHTML="
t
",(i=t.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",(Pt=0===i[0].offsetHeight)&&(i[0].style.display="",i[1].style.display="none",Pt=0===i[0].offsetHeight),e.removeChild(n))}p.getComputedStyle?(Ot=function(t){return t.ownerDocument.defaultView.getComputedStyle(t,null)},At=function(t,e,n){var i,r,o,s,a=t.style;return s=(n=n||Ot(t))?n.getPropertyValue(e)||n[e]:void 0,n&&(""!==s||S.contains(t.ownerDocument,t)||(s=S.style(t,e)),qt.test(s)&&Ht.test(e)&&(i=a.width,r=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=s,s=n.width,a.width=i,a.minWidth=r,a.maxWidth=o)),void 0===s?s:s+""}):T.documentElement.currentStyle&&(Ot=function(t){return t.currentStyle},At=function(t,e,n){var i,r,o,s,a=t.style;return null==(s=(n=n||Ot(t))?n[e]:void 0)&&a&&a[e]&&(s=a[e]),qt.test(s)&&!$t.test(e)&&(i=a.left,(o=(r=t.runtimeStyle)&&r.left)&&(r.left=t.currentStyle.left),a.left="fontSize"===e?"1em":s,s=a.pixelLeft+"px",a.left=i,o&&(r.left=o)),void 0===s?s:s+""||"auto"}),(Nt=T.createElement("div")).innerHTML="
a",(jt=(Rt=Nt.getElementsByTagName("a")[0])&&Rt.style)&&(jt.cssText="float:left;opacity:.5",m.opacity="0.5"===jt.opacity,m.cssFloat=!!jt.cssFloat,Nt.style.backgroundClip="content-box",Nt.cloneNode(!0).style.backgroundClip="",m.clearCloneStyle="content-box"===Nt.style.backgroundClip,m.boxSizing=""===jt.boxSizing||""===jt.MozBoxSizing||""===jt.WebkitBoxSizing,S.extend(m,{reliableHiddenOffsets:function(){return null==Pt&&Bt(),Pt},boxSizingReliable:function(){return null==It&&Bt(),It},pixelPosition:function(){return null==Lt&&Bt(),Lt},reliableMarginRight:function(){return null==Ft&&Bt(),Ft}})),S.swap=function(t,e,n,i){var r,o,s={};for(o in e)s[o]=t.style[o],t.style[o]=e[o];for(o in r=n.apply(t,i||[]),e)t.style[o]=s[o];return r};var Vt=/alpha\([^)]*\)/i,zt=/opacity\s*=\s*([^)]*)/,Wt=/^(none|table(?!-c[ea]).+)/,Jt=new RegExp("^("+B+")(.*)$","i"),Gt=new RegExp("^([+-])=("+B+")","i"),Xt={position:"absolute",visibility:"hidden",display:"block"},Yt={letterSpacing:"0",fontWeight:"400"},Kt=["Webkit","O","Moz","ms"];function Qt(t,e){if(e in t)return e;for(var n=e.charAt(0).toUpperCase()+e.slice(1),i=e,r=Kt.length;r--;)if((e=Kt[r]+n)in t)return e;return i}function Zt(t,e){for(var n,i,r,o=[],s=0,a=t.length;s
a",ue=ae.getElementsByTagName("a")[0],ce=(le=T.createElement("select")).appendChild(T.createElement("option")),se=ae.getElementsByTagName("input")[0],ue.style.cssText="top:1px",m.getSetAttribute="t"!==ae.className,m.style=/top/.test(ue.getAttribute("style")),m.hrefNormalized="/a"===ue.getAttribute("href"),m.checkOn=!!se.value,m.optSelected=ce.selected,m.enctype=!!T.createElement("form").enctype,le.disabled=!0,m.optDisabled=!ce.disabled,(se=T.createElement("input")).setAttribute("value",""),m.input=""===se.getAttribute("value"),se.value="t",se.setAttribute("type","radio"),m.radioValue="t"===se.value;var we=/\r/g;S.fn.extend({val:function(n){var i,t,r,e=this[0];return arguments.length?(r=S.isFunction(n),this.each(function(t){var e;1===this.nodeType&&(null==(e=r?n.call(this,t,S(this).val()):n)?e="":"number"==typeof e?e+="":S.isArray(e)&&(e=S.map(e,function(t){return null==t?"":t+""})),(i=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in i&&void 0!==i.set(this,e,"value")||(this.value=e))})):e?(i=S.valHooks[e.type]||S.valHooks[e.nodeName.toLowerCase()])&&"get"in i&&void 0!==(t=i.get(e,"value"))?t:"string"==typeof(t=e.value)?t.replace(we,""):null==t?"":t:void 0}}),S.extend({valHooks:{option:{get:function(t){var e=S.find.attr(t,"value");return null!=e?e:S.trim(S.text(t))}},select:{get:function(t){for(var e,n,i=t.options,r=t.selectedIndex,o="select-one"===t.type||r<0,s=o?null:[],a=o?r+1:i.length,l=r<0?a:o?r:0;l").append(S.parseHTML(t)).find(i):t)}).complete(n&&function(t,e){s.each(n,r||[t.responseText,e,t])}),this},S.expr.filters.animated=function(e){return S.grep(S.timers,function(t){return e===t.elem}).length};var an=p.document.documentElement;function ln(t){return S.isWindow(t)?t:9===t.nodeType&&(t.defaultView||t.parentWindow)}S.offset={setOffset:function(t,e,n){var i,r,o,s,a,l,u=S.css(t,"position"),c=S(t),h={};"static"===u&&(t.style.position="relative"),a=c.offset(),o=S.css(t,"top"),l=S.css(t,"left"),r=("absolute"===u||"fixed"===u)&&-1"'`]/g,qi=RegExp(Fi.source),$i=RegExp(Hi.source),Ui=/<%-([\s\S]+?)%>/g,Bi=/<%([\s\S]+?)%>/g,Vi=/<%=([\s\S]+?)%>/g,zi=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Wi=/\w*$/,Ji=/^\s*function[ \n\r\t]+\w/,Gi=/^0[xX]/,Xi=/^\[object .+?Constructor\]$/,Yi=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Ki=/($^)/,Qi=/[.*+?^${}()|[\]\/\\]/g,Zi=RegExp(Qi.source),tr=/\bthis\b/,er=/['\n\r\u2028\u2029\\]/g,nr=(t="[A-Z\\xc0-\\xd6\\xd8-\\xde]",e="[a-z\\xdf-\\xf6\\xf8-\\xff]+",RegExp(t+"{2,}(?="+t+e+")|"+t+"?"+e+"|"+t+"+|[0-9]+","g")),ir=" \t\v\f \ufeff\n\r\u2028\u2029 ᠎              ",rr=["Array","ArrayBuffer","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Math","Number","Object","RegExp","Set","String","_","clearTimeout","document","isFinite","parseInt","setTimeout","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","window","WinRTError"],or=-1,sr={};sr[Ei]=sr[ki]=sr[Mi]=sr[Di]=sr[Oi]=sr[Ai]=sr[Ni]=sr[ji]=sr[Ri]=!0,sr[gi]=sr[vi]=sr[Ci]=sr[mi]=sr[yi]=sr[bi]=sr[wi]=sr[n]=sr[_i]=sr[xi]=sr[Si]=sr[i]=sr[Ti]=sr[r]=!1;var ar={};ar[gi]=ar[vi]=ar[Ci]=ar[mi]=ar[yi]=ar[Ei]=ar[ki]=ar[Mi]=ar[Di]=ar[Oi]=ar[_i]=ar[xi]=ar[Si]=ar[Ti]=ar[Ai]=ar[Ni]=ar[ji]=ar[Ri]=!0,ar[bi]=ar[wi]=ar[n]=ar[i]=ar[r]=!1;var lr={leading:!1,maxWait:0,trailing:!1},o={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss"},s={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},a={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},l={function:!0,object:!0},u={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ur=l[typeof window]&&window!==(this&&this.window)?window:this,c=l[typeof exports]&&exports&&!exports.nodeType&&exports,h=l[typeof module]&&module&&!module.nodeType&&module,d=c&&h&&"object"==typeof global&&global;!d||d.global!==d&&d.window!==d&&d.self!==d||(ur=d);var f=h&&h.exports===c&&c;function cr(t,e){if(t!==e){var n=t==t,i=e==e;if(e>>1,K=L?L.BYTES_PER_ELEMENT:0,Q=r.pow(2,53)-1,Z=R&&new R;function tt(t){if(Sr(t)&&!dn(t)){if(t instanceof et)return t;if(b.call(t,"__wrapped__"))return new et(t.__wrapped__,t.__chain__,at(t.__actions__))}return new et(t)}function et(t,e,n){this.__actions__=n||[],this.__chain__=!!e,this.__wrapped__=t}var nt=tt.support={};function it(t){this.actions=null,this.dir=1,this.dropCount=0,this.filtered=!1,this.iteratees=null,this.takeCount=J,this.views=null,this.wrapped=t}function rt(){this.__data__={}}function ot(t){var e=t?t.length:0;for(this.data={hash:P(null),set:new O};e--;)this.push(t[e])}function st(t,e){var n=t.data;return("string"==typeof e||mn(e)?n.set.has(e):n.hash[e])?0:-1}function at(t,e){var n=-1,i=t.length;for(e=e||M(i);++n>>1,s=t[o];(n?s<=e:s=li)return t}else Se=0;return Wt(t,e)});function Ee(t){var e,n;return!(!Sr(t)||w.call(t)!=xi||!(b.call(t,"constructor")||"function"!=typeof(e=t.constructor)||e instanceof e))&&(Lt(t,function(t,e){n=e}),void 0===n||b.call(t,n))}function ke(t){for(var e=Mn(t),n=e.length,i=n&&t.length,r=tt.support,o=i&&be(i)&&(dn(t)||r.nonEnumArgs&&hn(t)),s=-1,a=[];++s>>0,i=M(n);++e=(t=fr(t)).length)return t;var s=i-r.length;if(s<1)return r;var a=t.slice(0,s);if(null==o)return a+r;if(_n(o)){if(t.slice(s).search(o)){var l,u,c=t.slice(0,s);for(o.global||(o=m(o.source,(Wi.exec(o)||"")+"g")),o.lastIndex=0;l=o.exec(c);)u=l.index;a=a.slice(0,null==u?s:u)}}else if(t.indexOf(o,s)!=s){var h=a.lastIndexOf(o);-1").attr(t);this.setElement(e,!1)}}}),a.sync=function(t,e,n){var i=v[t];x.defaults(n=n||{},{emulateHTTP:a.emulateHTTP,emulateJSON:a.emulateJSON});var r={type:i,dataType:"json"};if(n.url||(r.url=x.result(e,"url")||A()),null!=n.data||!e||"create"!==t&&"update"!==t&&"patch"!==t||(r.contentType="application/json",r.data=JSON.stringify(n.attrs||e.toJSON(n))),n.emulateJSON&&(r.contentType="application/x-www-form-urlencoded",r.data=r.data?{model:r.data}:{}),n.emulateHTTP&&("PUT"===i||"DELETE"===i||"PATCH"===i)){r.type="POST",n.emulateJSON&&(r.data._method=i);var o=n.beforeSend;n.beforeSend=function(t){if(t.setRequestHeader("X-HTTP-Method-Override",i),o)return o.apply(this,arguments)}}"GET"===r.type||n.emulateJSON||(r.processData=!1),"PATCH"===r.type&&g&&(r.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")});var s=n.xhr=a.ajax(x.extend(r,n));return e.trigger("request",e,s,n),s};var g=!("undefined"==typeof window||!window.ActiveXObject||window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent),v={create:"POST",update:"PUT",patch:"PATCH",delete:"DELETE",read:"GET"};a.ajax=function(){return a.$.ajax.apply(a.$,arguments)};var m=a.Router=function(t){(t=t||{}).routes&&(this.routes=t.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},y=/\((.*?)\)/g,b=/(\(\?)?:\w+/g,w=/\*\w+/g,_=/[\-{}\[\]+?.,\\\^$|#\s]/g;x.extend(m.prototype,o,{initialize:function(){},route:function(n,i,r){x.isRegExp(n)||(n=this._routeToRegExp(n)),x.isFunction(i)&&(r=i,i=""),r=r||this[i];var o=this;return a.history.route(n,function(t){var e=o._extractParameters(n,t);o.execute(r,e),o.trigger.apply(o,["route:"+i].concat(e)),o.trigger("route",i,e),a.history.trigger("route",o,i,e)}),this},execute:function(t,e){t&&t.apply(this,e)},navigate:function(t,e){return a.history.navigate(t,e),this},_bindRoutes:function(){if(this.routes){this.routes=x.result(this,"routes");for(var t,e=x.keys(this.routes);null!=(t=e.pop());)this.route(t,this.routes[t])}},_routeToRegExp:function(t){return t=t.replace(_,"\\$&").replace(y,"(?:$1)?").replace(b,function(t,e){return e?t:"([^/?]+)"}).replace(w,"([^?]*?)"),new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var n=t.exec(e).slice(1);return x.map(n,function(t,e){return e===n.length-1?t||null:t?decodeURIComponent(t):null})}});var C=a.History=function(){this.handlers=[],x.bindAll(this,"checkUrl"),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)},E=/^[#\/]|\s+$/g,k=/^\/+|\/+$/g,M=/msie [\w.]+/,D=/\/$/,O=/#.*$/;C.started=!1,x.extend(C.prototype,o,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(null==t)if(this._hasPushState||!this._wantsHashChange||e){t=decodeURI(this.location.pathname+this.location.search);var n=this.root.replace(D,"");t.indexOf(n)||(t=t.slice(n.length))}else t=this.getHash();return t.replace(E,"")},start:function(t){if(C.started)throw new Error("Backbone.history has already been started");C.started=!0,this.options=x.extend({root:"/"},this.options,t),this.root=this.options.root,this._wantsHashChange=!1!==this.options.hashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var e=this.getFragment(),n=document.documentMode,i=M.exec(navigator.userAgent.toLowerCase())&&(!n||n<=7);if(this.root=("/"+this.root+"/").replace(k,"/"),i&&this._wantsHashChange){var r=a.$('