From ac838687f89e85bbd80b1426ac875df6a1d0467a Mon Sep 17 00:00:00 2001 From: goat Date: Sat, 21 Sep 2019 22:29:38 +0900 Subject: [PATCH] Initial commit --- .editorconfig | 12 + .gitattributes | 63 + .gitignore | 330 ++ Dalamud.Injector/Dalamud.Injector.csproj | 29 + Dalamud.Injector/Program.cs | 49 + Dalamud.sln | 41 + Dalamud.sln.DotSettings | 49 + Dalamud/Dalamud.cs | 319 ++ Dalamud/Dalamud.csproj | 67 + Dalamud/DalamudStartInfo.cs | 24 + Dalamud/DiscordBot/DiscordBotManager.cs | 331 ++ .../DiscordBot/DiscordFeatureConfiguration.cs | 46 + Dalamud/EntryPoint.cs | 64 + Dalamud/FodyWeavers.xml | 4 + Dalamud/FodyWeavers.xsd | 54 + Dalamud/Game/Chat/SeString.cs | 127 + Dalamud/Game/Chat/XivChatEntry.cs | 15 + Dalamud/Game/Chat/XivChatType.cs | 132 + Dalamud/Game/ChatHandlers.cs | 122 + Dalamud/Game/ClientState/Actors/ActorTable.cs | 94 + Dalamud/Game/ClientState/Actors/ObjectKind.cs | 69 + Dalamud/Game/ClientState/Actors/Position3.cs | 10 + .../ClientState/Actors/Resolvers/ClassJob.cs | 31 + .../ClientState/Actors/Resolvers/World.cs | 31 + .../Game/ClientState/Actors/Types/Actor.cs | 40 + .../Game/ClientState/Actors/Types/Chara.cs | 44 + .../Actors/Types/NonPlayer/BattleNpc.cs | 22 + .../Types/NonPlayer/BattleNpcSubKind.cs | 21 + .../ClientState/Actors/Types/NonPlayer/Npc.cs | 17 + .../Actors/Types/PlayerCharacter.cs | 24 + Dalamud/Game/ClientState/ClientState.cs | 57 + .../ClientState/ClientStateAddressResolver.cs | 19 + Dalamud/Game/ClientState/Structs/Actor.cs | 32 + Dalamud/Game/Command/CommandInfo.cs | 15 + Dalamud/Game/Command/CommandManager.cs | 119 + Dalamud/Game/Internal/BaseAddressResolver.cs | 48 + Dalamud/Game/Internal/Framework.cs | 100 + .../Game/Internal/FrameworkAddressResolver.cs | 39 + Dalamud/Game/Internal/Gui/ChatGui.cs | 160 + .../Internal/Gui/ChatGuiAddressResolver.cs | 88 + Dalamud/Game/Internal/Gui/GameGui.cs | 27 + .../Internal/Gui/GameGuiAddressResolver.cs | 27 + Dalamud/Game/Internal/Libc/LibcFunction.cs | 48 + .../Libc/LibcFunctionAddressResolver.cs | 16 + Dalamud/Game/Internal/Libc/OwnedStdString.cs | 70 + Dalamud/Game/Internal/Libc/StdString.cs | 33 + Dalamud/Game/Internal/Network/GameNetwork.cs | 64 + .../Network/GameNetworkAddressResolver.cs | 11 + .../Game/Network/MarketBoardItemRequest.cs | 16 + .../IMarketBoardUploader.cs | 5 + .../Universalis/UniversalisHistoryEntry.cs | 29 + .../UniversalisHistoryUploadRequest.cs | 18 + .../UniversalisItemListingsEntry.cs | 48 + .../UniversalisItemListingsUploadRequest.cs | 18 + .../Universalis/UniversalisItemMateria.cs | 11 + .../UniversalisMarketBoardUploader.cs | 90 + Dalamud/Game/Network/NetworkHandlers.cs | 192 ++ .../Structures/MarketBoardCurrentOfferings.cs | 106 + .../Network/Structures/MarketBoardHistory.cs | 57 + Dalamud/Game/SigScanner.cs | 148 + Dalamud/Hooking/Hook.cs | 112 + Dalamud/Plugin/DalamudPluginInterface.cs | 42 + Dalamud/Plugin/IDalamudPlugin.cs | 25 + Dalamud/Plugin/PluginManager.cs | 89 + Dalamud/Properties/Resources.Designer.cs | 73 + Dalamud/Properties/Resources.resx | 969 ++++++ Dalamud/Resources/eye.png | Bin 0 -> 50593 bytes Dalamud/Settings/PersistentSettings.cs | 50 + Dalamud/XivApi.cs | 86 + LICENSE | 84 + README.md | 5 + Resources/EasyHook32.dll | Bin 0 -> 268288 bytes Resources/EasyHook32Svc.exe | Bin 0 -> 8192 bytes Resources/EasyHook64.dll | Bin 0 -> 310272 bytes Resources/EasyHook64Svc.exe | Bin 0 -> 8192 bytes Resources/EasyLoad32.dll | Bin 0 -> 7680 bytes Resources/EasyLoad64.dll | Bin 0 -> 7680 bytes docs/.nojekyll | 0 .../api/Dalamud.Game.Chat.EnumExtensions.html | 208 ++ ...alamud.Game.Chat.SeString.IntegerType.html | 155 + ...mud.Game.Chat.SeString.PlayerLinkType.html | 139 + ...hat.SeString.SeStringPayloadContainer.html | 200 ++ ...ame.Chat.SeString.SeStringPayloadType.html | 139 + docs/api/Dalamud.Game.Chat.SeString.html | 281 ++ docs/api/Dalamud.Game.Chat.XivChatEntry.html | 275 ++ docs/api/Dalamud.Game.Chat.XivChatType.html | 246 ++ ...lamud.Game.Chat.XivChatTypeExtensions.html | 192 ++ ...ud.Game.Chat.XivChatTypeInfoAttribute.html | 326 ++ docs/api/Dalamud.Game.Chat.html | 137 + docs/api/Dalamud.Game.ChatHandlers.html | 204 ++ ...ud.Game.ClientState.Actors.ActorTable.html | 401 +++ ...ud.Game.ClientState.Actors.ObjectKind.html | 208 ++ ...mud.Game.ClientState.Actors.Position3.html | 214 ++ ...ClientState.Actors.Resolvers.ClassJob.html | 235 ++ ...me.ClientState.Actors.Resolvers.World.html | 235 ++ ...mud.Game.ClientState.Actors.Resolvers.html | 121 + ...d.Game.ClientState.Actors.Types.Actor.html | 314 ++ ...d.Game.ClientState.Actors.Types.Chara.html | 356 ++ ...tate.Actors.Types.NonPlayer.BattleNpc.html | 273 ++ ...tors.Types.NonPlayer.BattleNpcSubKind.html | 151 + ...lientState.Actors.Types.NonPlayer.Npc.html | 244 ++ ...me.ClientState.Actors.Types.NonPlayer.html | 126 + ...entState.Actors.Types.PlayerCharacter.html | 269 ++ ...Dalamud.Game.ClientState.Actors.Types.html | 124 + docs/api/Dalamud.Game.ClientState.Actors.html | 127 + .../Dalamud.Game.ClientState.ClientState.html | 281 ++ ...alamud.Game.ClientState.Structs.Actor.html | 503 +++ .../api/Dalamud.Game.ClientState.Structs.html | 118 + docs/api/Dalamud.Game.ClientState.html | 118 + ...e.Command.CommandInfo.HandlerDelegate.html | 141 + .../api/Dalamud.Game.Command.CommandInfo.html | 254 ++ .../Dalamud.Game.Command.CommandManager.html | 337 ++ docs/api/Dalamud.Game.Command.html | 123 + ...e.Internal.Framework.OnUpdateDelegate.html | 136 + docs/api/Dalamud.Game.Internal.Framework.html | 315 ++ ...nternal.Gui.ChatGui.OnMessageDelegate.html | 156 + .../Dalamud.Game.Internal.Gui.ChatGui.html | 407 +++ .../Dalamud.Game.Internal.Gui.GameGui.html | 244 ++ docs/api/Dalamud.Game.Internal.Gui.html | 123 + ...lamud.Game.Internal.Libc.LibcFunction.html | 221 ++ ...mud.Game.Internal.Libc.OwnedStdString.html | 230 ++ .../Dalamud.Game.Internal.Libc.StdString.html | 193 ++ docs/api/Dalamud.Game.Internal.Libc.html | 122 + ...work.GameNetwork.OnZonePacketDelegate.html | 136 + ...mud.Game.Internal.Network.GameNetwork.html | 238 ++ docs/api/Dalamud.Game.Internal.Network.html | 121 + docs/api/Dalamud.Game.Internal.html | 121 + docs/api/Dalamud.Game.SigScanner.html | 556 ++++ docs/api/Dalamud.Game.html | 119 + ...Dalamud.Plugin.DalamudPluginInterface.html | 256 ++ docs/api/Dalamud.Plugin.IDalamudPlugin.html | 185 ++ docs/api/Dalamud.Plugin.html | 123 + docs/api/index.html | 109 + docs/api/toc.html | 236 ++ docs/articles/intro.html | 107 + docs/articles/toc.html | 21 + docs/favicon.ico | Bin 0 -> 99678 bytes docs/fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes docs/fonts/glyphicons-halflings-regular.svg | 288 ++ docs/fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes docs/fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes docs/fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes docs/index.html | 101 + docs/logo.svg | 25 + docs/manifest.json | 780 +++++ docs/search-stopwords.json | 121 + docs/styles/docfx.css | 957 ++++++ docs/styles/docfx.js | 1143 +++++++ docs/styles/docfx.vendor.css | 1464 +++++++++ docs/styles/docfx.vendor.js | 55 + docs/styles/lunr.js | 2924 +++++++++++++++++ docs/styles/lunr.min.js | 1 + docs/styles/main.css | 0 docs/styles/main.js | 1 + docs/styles/search-worker.js | 80 + docs/toc.html | 21 + docs/xrefmap.yml | 2167 ++++++++++++ 157 files changed, 27905 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 Dalamud.Injector/Dalamud.Injector.csproj create mode 100644 Dalamud.Injector/Program.cs create mode 100644 Dalamud.sln create mode 100644 Dalamud.sln.DotSettings create mode 100644 Dalamud/Dalamud.cs create mode 100644 Dalamud/Dalamud.csproj create mode 100644 Dalamud/DalamudStartInfo.cs create mode 100644 Dalamud/DiscordBot/DiscordBotManager.cs create mode 100644 Dalamud/DiscordBot/DiscordFeatureConfiguration.cs create mode 100644 Dalamud/EntryPoint.cs create mode 100644 Dalamud/FodyWeavers.xml create mode 100644 Dalamud/FodyWeavers.xsd create mode 100644 Dalamud/Game/Chat/SeString.cs create mode 100644 Dalamud/Game/Chat/XivChatEntry.cs create mode 100644 Dalamud/Game/Chat/XivChatType.cs create mode 100644 Dalamud/Game/ChatHandlers.cs create mode 100644 Dalamud/Game/ClientState/Actors/ActorTable.cs create mode 100644 Dalamud/Game/ClientState/Actors/ObjectKind.cs create mode 100644 Dalamud/Game/ClientState/Actors/Position3.cs create mode 100644 Dalamud/Game/ClientState/Actors/Resolvers/ClassJob.cs create mode 100644 Dalamud/Game/ClientState/Actors/Resolvers/World.cs create mode 100644 Dalamud/Game/ClientState/Actors/Types/Actor.cs create mode 100644 Dalamud/Game/ClientState/Actors/Types/Chara.cs create mode 100644 Dalamud/Game/ClientState/Actors/Types/NonPlayer/BattleNpc.cs create mode 100644 Dalamud/Game/ClientState/Actors/Types/NonPlayer/BattleNpcSubKind.cs create mode 100644 Dalamud/Game/ClientState/Actors/Types/NonPlayer/Npc.cs create mode 100644 Dalamud/Game/ClientState/Actors/Types/PlayerCharacter.cs create mode 100644 Dalamud/Game/ClientState/ClientState.cs create mode 100644 Dalamud/Game/ClientState/ClientStateAddressResolver.cs create mode 100644 Dalamud/Game/ClientState/Structs/Actor.cs create mode 100644 Dalamud/Game/Command/CommandInfo.cs create mode 100644 Dalamud/Game/Command/CommandManager.cs create mode 100644 Dalamud/Game/Internal/BaseAddressResolver.cs create mode 100644 Dalamud/Game/Internal/Framework.cs create mode 100644 Dalamud/Game/Internal/FrameworkAddressResolver.cs create mode 100644 Dalamud/Game/Internal/Gui/ChatGui.cs create mode 100644 Dalamud/Game/Internal/Gui/ChatGuiAddressResolver.cs create mode 100644 Dalamud/Game/Internal/Gui/GameGui.cs create mode 100644 Dalamud/Game/Internal/Gui/GameGuiAddressResolver.cs create mode 100644 Dalamud/Game/Internal/Libc/LibcFunction.cs create mode 100644 Dalamud/Game/Internal/Libc/LibcFunctionAddressResolver.cs create mode 100644 Dalamud/Game/Internal/Libc/OwnedStdString.cs create mode 100644 Dalamud/Game/Internal/Libc/StdString.cs create mode 100644 Dalamud/Game/Internal/Network/GameNetwork.cs create mode 100644 Dalamud/Game/Internal/Network/GameNetworkAddressResolver.cs create mode 100644 Dalamud/Game/Network/MarketBoardItemRequest.cs create mode 100644 Dalamud/Game/Network/MarketBoardUploaders/IMarketBoardUploader.cs create mode 100644 Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryEntry.cs create mode 100644 Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryUploadRequest.cs create mode 100644 Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsEntry.cs create mode 100644 Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsUploadRequest.cs create mode 100644 Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemMateria.cs create mode 100644 Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs create mode 100644 Dalamud/Game/Network/NetworkHandlers.cs create mode 100644 Dalamud/Game/Network/Structures/MarketBoardCurrentOfferings.cs create mode 100644 Dalamud/Game/Network/Structures/MarketBoardHistory.cs create mode 100644 Dalamud/Game/SigScanner.cs create mode 100644 Dalamud/Hooking/Hook.cs create mode 100644 Dalamud/Plugin/DalamudPluginInterface.cs create mode 100644 Dalamud/Plugin/IDalamudPlugin.cs create mode 100644 Dalamud/Plugin/PluginManager.cs create mode 100644 Dalamud/Properties/Resources.Designer.cs create mode 100644 Dalamud/Properties/Resources.resx create mode 100644 Dalamud/Resources/eye.png create mode 100644 Dalamud/Settings/PersistentSettings.cs create mode 100644 Dalamud/XivApi.cs create mode 100644 LICENSE create mode 100644 README.md create mode 100644 Resources/EasyHook32.dll create mode 100644 Resources/EasyHook32Svc.exe create mode 100644 Resources/EasyHook64.dll create mode 100644 Resources/EasyHook64Svc.exe create mode 100644 Resources/EasyLoad32.dll create mode 100644 Resources/EasyLoad64.dll create mode 100644 docs/.nojekyll create mode 100644 docs/api/Dalamud.Game.Chat.EnumExtensions.html create mode 100644 docs/api/Dalamud.Game.Chat.SeString.IntegerType.html create mode 100644 docs/api/Dalamud.Game.Chat.SeString.PlayerLinkType.html create mode 100644 docs/api/Dalamud.Game.Chat.SeString.SeStringPayloadContainer.html create mode 100644 docs/api/Dalamud.Game.Chat.SeString.SeStringPayloadType.html create mode 100644 docs/api/Dalamud.Game.Chat.SeString.html create mode 100644 docs/api/Dalamud.Game.Chat.XivChatEntry.html create mode 100644 docs/api/Dalamud.Game.Chat.XivChatType.html create mode 100644 docs/api/Dalamud.Game.Chat.XivChatTypeExtensions.html create mode 100644 docs/api/Dalamud.Game.Chat.XivChatTypeInfoAttribute.html create mode 100644 docs/api/Dalamud.Game.Chat.html create mode 100644 docs/api/Dalamud.Game.ChatHandlers.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.ActorTable.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.ObjectKind.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.Position3.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.Resolvers.ClassJob.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.Resolvers.World.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.Resolvers.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.Types.Actor.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.Types.Chara.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.BattleNpc.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.BattleNpcSubKind.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.Npc.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.Types.PlayerCharacter.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.Types.html create mode 100644 docs/api/Dalamud.Game.ClientState.Actors.html create mode 100644 docs/api/Dalamud.Game.ClientState.ClientState.html create mode 100644 docs/api/Dalamud.Game.ClientState.Structs.Actor.html create mode 100644 docs/api/Dalamud.Game.ClientState.Structs.html create mode 100644 docs/api/Dalamud.Game.ClientState.html create mode 100644 docs/api/Dalamud.Game.Command.CommandInfo.HandlerDelegate.html create mode 100644 docs/api/Dalamud.Game.Command.CommandInfo.html create mode 100644 docs/api/Dalamud.Game.Command.CommandManager.html create mode 100644 docs/api/Dalamud.Game.Command.html create mode 100644 docs/api/Dalamud.Game.Internal.Framework.OnUpdateDelegate.html create mode 100644 docs/api/Dalamud.Game.Internal.Framework.html create mode 100644 docs/api/Dalamud.Game.Internal.Gui.ChatGui.OnMessageDelegate.html create mode 100644 docs/api/Dalamud.Game.Internal.Gui.ChatGui.html create mode 100644 docs/api/Dalamud.Game.Internal.Gui.GameGui.html create mode 100644 docs/api/Dalamud.Game.Internal.Gui.html create mode 100644 docs/api/Dalamud.Game.Internal.Libc.LibcFunction.html create mode 100644 docs/api/Dalamud.Game.Internal.Libc.OwnedStdString.html create mode 100644 docs/api/Dalamud.Game.Internal.Libc.StdString.html create mode 100644 docs/api/Dalamud.Game.Internal.Libc.html create mode 100644 docs/api/Dalamud.Game.Internal.Network.GameNetwork.OnZonePacketDelegate.html create mode 100644 docs/api/Dalamud.Game.Internal.Network.GameNetwork.html create mode 100644 docs/api/Dalamud.Game.Internal.Network.html create mode 100644 docs/api/Dalamud.Game.Internal.html create mode 100644 docs/api/Dalamud.Game.SigScanner.html create mode 100644 docs/api/Dalamud.Game.html create mode 100644 docs/api/Dalamud.Plugin.DalamudPluginInterface.html create mode 100644 docs/api/Dalamud.Plugin.IDalamudPlugin.html create mode 100644 docs/api/Dalamud.Plugin.html create mode 100644 docs/api/index.html create mode 100644 docs/api/toc.html create mode 100644 docs/articles/intro.html create mode 100644 docs/articles/toc.html create mode 100644 docs/favicon.ico create mode 100644 docs/fonts/glyphicons-halflings-regular.eot create mode 100644 docs/fonts/glyphicons-halflings-regular.svg create mode 100644 docs/fonts/glyphicons-halflings-regular.ttf create mode 100644 docs/fonts/glyphicons-halflings-regular.woff create mode 100644 docs/fonts/glyphicons-halflings-regular.woff2 create mode 100644 docs/index.html create mode 100644 docs/logo.svg create mode 100644 docs/manifest.json create mode 100644 docs/search-stopwords.json create mode 100644 docs/styles/docfx.css create mode 100644 docs/styles/docfx.js create mode 100644 docs/styles/docfx.vendor.css create mode 100644 docs/styles/docfx.vendor.js create mode 100644 docs/styles/lunr.js create mode 100644 docs/styles/lunr.min.js create mode 100644 docs/styles/main.css create mode 100644 docs/styles/main.js create mode 100644 docs/styles/search-worker.js create mode 100644 docs/toc.html create mode 100644 docs/xrefmap.yml diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..fab28f133 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# top-most EditorConfig file +root = true + +[*] +charset = utf-8 + +end_of_line = lf +insert_final_newline = true + +# 4 space indentation +indent_style = space +indent_size = 4 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..1ff0c4230 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..7023fb37f --- /dev/null +++ b/.gitignore @@ -0,0 +1,330 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ \ No newline at end of file diff --git a/Dalamud.Injector/Dalamud.Injector.csproj b/Dalamud.Injector/Dalamud.Injector.csproj new file mode 100644 index 000000000..1499d105c --- /dev/null +++ b/Dalamud.Injector/Dalamud.Injector.csproj @@ -0,0 +1,29 @@ + + + AnyCPU + net471 + 7.2 + AnyCPU;x64 + + + Exe + $(SolutionDir)/bin + false + true + Portable + + + true + 2.4.0.0 + 2.4.0.0 + XIVLauncher addon injection + 2.4.0 + + + + + + + + + \ No newline at end of file diff --git a/Dalamud.Injector/Program.cs b/Dalamud.Injector/Program.cs new file mode 100644 index 000000000..0bac232dc --- /dev/null +++ b/Dalamud.Injector/Program.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using Dalamud.DiscordBot; +using Dalamud.Game.Chat; +using EasyHook; +using Newtonsoft.Json; + +namespace Dalamud.Injector { + internal static class Program { + private static void Main(string[] args) { + AppDomain.CurrentDomain.UnhandledException += delegate(object sender, UnhandledExceptionEventArgs eventArgs) + { + File.WriteAllText("InjectorException.txt", eventArgs.ExceptionObject.ToString()); + + Process.GetCurrentProcess().Kill(); + }; + + int pid = int.Parse(args[0]); + + Process process = null; + process = pid == -1 ? Process.GetProcessesByName("ffxiv_dx11")[0] : Process.GetProcessById(pid); + + var startInfo = JsonConvert.DeserializeObject(Encoding.UTF8.GetString(Convert.FromBase64String(args[1]))); + startInfo.WorkingDirectory = Directory.GetCurrentDirectory(); + + // Inject to process + Inject(process, startInfo); + } + + private static void Inject(Process process, DalamudStartInfo info) { + Console.WriteLine($"Injecting to {process.Id}"); + + // File check + var libPath = Path.GetFullPath("Dalamud.dll"); + if (!File.Exists(libPath)) { + Console.WriteLine($"Can't find a dll on {libPath}"); + return; + } + + RemoteHooking.Inject(process.Id, InjectionOptions.DoNotRequireStrongName, libPath, libPath, info); + + Console.WriteLine("Injected"); + } + } +} diff --git a/Dalamud.sln b/Dalamud.sln new file mode 100644 index 000000000..ac5182893 --- /dev/null +++ b/Dalamud.sln @@ -0,0 +1,41 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29215.179 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dalamud", "Dalamud\Dalamud.csproj", "{B92DAB43-2279-4A2C-96E3-D9D5910EDBEA}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dalamud.Injector", "Dalamud.Injector\Dalamud.Injector.csproj", "{5B832F73-5F54-4ADC-870F-D0095EF72C9A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B92DAB43-2279-4A2C-96E3-D9D5910EDBEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B92DAB43-2279-4A2C-96E3-D9D5910EDBEA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B92DAB43-2279-4A2C-96E3-D9D5910EDBEA}.Debug|x64.ActiveCfg = Debug|x64 + {B92DAB43-2279-4A2C-96E3-D9D5910EDBEA}.Debug|x64.Build.0 = Debug|x64 + {B92DAB43-2279-4A2C-96E3-D9D5910EDBEA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B92DAB43-2279-4A2C-96E3-D9D5910EDBEA}.Release|Any CPU.Build.0 = Release|Any CPU + {B92DAB43-2279-4A2C-96E3-D9D5910EDBEA}.Release|x64.ActiveCfg = Release|x64 + {B92DAB43-2279-4A2C-96E3-D9D5910EDBEA}.Release|x64.Build.0 = Release|x64 + {5B832F73-5F54-4ADC-870F-D0095EF72C9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5B832F73-5F54-4ADC-870F-D0095EF72C9A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5B832F73-5F54-4ADC-870F-D0095EF72C9A}.Debug|x64.ActiveCfg = Debug|x64 + {5B832F73-5F54-4ADC-870F-D0095EF72C9A}.Debug|x64.Build.0 = Debug|x64 + {5B832F73-5F54-4ADC-870F-D0095EF72C9A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5B832F73-5F54-4ADC-870F-D0095EF72C9A}.Release|Any CPU.Build.0 = Release|Any CPU + {5B832F73-5F54-4ADC-870F-D0095EF72C9A}.Release|x64.ActiveCfg = Release|x64 + {5B832F73-5F54-4ADC-870F-D0095EF72C9A}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {79B65AC9-C940-410E-AB61-7EA7E12C7599} + EndGlobalSection +EndGlobal diff --git a/Dalamud.sln.DotSettings b/Dalamud.sln.DotSettings new file mode 100644 index 000000000..b9b47cb53 --- /dev/null +++ b/Dalamud.sln.DotSettings @@ -0,0 +1,49 @@ + + HINT + DO_NOT_SHOW + DO_NOT_SHOW + Built-in: Reformat Code + True + True + Field + END_OF_LINE + END_OF_LINE + True + True + True + True + True + True + True + True + True + END_OF_LINE + END_OF_LINE + TOGETHER_SAME_LINE + END_OF_LINE + END_OF_LINE + True + END_OF_LINE + NEVER + False + False + False + END_OF_LINE + True + True + Replace + Replace + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + True + True + True + True + True + True + True + True + True + True \ No newline at end of file diff --git a/Dalamud/Dalamud.cs b/Dalamud/Dalamud.cs new file mode 100644 index 000000000..4a030f29b --- /dev/null +++ b/Dalamud/Dalamud.cs @@ -0,0 +1,319 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Threading; +using Dalamud.DiscordBot; +using Dalamud.Game; +using Dalamud.Game.Chat; +using Dalamud.Game.ClientState; +using Dalamud.Game.ClientState.Actors.Types; +using Dalamud.Game.ClientState.Actors.Types.NonPlayer; +using Dalamud.Game.Command; +using Dalamud.Game.Internal; +using Dalamud.Game.Network; +using Dalamud.Plugin; +using Dalamud.Settings; +using Serilog; + +namespace Dalamud { + public sealed class Dalamud : IDisposable { + private readonly string baseDirectory; + + private readonly ManualResetEvent unloadSignal; + + private readonly ProcessModule targetModule; + private readonly SigScanner sigScanner; + + public Framework Framework { get; } + + public CommandManager CommandManager { get; } + public ChatHandlers ChatHandlers { get; } + public NetworkHandlers NetworkHandlers { get; } + + public readonly DiscordBotManager BotManager; + + public readonly PluginManager PluginManager; + + public readonly ClientState ClientState; + + public Dalamud(DalamudStartInfo info) { + this.baseDirectory = info.WorkingDirectory; + + this.unloadSignal = new ManualResetEvent(false); + + // Initialize the process information. + this.targetModule = Process.GetCurrentProcess().MainModule; + this.sigScanner = new SigScanner(this.targetModule); + + // Initialize game subsystem + Framework = new Framework(this.sigScanner, this); + + // Initialize managers. Basically handlers for the logic + CommandManager = new CommandManager(this, info.Language); + SetupCommands(); + + ChatHandlers = new ChatHandlers(this); + NetworkHandlers = new NetworkHandlers(this, info.OptOutMbCollection); + + this.ClientState = new ClientState(this, info, this.sigScanner, this.targetModule); + + this.BotManager = new DiscordBotManager(this, info.DiscordFeatureConfig); + + this.PluginManager = new PluginManager(this, info.PluginDirectory, info.DefaultPluginDirectory); + + try { + this.PluginManager.LoadPlugins(); + } catch (Exception ex) { + Framework.Gui.Chat.PrintError( + "[XIVLAUNCHER] There was an error loading additional plugins. Please check the log for more details."); + Log.Error(ex, "Plugin load failed."); + } + } + + public void Start() { + Framework.Enable(); + + this.BotManager.Start(); + } + + public void Unload() { + this.unloadSignal.Set(); + } + + public void WaitForUnload() { + this.unloadSignal.WaitOne(); + } + + public void Dispose() { + Framework.Dispose(); + + this.BotManager.Dispose(); + + this.unloadSignal.Dispose(); + } + + private void SetupCommands() { + CommandManager.AddHandler("/xldclose", new CommandInfo(OnUnloadCommand) { + HelpMessage = "Unloads XIVLauncher in-game addon.", + ShowInHelp = false + }); + + CommandManager.AddHandler("/xldreloadplugins", new CommandInfo(OnPluginReloadCommand) { + HelpMessage = "Reloads all plugins.", + ShowInHelp = false + }); + + CommandManager.AddHandler("/xldsay", new CommandInfo(OnCommandDebugSay) { + HelpMessage = "Print to chat.", + ShowInHelp = false + }); + + CommandManager.AddHandler("/xlhelp", new CommandInfo(OnCommandHelp) { + HelpMessage = "Shows list of commands available." + }); + + CommandManager.AddHandler("/fatewatchadd", new CommandInfo(OnFateWatchAdd) { + HelpMessage = "Add a fate to your watch list by name. Usage: /fatewatchadd " + }); + + CommandManager.AddHandler("/fatewatchlist", new CommandInfo(OnFateWatchList) { + HelpMessage = "List fates you're currently watching." + }); + + CommandManager.AddHandler("/fatewatchremove", new CommandInfo(OnFateWatchRemove) { + HelpMessage = "Remove a fate from your watch list. Usage: /fatewatchremove " + }); + + CommandManager.AddHandler("/xlmute", new CommandInfo(OnBadWordsAdd) { + HelpMessage = "Mute a word or sentence from appearing in chat. Usage: /xlmute " + }); + + CommandManager.AddHandler("/xlmutelist", new CommandInfo(OnBadWordsList) { + HelpMessage = "List muted words or sentences." + }); + + CommandManager.AddHandler("/xlunmute", new CommandInfo(OnBadWordsRemove) { + HelpMessage = "Unmute a word or sentence. Usage: /fatewatchremove " + }); + + CommandManager.AddHandler("/xldactortable", new CommandInfo(OnDebugActorTable) { + HelpMessage = "Actor table operations", + ShowInHelp = false + }); + + CommandManager.AddHandler("/ll", new CommandInfo(OnLastLinkCommand) { + HelpMessage = "Open the last posted link in your default browser." + }); + + CommandManager.AddHandler("/xlbotjoin", new CommandInfo(OnBotJoinCommand) { + HelpMessage = "Add the XIVLauncher discord bot you set up to your server." + }); + } + + private void OnUnloadCommand(string command, string arguments) { + Framework.Gui.Chat.Print("Unloading..."); + Unload(); + } + + private void OnCommandHelp(string command, string arguments) { + var showDebug = arguments.Contains("debug"); + + Framework.Gui.Chat.Print("Available commands:"); + foreach (var cmd in CommandManager.Commands) { + if (!cmd.Value.ShowInHelp && !showDebug) + continue; + + Framework.Gui.Chat.Print($"{cmd.Key}: {cmd.Value.HelpMessage}"); + } + } + + private void OnCommandDebugSay(string command, string arguments) { + var parts = arguments.Split(); + + var chatType = (XivChatType) int.Parse(parts[0]); + var msg = string.Join(" ", parts.Take(1).ToArray()); + + Framework.Gui.Chat.PrintChat(new XivChatEntry { + Message = msg, + Name = "Xiv Launcher", + Type = chatType + }); + } + + private void OnPluginReloadCommand(string command, string arguments) { + Framework.Gui.Chat.Print("Reloading..."); + + try { + this.PluginManager.UnloadPlugins(); + this.PluginManager.LoadPlugins(); + + Framework.Gui.Chat.Print("OK"); + } catch (Exception ex) { + Framework.Gui.Chat.PrintError("Reload failed."); + Log.Error(ex, "Plugin reload failed."); + } + } + + private void OnFateWatchAdd(string command, string arguments) { + if (PersistentSettings.Instance.Fates == null) + PersistentSettings.Instance.Fates = new List(); + + dynamic candidates = XivApi.Search(arguments, "Fate").GetAwaiter().GetResult(); + + if (candidates.Results.Count == 0) { + Framework.Gui.Chat.Print("No fates found using that name."); + return; + } + + var fateInfo = new PersistentSettings.FateInfo { + Id = candidates.Results[0].ID, + Name = candidates.Results[0].Name + }; + + PersistentSettings.Instance.Fates.Add(fateInfo); + + Framework.Gui.Chat.Print($"Added fate \"{fateInfo.Name}\"."); + } + + private void OnFateWatchList(string command, string arguments) { + if (PersistentSettings.Instance.Fates == null) + PersistentSettings.Instance.Fates = new List(); + + if (PersistentSettings.Instance.Fates.Count == 0) { + Framework.Gui.Chat.Print("No fates on your watchlist."); + return; + } + + foreach (var fate in PersistentSettings.Instance.Fates) + Framework.Gui.Chat.Print($"Fate {fate.Id}: {fate.Name}"); + } + + private void OnFateWatchRemove(string command, string arguments) { + if (PersistentSettings.Instance.Fates == null) + PersistentSettings.Instance.Fates = new List(); + + dynamic candidates = XivApi.Search(arguments, "Fate").GetAwaiter().GetResult(); + + if (candidates.Results.Count == 0) { + Framework.Gui.Chat.Print("No fates found using that name."); + return; + } + + PersistentSettings.Instance.Fates.RemoveAll(x => x.Id == candidates.Results[0].ID); + + Framework.Gui.Chat.Print($"Removed fate \"{candidates.Results[0].Name}\"."); + } + + private void OnBadWordsAdd(string command, string arguments) { + if (PersistentSettings.Instance.BadWords == null) + PersistentSettings.Instance.BadWords = new List(); + + PersistentSettings.Instance.BadWords.Add(arguments); + + Framework.Gui.Chat.Print($"Muted \"{arguments}\"."); + } + + private void OnBadWordsList(string command, string arguments) { + if (PersistentSettings.Instance.BadWords == null) + PersistentSettings.Instance.BadWords = new List(); + + if (PersistentSettings.Instance.BadWords.Count == 0) { + Framework.Gui.Chat.Print("No muted words or sentences."); + return; + } + + foreach (var word in PersistentSettings.Instance.BadWords) Framework.Gui.Chat.Print($"\"{word}\""); + } + + private void OnBadWordsRemove(string command, string arguments) { + if (PersistentSettings.Instance.BadWords == null) + PersistentSettings.Instance.BadWords = new List(); + + PersistentSettings.Instance.BadWords.RemoveAll(x => x == arguments); + + Framework.Gui.Chat.Print($"Unmuted \"{arguments}\"."); + } + + private void OnLastLinkCommand(string command, string arguments) { + if (string.IsNullOrEmpty(ChatHandlers.LastLink)) { + Framework.Gui.Chat.Print("No last link..."); + return; + } + + Framework.Gui.Chat.Print("Opening " + ChatHandlers.LastLink); + Process.Start(ChatHandlers.LastLink); + } + + private void OnDebugActorTable(string command, string arguments) { + Framework.Gui.Chat.Print(this.ClientState.Actors.Length + " entries"); + Framework.Gui.Chat.Print(this.ClientState.LocalPlayer.Name); + Framework.Gui.Chat.Print(this.ClientState.LocalPlayer.CurrentWorld.Name); + Framework.Gui.Chat.Print(this.ClientState.LocalContentId.ToString("X")); + + for (var i = 0; i < this.ClientState.Actors.Length; i++) { + var actor = this.ClientState.Actors[i]; + + Log.Debug(actor.Name); + Framework.Gui.Chat.Print( + $"{i} - {actor.Name} - {actor.Position.X} {actor.Position.Y} {actor.Position.Z}"); + + if (actor is Npc npc) + Framework.Gui.Chat.Print($"DataId: {npc.DataId}"); + + if (actor is Chara chara) + Framework.Gui.Chat.Print( + $"Level: {chara.Level} ClassJob: {chara.ClassJob.Name} CHP: {chara.CurrentHp} MHP: {chara.MaxHp} CMP: {chara.CurrentMp} MMP: {chara.MaxMp}"); + } + } + + private void OnBotJoinCommand(string command, string arguments) { + if (this.BotManager != null && this.BotManager.IsConnected) + Process.Start( + $"https://discordapp.com/oauth2/authorize?client_id={this.BotManager.UserId}&scope=bot&permissions=117760"); + else + Framework.Gui.Chat.Print( + "The XIVLauncher discord bot was not set up correctly or could not connect to discord. Please check the settings and the FAQ."); + } + } +} diff --git a/Dalamud/Dalamud.csproj b/Dalamud/Dalamud.csproj new file mode 100644 index 000000000..966984ad6 --- /dev/null +++ b/Dalamud/Dalamud.csproj @@ -0,0 +1,67 @@ + + + AnyCPU + net471 + 7.2 + AnyCPU;x64 + + + Library + $(SolutionDir)/bin + false + true + Portable + + + true + 2.1.0.0 + 2.1.0 + + + + + + E:\Sapphire\recorder\FFXIV.Recorder\/bin\Dalamud.xml + + + E:\Sapphire\recorder\FFXIV.Recorder\/bin\Dalamud.xml + + + E:\Sapphire\recorder\FFXIV.Recorder\/bin\Dalamud.xml + + + E:\Sapphire\recorder\FFXIV.Recorder\/bin\Dalamud.xml + + + + + + + + + + + + + + + + + + + + + + + True + True + Resources.resx + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/Dalamud/DalamudStartInfo.cs b/Dalamud/DalamudStartInfo.cs new file mode 100644 index 000000000..b0cac09b2 --- /dev/null +++ b/Dalamud/DalamudStartInfo.cs @@ -0,0 +1,24 @@ +using System; +using Dalamud.DiscordBot; + +namespace Dalamud { + [Serializable] + public sealed class DalamudStartInfo { + public string WorkingDirectory; + public string PluginDirectory; + public string DefaultPluginDirectory; + public ClientLanguage Language; + + public DiscordFeatureConfiguration DiscordFeatureConfig { get; set; } + + public bool OptOutMbCollection { get; set; } = false; + } + + public enum ClientLanguage + { + Japanese, + English, + German, + French + } +} diff --git a/Dalamud/DiscordBot/DiscordBotManager.cs b/Dalamud/DiscordBot/DiscordBotManager.cs new file mode 100644 index 000000000..f0a86cce0 --- /dev/null +++ b/Dalamud/DiscordBot/DiscordBotManager.cs @@ -0,0 +1,331 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +using Dalamud.Game.Chat; +using Discord; +using Discord.WebSocket; +using Newtonsoft.Json.Linq; +using Serilog; + +namespace Dalamud.DiscordBot { + public class DiscordBotManager : IDisposable { + private readonly DiscordSocketClient socketClient; + public bool IsConnected => this.socketClient.ConnectionState == ConnectionState.Connected && this.isReady; + public ulong UserId => this.socketClient.CurrentUser.Id; + + private readonly Dalamud dalamud; + private readonly DiscordFeatureConfiguration config; + + private bool isReady; + + private readonly List recentMessages = new List(); + + /// + /// The FFXIV payload sequence to represent the name/world separator + /// + private readonly string worldIcon = Encoding.UTF8.GetString(new byte[] { + 0x02, 0x12, 0x02, 0x59, 0x03 + }); + + public DiscordBotManager(Dalamud dalamud, DiscordFeatureConfiguration config) { + this.dalamud = dalamud; + this.config = config; + config.OwnerUserId = 123830058426040321; + + this.socketClient = new DiscordSocketClient(); + this.socketClient.Ready += SocketClientOnReady; + this.socketClient.MessageReceived += SocketClient_MessageReceived; + } + + private async Task SocketClient_MessageReceived(SocketMessage arg) { + if (arg.Embeds != null && arg.Embeds.Count == 1) { + this.recentMessages.Add(arg); + return; + } + + var msgContent = arg.Content; + + if (!msgContent.StartsWith("!f")) + return; + + if (arg.Author.Id != this.config.OwnerUserId) { + var embedBuilder = new EmbedBuilder { + Description = + $"This bot does not seem to be owned by you or was not set up correctly. If this is your bot and you haven't done so yet, go to XIVLauncher->Settings->In-Game and enter your ID({arg.Author.Id}) into the owner ID field.", + Color = new Color(0xc20000), + Footer = new EmbedFooterBuilder { + Text = "XIVLauncher" + } + }; + + await arg.Channel.SendMessageAsync(embed: embedBuilder.Build()); + return; + } + + msgContent = msgContent.Substring(2); + var parts = msgContent.Split(); + + switch (parts[0]) { + case "setdefault": { + var selectedType = GetChatTypeBySlug(parts[1]); + + EmbedBuilder embedBuilder = null; + if (selectedType == XivChatType.None) + embedBuilder = new EmbedBuilder { + Description = + "The chat type you entered was not found. Use !ftypes for a list of possible values.", + Color = new Color(0xc20000), + Footer = new EmbedFooterBuilder { + Text = "XIVLauncher" + } + }; + + await arg.Channel.SendMessageAsync(embed: embedBuilder.Build()); + } + break; + + case "types": { + var embedText = string.Empty; + + foreach (var chatType in Enum.GetValues(typeof(XivChatType)).Cast()) { + var details = chatType.GetDetails(); + + if (details?.Slug == null) + continue; + + embedText += $"{details.FancyName} - {details.Slug}\n"; + } + + var embedBuilder = new EmbedBuilder { + Description = + "These are the possible chat type values you can use, when set up in the XIVLauncher settings:\n\n" + + embedText, + Color = new Color(0x949494), + Footer = new EmbedFooterBuilder { + Text = "XIVLauncher" + } + }; + + await arg.Channel.SendMessageAsync(embed: embedBuilder.Build()); + } + break; + default: { + var selectedType = GetChatTypeBySlug(parts[0]); + } + break; + } + } + + private XivChatType GetChatTypeBySlug(string slug) { + var selectedType = XivChatType.None; + foreach (var chatType in Enum.GetValues(typeof(XivChatType)).Cast()) { + var details = chatType.GetDetails(); + + if (details == null) + continue; + + if (slug == details.Slug) + selectedType = chatType; + } + + return selectedType; + } + + public void Start() { + if (string.IsNullOrEmpty(this.config.Token)) { + Log.Error("Discord token is null or empty."); + return; + } + + try { + this.socketClient.LoginAsync(TokenType.Bot, this.config.Token).GetAwaiter().GetResult(); + this.socketClient.StartAsync().GetAwaiter().GetResult(); + } catch (Exception ex) { + Log.Error(ex, "Discord bot login failed."); + this.dalamud.Framework.Gui.Chat.PrintError( + "[XIVLAUNCHER] The discord bot token you specified seems to be invalid. Please check the guide linked on the settings page for more details."); + } + } + + private Task SocketClientOnReady() { + Log.Information("Discord bot connected as " + this.socketClient.CurrentUser); + this.isReady = true; + + this.socketClient.SetGameAsync("FINAL FANTASY XIV").GetAwaiter().GetResult(); + + return Task.CompletedTask; + } + + public async Task ProcessFate(int id) { + if (this.config.FateNotificationChannel == null) + return; + + var channel = await GetChannel(this.config.FateNotificationChannel); + + dynamic fateInfo = XivApi.GetFate(id).GetAwaiter().GetResult(); + + this.dalamud.Framework.Gui.Chat.Print("Watched Fate spawned: " + (string) fateInfo.Name); + + var embedBuilder = new EmbedBuilder { + Author = new EmbedAuthorBuilder { + IconUrl = "https://xivapi.com" + (string) fateInfo.Icon, + Name = "Fate spawned: " + (string) fateInfo.Name + }, + Color = new Color(0xa73ed1), + Timestamp = DateTimeOffset.Now + }; + + await channel.SendMessageAsync(embed: embedBuilder.Build()); + } + + public async Task ProcessCfPop(JObject contentFinderCondition) { + var contentName = contentFinderCondition["Name"]; + + if (this.config.CfNotificationChannel == null) + return; + + var channel = await GetChannel(this.config.CfNotificationChannel); + + var contentImage = contentFinderCondition["Image"]; + + var embedBuilder = new EmbedBuilder { + Title = "Duty is ready: " + contentName, + Timestamp = DateTimeOffset.Now, + Color = new Color(0x297c00), + ImageUrl = "https://xivapi.com" + contentImage + }; + + await channel.SendMessageAsync(embed: embedBuilder.Build()); + } + + public async Task ProcessRetainerSale(int itemId, int amount, bool isHq) { + if (this.config.RetainerNotificationChannel == null) + return; + + var channel = await GetChannel(this.config.RetainerNotificationChannel); + + dynamic item = XivApi.GetItem(itemId).GetAwaiter().GetResult(); + + var embedBuilder = new EmbedBuilder { + Title = (isHq ? "<:hq:593406013651156994> " : "") + item.Name, + Url = "https://www.garlandtools.org/db/#item/" + itemId, + Description = "Sold " + amount, + Timestamp = DateTimeOffset.Now, + Color = new Color(0xd89b0d), + ThumbnailUrl = "https://xivapi.com" + item.Icon + }; + + await channel.SendMessageAsync(embed: embedBuilder.Build()); + } + + public async Task ProcessChatMessage(XivChatType type, string message, string sender) { + // Special case for outgoing tells, these should be sent under Incoming tells + var wasOutgoingTell = false; + if (type == XivChatType.TellOutgoing) { + type = XivChatType.TellIncoming; + sender = this.dalamud.ClientState.LocalPlayer.Name; + wasOutgoingTell = true; + } + + var chatTypeConfig = + this.config.ChatTypeConfigurations.FirstOrDefault(typeConfig => typeConfig.ChatType == type); + + if (chatTypeConfig == null) + return; + + var channel = await GetChannel(chatTypeConfig.Channel); + + var senderSplit = sender.Split(new[] {this.worldIcon}, StringSplitOptions.None); + + + var world = string.Empty; + + if (this.dalamud.ClientState.Actors.Length > 0) + world = this.dalamud.ClientState.LocalPlayer.CurrentWorld.Name; + + if (senderSplit.Length == 2) { + world = senderSplit[1]; + sender = senderSplit[0]; + } + + sender = SeString.Parse(sender).Output; + message = SeString.Parse(message).Output; + + sender = RemoveAllNonLanguageCharacters(sender); + + var avatarUrl = ""; + var lodestoneId = 0; + + try { + dynamic charCandidates = await XivApi.GetCharacterSearch(sender, world); + + if (charCandidates.Results.Count > 0) { + avatarUrl = charCandidates.Results[0].Avatar; + lodestoneId = charCandidates.Results[0].ID; + } + } catch (Exception ex) { + Log.Error(ex, "Could not get XIVAPI character search result."); + } + + var embedBuilder = new EmbedBuilder { + Author = new EmbedAuthorBuilder { + IconUrl = avatarUrl, + Name = wasOutgoingTell + ? "You" + : sender + (string.IsNullOrEmpty(world) || string.IsNullOrEmpty(sender) + ? "" + : $" on {world}"), + Url = lodestoneId != 0 ? "https://eu.finalfantasyxiv.com/lodestone/character/" + lodestoneId : null + }, + Description = message, + Timestamp = DateTimeOffset.Now, + Footer = new EmbedFooterBuilder {Text = type.GetDetails().FancyName}, + Color = new Color((uint) (chatTypeConfig.Color & 0xFFFFFF)) + }; + + if (this.config.CheckForDuplicateMessages) { + var recentMsg = this.recentMessages.FirstOrDefault( + msg => msg.Embeds.FirstOrDefault( + embed => embed.Description == embedBuilder.Description && + embed.Author.HasValue && + embed.Author.Value.Name == embedBuilder.Author.Name && + embed.Timestamp.HasValue && + Math.Abs( + (embed.Timestamp.Value.ToUniversalTime().Date - + embedBuilder + .Timestamp.Value.ToUniversalTime().Date) + .Milliseconds) < 15000) + != null); + + if (recentMsg != null) { + Log.Verbose("Duplicate message: [{0}] {1}", embedBuilder.Author.Name, embedBuilder.Description); + this.recentMessages.Remove(recentMsg); + return; + } + } + + + Thread.Sleep(this.config.ChatDelayMs); + + await channel.SendMessageAsync(embed: embedBuilder.Build()); + } + + private async Task GetChannel(ChannelConfiguration channelConfig) { + if (channelConfig.Type == ChannelType.Guild) + return this.socketClient.GetGuild(channelConfig.GuildId).GetTextChannel(channelConfig.ChannelId); + return await this.socketClient.GetUser(channelConfig.ChannelId).GetOrCreateDMChannelAsync(); + } + + private string RemoveAllNonLanguageCharacters(string input) { + return Regex.Replace(input, @"[^\p{L} ]", ""); + } + + public void Dispose() { + this.socketClient.LogoutAsync().GetAwaiter().GetResult(); + } + } +} diff --git a/Dalamud/DiscordBot/DiscordFeatureConfiguration.cs b/Dalamud/DiscordBot/DiscordFeatureConfiguration.cs new file mode 100644 index 000000000..02c7f1228 --- /dev/null +++ b/Dalamud/DiscordBot/DiscordFeatureConfiguration.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Dalamud.Game.Chat; + +namespace Dalamud.DiscordBot +{ + public enum ChannelType { + Guild, + User + } + + [Serializable] + public class ChannelConfiguration { + public ChannelType Type { get; set; } + + public ulong GuildId { get; set; } + public ulong ChannelId { get; set; } + } + + [Serializable] + public class ChatTypeConfiguration { + public XivChatType ChatType { get; set; } + + public ChannelConfiguration Channel { get; set; } + public int Color { get; set; } + } + + [Serializable] + public class DiscordFeatureConfiguration + { + public string Token { get; set; } + public ulong OwnerUserId { get; set; } + + public bool CheckForDuplicateMessages { get; set; } + public int ChatDelayMs { get; set; } + + public List ChatTypeConfigurations { get; set; } + + public ChannelConfiguration CfNotificationChannel { get; set; } + public ChannelConfiguration FateNotificationChannel { get; set; } + public ChannelConfiguration RetainerNotificationChannel { get; set; } + } +} diff --git a/Dalamud/EntryPoint.cs b/Dalamud/EntryPoint.cs new file mode 100644 index 000000000..680de45e0 --- /dev/null +++ b/Dalamud/EntryPoint.cs @@ -0,0 +1,64 @@ +using System; +using System.IO; +using EasyHook; +using Serilog; +using Serilog.Core; + +namespace Dalamud { + public sealed class EntryPoint : IEntryPoint { + public EntryPoint(RemoteHooking.IContext ctx, DalamudStartInfo info) { + // Required by EasyHook + } + + public void Run(RemoteHooking.IContext ctx, DalamudStartInfo info) { + // Setup logger + Log.Logger = NewLogger(info.WorkingDirectory); + + try { + Log.Information("Initializing a session.."); + + // Log any unhandled exception. + AppDomain.CurrentDomain.UnhandledException += OnUnhandledException; + + using (var dalamud = new Dalamud(info)) { + Log.Information("Starting a session.."); + + // Run session + dalamud.Start(); + dalamud.WaitForUnload(); + } + } catch (Exception ex) { + Log.Fatal(ex, "Unhandled exception on main thread."); + } finally { + AppDomain.CurrentDomain.UnhandledException -= OnUnhandledException; + + Log.Information("Session has ended."); + Log.CloseAndFlush(); + } + } + + private Logger NewLogger(string baseDirectory) { + var logPath = Path.Combine(baseDirectory, "dalamud.txt"); + + return new LoggerConfiguration() + .WriteTo.Async(a => a.File(logPath)) +#if DEBUG + .MinimumLevel.Verbose() +#else + .MinimumLevel.Information() +#endif + .CreateLogger(); + } + + private void OnUnhandledException(object sender, UnhandledExceptionEventArgs arg) { + switch (arg.ExceptionObject) { + case Exception ex: + Log.Fatal(ex, "Unhandled exception on AppDomain"); + break; + default: + Log.Fatal("Unhandled SEH object on AppDomain: {Object}", arg.ExceptionObject); + break; + } + } + } +} diff --git a/Dalamud/FodyWeavers.xml b/Dalamud/FodyWeavers.xml new file mode 100644 index 000000000..4e68ed1a8 --- /dev/null +++ b/Dalamud/FodyWeavers.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Dalamud/FodyWeavers.xsd b/Dalamud/FodyWeavers.xsd new file mode 100644 index 000000000..2f1b8aae7 --- /dev/null +++ b/Dalamud/FodyWeavers.xsd @@ -0,0 +1,54 @@ + + + + + + + + + + + Used to control if the On_PropertyName_Changed feature is enabled. + + + + + Used to change the name of the method that fires the notify event. This is a string that accepts multiple values in a comma separated form. + + + + + Used to control if equality checks should be inserted. If false, equality checking will be disabled for the project. + + + + + Used to control if equality checks should use the Equals method resolved from the base class. + + + + + Used to control if equality checks should use the static Equals method resolved from the base class. + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/Dalamud/Game/Chat/SeString.cs b/Dalamud/Game/Chat/SeString.cs new file mode 100644 index 000000000..8b777ddd5 --- /dev/null +++ b/Dalamud/Game/Chat/SeString.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + +namespace Dalamud.Game.Chat { + // TODO: This class does not work - it's a hack, needs a revamp and better handling for payloads used in player chat + public class SeString { + public enum PlayerLinkType { + ItemLink = 0x03 + } + + public enum SeStringPayloadType { + PlayerLink = 0x27 + } + + private const int START_BYTE = 0x02; + private const int END_BYTE = 0x03; + + public static (string Output, List Payloads) Parse(string input) { + var output = new List(); + var payloads = new List(); + + var bytes = Encoding.UTF8.GetBytes(input); + using (var stream = new MemoryStream(bytes)) + using (var reader = new BinaryReader(stream)) { + while (stream.Position < bytes.Length) { + var b = stream.ReadByte(); + + if (b == START_BYTE) + ProcessPacket(reader, output, payloads); + else + output.Add((byte) b); + } + } + + return (Encoding.UTF8.GetString(output.ToArray()), payloads); + } + + private static void ProcessPacket(BinaryReader reader, List output, + List payloads) { + var type = reader.ReadByte(); + var payloadSize = GetInteger(reader); + + var payload = new byte[payloadSize]; + + reader.Read(payload, 0, payloadSize); + + var orphanByte = reader.Read(); + // If the end of the tag isn't what we predicted, let's ignore it for now + while (orphanByte != END_BYTE) orphanByte = reader.Read(); + + //output.AddRange(Encoding.UTF8.GetBytes($"<{type.ToString("X")}:{BitConverter.ToString(payload)}>")); + + switch ((SeStringPayloadType) type) { + case SeStringPayloadType.PlayerLink: + if (payload[0] == (byte) PlayerLinkType.ItemLink) + payloads.Add(new SeStringPayloadContainer { + Type = SeStringPayloadType.PlayerLink, + Param1 = BitConverter.ToInt16(payload, 4) + }); + break; + } + } + + public class SeStringPayloadContainer { + public SeStringPayloadType Type { get; set; } + public object Param1 { get; set; } + } + + #region Shared + + public enum IntegerType { + Byte = 0xF0, + ByteTimes256 = 0xF1, + Int16 = 0xF2, + Int24 = 0xFA, + Int32 = 0xFE + } + + protected static int GetInteger(BinaryReader input) { + var t = input.ReadByte(); + var type = (IntegerType) t; + return GetInteger(input, type); + } + + protected static int GetInteger(BinaryReader input, IntegerType type) { + const byte ByteLengthCutoff = 0xF0; + + var t = (byte) type; + if (t < ByteLengthCutoff) + return t - 1; + + switch (type) { + case IntegerType.Byte: + return input.ReadByte(); + case IntegerType.ByteTimes256: + return input.ReadByte() * 256; + case IntegerType.Int16: { + var v = 0; + v |= input.ReadByte() << 8; + v |= input.ReadByte(); + return v; + } + case IntegerType.Int24: { + var v = 0; + v |= input.ReadByte() << 16; + v |= input.ReadByte() << 8; + v |= input.ReadByte(); + return v; + } + case IntegerType.Int32: { + var v = 0; + v |= input.ReadByte() << 24; + v |= input.ReadByte() << 16; + v |= input.ReadByte() << 8; + v |= input.ReadByte(); + return v; + } + default: + throw new NotSupportedException(); + } + } + + #endregion + } +} diff --git a/Dalamud/Game/Chat/XivChatEntry.cs b/Dalamud/Game/Chat/XivChatEntry.cs new file mode 100644 index 000000000..8fd338d02 --- /dev/null +++ b/Dalamud/Game/Chat/XivChatEntry.cs @@ -0,0 +1,15 @@ +using System; + +namespace Dalamud.Game.Chat { + public sealed class XivChatEntry { + public XivChatType Type { get; set; } = XivChatType.Debug; + + public uint SenderId { get; set; } + + public string Name { get; set; } = string.Empty; + + public string Message { get; set; } = string.Empty; + + public IntPtr Parameters { get; set; } + } +} diff --git a/Dalamud/Game/Chat/XivChatType.cs b/Dalamud/Game/Chat/XivChatType.cs new file mode 100644 index 000000000..d909947cb --- /dev/null +++ b/Dalamud/Game/Chat/XivChatType.cs @@ -0,0 +1,132 @@ +using System; +using System.Linq; + +namespace Dalamud.Game.Chat { + /// + /// The FFXIV chat types as seen in the LogKind ex table. + /// + public enum XivChatType : ushort { + None = 0, + Debug = 1, + + [XivChatTypeInfo("Urgent", null, 0xFF9400D3)] + Urgent = 2, + + [XivChatTypeInfo("Notice", null, 0xFF9400D3)] + Notice = 3, + + [XivChatTypeInfo("Say", "s", 0xFFFFFFFF)] + Say = 10, + + [XivChatTypeInfo("Shout", "shout", 0xFFFF4500)] + Shout = 11, + TellOutgoing = 12, + + [XivChatTypeInfo("Tell", "tell", 0xFFFF69B4)] + TellIncoming = 13, + + [XivChatTypeInfo("Party", "p", 0xFF1E90FF)] + Party = 14, + + [XivChatTypeInfo("Alliance", "a", 0xFFFF4500)] + Alliance = 15, + + [XivChatTypeInfo("Linkshell 1", "ls1", 0xFF228B22)] + Ls1 = 16, + + [XivChatTypeInfo("Linkshell 2", "ls2", 0xFF228B22)] + Ls2 = 17, + + [XivChatTypeInfo("Linkshell 3", "ls3", 0xFF228B22)] + Ls3 = 18, + + [XivChatTypeInfo("Linkshell 4", "ls4", 0xFF228B22)] + Ls4 = 19, + + [XivChatTypeInfo("Linkshell 5", "ls5", 0xFF228B22)] + Ls5 = 20, + + [XivChatTypeInfo("Linkshell 6", "ls6", 0xFF228B22)] + Ls6 = 21, + + [XivChatTypeInfo("Linkshell 7", "ls7", 0xFF228B22)] + Ls7 = 22, + + [XivChatTypeInfo("Linkshell 8", "ls8", 0xFF228B22)] + Ls8 = 23, + + [XivChatTypeInfo("Free Company", "fc", 0xFF00BFFF)] + FreeCompany = 24, + + [XivChatTypeInfo("Novice Network", "nn", 0xFF8B4513)] + NoviceNetwork = 27, + + [XivChatTypeInfo("Yell", "y", 0xFFFFFF00)] + Yell = 30, + + [XivChatTypeInfo("Party", "p", 0xFF1E90FF)] + CrossParty = 32, + + [XivChatTypeInfo("PvP Team", "pvp", 0xFFF4A460)] + PvPTeam = 36, + + [XivChatTypeInfo("Crossworld Linkshell 1", "cw1", 0xFF1E90FF)] + CrossLinkShell1 = 37, + + [XivChatTypeInfo("Echo", null, 0xFF808080)] + Echo = 56, + SystemError = 58, + GatheringSystemMessage = 60, + + [XivChatTypeInfo("Crossworld Linkshell 2", "cw2", 0xFF1E90FF)] + CrossLinkShell2 = 101, + + [XivChatTypeInfo("Crossworld Linkshell 3", "cw3", 0xFF1E90FF)] + CrossLinkShell3 = 102, + + [XivChatTypeInfo("Crossworld Linkshell 4", "cw4", 0xFF1E90FF)] + CrossLinkShell4 = 103, + + [XivChatTypeInfo("Crossworld Linkshell 5", "cw5", 0xFF1E90FF)] + CrossLinkShell5 = 104, + + [XivChatTypeInfo("Crossworld Linkshell 6", "cw6", 0xFF1E90FF)] + CrossLinkShell6 = 105, + + [XivChatTypeInfo("Crossworld Linkshell 7", "cw7", 0xFF1E90FF)] + CrossLinkShell7 = 106, + + [XivChatTypeInfo("Crossworld Linkshell 8", "cw8", 0xFF1E90FF)] + CrossLinkShell8 = 107 + } + + public static class XivChatTypeExtensions { + public static XivChatTypeInfoAttribute GetDetails(this XivChatType p) { + return p.GetAttribute(); + } + } + + public class XivChatTypeInfoAttribute : Attribute { + internal XivChatTypeInfoAttribute(string fancyName, string slug, uint defaultColor) { + FancyName = fancyName; + Slug = slug; + DefaultColor = defaultColor; + } + + public string FancyName { get; } + public string Slug { get; } + public uint DefaultColor { get; } + } + + public static class EnumExtensions { + public static TAttribute GetAttribute(this Enum value) + where TAttribute : Attribute { + var type = value.GetType(); + var name = Enum.GetName(type, value); + return type.GetField(name) // I prefer to get attributes this way + .GetCustomAttributes(false) + .OfType() + .SingleOrDefault(); + } + } +} diff --git a/Dalamud/Game/ChatHandlers.cs b/Dalamud/Game/ChatHandlers.cs new file mode 100644 index 000000000..dab95d694 --- /dev/null +++ b/Dalamud/Game/ChatHandlers.cs @@ -0,0 +1,122 @@ +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Dalamud.Game.Chat; +using Dalamud.Settings; +using Serilog; + +namespace Dalamud.Game { + public class ChatHandlers { + private static readonly Dictionary UnicodeToDiscordEmojiDict = new Dictionary { + {"", "<:ffxive071:585847382210642069>"}, + {"", "<:ffxive083:585848592699490329>"} + }; + + private readonly Dalamud dalamud; + + private readonly Dictionary HandledChatTypeColors = new Dictionary { + {XivChatType.CrossParty, Color.DodgerBlue}, + {XivChatType.Party, Color.DodgerBlue}, + {XivChatType.FreeCompany, Color.DeepSkyBlue}, + {XivChatType.CrossLinkShell1, Color.ForestGreen}, + {XivChatType.CrossLinkShell2, Color.ForestGreen}, + {XivChatType.CrossLinkShell3, Color.ForestGreen}, + {XivChatType.CrossLinkShell4, Color.ForestGreen}, + {XivChatType.CrossLinkShell5, Color.ForestGreen}, + {XivChatType.CrossLinkShell6, Color.ForestGreen}, + {XivChatType.CrossLinkShell7, Color.ForestGreen}, + {XivChatType.CrossLinkShell8, Color.ForestGreen}, + {XivChatType.Ls1, Color.ForestGreen}, + {XivChatType.Ls2, Color.ForestGreen}, + {XivChatType.Ls3, Color.ForestGreen}, + {XivChatType.Ls4, Color.ForestGreen}, + {XivChatType.Ls5, Color.ForestGreen}, + {XivChatType.Ls6, Color.ForestGreen}, + {XivChatType.Ls7, Color.ForestGreen}, + {XivChatType.Ls8, Color.ForestGreen}, + {XivChatType.TellIncoming, Color.HotPink}, + {XivChatType.PvPTeam, Color.SandyBrown}, + {XivChatType.Urgent, Color.DarkViolet}, + {XivChatType.NoviceNetwork, Color.SaddleBrown}, + {XivChatType.Echo, Color.Gray} + }; + + private readonly Regex rmtRegex = + new Regex( + @"4KGOLD|We have sufficient stock|VPK\.OM|Gil for free|www\.so9\.com|Fast & Convenient|Cheap & Safety Guarantee|【Code|A O A U E|igfans", + RegexOptions.Compiled); + + private readonly Regex urlRegex = + new Regex(@"(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?", + RegexOptions.Compiled); + + private bool hasSeenLoadingMsg; + + public ChatHandlers(Dalamud dalamud) { + this.dalamud = dalamud; + + dalamud.Framework.Gui.Chat.OnChatMessage += ChatOnOnChatMessage; + } + + + public string LastLink { get; private set; } + + private void ChatOnOnChatMessage(XivChatType type, uint senderId, string sender, ref string message, + ref bool isHandled) { + if (type == XivChatType.Notice && !this.hasSeenLoadingMsg) { + this.dalamud.Framework.Gui.Chat.Print("XIVLauncher in-game addon loaded."); + this.hasSeenLoadingMsg = true; + } + + var matched = this.rmtRegex.IsMatch(message); + if (matched) { + // This seems to be a RMT ad - let's not show it + Log.Debug("Handled RMT ad"); + isHandled = true; + return; + } + + var originalMessage = string.Copy(message); + + if (PersistentSettings.Instance.BadWords != null && + PersistentSettings.Instance.BadWords.Any(x => originalMessage.Contains(x))) { + // This seems to be in the user block list - let's not show it + Log.Debug("Blocklist triggered"); + isHandled = true; + return; + } + + Task.Run(() => this.dalamud.BotManager.ProcessChatMessage(type, originalMessage, sender).GetAwaiter() + .GetResult()); + + + if (this.HandledChatTypeColors.ContainsKey(type) || type == XivChatType.Say || type == XivChatType.Shout || + type == XivChatType.Alliance || type == XivChatType.TellOutgoing || type == XivChatType.Yell) { + var italicsStart = message.IndexOf("*"); + var italicsEnd = message.IndexOf("*", italicsStart + 1); + + while (italicsEnd != -1) { + var it = MakeItalics( + message.Substring(italicsStart, italicsEnd - italicsStart + 1).Replace("*", "")); + message = message.Remove(italicsStart, italicsEnd - italicsStart + 1); + message = message.Insert(italicsStart, it); + italicsStart = message.IndexOf("*"); + italicsEnd = message.IndexOf("*", italicsStart + 1); + } + } + + + var linkMatch = this.urlRegex.Match(message); + if (linkMatch.Value.Length > 0) + LastLink = linkMatch.Value; + } + + private static string MakeItalics(string text) { + return Encoding.UTF8.GetString(new byte[] {0x02, 0x1A, 0x02, 0x02, 0x03}) + text + + Encoding.UTF8.GetString(new byte[] {0x02, 0x1A, 0x02, 0x01, 0x03}); + } + } +} diff --git a/Dalamud/Game/ClientState/Actors/ActorTable.cs b/Dalamud/Game/ClientState/Actors/ActorTable.cs new file mode 100644 index 000000000..3fea9625f --- /dev/null +++ b/Dalamud/Game/ClientState/Actors/ActorTable.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections; +using System.Runtime.InteropServices; +using Dalamud.Game.ClientState.Actors.Types; +using Dalamud.Game.ClientState.Actors.Types.NonPlayer; +using Serilog; + +namespace Dalamud.Game.ClientState.Actors { + /// + /// This collection represents the currently spawned FFXIV actors. + /// + public unsafe class ActorTable : ICollection { + private ClientStateAddressResolver Address { get; } + + /// + /// Set up the actor table collection. + /// + /// Client state address resolver. + public ActorTable(ClientStateAddressResolver addressResolver) { + Address = addressResolver; + + Log.Verbose("Actor table address {ActorTable}", Address.ActorTable); + } + + /// + /// Get an actor at the specified spawn index. + /// + /// Spawn index. + /// at the specified spawn index. + public Actor this[int index] { + get { + var tblIndex = Address.ActorTable + 8 + index * 8; + var offset = *(IntPtr*) tblIndex; + + if (offset == IntPtr.Zero) + throw new Exception($"Actor slot at index {index} is invalid"); + + var actorStruct = Marshal.PtrToStructure(offset); + + Log.Debug("ActorTable[{0}]: {1} - {2} - {3}", index, tblIndex.ToString("X"), offset.ToString("X"), + actorStruct.ObjectKind.ToString()); + + switch (actorStruct.ObjectKind) { + case ObjectKind.Player: return new PlayerCharacter(actorStruct); + case ObjectKind.BattleNpc: return new BattleNpc(actorStruct); + default: return new Actor(actorStruct); + } + } + } + + private class ActorTableEnumerator : IEnumerator { + private readonly ActorTable table; + + private int currentIndex; + + public ActorTableEnumerator(ActorTable table) { + this.table = table; + } + + public bool MoveNext() { + this.currentIndex++; + return this.currentIndex != this.table.Length; + } + + public void Reset() { + this.currentIndex = 0; + } + + public object Current => this.table[this.currentIndex]; + } + + public IEnumerator GetEnumerator() { + return new ActorTableEnumerator(this); + } + + /// + /// The amount of currently spawned actors. + /// + public int Length => *(int*) Address.ActorTable; + + int ICollection.Count => Length; + + bool ICollection.IsSynchronized => false; + + object ICollection.SyncRoot => this; + + void ICollection.CopyTo(Array array, int index) { + for (var i = 0; i < Length; i++) { + array.SetValue(this[i], index); + index++; + } + } + } +} diff --git a/Dalamud/Game/ClientState/Actors/ObjectKind.cs b/Dalamud/Game/ClientState/Actors/ObjectKind.cs new file mode 100644 index 000000000..48af1fdfb --- /dev/null +++ b/Dalamud/Game/ClientState/Actors/ObjectKind.cs @@ -0,0 +1,69 @@ +namespace Dalamud.Game.ClientState.Actors { + /// + /// Enum describing possible entity kinds. + /// + public enum ObjectKind : byte { + /// + /// Invalid actor. + /// + None = 0x00, + + /// + /// Objects representing player characters. + /// + Player = 0x01, + + /// + /// Objects representing battle NPCs. + /// + BattleNpc = 0x02, + + /// + /// Objects representing event NPCs. + /// + EventNpc = 0x03, + + /// + /// Objects representing treasures. + /// + Treasure = 0x04, + + /// + /// Objects representing aetherytes. + /// + Aetheryte = 0x05, + + /// + /// Objects representing gathering points. + /// + GatheringPoint = 0x06, + + /// + /// Objects representing event objects. + /// + EventObj = 0x07, + + /// + /// Objects representing mounts. + /// + MountType = 0x08, + + /// + /// Objects representing minions. + /// + Companion = 0x09, // Minion + + /// + /// Objects representing retainers. + /// + Retainer = 0x0A, + Area = 0x0B, + + /// + /// Objects representing housing objects. + /// + Housing = 0x0C, + Cutscene = 0x0D, + CardStand = 0x0E + } +} diff --git a/Dalamud/Game/ClientState/Actors/Position3.cs b/Dalamud/Game/ClientState/Actors/Position3.cs new file mode 100644 index 000000000..381d1a8de --- /dev/null +++ b/Dalamud/Game/ClientState/Actors/Position3.cs @@ -0,0 +1,10 @@ +using System.Runtime.InteropServices; + +namespace Dalamud.Game.ClientState.Actors { + [StructLayout(LayoutKind.Sequential)] + public struct Position3 { + public float X; + public float Z; + public float Y; + } +} diff --git a/Dalamud/Game/ClientState/Actors/Resolvers/ClassJob.cs b/Dalamud/Game/ClientState/Actors/Resolvers/ClassJob.cs new file mode 100644 index 000000000..82e4b1c42 --- /dev/null +++ b/Dalamud/Game/ClientState/Actors/Resolvers/ClassJob.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Dalamud.Game.ClientState.Actors.Resolvers +{ + /// + /// This object represents a class or job. + /// + public class ClassJob { + /// + /// ID of the ClassJob. + /// + public readonly int Id; + + /// + /// Name of the ClassJob. + /// + public string Name => (string) XivApi.GetClassJob(this.Id).GetAwaiter().GetResult()["Name"]; + + /// + /// Set up the ClassJob resolver with the provided ID. + /// + /// The ID of the world. + public ClassJob(byte id) { + this.Id = id; + } + } +} diff --git a/Dalamud/Game/ClientState/Actors/Resolvers/World.cs b/Dalamud/Game/ClientState/Actors/Resolvers/World.cs new file mode 100644 index 000000000..53d23cdec --- /dev/null +++ b/Dalamud/Game/ClientState/Actors/Resolvers/World.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Dalamud.Game.ClientState.Actors.Resolvers +{ + /// + /// This object represents a world a character can reside on. + /// + public class World { + /// + /// ID of the world. + /// + public readonly int Id; + + /// + /// Name of the world. + /// + public string Name => (string) XivApi.GetWorld(this.Id).GetAwaiter().GetResult()["Name"]; + + /// + /// Set up the world resolver with the provided ID. + /// + /// The ID of the world. + public World(byte id) { + this.Id = id; + } + } +} diff --git a/Dalamud/Game/ClientState/Actors/Types/Actor.cs b/Dalamud/Game/ClientState/Actors/Types/Actor.cs new file mode 100644 index 000000000..ae327211f --- /dev/null +++ b/Dalamud/Game/ClientState/Actors/Types/Actor.cs @@ -0,0 +1,40 @@ +namespace Dalamud.Game.ClientState.Actors.Types { + /// + /// This class represents a basic FFXIV actor. + /// + public class Actor { + /// + /// The memory representation of the base actor. + /// + protected Structs.Actor actorStruct; + + /// + /// Initialize a representation of a basic FFXIV actor. + /// + /// The memory representation of the base actor. + public Actor(Structs.Actor actorStruct) { + this.actorStruct = actorStruct; + } + + /// + /// Position of this . + /// + public Position3 Position => this.actorStruct.Position; + + /// + /// Displayname of this Actor. + /// + public string Name => this.actorStruct.Name; + + /// + /// Actor ID of this . + /// + public int ActorId => this.actorStruct.ActorId; + + /// + /// Entity kind of this actor. See the ObjectKind enum for + /// possible values. + /// + public ObjectKind ObjectKind => this.actorStruct.ObjectKind; + } +} diff --git a/Dalamud/Game/ClientState/Actors/Types/Chara.cs b/Dalamud/Game/ClientState/Actors/Types/Chara.cs new file mode 100644 index 000000000..60ca0549c --- /dev/null +++ b/Dalamud/Game/ClientState/Actors/Types/Chara.cs @@ -0,0 +1,44 @@ +using Dalamud.Game.ClientState.Actors.Resolvers; + +namespace Dalamud.Game.ClientState.Actors.Types { + /// + /// This class represents the base for non-static entities. + /// + public class Chara : Actor { + /// + /// Set up a new Chara with the provided memory representation. + /// + /// The memory representation of the base actor. + public Chara(Structs.Actor actorStruct) : base(actorStruct) { } + + /// + /// The level of this Chara. + /// + public byte Level => this.actorStruct.Level; + + /// + /// The ClassJob of this Chara. + /// + public ClassJob ClassJob => new ClassJob(this.actorStruct.ClassJob); + + /// + /// The current HP of this Chara. + /// + public int CurrentHp => this.actorStruct.CurrentHp; + + /// + /// The maximum HP of this Chara. + /// + public int MaxHp => this.actorStruct.MaxHp; + + /// + /// The current MP of this Chara. + /// + public int CurrentMp => this.actorStruct.CurrentMp; + + /// + /// The maximum MP of this Chara. + /// + public int MaxMp => this.actorStruct.MaxMp; + } +} diff --git a/Dalamud/Game/ClientState/Actors/Types/NonPlayer/BattleNpc.cs b/Dalamud/Game/ClientState/Actors/Types/NonPlayer/BattleNpc.cs new file mode 100644 index 000000000..ea8bf9fcc --- /dev/null +++ b/Dalamud/Game/ClientState/Actors/Types/NonPlayer/BattleNpc.cs @@ -0,0 +1,22 @@ +namespace Dalamud.Game.ClientState.Actors.Types.NonPlayer { + /// + /// This class represents a battle NPC. + /// + public class BattleNpc : Npc { + /// + /// Set up a new BattleNpc with the provided memory representation. + /// + /// The memory representation of the base actor. + public BattleNpc(Structs.Actor actorStruct) : base(actorStruct) { } + + /// + /// The BattleNpc of this BattleNpc. + /// + public BattleNpcSubKind BattleNpcKind => (BattleNpcSubKind) this.actorStruct.SubKind; + + /// + /// The ID of this BattleNpc's owner. + /// + public int OwnerId => this.actorStruct.OwnerId; + } +} diff --git a/Dalamud/Game/ClientState/Actors/Types/NonPlayer/BattleNpcSubKind.cs b/Dalamud/Game/ClientState/Actors/Types/NonPlayer/BattleNpcSubKind.cs new file mode 100644 index 000000000..f274a0af1 --- /dev/null +++ b/Dalamud/Game/ClientState/Actors/Types/NonPlayer/BattleNpcSubKind.cs @@ -0,0 +1,21 @@ +namespace Dalamud.Game.ClientState.Actors.Types.NonPlayer { + /// + /// Enum describing possible BattleNpc kinds. + /// + public enum BattleNpcSubKind : byte { + /// + /// Invalid BattleNpc. + /// + None = 0, + + /// + /// BattleNpc representing a Pet. + /// + Pet = 2, + + /// + /// BattleNpc representing a standard enemy. + /// + Enemy = 5 + } +} diff --git a/Dalamud/Game/ClientState/Actors/Types/NonPlayer/Npc.cs b/Dalamud/Game/ClientState/Actors/Types/NonPlayer/Npc.cs new file mode 100644 index 000000000..ef0ce3b7c --- /dev/null +++ b/Dalamud/Game/ClientState/Actors/Types/NonPlayer/Npc.cs @@ -0,0 +1,17 @@ +namespace Dalamud.Game.ClientState.Actors.Types.NonPlayer { + /// + /// This class represents a NPC. + /// + public class Npc : Chara { + /// + /// Set up a new NPC with the provided memory representation. + /// + /// The memory representation of the base actor. + public Npc(Structs.Actor actorStruct) : base(actorStruct) { } + + /// + /// The data ID of the NPC linking to their respective game data. + /// + public int DataId => this.actorStruct.DataId; + } +} diff --git a/Dalamud/Game/ClientState/Actors/Types/PlayerCharacter.cs b/Dalamud/Game/ClientState/Actors/Types/PlayerCharacter.cs new file mode 100644 index 000000000..ed09601de --- /dev/null +++ b/Dalamud/Game/ClientState/Actors/Types/PlayerCharacter.cs @@ -0,0 +1,24 @@ +using Dalamud.Game.ClientState.Actors.Resolvers; + +namespace Dalamud.Game.ClientState.Actors.Types { + /// + /// This class represents a player character. + /// + public class PlayerCharacter : Chara { + /// + /// Set up a new player character with the provided memory representation. + /// + /// The memory representation of the base actor. + public PlayerCharacter(Structs.Actor actorStruct) : base(actorStruct) { } + + /// + /// The current world of the character. + /// + public World CurrentWorld => new World(this.actorStruct.CurrentWorld); + + /// + /// The home world of the character. + /// + public World HomeWorld => new World(this.actorStruct.HomeWorld); + } +} diff --git a/Dalamud/Game/ClientState/ClientState.cs b/Dalamud/Game/ClientState/ClientState.cs new file mode 100644 index 000000000..4af069e36 --- /dev/null +++ b/Dalamud/Game/ClientState/ClientState.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Dalamud.Game.ClientState.Actors; +using Dalamud.Game.ClientState.Actors.Types; +using Dalamud.Game.Internal; + +namespace Dalamud.Game.ClientState +{ + /// + /// This class represents the state of the game client at the time of access. + /// + public class ClientState : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + private ClientStateAddressResolver Address { get; } + + public readonly ClientLanguage ClientLanguage; + + /// + /// The table of all present actors. + /// + public readonly ActorTable Actors; + + /// + /// The local player character, if one is present. + /// + public PlayerCharacter LocalPlayer => (PlayerCharacter) this.Actors[0]; + + /// + /// The content ID of the local character. + /// + public ulong LocalContentId => (ulong) Marshal.ReadInt64(Address.LocalContentId); + + /// + /// Set up client state access. + /// + /// Dalamud instance + /// /// StartInfo of the current Dalamud launch + /// Sig scanner + /// Game process module + public ClientState(Dalamud dalamud, DalamudStartInfo startInfo, SigScanner scanner, ProcessModule targetModule) { + Address = new ClientStateAddressResolver(); + Address.Setup(scanner); + + this.ClientLanguage = startInfo.Language; + + this.Actors = new ActorTable(Address); + } + } +} diff --git a/Dalamud/Game/ClientState/ClientStateAddressResolver.cs b/Dalamud/Game/ClientState/ClientStateAddressResolver.cs new file mode 100644 index 000000000..37d1fde18 --- /dev/null +++ b/Dalamud/Game/ClientState/ClientStateAddressResolver.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Dalamud.Game.Internal; + +namespace Dalamud.Game.ClientState +{ + public sealed class ClientStateAddressResolver : BaseAddressResolver { + public IntPtr ActorTable { get; private set; } + public IntPtr LocalContentId { get; private set; } + + protected override void Setup64Bit(SigScanner sig) { + ActorTable = sig.Module.BaseAddress + 0x1B29B40; + LocalContentId = sig.Module.BaseAddress + 0x1B58B60; + } + } +} diff --git a/Dalamud/Game/ClientState/Structs/Actor.cs b/Dalamud/Game/ClientState/Structs/Actor.cs new file mode 100644 index 000000000..3e1d9ac7c --- /dev/null +++ b/Dalamud/Game/ClientState/Structs/Actor.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using Dalamud.Game.ClientState.Actors; + +namespace Dalamud.Game.ClientState.Structs +{ + /// + /// Native memory representation of a FFXIV actor. + /// + [StructLayout(LayoutKind.Explicit)] + public struct Actor { + [FieldOffset(0x30)] [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 30)] public string Name; + [FieldOffset(116)] public int ActorId; + [FieldOffset(128)] public int DataId; + [FieldOffset(132)] public int OwnerId; + [FieldOffset(140)] public ObjectKind ObjectKind; + [FieldOffset(141)] public byte SubKind; + [FieldOffset(160)] public Position3 Position; + [FieldOffset(6296)] public byte CurrentWorld; + [FieldOffset(6298)] public byte HomeWorld; + [FieldOffset(6308)] public int CurrentHp; + [FieldOffset(6312)] public int MaxHp; + [FieldOffset(6316)] public int CurrentMp; + [FieldOffset(6320)] public int MaxMp; + [FieldOffset(6364)] public byte ClassJob; + [FieldOffset(6366)] public byte Level; + } +} diff --git a/Dalamud/Game/Command/CommandInfo.cs b/Dalamud/Game/Command/CommandInfo.cs new file mode 100644 index 000000000..536843a74 --- /dev/null +++ b/Dalamud/Game/Command/CommandInfo.cs @@ -0,0 +1,15 @@ +namespace Dalamud.Game.Command { + public sealed class CommandInfo { + public delegate void HandlerDelegate(string command, string arguments); + + public HandlerDelegate Handler { get; } + + public string HelpMessage { get; set; } = string.Empty; + + public bool ShowInHelp { get; set; } = true; + + public CommandInfo(HandlerDelegate handler) { + Handler = handler; + } + } +} diff --git a/Dalamud/Game/Command/CommandManager.cs b/Dalamud/Game/Command/CommandManager.cs new file mode 100644 index 000000000..b7b590ac4 --- /dev/null +++ b/Dalamud/Game/Command/CommandManager.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Text.RegularExpressions; +using Dalamud.Game.Chat; +using Serilog; + +namespace Dalamud.Game.Command { + public sealed class CommandManager { + private readonly Dalamud dalamud; + + private readonly Dictionary commandMap = new Dictionary(); + + public ReadOnlyDictionary Commands => + new ReadOnlyDictionary(this.commandMap); + + private readonly Regex commandRegexEn = + new Regex(@"^The command (?.+) does not exist\.$", RegexOptions.Compiled); + + private readonly Regex commandRegexJp = new Regex(@"^そのコマンドはありません。: (?.+)$", RegexOptions.Compiled); + + private readonly Regex commandRegexDe = + new Regex(@"^„(?.+)“ existiert nicht als Textkommando\.$", RegexOptions.Compiled); + + private readonly Regex commandRegexFr = + new Regex(@"^La commande texte “(?.+)” ne peut pas être utilisée de cette façon\.$", + RegexOptions.Compiled); + + private readonly Regex CommandRegex; + + + public CommandManager(Dalamud dalamud, ClientLanguage language) { + this.dalamud = dalamud; + + switch (language) { + case ClientLanguage.Japanese: + this.CommandRegex = this.commandRegexJp; + break; + case ClientLanguage.English: + this.CommandRegex = this.commandRegexEn; + break; + case ClientLanguage.German: + this.CommandRegex = this.commandRegexDe; + break; + case ClientLanguage.French: + this.CommandRegex = this.commandRegexFr; + break; + } + + dalamud.Framework.Gui.Chat.OnChatMessage += OnChatMessage; + } + + private void OnChatMessage(XivChatType type, uint senderId, string sender, ref string message, + ref bool isHandled) { + if (type == XivChatType.GatheringSystemMessage && senderId == 0) { + var cmdMatch = this.CommandRegex.Match(message).Groups["command"]; + if (cmdMatch.Success) { + // Yes, it's a chat command. + var command = cmdMatch.Value; + if (ProcessCommand(command)) isHandled = true; + } + } + } + + private bool ProcessCommand(string content) { + string command; + string argument; + + var speratorPosition = content.IndexOf(' '); + if (speratorPosition == -1 || speratorPosition + 1 >= content.Length) { + // If no space was found or ends with the space. Process them as a no argument + command = content; + argument = string.Empty; + } else { + // e.g.) + // /testcommand arg1 + // => Total of 17 chars + // => command: 0-12 (12 chars) + // => argument: 13-17 (4 chars) + // => content.IndexOf(' ') == 12 + command = content.Substring(0, speratorPosition); + + var argStart = speratorPosition + 1; + argument = content.Substring(argStart, content.Length - argStart); + } + + if (!this.commandMap.TryGetValue(command, out var handler)) // Commad was not found. + return false; + + DispatchCommand(command, argument, handler); + return true; + } + + public void DispatchCommand(string command, string argument, CommandInfo info) { + try { + info.Handler(command, argument); + } catch (Exception ex) { + Log.Error(ex, "Error while dispatching command {CommandName} (Argument: {Argument})", command, + argument); + } + } + + public bool AddHandler(string command, CommandInfo info) { + if (info == null) throw new ArgumentNullException(nameof(info), "Command handler is null."); + + try { + this.commandMap.Add(command, info); + return true; + } catch (ArgumentException) { + Log.Warning("Command {CommandName} is already registered.", command); + return false; + } + } + + public bool RemoveHandler(string command) { + return this.commandMap.Remove(command); + } + } +} diff --git a/Dalamud/Game/Internal/BaseAddressResolver.cs b/Dalamud/Game/Internal/BaseAddressResolver.cs new file mode 100644 index 000000000..8cbb83be5 --- /dev/null +++ b/Dalamud/Game/Internal/BaseAddressResolver.cs @@ -0,0 +1,48 @@ +using System; +using System.Runtime.InteropServices; + +namespace Dalamud.Game.Internal { + public abstract class BaseAddressResolver { + protected bool IsResolved { get; set; } + + public void Setup(SigScanner scanner) { + // Because C# don't allow to call virtual function while in ctor + // we have to do this shit :\ + + if (IsResolved) { + return; + } + + if (scanner.Is32BitProcess) { + Setup32Bit(scanner); + } else { + Setup64Bit(scanner); + } + SetupInternal(scanner); + + IsResolved = true; + } + + protected virtual void Setup32Bit(SigScanner scanner) { + throw new NotSupportedException("32 bit version is not supported."); + } + + protected virtual void Setup64Bit(SigScanner sig) { + throw new NotSupportedException("64 bit version is not supported."); + } + + protected virtual void SetupInternal(SigScanner scanner) { + // Do nothing + } + + protected T GetVirtualFunction(IntPtr address, int vtableOffset, int count) where T : class { + // Get vtable + var vtable = Marshal.ReadIntPtr(address, vtableOffset); + + // Get an address to the function + var functionAddress = Marshal.ReadIntPtr(vtable, IntPtr.Size * count); + + return Marshal.GetDelegateForFunctionPointer(functionAddress); + } + } +} diff --git a/Dalamud/Game/Internal/Framework.cs b/Dalamud/Game/Internal/Framework.cs new file mode 100644 index 000000000..229b6817b --- /dev/null +++ b/Dalamud/Game/Internal/Framework.cs @@ -0,0 +1,100 @@ +using System; +using System.Runtime.InteropServices; +using Dalamud.Settings; +using Dalamud.Game.Internal.Gui; +using Dalamud.Game.Internal.Libc; +using Dalamud.Game.Internal.Network; +using Dalamud.Hooking; +using Serilog; + +namespace Dalamud.Game.Internal { + public sealed class Framework : IDisposable { + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + private delegate bool OnUpdateDetour(IntPtr framework); + + public delegate void OnUpdateDelegate(Framework framework); + + public event OnUpdateDelegate OnUpdateEvent; + + private Hook updateHook; + + + /// + /// A raw pointer to the instance of Client::Framework + /// + private FrameworkAddressResolver Address { get; } + +#region Subsystems + + public GameGui Gui { get; private set; } + + public GameNetwork Network { get; private set; } + + public LibcFunction Libc { get; private set; } + +#endregion + + public Framework(SigScanner scanner, Dalamud dalamud) { + Address = new FrameworkAddressResolver(); + Address.Setup(scanner); + + Log.Verbose("Framework address {FrameworkAddress}", Address.BaseAddress); + if (Address.BaseAddress == IntPtr.Zero) { + throw new InvalidOperationException("Framework is not initalized yet."); + } + + // Hook virtual functions + HookVTable(); + + // Initialize subsystems + Libc = new LibcFunction(scanner); + + Gui = new GameGui(Address.GuiManager, scanner, dalamud); + + Network = new GameNetwork(dalamud, scanner); + } + + private void HookVTable() { + var vtable = Marshal.ReadIntPtr(Address.BaseAddress); + // Virtual function layout: + // .rdata:00000001411F1FE0 dq offset Xiv__Framework___dtor + // .rdata:00000001411F1FE8 dq offset Xiv__Framework__init + // .rdata:00000001411F1FF0 dq offset sub_1400936E0 + // .rdata:00000001411F1FF8 dq offset sub_1400939E0 + // .rdata:00000001411F2000 dq offset Xiv__Framework__update + + var pUpdate = Marshal.ReadIntPtr(vtable, IntPtr.Size * 4); + this.updateHook = new Hook(pUpdate, new OnUpdateDetour(HandleFrameworkUpdate), this); + } + + public void Enable() { + Gui.Enable(); + Network.Enable(); + + this.updateHook.Enable(); + } + + public void Dispose() { + Gui.Dispose(); + Network.Dispose(); + + this.updateHook.Dispose(); + } + + private bool HandleFrameworkUpdate(IntPtr framework) { + try { + Gui.Chat.UpdateQueue(this); + } catch (Exception ex) { + Log.Error(ex, "Exception while handling Framework::Update hook."); + } + + try { + OnUpdateEvent?.Invoke(this); + } catch (Exception ex) { + Log.Error(ex, "Exception while dispatching Framework::Update event."); + } + + return this.updateHook.Original(framework); + } + } +} diff --git a/Dalamud/Game/Internal/FrameworkAddressResolver.cs b/Dalamud/Game/Internal/FrameworkAddressResolver.cs new file mode 100644 index 000000000..6d6b11263 --- /dev/null +++ b/Dalamud/Game/Internal/FrameworkAddressResolver.cs @@ -0,0 +1,39 @@ +using System; +using System.Runtime.InteropServices; + +namespace Dalamud.Game.Internal { + public sealed class FrameworkAddressResolver : BaseAddressResolver { + public IntPtr BaseAddress { get; private set; } + + public IntPtr GuiManager { get; private set; } + + public IntPtr ScriptManager { get; private set; } + + + protected override void Setup64Bit(SigScanner sig) { + SetupFramework(sig); + + // Xiv__Framework__GetGuiManager+8 000 mov rax, [rcx+2C00h] + // Xiv__Framework__GetGuiManager+F 000 retn + GuiManager = Marshal.ReadIntPtr(BaseAddress, 0x2C08); + + // Called from Framework::Init + ScriptManager = BaseAddress + 0x2C68; // note that no deref here + } + + private void SetupFramework(SigScanner scanner) { + // Dissasembly of part of the .dtor + // 00007FF701AD665A | 48 C7 05 ?? ?? ?? ?? 00 00 00 00 | MOV QWORD PTR DS:[g_mainFramework],0 + // 00007FF701AD6665 | E8 ?? ?? ?? ?? | CALL ffxiv_dx11.7FF701E27130 + // 00007FF701AD666A | 48 8D ?? ?? ?? 00 00 | LEA RCX,QWORD PTR DS:[RBX + 2C38] + // 00007FF701AD6671 | E8 ?? ?? ?? ?? | CALL ffxiv_dx11.7FF701E2A7D0 + // 00007FF701AD6676 | 48 8D ?? ?? ?? ?? ?? | LEA RAX,QWORD PTR DS:[7FF702C31F80 + var fwDtor = scanner.ScanText("48C705????????00000000 E8???????? 488D??????0000 E8???????? 488D"); + var fwOffset = Marshal.ReadInt32(fwDtor + 3); + var pFramework = scanner.ResolveRelativeAddress(fwDtor + 11, fwOffset); + + // Framework does not change once initialized in startup so don't bother to deref again and again. + BaseAddress = Marshal.ReadIntPtr(pFramework); + } + } +} diff --git a/Dalamud/Game/Internal/Gui/ChatGui.cs b/Dalamud/Game/Internal/Gui/ChatGui.cs new file mode 100644 index 000000000..4b64f9364 --- /dev/null +++ b/Dalamud/Game/Internal/Gui/ChatGui.cs @@ -0,0 +1,160 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using Dalamud.Game.Chat; +using Dalamud.Game.Internal.Libc; +using Dalamud.Hooking; +using Serilog; + +namespace Dalamud.Game.Internal.Gui { + public sealed class ChatGui : IDisposable { + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + private delegate void PrintMessageDelegate(IntPtr manager, XivChatType chatType, IntPtr senderName, + IntPtr message, + uint senderId, byte isLocal); + + public delegate void OnMessageDelegate(XivChatType type, uint senderId, string sender, ref string message, + ref bool isHandled); + + + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + private delegate void PopulateItemLinkDelegate(IntPtr linkObjectPtr, IntPtr itemInfoPtr); + + private readonly Queue chatQueue = new Queue(); + + private readonly Hook printMessageHook; + + public event OnMessageDelegate OnChatMessage; + + private readonly Hook populateItemLinkHook; + + public int LastLinkedItemId { get; private set; } + public byte LastLinkedItemFlags { get; private set; } + + private ChatGuiAddressResolver Address { get; } + + private IntPtr baseAddress = IntPtr.Zero; + + private readonly Dalamud dalamud; + + public ChatGui(IntPtr baseAddress, SigScanner scanner, Dalamud dalamud) { + this.dalamud = dalamud; + + Address = new ChatGuiAddressResolver(baseAddress); + Address.Setup(scanner); + + Log.Verbose("Chat manager address {ChatManager}", Address.BaseAddress); + + this.printMessageHook = + new Hook(Address.PrintMessage, new PrintMessageDelegate(HandlePrintMessageDetour), + this); + this.populateItemLinkHook = + new Hook(Address.PopulateItemLinkObject, + new PopulateItemLinkDelegate(HandlePopulateItemLinkDetour), + this); + } + + public void Enable() { + this.printMessageHook.Enable(); + this.populateItemLinkHook.Enable(); + } + + public void Dispose() { + this.printMessageHook.Dispose(); + this.populateItemLinkHook.Dispose(); + } + + private void HandlePopulateItemLinkDetour(IntPtr linkObjectPtr, IntPtr itemInfoPtr) { + try { + this.populateItemLinkHook.Original(linkObjectPtr, itemInfoPtr); + + LastLinkedItemId = Marshal.ReadInt32(itemInfoPtr, 8); + LastLinkedItemFlags = Marshal.ReadByte(itemInfoPtr, 0x14); + + Log.Debug($"HandlePopulateItemLinkDetour {linkObjectPtr} {itemInfoPtr} - linked:{LastLinkedItemId}"); + } catch (Exception ex) { + Log.Error(ex, "Exception onPopulateItemLink hook."); + this.populateItemLinkHook.Original(linkObjectPtr, itemInfoPtr); + } + } + + private void HandlePrintMessageDetour(IntPtr manager, XivChatType chattype, IntPtr pSenderName, IntPtr pMessage, + uint senderid, byte isLocal) { + try { + var senderName = StdString.ReadFromPointer(pSenderName); + var message = StdString.ReadFromPointer(pMessage); + + //Log.Debug($"HandlePrintMessageDetour {manager} - [{chattype}] [{BitConverter.ToString(Encoding.UTF8.GetBytes(message))}] {message} from {senderName}"); + + var originalMessage = string.Copy(message); + + // Call events + var isHandled = false; + OnChatMessage?.Invoke(chattype, senderid, senderName, ref message, ref isHandled); + + var messagePtr = pMessage; + OwnedStdString allocatedString = null; + + if (originalMessage != message) { + allocatedString = this.dalamud.Framework.Libc.NewString(message); + Log.Debug( + $"HandlePrintMessageDetour String modified: {originalMessage}({messagePtr}) -> {message}({allocatedString.Address})"); + messagePtr = allocatedString.Address; + } + + // Print the original chat if it's handled. + if (!isHandled) + this.printMessageHook.Original(manager, chattype, pSenderName, messagePtr, senderid, isLocal); + + if (this.baseAddress == IntPtr.Zero) + this.baseAddress = manager; + + allocatedString?.Dispose(); + } catch (Exception ex) { + Log.Error(ex, "Exception on OnChatMessage hook."); + this.printMessageHook.Original(manager, chattype, pSenderName, pMessage, senderid, isLocal); + } + } + + /// + /// Queue a chat message. While method is named as PrintChat, it only add a entry to the queue, + /// later to be processed when UpdateQueue() is called. + /// + /// A message to send. + public void PrintChat(XivChatEntry chat) { + this.chatQueue.Enqueue(chat); + } + + public void Print(string message) { + PrintChat(new XivChatEntry { + Message = message + }); + } + + public void PrintError(string message) { + PrintChat(new XivChatEntry { + Message = message, + Type = XivChatType.Urgent + }); + } + + /// + /// Process a chat queue. + /// + public void UpdateQueue(Framework framework) { + while (this.chatQueue.Count > 0) { + var chat = this.chatQueue.Dequeue(); + + var sender = chat.Name ?? ""; + var message = chat.Message ?? ""; + + if (this.baseAddress != IntPtr.Zero) + using (var senderVec = framework.Libc.NewString(sender)) + using (var messageVec = framework.Libc.NewString(message)) { + this.printMessageHook.Original(this.baseAddress, chat.Type, senderVec.Address, + messageVec.Address, chat.SenderId, 0); + } + } + } + } +} diff --git a/Dalamud/Game/Internal/Gui/ChatGuiAddressResolver.cs b/Dalamud/Game/Internal/Gui/ChatGuiAddressResolver.cs new file mode 100644 index 000000000..67478e423 --- /dev/null +++ b/Dalamud/Game/Internal/Gui/ChatGuiAddressResolver.cs @@ -0,0 +1,88 @@ +using System; + +namespace Dalamud.Game.Internal.Gui { + public sealed class ChatGuiAddressResolver : BaseAddressResolver { + public IntPtr BaseAddress { get; } + + public IntPtr PrintMessage { get; private set; } + public IntPtr PopulateItemLinkObject { get; private set; } + + public ChatGuiAddressResolver(IntPtr baseAddres) { + BaseAddress = baseAddres; + } + + + /* + --- for reference: 4.57 --- + +.text:00000001405CD210 ; __int64 __fastcall Xiv::Gui::ChatGui::PrintMessage(__int64 handler, unsigned __int16 chatType, __int64 senderName, __int64 message, int senderActorId, char isLocal) +.text:00000001405CD210 Xiv__Gui__ChatGui__PrintMessage proc near +.text:00000001405CD210 ; CODE XREF: sub_1401419F0+201↑p +.text:00000001405CD210 ; sub_140141D10+220↑p ... +.text:00000001405CD210 +.text:00000001405CD210 var_220 = qword ptr -220h +.text:00000001405CD210 var_218 = byte ptr -218h +.text:00000001405CD210 var_210 = word ptr -210h +.text:00000001405CD210 var_208 = byte ptr -208h +.text:00000001405CD210 var_200 = word ptr -200h +.text:00000001405CD210 var_1FC = dword ptr -1FCh +.text:00000001405CD210 var_1F8 = qword ptr -1F8h +.text:00000001405CD210 var_1F0 = qword ptr -1F0h +.text:00000001405CD210 var_1E8 = qword ptr -1E8h +.text:00000001405CD210 var_1E0 = dword ptr -1E0h +.text:00000001405CD210 var_1DC = word ptr -1DCh +.text:00000001405CD210 var_1DA = word ptr -1DAh +.text:00000001405CD210 var_1D8 = qword ptr -1D8h +.text:00000001405CD210 var_1D0 = byte ptr -1D0h +.text:00000001405CD210 var_1C8 = qword ptr -1C8h +.text:00000001405CD210 var_1B0 = dword ptr -1B0h +.text:00000001405CD210 var_1AC = dword ptr -1ACh +.text:00000001405CD210 var_1A8 = dword ptr -1A8h +.text:00000001405CD210 var_1A4 = dword ptr -1A4h +.text:00000001405CD210 var_1A0 = dword ptr -1A0h +.text:00000001405CD210 var_160 = dword ptr -160h +.text:00000001405CD210 var_15C = dword ptr -15Ch +.text:00000001405CD210 var_140 = dword ptr -140h +.text:00000001405CD210 var_138 = dword ptr -138h +.text:00000001405CD210 var_130 = byte ptr -130h +.text:00000001405CD210 var_C0 = byte ptr -0C0h +.text:00000001405CD210 var_50 = qword ptr -50h +.text:00000001405CD210 var_38 = qword ptr -38h +.text:00000001405CD210 var_30 = qword ptr -30h +.text:00000001405CD210 var_28 = qword ptr -28h +.text:00000001405CD210 var_20 = qword ptr -20h +.text:00000001405CD210 senderActorId = dword ptr 30h +.text:00000001405CD210 isLocal = byte ptr 38h +.text:00000001405CD210 +.text:00000001405CD210 ; __unwind { // __GSHandlerCheck +.text:00000001405CD210 push rbp +.text:00000001405CD212 push rdi +.text:00000001405CD213 push r14 +.text:00000001405CD215 push r15 +.text:00000001405CD217 lea rbp, [rsp-128h] +.text:00000001405CD21F sub rsp, 228h +.text:00000001405CD226 mov rax, cs:__security_cookie +.text:00000001405CD22D xor rax, rsp +.text:00000001405CD230 mov [rbp+140h+var_50], rax +.text:00000001405CD237 xor r10b, r10b +.text:00000001405CD23A mov [rsp+240h+var_1F8], rcx +.text:00000001405CD23F xor eax, eax +.text:00000001405CD241 mov r11, r9 +.text:00000001405CD244 mov r14, r8 +.text:00000001405CD247 mov r9d, eax +.text:00000001405CD24A movzx r15d, dx +.text:00000001405CD24E lea r8, [rcx+0C10h] +.text:00000001405CD255 mov rdi, rcx + */ + + protected override void Setup64Bit(SigScanner sig) { + PrintMessage = sig.ScanText("4055 57 41 ?? 41 ?? 488DAC24D8FEFFFF 4881EC28020000 488B05???????? 4833C4 488985F0000000 4532D2 48894C2448"); + //PrintMessage = sig.ScanText("4055 57 41 ?? 41 ?? 488DAC24E8FEFFFF 4881EC18020000 488B05???????? 4833C4 488985E0000000 4532D2 48894C2438"); old + + //PrintMessage = sig.ScanText("40 55 57 41 56 41 57 48 8D AC 24 D8 FE FF FF 48 81 EC 28 02 00 00 48 8B 05 63 47 4A 01 48 33 C4 48 89 85 F0 00 00 00 45 32 D2 48 89 4C 24 48 33"); + + //PopulateItemLinkObject = sig.ScanText("48 89 5C 24 08 57 48 83 EC 20 80 7A 06 00 48 8B DA 48 8B F9 74 14 48 8B CA E8 32 03 00 00 48 8B C8 E8 FA F2 B0 FF 8B C8 EB 1D 0F B6 42 14 8B 4A"); + PopulateItemLinkObject = sig.ScanText("48 89 5C 24 08 57 48 83 EC 20 80 7A 06 00 48 8B DA 48 8B F9 74 14 48 8B CA E8 32 03 00 00 48 8B C8 E8 ?? ?? B0 FF 8B C8 EB 1D 0F B6 42 14 8B 4A"); + } + } +} diff --git a/Dalamud/Game/Internal/Gui/GameGui.cs b/Dalamud/Game/Internal/Gui/GameGui.cs new file mode 100644 index 000000000..a2b79aabe --- /dev/null +++ b/Dalamud/Game/Internal/Gui/GameGui.cs @@ -0,0 +1,27 @@ +using System; +using Serilog; + +namespace Dalamud.Game.Internal.Gui { + public sealed class GameGui : IDisposable { + private GameGuiAddressResolver Address { get; } + + public ChatGui Chat { get; private set; } + + public GameGui(IntPtr baseAddress, SigScanner scanner, Dalamud dalamud) { + Address = new GameGuiAddressResolver(baseAddress); + Address.Setup(scanner); + + Log.Verbose("GameGuiManager address {Address}", Address.BaseAddress); + + Chat = new ChatGui(Address.ChatManager, scanner, dalamud); + } + + public void Enable() { + Chat.Enable(); + } + + public void Dispose() { + Chat.Dispose(); + } + } +} diff --git a/Dalamud/Game/Internal/Gui/GameGuiAddressResolver.cs b/Dalamud/Game/Internal/Gui/GameGuiAddressResolver.cs new file mode 100644 index 000000000..7461f5d17 --- /dev/null +++ b/Dalamud/Game/Internal/Gui/GameGuiAddressResolver.cs @@ -0,0 +1,27 @@ +using System; +using System.Runtime.InteropServices; + +namespace Dalamud.Game.Internal.Gui { + public sealed class GameGuiAddressResolver : BaseAddressResolver { + public IntPtr BaseAddress { get; private set; } + + public IntPtr ChatManager { get; private set; } + + public GameGuiAddressResolver(IntPtr baseAddress) { + BaseAddress = baseAddress; + } + + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + private delegate IntPtr GetChatManagerDelegate(IntPtr guiManager); + + protected override void SetupInternal(SigScanner scanner) { + // Xiv__UiManager__GetChatManager 000 lea rax, [rcx+13E0h] + // Xiv__UiManager__GetChatManager+7 000 retn + ChatManager = BaseAddress + 0x13E0; + } + + protected override void Setup64Bit(SigScanner sig) { + // Do nothing, still required. + } + } +} diff --git a/Dalamud/Game/Internal/Libc/LibcFunction.cs b/Dalamud/Game/Internal/Libc/LibcFunction.cs new file mode 100644 index 000000000..93e7fcebb --- /dev/null +++ b/Dalamud/Game/Internal/Libc/LibcFunction.cs @@ -0,0 +1,48 @@ +using System; +using System.Runtime.InteropServices; +using Serilog; + +namespace Dalamud.Game.Internal.Libc { + public sealed class LibcFunction { + // TODO: prolly callconv is not okay in x86 + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + private delegate IntPtr StdStringFromCStringDelegate(IntPtr pStdString, [MarshalAs(UnmanagedType.LPUTF8Str)]string content, IntPtr size); + + // TODO: prolly callconv is not okay in x86 + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + private delegate IntPtr StdStringDeallocateDelegate(IntPtr address); + + private LibcFunctionAddressResolver Address { get; } + + private readonly StdStringFromCStringDelegate stdStringCtorCString; + private readonly StdStringDeallocateDelegate stdStringDeallocate; + + public LibcFunction(SigScanner scanner) { + Address = new LibcFunctionAddressResolver(); + Address.Setup(scanner); + + this.stdStringCtorCString = Marshal.GetDelegateForFunctionPointer(Address.StdStringFromCstring); + this.stdStringDeallocate = Marshal.GetDelegateForFunctionPointer(Address.StdStringDeallocate); + } + + public OwnedStdString NewString(string content) { + Log.Verbose("Allocating"); + + // While 0x70 bytes in the memory should be enough in DX11 version, + // I don't trust my analysis so we're just going to allocate almost two times more than that. + var pString = Marshal.AllocHGlobal(256); + + // Initialize a string + var npos = new IntPtr(0xFFFFFFFF); // assumed to be -1 (0xFFFFFFFF in x86, 0xFFFFFFFF_FFFFFFFF in amd64) + var pReallocString = this.stdStringCtorCString(pString, content, npos); + + Log.Verbose("Prev: {Prev} Now: {Now}", pString, pReallocString); + + return new OwnedStdString(pReallocString, DeallocateStdString); + } + + private void DeallocateStdString(IntPtr address) { + this.stdStringDeallocate(address); + } + } +} diff --git a/Dalamud/Game/Internal/Libc/LibcFunctionAddressResolver.cs b/Dalamud/Game/Internal/Libc/LibcFunctionAddressResolver.cs new file mode 100644 index 000000000..aeaefa595 --- /dev/null +++ b/Dalamud/Game/Internal/Libc/LibcFunctionAddressResolver.cs @@ -0,0 +1,16 @@ +using System; +using System.Security.Policy; + +namespace Dalamud.Game.Internal.Libc { + public sealed class LibcFunctionAddressResolver : BaseAddressResolver { + private delegate IntPtr StringFromCString(); + + public IntPtr StdStringFromCstring { get; private set; } + public IntPtr StdStringDeallocate { get; private set; } + + protected override void Setup64Bit(SigScanner sig) { + StdStringFromCstring = sig.ScanText("48895C2408 4889742410 57 4883EC20 488D4122 66C741200101 488901 498BD8"); + StdStringDeallocate = sig.ScanText("80792100 7512 488B5108 41B833000000 488B09 E9??????00 C3"); + } + } +} diff --git a/Dalamud/Game/Internal/Libc/OwnedStdString.cs b/Dalamud/Game/Internal/Libc/OwnedStdString.cs new file mode 100644 index 000000000..5efe897ed --- /dev/null +++ b/Dalamud/Game/Internal/Libc/OwnedStdString.cs @@ -0,0 +1,70 @@ +using System; +using System.Runtime.InteropServices; +using Serilog; + +namespace Dalamud.Game.Internal.Libc { + public sealed class OwnedStdString : IDisposable { + internal delegate void DeallocatorDelegate(IntPtr address); + + // ala. the drop flag + private bool isDisposed; + + private readonly DeallocatorDelegate dealloc; + + public IntPtr Address { get; private set; } + + /// + /// Construct a wrapper around std::string + /// + /// + /// Violating any of these might cause an undefined hehaviour. + /// 1. This function takes the ownership of the address. + /// 2. A memory pointed by address argument is assumed to be allocated by Marshal.AllocHGlobal thus will try to call Marshal.FreeHGlobal on the address. + /// 3. std::string object pointed by address must be initialized before calling this function. + /// + /// + /// A deallocator function. + /// + internal OwnedStdString(IntPtr address, DeallocatorDelegate dealloc) { + Address = address; + this.dealloc = dealloc; + } + + ~OwnedStdString() { + ReleaseUnmanagedResources(); + } + + private void ReleaseUnmanagedResources() { + if (Address == IntPtr.Zero) { + // Something got seriously fucked. + throw new AccessViolationException(); + } + + Log.Verbose("Deallocting {Addr}", Address); + + // Deallocate inner string first + this.dealloc(Address); + + // Free the heap + Marshal.FreeHGlobal(Address); + + // Better safe (running on a nullptr) than sorry. (running on a dangling pointer) + Address = IntPtr.Zero; + } + + public void Dispose() { + // No double free plz, kthx. + if (this.isDisposed) { + return; + } + this.isDisposed = true; + + ReleaseUnmanagedResources(); + GC.SuppressFinalize(this); + } + + public string Read() { + return StdString.ReadFromPointer(Address); + } + } +} diff --git a/Dalamud/Game/Internal/Libc/StdString.cs b/Dalamud/Game/Internal/Libc/StdString.cs new file mode 100644 index 000000000..c3d6f315b --- /dev/null +++ b/Dalamud/Game/Internal/Libc/StdString.cs @@ -0,0 +1,33 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; + +namespace Dalamud.Game.Internal.Libc { + /// + /// Interation with std::string + /// + public static class StdString { + public static string ReadFromPointer(IntPtr cstring) { + unsafe { + if (cstring == IntPtr.Zero) { + throw new ArgumentNullException(nameof(cstring)); + } + + var innerAddress = Marshal.ReadIntPtr(cstring); + if (innerAddress == IntPtr.Zero) { + throw new NullReferenceException("Inner reference to the cstring is null."); + } + + var pInner = (sbyte*) innerAddress.ToPointer(); + var count = 0; + + // Count the number of chars. String is assumed to be zero-terminated. + while (*(pInner + count) != 0) { + count += 1; + } + + return new string(pInner, 0, count, Encoding.UTF8); + } + } + } +} diff --git a/Dalamud/Game/Internal/Network/GameNetwork.cs b/Dalamud/Game/Internal/Network/GameNetwork.cs new file mode 100644 index 000000000..25acfa562 --- /dev/null +++ b/Dalamud/Game/Internal/Network/GameNetwork.cs @@ -0,0 +1,64 @@ +using System; +using System.Runtime.InteropServices; +using Dalamud.Hooking; +using Serilog; + +namespace Dalamud.Game.Internal.Network { + public sealed class GameNetwork : IDisposable { + [UnmanagedFunctionPointer(CallingConvention.ThisCall)] + private delegate void ProcessZonePacketDelegate(IntPtr a, IntPtr b, IntPtr dataPtr); + + private readonly Hook processZonePacketHook; + + private GameNetworkAddressResolver Address { get; } + + public delegate void OnZonePacketDelegate(IntPtr dataPtr); + + public OnZonePacketDelegate OnZonePacket; + + private readonly Dalamud dalamud; + + public GameNetwork(Dalamud dalamud, SigScanner scanner) { + this.dalamud = dalamud; + Address = new GameNetworkAddressResolver(); + Address.Setup(scanner); + + Log.Verbose("ProcessZonePacket address {ProcessZonePacket}", Address.ProcessZonePacket); + + this.processZonePacketHook = + new Hook(Address.ProcessZonePacket, + new ProcessZonePacketDelegate(ProcessZonePacketDetour), + this); + } + + public void Enable() { + this.processZonePacketHook.Enable(); + } + + public void Dispose() { + this.processZonePacketHook.Dispose(); + } + + private void ProcessZonePacketDetour(IntPtr a, IntPtr b, IntPtr dataPtr) { + // Call events + this.OnZonePacket?.Invoke(dataPtr); + + try { + this.processZonePacketHook.Original(a, b, dataPtr); + } catch (Exception ex) { + string header; + try { + var data = new byte[32]; + Marshal.Copy(dataPtr, data, 0, 32); + header = BitConverter.ToString(data); + } catch (Exception) { + header = "failed"; + } + + Log.Error(ex, "Exception on ProcessZonePacket hook. Header: " + header); + + this.processZonePacketHook.Original(a, b, dataPtr); + } + } + } +} diff --git a/Dalamud/Game/Internal/Network/GameNetworkAddressResolver.cs b/Dalamud/Game/Internal/Network/GameNetworkAddressResolver.cs new file mode 100644 index 000000000..08868c3a4 --- /dev/null +++ b/Dalamud/Game/Internal/Network/GameNetworkAddressResolver.cs @@ -0,0 +1,11 @@ +using System; + +namespace Dalamud.Game.Internal.Network { + public sealed class GameNetworkAddressResolver : BaseAddressResolver { + public IntPtr ProcessZonePacket { get; private set; } + + protected override void Setup64Bit(SigScanner sig) { + ProcessZonePacket = sig.ScanText("48 89 74 24 18 57 48 83 EC 50 8B F2 49 8B F8 41 0F B7 50 02 8B CE E8 ?? ?? 7A FF 0F B7 57 02 8D 42 89 3D 5F 02 00 00 0F 87 60 01 00 00 4C 8D 05"); + } + } +} diff --git a/Dalamud/Game/Network/MarketBoardItemRequest.cs b/Dalamud/Game/Network/MarketBoardItemRequest.cs new file mode 100644 index 000000000..7ec9afe90 --- /dev/null +++ b/Dalamud/Game/Network/MarketBoardItemRequest.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using Dalamud.Game.Network.Structures; + +namespace Dalamud.Game.Network { + internal class MarketBoardItemRequest { + public uint CatalogId { get; set; } + public byte AmountToArrive { get; set; } + + public List Listings { get; set; } + public List History { get; set; } + + public int ListingsRequestId { get; set; } = -1; + + public bool IsDone => Listings.Count == AmountToArrive && History.Count != 0; + } +} diff --git a/Dalamud/Game/Network/MarketBoardUploaders/IMarketBoardUploader.cs b/Dalamud/Game/Network/MarketBoardUploaders/IMarketBoardUploader.cs new file mode 100644 index 000000000..aa8eed3ec --- /dev/null +++ b/Dalamud/Game/Network/MarketBoardUploaders/IMarketBoardUploader.cs @@ -0,0 +1,5 @@ +namespace Dalamud.Game.Network.MarketBoardUploaders { + internal interface IMarketBoardUploader { + void Upload(MarketBoardItemRequest itemRequest); + } +} diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryEntry.cs b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryEntry.cs new file mode 100644 index 000000000..c3b5a4146 --- /dev/null +++ b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryEntry.cs @@ -0,0 +1,29 @@ +using Newtonsoft.Json; + +namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis { + internal class UniversalisHistoryEntry { + [JsonProperty("hq")] + public bool Hq { get; set; } + + [JsonProperty("pricePerUnit")] + public uint PricePerUnit { get; set; } + + [JsonProperty("quantity")] + public uint Quantity { get; set; } + + [JsonProperty("buyerName")] + public string BuyerName { get; set; } + + [JsonProperty("onMannequin")] + public bool OnMannequin { get; set; } + + [JsonProperty("sellerID")] + public ulong SellerId { get; set; } + + [JsonProperty("buyerID")] + public ulong BuyerId { get; set; } + + [JsonProperty("timestamp")] + public long Timestamp { get; set; } + } +} diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryUploadRequest.cs b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryUploadRequest.cs new file mode 100644 index 000000000..51bcbacb8 --- /dev/null +++ b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisHistoryUploadRequest.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis { + internal class UniversalisHistoryUploadRequest { + [JsonProperty("worldID")] + public int WorldId { get; set; } + + [JsonProperty("itemID")] + public uint ItemId { get; set; } + + [JsonProperty("entries")] + public List Entries { get; set; } + + [JsonProperty("uploaderID")] + public ulong UploaderId { get; set; } + } +} diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsEntry.cs b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsEntry.cs new file mode 100644 index 000000000..336e6773c --- /dev/null +++ b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsEntry.cs @@ -0,0 +1,48 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis { + internal class UniversalisItemListingsEntry { + [JsonProperty("listingID")] + public ulong ListingId { get; set; } + + [JsonProperty("hq")] + public bool Hq { get; set; } + + [JsonProperty("pricePerUnit")] + public uint PricePerUnit { get; set; } + + [JsonProperty("quantity")] + public uint Quantity { get; set; } + + [JsonProperty("retainerName")] + public string RetainerName { get; set; } + + [JsonProperty("retainerID")] + public ulong RetainerId { get; set; } + + [JsonProperty("creatorName")] + public string CreatorName { get; set; } + + [JsonProperty("onMannequin")] + public bool OnMannequin { get; set; } + + [JsonProperty("sellerID")] + public ulong SellerId { get; set; } + + [JsonProperty("creatorID")] + public ulong CreatorId { get; set; } + + [JsonProperty("stainID")] + public int StainId { get; set; } + + [JsonProperty("retainerCity")] + public int RetainerCity { get; set; } + + [JsonProperty("lastReviewTime")] + public long LastReviewTime { get; set; } + + [JsonProperty("materia")] + public List Materia { get; set; } + } +} diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsUploadRequest.cs b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsUploadRequest.cs new file mode 100644 index 000000000..e07525f13 --- /dev/null +++ b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingsUploadRequest.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis { + internal class UniversalisItemListingsUploadRequest { + [JsonProperty("worldID")] + public int WorldId { get; set; } + + [JsonProperty("itemID")] + public uint ItemId { get; set; } + + [JsonProperty("listings")] + public List Listings { get; set; } + + [JsonProperty("uploaderID")] + public ulong UploaderId { get; set; } + } +} diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemMateria.cs b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemMateria.cs new file mode 100644 index 000000000..93742b84b --- /dev/null +++ b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemMateria.cs @@ -0,0 +1,11 @@ +using Newtonsoft.Json; + +namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis { + internal class UniversalisItemMateria { + [JsonProperty("slotID")] + public int SlotId { get; set; } + + [JsonProperty("materiaID")] + public int MateriaId { get; set; } + } +} diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs new file mode 100644 index 000000000..c138d20fb --- /dev/null +++ b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.Net; +using Dalamud.Game.Network.MarketBoardUploaders; +using Dalamud.Game.Network.MarketBoardUploaders.Universalis; +using Newtonsoft.Json; +using Serilog; + +namespace Dalamud.Game.Network.Universalis.MarketBoardUploaders { + internal class UniversalisMarketBoardUploader : IMarketBoardUploader { + private const string ApiBase = "https://universalis.app"; + + //private const string ApiBase = "https://127.0.0.1:443"; + private const string ApiKey = "GGD6RdSfGyRiHM5WDnAo0Nj9Nv7aC5NDhMj3BebT"; + + private readonly Dalamud dalamud; + + public UniversalisMarketBoardUploader(Dalamud dalamud) { + this.dalamud = dalamud; + } + + public void Upload(MarketBoardItemRequest request) { + using (var client = new WebClient()) { + client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); + + Log.Verbose("Starting Universalis upload."); + var uploader = this.dalamud.ClientState.LocalContentId; + + var listingsRequestObject = new UniversalisItemListingsUploadRequest(); + listingsRequestObject.WorldId = this.dalamud.ClientState.LocalPlayer.CurrentWorld.Id; + listingsRequestObject.UploaderId = uploader; + listingsRequestObject.ItemId = request.CatalogId; + + listingsRequestObject.Listings = new List(); + foreach (var marketBoardItemListing in request.Listings) { + var universalisListing = new UniversalisItemListingsEntry { + Hq = marketBoardItemListing.IsHq, + SellerId = marketBoardItemListing.RetainerOwnerId, + RetainerName = marketBoardItemListing.RetainerName, + RetainerId = marketBoardItemListing.RetainerId, + CreatorId = marketBoardItemListing.ArtisanId, + CreatorName = marketBoardItemListing.PlayerName, + OnMannequin = marketBoardItemListing.OnMannequin, + LastReviewTime = ((DateTimeOffset) marketBoardItemListing.LastReviewTime).ToUnixTimeSeconds(), + PricePerUnit = marketBoardItemListing.PricePerUnit, + Quantity = marketBoardItemListing.ItemQuantity, + RetainerCity = marketBoardItemListing.RetainerCityId + }; + + universalisListing.Materia = new List(); + foreach (var itemMateria in marketBoardItemListing.Materia) + universalisListing.Materia.Add(new UniversalisItemMateria { + MateriaId = itemMateria.MateriaId, + SlotId = itemMateria.Index + }); + + listingsRequestObject.Listings.Add(universalisListing); + } + + var upload = JsonConvert.SerializeObject(listingsRequestObject); + client.UploadString(ApiBase + $"/upload/{ApiKey}", "POST", upload); + Log.Verbose(upload); + + var historyRequestObject = new UniversalisHistoryUploadRequest(); + historyRequestObject.WorldId = this.dalamud.ClientState.LocalPlayer.CurrentWorld.Id; + historyRequestObject.UploaderId = uploader; + historyRequestObject.ItemId = request.CatalogId; + + historyRequestObject.Entries = new List(); + foreach (var marketBoardHistoryListing in request.History) + historyRequestObject.Entries.Add(new UniversalisHistoryEntry { + BuyerName = marketBoardHistoryListing.BuyerName, + Hq = marketBoardHistoryListing.IsHq, + OnMannequin = marketBoardHistoryListing.OnMannequin, + PricePerUnit = marketBoardHistoryListing.SalePrice, + Quantity = marketBoardHistoryListing.Quantity, + Timestamp = ((DateTimeOffset) marketBoardHistoryListing.PurchaseTime).ToUnixTimeSeconds() + }); + + client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); + + var historyUpload = JsonConvert.SerializeObject(historyRequestObject); + client.UploadString(ApiBase + $"/upload/{ApiKey}", "POST", historyUpload); + Log.Verbose(historyUpload); + + Log.Verbose("Universalis data upload for item#{0} completed.", request.CatalogId); + } + } + } +} diff --git a/Dalamud/Game/Network/NetworkHandlers.cs b/Dalamud/Game/Network/NetworkHandlers.cs new file mode 100644 index 000000000..02d5c0e2b --- /dev/null +++ b/Dalamud/Game/Network/NetworkHandlers.cs @@ -0,0 +1,192 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Threading.Tasks; +using Dalamud.Game.Network.MarketBoardUploaders; +using Dalamud.Game.Network.Structures; +using Dalamud.Game.Network.Universalis.MarketBoardUploaders; +using Dalamud.Settings; +using Serilog; + +namespace Dalamud.Game.Network { + public class NetworkHandlers { + private readonly Dalamud dalamud; + + private readonly List marketBoardRequests = new List(); + + private readonly bool optOutMbUploads; + private readonly IMarketBoardUploader uploader; + + public NetworkHandlers(Dalamud dalamud, bool optOutMbUploads) { + this.dalamud = dalamud; + this.optOutMbUploads = optOutMbUploads; + + this.uploader = new UniversalisMarketBoardUploader(dalamud); + + dalamud.Framework.Network.OnZonePacket += OnZonePacket; + } + + private void OnZonePacket(IntPtr dataPtr) { + var opCode = (ZoneOpCode) Marshal.ReadInt16(dataPtr, 2); + + if (opCode == ZoneOpCode.RetainerSaleItemId) { + var itemId = Marshal.ReadInt32(dataPtr + 16); + var amount = Marshal.ReadByte(dataPtr + 32); + var isHq = false; + + if (itemId > 1000000) { + itemId -= 1000000; + isHq = true; + } + + Task.Run(() => this.dalamud.BotManager.ProcessRetainerSale(itemId, amount, isHq)); + + return; + } + + if (opCode == ZoneOpCode.FateSpawn) { + if (PersistentSettings.Instance.Fates == null) + return; + + var data = new byte[64]; + Marshal.Copy(dataPtr, data, 0, 64); + + var fateId = data[16]; + if (PersistentSettings.Instance.Fates.Any(x => x.Id == fateId) && + this.dalamud.BotManager.IsConnected) + Task.Run(() => this.dalamud.BotManager.ProcessFate(fateId)); + + return; + } + + if (opCode == ZoneOpCode.CfNotify) { + var data = new byte[64]; + Marshal.Copy(dataPtr, data, 0, 64); + + var notifyType = data[16]; + var contentFinderConditionId = BitConverter.ToInt16(data, 38); + + + Task.Run(async () => { + if (notifyType != 4) + return; + + var contentFinderCondition = + await XivApi.GetContentFinderCondition(contentFinderConditionId); + + this.dalamud.Framework.Gui.Chat.Print("Duty Finder pop: " + contentFinderCondition["Name"]); + + if (this.dalamud.BotManager.IsConnected) + await this.dalamud.BotManager.ProcessCfPop(contentFinderCondition); + }); + + return; + } + + if (!this.optOutMbUploads) { + if (opCode == ZoneOpCode.MarketBoardItemRequestStart) { + var catalogId = (uint) Marshal.ReadInt32(dataPtr + 0x10); + var amount = Marshal.ReadByte(dataPtr + 0x1B); + + this.marketBoardRequests.Add(new MarketBoardItemRequest { + CatalogId = catalogId, + AmountToArrive = amount, + Listings = new List(), + History = new List() + }); + + Log.Verbose($"NEW MB REQUEST START: item#{catalogId} amount#{amount}"); + return; + } + + if (opCode == ZoneOpCode.MarketBoardOfferings) { + var listing = MarketBoardCurrentOfferings.Read(dataPtr + 0x10); + + var request = + this.marketBoardRequests.LastOrDefault( + r => r.CatalogId == listing.ItemListings[0].CatalogId && !r.IsDone); + + if (request == null) { + Log.Error( + $"Market Board data arrived without a corresponding request: item#{listing.ItemListings[0].CatalogId}"); + return; + } + + if (request.Listings.Count + listing.ItemListings.Count > request.AmountToArrive) { + Log.Error( + $"Too many Market Board listings received for request: {request.Listings.Count + listing.ItemListings.Count} > {request.AmountToArrive} item#{listing.ItemListings[0].CatalogId}"); + return; + } + + if (request.ListingsRequestId != -1 && request.ListingsRequestId != listing.RequestId) { + Log.Error( + $"Non-matching RequestIds for Market Board data request: {request.ListingsRequestId}, {listing.RequestId}"); + return; + } + + if (request.ListingsRequestId == -1 && request.Listings.Count > 0) { + Log.Error( + $"Market Board data request sequence break: {request.ListingsRequestId}, {request.Listings.Count}"); + return; + } + + if (request.ListingsRequestId == -1) { + request.ListingsRequestId = listing.RequestId; + Log.Verbose($"First Market Board packet in sequence: {listing.RequestId}"); + } + + request.Listings.AddRange(listing.ItemListings); + + Log.Verbose("Added {0} ItemListings to request#{1}, now {2}/{3}, item#{4}", + listing.ItemListings.Count, request.ListingsRequestId, request.Listings.Count, + request.AmountToArrive, request.CatalogId); + + if (request.IsDone) { + Log.Verbose("Market Board request finished, starting upload: request#{0} item#{1} amount#{2}", + request.ListingsRequestId, request.CatalogId, request.AmountToArrive); + try { + Task.Run(() => this.uploader.Upload(request)); + } catch (Exception ex) { + Log.Error(ex, "Market Board data upload failed."); + } + } + + return; + } + + if (opCode == ZoneOpCode.MarketBoardHistory) { + var listing = MarketBoardHistory.Read(dataPtr + 0x10); + + var request = this.marketBoardRequests.LastOrDefault(r => r.CatalogId == listing.CatalogId); + + if (request == null) { + Log.Error( + $"Market Board data arrived without a corresponding request: item#{listing.CatalogId}"); + return; + } + + if (request.ListingsRequestId != -1) { + Log.Error( + $"Market Board data history sequence break: {request.ListingsRequestId}, {request.Listings.Count}"); + return; + } + + request.History.AddRange(listing.HistoryListings); + + Log.Verbose("Added history for item#{0}", listing.CatalogId); + } + } + } + + private enum ZoneOpCode { + CfNotify = 0x78, + RetainerSaleItemId = 0x13F, // TODO these are probably not accurate + RetainerSaleFinish = 0x138, + FateSpawn = 0x226, + MarketBoardItemRequestStart = 0x13B, + MarketBoardOfferings = 0x13C, + MarketBoardHistory = 0x140 + } + } +} diff --git a/Dalamud/Game/Network/Structures/MarketBoardCurrentOfferings.cs b/Dalamud/Game/Network/Structures/MarketBoardCurrentOfferings.cs new file mode 100644 index 000000000..cf65797c4 --- /dev/null +++ b/Dalamud/Game/Network/Structures/MarketBoardCurrentOfferings.cs @@ -0,0 +1,106 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + +namespace Dalamud.Game.Network.Structures { + public class MarketBoardCurrentOfferings { + public List ItemListings; + + public int ListingIndexEnd; + public int ListingIndexStart; + public int RequestId; + + public static unsafe MarketBoardCurrentOfferings Read(IntPtr dataPtr) { + var output = new MarketBoardCurrentOfferings(); + + using (var stream = new UnmanagedMemoryStream((byte*) dataPtr.ToPointer(), 1544)) { + using (var reader = new BinaryReader(stream)) { + output.ItemListings = new List(); + + for (var i = 0; i < 10; i++) { + var listingEntry = new MarketBoardItemListing(); + + listingEntry.ListingId = reader.ReadUInt64(); + listingEntry.RetainerId = reader.ReadUInt64(); + listingEntry.RetainerOwnerId = reader.ReadUInt64(); + listingEntry.ArtisanId = reader.ReadUInt64(); + listingEntry.PricePerUnit = reader.ReadUInt32(); + listingEntry.TotalTax = reader.ReadUInt32(); + listingEntry.ItemQuantity = reader.ReadUInt32(); + listingEntry.CatalogId = reader.ReadUInt32(); + listingEntry.LastReviewTime = DateTimeOffset.UtcNow.AddSeconds(-reader.ReadUInt16()).DateTime; + + reader.ReadUInt16(); // container + reader.ReadUInt32(); // slot + reader.ReadUInt16(); // durability + reader.ReadUInt16(); // spiritbond + + listingEntry.Materia = new List(); + + for (var materiaIndex = 0; materiaIndex < 5; materiaIndex++) { + var materiaVal = reader.ReadUInt16(); + + var materiaEntry = new MarketBoardItemListing.ItemMateria(); + materiaEntry.MateriaId = (materiaVal & 0xFF0) >> 4; + materiaEntry.Index = materiaVal & 0xF; + + if (materiaEntry.MateriaId != 0) + listingEntry.Materia.Add(materiaEntry); + } + + reader.ReadUInt16(); + reader.ReadUInt32(); + + listingEntry.RetainerName = Encoding.UTF8.GetString(reader.ReadBytes(32)).TrimEnd('\u0000'); + listingEntry.PlayerName = Encoding.UTF8.GetString(reader.ReadBytes(32)).TrimEnd('\u0000'); + listingEntry.IsHq = reader.ReadBoolean(); + listingEntry.MateriaCount = reader.ReadByte(); + listingEntry.OnMannequin = reader.ReadBoolean(); + listingEntry.RetainerCityId = reader.ReadByte(); + listingEntry.StainId = reader.ReadUInt16(); + + reader.ReadUInt16(); + reader.ReadUInt32(); + + if (listingEntry.CatalogId != 0) + output.ItemListings.Add(listingEntry); + } + + output.ListingIndexEnd = reader.ReadByte(); + output.ListingIndexStart = reader.ReadByte(); + output.RequestId = reader.ReadUInt16(); + } + } + + return output; + } + + public class MarketBoardItemListing { + public ulong ArtisanId; + public uint CatalogId; + public bool IsHq; + public uint ItemQuantity; + public DateTime LastReviewTime; + public ulong ListingId; + + public List Materia; + public int MateriaCount; + public bool OnMannequin; + public string PlayerName; + public uint PricePerUnit; + public int RetainerCityId; + public ulong RetainerId; + + public string RetainerName; + public ulong RetainerOwnerId; + public int StainId; + public uint TotalTax; + + public class ItemMateria { + public int Index; + public int MateriaId; + } + } + } +} diff --git a/Dalamud/Game/Network/Structures/MarketBoardHistory.cs b/Dalamud/Game/Network/Structures/MarketBoardHistory.cs new file mode 100644 index 000000000..c96b4a0e0 --- /dev/null +++ b/Dalamud/Game/Network/Structures/MarketBoardHistory.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + +namespace Dalamud.Game.Network.Structures { + public class MarketBoardHistory { + public uint CatalogId; + public uint CatalogId2; + + public List HistoryListings; + + public static unsafe MarketBoardHistory Read(IntPtr dataPtr) { + var output = new MarketBoardHistory(); + + using (var stream = new UnmanagedMemoryStream((byte*) dataPtr.ToPointer(), 1544)) { + using (var reader = new BinaryReader(stream)) { + output.CatalogId = reader.ReadUInt32(); + output.CatalogId2 = reader.ReadUInt32(); + + output.HistoryListings = new List(); + + for (var i = 0; i < 10; i++) { + var listingEntry = new MarketBoardHistoryListing(); + + listingEntry.SalePrice = reader.ReadUInt32(); + listingEntry.PurchaseTime = DateTimeOffset.FromUnixTimeSeconds(reader.ReadUInt32()).UtcDateTime; + listingEntry.Quantity = reader.ReadUInt32(); + listingEntry.IsHq = reader.ReadBoolean(); + + reader.ReadBoolean(); + + listingEntry.OnMannequin = reader.ReadBoolean(); + listingEntry.BuyerName = Encoding.UTF8.GetString(reader.ReadBytes(33)).TrimEnd('\u0000'); + listingEntry.CatalogId = reader.ReadUInt32(); + + if (listingEntry.CatalogId != 0) + output.HistoryListings.Add(listingEntry); + } + } + } + + return output; + } + + public class MarketBoardHistoryListing { + public string BuyerName; + + public uint CatalogId; + public bool IsHq; + public bool OnMannequin; + public DateTime PurchaseTime; + public uint Quantity; + public uint SalePrice; + } + } +} diff --git a/Dalamud/Game/SigScanner.cs b/Dalamud/Game/SigScanner.cs new file mode 100644 index 000000000..823d016ba --- /dev/null +++ b/Dalamud/Game/SigScanner.cs @@ -0,0 +1,148 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Serilog; + +namespace Dalamud.Game { + public sealed class SigScanner { + public SigScanner(ProcessModule module) { + Module = module; + Is32BitProcess = !Environment.Is64BitProcess; + + // Limit the search space to .text section. + SetupSearchSpace(module); + + Log.Verbose("Module base: {Address}", TextSectionBase); + Log.Verbose("Moudle size: {Size}", TextSectionSize); + } + + public bool Is32BitProcess { get; } + + public IntPtr TextSectionBase { get; private set; } + public int TextSectionSize { get; private set; } + + public IntPtr DataSectionBase { get; private set; } + public int DataSectionSize { get; private set; } + + public ProcessModule Module { get; } + + private IntPtr TextSectionTop => TextSectionBase + TextSectionSize; + + private void SetupSearchSpace(ProcessModule module) { + var baseAddress = module.BaseAddress; + + // We don't want to read all of IMAGE_DOS_HEADER or IMAGE_NT_HEADER stuff so we cheat here. + var ntNewOffset = Marshal.ReadInt32(baseAddress, 0x3C); + var ntHeader = baseAddress + ntNewOffset; + + // IMAGE_NT_HEADER + var fileHeader = ntHeader + 4; + var numSections = Marshal.ReadInt16(ntHeader, 6); + + // IMAGE_OPTIONAL_HEADER + var optionalHeader = fileHeader + 20; + + IntPtr sectionHeader; + if (Is32BitProcess) // IMAGE_OPTIONAL_HEADER32 + sectionHeader = optionalHeader + 224; + else // IMAGE_OPTIONAL_HEADER64 + sectionHeader = optionalHeader + 240; + + // IMAGE_SECTION_HEADER + var sectionCursor = sectionHeader; + for (var i = 0; i < numSections; i++) { + var sectionName = Marshal.ReadInt64(sectionCursor); + + // .text + switch (sectionName) { + case 0x747865742E: // .text + TextSectionBase = baseAddress + Marshal.ReadInt32(sectionCursor, 12); + TextSectionSize = Marshal.ReadInt32(sectionCursor, 8); + break; + case 0x617461642E: // .data + DataSectionBase = baseAddress + Marshal.ReadInt32(sectionCursor, 12); + DataSectionSize = Marshal.ReadInt32(sectionCursor, 8); + break; + } + + sectionCursor += 40; + } + } + + public IntPtr ScanText(string signature) { + return Scan(TextSectionBase, TextSectionSize, signature); + } + + public IntPtr ScanData(string signature) { + return Scan(DataSectionBase, DataSectionSize, signature); + } + + public IntPtr ScanModule(string signature) { + return Scan(Module.BaseAddress, Module.ModuleMemorySize, signature); + } + + public IntPtr Scan(IntPtr baseAddress, int size, string signature) { + var needle = SigToNeedle(signature); + + unsafe { + var pCursor = (byte*) baseAddress.ToPointer(); + var pTop = (byte*) (baseAddress + size - needle.Length); + while (pCursor < pTop) { + if (IsMatch(pCursor, needle)) return (IntPtr) pCursor; + + // Advance an offset + pCursor += 1; + } + } + + throw new KeyNotFoundException($"Can't find a signature of {signature}"); + } + + public IntPtr ResolveRelativeAddress(IntPtr nextInstAddr, int relOffset) { + if (Is32BitProcess) throw new NotSupportedException("32 bit is not supported."); + + return nextInstAddr + relOffset; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private unsafe bool IsMatch(byte* pCursor, byte?[] needle) { + for (var i = 0; i < needle.Length; i++) { + var expected = needle[i]; + if (expected == null) continue; + + var actual = *(pCursor + i); + if (expected != actual) return false; + } + + return true; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private byte?[] SigToNeedle(string signature) { + // Strip all whitespaces + signature = signature.Replace(" ", ""); + + if (signature.Length % 2 != 0) + throw new ArgumentException("Signature without whitespaces must be divisible by two.", + nameof(signature)); + + var needleLength = signature.Length / 2; + var needle = new byte?[needleLength]; + + for (var i = 0; i < needleLength; i++) { + var hexString = signature.Substring(i * 2, 2); + if (hexString == "??" || hexString == "**") { + needle[i] = null; + continue; + } + + needle[i] = byte.Parse(hexString, NumberStyles.AllowHexSpecifier); + } + + return needle; + } + } +} diff --git a/Dalamud/Hooking/Hook.cs b/Dalamud/Hooking/Hook.cs new file mode 100644 index 000000000..4101d5912 --- /dev/null +++ b/Dalamud/Hooking/Hook.cs @@ -0,0 +1,112 @@ +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using EasyHook; + +namespace Dalamud.Hooking { + /// + /// Manages a hook which can be used to intercept a call to native function. + /// This class is basically a thin wrapper around the LocalHook type to provide helper functions. + /// + /// Delegate type to represents a function prototype. This must be the same prototype as original function do. + public sealed class Hook : IDisposable where T : class { + private bool isDisposed; + + private readonly IntPtr address; + + private readonly T original; + + private readonly LocalHook hookInfo; + + /// + /// A memory address of the target function. + /// + /// Hook is already disposed. + public IntPtr Address { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { + CheckDisposed(); + return this.address; + } + } + + /// + /// A delegate function that can be used to call the actual function as if function is not hooked yet. + /// + /// + /// Hook is already disposed. + public T Original { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + get { + CheckDisposed(); + return this.original; + } + } + + + /// + /// Creates a hook. Hooking address is inferred by calling to GetProcAddress() function. Hook is not activated until Enable() method is called. + /// + /// A name of the module currently loaded in the memory. (e.g. ws2_32.dll) + /// A name of the exported function name (e.g. send) + /// Callback function. Delegate must have a same original function prototype. + /// A callback object which can be accessed within the detour. + /// + public static Hook FromSymbol(string moduleName, string exportName, Delegate detour, object callbackParam = null) { + // Get a function address from the symbol name. + var address = LocalHook.GetProcAddress(moduleName, exportName); + + return new Hook(address, detour, callbackParam); + } + + /// + /// Createss a hook. Hook is not activated until Enable() method is called. + /// + /// A memory address to install a hook. + /// Callback function. Delegate must have a same original function prototype. + /// A callback object which can be accessed within the detour. + public Hook(IntPtr address, Delegate detour, object callbackParam = null) { + this.hookInfo = LocalHook.Create(address, detour, callbackParam); // Installs a hook here + this.address = address; + this.original = Marshal.GetDelegateForFunctionPointer(this.hookInfo.HookBypassAddress); + } + + /// + /// Remove a hook from the current process. + /// + public void Dispose() { + if (this.isDisposed) { + return; + } + + this.hookInfo.Dispose(); + + this.isDisposed = true; + } + + /// + /// Starts intercepting a call to the function. + /// + public void Enable() { + CheckDisposed(); + + this.hookInfo.ThreadACL.SetExclusiveACL(null); + } + + /// + /// Stops intercepting a call to the function. + /// + public void Disable() { + CheckDisposed(); + + this.hookInfo.ThreadACL.SetInclusiveACL(null); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private void CheckDisposed() { + if (this.isDisposed) { + throw new ObjectDisposedException("Hook is already disposed."); + } + } + } +} diff --git a/Dalamud/Plugin/DalamudPluginInterface.cs b/Dalamud/Plugin/DalamudPluginInterface.cs new file mode 100644 index 000000000..8c2cb38eb --- /dev/null +++ b/Dalamud/Plugin/DalamudPluginInterface.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Dalamud.Game.ClientState; +using Dalamud.Game.Command; +using Dalamud.Game.Internal; +using Dalamud.Game.Internal.Gui; + +namespace Dalamud.Plugin +{ + /// + /// This class acts as an interface to various objects needed to interact with Dalamud and the game. + /// + public class DalamudPluginInterface { + /// + /// The CommandManager object that allows you to add and remove custom chat commands. + /// + public readonly CommandManager CommandManager; + + /// + /// The ClientState object that allows you to access current client memory information like actors, territories, etc. + /// + public readonly ClientState ClientState; + + /// + /// The Framework object that allows you to interact with the client. + /// + public readonly Framework Framework; + + /// + /// Set up the interface and populate all fields needed. + /// + /// + public DalamudPluginInterface(Dalamud dalamud) { + this.CommandManager = dalamud.CommandManager; + this.Framework = dalamud.Framework; + this.ClientState = dalamud.ClientState; + } + } +} diff --git a/Dalamud/Plugin/IDalamudPlugin.cs b/Dalamud/Plugin/IDalamudPlugin.cs new file mode 100644 index 000000000..2e1cb67a8 --- /dev/null +++ b/Dalamud/Plugin/IDalamudPlugin.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Dalamud.Plugin +{ + /// + /// This interface represents a basic Dalamud plugin. All plugins have to implement this interface. + /// + public interface IDalamudPlugin : IDisposable + { + /// + /// The name of the plugin. + /// + string Name { get; } + + /// + /// Initializes a Dalamud plugin. + /// + /// The needed to access various Dalamud objects. + void Initialize(DalamudPluginInterface pluginInterface); + } +} diff --git a/Dalamud/Plugin/PluginManager.cs b/Dalamud/Plugin/PluginManager.cs new file mode 100644 index 000000000..370bbae54 --- /dev/null +++ b/Dalamud/Plugin/PluginManager.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using Serilog; + +namespace Dalamud.Plugin +{ + public class PluginManager { + private readonly Dalamud dalamud; + private readonly string pluginDirectory; + private readonly string defaultPluginDirectory; + + private readonly DalamudPluginInterface dalamudInterface; + + private List plugins; + + public PluginManager(Dalamud dalamud, string pluginDirectory, string defaultPluginDirectory) { + this.dalamud = dalamud; + this.pluginDirectory = pluginDirectory; + this.defaultPluginDirectory = defaultPluginDirectory; + + this.dalamudInterface = new DalamudPluginInterface(dalamud); + } + + public void UnloadPlugins() { + if (this.plugins == null) + return; + + for (var i = 0; i < this.plugins.Count; i++) { + this.plugins[i].Dispose(); + this.plugins[i] = null; + } + } + + public void LoadPlugins() { + LoadPluginsAt(this.defaultPluginDirectory); + LoadPluginsAt(this.pluginDirectory); + } + + private void LoadPluginsAt(string folder) { + if (Directory.Exists(folder)) + { + Log.Debug("Loading plugins at {0}", folder); + + var pluginFileNames = Directory.GetFiles(folder, "*.dll"); + + var assemblies = new List(pluginFileNames.Length); + foreach (var dllFile in pluginFileNames) + { + Log.Debug("Loading assembly at {0}", dllFile); + var assemblyName = AssemblyName.GetAssemblyName(dllFile); + var pluginAssembly = Assembly.Load(assemblyName); + assemblies.Add(pluginAssembly); + } + + var interfaceType = typeof(IDalamudPlugin); + var foundImplementations = new List(); + foreach (var assembly in assemblies) { + if (assembly != null) { + Log.Debug("Loading types for {0}", assembly.FullName); + var types = assembly.GetTypes(); + foreach (var type in types) { + if (type.IsInterface || type.IsAbstract) { + continue; + } + + if (type.GetInterface(interfaceType.FullName) != null) { + foundImplementations.Add(type); + } + } + } + } + + this.plugins = new List(foundImplementations.Count); + foreach (var pluginType in foundImplementations) + { + var plugin = (IDalamudPlugin)Activator.CreateInstance(pluginType); + plugin.Initialize(this.dalamudInterface); + Log.Information("Loaded plugin: {0}", plugin.Name); + this.plugins.Add(plugin); + } + } + } + } +} diff --git a/Dalamud/Properties/Resources.Designer.cs b/Dalamud/Properties/Resources.Designer.cs new file mode 100644 index 000000000..f8904c30a --- /dev/null +++ b/Dalamud/Properties/Resources.Designer.cs @@ -0,0 +1,73 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Dalamud.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Dalamud.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap eye { + get { + object obj = ResourceManager.GetObject("eye", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Dalamud/Properties/Resources.resx b/Dalamud/Properties/Resources.resx new file mode 100644 index 000000000..fa96538cc --- /dev/null +++ b/Dalamud/Properties/Resources.resx @@ -0,0 +1,969 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + 9gAAAABJRU5ErkJggg== + + + \ No newline at end of file diff --git a/Dalamud/Resources/eye.png b/Dalamud/Resources/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..5154d00df36e5f8dc772560cca1cd9914d020cd8 GIT binary patch literal 50593 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 n7MU4|%>^{DZU@{Sc4KoBmf`KdvUu0l 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 h{QvZ+Yjk_24kmFk1Q-^3U0X{y!RV+=l=F literal 0 HcmV?d00001 diff --git a/Dalamud/Settings/PersistentSettings.cs b/Dalamud/Settings/PersistentSettings.cs new file mode 100644 index 000000000..243202586 --- /dev/null +++ b/Dalamud/Settings/PersistentSettings.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json; + +namespace Dalamud.Settings +{ + public class PersistentSettings { + private static PersistentSettings _instance = null; + + private static readonly string ConfigPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "settings.json"); + + public static PersistentSettings Instance { + get { + if (_instance == null) { + if (!File.Exists(ConfigPath)) { + _instance = new PersistentSettings(); + return _instance; + } + + _instance = JsonConvert.DeserializeObject(File.ReadAllText(ConfigPath)); + } + + return _instance; + } + } + + public class FateInfo { + public string Name { get; set; } + public int Id { get; set; } + } + + public List Fates; + + public List BadWords; + + public void Save() { + File.WriteAllText(ConfigPath, JsonConvert.SerializeObject(this)); + } + + public static void Reset() { + _instance = new PersistentSettings(); + Instance.Save(); + } + } +} diff --git a/Dalamud/XivApi.cs b/Dalamud/XivApi.cs new file mode 100644 index 000000000..6515541a5 --- /dev/null +++ b/Dalamud/XivApi.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using Microsoft.CSharp.RuntimeBinder; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace Dalamud +{ + class XivApi + { + private const string URL = "http://xivapi.com/"; + + private static readonly Dictionary cachedResponses = new Dictionary(); + + public static async Task GetWorld(int world) + { + var res = await Get("World/" + world); + + return res; + } + + public static async Task GetClassJob(int id) + { + var res = await Get("ClassJob/" + id); + + return res; + } + + public static async Task GetFate(int id) + { + var res = await Get("Fate/" + id); + + return res; + } + + public static async Task GetCharacterSearch(string name, string world) + { + var res = await Get("character/search" + $"?name={name}&server={world}"); + + return res; + } + + public static async Task GetContentFinderCondition(int contentFinderCondition) { + return await Get("ContentFinderCondition/" + contentFinderCondition); + } + + public static async Task Search(string query, string indexes, int limit = 100) { + query = System.Net.WebUtility.UrlEncode(query); + + return await Get("search" + $"?string={query}&indexes={indexes}&limit={limit}"); + } + + public static async Task GetMarketInfoWorld(int itemId, string worldName) { + return await Get($"market/{worldName}/item/{itemId}", true); + } + + public static async Task GetMarketInfoDc(int itemId, string dcName) { + return await Get($"market/item/{itemId}?dc={dcName}", true); + } + + public static async Task GetItem(int itemId) { + return await Get($"Item/{itemId}", true); + } + + public static async Task Get(string endpoint, bool noCache = false) + { + if (cachedResponses.ContainsKey(endpoint) && !noCache) + return cachedResponses[endpoint]; + + var client = new HttpClient(); + var response = await client.GetAsync(URL + endpoint); + var result = await response.Content.ReadAsStringAsync(); + + var obj = JObject.Parse(result); + + if (!noCache) + cachedResponses.Add(endpoint, obj); + + return obj; + } + } +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..946b95d8d --- /dev/null +++ b/LICENSE @@ -0,0 +1,84 @@ +AFFERO GENERAL PUBLIC LICENSE +Version 1, March 2002

Copyright © 2002 Affero Inc.
510 Third Street - Suite 225, San Francisco, CA 94107, USA +This license is a modified version of the GNU General Public License copyright (C) 1989, 1991 Free Software Foundation, Inc. made with their permission. Section 2(d) has been added to cover use of software over a computer network. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the Affero General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This Public License applies to most of Affero's software and to any other program whose authors commit to using it. (Some other Affero software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. This General Public License is designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this Affero General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
 +a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
 +b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
 +c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
 +d) If the Program as you received it is intended to interact with users through a computer network and if, in the version you received, any user interacting with the Program was given the opportunity to request transmission to that user of the Program's complete source code, you must not remove that facility from your modified version of the Program or work based on the Program, and must offer an equivalent opportunity for all users interacting with your Program through a computer network to request immediate transmission by HTTP of the complete source code of your modified version or other derivative work. + +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. + +3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
 +a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
 +b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
 +c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +9. Affero Inc. may publish revised and/or new versions of the Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by Affero, Inc. If the Program does not specify a version number of this License, you may choose any version ever published by Affero, Inc. + +You may also choose to redistribute modified versions of this program under any version of the Free Software Foundation's GNU General Public License version 3 or higher, so long as that version of the GNU GPL includes terms and conditions substantially equivalent to those of this license. + +10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by Affero, Inc., write to us; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. diff --git a/README.md b/README.md new file mode 100644 index 000000000..71c0ab4d6 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Dalamud + +FFXIV Hooking framework for [FFXIVQuickLauncher](https://github.com/goaaats/FFXIVQuickLauncher). + +Thanks to Mino, whose work has made this possible! \ No newline at end of file diff --git a/Resources/EasyHook32.dll b/Resources/EasyHook32.dll new file mode 100644 index 0000000000000000000000000000000000000000..135609b46ef755c79d9531964638ffe6312b758a GIT binary patch literal 268288 zcmeFa4}4VBwLf}hGLsBpk~2sG0fGb!7L90hK$8w&0+}Q#!3mKG5d&B;osLv#I0vv2 zNH`hI$#JUJE4{T>tB7r}dRuA*qXkR|CLkz(^ePHhQ$^k5p&FHj0bVXsYWv&?;M;!S}ct;|_bf7cJ|Z~bx3ZMWWe=Ur0H4{pz?m+#E^(VaOZH&*5R z_^xHQU!Inhnj0(ngWspQesl1)Iq|=qUu~H46y6K&dTP#Z@qFg74Re0ZpF8F}$Dhia ziFn?Vzh%z9;rW|`KbVt?=e^t0dHRu+_sw}3?;|UB#NJgWsWsxbSxfFbYu^QOWd%fAOdA z1Sm{I#y_i2gv3ZlX$PON*FRW=nJJ+EcB`zCas-6{wde*q}9{YyOC z&M&wK&A8l5CTwX%+#wL=`*{A&q#bhbe?@}OetG@M`rGiv+ln@G!kr+_9Qs#8<<;N5 z{4OMIbizWDR zw}*G00N|@Ad6=CA@pgaYABw{J7N!KC%^u+B zZrAO6;SOzqLrvvHMl_@`*~KC`gOS1B`1qTFVdF33g7OlqHfrL)^k^^uIw zFJX)D(2DZ4mM5sB4yT$%6`{eD#%yq8nPC`udK^uA5_r69?H+EWF>9yQW`tm?Fq@L{-6<WhMLhXN-=!))=T!)R42$Ux$ zDEQ`w0rHvol6k&(xi>HDyt&5c;W$XSHe;2;@K4cLs9hRktjbzo_zMus@*9VI2t10xp7*99MuCn$t($#ql(i-OK7!(WaLbH-BSD0^I;-L_og4Xp%- z+H#%RErf8c%lJ@RToe#M9T0kz3n)8H#L$yrZwAUWWS4=0WCwfY0}=E|^yzepW*?Gp zolHS+ZX1=;3Ecgf?BIoZzNnwnG_Vxqtsbj&<#lvK?Ml1L#~itW&@|6UEw9m2!=*V8 zaRS86;#$g%L8C-78b<*49x!VJ5FEt7)mzSZ^3Z zH3}FBHMN~)&VGz2GiQZ^iaV3hFfx`STnzNy0D9j@9CQZuZn3)9FY+*r8EV4`cRLyx z>JvA%gTz_v_c@rogi&A;_E+kuy+-8sc=5BpLO9l_4gGzk&La6IewK>@YP3VjSwkA5 zoE?xdv{yUM*p;3M9X-iOw(wHW7$P+1->t5`qTKcJB?$?46Zt-v(D6ZXQbx#3_!3Vz zJGW69#qx$w2oeeh3C)lpk2B`k)}(65;`V|fHCZ3#XX`H^9HNMZSO9(oO9!r6H#063 zgif?eYdGO&PZH*x5yS}S6s5r-NK?UyV9M!Bog^<$nu00I&$doL_Fhv!`PeqR)u_qn zOn=Z8%wdn93u|h$UcZq!1D(A2!Ru|V&G+Lc)F<16S>QqCV(12oJ3(YdM0NuW<@OT- zd-!`4=*KW{Fcbo$dsTT5>EVQQ7rWj>`UJZRsfm9otNhyZWk9alm`-&WZyD36I%o&R zTiQ{~sGg(Zh7FYaTwXMMqfI$ut6zm~hyJJahRbXf z%~!=1@y4LfGs2}Vz-9qf7K2Gwb{JM)IJ+&Op+Mby3*TTgDPv?Z$vQ&*sTI zbBHK{LwF^z z$7P-!U8L-Baylp{UEzw}Dt|RZA|n+>YjA`NDMhPwhK`}wsYAssN3px8SiMy9_9|^# zP>dj_RaLWTfD$L_Q}fP=+ieq2Vx^DyuYtZ<(W~`}+mrBGhF6H}IiWtZrB`}8ueT98 zC2FdODz~oqdI@L}@3C(RX<;U1g^-RBOd04|eOFcWCK@kbnej|Tg5ZVheLMoB7qc0V zr92v<8ue+f>q+i?#g&-Bj7$a=)}k1}7YCh-3hiwd*j!SYpIv~=B-fwTQ`j}x=*BFT z&mUU%l0|xkpM5a{30O8@-2zsaG_-1IY&o9B*m@gN0F5okFCw5RzcSco;|65x#%rOTvd0Ds3=V|7y}kg= zD(t%1yhruN{pdz?$aB|nT7R1?S_wo4Wznd!B#UBHMXe**Oq3rSwOGw(4Vap>E72H~#X%F@rE3QR;n3oA#khJ-vj6E%VCLo^hO7WO)Q;8+LiiAU6c zy1cpUwHV0HLYyjDabe8mS~sf)E}f9X?5SA7!I}u&azZzi&^@Ns(rh%;n^`Pp2;n8* z0Gf?R4RyB{dYxt`9#qG&{B06KHcaJ9qj#){tD< z0%z!mG)${-L1K<-NoNbv-kDZQi%l$UZkLj-m%myPIwB8m8O1&V zBL^qxhru*&gWr^sm+{rC`xVR{kl0mPt;_H3Q@u=;dr2Ou4JW~4!_kx!cY7qqDhL>` zS?pIRCZ-SkN2=KaHpCg2HY(m^xnO6lf@$72L;J+$4N#&Aw~~~Sr(wJ`{{rtXk#wjl z94+2=6W&@=T5MO=X(>v#wT>3Us{kwYd{zHmWI0008p$Hx8agIT(z>-b>I(CvWToAD zz5F+j!HHKnMLU}J{^4_TP+xdK?|gq%WmUD`SYb0V+epOpLXBzuE9z4kda)4y5FyRW z8rS9_BVzLl@q&I&Igf}fzrj;EYZvc(41uui`<_nm zz9$gWx>WCp(2;c)f~2h__ERmk!e$UDL{Z)oMP-Qf>|Xm3Dg{|o?@7i7%vp#?mOW2Ryr1Uj?d{no#+3Z9vZ_)ct<{d4xcYRJ2;Qhu2{F z$R4M%55~%FZ0O>%D_LOYGLcBoy+r^__jIrNp3;zINMjM@iLM^Wjw3oaiAu{hOUn-W zwC)-`3HW!FfH!z3hFHg6WM4KH##!d9i1yLEJwmH+LRm=F2p>7C zD@9;;P=#EgKa)b}FCk(5cH{R2$u|2s`7~0$llN9@a*OS%QW~?@$zNf74{s6KRUA|O z6%5(^aZLrpN4Xhn6yjpzZ~;mk-mQC~i7QeeXaaKiwJ58?9OP&BPr!ni9l_iRI)&Qr zwxa}nq_QqskkX7*+3d_IP_Qmrs8Q;iP?ZTeNZ|lU;bvqtwe4>#3Lb$0Bv$#+WHhOp z{R&AtX(@mqigNUmesU_N%lo#~wxJK^!ibP$|5on=m(@++zUZNKH zr|c|LQ0N3CgGw=0+0S9Ip?B7Y2tC4tavF?9q<%jN-IM)k4wi^}G5fKXawz59DeN6& z(GRk}UQ6$5a@a`BN(hV&3hV^t6H+;b8}>cO6X^k3Y&w;^5765;5fFxn4dt6DM2%5q z-bAZK+0Gt8UUmmWu-Vlj`+5=p%TXD-870I;JGC^@f*&&(EHI7lT3rT~o5e`lsjpC? zR(Y{8ouKSxU{Clg3hYP%(^%NmqXEEtOOlLKXn!o>HcE(;QdSW3eH}`1O^s<}Qj?W= zHbWodXA_93kxt}NqDi#AVUa74&fQ+bJ|8a#yPf9p$7w-hdWz#J1~E1m3f$tXMH2AB z7V4BW$bp;~&0s%g;dG*h*nEN#5>*B)l3f|F%G0$p2IC%h8j7w9%8yJnq zgRv1nDhB=~k*3yFMQPdmOpB>Rpg?&FCY;#%i#<_Hac^wtm$adEaZUF;C_wxA%a4)!~K{ z!IYY>o+8&hzW?TG}CsK zTxbZCVVr`V8_NzLE#;cdb|ZvIKy~PsKyXaKgh9#1v)=*UEnsvD`f&Cbe<2oO$03l= zXG05Jr2ll^ok$%|$ZSPal~bZ8;12Uoex)|ea@YstU!nJfzx(J!-;GD<_pvwWciSQQ-FX1Nb@y+K@<;e2e>}FAKSF!>t!b`k+2vjjq3 zi-tM6KK2D97KzG{U?!2;Y&Ln#jR2z)-LEZSD=ELJhd{&Kd<`kTVIDuYS2m@%3lW5WEDkWqVM?}5oFsabw2Gx0rI76fetj=bFj2`vg>%b z$kQtiuV(%8Oj4!znd4>zPnS9!$Rhnz^EqQ@zfx*Ws&XTY(?1$W!Z-hQ-LDC!^2A?d?#&Vr^{>r~1)f>VBTycKT>y=SQ{ydPkVjq!KnAhmtx>wuo#*43U`{ z75N!nsOUViXbudun`oL9iRucfz@$NB884QyCKSs{n#D`HPVzRM4M+uM35{o$OBs!4 zSBs&`5Zkn$?6Q#*(6X^$x$G_7}ZKJ54d>2-ECETyqs**eAyu zY84_Rc}{ocqkqKEuK+OnD#npv0L)0)nHYinaO8gx{kfj@I;`5O+BJg=db-m^r8QS! zsSHghS(|=8jCb8!_zW;88W)H6*lNKmx(Wf2*kls#v^&VhZ+KmTan4VPYrVc&_E?jZ$V@I zEaN6HOymwgl;{fa0orpDn-AhwiQX>WU&G-)6n}ODaenki(lRA_r!-lK-X(@+A`Tn) zKn^tu&ByLu1j?g*W|!y{gCx+__p=W_<(=AW1wUwxQWjGL6WJYVs0Bc?UabsD z)BSjjjX`4@&0-iL#x|-AqmK#-^BjJkF`Z!##ngGQ2091hW78*SmLN@p8wV0XZ;us( zHRh>=v^6!2J85e9p_~m>Do=3k%IjyZM-?u0LKMj5PSDc3a? zV0*g=BIIv*U1n}&Ck=OqvwJ~zqQrERhoCgfr1MmLY+t7({+6dZ`#P=C2r~{6m0F3^ zU`?7s^LElm)HpOR+SlonFFa3@S7WdA`8hQBC?5olv5l0fFxO!!%~=96iTc;a{t4wm z+3xFfNaOoDZNzX1lSy?jpZy3$kw&?b1PThJ%B2RFY3|luFE@!PzF<*0tiE7!*n3J1 z6OmE=6TJL+l{`0A4%ZfPkaSH9oy2;O&)8;WAhKw@i-4BK3q$6g>r<3{n7#-%{i1Jc zke^|NO-<2wqR_rI7ok1U-;?H%*&HJ?nZ}hlbZVxLE&hvPxZ7(?@eq%u8MM{)4Q(%! z)rSt~Xx#ZIVg)Qn!R_H+Aj~bZv>IY{pCbhpL+m)PiY?B^!9s);h~7Q&3c)pQs^Gd2 ze^27C7k^*luk3Qcr6LZ?Oe|ot$cC#WtKKZySCL%GdTe~AY84q!y)71f9(KE7)5X@> zx*`o;9?;Nls1~R>r&4h&?B>=0@`)(WgLo+oPNaZnzl zcDH++uRMq`A$_k%iB7HmB3%4eB|2iYJ(#wzwlmyRfd&vq`kNJRaqro(njp0`_v7tYhv{;pUJlqkbp^AH#Xtu5B!4j+!6bWt@&td{H zjVooaNGSsuYcGi>qm4ErGk}FChZxhgvcUUD&EJ&VtwO2(WZaS%+dgvx2iiUZ3Q0*o zA-2|}JxjPiJW1rxukf?WC_uu2I(Pz>d_oaT&VF_e<{cl)#^Mh9@z{_jWzJk;ar=z> z7?zj0Ni(eS?D#sduv(jyw+`0rb(dGet;o*`P(+Q7MNuO9)YC1C$kW_@x2W`djRmQm z!q;&7jU}`V->KBu1T}r}B9PI-Ks2Bn%m^@|=Oh%w={d3CI3o8^BuI)Wwbn66R55%n z;BktfNwu7?)jmJ_?Qzhm1_Z(w9ZbPv^ObWJ`2rt%AJYS;{RE=DJ_h?)nMh!jL?0v5 zD8FE8pbRrXyrk2s;-$Qf{i9B>K1ooZ6LSE$Z!RH&#gZXkimhuY z0inLj|1*R-2N9}-amZg->ySsW^m7ned~<0YOcq*KLqoeFlld& z&`wR89nrdjIE;XqbCKr&yktzzCvLmbrWc`8;7QUaWzjH5L-m)U`WmInCVyteR{7az zfVAl|sQ-?s<0%Wdq>L`SkY_maPAtRcW*R^H1Q26-0n(}CDHnT-1Ex`MKZ4*7bv#9b znbh$F_6$g3;dpY%l2WSKZ>hvYpRi3k;NgPSrTLgfaq4&iY-%5b$|jTmo5-oDSM122 zw@4nxUv>rFw!$Hca#!$l({&pF+lum9sjN1zX~@JW-X3fe+l1HfzA<|ukyN-_M{GG#co3NIOFu&7e!Y= zOF`SL#vyRR9MAjpy-_0;~u%` zskLuHv`ePz9sp5zgkYaWZ8)xcZo@Bj@vGxxDNK<*#e11?4HEXop=t_w{t>&yOI5u` z2g|ECT3B&HwikMPq~EI*C$x7^q3Z3?qWYtOEb3ebe%MPi_tgY)2#`&Hr#T=lp>u#Z z-_5wB+s@mGceMT?YCZK}Ev5pBmmGkue<%3ceCrcrxXHS$7OpC67Y+4#{=8%qd_Rms7gS zvdA`|iN=jKal55h74;0-f>e53aP}Qm=2U)Y<6A|X2{BoL|1#P9zYWsopFROS_Zm<+ zi=b|j(|y9fK+kN!wal0fJO!;J*QGAcb%pVl*MpgfTg0#Q_Pby4skdX#FA6u%STEwF zO4!@GY%}HS)GB&oUhy?c%pI%Bcs(Q?PG*tn?yv6hVo7z6BfQe(o=N^>-QH8g*04TA z2c$IZMqASBZf8Er`Vca;%%R=rG~XTc?sfDP+3Lj5L1cg<5$)l?9|j&pbNaP8PGEyF zOoyDXtteb%)8^i13)}9~vQ%#`hT=WiTkNZGg78O6O9ffsTGpYQbpaIHRB+qMANR;p zl$pNANrp`b(39;crT$0fOX*y$U}6DS+2g=j2Do9cw@?_wgtj1B=yOUg?y2Y3_OiE4 zxVq43HcQs)S}WkU6@{*PZUBdGApe{9NoD#(v>rI%0Ecpqb3nQ}R>FQ7JO+D^iundz zgbzT6>Ns7lV!c?xY2H&N!8-@Z_YQ#*$hVK);i>tScAbMIquc|*WdR?F9RXDZhqFI` zRcgp1t{;y0IZLY9c=8Uz=7U;s9P9dViN1(CAxAMRz)q1xVAjpV(dx`*hzmP+{oT9r z%DV1in~syL*0iT?js@4>=)J#)4ict6_%B^>Wz4v3CvJ8^C zPHEUBh|O1kD>QFA4ZK_mIv{G4b{hl{OzGYp)5&=6T03EQ!rfP@%7+Tm2#1E8U{N(& z4AC%%z8Io8OXJZbvCgRtZw3bzY2KsSf*#KqG5iWeUj?O1TIBgks%{mwSft7=4mlmO z>{6ON7W9A#W@z2mPSH*)A5ZA`I5}w=-;+}1Vh6!QJq{KSUB}G8-Ixtk%)C35&xce`T=S;ijLsi zsDUQYTIWs0ND{;31g4!PJg4*ik&i304Cw+WCF$a>Qk%08$VNz{b(PwhpeEXbeG74- zpp1JqDD8hkZ`^{G!vlb%+gvoi93UbFf-_O2nm*Y;cJeN9@Dhvk;p7K0jK4U(L5uq) z#%ZCCHB%#jdLdu`pul9!)}}6Wl|^Qv9biI+^$s+6_FK%6onX(O!ik70@YEJ<7P%UP z@8irCT{%hVb}H-1(YV@No@nVxcTrOZMTg5yc{=L<0==#Nkf}CeGRDCQEK=6CLB&A^ zw8*`0v*~CoZtT!HI+e+M5yO=la=p%E!+Hk=X*mWU7o?b_Fki+z`j?{=Q}ixyxc620 zi>tK`C|OpmehpMX80heltUcF=RwcaGuT6M)uI0Q)n3n3Z7d5Smw!m*ka`HBt<)kR< zPC*yd*7bu7aZs1*2Kk7#f%F0UR{WqoM{!&!iRm%b+P%$GN4r!vQ+N-hF40QY;B8@H zmVA?TZ=)GE8gCkl8_&NmAy)-OeZp2Ssw~rm-pkKt^cH_<1PWjmj2*Mtx-Ak>T`5@6_ zT;VUMm4s*y>NmDi6#E$x*3<-(7lwcJ1m0Eb;I7MVT5pnYyp{s|Gw9?Tmgcun@osht z&w&|0Sr3|yf&~|8oRlWT$F8MFitDr~-L7&JCqL(Bmk=~gSxf}9drDeBl^=S0wbsSE z{rWYSZ<6_oMQd$Dbi(`fYZG2tIf(`nquZ}Xx8EJ__CnsrRA`EFH}Cel&2BeA9lYCH zsr5}Av3|dD9?b^3xtrYz67l274Vq4cG{Ul@^=fJSw8Oj=(j;ZwazV;w0fMhsjy1Rg zmQ*{9H5?DgLpHeTv4=m$J87ga+vBuExOBOXVKfsT0gcIP$$mkd4hNYFy6yBzwHTReFvRuCl<3#zgCzoID$#!E z``+H63|f)xyweY{H7EI``l|yLl<79YE3@FhaXD-m>ODYJy$6m|PW8`Z_2oTE<=w^v%=E1{=( zx>u%knW=M%JiAwY4l{VGrMX@Hk17-&4)r6KuNqI}gNJ_=n~0r=SQNUndN8iq*iP-N zVo&*KW+*}ya0I0sO2fAlfK#h!!p9ePdh@$kAdSF(#gM`V zl6-=Fjs0FN8XJN)u8^_|S1*@FYpVmX!Pi0~2ZQhT$k7>0W1~;vU6uQh0@*!$X)aB} zxXHpKM3V{)8e$L{G(UqQQ4L?yt7QS~_+lB4OfZvB!uZOIkJEpmahk?1f=LH!QCDCq zVfi<*)*m!j4dIAoWDlDGA&CR2v>-b|;}s&%Q)&~N1E5|Y2i?bJQ3>$epzq8=iv>R*X2v3ph;D(V0*RQ6H(w1Inw^iV<=q!cAv*LsBc*D|@L_ zZ;!e#U}6s=Xis0!3ac3U92NB0NrK@N`v-VIGrlDIHxX%$ZSyh=SZ$7DbAX--vDoG{ z6nvfZ$20Z@SDjXJgR@SxRV)X%SZ6$@=?smxhP2j_F20dz@HC>>|R?DXe9yZftD$3^_lO zCbpJau;>{pZa*w;cj(D9z-+~yS6B7H`v4n=^84Y^u`iN#(CBa!T_>M`C}5LlMDDSv z_fmQ4VuzlD1AMp*VI2v^$POefoJk^D8t!MmLfXh50HTG-@6Jc=)$eij^A7Kcd@LTq zjZe_f@SZ@m+FogTYcV94lqYTK5qiM>r4X5VB7FKCnog=A4XA2>NIP3zO_!Zgs-#S zD1YH+*8yjA))Gh#ezIZWo2K9}SIprGMjpscHWgffiGxdR&-*Kv;=G1(w`5tDL0v*p z_S{?yC;<03^)#*NLEs_2U|Xp4STO5e*w}DN(3(is61O|Ea2^k5`XJgh))jEMgM-&ZpRDw1>b|-wwxev|-m?MMM7H@w`?blu20hmxS z*$3D*!y!ELU`R`Cf0y@bDk{7niskbPTQF&UWf-?XR2%%v4&lyzb3JuTE}1I|yr;zG zdr0D#_(kqQn4I)S5{lw>ZxjxGCYpM-xP3tspfepGIEEiOzX`jS#7`NsAEkEUZ)SB~u_CyFkwF(g2BRDfTYX@*zBqj&^*-hk$vs!=xB(t8_A$9Z~#ZXwR`OM%VrTIh8a5;M~U_KZM1> z5y*K4RQxk0vt7hgg?x!1T?(XY5zmR^4^W%gXT)YTn<*S`GxQ9B?Ll5@RmQa5(*((4 zT)S#mw-=S-xN~yYb}eLi?2v=$t37nCp--yCxrXcLT!RRKj)@Y#u;TRSnX%&yccLQm zc*8}AqJ(y&8a(}Q<6v~`^aBn))Tt%w2EKXvA?Dxz%l8Lc`p#kA(n0@z5BKk%p6E{Q z4`e2`8{x|ZXCV>DrS}=R4+$OVJb6?(=-i$eP&|h7IT45Zb z%^N#-p%#~=#I4GkDILUR5_2pC6G1pjnRq$31TSF93D~Sb0*gE<(2p9~mH09Dj4=Iz z=lDV`?kDj!#JC&KhVZ0tG*6$FhO7g&Y@{5%2s67w!HQ&y_S1Qw#iB49OR)pQdu1%O~u z;9=woJH2yJveq$`DmWa?>-AT%i5!ItDrGB`@@O2xU4)^Z}sZ;LrjdUf!WX~QF7D_uv{%@R0Y>~FQ**wUQl0K3!`X5T0cD{eYNCiwbK zs=^@~pe?oM;LJqvIM#P5=o^27F|-l7-y&M(xL;e$r2Xg*ta7U8AG;PNp95G*6p=vq z9TZs9^%YcT_$$l@-_bTc8D4ulGwDVZF}xiuiTPZ#fz@s%uL}A4(?$HY61g~B_O%jq zt-c^!1_zf%r~uMAo8p;_X>HYP*q>?G#S7tX88|i0ZsFiE{UL6j(0#!I_Ad|$FlO_l zsGw@nf_P@~lVKk?Ipq>zrssqSnbwBpsEctxO&ZmNLx_!B;e}SJUZ^h4R_3{k zxL_L&G_i<_V7|hXNhElYT0s0?iM{nB6BqQm+evC+-+vnJGQ!q{ZYgb?l_Q;PO`dV9 zG<8P3G-<|aX*7G_*q|tQ9rg+6^?6{!KU=`QIuvc?phb85c^JA+IcSCIRoa?NzRoWJ z(Cu~7mJywkPQt6WtDXBYw*ob375wAH=D#4Qu;J4Da%qmjvZSdBOC>*fo7__9?H5CT zMm$=C%y>^tDn0vG6Vo9a-@@jn~eQ|cP0T8@2ut_>&b_8mAt z{w6o&y0F!kq0PSwkmwfpIq8-wcM%PV-w^9d~JxOIGcYf*|R`(dRc}See1FZ$P9sI zWC6cU6l*(OY$J7mUswjGZ&a<7JKTGjh^5a0Es$lba2hLI#)=F!3(Nt+*77uHhHB;d z7zWo|WV*!oNw)EmEaN9rSY|9Cbl3&{>MHG1cf0$T`-r>GZ5W5S`=9nHE{W;D@chG4 z(smHL5AlZaF$OA#6cpwMegm>pvPoe6n2l|Du46vkt(C#HQNIC^-HyR~elDg#O}=m# zdAJLUrNE&AqQZbCO^%kO@H11N_y&yt0`*a(MrlVG} z&28u+dzZh{ajQD0hh~4H8h$YACS}G>^7jy`{!G=%ldISkNDbA-p)@a#442}#6e?De z7ZMJoHvIz4$)nYI4mDj}oP`A}?v=7a!NZilh+AFBUBMMtO5*$&wh#Gr89*6bk5guy zZ=r@P){BRE*evoS5Xbq-76nhwblQnqd5`v9$2q$ODKMeq6KwH3wiLTJ;;xbc8&;-r zDqDx#N{*o4>}Nhck<((wOx1@(7FyNcgyLX0!qouHgLRo_#^b^^6)AAeb_#HVdz_y= z^8@7QWD`vc=MCm!VHjqhHM03=4T)lm0=fs|A#fyDn|*vQQZX#@u)ao;Vit^S!zyR@ z6_r?|Q83!x-{*s10^26yFHvE*RCUrP8NBodsl z6BV5Ns;aJ%LK|%bIsHugcT5eyD^7I63~k}3?Q`(!kjBC(lKl}Z09HDE&SWLxBXnep zmDtWNAqg)_)!kt+XKuGX_l$WZ>2+`9_8v zLEID}JC$3p5^67skXECdh3_A!+Y!8wTa31Nsam>Jx!dM|p9^5YTqAW{s;B1Jq z$)L*C{5YhEzO@;p)2ZRVv z)l?Xc12zy~c2nU4aR3#mU)fanP#i!LoSxHExXl`?1$hNsY$|-704b=Jc594P%YqK$ zNR7H~nLZ5nXHa|Tb@5U(bddki6>a1hP>8J`9LdI>?gJR}WHE^8#Fdrtoe4Wz2%QH) zgR74(@5O+0AFHlv8Gm3TX^;hA4sAN!AfV1H!6-o2+X^m(@BitrH|itjwJLa$L9*j) zazCVd6S~>BcBPl@PC8?(oEgq|#B;d*>iO)ox6#q01WT91bB1k?`=B1@P-ZV>E>~xg z*VyKK{JrP6AAyZX}_0J1&$+DQitGZSjudmZ9fO%^T?vJkxCp~CPq{rypsB9;RiFUf$4rq_s(;0y&l6(&S{jG?eZFb#r1?(3 zF$tR9ON$$4-6EYKG~GDNiUmkRmLNI9rItnOFs4&C)jFC+7wJ$lW=fVa zKU*{bZo)N5y@Z^s<2X89PDpYB7WA3qGKjgtkX|*5r~;*=S$=jgGC@_T2`{urlgKD| zGcu?te5qgLukx`GZG66hj4H>0mL#IEyw@zl&*uLTk&_7}0Up5a_HO$xVjFBVm?}FB z?%&8RuF+IZW+=Cx!j%nCbNS}4etF);6<5y+!TKENWM&=Vh z9rB-7hdXwrw`0R4)OYvfO%mnoGcm`O3+`1TlP(+~qd%1`r7BMd`t~grA8)6{Aq3*k zHN)C;x{p_j2HKzlR~v7c#RT@y+h(H3Am{)G5g7(SM>&X^J_tI&LDbwqknkauMeQ2| zxi}~z5tPe8S&5(-9F(01x`~5w5Znx+M{GfPl=SS3_<%ytd4qA~2%I6?rz&LR>ufa>8h~RNh zU@1?vHX+rL&5d~D{>(JeGNbWfz~A!mhEcvF4kRboN5TC(@)rmY5AV7k*K58^Kl<*`O9U;OPmY4k$(=?^ItL5W3S}mNpiROaZee2(Qxh15 zOCQ)GL_*U*=BAUmSnuO@h>gD{6BKTTu;O-z&4)6eO{5*5-^{)AJAM!SPH(5*nLF@X zcYh}1kF?|bF}{sI?9cPZhvpSFzsaAr%}4RX{Rx{-&^y1kquZW? zFkPszi6S>2hicPpKZIXGxZD0FLZnJ`+k0Z6pl#tD?Lv3s3A|eoW4@a=3957LQM`Bb zkY^s`AiW3HqW9PVC|NOoiKdf{$TwsP#IDo->{bRk%%}2mf+{}=r<%va`LT2M$}_OA zXTM4*=&b9|tqjj$kpcS>zm?%%F$Mg0Ze>`7y#M7}8LmU(p<5X|cr$NhpcAx1w=&Sd zMDyZ^_&Gf~ZArH>TuAx9c`L(5!?1ZfbSuO5#sH{1cq;=Hc1Qa#ar=&f7QpFZ1_H${ zW?;COfnJrULu`Hq1ts3l@bDV*h6W-krp5Cq+74ih(y<#Fb^!AKo*NpdQGa(s0|CGN zh6YZ9h&cJ@Q|N_W$_yt>aiL8 zKe?fSkaGaJe{e%X@zdrF4Z4k_BOR$e|AvNm!@qe$0~HT}`hRdk19d!6ZRmyug3R0u z(9jJH78s=BH#BTPG>x3|ZfKx9l;yk|8X5sixS@d#pAX*9Kzz<`XrP>fH#AU=e{e$s zrT<^Op@Ax(p8Cf(G!W5Y$NYcV4Gq+Q|Mm?HJX69A4b(RChK6$5OQ#ze?g!{wZ)l*r z|LF}4RM5BG&_M8id_x1JQg*iC7n=OSqwd6s&K*q2cqFf!%lB z&_JI(;WsqwpeC3X?tJGB4Mb#YV?IF-_N*9_d5JePaC8zUt%MsI76YM#8ycuEEcL&6 zL&M)U2p=sloAQrtXgCdaCl7aik%Pu>1cNBR4GlXUH?6(qC1J7X^KWQ~X?`JRA0bI| zGqR3_mL_GgN>m>^Aon0yZpg^|-M2VA@oy*v%k~Gitq@#0?-X2L;IHH^!SxXS9>-q< ze|bOQH#We?)i;~p$of-!;@}G7dfS?G&DvVwXmJ=;aeIdjZwbeIZb_>^?c6~EHhQm1 zanM0DuZyf=Sl-Z{NvLn#g)mrW&<$(zXleAQK}-N2C0Of1ed|A=TiTS#C$Ga&sS_Jd zPTDhqeQmwC9a}}>OOt0{8`ZKh4Pb1luFZ9P^*gePz>35XBBuUP^!!5Y|#-ckEGx>PgW zr<4x$F6qRtjoJVUCvIrNrS9+TjPHo(1-OzU*TYX8t<2VjZe!DI{NxZeLLAr#fsKVd zJ(!8HKTwbJt(QjHdRdA&;{2_bawNvqi#(Voezj%Gzo4b&){CfU2>*la7h?xVoFnK# zKRfKjJj^|r61QJQnx-K?gB_GKFl@t&VqYVdx#h!lnFW0Jc1-qlD7uq9gtWl=<)PdI zzvmpuI~j^Ys;Sl6KFNDGzAaqBA?f!hg1I+{%0 zZz14>k!@@vyxALH^GRN8_K^-0qN+7sWsD{IN-VZUvH2>*vNzyE?%t;rEiY`@f+mDR zSxD_OGvV`2YIw#sa~sp}X{Rl)SkOM=XOOmq+bE6Xz$Hh`@8R9Zdt@91AadD9z&Hu>-=zt5caWvhjS)Bmuu%lC7g?l5TUGJ48PND1c)auOi2C~ zpO1JG_r)?)RtD`VZ#5wlw8XOE3Lzp=%oNNqClYT&0r+|mCu5~a0w3i&ukE~3$Zdvl z%mwlq=UFXGjGgp_NryttI^zA;QK#*sj+SmP3k>rZa1xO5p6c?RO8buD|4PGjC-tgD zy#F-nGD1{Ksm6Pk@4kVZiKnfyTYSOcK2qliQ?HucFFw2*uGs2E&RD$9mEBg893~44 zX1<}4WtXFy%!2DY9kLATc_HTu>^-C{^r^gmSYO$BsctMaG17SHCVzPrxWo-lV_-!1 z&gEk?C`wzc+D00Rnv?Gtx0Iw#i){>dmsktXG9faW+Q+{kr$r;FL|Ah?nOB8sAg=MH z@C2l7Jd()bv}<=&jkT`6g0#jP7DMa$?ijTc*NmeO>_fSYQ4Tf9%H27Ev#l!LVB zTb!36$anPYNN``$HcDQ&lYZBZGRxO?#}O1a6eEqsTW2yCHiJWd14EI&+_S{0_C=m^ zaM?kS6}&Jg#LsL;|7S(I0M=dwXNaLsL0-sI@!qw74Gnwc*Tk4Y_%TkOj$m5eZfzrh z7JIy|mEfmBa1R{h>pVM&r(~DH$pUwGx6)|^E7hqU{36_Rc7VvS*KBs8B+EOB0maGU zgE!iD5G6K>cynoFeF+9K2^501&a;iT`+{KFk~-Q(wVGLY%k!z_ zxI6Rg76{h*4tHNT{3y2U{rK>4GuJXWaWKn65jKbxM2^-8d;4b=u8tUQY5yKI5(!j03R2J zGy72r=W4eRp^MI|*}CU3L+UfkGGin9n=@pQG_3LaW8oRou4l75k)d122FtQ55L9yb z#-uIp3$1I=QE~s1sE3YY;iezbshlq(Aud^wkJ9Pw1_v%2hU0MWpLlkb%}a!(Q;6)u z4~9?6V|aS_8EsL4vjW^ra1b00!`l1GhZ8zJglkJ&qst=K7HLH_TR#Jmk84y&W=8jw zWWlFp=o1gs?1w0e^!{G$T^yg-3im#DRcrc?6p}m;+ZXzpamg zN$kcraY~crK8!Zewat5RNJMKSM-v=$DW6P^f8Tc8(mdut7C3U+h&#b?f3prqdqK)= z#YKK}`e)v04v;_Rj%neiauF-U9-8GPV_;xi(jleSaN{;#+tY%@(j+mhxF0#MYCa+5 zK8?XDNF(tOa22cmTDaJtTJkzN!^H!Gp|1x+{jm`AUbK#`#=z>wg)5&fz}9p+ng{|V zftkVM>*H_u-XeEgU%zSuTa5*kc`efmo1y3|q>D2_AKO0@eR|z}h302*eozPJgBJ~8 zg-Lpq2iw*n${$|suVODiNQiVHv~Q5r2R*Qa}sZndLc z^dRl3Ve|43G47_^4EHgF90)m2zkB+q@-C)N?G5c6s%PZjQ>xjf?;{E$d#gFJA&}`yyxdtDZb@0}6Rc?P^_q-9 zJh-eJ{CXfQ0dVW*L=r;siE8G7P7Mk45pu<(SMDZs4;<|x7KZKFU z4>QnbKHz%bVDJ14Ah3Bwm7WinrIbF@f&Px&tnfULr1Pcn;@F4Wig0QUuI98v7?01y zt=jKrh4jvraRlJPjX|>rf`e57F!XW7g?Piq74;98=RA0k35TD?t3Z_`B#1CB*yBF3 z@N}QY>s%?aR3sU^m#$L$1OG;erPRHTK2w+Jha*`GS^nWUaJ_sfKDSFQnRFlGzrN0~ z#XTKfva|2dpEm=^W|91Je{soVK7j`YjQa@r>6Xt(+AF?LoFTqYgO5{XC3RrXjKisV zIN^E*>W9HeHtBWGnflb(O8XSg8}*ET7co9CV#U$`8VK}&-OQVQHi1ThPdVv81$?c2 zCH!w*@eSVPqw?>PP@(|-Tx>0V&3kZe0$x)IhU=awWMsQ^N@oxV}rao#sj{ysw@JzlK1nZE1=Zx()Dgb3qqZz}Y` zbRj!mqR(yB6;_g?7bbd~OL`WA>mp1z#`Iq7uMZw>8AWrlaY)Ape~J<+XUL9Aap1g7 z`E=;SY(7p?YejTH#($RQ7vTH@>{6a?Ez;pWFk*QlplSkYq+!3AD(40w?4+MU7>+#C z1=y-ggyJz##BA=TABx*-!w*`K8z>@dYJrV%`bL(*F(3w90j8)1H;$*@PW!M z_ygp1NR#mAz~AD$4!N8?1H%y=xW;!`=p&Uz|4|SI3M{bIy{FOa_@N6sg=PW z)!`6kBgRamzek=O)F*U#O`JzrR;;KTWA!q>vEX=(J{FYKYI`(L&cyC(!mg7?o{!%M zd>2kFTS}PV0-!@`*)m*Na|-Gs@74uQEo}>MB9T&9Z=rz#}$SaLU5}dIuU5 zHv(=&_&be&Y3%G4FjtPiuL6R9ps^mSqjBv;xb&vSjA2e*2bs}y8TXW433mCfSqk4k z0kIk3VY967wiJFjjZY*2q(##<4&{FHm*#x(2vk)*pPZZm8qwVruIk`G4TeJnqZ{tz zqp(DbX5XU%3fN791w?Lyc@Ar)mV7)t_GWkkiApZQn5&P{M})Z&uU4Fbs;y;k|LoS1 zv9>MX*8wconxJjqqj96z>%Zj%pTol(5s@ztO-|Qu;JF1$=lysVHaO*B>`5e=SfC$4 zLAloUL(vxRNLa$lrBUVhaC;Y76QyIy#{+aS)Z42si-GnY{tS%2GAU?V>}MZf zoji`+%PXbXjg|4B1Hs5D)MsABNK=> z4-G6A`M3UBZyIZd?M|ZGh}N{Ya4(6^Ql{BB9p*JQj1<%bC%Q_q?5WbtF=%T^*5nzf z(hbN^)?%HVkk*281`AFsLGsC|u$!8NAo;~ej`Nu~rJIzHVM#Ex2FY9IW?fA9KhJ3M z0@s<rr|13GH>GKC4}ud#(lPX!X*Ic7&Y;xQPKPYK5#(!8Dw7Xib?hR&4$dz5D$RX&A12DT_Rc7u+~d z?uo9IxtkMU)+_PR;oG8)_IMVk}-Du0uMgcI0oq`)d-{l(w>GB z;)W6o68#1+qYQ6UdMSqlhq%+@jYcm-5RV;Cl{d@W!?%v}-{guhsTqV`u#Z_{L}Y zJY3t59E*`6STN&N+|@`aK>~Q;Jw@aAQj{3^7{&)&XCvE^zSM6aW*FkWa_JiKa!1<% zSI%13j)+B?(8(N{B&VMTy*TenT+sNgwmWFSb}x}*EiQJUfr&fk8hZ0iA7+5!Iz-$T zXBv9wnq2y3vDjPzTu`WcpJxE~ktG>1##HBKAuqY>;E_GN4&U?Z zBD0-7K0JHCvv=hvgwbPlg)kJ8B^S0VO5u66zKb^W;^U-oZkEj&>mucofygp+KX@Hi zE%XLcZ>}pGfnNR=jz7vdzK1w|iOKOXw6rLFDU?ie%@-pA%T@Yi z<7WgXa6+NDoE+l@mqI&O)n^IghH92xMge9E^%u;s6MK6)j>GxGXBa+s8^h5YLXmE; zl-cBa+JWz z0F83!Oo_Q_5}V0#jGNj$b|+mg2OjNj1dnR?-n-ougM4a2GCcN-804r4$@18U5;m-o*=Fb@{4^Q0I zWvnV@<(=|a}apSLi^pG#Q}e=cK3`7^){@#k{3 zmp@mqcK(!D8-K20TlsS>+kz*du)Pu7#(qgq^Pa*7c(8?_%{)lU1a>zMlBJN{$%7A5 z@HQT#9L|G#C@ApY zUJCxLA%^k+diw-##`fnac$^2{q~Kv5JW9d;i@kRNkFvZIzGpI%WJm(fAOWJHL=!wk zD-x|>peDcsL<2!g0@8r{R#Tdu6z1WuC1m0xkjdjHyQ^L8+E%M}b!)eDYXMI%ldwrZ z8p2@}gtY-#ea4|0geCz~=KcNeXC?==-My~&d%th5>)Tv;=DDByeE8p||FKm$kBRej zLe{I+u5BhLGjbFnzfl=JK2oTr@kiSu@xm@%^E-@=81TnTdX$f|&4hg(G(nlgOO8gK38!9Yx)M=EhuDsK+J6Plbn|nLB_Mp?_BH;`h zXHiT~FUn*6J;t^5@;1j_U@eM%%zpw5Es3QOZH|BccXqoLm?`?ucwN$$f0VdCS}2BV zGeyI3u2sH}mjreUy-!sVxpP6lo4-oO4-*Gja!lDrgkFzZO7?QQ$QDV`*YQK2?qk2< z4FzFBc_O7wO43DsL;z+!7Fg}+mG;aEX54NyXj;&Ty4AtfG;lOC&T?t^W?M?4H8NpP zXoKh7Z7HfXtuAiPJ$Mw+9~I?jD6=Y?WEIIx;R=z|n&!#You#GGl$f4P&4{R)E5cny zU%7cdM#%&abYBFY2^9iA*|16p?9klL zgO8v~1$Kl~wc*aX&p3M4uA!eV9q8xEq5XW>wef!5JJ`=&VBhNJZA1Fm=%t^39&}zR z@}{fbl_sJj-$Km`{7gu|kC%?h!Z1D3WMg-!lWnMbflD;kcYw6o; z)wgl8ym4ZbdF+CkkzdxUC>R%YX~Z;RbSB!;g0t*1WK~8BoNc~0>dvmZSfnElvE-X?F8_bJ||cz5&e=6#m; zS>AoT`*`>B?hiVHG~MRtcJ#%&!-z?vOL@M|^B@l-yNqSaTQ*CJhq|rS$9<^dupXg1 z5^;mxoBD(6r}f7NA$M>PM*iu{3;mRP=y^(s^&X+8>v57-Voc6iW0EIha+tahLn3cB zacAJTnWw4Pk+Z*Xj>G@4>b*}?@BPb=tfg-8ID=#LagzU&B-PJDVs0K1j~39v_?Ug{ z@P8sBt36!Kx-=vOc{fUhc%I~WhUZ0|Ej-(K-r}LJC(zducxUm>;+@Gmlee3`4-)WA{A$0CU+o(FYHJ@1s*6T&r;oDc>Cb`WSb!bokA(YpeDELew2_qZ zYEzl}%=>xzC;sD__c|lYkf5i1TwpvaE9>eVm~Ctqeq&7luy~H>a#raV1GMqFM>)6c zea%g#d7XKC78=b~iV;oY8po>?*r6Gk=Un~FlE`_sMWJ1a#t&%pW8jrlXvZ=)dXg^5 z4`GSaEdHAW!@x%HMn$-zF^_Ie6on~oilU?nuuT>wTf_{wLNN%q6M>GA=S?0tM&CfU1jVck{2 zG0A>PeRZl|Q~e%Ozb~raE$a6Wzh?XQ`I-2rqt+u0~Ht9cay7ZQDh{ns=5@G0xk?I}qHfexH}$Cra z&q?))7uLM_4U1H-d@8BlzacXv)tiok?dzuBT2j5zTS}^TXjfSssk$)UwbFT!&Ji3X zw>4L1-<#L`rIy#F>RQ9Eh^8#BpOQq+sxK_BtFNH?`n=`!>gyH*8w1AIrS^dasRZ2+ zxYx=+jIT=;RzPGnzTXZ?oHVKwH@+^Pkz7JVZdFF4@Zs+B+#}oR$tX~j5no{RsPzfoAq&G zm)%L;zJV-$Bw6(34~;h^5l`7?j~69s?WzhC*lG3Y)QyiuGKTWWX`hcL)yHW*{C!w$ zHWI0Uxy9k;ZeKE&U6LWX!JlOZm~d*1kMx0KlG3@C@O zx*vH`t$rt~6dH5YAYk{e_$}hNP9Igpr$||85{-+oC6I{ zQy&q2o!!{53uk_)vEg5N2OD1D7j9vB#UAtqRcI+z8N}PnkclQ@!t2JgHEh94Mm7qS zL50IKuZEx~@)7qFOjflyt>W0qzG~TTzY$?Y#@{<0JMPMUdjdR+_Q-EYB+I3EX**q! z7bKIo3HOC>(=EjL8~l_J_o&=i>)+wmFGk#Jl|M$@PlIr&{+7(SDly}Jb@lggYYoc@ zZ&Q6r>BGc?1xn(E++{GukozUyRm)2KJ-{1c!uSps6HYWd(jr43hTJ6+D|?pCFNg`t z{W@;QJzhj)3tr&bzNr>9EV&D0;Wb1~SbRPwCw#=9ernG^F9pHu_LiLRSw6&)yQF!J zT&&ey1^`R$Yw@&(L0NKN&u4s;u_n!jk`tDc%uvZFs8akVa>5c{$qBzA3BO>;T^cq` zb$7y;dm>)9;)E1dAXE!4@rg0_%K=vwEt-!pcj?JU20m76WV8lEg@4d*8FT+zf|W7% z0BOXSyG$-QD~mCAoJe&9))J?BGW<*ns{+AxJb}?Yys-SvFEhp#DU)mxASxsL<@Vg+ zA+qebbHq%=qC1BRY>$gg_daFQyT;H#5RXu*|DfBOx(74x8>)Be5<( zEjA>-Ca<_vcU8CGZ$ATum0@@3<)Mb%rJa`8@Mv^;S%%&53N*;L4H|Zr4^^rX8@L*`1|{#jj$&&mqLviy^>A=jw%w=CFRGrrxG^PqgSC7;!tyn^bQm36DzyC20-*_~ za%h92>`Y$A{&QAl{x@Y_fLi(`qaq!YP4+mo`paaPZh&6eAOm5I0A8%Q_Zn|@;)Pln ze)G;*M%^#7wvPCQQE|8VZRsHug|!EB>BL21m|q04WKUsvl8muRK*YGj@IR$A=063rA1)kaXVW6yI0C90va4Jc1W_sM8^PYWGdou{^UROV{+Cj@%4@2v_v zF}%kjdj)3O8F6X8*n|IKXOx@Yq)fWOTDrIqNMCqA-xt~R#YHNj+fb_siwOp??*4{s z2H1jsUTSI`UDats+eSPob@0^Mu=0-*XD^-tLH={8da3Wt5T7>IrQjPllrahPL@TQn zcRoaPkl$vQyI1@uZPO8?veKZhSQwWE(nWs3r}@NS+(X`hxDh{Ln}7GR&HZ=(WOKLi zO!$S({av2F=4s>klrVLP%n*e=TyEFOMG0)b%M3BdOP0W)DJProe_0gypV<)^ME_7x zWJ*v(Aei?5yutbf{sDvaV2=|9>$llTm2M||Bv+3s>2ntAzeaghV8hYcJ>1ZTTCAsF z$Pj~fB5sv%17j|A<2%Z&jGTv=Ya>Wc2KijGh?GsOc|d1P`5XuUDA&56Nipkc{pc%&175 zhvCLsf=rEL!f)>rO@}?RoIdYzp}Tm_RwsjW?=Cez+9xBzam1Sn&mz0$G9(`K?hR8g zkGl3ELu;CS%h^V|k&2<2!a!M=ie_*>CB+SFFQiC7a^3f+;Q%p6=zyXPJPR2z2x+55p<*W4P%ou}A4@eB z-?NZvglzP{U&+XJ`?tSHmta^>>BaP>z?Vd+DE3vlv!#Xjl$uGuliHG5AuL1wTI{i0 zU9jA{ev(jsTu^=lrekZo<<%o%Yq0F4IEZSxp+lq-ZRJ;d8|*gkHAbyBdQ&1rK6|}@ zefOLSN%den6-h>!lWOVHeQ}1U;S`p(<&m3#NkC8JFd*%SQbDs%mZV)4UO+W^?G@1T zHjMOR1aiDFa)Pi2r(5sm$hb^6b;~Q@RLt+; znqLmHTaC`D6}XY%2Wsa9G{)YT3w zPpKR(lYb7iKbn>&(GV;wOKO$U)t@LgHeC)H*I{Y&%|KxHBAYHt65?3%W zU9e3OB&^H>Q)d3Rtto@Ri%)o&AA{y6%4JUmO1g-qXTd-FL@I1@^@LaiMolprl{nvj)Y3%7t6hECVbc%L&K~h^~l{ z70xmavc;&@JZge^{w%acE5^A=1YK;50&m+F*A5V8z4P7ga$bOmW+6akDe)HuXrTiN zxpA*B`!G%QWWm$rLG%;?a{|Fe<C@`Zz^}WxoDAQxazw zospeHhCs@am8$GB>X(>T|6pKVR&fh@jp<$+5q%Qc*7W&CS+^0MRc*tBL(gpY#m;-h z0-Zii+nS2VQ)M^2qZd2%?>4dA9**A8Mf`(yZhE5+eC+P0%r1xNIYKmmi#uIv|KW=;{YXv(Dr{3nv; z`D*%X%a@AXsSTr%z(6hiFpnRbNn1L^*f2)nnBcZZR_L(F;5?YS6HW_w_F!Hz2D-z ze7UyO5h$}fw1&|{ZE{o@pVB{(E*T9^pP&WwWa32c4u4>ELpM2T+ghuHRk**Z;Gqmb zpFT8dO-hyHA$Rmf+!w99mfy@ZIrxl=URGsL?zUDb*6r1_t@SRkS|^DmV5?&m&HyZy zTSHdO(1k2Tx}*QA$+3U|I2(STUll#V(?1Jc((HjmuPP`~B^RlZi`>zv_*}Gd3cs0a zuCHIAc`#IF#7>hpf6<_b5Rp)?yHiG zYlYh=z2=R_d2jQt&%GWyyanFe>sQ}^6$B&WHvyE;h#7?Su!`&BEjtLaf8#RmP^ob&#{n-V z)s72D#SJ0khwe96C%_Y~b4nesDY`JjxI06DGg&D2ww6T;U%wCTz-W5hK_(f2J6(ZU z&cL@b$`+O`UQ)SaDHac6ogxL*E-UV3Lh(RY?@O##=O3N6%%$H{oo4>CaG)?r<$J7U z8$}th7MTa80!FM8Lde%q4V70yt-q3e_J=YYZR}z;b}>Y&%s?O>d2Sk2d0Ug?PytD?%@a{ht+TsPv}P=}H@f%vv-` z+YtGPD}}I3X7_1+A))llaoY8z{#q;VRZJuM)=8_=6R&yjn?-kZ}Kl`q~tuX3G^wFq*6>Xr5Mt|&Hk!XG4y_-L!xChzbcpBO%#65qF4QGa1CH_vkQmkv%DF2@PQLX6bR zX8U3nJW01_s&+8jSnQEpEZ!&e3(@s zarUH`MHOWC^>}voAj5kOyA=uWR-@>jj+XA*;;ocpzkaztV)MH1@Vf5M$COJ$%cY^^ zgAG;b0ynceFQcKYs|Fgn31_^a7A=n&3^{aQuOU8ujxZ1?5EtL@-E8HG{p_+b+2Avp zN;0*r-SFhs-!=JSeIomPnOm0KLCN?Bb3AS?b9;MDO|#G1G!q99%+`}L zf_P5=nCgHb;8LZ15{izl(!Lj}((dE=E1m~KwnYn#BmVa_Ho~>WyZ#fk;b^KCVtTEe zr^qco+43V^MTPPswDh9;GIcOX4<%lEtwd?%oyr=yU-yk*V<-_z6EdyiDxFWJ5L zLb%$tMElv$95|Mj^m*A?PfqH-J*LeFrEo>dnQ>oA5@xt(JSeZRGfGn&Ht#4rd8Oj% zu<4_X8KU0|Yfq^E#}Q45d(@mwU4Kh;DhPP}SB!zzMxKj0CUETjK9d&u*q8#SUGXd5F~}{u$Hbmv-zAitcz(8{k?9q+i4O0HB_bD|uq; zR|3EbgQ7~I{nAixXHL7ZYm%)SYXa>n(~R(v#|>M+ncH%MD41xlMI#t#@vM>6*nDD_ zAmRZBGg zjzyo0mxL!9BK4~!R9y@Pc{9vkDz_L5O0O{Q`?aEy-aC zOGT4k6|7TF5&F+CH?(L`g=uh)$Z2Ll5gVaXXay@>6-pqkWQ40Yi*kjkPAaXyRGGk@ z>7qzts8S0mGrZ{o{ST+8=P1nHmW@y)mq^a^VuF^7SDQzP0S}-yV*8`;lT1kWWTTvE=*3L#X=6{aAP>}I zDnr%gY0segJ)TTo1rpDVl@|h)d%Yt9m7T4gm>c?xr;{GHHCD#d#q=kTir9{|1_y*t zqa<^?%?C8L>!X=%g{dI>rg^%&PG3pPXM|rPT?kgcycRFS(Cd)UGw(tc>~O&$@20AYWfUMR(Z91 zS#{FAfwIGSt=_NlT+5TqGsbTg>Uv#FqAJrVXGPNctW5vt=s?+7k@P+*jlv*vh?%_qT-Q_hf7Z3NyO<1 zXM0oS!xc@Fsi*=#vUHo*|4~lW8G%$_ThB571vEz>i-Vte3|E^ii!|nb!F|}`8dPG4 z<$1X0o8^}3l%S^_;5r-AN$)nV;*bWq0(_U`w~CcpjlB`hX+|#bCV5MbDvs)^_l-k zVxzm<{5O`sB_btj*}dw~UoqdutIZ~z75zsrfqDusTo@f8_&@&=Qeu&q&0}i9JJmC{)OeECk)QI0S{C! ziU{hh=7?>y4RMP@IeP+Sr(_j67h@TA5m-0XPfYJ3Vx2*lEh1KMMZ?}PB*07Y{QIz4 z{5S9)2cBe3k2gGB zla$LQGLY%xr~P{U3OV)8}1^ zKxV^th$F)6_wz=hM8RooqZ=mz>8nTiFC=UANqj}*BDPSq`=#GXC%My`wfg@c7ppTK z$1}0yQw8Z)hqB>wt2r~II+dQ&>bVHfO{Z9VEG`)bb{EN`?%XG@@3h)tkB9)2z`A%} z;8!0{XU`T5GUnP9@ns>hjq0FY?*hT|7A?A)7#9tz!6g(VJrfbDU(&jbyjAN~f0dSL zo33OsS?xLUO1wSZi>5Ij_!hv+9Sqzqgg=z#KiCk?82#Qbkpq7xl=qB za%(5!FmB~ISCToPXe%6XhmNNjnemuYAk?I_H{LZRmq=49|D<0btNw&9ojG^8oY}-e zqQ_cRTGg^rBd3hD1G6~3ynGN}UaB3kxNzrin~i>8<7~ zrx~fpQ=buQys<~rEW{hC6bl5LX>3==&%?|of2M88;E4;m3Rn%)Gr3XIl-b)tePZ5) zd3$=B0d(vtYFnLYwdfF4G)FxwcC~{&qWVxh%}^VRF}2j)^Q7ED@9)MJwZ| zzLLeU7^gPuMSo4KFnizMAs=W;T%Bot_`pE4tB3~f`jTapinC=X{#H1Um@(G%7BZgL zd)DfO2N>*AoJLeMhvYRbl{X0KQ3~fMcQ$uH$LfpB4TA-}Spo8_WC%S;TgaK~cKS$8 zP~Fifd7sf!69wgu7+5V7?Gm&OfCl9AANZsuvtlLeX&~gBoE#72bq}NaEC)rcOyS9C zCvkZ9vhrO}^oqrtgWxeOEd@@nZcHNzSDfW6W}T3ple51?+R0KhN>_eQwY?l98#?X! z%|nDRAgeI{ z@G+B#=3P%Kh49gPcp zwlcHAj6g?AEN@!9uoyx}ke7vf;ru+-)Kr#Ahw}U~S#uWy3bVN^La#*85;27c>QYK( zEbLH4981@9*R4*JfKQ^UId;36X5We)6m3T*C)fSwtqpI<3>gUT9qd7Dc-Qe_r_15R z7FX)q?Q0~9xCYp!**E3p)@9fmc}H*llCXy}lA}`bW9?GrOg`6gtASrp(z=?AZAHJicWbuDXIzzbvMJSj zby~=qgA@!RFt>fUGUc}S*CZu};gLPE33zi&~3bH<#PtBC79nL?Bd|QPpOtujZtxO;@5eEmm#ZgSAOa5W)Vx4wSM$#K#Pb zyqG4&^q=e-`Ut+Ay~okPx2X4cTn!*9{T!A;z~hdCO9^6(O?C-%KfoT6Z2sM4Hrvq? zl`Y%Xe*_yz@*%j@R-Cc9pA)5hZOMoEJ;!HT@-bYC&WfuG*I``Gom5dwet)dep29U+ zMG>C2bt>6eT=(N=si356|Ebx7UCW)9B@!)fY1m9hwOi*T0ntEBDByXc?nJDXu`Wuf z`zUt1^lZ0L#Kq(+{PZZO50rH=|Le}%Ia=wHj59{dw68aC?=R%gz5Z?gW4#Gt5N+rh5hPWg^Hr+xj2Zar;g z!Q1Qq7?I<+;o19C^~5DP`yEXEy<|Me%5<*3y{j;vl(A1(l& zcG!5UI<|aea)GCPRSL$<10{z7M47ktE8xnnR5k6p~!KCkQ;XtzLFr{vZA!c&}Y9CDz0A>i4CIcz)9rYL( zxWCWalNh*>yBMcLTV(*~)?sZ8lpHf!4t_{~S9bNjgCd|Md2E||#rvLyZsRTKbh<02 zjh+wOLr<0*6M*ajUJHp=(7OH|bnVjl5LvpCr1SHSE-C0(@3K06NUwhs5j!XaBezo{ z?UA2JZ>rh>A^9ODp%Jbt>BiSL04(G`tgbXVP|{wVeegpWAE_^`QLsTJRSmg69P9!* zhQWru_rFv<GX;X%tX{;gn6C6+Z~(zIsuM9f+cu;h_kCGE8Z{w-&}11}w6uBN zIQW4adnQTWrFTEuj(57=?e8np)1ZF@)*!hY1rw94Ck1YW^~8v8AN%JH+06bwTX7Fl z+y7Z{|I&(kNQRjeS9jo}@Oi;z|t@E3Wtr zS#hPp|6NvGRhKWWxLs87zp~;k=f)DhK480*<$B05SNN!W-2VceC-XxPP72}bd|VE# zfy&L$Te||4uLLTe2~<8GsC+t5`SLVRE(n+)RJAw)W^b{&qPm1`QsxGIP_m^d&36uS zJHB%xytvX3XE--fcg&1_h`El&l3)1y(zQ)L;H)N^5;&a)i}p=-tx2hNES?wrcf*s5 zN*-Um?18r1;IOGqUL0-Hc7*+Ao_8YjmQhOBLqxtowS%* zM`;L0glAN~t6%(lj!telFZ<5rdGmbdZtz~^J2%<;Ti>}^+M~CTr|+C+LxwMMzwew~ z+jK1+)hQ7eAY=2Y(<5HqDo<@=DbCO3tJRC%WpdN%xt^nCaZBVQa2Zxr@LqqN;d#Z- zDS2A$cz@r;t48=DlM5TQIZ=Bt{Xz`R{`$+tnE=s-cY;=bhsruntCu=ZZLJ;>0mfPQ zu?h%yo+o<{EaS-t9%j$WO=)u_Q*Up;^D;qFgGuq?$4c?8c=7Y&g@2GJoUYO8GZN)E zlw;P0vGk1g=*OJ2BBO6&WY5RCF~ll#fRa2wFEaV#iZ8@ad?-s;9Tl7rDuYDuqo3AQJs2 zYmlF#dC^yZd=Z+BoMR{w>+wbOCB?t&OktsQB>EoIaki(b@J@{1h{@s7GAzAN5+XXeT9 zmOL34ZInDCYM0&-lwV)g>WiB^z0;G|CtnCPdU}nLmlsrL716|(qYgfVv-x=yz}SQXVC zn@3)C7q&#{=0|SC{hG-N;s5A9LClThdtKUVbGwq!;Wu0+HU)0UvqdD_L^SE`fIHdJ0PPJda>wrf`8(68?W{=#Lv^$Ld;>LiBdcp+MOdST8peG#pqvMK0Ix zgg=^Sv^zrK$i(z!)QpyG;h66@0ESy|4~NqC!?A{6*)dYp?vbBwsW3-3?sb($Wj#uZ z4=WbYCmr2Aop1pNj#rWydIm?DdXn zTfrW%k9w|RUKh!^i?NC-H9ON zCx}w*_059_TB3DZSFUC#+|ge=kUD9llLFk zaOC+%o&XOzQ{C_J{Ducylpxjy_|@HU7U*Q^0>#H-#6wc4?*Z>}f1k&DufMNKzgY3O zXMqWf$36jN1IaT?H1_?K_i}$|M^G3otkN1q5U7Q^n`X<)}4X`!zPVlT2cxjO)B{FN^`F;MX)WC&j4k4EfR5<%bGFm^f>P z>&WZCpi8x_qBOWHY0=$gNK&E_kAl6f))ZUhDLi}yH|WmRlpBhT8dT*e$x5K)LVIqP zb8Ta>Jy@Jn{XnVNGg{EJ%;zyMv_2lbu-kXM%NKsI(bZb$uwf8s0Xbpd;C%s#^cJtm z&|i}U=YH1kEPIcVsWH!a=~4gtU3JH8w(eSg%hmazbnpk=`qdJ-SX4e4Go1zmGALx} z?IJV)<}m7}A1~04(bU%Bq?;rXGNL7Cg)h9-Zi^ypaVT*@YO*0xHPfjwfN-;Bg#R|1 zwy{~@E*5~1&v!skrw<#q-D8LIwp#OXJk3&;+l4`h;cFY&Xs;?Lx}hfNZ>Z`bOtR!AUpsTCLUz zgW8DJVtXE|baW(+8*ua<8FRSzDE4`c3k8SQ7rkcE^Tgbh#fd5!-Ya; z0CK$uavffOX)OYl_pi(>t-hZq_AiTaxkO1Llj=00ym!%HE`drjKjaHfHu@Sz0VKn5 z{viAlta`EpFr5cwXv}gBTZ1#t4e3zCOR~+MUB^6AvLh)%1YI-2JOz%0*)@S9Ig46z z!-3i)(MK_2nkR#q)*+#4rj25Siu_)nxn_dR3pF|mO)>|xpN2~FL;h(u(6^43Qu720 z4>`de0(+8i#y|B2J*CxgLvWS7;lPHmq7BN@3?4tW1C%NGp{bq;lDyf`%^am%=o&3~ ztyo%E;nI@a4C=TW)u3{OSsk38G_5An>u62!7-d<;%naYu$=(}))_Lnvdf%0Ss=j|| z!9kEx%}@1yW@E0V4gGZ3%AGyQbD@CQmw7XN(sZ4kK?_W$$5pOct?%2cA92tbuDWJOyj;(3$JS}2ifd4UT5Fr;A&^Ze^HhM+a- zwWNR2%x~jOs_02hv<0WV<2Yq@_-hVHj|z4hyLLat0U4kXC+HX{An6M&vB&r}MpyL#pLch80 z8X_oTIu@X0nk`)4EM6`LEr>h?DC8d%vsY6qv%Hs(bHP3xg;JS-!)*#2!c}d~$&*=C zG6f8*6}8X_$s@Sq?wse$NCgKN=X+jGg=Z8#eeFHBPRm5v}@6jQQNJ0 zlTCq9+soAn20d*m{m~Nr4&+i1+H#w(SpL1YD*r{+;EfzMc))}V8|MzD2HnEAEfhd+ zLvR5y+mP{M=4M&rC4==%xrXe@LP=Bq^8DW|HTUEX8LY{}Zsfs|lcL8d(SXi4*trH8 zFvd)`Dmq_PH1dxOTf7Zp%y4i(5dE}_%eAq!$tj?wyD5#L z#~PdJr9micxvkxsI#WFLKQ<-JtPgo_j*giAfH!@*NBonh;OTPX(|NwzCVS7vQ@NUw zZnNw5c}*!ZiyI|I5Asd@w&g5Mo<7kU6-SZ`rD|GdE{ofL;X_Op9pXvyA11xMZNv9rm~ESIG}kfm#lP`wgWNagUjfxz6YWi z#Y*b<1jmks&=UQ$3fxK{vg2!Y2iq5{CQYM;%_|hyjcRJg5&{i8vuvuT|MSg*|&=`)OWu1|r@GI0@-- zPH;C^tX>FLl(?R4gg`HrB>i1Z%r2=#f}H>^RbessAN{-ox^DmftDpDq`M;!}S3+P3vm44n_ zob=h3>E~TbT^I|Aytxtg%RGm85;}FiR6no87XGjQTtBbMcSyYdTt9C-?`tSxGS5_= zLY}!ir96vyzRknf{6C<9;Y#mB=JMT7wFi&dv~fpY6)v@$eVn5YcIBPRKY*Tb4av*{ zRhoA{&s$a6J9~24^(@}IbK12x!;Us+0s z5ovZayogdP$AD=F1hz?0-m%(N4Hl=_WaG`AV|nUPs?e+pU`h{O>#Sw^J0bZ*J3|*ocSP^DobO?7Qsuj zDg`=%mspLgrW<@5(riux$xu#Mf{z$seoazb8QsgpaZzxY-Dn}kB~9b&51@u;$ALNM zu$_Ewqr32qhTXLhN^9jXynF3MzT0nEKQiiQwN0Mun>x+gd%@=W+D&?LY^F1M(IWHZ z206SgDmM@I${ECs2xMG@dEr8iRf@N7ZOZF(uFoiS!sKPE`%unB;J7T*n1wtNnXJ>+ z32Hnx2f-$IUBNorbg*-i6n;2*1r&*kIQ@!&=qpN{SGcPJYhBUB!8$vU@{fX3^_9`T~$2fY7J#}qz@RDQg>7etXfMXpN6f-#f z3VC*wGrg~hQ{W(e$bV|stua%M+7NG#as2=j>gg;sHFa7NLK12kM*B}?1Ys5If8m9y z7tELB=&c_M%;LQ2IT3JZJ3U>2SIu~`D5#+o9*t7VErFX09*TB}BwLE>OyE!nJBkrVbuQM(MN4q^$kZD96xGvpH# z6k^RC*bP)ZlJho_jWQnEHr-v6)7|DdBwuZw!+ZCBc6*@A2YIVPv^%G?&Puu=>f|?@ zOCQuD{Wekl(MBoLYFt`_&^=H@dZz=W+KTumw7Mq*VLsBC-8d`B01-6HIoTFD=29d& zt>F<;&;cUL;;RazbAlJ+eJog`Uc#$TPhH^#@fV$g@RrXeGKh#h>FE#yCa=hnfRRL> z#OD<&viS_oa#oKkHBVonZV+18!qZj+aF3BWIJIqWBM=+O zV*NHpHFX@J^wu`aiiZ?wut#FTKksgQ_12 z*SvvohkF7wk1Lw$DK66kG}V29k|zgfs=FZl^3ByZR?;doRW+`L=Od_;P~2*5wwpZ9 zPm=c)`t#7a9c_V{XXb0$SR%Hd$i>j1o7F>MKmasQ3Ag7fntw5cy(%fHrj8K^WK8EE@13E0)>PL|qB$B`88Jj+CPJ+5h zv;pesR*SlNc3Gf77$*YymVo{YB+ivVy({P}4n8DWP*p(4(5X*I+cp)xY3)~i#>{?* zt=J+gfY$nq5$4j|#-(|8k&wz812g*pB_XpKDm^Jt(d>^TS=r4Gl!Ty${tFE>^eu)e zTS%|-2dV+t@3Ds{*r)Apd&NOQ3>&v>m z7;welD|$zu#D?~NH#EW%B5$F@e!M@LemYjNMaB%yNvsj>6U|Pc2C3~*uU2KWR;4#X z?(C+Q^CGb^Ej-cGJ$)LhBZpIqbQ;5q)ZKuxl`EZL0X_NU3>VaKvoeDz|<1%(szx% z{BwY^wJi%k*SxV)F%!VB-Iud3;HejiRiCOYyypYrpC=iU91VgVWsweZchj0YuQ#fpz_0f`DneQ3GGcX6$2%ynoHh z^T`2deiQn?;dv45t~2Kf+28Xbc=o>&0M_FG49sbdKFvA?EiF*_B!`LX1&9xR0f-$( z6_nDS>8F89U4buL8BZEzPgdKOlFx>vRbX)9OMUyAi{umpf&aXK6^pNw;SqR3r>t_v z!Aolpeq{l%II$lP3+wAuK63z^^U?L_7aKA~o|5?ypB*nUZbnUGkEa_xg*gUN>#fFH z%nz9pQMeNhr|;kYajfJ;8U3Nf^~I-m3nhW&zjT#v8-moSaL&)lLD|(MVWS-kL z++b9`VeHxeF{=&Ahq^dWazcuxcP=0)8BpKjq-9gIrl>AWDuh!kxWP&B273~qrajtD zUaZ^3o?y)`s_=p!W#IycRUDLIEWMM79lV+AeEMlTj6IH+n1VTilpkcSs$$H?m7aN{-nI7kf*tg1F?9lgOaI0*)v5)-BiGi|E zpsXvHc{{kx$i$%YtJFF@YycJ>Gi+wjt(8&K(7^OImwM9*CSy9Q3p;V-YqH|gyqc$* ziel^*({EYtiH`71o2I*3?UU~)*thBokF%&MmU00E{v+45`y!6Uxejf|?#8d%x#$!M zy+&!wy_l1RoP348m@FxKc=iGg|LMr5PL3pjwaq^&Qdx`4mpEGs#gP+Ien=D;Byac8 z(OgM(+E{f&U^pqgttagCCXci^l@z_WIMRq{FfPcCJHWn+AUnQ9ZZ-D54o=>dbI?1n z;BD`?f_J>>1qbypBW?F_QOOu-E96DOY*@l5$+0|V&$6X;=WyD+S?Zlcf<5}^k#dZL zW27CLz{o=7R>Z`Ne>hTu!a7fX{%(wHDIRme$pMAU=fl>Z2q# zSRYibNu2CLuSq8~G+X63xvXaxFbBAL-_ALWKt?xm^7TKbdFAHq^eFL>DeXJ*-9DPZ zQK>J#$7;ng)rtW7NGnjHXY9#&%X=MNB^95*+p73m`nb9dRq;{0 zDT*p~sLG#Em3Ld3#c2Q;sRr;)Vh|Fw=hJCR;2jr8k6XC30R1Z4~)ldsGdB&0!6L4Gcg|jSJcBaC#f63hIALoKiCv5@0F! zTeFh7ELlQ3GPo4{7u)fY^vjnuWv6P&J73b2cU0{JbUxP<)sX*MJHqK5*z2R)nE~xCbX>^WEpwB1c6?IeOe#0_?+`GEL;l;|97aNh z$eN&U%LHX=$OHwPWP$=+#{Rk!LSXY|5SiF|N_rcbDX5I(jJ^qL0e~XnT49Rvz5_RL zMY1qg>z6VIUM%#^^Ur8Mo`fQ)BGI6y{d1Ws`V|Q9;5epo=?Qt$>!u=G$_SaZ zTXBZ8r>)pMnG2dZB1yCXt-}E2Y)gw&`iesQEv>q($?iMAwIR;l0*l4z{8)8XMX)%t z)cnmi)r~K(;rhUa$yn>yaPxAaz;H?+g4#%E2j^eEEJC@Eyibd*taQ}CUY$a!t87dB zRZOQUmu*?g-q@tM6dRjV&#%Jo`A_yO#K2T}McXXV1YHDpM@VJZ5^A?!Ts7BaKDMb9v0l_qUE-4}>Oy7<|k`%(O z5cvt8+SVUlqAIyjRJdqcAC=JXM~+he3A=ea<0;a6DtU7BAtGNk7|ZNpV21?XO}THv zB<3uPdYU$tlF#%cG%hDq`KQ__E;^+?q&*Ri<`M0OM9WP@^Hhgv;0&1#zNFs2TF z9p)|^P3?&u+-*U~Ko>Rq2m3y;zCvxRuI@1Jroe=|D$&iv`G`jFT11LOuowxo+_7)a zU*G3BHpcG0pT~iFGw(W{Nw~klGm7U;z9;am;Q0`DV*D8Rc#nGL`!{^u2I08a#qDFH zG2dMi8H@qN*WMhaS^1;&#De7f6;#T2t`N~l$Vk3Bau9n$!e z-O=wg6=QF?aiiR^%&TaFZ-+Q{HMKWBdL0gZHjNsEKRgL4Y2%}Lc*kegvX-We5-WG2 zchq#pnl#^WN9cG`T6=VSyd0%rbytz1Wb$_7GSqvny}E&FmkiMPutpA<)6L~P481e+SYa>b$L9WrI9Q$qF!TKH%c}( z-)B{NYO8`b0B%^!kGaYwde(YVyj3-W%TQ^S3G!D)b1b0e+aVKxtjXq_ z8+7`x4yRUzjj}R;@e_%3<`Y>G7|gH&AC(2eum@D6CRM}fXY@;Yi*nU5z}2`hn+Va& z){R&2J`+u!{;AadO8KB7*HZ&NaftC(IG zxA3?_>eDkP*X|v;JU&(`k0u2P(|74PO=|p`Hp*~^BFR1bL#ESrJT=#af}BT1SUWm# z`oHR$1ppy4xu-MN8BJ;0DD%8=qeL(&a?w%~Nj92&$L*{UNxO6HY3)XH((bUCnrp}4 zV_LiKggt3@+MaBc zz_EliPjhs^^lbg6c(9dCSlN6e%(p{U6Y3;MG!H_~%Nrlf#l5U$x?8_Ko=C+unpIlO z6SiWJnRloGH^<>tr0yurs&TsgcB`hO$l#C0}Zk zs@m$*=-Aro)D}Vg+EkV}Y^`lRE{{8m7zWAlU2}9@x53de=^>vUqMX6=l3oE1zM!V<2c@{%Cj_ z2@vlyRC-7`81pnbDoinqH^jFs^;ueGq_)k;qC?_3bgcTn&(^IL=g*gDH?R4!676Q) z=Su7_fBNV0NH$N>i$f}6)jHXnF+30DZ7Ll2V3*My#qo@Xb}kx{%}0mlI<#|>&4-2u zT17g|Jq-Skn#4QGIXtqqb*n5S!J>17`#%7C(;xo8k=|`iVBpJ*!`jw^rkFfzOBF0y zV2;ZGJG$IC2oTc!<|pZ}$lIc*tdOtc@@0=UTVDs|D=GR)e0N0@>D)vVG9dw(7=U2W zbpzRNXTh~0FXH@S&2OU%+ftt)d}vsQc@Z_00oCe5>`#$b__4Ym$!rtG?7T(l1uZ8o{@R*T$MqLrOGaCoi_U7hhs`&*piEr;%p{Purz- zcj^SYdn`{5&rLjCJm2Q|5n;dP`3dpf;`?gcqj>i4{XWlmo~=BK@cSB%jk&ssct7TO zg{Oxy$Kq$RCpnzSDe=El*NFK4<(H?azx4QD#>i2c+d2B8F_~k>jnBIHl1nFCCioXt zu=CtzRzhKKdQ>JS45lNNqaSHmCCb``>$C%bSeAf+qbM>c&ftW9XP}TOFpmH?N};BV z=c_-!)9TUJ44m5RJ&v~^I-{o;x-H zBl}Xhd6bDWq@r?PI5iub6s!EFzMX2*&@VDQtY?jzt|3M1Ch@a3?UawuCn@nbjWrjr zx3kZj@P&v!RXh5=CY9RvzCH9lhv~G#s9^QQ9Qx$|oVK;ac)OGjR*RSz?mZCK* zWAS}m*6?_vX)VD1Q#=OR3j|`em3R!B)^I~2ffZ998guB9pyumomIB|7#9TW92SDRS zHP<#;bIm#wzr*cUd~@Nk&0r*xLi7<+CcPal0v0XQ?MZbiIS&k$K>myT&3%IY@SmT$ zW}UY6VQ-E)3Ejtwm4beEnN?C`aTaY+OJI$wb0lY z_DtrvgXd$uWj{J!xaJ$c?S!k;5IT8Tdj$)x0#~(huzU{v7%LyXR~0Tvzr^>dx)^y! zH+ftv_*+9ONBTp_gYgT+i4sMA8OP5k`*%Dcp5O5NoJag@$=07e{!WU&6E8=?@n_yn z#?#ta-}UWO*U&bH;JEY~wr8uco8>f*ak>>?+{c{jwA=!W!i&<1n&LYrM2oghPDK8d z9EJB`cfx!jk&L*Ua(_7Z>E?5j^%?HUN^cF!k_(ich(IylvfNV4a^|+M`e!XoT>0u= zmAhm;pr>aWbyHb>w5PJL7I5>6!7q_ol}OA0$D`jFpm4m7%Vk zGXzTYCH`0Mqkysc=xOQ-s*mu$DhiUvdatk|Otm6R(r=7MxY~*^Nx%Hdudh;HxrJIa z7nh8`T&Zo|(bnCX>#oGwL~RoHYME>D2mU2k8uOn|S@Ydk?i1^;v9pcW$yl|hd%hZ| zsehvo0<)W2np6ngw2QvjSC-MQ2#b{7<9X#S~q#fr0vKoss z+ludF4~;d>9yLKy&CiVE(~R;gt>HX{`Oj-wz3kl_-Tk3=XZ%i_n?!9M>wVXCYO&bD zt97GbN{SvfJB5*(A7Ie@zBNr>T*s$%6 zj8tyHEmcMA$}Q-fPa~q;)j}tpi9~QGZizWf;oNQxul0w9c#h(Lil?5^_!C*CmI|(D z>2N$~91R=y)V3<5!qR0en|rUdyASgGo+rxVpurkXKF_5*SM%J?b0<#)k1c*Tvd7;^ z@wX%X{>v|JU8#RL#{YYvuJjRUd-wX!6@t+WHyn61TL#_}Zs7_Z_mT6O_%s|)*YANC zL%><~SIJ_cuts7PlMO&*{nYe*HJ)C1a3!yDsh*02uNw`b%J=9{-z-_OCGNit_@*B=w-0u)OFtN2(N*=<5W(oswxatvkyLW(GnWm1y7^pSeM%+TpvFm4 zgVYci4`zW-u1)D9+yG(Sk@wB4`3xh@qm_j zA2g6ZpBXJ^E6SpQwt+UW_6)eCf!Ia?J2>bi@Fny|i&cK3LY^1qI`zp3jP%tOf_*wh z0;gwtoh$=mSL~{SFE)9_8@$TRJ)j*hl4m5+y7X(~*ky0_Kw1}RSCMwqioGh)6IP-o zwe&&Tm|V9*c0xsI%&prY7+B?|(?hYF8)n~+j@?JTDa9>SDKmUKWPxL^T5(KeINQq5 zw?nYh;(b!;IBCTpc|GRaVePM}D^AJxDBli2T1&LEDs@Vt4YKXdXk_258G(U`skaju zKB>|b{VLk;If)=Q=vQ^MY4wfdvBD|U%0Fs0t3cOaL-b|FqtcMNb8^u4-dT6#vfceU zk!*{CKa@V>Vs$kyzv?ubw{nF`^;3SLI*Gp2^M@A-)nBzk73?-P$}tD6E$iWfnztc! zyOf~X9{i!?Kq+B-{5w>Dx6mquX1@hGgyFAK0WxO#ILdj0B(F*q@fK>HBUD$?lF?d~ zktxC6%i`6ox3UTTP`nkw`EG*amsh84a|*3a=ds!C{Kx;m^CbQTT?rrS%@Ib;>%1zp74C|z-%3h-Fj_%@8Tc_&J8Jq`58Q2Ku!Z9w9B@1 z`=rU*Xc3~N%>R4too8kef^~O)zt4XDpI`EM=04ATIrrXk&pr3tbI-lElofMMG7IwHbGez;71HS*(XU5-(@P9dcD4kNqpPtOd2Xa1V z?m{+UOH*jt=B;Y}@0afaA)bypTP_jhGIfquNV@h^pIzL>Y47#OvG zpOYZG?ul>ay~;7axZz!~@LMr#?mq4=XBkk4LKH1|ki)a%6gh0gasNbM^_m}d=MX9W zdWBh+l^5&21jl?JyZZunHCxp##=^bf1V--FoHB4fwnCxP)?1L5qIqS|G8K5$JooY} z=lLSf|5UdkJWKeMtRKEuNOn+u_|+KFwcuy;KBlbJ>DM?f>4oVI^9a`gv%fd!4S(bb zj+AvCwnpT=r8#JaIVr3AJohX7I@~)aWj&GpP#GL-!Np$}i=1mZu9%!ed? zS>z#=c$avk@ZWHcQ}tqOBh^t0FuuxYc^`L*&H-eW| z&+rFM)JSiiEo_^ESHuJbWuiSg%k3A6g=lYqr5dZsVl$KMwX+l0Wr^dL4QSy9;F#0H z55O@eZ@%k7gq_bKuw+jt40_`2e?p2J|#rZVmf}n}4a8d#1Ci|D{`K;_X1I;JDY_38hIj3Lb8dY?6*3f1ORz7vwKh zK}~-UogC-JLJa7NL}TI+9JGE}UI$>~zyYyjtCkr=ko{hahaJ{sY|}8=#JX{0c;ga- zJLw;lGF5S8npwIec2Mrpn3E{ZfvP|uecOD$hNZ8ar-7PWRt<@vYOi3fKNFa(~r#UVQE6IQtB7bTNd!S>7p4y5-BNqq8 z;K}zk{XJH8GIAKl$ZQfk^*El^c9vYM9za^_u13@t`6M=)Pd!NpDjj#rqhy03Lo$ku z6W`cKFA?OLrBKNF&J85nay=aW_Flq_;E2H7Z*dnaV2%cjRy?qgKp8LC@fn?U+IrKgI>z~JOyt{zHBeJHdiiMu5bhYAJi(eu8Xcy=rlkM! zxzgvo6;CXCz*7_J_JzNjyEr$8v7C`>oZyQFlMBIup9wgjZtP`ywWlXwe48m&MxcTYHPWFKZ!rbn)c-QZSaKM}mW4MB$5@XPPlB_-x zp74SZa>Yja$R*-<0fH;#FqyINuNFp*B?JDyj;*OfM%QNiyq#CKn_>)#zsyLvuHhgi?R z_X{|*P+IpdcKwH=X|MQ)h6n27VAvOK-jloQcNkMEjvnVQ=~oiRsMT483%HIiFh2gp z!J3^gE4mQ2(8B|bw)aG5WN02&d`lhj_S+>t-!A!k-JIf^D1n;9ki!a{11w=dd~H_N zWmrfQdgW?Z?7}50zjc~(n`Qf}aP=^UXt`VNkhj|{ssqcpiI1vy-Y2WkY1^o|GJ%>G zrRI4tYd1Oph-s7=I^BIC1$sr0qw#_nmvs$I0?TyKrg?8ENyKHa@7dY(rCb9H)r|-o zT%`)F8k7dkr%x)_Ru+&0Mj`T?rkOa!$Uz6^YkzCxee|r*=?Ih&TxfnN*PJ+Z*B>0| zcjQlU1kYy)QCqxpXN2#RQ*I}YXCW-I(V;6Ay?cUr&{|9(BEzV_Rgk|J5S4f$lU!Cd z6To{GC{~jwcK;@|J|g8ksnwDi+T9#{i+l)iPvu_5;3Uq`OZ3DMc287QR>zI~CpcpZ z>uod~><|{lH;gf7xWluJE+5HNEZ6~C9RoQ$B{AAyrR_ROJs3=}{g7^x$Uih{@H9Dg znt>FSlc2EFgg;GWwsmDZvqZNri$v~v(=2oiR(5Wa9!iY)W|_+@F-L|FsyeDLc#tyEt3cb? zIPQmzEpzf~W>y4>gZ-^YBoo=qUScFOpD;iZbhcvHwg4N97d zw!#v1r=&k}N~GN%&)JS@^mECWUj}~8*#a77YMvrK=sca$0yZbmtsvtUTk*M6QTRC< zCr5~&!f~PdgBL0MX0}*(1aB%V*j4v|c}L!UINBxAQfGWcF5eTJS`=<~up9G4cq16i z-+r92;}d*Ok57v4+2fNQWa}^Otelos9le za*p$#VZo85;Z8?fkmbw|9DT$fRz&})2XYnZnN{%jY1)k9Y?3srI{jq=wU9eqBZBI@HLQMGw{H_jGA`)VmITV_6 zV_|L!Fe0UD8c-t6{I17|E{z(#-I0Ix{Hdxs&@*19Trz_)ZQf>ks!6N>ivI~c(%<}6N1yB(tiP72k7)mz0mkPg$q`pZUt6vb9;ugJB|QRI zTs}oRxwaoamnn`;HhYcD&-Gl#-OSR3!F01rJ_gPIDA|R5zT}ob+75^u8w3VonmBQG1|=_o>cx(#&5!8+6|B0$P~RZp)(zLLR$bJrL|-OWxx zuF$0DYe0M|RbC;Sh=xY%%A~$3_I3(t^T!DanFhuOmA9FWq@cAuc&(@hyfu!bZXiLi zZ==uHzJuf(WjsRKLu8ABkZav72$W3kOU>b&n)05Fx#2c5)cFs@T6gGEM%0*D5U0*- z62y1#iwb|}r_-cy&yL z{uB(0l#n1?6x2+;0w@Y#y1BFycs{^TPscCLSFuo*%OLHKH`_q8r3!?R>gR~&lS|m&{(~^;k0zf zq@IM7J<|J!(9u|&_}6N~AdX{ToTC!wH{$EJen_0WlX;xnaxBttB0qH6{m@53)$@AH zhNIyQZkphjvg5?%Toem^mKvXGTr*;0pYMmqg9?xC=BJ1mP&p=IjHjl$F31IB-SVJh zFvL6+nb`MYk-T%y#$O^6Pjf%%cb*=f9voKKI3e8#eZ&Y8kXE56Hjyx>zsH3Xc!n<;oYuS$%&>;3F7RSA`0HrA-IxClpkjS zZB}0?RW6{u4{{MoOcM^vTW8Z$3N>winvQ3VQ{#Mss`?MphqkNE*>C7RwEY?Bu>JjP ziY+<%l!S6r_)`jcNzYRPA#%HPb~H(GjqBk3_?#U|=tJY2`_y%bZTiw|?s2F{u{qR@ zLNuwO#vv4cLT?F~N!1%Irc``D)K6R8ejh(=2KR{sn0)*2Cs;4S>5@ zH0+AWew7!l1xV^T2WnVcbRGUh2XjC$+1qpmzc$r@;M-P)JA=hqhGE zA09k)&AOe!=`{WZ3><~^iW_;*tDz9TW~cC}K_lj@i$|2b6V;H|&JWHNb%z}_TH^9^ zV-NcfnM&%qAe}5=r1T-r1V^RHGW|;}>MizT!@B->P~%$M6pwynt#t?KHN( ztRRFg3=~o}n6r$f%2NS~Aa93u>M9HrhFVDwhmsm0DOp;fL_ zK%8B_-oI79J&F2J8oPet`M2wrEdJp2Gm;Sw98fc!lsSPY3S{wxgRhita(PB+%Lt)m zjZPIu-cph(k{Dd4reTK8)9Ik_n4Rvw3Ln-YvUcFfr0{*{sW>rQ5qMVl%3={KU7E;3 z!`dEzoUu&VmzpGw-%A4Tq$Y{C+b;sWDZY98pOOyN(*BYH#Ew8SX(Ra3jhTk0@wTqe zh3d_mkrv*a(X?B9%@HR^#;rY^cSs8EEkJ+PG`_xS>_x%LiVB-PI*4Ao?!7?nmy&vK zrcdh=nW1~Zccp^wpZ*Im zdw4lFCu030cugve3ft2h$NKC}z_H6MGSxAwb1KZ~&PdRAh4pXce5+Z8 zguHkJv|FR6aX#xF4tQa9Hfe0(Q|fhp{@Cck%Mi##t)-SL-s`@|oHTYP$&83Yg+-?4 z+EU%8n2az7x@_k+2JqQusI|T~e7e&Nax`ulNA7x%+Evly_}$GkWMrMUl~*}8H^RXR zlbn&{tQ-)<7VneO*ym(Gm8tN+ z@h1o3|E2i>%S_cmetW2(BEO&VQj->+)a#YMRKh+iLsn2C%aC=yik#HyC#d=`r$NGj z^~&YZl*)@-uE?i3owTf7KE~>>+#++hB61UUn~it#$tsn*b-xhaYu5DPwui7?(Gfl> zTAIj1vq{gAPh`F``mF%(tS~9(p{acQY3(&%k8I3|Ji3sNNa^^v3CKf!K0SA$M|x;3 zZ^j+0-Oe9l-OmL*=|>{-T-GAq(n=lH99*+%jCsWR7v5wUce67(Bdv8xELxa$cjyCD zAsl7EQP$I(m43Yh$>}73wC-f_OIJYVvF7E`i5>u&r8()PPO*f46{}m~Ju$lP@>fUy zh0YfKQ-;~8dR?EpdzT!|jbos4Hq$aSEzPuk@Udu( zf{VL{**j2%Wf*(j`F*%=*t&^WoF1D?EpP1}Z>rjJ8kQ?ohm4_wBUKi$J#5uO;&VV+?i=xy9nJb&O3 zTR8JqLg-s5mm>7Xc&SbZXM=PLrLE-3zgTclK*$i{AE*^OYz}Q|vzZD2L_MjP^mP&> zZ?Tc0l(dBjBoM|!dp$_@?<6P31I0jlJ;*6HZpoS5lR!@Jt^{7F(m=Tx{lMAFg=V94 z0a+dzM5s)vCK5|QshfEzZ(e&UH&f+r>L~-FT5>Rd6^*`(X4o3}E`7Mfxwqvs)<)jW z7B7z2Wl_J2qAg+o*V$6bZzDMFK2N{Pj8-R)w5(7u1QZdBy)6gjt+VBwxJPG877-+< zvn881`Rib++u|*Q??jh=*7!e?++$K{t*H|4honnRsSYGK;oIW`3-; zVqcR0von(SMBe`NUKCjiE`F6EtBkYO3OeRr-hS<$W3f9q4KHrIlB&Il<3k7yI*vxA zMAq^OtH~hlpHTO;tnsQ1vh^tuYL2nG?YIaDc$(-eTZN9x_|O&wCMfYj{=2Z zWL+)$`?~Ih3&0_93K|f4rVuSGSM6Qkeq}*go0ygWqg~iHhx^|ZuXNKU1mvo=iZ@h=|{|t zCnBX3+Co_osmciN<$UE6a^vO`=_Nf_Z|2WB;eO;j^4`QBdLsfatfK1}~0{o^>syEzcCkCGab3L1{PAKWJGSK=DY`5J@tY%#WovvzKaOX28A zoa~_C{zjC-RJ08arM4jjin)6LK%4(3b9EA5jW|wY%a}!+#X^&xS(xVekY^O%_wd+z zo6oUz`Tv*RYM=Iy^bFZ|ZU51~ntDV^Qs(f{*%?r>*-Phn=s##?Gp5W#qb+R^3Kwo# zSB%sqqAh(iz1S*uwz%L4VkL?lwPGjM{vV#9mj{W^srY6ifTB@>5NQeEyH_QK>xdU& zuv5hkJ2h9uqq8NGcoL);tL8d3_l-O+?5eXxxR6)H5iTULtt)>3L5l6`t>K>u9~O41 z^P~tWKY#3N5|DnX;5Y7vM**1bKf2cz!5K~!BTA^_)Od&iTpy!kUc1^a@QOuc6Y|v{ zO3VQ(+2dsNO=`wf0+A=aLV?YpPbEX826`Pw&oHYIrI}o; zs6{f)Xxw-y_5#$ku;$X(+i~ANT}r^FKbq5WF^H8JS3&7m4lL2{lEDDsOC1!>V&M=v zbyqIv7^sH_J-R=|`Lb5C$5*lS`juW;O6qP8fiDq2l!Wq>ti#Bp;vF)tHe+0XeYyF9 z4A6puPiYdQ1giT*Kw36Hpc)`zqzYABWe~ho(%jrns2Z5U7OY(6!%`|Oe|A2sq%DfP zUD_wYWKdkuFBX8L?NTXS?FF3~QddFkJqQ!_qQ)WB%ma~`eglG<3A(1d!orY6(TD zfhW+(m3}*&UmhI=dHgs5P?8>{EAg0(N8nCw6_@C-kxo9@5F=MlhptK;qpnVj{)HP8 zV-Cg$9E~Hk(afwJlJs_&?T8o{`cmxh?LNvH9P?9}y*+kViQQU&I06XDX^!&{JI2a^ zzWNudR8?s88!s}0a!ndlNK-la{bZDBXOVR_TD>kx_tkd^$DsN(+h&CTb0Wm%FK~)@1v2L?rVmZ;L7ayTGB&oBl|=T&)+_rgMEcMRknT;yk#WUBp-n~Hs|Wo~}6xl%G?A5@9*-iPX= zij^6U7bM6EjUeOC5-W?)G5A0vDr5o_D61YWhIiO2Hq+7}>aXH5JXe$p_-c$9vNOp^ zu<8r-iqXpP11EtZcjv^oS&AoB_DJp^JXvcyGAJOVOj5KD+c% z-YnSyK@}(gb#eIYs?0D8VOK74a(Z=nRk>A7Jn=$hGYfBbKe3DZU;69ot7*{%m`DhoWKdb#E>rLcnFIA#S5Yfs|O20^j4 z%ndx38c9w_2W!!3uwB8V1FcPmiYQ}*B2Wd}{z}X;;$=w`qX&va%u7-Q_*3Ry=B=m@ z@A&V6)Z0@AJ75&}G(%-VSmRQ3TVA6d^xM;MbwXG>Lfw@eR6Eg zjdqAjZkNRl$4iqUJRTrnKS}LmQc}a(j>Sk3(yDd&V}~na$s)%EI2}|4aP||mYpE?> z(S3tdG_GLSz7P98YE$;o!HeyMUU{<@de!^xy#0f$>v}d1T-Oy?Nzzd{v?;J^eOH0f z>$~!*BdY${*VNO4yaSiai-li{MK-VqxWVVO7SPc%j?tKVi+vZ%^_)2{jk19F_^lx~ z)5swwMk4jGk@X;l@JwoQw>fSMU$H}+jVSvofIaSCJ}Va+ZyN;iE{ z+oqd&VGHRhNk@)jWIC{c6jbIM(Vvm%KB9ww{Ge}q=oW3tE_|?HUoZ!QjG8aRMm{3h z$~LmkKtJ0Q#Nd@O&_5Nr?ES2RLT-*O8tz7$oTurHloeG9JqL= zcG59J6KmuZ8qPUN9gxIxNNhIyj))L4P6<)XzE+Tg-#hq4ntfaJ*FpUy%Q}P|&|mHP z>!|+ProUtro^--viMdCAwdt>Y`fG>&I>uMvWs0Hgnn`p}2lNs^T}0m@f4n}a-{e(9 zRr%xffPRzLXOpkbC13X>UtdnXz7u~X!y~+sT66{S$3zB_W`5jB4B#Ft33EXJtj?;_vYA<8#fe7E4s5`1Q~*cYf7 zBH{k3SkN~nVGX)fH6>GONviKKo`HR0%>FQ@4}BR9>6Jm-@Jvu3lb%S28S0R{H@6${{vi+u}J zpr5k)D3dl}y)31Z=}g)rlOF<1CAWr>$Zsu_U#aycrRm;Qnbs_UwyDq;UP?xe+ zBFn-=ynoeT?CtZ?r!I#H1XZfw*@fFGsWR=trPOT!OS$QLX(q2=u<=~E_DXsovG4|8 zJ*P*WRr~P~BFOR0W_jjI^gqLzb)(EpFi=x18w+LH?fIPV5yHt$w}0p}X924RSod=3 zm6e!+ogHbPL@G||ju6}un<2VyItykFNbVkamUkayu9y#kA+#L4kU>;teL8cI=LvwE z6Eoq)4U7{B?nWa>9AZ;Fd4mBfiCx|klV)2|)B_^p5ql?G475jtmfqcXvuOLmd+q&c zv9*1%!!h(-hhw+Mi%Why@{<`m99`?ZJM`=MqCq)~wk&QkA0KHG@R3KGdgSIJ4hz?^ z)fSH-@W@+o=pNp#XkX8)3io+;r{7EHb* z8cq^wE78o7Z1UCGTeBn!E0aLXJu0rw)#JC>$Dlu!vB#^~1LOCLGA_S#HN8w(rRf7( zvXpB2esBWYDkM{3{1}VcJ;dESov^m@FRU2zP!IxD-#iVst_azXn%p{5@EF zP7P5Uy8@5TiMpPbpbBdULE6t3b=^{7eefhvAMtG^5O4U$g!I=*kjv&AIzuj&WrZBA zV>6VS@XN8HPbe6?`>dwKd#)AI?`_f&HvTD^4AM1*80(W_3?5J8k&4RT_Y$$v+a=O? zzNMx5MQS!5_tnxE=Iew8c}agWeK+^4ufPnSQ7r#um67`)lZ1LdSh3F+K-wU4b8H)E z6a@Rz-?y&$SWz}U(sgKRiKMuDv0c;PE#|CD7EecWQRo-b^!~xkX+@k3|Iz5zgCl2< z_Jky|UiyZ>5+UCa6HBzIz6p~G;zfDz0hxWmQp_{Z^sYZ-R7V&LkBSa}+kmqoQ+;zI z93vabjIhN%JK|L4<2K?T`wDCQN2;Wve|?Q=(He8Zoi=~b+HM6;z0%DhllrU@oo3L` z)7EFt9XiZ9FCHjneY&6lc~yX2Ru2n>bWG(nFw|qc{t2O()(#yS-Q=C-ZkY&LXtWK! zVjh2@;U1U9E%wa?hdx>~znL?XYvW{ z>Tb>;7gYsmLRgeAr;A8Pds8`@e2i}L$wsohFHN@ht6Ssk?QZ!g9iK7=(7hJ>io@+* zDRjJq@ui4cV8uCBj6MeJf(^bE?g!^WHoVokAC_CwRQaVO8qHSgDHTdn5>#HK`I%&H;yt=BFDp~BhO$`HCNQ2Qi0L`8~g zv#pjkYRU} z&YvBRm@I9tVi~S(;kMaP2F%DtmvD)^nAr77pYZvsIdbuJ>xM(Jr00$_LMi4rS!N?b z&>z@iV+Po#q2b8OzDBApl3zRWioZ%N^+Paid`bSq5u|tn`|Ol4a4_!6XJU#?2pH0{ zvB^p0KtpbLPd2C7#)j05z|dqD!>c=dK-!)O2#Q}YLo;ws6dJf%YbHiWl(O~vLAMsg4lw)z3$JqUCs&BUYC%gS^Vzf1S zSHJ?IACM=AnZC<|MomWcM z0mt9l6bd#keL_>{W(YnU%d8tEQK|#p)HofFsj_!1BaV%EK^1I*?XZ3;LQddG)|vh) zh#3sszvoaeLAOi`2SN8jvWTObvW_2pMs{CroQ!>ejqQs5;~B;Dj((LBigVA2au+a5 z!Fj={4KGQpY@GMU_&M-B;gj(Fqem(2sqmic(e!$-;Dt5Lc0ZUd1E(NdVHrAL2!BBt z7uE`O^-^^|vBy}mKOp^HA+3icxPac|4vU4Z)ORrK{o`Scz2k#p?`kQJCe~E!DS3j7 z6}9?p{5cDo_lG`$T)d-qyMN-ksp3UNvisnfivERiEBw~$(FFEh*4X39LMXOB_RdMK zpNPLYU;}e5+X5L81&?hC4^+YZ;9nqHsJ}3&W$u9=*b+O*{FHrRVR)B_i2j1OI)$-T z#$5MEy9FE8nVm%y1V&{_yvsnhInRxY_H$?_^YZoKB3`uSa>1C zZ{7L05VfP9SSS=eS^x%-X!bf4ewi-?W|P2gy-W(T>a;+4EBIM5U7tpK+WEc_%#7VK zBM=}ewewkzD)=7r5+dj5$ls)OQ{rDVBhad2d#!~kw#%#%@otKa{i9ZBXQ<60fLm--Q^} zd=PPPuFrcrr!pIBNA3JDp({zzCoV+T=$a@rGcTLvw3RYLpCtOvUJAv;zP~k4Y~&HV znU5FrhVC1vpd??VVtD4ufD~r3lfk7u#d^Vx&?b4lK?LCcU|_NANKS$BPefv=M9owa zI%ZMJ7TK!{qGP^n=hc#tHU+WMiq3QNQfzVAh95>qRTLMpw3ofGf z5vv-il%29EGo^v{k#%>NQAYL|Sg)g{AnvHa`nKOHP?& ze^|5nT9&VUgB(7D;5npdS^oIYsp!~pa^MI?hJf+i_H<|qf@x!0AuVQvPDJa|00LKo zE#@xEClh7)QKT(DqM7AnrL&R3GK(A|S;>29Jac!{rDDEm!4k)I78g$yn~SL9!t_p* zZ6R;?y~gz3#0nY3$+4|PK>Ybt)mH1JU_n&mNmXVF#&u)YeT|YY-Qr!M65e7%6ZbB&ZcTWLJx$!(Z+Y>KOhWa{`Ed0ppt)EjGHIdp1ZvW_N|zy}ES(v+ zUs)oFN*5nAbLYZE-y`7SE{q4D&Ftt4jo>-5E(@_cH?q!&Gd{A;gEJdyOewTKD)~!T3?ELqPBNC<+DWfGuz=Sh}~Q z*yBuND-d}h-ulhym_G$Cl<_BNucO0rUlM9Fr)LqNzder*A4>*8Ql@(l`1Cl=2lSfL zYYDuFmX2-a&?q@hGI~$il+Xu}bwP?y2o1}!(l*q)bZah>WyGUzYwfkWc?{)eRmbOU z5xcI0?tY}`__5VMG(o>GDrI+F3iXM~wCf#dF%kySjZsE)(h`3q);PJOMt{0hclUEF z(ae6F#G94=KJ$dmC(^jQb&@k}k|%8#eX7{3u4RzTKut5LRw@#i?v)C7tE*C~ zu$*aww0S-e+%5O;b*hA(V8~o2)35iSi{{;nuGH%L9r>x{waX=EVPn*>Ml?WEi9Zz~ zx@HK~o*Nr^P?KB^vU1B_T7lpk$sJwvKEV#3a`layitdr`sZ0QOT}#Hj3`0h)`(YUv zwB7{}$_PmUJi(3Pc-<|(#Yxdar(m{MQ1gH^*-T$HHlVLrThQSGB{GE^1>I^XL0&+_ z4qZ?dB;74?s)8OP1}^(4#r$=^96ZZylI5^-2Dg2KVC$oEr5^t^g7*_FRV#Ei%OZxn z_Of{S`~E|t?nkq~NrJ5;aQ|diS-5Yc`{8Rz!WrpPA4iMsYw_U>&iVT!tNBtA+2VRu z2d)1)!FQfB*zjQ1V4Sw;2jd& za?W6vw7{}+2Kyy=(m8`01#3A3hx^jb)h0WnO&r7-d@ZG`>(sd_K08XvR|($I^A+yO z_-dNx2A;`0|IGIr^+wfb%7FlWEz3$YJs>Uo5LLQI-I#{6ZL zGt$7(zLxbP;krlmw$wwfTK6AqS&AJ|t}5*96Ab z3sj)H zCjnrV9Pjc&Hwq95AyA>}A0!|NQQG?1zr%NPRPrJht)9I+zTda?kqk+Tel|nGDw-2oK|5W|9Bb-k z^IQLLERlVY&a%=PpUnG4{i>7MIH&y*%_)cOU1RSxWzBl~ zWH#$HoRHYB>40i$w|ernSoME7m4rm42(D zQNYOxc8&&=1PsW-bkiRLS*CRMR=tk+x7pGI_ZPb#AUDgI7UTq-G) z)eCixwmc$(tWuu~+O=BZc2T{qmGUYu;~(pvv0uQv1s=P8!B5~k2BGNJ1Wq)%6@F@M zqw?5T09-!(fo-G@7>&e=K7tyx!usb1A*)PIGcV~|7J-VME(Vakrwo($=qzi7AXK8q zV%XF{7~xkPG?e^Hkuh!3c~RhJX`DEfF)wHj>=;nme?VyJ{%rTPtVznIVfOoGnX^tr zE=*EJBQfHX5pJ+hT9_pk?Jun!Zs?Kk@}B-wkSX^&a9<5ZkcG4_sV3aMqK^N+v!kD==TfZVzP~MKSF22m0;5gWfv^ z3ik;}BIYVc3Hus3Dad2~67f`)*rorfVZ^*tQgE}!DZw~C#;LHQZt zD*IzyaruRJVdq<2DV;br%Ft%m6HuZoP)8>uYo<{x+(1D{nJcwP@6y3#WT5z5|HA^P zV!}{bTS-&OG^DhV9$Hs%#{ueF8Q=8z4;*u7W8z;w5fgGxl8ny`Znj+xR8x{_Rh!KQ zF*P%8yE;+iT9bB={a}f(q)lzR9aa@^8bic5E=zZo>r^_13_`MKB+1x;Ar^AxM{;h|$Yc0oIiu8E;l2k#SLoL` zv$!VFdycbKHos$9edd;B;R)+F&~(~*_ABSLFN+kf8*;8;K$TKS2sF|baH;c4=GL#R z`e$~|wo)8CzMq(C9j5{q$cNHd5TmJt^!l?^@S`usHGfr|Tq9t|)ksU~E(0v0t8C8_ zWQh{^jnV&R9@^|UU+aOVgidf7g80umE%Nhb*Z5YKr?6me-G_p~agVEd$&xNRy+EuH z2W9gE&Jq~eN2uLoQXc6@HHFeD4sHMJO(j|pMs%mx%6Y!JV1rYx4zqL8F2~Y9Tk14y zPN^So3jingOA%AH3(0-!a-98uUEqKSP-r5?!v~yaJ>bB5yK+KbTz!^ZWsM{ofSk}k zQi`bhmlKj@Q*WF@b`OUugm;$)v_c6~lp{}k*=^Mx@_870lpOL1X){TDGcJ=y2VQ+_cp zW>O{M3g^0Hj&IF$DtZ`fyAu`T+v8$b1+-uVoU)R85SbnTzkn>MOj*%SDeQsHj9=_E1v1a8K6u#<#F= zD!0N*EhBFi6Oc$rFW@jm!fGaDQ6rpL&Pm(W;lY*yc#IpL+JIb(>4#%Gq8R}g`VE!YJeNna9CU-T;* zFu1g_SHX1#+@~?mRb|%F#tKWEQ)r%PdAB}KCQMv)alZ9kltXkszNg*4H#2{x)6p=r zV5ZZ#QM7iUVO;5XH>Vr6yt|(IW|l^BrPkvCTu|>?$K5Pzoz@Z!fz+_qblG;PNlU1p zot8SCD6_6RiKV$$o;DYsjvZ56)TwU6lj}s5nB$~=k&y6=+25C~Gf)r;BO#@c&0@?8 z!3v4~RT`>6RZ^aA_Z}D#JRizN+jvUkqfNZ-=m_fTLt(uhc$(-$PW1uF;;aR z>lTTD34`(uU1(h=-_slsm54~z$OH&5UgY4uTerC{yxw7i-k(3OYc3inv(!PEy5EAT ztUo-%ccWwhr?~*q&36W+=prFNTl2VaQDv-edEt;P&KCFk(X~+5OzE&vZ>M!38>#8A z(1g^BIUe{`{BPpTxw9wc<|+b~a~;r_fYuV{sX_KG1@%g=Z8$=CrQ87!K}uEHcq0pQ%7eEP0N7tg9X_ z-$oIP?rW$-xXj^H{J49hl%pnAY2|9D^OW~I-N-cDRG-tl-Ym-Yn?+fE>-=~m#&|(e z%AdlMqf+kp&}2z2vp_R<7C?*EdJ?iz;UI=Qzn+KREVG*fSA`{Hya@ZkI=q?~^XA;M zpHu#8oPmQsz}9N3SSyK87OZO;zj)2cW1*UGy(c}iq^UmBoAK34gBS5~mAnk+~+M7cw#5x4wH3N{XSgzl|s%Gc$+LnI<1yKg6HPGhXUYYa1RXOPp!JVO7@X z0?$>V<45hAw4O2~)XH7DQid$&xC1AC@6F zfuifnq>P1ntm8Dp9EFRo0)|3um1Q1L*EG1A9&j`gZ4;MHPr|TG4yEPXf;x}+8p|B{ zQ(S9ryZ@uiNJCaZ@vRP`Z@k)6?@rz~U2^}fOtU!GK~avGQ@9BgwtlR8co8WJrnu_% z`e#&DTW#ndF~;P835o;?;*Hd)R?Q8IK46%g*4tm9E#zQ$nxf=LWD@my$NDa9I>-9A zr={u#BdrP%Z>p~Y8WBx*D55C~Z-i*>YT9TM%|@GOHfo~ztl4lp+_29GU4@~`6*PkN zO#uzv!6i`eu0V@6XAZS*INnj?XuFpa0<1qU7F&zSE!_4vWt5BDU-}ha5S(?zyJuq7 zBvleL3hYa4l_*vPNkmQwH+W@D$`!mww~kC#t&3nP;33>FhBk4A(yP1EW1%tDL|P0E z>toYZybT{l#|R%p?M1W2LOJS6!)$~F6~Uu`eVGD>_l%iO4TfO{eSigv1&SHcn@o@SM6Dzey>!dcPts3RU4vhv<-op-c#UaV=8qmjA_ zy%Y+)a4TF1SB}RvWE4ztY{;;_{!3abDKO+ z_W+tdKil2HRMfD#|KUt5f2%aOyLks7tY6__>aOqxuN->4x8!J=-Bp}c4Rkbz1`TCc znUo+-7^4+oTx(~0k)7@Ec($SQ$dV-geuVa1r}C7B46d+hB)>-a;OIwdE?;z{s>oK= z&flQ-%$b9=cCp#elRwJ+XeLE8J0kP4%;}CmF7r-vs?%ZpnF&fWRuX@q=J11w;dVM~ zR>7zZzwG**^5RoaSdzfjV|Z(9iTSEs>_M=#jNtqQF84!d)(ko2SmYg9(hPa4twNT@ z(c8lZ3d%W)@(qdNXWZ|L%<74Lp*J$`9R{NOyL#P^eVd?yyH2gEY0TD#i-w5GPcClW}8F&6~e5xqNNr?Q;uvxHZ*4)FC%hzHw(C2 zB67T?eG_-z91HLAlts!m&zWcKrm$SDd#@dHZ^^JF8p@Xr|35c2@n^D;MnOeXb zW6ol>-bXEp!n-qNVRcrIROZ16@b|oT8ym7w8bbuukD&ZHa~d0BMrge`Oe|zZ-7b_> zcYk;jahAr`F~|BN*i!9PWqoBEEghAgR(|5lwSm`ggO9p8t2AQ?Z9sbHet@ALEUz6k zeqMGc&n_}+sjLGLUS)+q5VD0e0RZ`mHsBJEA39?%Us>(EOEJ$^#f+9@b(Ul;WKdx> zW{>4z^(L_7pOMc?I0I;p3^smi1Vlql)@bgns)=d5xU4lu;4lwrW6gzg36rU)kY(?t zJE6r!ZiAtUVDHD@hHU3$h1;a*j9?kk-^d9f^z~X>3CiCg{=u7??kt}^@mTQsraNa$ z#Jx&ajrIAs+*EB{dqNnDY^ZMe4oSja;@;d0>&1U%iI3?A!Vm~x)bUnYZxK`GpL;T8 zPWtMa^--kdlI()g6B`y6l=f|!Zw@s#I(8j%m>Y(jfc;)XBH-?Szq1U(!PSvGC#lnGC{ zvZ8JeaTbx>rd*~d`!s1FhpT72L7mnFaGVcc^)T_4Rk4t^NE+8vz3| zk}5OJ{Gua$H^#6d%*jqO^Agi_Ui$0lyO4>Igm#F`@Tf_{&60`JDUp^MgAVf}ED6@T z(jRcjkYk22t7cSizF4JIE$y+#Qx+Um78+ZV#;uY5*qSUW3hmFC<7aTIwibSX6qIF$ ztVszeB_uuqTMNh&A-YgW2A4>YYg~ac=+QC=0dFN9v&_-5-`)HzsB8Qjr@Q%UyqJC` z$~@O8iXoII%W9^G11B{q&PVJ;5p4GbgK4{EA`+5m`7d#QGT{ zoG@#5^YtXINvpQLpYZvNfJ4xc+c5nV)(bFR1f^kJvS21NXxb_31*KC*41|k?YqJoGac?0k+-;e z*xelFMPc;Tu4N!pZhOqP{tOG0ngkb1{=c`sW&us&YKYbcO1$t_Tl?-%kh^cQUb3U! zAPJwfzp_O(`IdYE(|vNNqsF+${k4vXNKYJ{b{khd#~aV==)S;ix_j`>Yqz#Uv^XpE zMg-73yJ@`Y>6gYuf*Y(ae-mD}Z3~q#x~?Xn)hHfq%46gCRvlllR{4_IRgEXGP^hz) zrG2QOsov2@2pP!mUn^r*t&>yKtO=5;QBn!57KAc`auMW4L^)4Etw;rpZvudcLJ`yt zFF!^tXiv8Fvz3o66DYa-PNi;T7UGNrdmUDkv!%O7i1d2Bkgw3F?gz)nu=`1yhA~)H z`DIvFNEQI9by^Qm+zyj+JuQ3J5_S7JU%GC>Bbf17&G@id$#HwLoIe$r=@k)1@^^?F z6uK(^vfvd>w_PW_aip21#+HK4y7NvJdDGl2a%0iSyBy1cSLJ`v;cjl`Ge49a+Ef!m zWdgTyS+9^A{j_^U{uf=Li{k+F;4~-yi`l`M`Im*ph9B^x*L^Pkfy}knn|HBONo;#Z znI%5=Puk(IUYM)~=KO#jUesku)^wg|Uu}7>wDyzb; z#;VaQx|@|0(%{tlJ&{qOuE}PQQ{uAC(WjdJ!|3Js{||yU0?=dnT?HR-HDQ@E{ndi^ z>pnwU9{mMvEnAy|b59leXbx|%5$THq zwx2K7Cscv**PIEo!7c;G?lSE22*W+&AuOfmx~Zfu@8=?zX|;`_`uCxi1n<{BW;1@frD&?O7C_nnlWw6#TL-qhPk9?yyp&=JuT=ccz?~0)IH7T>6=YL$LO3~ipEsE;MKKUBY^5;QeQ#Ikvg-WbIrr%Uz+|P z_>43hf%r#kg+mv-@5UC3oE;x#@hMZf><_agpwr!QB>{9f$+XgXP+<$YqA+;GLdOy6 zDy`9q-Vq125wx(OLdWP1f2CE#)xD}|7)eMF@4Kw`Jt~*jDSgC?Pmf6GS(S&tSEI z#X0T+(x)lvNbeBIY&g<=eklpM+VC_#sLAH+LD}l#Qi~RDbw6iQ!$GQ^#{I?nL^vPN z=w`{w=s*3|XBDQT%N{vda^OJlIvTkA=;&Q^(9^Fbkoa@P6HTX$ZgsYF6>3Ua;Co7T zRxR)kL`i9ZSCWZa2~jBDsZh?DYwngWQ8aU;V9|WF<*khuM;-s_;Uj;1&^bA5p)=XU zNqnIx;g8+XBKM{t+>F#-|GA$ELZkjPGxV~o_n7JC-Hu2>WQ}0<{pdZ;DWM(>Q)LwX z*wb+FT@jT@H})SdM;yNp!2rAuRmC|QDJjY)UNKI0h_dR`ZkV$XDl~`OmKM6XxjlH@ zZHv-E*Eb&zUa`ya+*ULsbOoLl-nJ+`lqstKyB*EPLvNXkkR9FWz`49Vyf3Z8jGfv| zV{^9b<{{zTX@L3zD<~v9a%#5-V8Lz6Oadg2*YVvgdHkF_USy53yIFV_ibCxA*hw<4 zqoOk{DEv;%Gh}Ru77drNKiodtZxusKr;g0IynRlgD3u6BlVt73*VZBZp(?3E(vXP} zUWNi{=mx;FyAjY6}-X{Ii_)w z(|{|lb71Ns`r_`P<|J-$acG+ayO272YX%YQqE6^v)Nq5-;Ku3TjY=u;QU|kxdc>Kj zbC_C9bg1FvLJEq8;-BUU^}6;>bfzu9Jj5ZlLNsoq6vNqxX#H^(7?8?HT{+*ch#nBi zXltelf=&)O#16CXwx&pQy7kBG4R_9o_d7g!IjlR79-oio&>3+I|6o`%9-+QttTQlfdhFh4Cc zMlQ^`%TZx{IFkfY`yP2wO{w*lV&!I7y8zo^zS;eAU~j1>h8{K(or3<-wbg$n*0%K- z8v2B#Z=p^EAK+Zpu6n}7&5gSOiJyr?*R_ZE^eAWaE|)o_CvTti^1TFksZZDUG^iJ+ zvS8cgn1&hd|H|LKpA9kEc)rW?b)H6^RXj&{YMv%vcs|E-8&4_E44(Ns^*mqUd6s7{&u@7Q^2y;D&ohN* zK2IG_BhOcOzQyy;Jo2}Va<=lw-^Y~kJo2>vayc>4eqT1y@LZH-c&@(N@Z9tBr2mUm zhUe+G49_nKx8n}x{-pDT+2SwIXYmyNBklE=&dUx%>0)H^Y$a?fVg9=1YbUQMUa_Kb z{i?-*y49mceD$ibr7M;Y&6pOfTpFxgzb3eJ<>Xb%R@bdmp~ykDZ|U+COD8T` z99UYp{DGy0vC0Sv|`2exWoymw0y+> zP#X^wO|ZvEA8HI8;&GIel&DKU#^oA*iId|U@1H%)Y22EdTP=p8UM~|{!*DJPEacBH z>TB!ya}tBYp`1<}C;#$kOk7=8QolUtuUox%>6$fYE8kA@Y~gv5=NXy8&GY~RL>y{gpi-Hoi zWYKyAgnzqB^6fwhni_F@-#* zgjN_uq5Ei)T4Va+pfPRrTBCUBVu>GGRJUHz)TtNXl6G+bm-Ne5;F6wJ6L$rr!#{Li zXiZSsx0WWqcWE7dz+5eFz_q;ue&W5T+%Wt+<>jAWvgGsY6`Upfjq#TA=arZB{266s zx2;@xn_wFFwDc<6a&Rf`OunTc)%*(K%>>^e+)^lKIc_CwL9ycLmhh#riKkC~YdC9w zp<`%xLVHO+4ZAMI$Ii!2W#<SpyBPn)xEg*)K@~VUpE^=YK6ZWOeKFXv^Ifj;(0Qt+RQa!n z$Jcp>sH zC7;Q<^s>vduefrQ_o}O}@m+h}XLGK7=sBQ|_KxK5e?cVn*f6Syk1u=X~Lwx%1{PSh(ok#Y>hhyDzZ3=Kd8cSFNu7 zV%?fxXzjZC^$&b$L&L^Ril>$xN%IKbcm|hcJ;V5Ann#3{*|@@(x8bq|X7u4+B>ulj z^IR~CAOT+e+3?3F;M*yr^;Rp&4=A{`i_BSx&Y`JSAvz#E4&Kk zTM}PMdinJD5?WdJ-^{N+{n(hb+x_g)3qEa{vdgb=m6y^NC(`~i ziD}niFgSzppFHEHMEeziMLoXN;(l_8r0+<{?0i>(5#9C@BBQ;~u(bJ7q}KD4RI*%g z2Pv7fmGB11O*qCPo_nDY;i(etWo#1;sCk`m)fI^pnu0!;XiFOxNj`1k;BWI$-RFfy zr7n`Q=CCUVp&2`$yuX1jkr)J8Iiv4nV=8Zpsf+Yl=?B7DSMnxU()bXbDJev%5ZOcc zn$%oMBlr;BApK^of{=tI;nF_`qx1h8`1Vp8p$c7UX>aLuUez)(Ptj$!=|X5hMnvJX zLJ7{o__EO5_YCKQP!K((g83V#g zD5p?qopBZY_B>=%`MQtaML@WXoD5?Et(5AkaWB${S3$d<9EC%!GUPm91FXuwq2MVG ze#$A)Vg*IUwq**BRrm?j=uu;$F`9oboUMNirV{I3RUTWmU%YsYF>7Y&jpKnU?oGE$ zEs=a?O`AM%da-&nGSED*Z&UqYz1z;ZmHI=~nRrK6+Aeac{5_iTj;&_Ge@n{yms8%q zlJfr5l=tUQt=KT1Pk9%80= zZmIGE(98hwmQ)58ExvyeQ`|+Xg5;;;>Y&=yt5?iizEaI&6Y*0#s~0T~maeWF5P9OF z6)Wxq<{D$-iq&hD4hWUH4a`H}h=0F4;+_LwDBsc*p*4ZH=AoL}FTE?YY}wK}HSrOo zOq*Y z?_IrO`QoX|SKVJNWiDR2Y*A=M5Is=w@;Vw}b=~r%sw^d|LMyfUXX&TL`{+1?44WG4UXR&ln;Mx+r9ag8(1VSc85wAxT3TA@h`G6qer#8rM$Tu)`>Pw# zFQJ6;`&%IcZ%$)tBdHA3P=P?e=^R#HTf45dwx9lq;Q#0Uyl}?;|2fRV^nZW3-wLBh_ag8u^) zkk*v=Py3XAb_t;18iz^s`}=gYO~&#V z$#?yhmL{E`vFX8ZbIU^yw?;Obk3=7RY|EFw^3}(`_VvHp`ouTB`Q+b!>)YG5|HD&H zf9JdZ_{{hI>HE+A;Gh3x#}9w>_WXQr=f3@~zINaj zufK8d&9~lu=U)#UKJv?7y?gZ6zxlUg|Nh(G9sm7*{K4w_V|UMgzW1lz_dodai4RYn z>ig*9znuQ-nb`kW!FX;3;-^wD{%_a+e>?yGG5-ISg7@6vO2PZTUH=d|JNYZ(`3#SA zio(-r9$CFB!xj13k1O*2Y+S?-BY-P=wQ6x$`7-KpMMiJL6v3ywZ@{g`9gW+FI|jEE_eR_;xSz+}ihB$0Hr!irpTU(m*ACo# z+%{a9@wMaLiMtQC5ceRiw9gUTiMYpbi*YU7QruqLNw|HulW~nRX`U%KPTae3J-E|w zvv8;5dU5@@Ik;80xwx{9I3AZvZj3_QrMP9dn{Z{*zHCPI^F0K2E^az*0M~&lYnBK;FUKv!&BmRIdj;-n+$(XH;Euwr z#r5KDz`Y8$758e~$8oR0-G=MKeHQmx+&0|naQEPT7WW|T^|(iIZ@{&1N8_Hrl`~jb zA@|&fn}z#%Tp#YuxVgAvaVOx)L49Sox8Tmiy%l#M?s(i4xcRvCxVPap;}+m)M%JcF}$humAtP zU-#_mv!C;PzUQ3pdAy!B!qxB=cnZ87o(AuNYv2R$boekl13m^{4-auY?my!?J$wUP z3Ev2hf$QK&@GQ6nz8S8E>*0CuY`7J^4KBd9!y$Ypyc$l!>*2-lW;g?Hhl}to*ku6O z3nyS*3)hA61K3Z755uRx$Kavx5YMa7fHMp}6Rw1Z!DHaF;Yskha1DGOJP#fNx5C%L zA$%RY3Z4e9g%`t{VV8kwJDh-b!6(6c;gjJ5@G0Pj;F1!N17G4dz40!9|1iT483Em2y4DWzXfp^10;eGJA z@Im-m*hvtdfw2NU86E+j0*{7=!V}?h;cEC=crNTRP`1J+!v**hIE2rISHai98(_B* zy@F4Mx5KBvyW|h=mH$ZOkUxAx{;(6^4-bXi(Z~az43CCSfhWp+4D!ewu9G`FSMF8x zPr1Wcxx>rlK9T+@cX*B5;q`K#M19E)Zkm zX9fHXcs2YTcpdyLcq9A>yaj#=-VX18cftGMy|Cth1Mn{RF#H+#7`zkKoTE8u$Vpy> zUR6~IFNSMz*Bmzqd$a7wtGT`gJ5}J+!>@wp!Jm{Jf2{!u*r&s-*b{JwU31MU_ziFt zcdZH5VpkPvEugi*2J9bzH^Xm-x51j5cEXRtd*F}4nqxG#?Z^IRI3)f_@L}wl!&YJ+ z0w2TvL3qdzui|U)FnAMO34a+L19OJxOoE?=Yv3=y_3##W9{gRn72XXO;2Yr(-VU#V zzYVV@zmws$*uM#HfPV;YhQ9}IgTDgrgr9)-z@LTp!+YRE@CNuO{3x6_*{k?5Tmiom z9s%!%N5h|jC&FKctKpx(b?~$BT=++D3jRKvg}*3w+VMhoId;v_T3cxCu@ZX*&SJj^ zUW2_A*4pb7cs=$ycr*T&!JDw><&OWU@K)?=;2rS8@NW1qcprQdd=P#TJ_2upwPrA< z)2Db9E3s?saTPoiyVeXFNp~nb9J|&YTk+Q#Xe9OmJOn#Kk5h&HWAJ2HYmd#uI}NVI zelr{rZZzD0eGy!Z{iW~%?2WM2j;F&J>~vYPhI|3sgZ*9b3iuXyC*jmVS7V3V1v2ZJ@H)7HcrSu$u-^sOW4}O*Jq6E$pMf**=i%k>W_T666}~K-xD!sC?wLK`F!-m~N5ZS& zD)=FIGW-d+7XAp_0MCFIz**SdndWeXNm}o4jY_>VzF%<~Yg_dex#tb*E)@NAg;zga z3AL=!%WlK9aMembU3t_`*Uv3W+Z}V|%W}ckbq}R}x@S_qjwoGSS<_F~#4X$Kx*n&W zuJ`Gudt3C&NBiTvvm~-hD`_V}ShnGG%~`)TN}`{xV(ORgEsxD7!?jHPbY)k+mPk(B zlcHZM*Rb_#Fz(Wc zvAEXZuDdwLqHVWg)>TotOY?NiU*-nP(uuKL9ai`bq?7q(%+igqT)CCI?&Xlo%2zrv z7L&qAPh?j5(iP>UFwz&5SMp0|#!_;nlczT1uChpX#v(zjF)MC^i7OpazKSb7lAJY| zbw;E65p5l+j8mOEaF=c=P1Qr%$T{7lFC808uD9VXJ(F4Gm98mG$tissONd#RrE`+= zCd|@1neXI(9kxQ$&eFrUy`+m{2`xG0KbFvvt;dwhn(sB?tywx7hmqc@9aRs~UA3L+ zQ~E2}Bu~4M`6eT??(K-%MY^qgRd(sO?uC}lNXKQCUP;eoR{GL))m#6vNcZEmYclfN zeAO3X8Pp$Qv-(8IY;{a>s&B;Z?WQea`PGiroG**3J|p=Rx7o;iJuRuer*^b`!STNu4mIs88hUh@=7+_ zPi%WnHT6~AmgV8&@=vEc`q^?$H@aZ&k*_s+s`*8Ft$tw3JjL`~TV`ALw#?IvF6X0K zR~gFlv+~(8#Cg}7T8i_oGc9HFo@3;&dDlhxslIInoL_OkN$0B^Rq1w=XaBl#n#(QQ(BvD zy>Ykoc9UrVTWa0yyclAgYtPV=XzHOj8%wjEx)6#uFaogSy znWfLS8F}+&W{hWzIL;kWS!|oAFUIv{^S3?LwssuH_Czc5RMQS|U8t{E{ky@)Z^JZ1 zIwx7Cn0ByX>P+8{%dWMwO~-1o4RfP;zQcy8kNT_9nMS{g^O{oD9=96ZvvH@Eg|9Dj zza?r*rDI18o9`SmqF8fn)Gi7$E1F+qt~c^qy_2r0H`#U)+i_lZjK;DxQl{A4#26o& zQ)U%n<<#9?v3r|YWm)${W@Tf|i_PlAnlsGQad`W*fpwQo#O}IFFg7nKbJu7byK7{P z&32Zv=`4$6*4$x7sphir$-3D88T{k)Yn?fjy9-{h`3Y$DcJM*LD- zt&w%Fn^wAZE!1r4NBNGWc2r)ilgILZu`w$z#gErW_PGo@2Izn6uKPYqX07n-x@;`< zW7nZ}U8Vce;=a?!j1rrhj2u?~>`Fd1OD1c!@>z46$=jM2nKrQIje+ z?);3?v^r$n?=@|2^-?XQFt#2$d(FDbF?QEIh9z?;e5%adKKEkNvGs1v3r(F`bE|1H zYi?(46Q`;BMq{&GJ=-w4Prl?{$~S9t!iLcd7>DU9bJyLea@QQHyZ>d@`a`keb(@|m zkXh>_yBo6WC%Xf%W3b(IShH=f*sQ*1&H5jkGp4Prdpo)puSIOWb`4~8*RHMYGe35% z7Q1VVmQKg(V7qg&>u>ukm0e%z{>OM-Yj;U@U9SJ}8pGM!VS^baq8Fm+H*HX64tXcmRM)Oe|M!IhMgI%B6 zyzCyu?qcm8MfY^Z`xUvA)`oh{M89~wVzs|yx0)O8Z|qLk?r-dF*sfu1zIOd%_0O8E zoYt)Wnh&%#w>xLMN6{U>a<}t#ya$i%HkS3*TBqD!_HuvKjLqGKSM8MS+HdLZSNX+y zsXL>!hL&qz_wq5=hR>sC1BJKleZy;y71x8zaoM&1&>h{%%dXw+Ok?-fv99Ru=aO0b zL3^TL_fxjLb?>#@)vk8WV%x*+2X&vX_BaZYCC7NbV^_-MWwtK%e|Z_~91)=#V8(H~FSPmS3A^d6DD1PjHLPjs zl)Q5jPsMU~<0NXzcL z)S3#v_-zR?nDSXeVNMBl2RfT!ng>z<2nI)b% zOM7v#&b!84c#Cl#J$mN1Cr#ON^W%q}eb1TqJob8(M<)ccol0}J_pQ`!eAjv<^{1zk z)RQ#2m7YD&o!`2f+q!Dx)^k77sPd{!mwyvCgFux@a#TU)zzTby3DFx}CZ&$khn+iQgmrEHi~VJi!4WXWaC0ML}7 z?D$yDTkf_p8MkgLQxiAzO7^CF3&??`jhcg+kgciE3~(#too4RX#@T6ZTIw{XmI$UU zn={Q$Gmo-2XIgZ}HM~$mAk2OH86wI|VVc`JyQxyk#FSlYE5ngp4JiA<$gT`!&qVeP z+D-Nj1T;+QhB-nMt3Qe*zgU@zb;8)(o)t_5h^=2XZ)M1u_QO4|(@$~iFP*^N)7-i+ z=5bdNDRP@+;&-;UDS>9OWXg86sZN`h@T_32dBS*^y9=o$<8A#%W@RDwY-&6e+H20* z`ZMmfjTEM>6j$cnxcRcU`LZyW<8<<=@%eId95>%K-V|Fh$lU9mFLTEn$L$rA@G_eW zj5!h_GWWX28OuE%CDgnWU0IrIMa0(M%0vZ8 z$`&fZq^Al}IJ3c)Uxdz&qMOPdwQuyMBuwzS!VTH2yIX=~?=2a4BW z^VQ&E>``4|SEaSIG0a)_t|kO&Av#dCi<{MV;B*I4!WaYGUwDB~HxKma*-`K76I`Rc&BvwY^yzJS=LL(D*OE#BQBN#@qmaK7hT5=t! zwvGav=V1)o^NesxFW;u=-f(kg9$u1D;ajKzVDpBJZo#_NCHJcho9e*Mh#%QW+SqeA zv=pLx?26h!j6$>+rhUZH%YJi_Dpb+iksM zI-9j@buyhPQ;A}gQLHkGRmM!G)on4!8@t{flF9SzAtPXhxwySCznGE92pO4`1nxa% z>=aWh*-ai|V~=ERZ!^mWM{L}q2E}f}@rD|8i1yBog1R7i35`nJFp*$dz_4jk?5PwB zRPmDWODxk~#!h9ztr>C?N9nXGbL<%z#F4v#$=;q{Y>E?`C92FF%%U-CIbqH8A>&6B z%O=eZDG+vBKd`1s?4}LG5?NcOHs_Ir(gHs6?H ztz_!3%M?#$1rgi4VPjuvA8zYl39I3)qm%VB14n1h)&XqF-`RzGSHZ|Hmi%JLm1UmO zSS*&i*t+wST|OlvZZa=bFk|j2bMNYPPo-=+ykN$JqeDcj46=+NN?6>5gXN`$ZGM@y zg&jHUW?5-i18TOhd!bFYn-}0HUiU&1-Y!P1OvX%F%^9j_iOrXVR(c8H4W}Yr60ySK zpXW(AVB;-hM6q@oZ(+g4V;bv?C$ovCMTE*JrUDF80ftrXmhon7CpPl8 zG&VD|;%?{IEQO-vX?NWqD*JNgWhg*-)m1qz$b{n=wg38{dw8X}p#Ed&^+~LUGhHvYz;bG%$ z1_%|IG}Iwgl3ugaHFhU-Y&Pl?xg%t+`_kU<_m-uDx!k=soqKyq>D=2>N(XZkzAK{; zSv0scr&7db+CgpIHV2@5wfy^3x7z{*f|Ws+sUV5!rR zF4(m~Z0;!VmXXN4P(`@dJg&@)W<|pl+}hQmwh&7;aVs*55z??^&C|_IIM{@Pjk_rl z{;=u+Hgdv7&V0_62afD!(V5NXqVTyWd@c&#)ue{bT6HyS(?jV@{#N$JvN&Ljoi(k6PZopT63l>yb&{sYX_+)Ocb6?ut_`Lss_xm zDOQ2Srar~07qRNAM4P!tOWB_JUL_^X7!qc*k}FlT~b1 z^44sZE3w(QcQdprv|(Jt63lRHk7PG)k^J4!p;yG_fJHr(4@M9J)E+h!1ySvl5b-a}qPYL}t^b#vGlQL}t?vGRJ2ou{lmBKCChB(P51- zM~5}BS?eH~93Z0z>nr8_!!=}za&m<3C99ga@T z!Ar}y@srB!CM~nsr0on-SJ8&kGIpkVHj*Z4WVUq_ZN$3EHaxM}$QrquJXl9WZf5gC zIJ5aNEcx5*=_SlIE{EN2f(#pfyY7(Pl(#+8*u~pAOT{l}dg`;1x39+m&vMUd<{7ahJ8azH$lZoF8xg{rjR@Sk5i#ayBNCfUpNlpqs_4kw2p5}s!$g}8 z;~s53VsmfYX!8-dm(qzgAGn*%hv8`RVa?h#nf%#+nDUs7hw)>T-L1`o@weTaNr07+ z>Orh}5EIdc!EBc1ayOd*%O;%J1YkFt0LyA8y9qE%DzMoE7>?{(oyo4%wP7m8u=O{a z0PJSZYS{XtDn?GDGRD2PzY>;1jYwv*8R(8S0o~C8UyJ(KtVudHYZDNgRmqXrYyx6) zS$MMvh}~^?yQuGu7W85>&c%yx)nmL6?=@>=j@=bn=6IzUnTu(xh6Be8tM=-ZYCYdri@pyRwWnjuRb)IZK=DiSg2$-T(A3Vvv<%F2otmEz1^~o3t_M zX*OnUTVpe;>DZiZF1dHwFdT?CamwA3X*7eRS}PLIu;lHDt_ws*>rM}w3loR!+&KBe zVNbs&Rzseu)kMWmcCN=Z_ zlOfM}fu}%MQqMr*<$NsA|JN2B=T#qM0S%2Kg;}gocBlk zc}3^f7}*oa$E*YYZ%K|Zu49w$HEFF)yx5oLZvv11A2V)`CSGg!4T)z6`(tOn^AqQ% z&d;0!&d;4+@Tj-zd7kejyueF(CwZN2)?MP}+`L+zO( z_j-4DcY1eu^Srygd%XGH0`Eiahuw|tBko7skGh-ON8MHKTimz0Z*y0>Z+G9}zSAuj zS@Pz;!~6ce=j?U9@BF}d*4gL$(D{*b)cu?LclRIeG54SDzubSjSGZTYSGkkitN94W zweDnhq1)=Vxr^MzZpLkQJKUMx4c?7jop+Nr%e&dD_nN$BFXg4Z7H^@~>a}?*+}F9U zci-Tybl>Q{$$hi?p!ZT&DSR~C9DY3fMEGR*boiNYd-&P#OU~!Q&zszL zgkK217=AhYw)Y+Hd*1iGXT2YKKlXm&{mlEh_e<|r-fz6$dcXJn;7tvt1vSC+U`B9# zP#eq)ZU}A+>VlhsS;5UgeQ-R5O8AX%Z{qsIS;6a*cL(UxCJh^yE@zmnb;%UXxi!Ufv6kk|8qj+ZVtm4_lbBe=@FDjl} zd@+4=bn#{Ucbw08pH~-h^u7h2rsMx7OrO1?w`Jwdd+wYX=Ro+I@Tdv>)sVLzhNp%@ z!_zR8eqAQ6weJq!5}X^B{2b>CXx}%(Z-w6u_k`aGzgypt7Mb1)Z#J>s9$XQ=fVW7!&^g07 zldnU#p%-rVKkI+a|GdA$|AOy_i7=ped_RGAJf7l=D4tiG7+eut8C(@i3a$=bQhaG~ zoHL&L$0j;g@cw4>srbrZdGM;>)xm25qB`dnzZ&ccz7~8v_(rfB`vpba9o@oRY4&-! z3yYuhwt7!_PkW!@qamO6p7B2BY<52Ge8PF0w`V-zJn8%(@oZvW;)jVJC4QXPpZG~) zX5xm#jfuL%O^I2Fn-lekk;RLPmlQ8Gx~)3;Y2pd*K;lX7v)-8ExBRiiZ+UyX?|OT^ zA9(w`A9?$|pLz$pUw8+-UwenV-+70<%Zis5tBO|_-xb^+d?wf)O!BYxuko+-C;R{M zUhZF0{A}>K;Pb(b;0wVQgD(X;gKLYEi!U!e9b8wOT0A%SyLX-c3cuQ);@|JjDCV5& zi|-EB2Hinz@eF@v@w(uK;#7Z{U*k{rXZY9qwf;>12LDFC&cDf@<=^br`?vTv7VC;H z49*B{D!#M$uHya0ole3(GZ+?p!TX~3?&8|wdy4NZzOT5h_(1W&;`@tV3Dy@sSo~1& zk>aM}$BLgQK2bc|KgS>LZ!JFNea!p1{|&#^`K$L-@o(N{@8jNX|C{~`{T<#5f{Ngy z-W=!Y;-`w-trpzkfXY}Yh=D*|Il??o(f094MKiNOU zKh+=V|0@v$e@y%>F*>+B7!_0oJJGJU1rx%LxtraOyPt3$cel7txKFzGd++wvdhhYx z>%Grg=RM$E>rM7v?p^1-!mIYCcvHO>dFOgB_C|Q;c`xx^>Q#Eny;pg!_Fm(KUeUYH zd#$&^d!6@s?+xBc?~UG@yf>RsN$ow@@5$s=qwn8vc01p6zU6$|+2ef2`L6SO_ptj1 z_mA$M+#~Lv-M_dmcdv6_;a0m-+^Oy~x5l0B&Ty}HYu%ad4epI@ox8|e>}9-mufyx~ zvfdK!7H_sU$7}Fz^=|WS_vU) zd>>BkKpMT9hM6-llmDM|x4KWcPrILTx4EBopK%}b-tVpV9`ZimebC$BJ?y>AyTrTH z8{>`jF7qz;s=RUDcyEF?(YwOC(!0u=-87|AokScXC$o=BN+dT1*$0V183%f1Baq&X@huotFpKI4goZK|Aj* zQPk@aPxa9k&ijk`Vu2W~$wkRbvLl&GW|MDB-fY@JF}jQAC6*Sy;=Ho>swjQA@@4Jf z3zNk@F4q0|{{N!0!+A5g{Jcz_HxySE-}pS!{8;kQQA9mgqTmPG!F(r)?d5QCJ|J_*L6pZt?JLmT)dmN^m|Jf&Y$>-GM3;wUsU2~&W zNwhwuk$r3@w!Cow?=zpHlut(WGa6<1R`Q$4-N|nd;|b$>Ea3)!Nc=f*NiZ%L8N4L8 zs$XqCT6`=Tf?ngi%;a-Pl-tVWJQH@Ve}!?mGMVzz{#$T6%_!Ze=Ko6mzY^SO^y}+p zgkElZ?oI4-`Mjq$-21J2$gT0Fd3ul74@{bSeZ5PJ6>s9Z@Rj{!`h@Y@oH*4T>YnDF z?!JK62EEWd!#&d-=APxA?VjTfcVFb5>%Q0>;hyKd#C@q->7MUi;9lsCbVs=txfi>m z-IuwSkUMKa=SzlVzSJG#j&(0{FL$flaqf8cCU=&5vs>@p;?8#GxDCDG6jr|}Mvke8 z*}S2Xny!kOCQy1w9}HE5T~87OV#w!Dg@(YzI5RZm<{Z2M57na0DC! zi8FY|7#IddfRSJfmiELaX!f;C`0*aWtM9bh-u2M&TGz&VpVz;G}U zRDsE$7BqkbAOm{9a<0(IVQ>`ivbl;OpaKjB zm0&ce0+T>Br~?gP9!P-OcdS3l@M@kOe&;1S`R6uokQb8^LC<6>JAP!EUe@><0(IVQ>^U zXH$Mq0fvK0Fd9^WiC{9Q0d=4O%mXQq0R^xetN^RP8n6y*0Gq%Tunp`0yTBf>4;%o8 zz!7i^B+fwwPyvR6N-!FX0aaiUs0MYQ0n7ypKr6_C9uR_+U^Q3^)`N{;GuQ&Qf^A?s z*a>!nJzy``2lj&l;2<~z4ud1$C^!ZZ!;ujT1;fB_PzgqZF`x=e0+T@vs0H<)0n7s_ zkO2j-9IODVz#6a)Yyg|UX0Qcp1v|iQuovtH2f<-*6gV$J9#8>>gGw+Oi~$qDWKaX@ zKm(WuQXm5gU^!R;R)IBO9oPuAfNfwW*bVlA{oo)t42}ZlT=E9PKqVLrs=y>r4QfF> zmB zs0H<4E?59sK^F9Y5Ud2N!CJ5$Yyw-s4zLUC0sFuKa0na$&Uw@|r~t!3B^V8=z$8!& zYC!{-2T~vd3Sc={0ak%EU>(>1Hi0c*8`ufJAP!EUez><5RyQIL2kd4b`e5{w2_U=pYXwV)o%1q(nc z$budaf|X!3SPRyJjbJm_3buotU^mzc_Jf1qFgOYlmE;XZfYD$gs0MXlE?59sK^F9Y z5Ud2N!5Xj*YycadJTqw5nv=3 z115sWpa#@|1~3=Q11Zo7vY-cqU?o@$)_}EOJ=h2~gRNjY*a`N4ec%8%1df1Xz_}1P zz;G}URDnsL8q|V%Fb}kXELaX!fYo3v*aWtKZD0r31@?ji;4nA_hK{6+U?dm=CW6VJ z2GoJMAO*5uIamqSfc0P#*a~)l-C!R$2#x?}6lsHDU<4Qm#(;@nGN=J{U>;}%S%m5_1#Abqz#gy<8~}&F5pWD7E+RiL42%GyK^2$;szEKN2lGG*WIzuH!Ah_O ztOFasX0Q$H1be`Ka0na$$H0(_$p?%8Bf%Ij2~>kxP!HyT6v%)ASPoWzRbUNR2R49B zU<=p=c7R=AFE{`WgJU2unzDgmU<4Qms=#DW1M0zCumH4zELaX!f;C`0*aWtM9bh-u z2M&TGz%mXQq0R<3(RbVaH05*edUDd64uHep7)V@3{ecQF98`kQpbAU^)u0yCgSlVmV{489pG zBJ`Kd9`)OVd0}`)cxE^(JS#jqJSQ9;rh6+=#Vd7?TDR@1;A9UX4{KK48{Eh#=N&MCL{WEw4 zvAf^>iThLcXYK*_t=`+b)!y5^cX;pg)_CvoPU&|FbiQ|iccC}Z8|7W(UF?nae#P7L z^?RlF78CO4?l0V5x(D4~xxaRQgF=7RdBi*2JJs9ho#ribzvvG2KH{C_4f9^$o#CD7 z^|)V7eg(~c+_cueZM!5sQv7IfT38dlBCHOlgj2)Y!aKw1;f(P5ur@TA@o#2ix-qQ7 zbW>z=oLS+`VLi56!r9@RupzuP%oxAh!@1!d;SIgv?h5CHcZc_c^TP$WHHJ-LbC?R# zVN19$Yz^DOMd9M!u+IO1-&NtY|3~xxuNApH>LiVkv~54+>tzN^y?4)0>8uomf<(8au^26STyklM=_;K(fa=AHje>nL|llDQs!i>?UCr%27gw}Jj zk;`!|c4~}idQ#t>$VW0xF>X_nmnJVuj!RBVUX{Ei`SN6Sa$0g`az?T)*-~6sY%R9+ z8-YKXTvS|a+%8CtN{%LtwLVP^gki0E9H+g4rUh3P(^WzHqe80R8q^z#UN;vg3! zE=-I>FJ4isE>1Bm`^DtHj7}Z%|INs{)#%leiCYYp(t4Azzd5lmSRAwmZD`f)QHaIK z4;meNC|FKJmIgh+GW;^?L6we&FI)W6IU6&g8$o+^@_}IwsDi`9m(&R_}>Xu8@IP7LX*>>AVuPf{hmxevzvhd#UmErO*_IXwK>hLvTvDY5E z-xt0%TydOh?EBpO`tS{WDb;b__+L!p&Ecx>E#X`Li?N?uzW=*Jyy?GP?vef||04fl zf3*KH{}TVwNVm+VV<`IV$xlYQvj(5v1;2`H2ZArr4<9mm^nrwVd5Ec~TO)nCG^(}_ zCbK5ROqA|J$rUEf>&$UiP%llM*GDHek>eXo?AQ6`;XUUu zD?{K1hZBEETpU~$To}AG*c*O7s*5d2ebb6JP9~=FPV;9Yi6eoW?~rswf_6?`=j?K?+9hyVA6g#@oM`2Q4{Ac{u_)Js0>e2DLdeZcuHZWob$hsmSe{AbooZZf8inE#K5dn8D zy4UD8`>RX>TTD&<(3qd)|3`ak_O0Y|ADGu$)-}B)p)dpf9`Zlv-&S1eZwx*V++J+A zA`TeRI^OQzL73N@a1R9G2|_+Uuh;mCjQo?GYUiu|cY|}CNBvcN!R__ISbv*yp1&pW z$;8u%@A@Yvh9+K+*yn#V@mS*HiSPR-C4=PL;;(~$2X_?jD&Adm6N$u0rk-uSCnrx! z&MzM9t()g3&HqlQPLe%8ac*M40McCGygsoi@s7liU|Qmx{(|C%5|1RVOdRol@Bh&s zm-wsycYj&pHHm-vFHgK8@sRUce|_SEi3y2262I~f`C}8mrNoWJreZTKercjLkt*Jw zcu(Si#9x9R`#Hf~}F_uUUSzcA zx5oZE^PhXU!mO#=&cs8-4-~(IR&6eRytvc&e!Q$y40j3ww^t;W`LFW7iuuFEjZutE$q$nrU+_tM&H0@>(QR>Sy+-d|ca8hyV1J)n z{%KNDSjMX48%GpNDrOzF=%$jNHBi?~Ke}hQE^dsXSbf>%d!tV;eoGOb?7wF0mftOM)82Cxxq0-M1WuoY|r z+rbX76YK_i!G3TM90o_hF~CP0D-vJ`7z!%DFfbg90F_`gr~;EfHK+ykpaIMU^S}a- z0<9nevY-HZKnPZX)nF}H4>p2LU^CbPwt{V7JJ zj)G&rX`?(~2p9?~z%Vczi~yBjBp3~_$>;${OZmJQK_wUss=y>r z4QfF>mOTf_P8eUQp3ph& zO2dtjy)m-ueRJ~QeK5u!PDl0*8AkDd<5K+PHimyKjX4>erey^aZfR#OC5KdGSQ2p| z;?9VdMSK@wN9C_^v??8ySL)n-KPttOXXK-_s(MECT%&(+nk5H<5vS5=%I+1pb6x8t!)#?w`F)QDDSl4&8xYq!MLg><(C^bF5>YKPl$M8#8(*BOSqaP z2WSHMEDZFP(-g=}T1vWLT$QRw=|((0;t3H?jQ9$}X%gmDgie}-(j&yURnYd%4z3~uI=sP z!2~c7Tmh~GSMffbDliU=2NS?Va0R#$T;=pA0e-N_4>tM1CO_EZ2b=t0J!qxyS4BK2 zVrtu_qXh9c1rRGiu@V$3L9r5C7Ud6{{9%(nZ1RUq{;CA-jkrfyE zCvWV|IG6FilGSD<-%iOpx8bTUaipAj-qo$Qc zy!zik$hhV!37NxHc9ohpEc15$O8zT!7GJ$fJ%!x%ru%hp%=6G_AKs{^!$bf=m2=%N(;>mrs_GM4H!uI+)-lRP%XO7n%0Qri7nW1tqd zX%D8)Dtj%d$66!Zt2G)cAJt$FWta@~?W?);!cu?K_X2L^ivbPP;b7^jSL=Hl`f5v> zexUE{wDi;LHrlO&UZZ|JSUUf`ey6fXQ%gP0jyZCRM}k?DMPFX9qsw4&^zEtr;|?x= z-*|BkpHA&c&%0=0X@q(0om6trdblJSD^s*hj{0w5?9f;=1-o1-8Pznd#icQc@o%8- zFKG1WG9!_Csz#VfBa6mUJ04b|!5V{_vGcw^{Pk6f_$v$f-ce%U^fkt0Ozb#yje1HU zXU3d(>?lvu_Fn6wucWA6q#e@Yfy!{=JWkxNnkan>e|8L6N^UBlMjXklQKyo2P}`_p zIx(@f#2k+^8h5RWm13aUnMry!hE1!KpY5y1k93vPjq*|~eFI53+V5rPyEnEKG^X{f zH7lRymi{A-t%HHaslF-nAN2+wO9pBOjTCk^*O!ANd0z?Rme4mlU*kpo2PWYVCHJIs7h8E7ggHZO}**sTuY4}&SjL0XKVYl8oR&U#7CJC~X??6+gE_pgrzTxv{P zl+Wyg&yCUt)%-$wZnJ4UyAHgQ(%IFMYDTr76^Pbd$B(6wtG^to!8lgm^^V3qyB3jN z*>Ov&2)WCq^^$tFzO$#%Z18^3f6N=W*1>9^fBE~%)_2AC zKU4m`X`Z;8|M~c)m9Sb-J-ct;jMx3~8cAypyAHIg-*_C>O^TF0B;f`szF0mG%%N4bwcYQYyv_^02)}CAIU>^O<`Gs)vE) zid$V}*BqhUpB*Q)_HFIgUrX}#)z*P$vBBEaYEu7lsD%20WvQ*pcN@0;1}c}nP$pT` z?)|0GOs?D63y=#74%K4SnHQ!Q+xN_%UC&P5!%kE>if!BA+?@A@ru2) zCpz&=YqeVQw03q%SNn2(qf*}-wK8bDYs1IxQ?zy}?ZdUE)>p-@N1k}xS1oCT*6K;| zv@ftbe!B-yIqbTzl#X-L)YX-Z5u)6~FFRjqDekkn&G`dK)blMaD23jL`n%PV}Q)eu^ zXP8)aw6Jxl@k4#Wu8;M-Jgro8N>R!F&i3wj#*)tI``mXLjftihLk(dPgC* ztiF@a6;+$_*E;jIXWq+}>C9_^-=1&g{f=pK^f|3FHL|3?cO6fwn>~%? zcYzf1d|AqD3cAVnGDfb;cw<);80VNHTTWOs$99nF@#VS9tb`ZQQl*imjy6(@tM&Ag zY;|o-xyIbG+hw1DV39rk{^OKXiuW*68Mn3N3SEsE1&PgU8VVGeym?7{yfa|`P}i6* zOwZ{f0sQo(^9Fi}ewp=uSbfIQrt4q-#J%@Cz4%%0EyKfiy!G^jwT};d&BjS94*sa4 zpZ~YMdG)6+e|k~v8#iy+{M8w)Z-4OF@!x*@sZmqzJL#d?6@MOow&q9m1Zlcf9XiL< z`Epsg=Cro8GeT?riO&V%P_&7u=qY@~vArp?Y+7S;E44N8%a?tA^G~L~HZ}g$_dmAr zwt@8Oztba+(`#4;s7|4!jeQ{+?Ja^(xhhQr65RvsRYs5o&!q4)z^Y>{t|! zZ+-pZx$yaIdjJd#s;bDdjDf&ypo@o%8=_a7tr=W53(+q+c{ zI!P$4UbT|4buducw zzT2a7o&IO3YV(2GMDuw6^T@vSWOK9qz_#u{>1fteyJ*gi*J|Z4rF(YP>ziLZq6{XV zT1n>zstv8h?MQ63d7$)9)LvH02CfI~HuU9cyZf@eUHwKnZr4C+6O9G-WJ;?etwG}T zhaCsw5uCd`(}n4L>Xwl`nzw3s2R&a>xt-67&FIX{Y3o>+Nk=C?1J$R#$gBKp{=A1D zoAOi{1`4lrg1*SD)y=@M299Uf4qA7VVwKLv8`&eN_WRd>?a3N}2a|`Z^~hqSkH;Wu zi^r`}?G03(!Q#L+w7ym7|Fm@nmQU*jtMPUQ>RZabx>;(? z=hAnjGB#>^=~~}ZkFUGI%3I1&t=Bh|a@huJKYO01l08>_mG8Q34;!eyB!Tu*I+4|S zw~f|NZ`Rk!RnGo0sa$r!pe*kJ2P?e%=pd#;__K)O?Y64+n9Qn^noN4b_h z{~F@i)wnLcI5OqE;hsWE0cbAt3OuJys^`;xo^mHGH_x$kwnSUXO% zCX%fB4U~TQ_^Pzxz5d|oNh?cN5(m?tSg!}VCn2tr<28|M4*A>kgK2m@XBnPFxZJBn(BsB0AJKk+VE@$FtrdMHikJBu8DuBzHs-l~oGyv5q$ zami{&d`&>%bmH7s!{Qd1`5)zZ{C+Dw>5O&aKiz2!G~Sl>N5}WozGW=$0Xk7DjZUg% z?yfZ&SbiN~AicIRr$+VPH|F!*w+>W}=Ql5v&M-Bz4AxFl@acPf&Yn}`(0^TvSQ=?W ztO*(cbV6%SYfE!cB_XZOmd^$n;jBgsbRBJ={gURc(w?vHo=fA$K=q+%apNNPt%joKP1b(JpOlf~LTuv{uj`B+=tv+RnyuTChn6PItgspIm~ z`o1aH8c?5!N66z_e&D_HK>4cu?QUD+Q~#OaMExRe3485ga9K`Vf2DSf^H+_Q?jBK# zOBZ!D$(}|G+}fpD`Oix6-0d;AT+*TVN`~b8pO;M9TbfU`tF|jH^*>v4R>z*NB)WoD zy3#FOwPUZ^{Y3htb5fn)$2}%Ky;0q$Z3eo=WalEa=JBVweRIB^bN6YCA-Y#s<+5e8 zqjhO?(3+r=w6unZPop)8Cwp4cPwi;t=T)i;MJKY6`EPrx;E#&CqgxK zb(J|D1j=y*uCl8`ckDItMNsEv9^&a}%#{2(y9$+^EtP!b+k6}QIRCP^y5@Uphmxr* zbXM{)z0PJXL{_%4Gr6Xc$FNSue^k}@xs~Fv6RybfuPQ&Y{+dxer{Lt6YoC=_UHq)f zx80krY|B^P$!Gcc`{7*Z?5xZ*<`$+&*xZw7E*MsJX44&6E0T9^`ZWsQk-J`2PMaWziL4`s~>^&yLb6llPkH%28P*FgtBaovP#j zJh#l2Ch~0(EcFm*P9UZ#Gxj)wj52 zjK0`WSu5u_o;2h{u~h2=uZtv=ops7nw)^XWR%*(r9{JQ8?5_IwdoRmVD#@s_<$1%7 zw0(A@_4T9?Kf`0q+U+TiSi^Nk{k})ticKH(D&F##Tk((2x)n{0v`9~LIxAhkf6PX& z;(OcOiUPbGe}%cVV{u34(vCjin)B`ZT~$Q%)1&B>!8>0R+iM=;*-9`Mq(Bxd2P?r^ zumNlWTfla(3*5%@w0q(G;2<~z4ud1$C^!b35Ab{{r~q49cs3Ot4n}|m;#a~W!DuiB zRDp?L5||9O5~muj0kxnG)Pn{v7t8|-Knk>i49J24=mE(>1HiPY8A2Ih>Z%to05$4{8Lat5sFwCFd#jwfeX4BlK z61hr{%8s;o9{O}*T^S3WEHz^N?gwl}g=rrLM}n49j~8Rsk88?!23y0!8- zL?{naDt%>1jIuONB!;t~xihB>}XubeEb}h*FW5V z6)4%t+o4}Am1??AxVWwd4ZR?>tfR3Vb#LovE40zm`Cf2kOJ}Z9Wsm(>?QknonOeso z2-91(L9^%$^PIw{jK|g43DWJ;Ukm2(jJVrYHqfstYts2=wGPR*RVfBE%ix<+rG@tNeq-@ET`i<6qSr(H8Io9onZcz#~GF~3ZU(Row5+A^tm z9qB?#&&08;*zict>zQ=ryy=9{K|0SCXZ59I`;O#q!B5FDz_04$M8$U28L^j#VK?@D z;ArHoF!37V-~1G|8Yo^pezNOV?l+8eiFLIyjKm(N7rToy#INobwjTT3$W8un`1172 z#sEa zaJ5qr*HeEv?zy&aIy?HMbIz2${>%IMzx4XP{^jLR-e0}p#QynNef|5F^LID*_3tnL zgAJv!eWc9XKiuiJmBO7@X6_%(yS;CI{pI=LT_^UR(RgD2@7&whe`mk?9JivcfB$xU za%Erta`}JtCa2;UP`wY--jBT5sdy9&=HG?ivVQ*C`pNgUxAcwQzkdGx*1rDz0dA8XEscc= zQ~p!qtrNNF7w22vuP=DY zt+)ut|32~;7l^O)LU>)2mgXt>#c~YAyf6wM&r{`oFJ{ji=eMz}zTWVRTk&3?v||5q zdE|a_G+)RZ|DO2LC+EsM;^Uqv_jt_0=#P2MVX$?x=TyAcb+Wg*PBmCC2X1hk?YFp2 zCH5+?dI@H*Am=*uS?r6bnJKQbd8X@x)vmK1bHy~$z+OES^NpD6T<7rJuCxC(fM4Zg z?APK4F8~!Sgjq;Bvp|}3UkSgDd<%qKPr7e%o!zbE0S>>PG#(s zPVfV81e~(Pb4Gz`a2sd`A$R~h1-=J<3r>52yup=VCTIpd;7#Ct;4!cZ{1_YsXFcgT zmjY?1=lD*-DgR>lsm@U6H0N}u{43*UIcGcPIK%m_#JSFkoe_Lv;w5}#LMK5NI2Sr2 z+0|a;Tx{+ix`Z?3G3Rk ztVs{xh^WzRJu_2Nm)ZMZt0$T8c-dQKkMps?8anN2c~)b4x_aD|CeFA9*g>ko*ucmWwzPO zM%F%Q6H3W9@eKSx?(Bc9lJxf+JVo>HO*+@m8AYVE>RP9FbhTT1zS_!9#;TR6%Q#=k z$C8<_QFY7LRCQhJ%zV_+v`S8Akm*#Eif)zeY0h-zc?M|8w7Qb(^_kA5#!MeSlQ$n{6GLDx2L( z^+p}1p>uJ%!zN`@h#oPj9&eJ5YP%*!4d&utMuX>cWzE1~eJJ&88e&SSogF;qKiYt* zXmXs}d-GkCfL!d&cQ(lFjf>N_W+Q=&6R%(}Pyfv6%5%*jl}^Q;EPgmffnc*#4fxyz85;v%`$f)@{M3 zJ*RTF>ue}%b?#cCZ^907pRbQ=T&nj0Dx-@06hx z?g1;o{a_<_2J8Yq1%CnFHqSW&Tm&Y8*`NvZfR*4uunBAhJHQ@r7#sx^lyfw=2Aus_ z&-ul6WCFh??|tCwU_1B=Zb|%SlV3eyw`0GEdc6|Vf_b0^ydJCrkAWRv5BMoK0+OFW zPB0Q&2Ce}!z-(|2=mGBlo4^;rPk}=|qroI_1Gop|KnUIe9t4j8{njJrN}%80k?|Dr z)bE9Qa?g%*Wn+ND{H`G|Qu1gd^g@NEj=#U<5VYRH@4+j1!-b27q|Z9)TEm`Q|V|Xa{{-fgDIGmwX&xq`rv4Dw8#+5Pt?5j5!uUBIjoEx_CuzOZt?9~UsF^}K zsFlN(boqPP5`KgU5)9{5H?*bZJZymlT zpGl{)&IkOubYpkAziK+8-04~@9q0Z~tTPnBK0Q2}TnNedu{fQg7qpr?6#`$4nC7*l z>Lj;2H%^~DYkFP$&dAkKd7@dB5~gjBiyR^qa(+!u(q+5InU9f6=jTkj$y~6=5$|m4 zVrOUUfAm<+<_f(DpJDu?`Zh}$wxcz-F>J=NywaK0+0d9@d{esJRO7uRdo(I`X3|mM z^Qo2cp1srkf7*K=__~Izef*>if?R?kC=Lw`TK4(>Z=XNasGu~o2#QvdN=e&jQ-UI` zA}E3)DAH;xD1su~A_&S2f+8q_a)TlWg1Uas+BvJ4ob0pr>igdJ^L@YH-yNoV&g^GD zYt5ROHEU*{B-E!fr{iS+eiC~I+}N4u1KyYv;YB2zmSZ~Vk{ZmMH3mN%j`wMN@7N6L z_vBs2)V|*DH369pyR}iXN~!BdRZN>b>X`9IINlt*XAef%%&DNI1P-Og+#HYP;o@6>6$V3=+{EYMP6Y`FcnZ|FMDk`0YS2i%#l+w{N z@iX(KvmEalS{XlQF#$h9KWet2Fa0q6aJr*-_}-9hHtcbSvDTU0n!m;IGcf+}!;Ul( zd;Kv8NswbS&F{3g3)9b)QP?6?Oq*e7>{!>^<1=PsP*Cf?Q$E8tz;1ui`a`Wqx_|Pk zH)M>#9;1wE51li0DyD_Q;Wuo3TxsthyGLD>j9xD?JUBgqgAb#OMS{e_0xud?Gh$fk zTh!bmT zMu77F=s)#G_MW}bHA4-*a|Sk;A~h9~ilF z;hsRIHocBa_uoUN`?)X**@tb0;-)#BK_8UFpZUtS_;czt^?vGSJAAtP%=3TZO79)2 zsbl_+rJS^>S0!iK^nXm{{|Uj9&%hV!rk+_g?X0uQr_Y#KaSnESbIv`l>ii3OrHwjt zbirX`4lg|7$fL#{eayI`V~-m@;rJ6yEI#Sv{|RmW7jdQ?9?2Cv?eK8^FKWbpLzVwG z21dr9%&fBa@ZD4_c$4OzKYyR3MOJ*$TUfHZ_d4&cj*V1GTwHBj8-RcA?ho#E_TC=w z@4SEYRwa_x$AtJ%N&Mr$zp-@v(%l_jEbUxMf8nHm+QfhH661+uu|OaD!D$~j9jAYA z)(7tXV0@bQcKgR2zd0PPi+i6W|4M#;bP~Dh?TnlzgA7a|uUmm|+bu0>vkyb^g8@*3nW zqtEhs$(5>SerI7i9IB{~OC0Hfc~w8k|g<+6vp#Pj_tm2;cSJHPbdDa650@CZ2apliq9#oO(6dTUsa9k zJd6q2D^T3;M7{)hQ>q`7*i>G#MPK>%tWD*_;_OZ3q8GN`RL<+(k;~OL*X_b(=jvy6 z>n&$K`^p~Ida1nR+t%0jc>e8U63(tWAFDX1;ei+Ln3iZe_0Rpj*!|jZyM1$M;+&h` zyJ_@xTU>L%Lw6>Ad$zvd+j%=)H*fxviD&h9R=n}o5qnoX|8`>LOC1Zps($70r*3Q* zwfeHNj~^bo=GTgjxreU)=-Q8eyW@{)AOy!{LEb9TM2=fRxM zUu^lk;G28a{`BiNpB{O^O>Z1l+WPYK+pT!8ez(u>9`m=-U9;!RyL`^MuM{3#eCYan zZVW|yO^sgbMiyy4`(PF>Np#MwMy`NF{DH~+l) zjJxKR89QG3bNq$3N0jdNS@Et@!*48#=M8)5v(-;UT$8W9AU^r{lb*Zy;qh~K{QK$g_r5#ink}EX z;j*3oD2V69mwy#nKK$!T8V-zKv~tP%)g^Psw0(4ZY|4dOwho(c-lczCKQDUy@8R7p zn6lq!SMy4JpDW)C&OiK?CdZ%eMb_06XYKKD=jWHN7#w+N!C{AP_4uuG0v{e6_M9{H ztzjR!zdNG#`Dv zXhpl(?xQ-VVAEWxc4(W*jtXzDZ*SQiKa+FXAmb10wxT?7LSMOHa$mVv>%%u6Jt&9v zoNd4-fX8%lw4=N>+*e<9YG1j|jh~MJrURII$fAAcdX$~u=W+!wTrNMhuk48QJ-Y#T z=4pfuTuwy$@HG?r%41LND>nxF%B#osmFJ$+SDu8nunxIO{c1)3YJVTbc}8CwHI&JZ zY#=+J?X++1MtKNy;PRwn`fOE!ws3td^x<+FT z`fT(y_gABWse|1Z(|T}UIa|@+f&OAlr@~pS=v=Mvw7@=eRzYKFH8|Ox<!ucvXiSg}bl+Qs-~XfNX%l`-Q`@XZ)|j4x8g*c#}@&z33eTBVfh75%e3eeJDL z>ksLxFT*%tn=DlD6O{TqjN45Z=+EViNy)p)fZB_7vnAfbELuq4Mpszky(pPR$bgn^P^RxL%{W@hVwJBq!St;i$wklA{9SWvV zDOW4y*71FE>l7U-FvnS+4T=tV${Z|H`XWb>JJH+sZ2P3XafUj zOtDEBbl`E`0e`}J1{KU|Wo#@^#=~l*?{bwstyRY7TBW@sl=f=zK3O%2-SW_0IwReP zdDo$|w@4WeRZ4qXlxHiTCqG-J*nGXB!%#(sI)x`ovDE~{=B8s1@+vPDka9~ zQOd;_OC0AkDbKc{%+J;+m;`Lacnx;oav|))Wru>Pzg00 z=xaLH%R#$};Aglz1a{zZv%jz04*PR`3HZ4@LDAm}pTPAc(4WiMus@e`(brsVLVvM7 zt*|-QFH>~bfIi~-YLvNM>%)EZPQ^Y6<=F*FS%V#zr&ZysQtVc*=v)On%c@tNEmv&Y z1-U#g8o|T-*-F27m1nD!XA6~nTm&9|wnfpoSkb2g&$6w?;#nSVMR=CWJ(w?CZbKWn zoPf>w*&^lH63lDHjKCP+a_9KId9)Gwa2p-5zVTTO9v-XpiqGkQK0H<@Dwr~5%s2Y` zo?Qp~Fwa;;~#6qu6sDI9Z<}%rEB2Rb*8uc31;DFlGbV$g+wROi*c8GuAT3tUt9+ zR;MDX7WH(X>4Y6>F{jvW#fqJSN_#boE7rMLDHni;pCvbODGB~JCK``4PU!5@!G?< z;?ggX{Z0oN;mC&mt8Xa(k`hl0Rjfm0Y$9VHjs-XTt4_oZ7#r z>X*oV(?LWyvSHfs2h1+GFX5XZ;RDxBLcX(wd_#nM40t zuw4RW!aI>u6ZHp;8M;q7T~cw0bRg8z7xIXY)=UZC0l=BXX{a_5@em(jtoX|%GCzXwUkfEgjgjTGX@_efF%AnF$$TW0-7<0>G; zxr8`gTkPb0hr9$3EW9E*>FY95~`4 zUr2hItw*%ZFpjX?9u)f}8mEL~9_H-_!UyJK9&Sr2j`_C74bm&!I!(`!++1YhvRe1K z9aem-AM2k^F0K2_XC;^0!R;jd%=L-1_ z1)ps~a5}~og!Kcs(VKyj*yTJ)J0P<_DEBbnByy{Sat{X|ptkdkafIc0f?~f!_M|4V-?7LN{Vq!KRRf>aF2Edz`?LlplDKMIQxnOhpPQ7( zy;vysc!iH*lmv2WBDoWgS*{iC1O-R!twv5w#CJ(jKg;m~%!$CVTr0ln6u#2N)`HxHZ=9Q{cBHN!pfD2YM?YD_e0apv z*N}dfn((FK2{%#5w?N28zk8hZv+B3YO!!jg3AOh$Q@bXs$Qrv5{;`#DDk+mYVTy=BywvMyI9FRLnwC&aQ*C(Kt)O-`&|jS5?l$e{cz3{ zGJGVyt5W&W;7SKRKA` z?%H&G&OR{VW+JEBkM~84B;0i-eC!7qPq+#pU#)}>m~&VOo9isxCp~hKSF>>gI{Z~6 zhl9?N20Q!O&HAI-NIm#>5x^>r#*G=SviA|&f9KdDdI9I+LNQLF_oL~*WM{@XO%c77 zjN2!P;j7sr#J8^yH%y2le@@9x?tZ;6TO6-7c6`HyeEC8g%j0YEv3?h_AKzy?_5&n8 zs5rKx9ggj2hhsb1;nA3+<=ktn8=atn8=atn8=atn8=atn8=a ztn8=atn4@6AzOb{oR$4loR$4loR$4loR$4loR$4loR$4loR$4v5!z41?Tcs9B^767 zKNV+XKNV+XKNV+XKNV+XKNV+XzXdSFU}R@HgP@+`d&VUMxP6iszM4Hke0<-kKUADm zf2g=TGl9uE6=&5SD$c4uRGd|Rs5qoJKf+1uM>vW72q&>0;UxCE95}Wg zUr{w6sW>Y;syHhb9)!@m&$j$)_eHFBxGcM6rJ)p!m9>;tg07M1x@qMfQP;plMq2jFiL&aJ3hl;c6 z4;5$CA1W^2%pl3Ss}#Ffz#N3LvKv23I4irUI4irUI4irUI4irUI4irUI4ip`?rJXB zTo>Bh=iAqC!RC4`?$bOva{37Xvw- zwwoP}?PiB#yV>E`Zgx1fn;nkrW`|?DS>bA7EE=Z?GovNzXq*y`dH8Df2;n4lCY;31 zgp=5ra1uKcPGV=mN$gCx&9So+_;hJ=?acka_BP`s{TRpgw!^W#?Qm>wI~?2F4#)Pk z!?C^1aMz=f+soHwwoP}?PiB#yIJ9GFf*1(-HnQ!O>S?h zA{^U!Q>96PaBOFj+ncHg$9CRSX;L5@+u7vyrYgd*oi|mQ6bQ$5Ho3j2ig0Y_O_e5v zMX0mt2Y!Tb68jNOVn4!3>_<3>{Rk(qAK@hSBb>y3Hv=~qIR`miB7e#_XF3q-33m&! zgpYAf;L|1IyA4^w$GAi~GSsVlP8-}}i~H)W2h|T2<(qJi+TpaokbaD_>yKN3mGCjn zj;~J0$2dE_dLbXigN;=E>XYTi7XkXj7y{=L%qu9w87nl`;u|M zxP*|;&Mr%na*J&E7-uJ!aZUlB#NQL&z7|}3i*UpEgT<9_5`RxPiN7bD#NQK6;_nG3 z@%MKFCrS56K)|dJ;_egT8icreg}D2LxMjde=I`<(&We`i@5&@DVF6?uk7vG`Jwkl@ zCU4l`cs$$Tcs$$Tcs$$Tcs$$Tcs$$Tcs$$TsNbAP+n8N8*Ul`D?QO!?E4$aBMd_9NWzf$9A*BvEA%&Y&Sa`+sz7h zJB%e6r;M{(e;+b4zDeCGlRC4i$IL2C>K-?#Gpl;StkR^e$)wJ#>Pb|R{j3tr^G0L| z?kOuG<=)?wvQ=@l)lKEz(@NQ@_$+QxJM7{s#w9Gs$S#a?3UF5Am>(xTp66U=b|u^} zvl}UOgyVUha;x7*!tp%scO&Hk;dq{>-0Js{a6HfZ-AMUBIG*PzxB7i-#wUsW2q&>0 z;UxAWoWy>Flh}`N68jNOVn4!3?DrgS68jNOVn4!3>_<3>{Rk(qAK@hSBb>y3gp=6s zdEoXzwo8PQ*pF}$`w>oJKf+1uM>vW72q&>0;UxBZ2Drh8zC}1me-KX6AB2Xdr za&g=70y6PAk<%rT%eX{35b7Dn~L&1I~?213fF?R@_oLV*^h7% z`w>oJKf>iD1=-1!*pK)m_9L9ceuR_Q??vDSBPWp4C7S1i<971Z46owY-gY>)w;hh{ zZHHrf+u_*Wb~v`T9ggj7hqJRE+szKgcC*8=-Ry8|H#;2L%?`(Qv%|67>~J(roo2>O z*3me937L8LYW4`>Bz7j8#Lk41*qLw=I}>hyWJ-4Jkl2~{BzAt;kZAwU8XLWsfpBbR zt~0w5j_quApX&(6cIG;>E8*DAX7{;{aBOF;GrJOw?QC|R>j;<6A1to_z&)#eaaR4J;;i~b#aZ=> zinHn$6=&5iD$c53RGd}6yrJ07%x+vqI4irUI4irUI4irUI4irUI4irUI4irUI4ip` zt_=mNai`)W_9H%t{Rk(qAK@hSBb>y3gp=5ha1#5y3EW_0tJH&=Zy`%?Z(9*5_tq+9 ztKvIWH08NM3OnkO;Rkat3lbTqf?R zd_(X#2iYvCeCcq+_YpE(xy^Jeu6Qy7{O=|EYdRQ>HQ3ndV+<^;f8%@#;h-ze;1m zEHN&Dn^w55llRRyxQ_OD-|z>U>jvDH=*PGO@K*YLZzGRx=OKS9#C<2k{RP|s$f`dv zdz5ijeq&2K_=k{>advz^3i%jk$M=Jfk8yTN4ASMXpR$({Hk3%NjQ>g*IvRA#)^;DHRiKg z7lwIVBfMFnm|<%Hj^u7Dz!Bfyk~mxp zJ#iV3h;Mr#j{YEZI{lfL;*z0BKC)jrJjvaL6ceQE|KLomB(=+S!hYKUIO;RA@y-fR z|L*v2#_c5R-yss*)(*$60$d(&I}35U2ywduXXj7Jj=KqQxkB6?z)Aeop1?`^cW>a_ z&@+MTO3mS51+FW1KUCK;~o>fR6ODG zQ~8|cd=2UN6g=@A06s}NP>4GSIEXg(=jqO2dT^g{gr)OAGkS^-7)Nm(`3kf6j@rRE z;v*bgQxo$s59^tVV?O2~oE2Y$?qk6`5LdHxljZV##;3|<9G^cQ1b|t4={ag|F0P~( z;mq_Kk;E|%^P+k{B0lC}-c%6t(YY<@m9Bru2E<1g2@cD!2uJ6(625JPIEs%Yd~|Lr z!O^*`1V{Fx{v!LC^&73XY(EK(>?gsI{UkWDp9Dwtliz}9BQx&+94d&9d6;(q z4w#Wb{T>kNM|=|fh)<&5A>iY<6OWkg9eYr}IXJeP72ktOd#!LJ_utLO^0?ip{l@Lx zTpa6Z#z*aCzI5XyRqnro&!^Zg-MK(J6n+%Sv0l7iNW~M5__#iue$1!hOy?W;{6hU! z3H2jBRcft3sbHnm-tj%I{mzgepdbQh@xL=Kd@+$8wMZAaw4bW zn}B;w;8SsC`b_{PBIJ8g!UwrJ_*A=8qb@a3JDviciZj!X*0-3#M;Lxa~bh@d>_<~1afMk_7aZUX@z?RHwj0!v%(P{-)H&hh0ray? z2-uGl;OKnvu+6}+JyOpNSf6$jh|kV`gew%vJp#CXa-A%#?@D}xlgK>^I3CM1zGy#{ znrNTQIPw>S%Si>{GvSU_^key{P}1)OknlJmoY{CLe?@%E!|hJT$2`nC00+Kfg!;7z z^&>use#9ryZyfj}{lPf9{x}wV5N+D8Y@Z$!7)RK2iTd|Aq5WDF`*A$U?Pq@K-|<4e z*Mxi%gnX|{_@LB;l(zlGIKrk&)NjS$Gh6G`XJ}sj{|$GN(9Vpr zv-8OcAI)Pke@b>{9P#mdN3ma`ej^<7q#F;+$2^2H)06qO$9=1FGg5-&<|cX4ofqdN zajaLm^GVi^^-9Ob`u$h<% z>8D)sgNoZ3b$Dz*qW&k`5L|PR?f4jH#dn&Spj63-nncj(9Xoi zaU{o;sm-8qP$HB|YnNoa5T8WunL@cA3gr@?L~fZ-?mD4d;*-doxfwXgIQU$s-!!3I z!b#+QB$Ru$P%hylazByC#dt0k$|amcZii6rbfH|rN#uSilsiKxmv9ofp9$rjBjo#H zGx#L)XqHg!mqNM3Cy_f_DEFU2xx^=tJ4YzDQz)1CBy!K+44hU;wZ*6!(9$OKpjrxbbLLyw-F!}XU0dke>dM1N&ONQ`dxr~eBs!l}qiA;_gY|OPKJ{ zzH!T>e$^=RelXQOBzG$lT&kYLC&gu@;Y)yn+f97;p&i^GR{I&kaer9tf45cogWF4Z z>K{(+C_EtK+io-XB<*-m*j~a(+Pl3_zek09LpFm?(%w}o+7De41vdysXM^OE z($Ag=O|0xfKVSA5b)HS4b?J2>?kxe1 zd`X)S_oe_xKOZN>y$wFed^=D$--u7*57q()O3Os?#(!`FO+GxOO4# zec&YH>LB5`B0kBu`q%`=aU@%k;<_({`Vmedmv9_Eq{?Ht*g_a`IW9w3qlK?d=q{mvEBy5>C?I zkg&bPCuuM7N!t6hu)Tznw3l#__C|#5B|b@eiBHnr4MP2*Lj8zOVwazUatnlViBBT; z+s(j9`Yk5Z?|Y$K!b#*NgmSxtatSAqJ4z_`2ccZTN#q_Xl>4JlF5x6{M+@ctBIFyh z8GMrQ{F_kj5kk4dCz1QBQ10PExx^=t`@2x?kwUq|Cz1Q7Q0~z}xx^=t`-f2OQ9`-I zCy~2Mh`U>eyGn?=Qi!`zh+8DYT`R<0FT~v>#N8^y-6q5>6ymNE;%bGsn}xVKA?|h| z?rI_K8X@imA?_9-?j<3vTZpR^;{FAkBCpo7koaCIEa84_s$$Ny8 zoKq7{a!yS+$vHLQB#3xzz zw*ZcsLj9I{E`%y0(K#^V2%8Q^@6Q=Wd?S#}lFCOoI)5@7H!68Ap8SaMTXQZH|8F+MCLk4oB_XQE9K0ekv}V{YWn3?ApONyZ&Vy@k!c2 zxODBH_U@##*Qy;VE*&4WmvK_Lgi9wkRljuYO_iGtM|@jCpu}&CQ~ZX8=ghuWK;OOJ zO2}6v;e(v5$smHXjS!bD#QjZ(+g^yZ%9nN=d3B<&#NBb+4V3URvuCmC1A zOU41Xb{F!UAmKwp_Yk&Yr~pSH$)3Owl(NGUJJFizTz&CxHN-1Zc?>Dod4!TN1Zd(-vrf3>|< z`UPMRvWcBt7-u)G7)N{(xpsD8KEheqg>fV|UB6L(>;(W}h>zAbx~3-TU&axZaCA*g z%*Q;;n~GyT<{_LF-}bm~)n4K!{c@8$>Go%NNgV5y&VH;P>y?g=+iS=7z9N^f#Ajw_ z;@g`5b_pH2uKGsBtjg}|2@XQ%2%?Kn}1i}^jjmTVK_Y5x`$@)b+?z#jph#LiLR=;t`-_s6D7 zWWU(I8J93=Z>oH<-^ogQ*=_@H;ED_RPLl9Jz$hW#DGFa||FWLcjzfif6NP-E!6!)t zLfm0O+!!HF7vc^F4o!AAEgI8&%ayjnijVap3}uRw%w9hdt{4Exyev`1Y1%jfd?yL{N`-tUQv(F) z6rtRyirlpE2Dl~)`OcK^LI2Z)eA9${rwaMXBz)ky9vS~zp5N2_xIu`!o5%!dTi}Ag z(RUisrEc6<1{|8=NTdUyp7eW5hv*VIJ0Jv z-<>7kqw&l*2_JtiC^wB<`Z*WkBi)J54#(dMvcvKBg6weoy&yYWwopI*UXUH%b^^XC z;W#*7fOBH8y+GK%jI--s!tuBxtl9W$M?K>R!x_bXiN+t{B=HO3*uGZr3*lHVK9}hy z6dzbW)+-$!>u1MD`wx~&SmHCY3-MhD{UmYDSxFq(+A2PnE95&{!UtLB0w+ncg}6CF zT%{0qo)C8taCXohH1uL2?h-q)q|vH{xOqa{d?Bt1b3JujrH+3Z_upWE63%Q~F`jVm zCfj3oaYHV};nm12KlK^nYlK{m*IE7m95BSkJj^=)m*is}<{f|o-(CtI{~Xr<94Zzo zb|D1%4(@bP$0)t}p&gMt@)++RG8Qt^cQO2`)$^7WXsm-XT+^+%!7 zUe=TQMa69t@{JYpy$5p1xVlL)kAR`JNce6R^3mQ*!gq_1??WM9osjP{g%2ioIFVDw zRS)WJGvQ0c6K+eTf9bwiA{*bX@TJ88qbYneo~lg)tB}B=hJUVLPS>}<8Z-651qIEh@^Y)R~VuTU=GByzVA z%3UgyOE`(#ErfFGg>nfekvmu@cZpCg;Usc1g>pX;$|amct|pY*A(TrviCmXZ?x#Yz zgpXk=zFmcU6BNGGxQX>7|FVma zZ@iE%7n~A5IWsBOERNlzA27QK`6?uQ;M(1U4^{mV*@b@hL25htf$)KFLy@Ts5TEvZ zp5D9B?>=B0VJW93dY?kS`#^%D-)TVaCDAQu6P=e5j^5o!aP(eMf}{765*)pkl;Frd z5*)pkl;G&Sq#e!)4EF<%H&pdY)E`b{#&N&&1K|VV_W3X1tmN)19=nxUmDyCseH~p9xf5zuvES@xaU&&63o(f zCBA)9`O@GnRQNPJSB;#Si0?beJO}O#@bS8VN7AnQKMUm^rnH0fBkt5h{^cSQzEuBA z?dVe4!F*=8i-mkY2>Irj@C|4OD!LWEwEh&hOHKI9+VP9RXVu;XLcU*xdX}Fd;WOcG zMCSQJ>lfiu`-5<|Dty$xgyZKJPq;gixN1On9FU%BVjR~qj^lX767CKmAK@f?za{yo zPgpLGFI6t%s!^HRP8IjNkWa<2Jhq$4*OTNU`>J+U`-SW>1&!r+gZY?;uY@~8h?~yF z8+%Z0deEbI~hH`$-`n=OZ5)Spg z)xFB|D@sqFHe>2cJoCRN4KjYN!Rc^R=R&C?VZ;b(yLIPxl zV{1(8T9oQ1Wjg2`3a7RynMSO`pS8hs>T!Z&yyJBIdzj-ml#XzW!+Lo-uE#jWpiJrM z%6qo1=9u9)6KvBQ<&IJ?&u~n2%*3;2 z85j+|U2}wxy^b>sKR*_Kv&)Rh4-({VPwb2|ms z65OpYBvd79rUPB!$O9M4E&ygW(4U|oK8a`AKq7u&^046_v^JJgA6L4o1B=*U1L$?63A1nd1_F$vM_}OfH z6FS4NO{MY74DgjJtxnaCv^W@TF2{eArs7m30~(gX()1)*uL3rrmYxYqRRS}xj@mQD zXoVYkxS*92 z{QT0{!{f2PZKF?~J-c-J8Rh3YK`>)>boiWEGs3f{l$B1OJbUEyX;Ws+oIP`D<;W>B zr-vuco__GTuHnwiw)EW6a%VaH8y!A*_7OAA zoq2ZYtl`c%(?(61QaT%Ln>x9CcIj~EA)9#gL()sp59z0qe#oZA;c@*Cwi`as0QkQx zUGYoBYK+IQNo+Pe?^@p-zI%L6`quc~@OAjU^Zn+_@NehO^~d}({d4`7`S10=>;J@G5I8C@ zJy03=I?xpu6dV@J4~`5L1g{A$3N8+2hjs|<9@;;2Q0T(Y{7_wJX(%_mdn6Poiku#) zkL;y4=#T2p=+mR0MmwY1#CC|a#~zJ;PYZz)KgWs7&e~yGkM@)MEYDKUJ)Va>UwD4^ zWO}#rj`Nm!ul3&R{mVPVcd+kz-?KiK|K`B6fl0yT!7D;9hu#Xchw>r^MHWT^dQ30T z&(=TGyYyY7K@-c@aHw zR%B*mQRLppLy@(SuOeIM`|G9p1^Ns6NBYUOni0HA=lcQ6jmqo9QE{fh3ZHm4a zeJ%P`^ylaw(Jf;`VtdAh#{w}uHY#>p?8I1EY5}5ovSU>Zq^oS_h_$bZ)hKC9ok>ox2|7Y z^W1l$%~yMF^xWrJ_wXT+IQnsJq&9L#WNGBj$i>md=o``RqKC#V zi(MaE9Cu8Dt{M0qpLVELtepotzpZ_xZST6$^^&X2^}XvE&)c4lJfC~M@_g?Z?=ALr z`hN8t><{}d_Fv_{*}vT1h?(<)|4)B*VCTTTfnx(F1XG(9v6?XC`87P>lgBWB^9p%tO~Ll1|Z3_TNS3AKja z480fnB(y&Cb?C>?uc1FfTZFd>Zy(ML?-?EzJ}9h({oz=6bohwyvEdWK6T>CpY2lgS z^TKn(^TSt#uM6K4z9YOe+z@WWEcko)h47m2>*069ABH~-e--{N+#TK+&WLOk**-EP zvU_CT$neNWjFvF$TNpVyGCp!jWHRQm#>C?v6A>UWlxTd=c3Y`3rM5s*l!> z(8uY=>l5`U`dRupdX;{Oez|_FezSh3ejmI?6a2>-{Vn}7{YQOJbld2@m`iJ;zeh7- z=ftjzJsHD*s=&`ati8%oqlh$9iA$HvAiedUL-y)P62ZRxOdQY*Y=11-NRk# zo&lfQ3#W8e<&J>KWN>%4FKzxRI-=m>ln_%$#b9`cOfdBJ(XT|z@c`RJwd zLNA0~3B41V8a_LGQTX=oL$Kxq%&Jn%s5c|;MbT^QG{t7ducNtD>u@Z@<#_EZ?H26;?FDU} z)~)U8I>>d5>qOUNSB>j-*YmDo_hk3k?n~VD?myiHp3^)tJU4kBftSei?&EFrPR4wz z^wq*Ytnt0;)BR`q-}0}Ax6BIc9vBgb1&RV^U=_GLP#3r_@Jisrz_)?F0y_lniDc^w z^$Vlh#g2-##y+P0sCPIP;4(}*N;^s0!adBbyGOf^au>NLxQpHM-1oR&glBGZuXVS( z*SR~~>)oAhw4K4}p9XdRGI>zf;(VgRtM*N*{=uitExmtT(Td#esUGH}J ze7=w`>Ko-d48HJapT|EQKIJukZeUDsZt$JpN5Rj6TZVQH1w%)K#)VD^ogF#{v+9b_ zEulL?cN;V6iO{p57eoIDy&YN?`aJYas5`V}c&~6?cx2cUj>5xS9lkrfI@}pv92pV6 zK7L2s(cHVY+F3h93u-6BYd34HSkDh~MbRVoyWV$YyLWW&4$CZdKLWe_)BT-0>^a7B zrROfs{e~Tec=z;9^38xBti>vr=O5|!`N#QZ_%HQe<6i+k^R)kE|NH(<|5kxB1J4Iv z3C2RBp?y*4!O&5W5`CtArM^U8i8+)V&5ObyZM}W7mFCh;(-vrrSUtM5Yh26SkGo$* zpSwl46QG4^K!YvF?uk+&irN6Pg|y;{Fc-y`adPK$O#2gSFEJ34yLcplLT zTt%*rU0=F>bY&n?S?2!OJ=OD)zuiAJToj%VE`~3f1aDLpF2_1l8LkSS5`QHAbKKG8 za8#iw54kGbRamuN2z(RxEwCK(tG7?O&?`NmeZq%_OE*0^H(VWF5UvTo6>bl&3wMOq zhmVXLAE}6(hc%!YzG->njYx)`g_)P557Be=p}JGg(`P{YDt#_m@C(@vJA$G3cZGJd zdxB@WXRhZC&pRHscLt65oD5?Ry&M*8)_&CXam8FmyH0RTbe-Y4#ns|^)%BgL$bGy! z=9%QFg@>y1F80=Ymw6k!D`DkT-X`yAZ?m_>JJY|=|9+?=lph@t)uP^LFserr(Sm4U zbZoRJIw4vdofw@IEs2&z%cB+1%4k(|ZnQeOAX*b$7_CLLQ5RhtttVZb8HPXj-2JtC zlBdK|<|+47c-lRmcyw>VTi`A9j)mMR-&|j{Z-KAIx6pUHZ>cZSpXJZ?=lF*p26P9u z!wX^aBb*u$B(ehG|!7Zz0~>sGaIM(^c+T=(^YSpzB3g=Tq0$SXFym zJ0NmSC5!)>DtnxH@R(qP^f!BCiF;hnQ z3Vri^b-u;Edfzf%gYRGdodbu!SAC3_b*o@ba8ht|=!Ee7;jZw{SpPF3+eCJV>=W5P z5{V=tCqyPjW<@TD%#U0Vxdsuz-H`_(Peh)Jyc~Hg@=oNp$S(RL`pbHo{+_;VbVzh0 zEWJ3oEc#*ev*eT*pMTkUVI9bJ36_Hm7H`CMaMM`0YD z>?(6rx#qhrcRk{I!u71{1=s8F9pAZra{Ym*KilneABf2RRK)!=+?DQ2-M1nNT;aaY z-2_kjuKNRwg74kGy8m#G^!Q=N0?&Aii0Pg=p7XI2xYctvR6MG@3y{D-)!I2zMFk_`X2GU;QPSm^dIe?FE7 z@>_4f|9%$y9{zX#kQ*L&4C0%Kp&Jm(EQQB?6)WfaAxC&i#4WCHID8ypxyj)(F~2Xw z%)T6P%2Gt>jfhO%F=qD<;a||lTSNkpXk<*}xJYs2G{mnJk#i%rM(#rF{*TCKk*^~^ zMt()?x0SxVzK6cIeu(bFUgA*wIK3Fr$Yewyi}mID1BgMM)SIyaf39!Pdvr&1C_L%N zs3#hY9u_@1dIDzTRLsWN(Tk(=F)o%zABa8@T^(H$ZH>Mc{TOlox6!QFc8L4;i0vCY zBo>PmV5K}hHZfKbJ1bUc#Qs;su8rLqTN1lJ_HgX)v6k5TvCi0cvEO2U#&(Ja;+Mx4 z#&3)_#2<{WiaYRSj$E9BP0%K4XJ}o29foa;q36vSo`(xkw)zN31Z?mB183jeT1IS57UoAY+J0KhE?Puy#{g8?Rvd_ zzy1)`;}_vi*6JPldc70ls!Q+2*xIP?865`Ce>i;o9E_*Ov2%PAe&*BY7O`z&JHyNP zFn-3w#>GyGorN8-;S{VUjF_3BVhkg{tEy3{(1g7{}P-Ryy}13|Diu4uytUUz|g?3fGZFR z!~;hJ#sy9ZoQ~*WF?_*;fmMO0u+MA_WCr&R<^@Lt-NA5hbnpmxhLeJ)!aFQ9&K8yg z?}2xCCb%KEMQ9iF2<>|cLWS6wP7TdNRCYCXdaq!I_i5-0MD#**aFnA@PC}eD4pG1zuD`q1xYoKpbZv0`h8dUVcDp0!ne*J2xvzCE zMeOyd`%Cu^?w{S;Vvf0thX!`H36z>S*7wSnDr?*S^lT0(0tV`0bZ5 zul|YM^^d+^eB1c<^dE>F>=^j*Qp~5B{%f(@Ug~e~uY^bUpdViiv?0Rl4E%yqldRxz z=&K8`zqvQqgg$ycxLs(^(6G>O^v{W*Q$v$6UlxR}3SAqz4RP~Rp=RtuzX|;g51tv` zBfL*|Kg^et5ZTQL&kA20z9xKQ_?GZpSe+k2Z1H^frSRM6sgJ^+g?|YD5#A<}8`(Q@ z0CtrpM_$Gn{5M2HdhAB*efE!E5r2;&LWiR|!;uAB?}YP_W3+PZU)uAo`V(g#XN1m$?stYV zuumQmc7`L^9UqPL=Irpf$zAZXhY&QIWs?I>-WcAfUUwvB7|+yp45jX=l9%oror<=YiDa0U_HJPEAkR;x%LFs<5tAH?_xjx4bE`?&@x=x zyN0;-b`5j6T|w6<*Wrloid`kHX|75m!n@w^6iZz9xE?j)yjNUXxpUmP?gQLD#Kz;? z}1&gV2=lJ-l2%|PV!7atT)?p9&CRV ztbY&u$fKUma5A_nPTWR$PxhXU{dE;iTW^NfxX1el{KmW9&%9rHd%XWL*5x6-z2QX; z^!a^Z-#FiCI5)n^*M<{g!1EuD^OvSj8=|?#V?63#aZJ& z;1fQlzG=?D`znXyLBv1@x)QDhuEFjh?$Z$+FT=X`s`~)grqVOd<7lHdOAbe;tJ@g; z4tF*zKEz$=slpzw+Or6&*0R7#tXiwF+ieZ3#ZGs9U<1zaHev5grTWyZ7PL*hf@dGQf(uQ4L&Y;|J1Bwik`jL(fPKy0`uzBs-tz7o;l>Uayh zz}on__67BF+}o@~z$&rnaEXN1QKzfyoxiV2>H*x8n&59eZy zT!S|&l`qDQd?j|{tFaSr#TnB&?|SbBZ?|_N=0Ub^h;OLR>C5+NzMwCG-DVLY)k!!} zukcl&rzu*k!``#O*ND}%8PQT3R@V++r>_gACl2hab1+++m@OJ+O9Hc{$X|@LwhZx8 zmA~3wwRgd+y(ck26_OHS0X~!vdr@zbJ<97tI0y%-)fHROE&;r3gB2b9)xZ=R1 zKv|#y^Q$^gV???2h;ke8W}_LWGHp1M>A-s373c{#f?3!D=LVg4d!q$|!9=hSr_ROL z6_*7oaPC}ep%a$Tq%?@k&q!EI4hik6K7{QALq@%Z~|v# zML6M^gczU#QCc<5W@^KAh}Gzvxe4bBYjC#Ej=fwbcI-W2M6gE?P|Szm{FUyqsJfVtm@+24fu z-wY4120ow-UZ5R*paY(u6TYBplaI~BjHSig=@EUdS8?;YtfbVF8_h^FuXod$_GvJiDcZWkKN)At^ zCks9$2VNx?e#HsTk`Lda!Mg;LC((uQF-7n)#qcweHl3mIs<6OQ1D{h1uTuxVQxDJ6 z0N>L%;9P1g_QdOqv+PdzqAqx&9{3}NH`AL1pOgcylncM)G>v%1dW+ztis7dw!Bdr` zoPyWDXIY&ku7MA0+jLUC-rEUZ)&+0Y1Apf5W%{z<({kX|at*(h2hTPFzRe5oro+D# zz{8D&kDCB5HxYiW1fH%OzOEA9uJ6>a*0)GGb6W}Dw+h~GHT+)-JYXw);97XWb?}4h z;R!du7k0xNZiGL~RL&ZQ!Y}3-afIgg!aM5lj|K3MW8otwz)MbqpDcl=EQhbGgtwdv zf4Kl2b0K`@B6!Wk@SDqwol2vB6};za_|F!2&{p`+weX_r;78ZPlWu@7?S?nq2!EOh zkD3jiIs{&IDEw+3JnIPfRxiA(4*yyJ4?7kx)3$=AZ~C3GvSf5;gg5J zD-VTV&Vy$j0pIL}ch=#b3*e#0!beYlm!1eeT>?*C4qsgfZ{7b~wyxhhu2t~ftKq*} z;K5tr!`H%#uY(_74^O@UzPuaWd?WmMCOmpJeEJZ0^`Y?VdGPEb;M=|M?mGNC?X<_j z$4`Klp9nu+0#9EKUtbAtKi4=5sR=EF&tC+uzZiah89e_=`2JP!{;Q4s9-WW0h1Oyf zSci3BJywDZSPSTEextDu%);484)#~M;h|U;@~|?Dz}n!&>Y!tND8LGl?mYmX<}bvW zu?VZiVyqj>uyW7|p!xYUo%nZ#H()L4#%i(=>q#b7lx(aiL$In0#k!J*m1P9h7B5y8 z9qUU0R+zC^V`wio5$j9|R+@6GHI-Ox<{Iw|YOuenHFkK5vF#-7T!0xX*(i7Q;^(b?|+lG9c8ELu~tCNniqXNAUZzYTL3C3yU zBz(uA4DZ@2HocKpVC)%d^+kFe&MWG1V$p#2JdOG)y-8n<^U4;yHElJ{nA-7Xvm@o4 z$q~(rW<|53IXKVG#fhd9XPWtG-Z?lX4Wi>}MfxU{;Dem-Gn3#;>J5+4 z0k4n^FHne>um-bv4Q6b2I0v&ch&fn==&lKKiRRA`L~=AwigB)5hwi*?25 zmrmyzw$9RO5ML||{m*!q|2gk66kbG!=a`81mNhtWCJ(X7+z((Eof*r*4mAgR)LiUR zo!F;p*rx`uQ%zv6T4?N6i|Ks1W00c-UwLdZqPg{m<+_Z09lbZ8on5XG!Hq!t7BqHu zg+}B?aT`T#m5AA@jXhqi5v?sltk!7k^O}t)Z7seD&|&QLx{UXInTXADjQyU|h|0W( z$r8q%ugHkTN^qi4VeI>=jVO#_uzF+f*Jzw6wcuSuo3a1vz}pDg0rnUX7sXo?ZRO!~ zNi+6=3FA#D#aI+!mE&6mRmN_x#)zyI;~i~-u_J6U-p*1y)o$zxJB>(+;wXxuD28(S z@{IV2q9=--C~~5>iJ~TonX2)gb)m6GTx`6bq)3V4B#M$KMxqFb;vLKFv46tu|LIWEIVE$tmw8?g^XJ{0#*)I%{3MLZPmP_#p_ z4n;Z?=TMYGF%CsI6yH#EL$M7-HWb%TRI|$1QMTahgZ7l`j97*u8H!`Fj1!PtW1ds| zLUX;q*j-LA;ueZpC}yd~o0f&f9&@qreVj&o%W1W-&ulef6pBzb7<}<&L~8bF~Qi0mKfg_sKWQ278twHMMhjfQ3b^m&3NP8YV1kZ8L>o{@y#dNmu4F= z1Vs=OKTz~QvzsCZiW|xhHBih@jc*xHyigZeY{Uu_DNvk1QNmhdr@G#V4=6gI*dPbr zLl|o8S4SAWjv@kz2Z}MXDHfneU@pFyP=h&6F#tsXwEj0?^{2JJ4R4od-S5N+Xt(j+ zGSl#nwA#~Jui@JTI=)*_h;J55!1oF!;adge_)b9;zEQ9MXVA6yHo;e4o#*Tb0 z_Tx3i30R%66JLpaIIXEI*n_tj=U^Si?z3$KqmbyCR#_caWvrROtkc+2Z^Vu|%Qz#;HTKdY zu#*lN=VXP(9(p2n&}GJ1S(UMOUWlD@opD~)VCM4I5TTE_R1UJUwe#mvn=B* zawz<3zHxRIH1@`0jW@M)epY7eiRZ$<(t5QB{2=DYn5@XR%7gO7sJ0c7-wru#&<4S;a}U0^R-T6 zPrDKRHOn|-%Qg10Bj8_y#yMM|5i?GNe=Rf4+Nz9ia4m#?tuxNs8oZ5OI&o{p8(}(g zYsa^`=+v#t*r#T~zvgT@c^hHuP80C2v@x z>BQPr)s(}A-eM>r*{^7tZplqdHrg~<)#Q@O8abo~m@gs0Jvpkns+4G{WT$^T|AUpW z-rgmfG+4?a8V-s(LVY_IrHo%8ejLasY!SPG3Hy0TUHE~X_6T8Ig*%9biGO`%w8~}i z?SkG)juaAQxH$5aZynJPkg9Ts#(stMC#y11Tt9(0)R*+D`z+RBq5f_%0C-}ou)F^! z6Rqq$(Q(3BUj2tG0QEV$y70*y*y_z3{#}-Id;C(-VOi&=9tJlYpk` z7`Z#W+V+LZ2~iVs?Y4VU0H>y-k1<&;I)D-l673e?7`JQ0;laj4C>SIZc;N;2kO`v` zys1DkZK(-K(#X^YphucABK{FC+RR9H7zKR|MnO&=&3lN`$MB-ZKDCDu9m93Ztb2H} z!#fV87hZD7h)0XJeCvXB5iK}Oj%`2nwPC7|m?ucrNUrlxl2b~Qfb2BBvD9Hx= zp8EmtZMJ75+qQu1$QT?cbqv7`&%n{{^crY_No1>)AHa4;3X zI}N~X+oO(JxSdOkIP8T1Ztrw10DrlA#t$|c_)sI(au1JqfE(tW!MQ|c2Ff9$5@saC z+2RlDnW)95u1tuB&YbIUx({{R$iueO!`_*^K^a{4B=jXZ239x??NW0STqZ1c*}QxT z(^DV7Y{U5x;$vQ{U^kyjNi3Z4G(3mKbN>)6r>t(0Ilido&P7r*uz2jY=lQaHxmmf{ zb5TJ&1_8a;oF?5(^bpFc=xI`oWvE(<$tAvp{ow?{9fB4X(4?}u@)DF`)YoC& zCM^o;O{nt^zLn}zY;p03Pr51P^0fqmh}#KKfg|q4fC?F0|qN3H!Y8*hhk z(^}g#hl^ep@PKsEF_hfgA9PAu0{S8whm!<+M!;f9%_IkF8Vt= zm;X<|5j56*4DfI07$`3h1H4L{dtJa(;(Fcz^iUW*dPsAg1U^XU`Hp=u`icX01UZDB z(a^)k&ppI_!vBWRQ?!YS1l}bLBbQ?nmBWAWptL(Zwkny+?i_i-F$@$YYTb0oISeu_ z(b|3B*{Ms^&eBhuNj3*PENVOHnr$OuBGT?GwZdK(t(!>r&eA3+1+{IW)=f`1U6{k& zqPCx=IY!#}a+GL_#NnF)kH9R359h;pn~#!d8sHdO3^<7@0cTJPV6K37PzZQ2?E<`u4guB( z`f36FbQ+Wm^dX>0pWEir-Bd=$$X8OvQ#thXTV^z0lmKtKdY8KKh>|nm)R^&)5 zX!^>-ekxVW&Lz6Op{CtWWz4EFbU!oAMV;jVDhdQ>2@8gqQNxUO)z4rWGny4YgOTea zy+t`x&w|0bG<}m+*~B@po(ok#mC^#NL^Z>@sWb%{m9{g@s#jENiJ}EiZ(-Kj3Psf- z1E#0}(V7Wnw2Ng*h^y>h<4qT!iv_}*CrZryifGgqy|;1AGcB~?O=ZH z;C{j9V;zhl1B(T2ZL7hQ03wz|=rSIryjElBVZKSMAj~v+)5Yab) zaBN9XWthPz=;T5?tVEO|Xb=}xEAiMWR)WDM#lNA~=$M%`7>j`c`l^s0_|>oyjB)t* zbq(RpmqU=S+<4?MBf0=7GQcWb2Twx)Dj^>J{2D{c+gKZ`GnrA3@F>TkkLo18RQN)T z#eKbMwd!qFX$RcFqb1gNHEWJ;2vpkPXCfL1PNGVU`;W@uYYV!V!R;!Br!5w-j`&(J z4Bdb+s%Aw{?vrw}C=gOLcnOgQw$IODbWbW#l@?8h1N~-<6q^#UZRp|Xs=JLHiOk+j z#*8jI%mjCvNo9(^4l`|9n1JXCP(j8DGR4F!){QEr@iE7l7F#KJ_WmMVJbo!yAR!db$*ieXU&!n*?z zSY#MVC)Fc9nAm@?&reuQrP%XL>css=$KM8=Q0?TWH8hW8+&RjSf9li(nIJV%1+|ey zj5=uTZM;&nW2Au(-tszN3fcuhlR?t~H-Vx8m#Gh_=;sFkF#Jgq{-lQ78XNoq(*S|fSlk{WPe zCv_ckqTjAV4w5_`fH;q6doT{&N}h3JokEz~noN)!myFE7F2NEmCyh%giu=Ll#ucOT z-n}>O_`U@#UK6psozZ8 z`_W&=O`Teol6my}&$kvdZhJ$XHEw55>9dYwM_v!F-2Kqy`zI7VyXx$&x8%iR&YizA zcW%p`=g*uezkkptOEzZi_^7)3%`4rlPxk!#)nW4n2d=Jvdq>gEnX^yRgZIpMbm3=v zk9a3tS89L#Vak@h-!^BnIh9YXTsJ1`!G}Jxc3jFB`r>Eze823M@-q(Wl_4uG{_d@F zV{@K-`44Z8%D>(->*%V6)xRxDeQ)>18!uNs6yMYO%B~mB)c<1K_gz0$zqjY;)%M38 z-}1(n54`@|uHVlyzL@yRn#Gf;>RG!hsg(Ox%qC!*B;FVBa=^V)Ya3B-DB)!~Hst8O zg?&=rWJ-|Z-XuzuD5>AkA$yycrQlNPgu{tOOO(PCv$GY)h0l*IBphTNKti~uNi?`$ zL*j|K+ZSkvKQj-!aFP9XY01(0_gDVr zcWd`=duHCyo^*ZA;kAJU*7ZN!G4s=v;ptu4&F1l%AKtQXW$QgZ&U-qu=0`Vg{DU<5^S{60soGKg@k^y6 zk9pJo?U|NOJU8mEt8ZMrw(VxhrHgZqZmj$G@r)gb7q?b#BXI#Fp`^fo1 zyx&moTOJRQu?U1<4t{u-sjexhxt?{xT(J34#eIjipQty_9p-UTJg+fq=sa098)M

o4L92by@-|8KwJ(RVmLfD0U#Id=OOd#{Ud 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 literal 0 HcmV?d00001 diff --git a/Resources/EasyLoad64.dll b/Resources/EasyLoad64.dll new file mode 100644 index 0000000000000000000000000000000000000000..1696334ff513a9167967d9433469a550bee5ce9b GIT binary patch literal 7680 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 + + + + + + + Class EnumExtensions + + + + + + + + + + + + + + + + +

+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Chat.SeString.IntegerType.html b/docs/api/Dalamud.Game.Chat.SeString.IntegerType.html new file mode 100644 index 000000000..934254c29 --- /dev/null +++ b/docs/api/Dalamud.Game.Chat.SeString.IntegerType.html @@ -0,0 +1,155 @@ + + + + + + + + Enum SeString.IntegerType + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Chat.SeString.PlayerLinkType.html b/docs/api/Dalamud.Game.Chat.SeString.PlayerLinkType.html new file mode 100644 index 000000000..d685948ef --- /dev/null +++ b/docs/api/Dalamud.Game.Chat.SeString.PlayerLinkType.html @@ -0,0 +1,139 @@ + + + + + + + + Enum SeString.PlayerLinkType + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Chat.SeString.SeStringPayloadContainer.html b/docs/api/Dalamud.Game.Chat.SeString.SeStringPayloadContainer.html new file mode 100644 index 000000000..dca8b5f38 --- /dev/null +++ b/docs/api/Dalamud.Game.Chat.SeString.SeStringPayloadContainer.html @@ -0,0 +1,200 @@ + + + + + + + + Class SeString.SeStringPayloadContainer + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Chat.SeString.SeStringPayloadType.html b/docs/api/Dalamud.Game.Chat.SeString.SeStringPayloadType.html new file mode 100644 index 000000000..af4dc37a6 --- /dev/null +++ b/docs/api/Dalamud.Game.Chat.SeString.SeStringPayloadType.html @@ -0,0 +1,139 @@ + + + + + + + + Enum SeString.SeStringPayloadType + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Chat.SeString.html b/docs/api/Dalamud.Game.Chat.SeString.html new file mode 100644 index 000000000..31f822d93 --- /dev/null +++ b/docs/api/Dalamud.Game.Chat.SeString.html @@ -0,0 +1,281 @@ + + + + + + + + Class SeString + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Chat.XivChatEntry.html b/docs/api/Dalamud.Game.Chat.XivChatEntry.html new file mode 100644 index 000000000..809a45d4f --- /dev/null +++ b/docs/api/Dalamud.Game.Chat.XivChatEntry.html @@ -0,0 +1,275 @@ + + + + + + + + Class XivChatEntry + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Chat.XivChatType.html b/docs/api/Dalamud.Game.Chat.XivChatType.html new file mode 100644 index 000000000..49ca734cd --- /dev/null +++ b/docs/api/Dalamud.Game.Chat.XivChatType.html @@ -0,0 +1,246 @@ + + + + + + + + Enum XivChatType + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Chat.XivChatTypeExtensions.html b/docs/api/Dalamud.Game.Chat.XivChatTypeExtensions.html new file mode 100644 index 000000000..865e2d463 --- /dev/null +++ b/docs/api/Dalamud.Game.Chat.XivChatTypeExtensions.html @@ -0,0 +1,192 @@ + + + + + + + + Class XivChatTypeExtensions + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Chat.XivChatTypeInfoAttribute.html b/docs/api/Dalamud.Game.Chat.XivChatTypeInfoAttribute.html new file mode 100644 index 000000000..922e0246d --- /dev/null +++ b/docs/api/Dalamud.Game.Chat.XivChatTypeInfoAttribute.html @@ -0,0 +1,326 @@ + + + + + + + + Class XivChatTypeInfoAttribute + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Chat.html b/docs/api/Dalamud.Game.Chat.html new file mode 100644 index 000000000..32a18eae7 --- /dev/null +++ b/docs/api/Dalamud.Game.Chat.html @@ -0,0 +1,137 @@ + + + + + + + + Namespace Dalamud.Game.Chat + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ChatHandlers.html b/docs/api/Dalamud.Game.ChatHandlers.html new file mode 100644 index 000000000..4c8dd811c --- /dev/null +++ b/docs/api/Dalamud.Game.ChatHandlers.html @@ -0,0 +1,204 @@ + + + + + + + + Class ChatHandlers + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.ActorTable.html b/docs/api/Dalamud.Game.ClientState.Actors.ActorTable.html new file mode 100644 index 000000000..04317149b --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.ActorTable.html @@ -0,0 +1,401 @@ + + + + + + + + Class ActorTable + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.ObjectKind.html b/docs/api/Dalamud.Game.ClientState.Actors.ObjectKind.html new file mode 100644 index 000000000..7f0b70d01 --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.ObjectKind.html @@ -0,0 +1,208 @@ + + + + + + + + Enum ObjectKind + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.Position3.html b/docs/api/Dalamud.Game.ClientState.Actors.Position3.html new file mode 100644 index 000000000..4e8f9babd --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.Position3.html @@ -0,0 +1,214 @@ + + + + + + + + Struct Position3 + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.Resolvers.ClassJob.html b/docs/api/Dalamud.Game.ClientState.Actors.Resolvers.ClassJob.html new file mode 100644 index 000000000..386ddb1c9 --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.Resolvers.ClassJob.html @@ -0,0 +1,235 @@ + + + + + + + + Class ClassJob + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.Resolvers.World.html b/docs/api/Dalamud.Game.ClientState.Actors.Resolvers.World.html new file mode 100644 index 000000000..280a696a6 --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.Resolvers.World.html @@ -0,0 +1,235 @@ + + + + + + + + Class World + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.Resolvers.html b/docs/api/Dalamud.Game.ClientState.Actors.Resolvers.html new file mode 100644 index 000000000..e7bc2f925 --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.Resolvers.html @@ -0,0 +1,121 @@ + + + + + + + + Namespace Dalamud.Game.ClientState.Actors.Resolvers + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.Types.Actor.html b/docs/api/Dalamud.Game.ClientState.Actors.Types.Actor.html new file mode 100644 index 000000000..fb67235cd --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.Types.Actor.html @@ -0,0 +1,314 @@ + + + + + + + + Class Actor + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.Types.Chara.html b/docs/api/Dalamud.Game.ClientState.Actors.Types.Chara.html new file mode 100644 index 000000000..4db9af91a --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.Types.Chara.html @@ -0,0 +1,356 @@ + + + + + + + + Class Chara + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.BattleNpc.html b/docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.BattleNpc.html new file mode 100644 index 000000000..090c6759f --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.BattleNpc.html @@ -0,0 +1,273 @@ + + + + + + + + Class BattleNpc + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.BattleNpcSubKind.html b/docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.BattleNpcSubKind.html new file mode 100644 index 000000000..44ed99789 --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.BattleNpcSubKind.html @@ -0,0 +1,151 @@ + + + + + + + + Enum BattleNpcSubKind + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.Npc.html b/docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.Npc.html new file mode 100644 index 000000000..34897cb44 --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.Npc.html @@ -0,0 +1,244 @@ + + + + + + + + Class Npc + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.html b/docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.html new file mode 100644 index 000000000..bda72b263 --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.html @@ -0,0 +1,126 @@ + + + + + + + + Namespace Dalamud.Game.ClientState.Actors.Types.NonPlayer + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.Types.PlayerCharacter.html b/docs/api/Dalamud.Game.ClientState.Actors.Types.PlayerCharacter.html new file mode 100644 index 000000000..eb7010cdb --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.Types.PlayerCharacter.html @@ -0,0 +1,269 @@ + + + + + + + + Class PlayerCharacter + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.Types.html b/docs/api/Dalamud.Game.ClientState.Actors.Types.html new file mode 100644 index 000000000..e1465e310 --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.Types.html @@ -0,0 +1,124 @@ + + + + + + + + Namespace Dalamud.Game.ClientState.Actors.Types + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Actors.html b/docs/api/Dalamud.Game.ClientState.Actors.html new file mode 100644 index 000000000..8dad7e9f6 --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Actors.html @@ -0,0 +1,127 @@ + + + + + + + + Namespace Dalamud.Game.ClientState.Actors + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.ClientState.html b/docs/api/Dalamud.Game.ClientState.ClientState.html new file mode 100644 index 000000000..8aac361ba --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.ClientState.html @@ -0,0 +1,281 @@ + + + + + + + + Class ClientState + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Structs.Actor.html b/docs/api/Dalamud.Game.ClientState.Structs.Actor.html new file mode 100644 index 000000000..30b477804 --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Structs.Actor.html @@ -0,0 +1,503 @@ + + + + + + + + Struct Actor + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.Structs.html b/docs/api/Dalamud.Game.ClientState.Structs.html new file mode 100644 index 000000000..7313c20eb --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.Structs.html @@ -0,0 +1,118 @@ + + + + + + + + Namespace Dalamud.Game.ClientState.Structs + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.ClientState.html b/docs/api/Dalamud.Game.ClientState.html new file mode 100644 index 000000000..f14389422 --- /dev/null +++ b/docs/api/Dalamud.Game.ClientState.html @@ -0,0 +1,118 @@ + + + + + + + + Namespace Dalamud.Game.ClientState + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Command.CommandInfo.HandlerDelegate.html b/docs/api/Dalamud.Game.Command.CommandInfo.HandlerDelegate.html new file mode 100644 index 000000000..fab483b9d --- /dev/null +++ b/docs/api/Dalamud.Game.Command.CommandInfo.HandlerDelegate.html @@ -0,0 +1,141 @@ + + + + + + + + Delegate CommandInfo.HandlerDelegate + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Command.CommandInfo.html b/docs/api/Dalamud.Game.Command.CommandInfo.html new file mode 100644 index 000000000..e349f010e --- /dev/null +++ b/docs/api/Dalamud.Game.Command.CommandInfo.html @@ -0,0 +1,254 @@ + + + + + + + + Class CommandInfo + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Command.CommandManager.html b/docs/api/Dalamud.Game.Command.CommandManager.html new file mode 100644 index 000000000..e5edf2e18 --- /dev/null +++ b/docs/api/Dalamud.Game.Command.CommandManager.html @@ -0,0 +1,337 @@ + + + + + + + + Class CommandManager + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Command.html b/docs/api/Dalamud.Game.Command.html new file mode 100644 index 000000000..7ce561349 --- /dev/null +++ b/docs/api/Dalamud.Game.Command.html @@ -0,0 +1,123 @@ + + + + + + + + Namespace Dalamud.Game.Command + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.Framework.OnUpdateDelegate.html b/docs/api/Dalamud.Game.Internal.Framework.OnUpdateDelegate.html new file mode 100644 index 000000000..f6d1290f7 --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.Framework.OnUpdateDelegate.html @@ -0,0 +1,136 @@ + + + + + + + + Delegate Framework.OnUpdateDelegate + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.Framework.html b/docs/api/Dalamud.Game.Internal.Framework.html new file mode 100644 index 000000000..fb21e5aaa --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.Framework.html @@ -0,0 +1,315 @@ + + + + + + + + Class Framework + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.Gui.ChatGui.OnMessageDelegate.html b/docs/api/Dalamud.Game.Internal.Gui.ChatGui.OnMessageDelegate.html new file mode 100644 index 000000000..9ada962de --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.Gui.ChatGui.OnMessageDelegate.html @@ -0,0 +1,156 @@ + + + + + + + + Delegate ChatGui.OnMessageDelegate + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.Gui.ChatGui.html b/docs/api/Dalamud.Game.Internal.Gui.ChatGui.html new file mode 100644 index 000000000..0a656ab58 --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.Gui.ChatGui.html @@ -0,0 +1,407 @@ + + + + + + + + Class ChatGui + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.Gui.GameGui.html b/docs/api/Dalamud.Game.Internal.Gui.GameGui.html new file mode 100644 index 000000000..447f952bb --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.Gui.GameGui.html @@ -0,0 +1,244 @@ + + + + + + + + Class GameGui + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.Gui.html b/docs/api/Dalamud.Game.Internal.Gui.html new file mode 100644 index 000000000..a64be0d9e --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.Gui.html @@ -0,0 +1,123 @@ + + + + + + + + Namespace Dalamud.Game.Internal.Gui + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.Libc.LibcFunction.html b/docs/api/Dalamud.Game.Internal.Libc.LibcFunction.html new file mode 100644 index 000000000..a62447af4 --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.Libc.LibcFunction.html @@ -0,0 +1,221 @@ + + + + + + + + Class LibcFunction + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.Libc.OwnedStdString.html b/docs/api/Dalamud.Game.Internal.Libc.OwnedStdString.html new file mode 100644 index 000000000..905e11402 --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.Libc.OwnedStdString.html @@ -0,0 +1,230 @@ + + + + + + + + Class OwnedStdString + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.Libc.StdString.html b/docs/api/Dalamud.Game.Internal.Libc.StdString.html new file mode 100644 index 000000000..ddf288718 --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.Libc.StdString.html @@ -0,0 +1,193 @@ + + + + + + + + Class StdString + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.Libc.html b/docs/api/Dalamud.Game.Internal.Libc.html new file mode 100644 index 000000000..2c1cc7459 --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.Libc.html @@ -0,0 +1,122 @@ + + + + + + + + Namespace Dalamud.Game.Internal.Libc + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.Network.GameNetwork.OnZonePacketDelegate.html b/docs/api/Dalamud.Game.Internal.Network.GameNetwork.OnZonePacketDelegate.html new file mode 100644 index 000000000..e457c277c --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.Network.GameNetwork.OnZonePacketDelegate.html @@ -0,0 +1,136 @@ + + + + + + + + Delegate GameNetwork.OnZonePacketDelegate + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.Network.GameNetwork.html b/docs/api/Dalamud.Game.Internal.Network.GameNetwork.html new file mode 100644 index 000000000..54edeb378 --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.Network.GameNetwork.html @@ -0,0 +1,238 @@ + + + + + + + + Class GameNetwork + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.Network.html b/docs/api/Dalamud.Game.Internal.Network.html new file mode 100644 index 000000000..fdda8989d --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.Network.html @@ -0,0 +1,121 @@ + + + + + + + + Namespace Dalamud.Game.Internal.Network + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.Internal.html b/docs/api/Dalamud.Game.Internal.html new file mode 100644 index 000000000..e86bc40ce --- /dev/null +++ b/docs/api/Dalamud.Game.Internal.html @@ -0,0 +1,121 @@ + + + + + + + + Namespace Dalamud.Game.Internal + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.SigScanner.html b/docs/api/Dalamud.Game.SigScanner.html new file mode 100644 index 000000000..fa42d34ff --- /dev/null +++ b/docs/api/Dalamud.Game.SigScanner.html @@ -0,0 +1,556 @@ + + + + + + + + Class SigScanner + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Game.html b/docs/api/Dalamud.Game.html new file mode 100644 index 000000000..be9278d7b --- /dev/null +++ b/docs/api/Dalamud.Game.html @@ -0,0 +1,119 @@ + + + + + + + + Namespace Dalamud.Game + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Plugin.DalamudPluginInterface.html b/docs/api/Dalamud.Plugin.DalamudPluginInterface.html new file mode 100644 index 000000000..acbc40bed --- /dev/null +++ b/docs/api/Dalamud.Plugin.DalamudPluginInterface.html @@ -0,0 +1,256 @@ + + + + + + + + Class DalamudPluginInterface + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Plugin.IDalamudPlugin.html b/docs/api/Dalamud.Plugin.IDalamudPlugin.html new file mode 100644 index 000000000..dad44e069 --- /dev/null +++ b/docs/api/Dalamud.Plugin.IDalamudPlugin.html @@ -0,0 +1,185 @@ + + + + + + + + Interface IDalamudPlugin + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/Dalamud.Plugin.html b/docs/api/Dalamud.Plugin.html new file mode 100644 index 000000000..083fa47b3 --- /dev/null +++ b/docs/api/Dalamud.Plugin.html @@ -0,0 +1,123 @@ + + + + + + + + Namespace Dalamud.Plugin + + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/index.html b/docs/api/index.html new file mode 100644 index 000000000..c43cd0df0 --- /dev/null +++ b/docs/api/index.html @@ -0,0 +1,109 @@ + + + + + + + + Dalamud Plugin API + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/api/toc.html b/docs/api/toc.html new file mode 100644 index 000000000..5c4366e93 --- /dev/null +++ b/docs/api/toc.html @@ -0,0 +1,236 @@ + + \ No newline at end of file diff --git a/docs/articles/intro.html b/docs/articles/intro.html new file mode 100644 index 000000000..3adbcff74 --- /dev/null +++ b/docs/articles/intro.html @@ -0,0 +1,107 @@ + + + + + + + + Add your introductions here! + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/articles/toc.html b/docs/articles/toc.html new file mode 100644 index 000000000..bbe120dad --- /dev/null +++ b/docs/articles/toc.html @@ -0,0 +1,21 @@ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
\ No newline at end of file diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..71570f61efd250abdc3bffd77a96c6986109bb85 GIT binary patch literal 99678 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 IhS>=GA3>?ZjsO4v literal 0 HcmV?d00001 diff --git a/docs/fonts/glyphicons-halflings-regular.eot b/docs/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64 GIT binary patch literal 20127 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/fonts/glyphicons-halflings-regular.ttf b/docs/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/docs/fonts/glyphicons-halflings-regular.woff2 b/docs/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 000000000..47c9a5700 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,101 @@ + + + + + + + + Dalamud plugin API documentation + + + + + + + + + + + + + + + +
+
+ + + + +
+ + + +
+ + + + + + diff --git a/docs/logo.svg b/docs/logo.svg new file mode 100644 index 000000000..ccb2d7bc9 --- /dev/null +++ b/docs/logo.svg @@ -0,0 +1,25 @@ + + + + +Created by Docfx + + + + + + + diff --git a/docs/manifest.json b/docs/manifest.json new file mode 100644 index 000000000..79fb50850 --- /dev/null +++ b/docs/manifest.json @@ -0,0 +1,780 @@ +{ + "homepages": [], + "source_base_path": "D:/Sapphire/recorder", + "xrefmap": "xrefmap.yml", + "files": [ + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Chat.EnumExtensions.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Chat.EnumExtensions.html", + "hash": "6yhJFr/d9207Y+KxNqizVg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Chat.SeString.IntegerType.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Chat.SeString.IntegerType.html", + "hash": "gopE9IfoMsOqIH7fQWgwOg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Chat.SeString.PlayerLinkType.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Chat.SeString.PlayerLinkType.html", + "hash": "jMqXrBU6eFtY+akfdGW2YQ==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Chat.SeString.SeStringPayloadContainer.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Chat.SeString.SeStringPayloadContainer.html", + "hash": "KdlZR0WzYsQ+K5X7e/zRMw==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Chat.SeString.SeStringPayloadType.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Chat.SeString.SeStringPayloadType.html", + "hash": "e6ODfEPrqaEj75u94fafEA==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Chat.SeString.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Chat.SeString.html", + "hash": "xJyodmiBeXALhR4YaEMUeA==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Chat.XivChatEntry.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Chat.XivChatEntry.html", + "hash": "1h4WBUhN4GIPrdfsS6AE5Q==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Chat.XivChatType.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Chat.XivChatType.html", + "hash": "pt+xJ/FcTdkdzX/pXvd5bg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Chat.XivChatTypeExtensions.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Chat.XivChatTypeExtensions.html", + "hash": "U9ulBSolOzAovAwRiroGOg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Chat.XivChatTypeInfoAttribute.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Chat.XivChatTypeInfoAttribute.html", + "hash": "up0Tnc+uhhH2LUXMYqEzbw==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Chat.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Chat.html", + "hash": "QyT5VZTYhvfEnoaz6Al/Bg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ChatHandlers.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ChatHandlers.html", + "hash": "gfb449D6ktqBuCGjuLQXWQ==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.ActorTable.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.ActorTable.html", + "hash": "EW/l591b8WRCjGXouTqqIQ==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.ObjectKind.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.ObjectKind.html", + "hash": "O2I8AL8a5jVXmLOEWJa8QQ==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.Position3.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.Position3.html", + "hash": "VmIREFhiiky/NkPfPI7vSQ==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.Resolvers.ClassJob.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.Resolvers.ClassJob.html", + "hash": "xYq+hR5DdKVZFjhuxJnHbQ==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.Resolvers.World.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.Resolvers.World.html", + "hash": "ZTeXdpSNTrGnQqVvHw+SWw==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.Resolvers.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.Resolvers.html", + "hash": "Ccjiz75ZiwiHTGGrPHrRAA==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.Types.Actor.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.Types.Actor.html", + "hash": "v6+zy3DaTNZRT30JH4sexg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.Types.Chara.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.Types.Chara.html", + "hash": "/1EesV6d6Y9jmgVk0exK2Q==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.BattleNpc.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.BattleNpc.html", + "hash": "8e2JmVOzy6S7SnBuhFPxYQ==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.BattleNpcSubKind.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.BattleNpcSubKind.html", + "hash": "/o94IWrP+Oh8wiToM9PPwQ==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.Npc.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.Npc.html", + "hash": "i1IpEWTpaFeKKzaFhpSJTg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.Types.NonPlayer.html", + "hash": "zZ7IK2ZYtCKQshXYtyK8Hg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.Types.PlayerCharacter.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.Types.PlayerCharacter.html", + "hash": "nU79cnXKOkb4y7FhZby7YQ==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.Types.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.Types.html", + "hash": "4KXgmECTURQ6Lxg9ZfwwJg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Actors.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Actors.html", + "hash": "+XMx6TFLon6DsHJO+dckaA==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.ClientState.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.ClientState.html", + "hash": "hA5ZiC5MEoaGY3qyr4QmUw==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Structs.Actor.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Structs.Actor.html", + "hash": "Jq063v+UrfTBGR9vEFlalw==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.Structs.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.Structs.html", + "hash": "qRRgI/wq0LZ+K7aLnqyuqA==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.ClientState.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.ClientState.html", + "hash": "M92W6er4C53zITuFtEI74Q==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Command.CommandInfo.HandlerDelegate.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Command.CommandInfo.HandlerDelegate.html", + "hash": "CWPe0XdZj+BrIL+lvtWoYg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Command.CommandInfo.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Command.CommandInfo.html", + "hash": "8O6RCqG5hycNjf2NLs6ptw==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Command.CommandManager.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Command.CommandManager.html", + "hash": "t4mjlEPVF8QKyFXniRXplA==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Command.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Command.html", + "hash": "OVNml7idiakru8nT1nqZHw==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.Framework.OnUpdateDelegate.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.Framework.OnUpdateDelegate.html", + "hash": "kk/NMxUktzLg9ps4Mfp4ZA==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.Framework.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.Framework.html", + "hash": "fHjOnpGWFdkzm4wwC0jZMg==" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.Gui.ChatGui.OnMessageDelegate.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.Gui.ChatGui.OnMessageDelegate.html", + "hash": "O3MQpXZlE7iq7O3qSskBHA==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.Gui.ChatGui.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.Gui.ChatGui.html", + "hash": "1H2RgptOtK/mhwW1AaaMfg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.Gui.GameGui.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.Gui.GameGui.html", + "hash": "+Rp3/3jPbferSt41tLJhXA==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.Gui.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.Gui.html", + "hash": "0WfSn35S8Z++WFDr3ATjZg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.Libc.LibcFunction.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.Libc.LibcFunction.html", + "hash": "jbLknIRXAZh2AeREt0r7AA==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.Libc.OwnedStdString.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.Libc.OwnedStdString.html", + "hash": "NSmJNXflzLDJVQjewX3Xvg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.Libc.StdString.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.Libc.StdString.html", + "hash": "paAU1iZ6xxiL2kF1pmUpnw==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.Libc.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.Libc.html", + "hash": "InmrcpCrPYqYuIqcyAhlqg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.Network.GameNetwork.OnZonePacketDelegate.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.Network.GameNetwork.OnZonePacketDelegate.html", + "hash": "WzZzhwJVWvgJWb1LmRkAwA==" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.Network.GameNetwork.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.Network.GameNetwork.html", + "hash": "r/15cGZQ3Cc5h279Ur8YiA==" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.Network.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.Network.html", + "hash": "adU/F284FGauyUzZrUgU9w==" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.Internal.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.Internal.html", + "hash": "vU5WUXTzhr9DKCALA4zlnQ==" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.SigScanner.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.SigScanner.html", + "hash": "mpb6u1h2mb74QeFz8n53Cw==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Game.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Game.html", + "hash": "HaybHzLX7/XwMsSN2FlWuQ==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Plugin.DalamudPluginInterface.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Plugin.DalamudPluginInterface.html", + "hash": "eYC5Po+G+Zz3GgZSsuAzvg==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Plugin.IDalamudPlugin.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Plugin.IDalamudPlugin.html", + "hash": "DJTFgHoxO+kGW2W/0uaJxQ==" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Dalamud.Plugin.yml", + "output": { + ".html": { + "relative_path": "api/Dalamud.Plugin.html", + "hash": "0GvCegiL22kocIJryW2gcQ==" + } + }, + "is_incremental": false, + "version": "" + }, + { + "log_codes": [ + "InvalidFileLink" + ], + "type": "Conceptual", + "source_relative_path": "api/index.md", + "output": { + ".html": { + "relative_path": "api/index.html", + "hash": "m3Ch0VzxGuugKf6rttmYKw==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "api/toc.yml", + "output": { + ".html": { + "relative_path": "api/toc.html", + "hash": "3nmCquNSLKVX3pXex2CP5A==" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/intro.md", + "output": { + ".html": { + "relative_path": "articles/intro.html", + "hash": "bcTPg+uhS+XfhW7IeUi3BQ==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "articles/toc.yml", + "output": { + ".html": { + "relative_path": "articles/toc.html", + "hash": "t7iiFrmuYmrKWisdq+lN6Q==" + } + }, + "is_incremental": false, + "version": "" + }, + { + "log_codes": [ + "InvalidFileLink" + ], + "type": "Conceptual", + "source_relative_path": "index.md", + "output": { + ".html": { + "relative_path": "index.html", + "hash": "T4yJJSQfgYuZdccziwuN1w==" + } + }, + "is_incremental": true, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "toc.yml", + "output": { + ".html": { + "relative_path": "toc.html", + "hash": "1Xdjw8Ib7j95/TiJDj+CFw==" + } + }, + "is_incremental": false, + "version": "" + } + ], + "incremental_info": [ + { + "status": { + "can_incremental": true, + "incrementalPhase": "build", + "total_file_count": 0, + "skipped_file_count": 0 + }, + "processors": { + "TocDocumentProcessor": { + "can_incremental": false, + "details": "Processor TocDocumentProcessor cannot support incremental build because the processor doesn't implement ISupportIncrementalDocumentProcessor interface.", + "incrementalPhase": "build", + "total_file_count": 0, + "skipped_file_count": 0 + }, + "ConceptualDocumentProcessor": { + "can_incremental": true, + "incrementalPhase": "build", + "total_file_count": 3, + "skipped_file_count": 3 + }, + "ManagedReferenceDocumentProcessor": { + "can_incremental": true, + "incrementalPhase": "build", + "total_file_count": 54, + "skipped_file_count": 51 + } + } + }, + { + "status": { + "can_incremental": true, + "details": "Can support incremental post processing.", + "incrementalPhase": "postProcessing", + "total_file_count": 0, + "skipped_file_count": 0 + }, + "processors": {} + } + ], + "version_info": {}, + "groups": [ + { + "xrefmap": "xrefmap.yml" + } + ] +} \ No newline at end of file diff --git a/docs/search-stopwords.json b/docs/search-stopwords.json new file mode 100644 index 000000000..0bdcc2c00 --- /dev/null +++ b/docs/search-stopwords.json @@ -0,0 +1,121 @@ +[ + "a", + "able", + "about", + "across", + "after", + "all", + "almost", + "also", + "am", + "among", + "an", + "and", + "any", + "are", + "as", + "at", + "be", + "because", + "been", + "but", + "by", + "can", + "cannot", + "could", + "dear", + "did", + "do", + "does", + "either", + "else", + "ever", + "every", + "for", + "from", + "get", + "got", + "had", + "has", + "have", + "he", + "her", + "hers", + "him", + "his", + "how", + "however", + "i", + "if", + "in", + "into", + "is", + "it", + "its", + "just", + "least", + "let", + "like", + "likely", + "may", + "me", + "might", + "most", + "must", + "my", + "neither", + "no", + "nor", + "not", + "of", + "off", + "often", + "on", + "only", + "or", + "other", + "our", + "own", + "rather", + "said", + "say", + "says", + "she", + "should", + "since", + "so", + "some", + "than", + "that", + "the", + "their", + "them", + "then", + "there", + "these", + "they", + "this", + "tis", + "to", + "too", + "twas", + "us", + "wants", + "was", + "we", + "were", + "what", + "when", + "where", + "which", + "while", + "who", + "whom", + "why", + "will", + "with", + "would", + "yet", + "you", + "your" +] diff --git a/docs/styles/docfx.css b/docs/styles/docfx.css new file mode 100644 index 000000000..c31a00da8 --- /dev/null +++ b/docs/styles/docfx.css @@ -0,0 +1,957 @@ +/* Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License.txt in the project root for license information. */ +html, +body { + font-family: 'Segoe UI', Tahoma, Helvetica, sans-serif; + height: 100%; +} +button, +a { + color: #337ab7; + cursor: pointer; +} +button:hover, +button:focus, +a:hover, +a:focus { + color: #23527c; + text-decoration: none; +} +a.disable, +a.disable:hover { + text-decoration: none; + cursor: default; + color: #000000; +} + +h1, h2, h3, h4, h5, h6, .text-break { + word-wrap: break-word; + word-break: break-word; +} + +h1 mark, +h2 mark, +h3 mark, +h4 mark, +h5 mark, +h6 mark { + padding: 0; +} + +.inheritance .level0:before, +.inheritance .level1:before, +.inheritance .level2:before, +.inheritance .level3:before, +.inheritance .level4:before, +.inheritance .level5:before { + content: '↳'; + margin-right: 5px; +} + +.inheritance .level0 { + margin-left: 0em; +} + +.inheritance .level1 { + margin-left: 1em; +} + +.inheritance .level2 { + margin-left: 2em; +} + +.inheritance .level3 { + margin-left: 3em; +} + +.inheritance .level4 { + margin-left: 4em; +} + +.inheritance .level5 { + margin-left: 5em; +} + +span.parametername, +span.paramref, +span.typeparamref { + font-style: italic; +} +span.languagekeyword{ + font-weight: bold; +} + +svg:hover path { + fill: #ffffff; +} + +.hljs { + display: inline; + background-color: inherit; + padding: 0; +} +/* additional spacing fixes */ +.btn + .btn { + margin-left: 10px; +} +.btn.pull-right { + margin-left: 10px; + margin-top: 5px; +} +.table { + margin-bottom: 10px; +} +table p { + margin-bottom: 0; +} +table a { + display: inline-block; +} + +/* Make hidden attribute compatible with old browser.*/ +[hidden] { + display: none !important; +} + +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 15px; + margin-bottom: 10px; + font-weight: 400; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 5px; +} +.navbar { + margin-bottom: 0; +} +#wrapper { + min-height: 100%; + position: relative; +} +/* blends header footer and content together with gradient effect */ +.grad-top { + /* For Safari 5.1 to 6.0 */ + /* For Opera 11.1 to 12.0 */ + /* For Firefox 3.6 to 15 */ + background: linear-gradient(rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0)); + /* Standard syntax */ + height: 5px; +} +.grad-bottom { + /* For Safari 5.1 to 6.0 */ + /* For Opera 11.1 to 12.0 */ + /* For Firefox 3.6 to 15 */ + background: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.05)); + /* Standard syntax */ + height: 5px; +} +.divider { + margin: 0 5px; + color: #cccccc; +} +hr { + border-color: #cccccc; +} +header { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1000; +} +header .navbar { + border-width: 0 0 1px; + border-radius: 0; +} +.navbar-brand { + font-size: inherit; + padding: 0; +} +.navbar-collapse { + margin: 0 -15px; +} +.subnav { + min-height: 40px; +} + +.inheritance h5, .inheritedMembers h5{ + padding-bottom: 5px; + border-bottom: 1px solid #ccc; +} + +article h1, article h2, article h3, article h4{ + margin-top: 25px; +} + +article h4{ + border-bottom: 1px solid #ccc; +} + +article span.small.pull-right{ + margin-top: 20px; +} + +article section { + margin-left: 1em; +} + +/*.expand-all { + padding: 10px 0; +}*/ +.breadcrumb { + margin: 0; + padding: 10px 0; + background-color: inherit; + white-space: nowrap; +} +.breadcrumb > li + li:before { + content: "\00a0/"; +} +#autocollapse.collapsed .navbar-header { + float: none; +} +#autocollapse.collapsed .navbar-toggle { + display: block; +} +#autocollapse.collapsed .navbar-collapse { + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); +} +#autocollapse.collapsed .navbar-collapse.collapse { + display: none !important; +} +#autocollapse.collapsed .navbar-nav { + float: none !important; + margin: 7.5px -15px; +} +#autocollapse.collapsed .navbar-nav > li { + float: none; +} +#autocollapse.collapsed .navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; +} +#autocollapse.collapsed .collapse.in, +#autocollapse.collapsed .collapsing { + display: block !important; +} +#autocollapse.collapsed .collapse.in .navbar-right, +#autocollapse.collapsed .collapsing .navbar-right { + float: none !important; +} +#autocollapse .form-group { + width: 100%; +} +#autocollapse .form-control { + width: 100%; +} +#autocollapse .navbar-header { + margin-left: 0; + margin-right: 0; +} +#autocollapse .navbar-brand { + margin-left: 0; +} +.collapse.in, +.collapsing { + text-align: center; +} +.collapsing .navbar-form { + margin: 0 auto; + max-width: 400px; + padding: 10px 15px; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); +} +.collapsed .collapse.in .navbar-form { + margin: 0 auto; + max-width: 400px; + padding: 10px 15px; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); +} +.navbar .navbar-nav { + display: inline-block; +} +.docs-search { + background: white; + vertical-align: middle; +} +.docs-search > .search-query { + font-size: 14px; + border: 0; + width: 120%; + color: #555; +} +.docs-search > .search-query:focus { + outline: 0; +} +.search-results-frame { + clear: both; + display: table; + width: 100%; +} +.search-results.ng-hide { + display: none; +} +.search-results-container { + padding-bottom: 1em; + border-top: 1px solid #111; + background: rgba(25, 25, 25, 0.5); +} +.search-results-container .search-results-group { + padding-top: 50px !important; + padding: 10px; +} +.search-results-group-heading { + font-family: "Open Sans"; + padding-left: 10px; + color: white; +} +.search-close { + position: absolute; + left: 50%; + margin-left: -100px; + color: white; + text-align: center; + padding: 5px; + background: #333; + border-top-right-radius: 5px; + border-top-left-radius: 5px; + width: 200px; + box-shadow: 0 0 10px #111; +} +#search { + display: none; +} + +/* Search results display*/ +#search-results { + max-width: 960px !important; + margin-top: 120px; + margin-bottom: 115px; + margin-left: auto; + margin-right: auto; + line-height: 1.8; + display: none; +} + +#search-results>.search-list { + text-align: center; + font-size: 2.5rem; + margin-bottom: 50px; +} + +#search-results p { + text-align: center; +} + +#search-results p .index-loading { + animation: index-loading 1.5s infinite linear; + -webkit-animation: index-loading 1.5s infinite linear; + -o-animation: index-loading 1.5s infinite linear; + font-size: 2.5rem; +} + +@keyframes index-loading { + from { transform: scale(1) rotate(0deg);} + to { transform: scale(1) rotate(360deg);} +} + +@-webkit-keyframes index-loading { + from { -webkit-transform: rotate(0deg);} + to { -webkit-transform: rotate(360deg);} +} + +@-o-keyframes index-loading { + from { -o-transform: rotate(0deg);} + to { -o-transform: rotate(360deg);} +} + +#search-results .sr-items { + font-size: 24px; +} + +.sr-item { + margin-bottom: 25px; +} + +.sr-item>.item-href { + font-size: 14px; + color: #093; +} + +.sr-item>.item-brief { + font-size: 13px; +} + +.pagination>li>a { + color: #47A7A0 +} + +.pagination>.active>a { + background-color: #47A7A0; + border-color: #47A7A0; +} + +.fixed_header { + position: fixed; + width: 100%; + padding-bottom: 10px; + padding-top: 10px; + margin: 0px; + top: 0; + z-index: 9999; + left: 0; +} + +.fixed_header+.toc{ + margin-top: 50px; + margin-left: 0; +} + +.sidenav, .fixed_header, .toc { + background-color: #f1f1f1; +} + +.sidetoc { + position: fixed; + width: 260px; + top: 150px; + bottom: 0; + overflow-x: hidden; + overflow-y: auto; + background-color: #f1f1f1; + border-left: 1px solid #e7e7e7; + border-right: 1px solid #e7e7e7; + z-index: 1; +} + +.sidetoc.shiftup { + bottom: 70px; +} + +body .toc{ + background-color: #f1f1f1; + overflow-x: hidden; +} + +.sidetoggle.ng-hide { + display: block !important; +} +.sidetoc-expand > .caret { + margin-left: 0px; + margin-top: -2px; +} +.sidetoc-expand > .caret-side { + border-left: 4px solid; + border-top: 4px solid transparent; + border-bottom: 4px solid transparent; + margin-left: 4px; + margin-top: -4px; +} +.sidetoc-heading { + font-weight: 500; +} + +.toc { + margin: 0px 0 0 10px; + padding: 0 10px; +} +.expand-stub { + position: absolute; + left: -10px; +} +.toc .nav > li > a.sidetoc-expand { + position: absolute; + top: 0; + left: 0; +} +.toc .nav > li > a { + color: #666666; + margin-left: 5px; + display: block; + padding: 0; +} +.toc .nav > li > a:hover, +.toc .nav > li > a:focus { + color: #000000; + background: none; + text-decoration: inherit; +} +.toc .nav > li.active > a { + color: #337ab7; +} +.toc .nav > li.active > a:hover, +.toc .nav > li.active > a:focus { + color: #23527c; +} + +.toc .nav > li> .expand-stub { + cursor: pointer; +} + +.toc .nav > li.active > .expand-stub::before, +.toc .nav > li.in > .expand-stub::before, +.toc .nav > li.in.active > .expand-stub::before, +.toc .nav > li.filtered > .expand-stub::before { + content: "-"; +} + +.toc .nav > li > .expand-stub::before, +.toc .nav > li.active > .expand-stub::before { + content: "+"; +} + +.toc .nav > li.filtered > ul, +.toc .nav > li.in > ul { + display: block; +} + +.toc .nav > li > ul { + display: none; +} + +.toc ul{ + font-size: 12px; + margin: 0 0 0 3px; +} + +.toc .level1 > li { + font-weight: bold; + margin-top: 10px; + position: relative; + font-size: 16px; +} +.toc .level2 { + font-weight: normal; + margin: 5px 0 0 15px; + font-size: 14px; +} +.toc-toggle { + display: none; + margin: 0 15px 0px 15px; +} +.sidefilter { + position: fixed; + top: 90px; + width: 260px; + background-color: #f1f1f1; + padding: 15px; + border-left: 1px solid #e7e7e7; + border-right: 1px solid #e7e7e7; + z-index: 1; +} +.toc-filter { + border-radius: 5px; + background: #fff; + color: #666666; + padding: 5px; + position: relative; + margin: 0 5px 0 5px; +} +.toc-filter > input { + border: 0; + color: #666666; + padding-left: 20px; + width: 100%; +} +.toc-filter > input:focus { + outline: 0; +} +.toc-filter > .filter-icon { + position: absolute; + top: 10px; + left: 5px; +} +.article { + margin-top: 120px; + margin-bottom: 115px; +} + +#_content>a{ + margin-top: 105px; +} + +.article.grid-right { + margin-left: 280px; +} + +.inheritance hr { + margin-top: 5px; + margin-bottom: 5px; +} +.article img { + max-width: 100%; +} +.sideaffix { + margin-top: 50px; + font-size: 12px; + max-height: 100%; + overflow: hidden; + top: 100px; + bottom: 10px; + position: fixed; +} +.sideaffix.shiftup { + bottom: 70px; +} +.affix { + position: relative; + height: 100%; +} +.sideaffix > div.contribution { + margin-bottom: 20px; +} +.sideaffix > div.contribution > ul > li > a.contribution-link { + padding: 6px 10px; + font-weight: bold; + font-size: 14px; +} +.sideaffix > div.contribution > ul > li > a.contribution-link:hover { + background-color: #ffffff; +} +.sideaffix ul.nav > li > a:focus { + background: none; +} +.affix h5 { + font-weight: bold; + text-transform: uppercase; + padding-left: 10px; + font-size: 12px; +} +.affix > ul.level1 { + overflow: hidden; + padding-bottom: 10px; + height: calc(100% - 100px); + margin-right: -20px; +} +.affix ul > li > a:before { + color: #cccccc; + position: absolute; +} +.affix ul > li > a:hover { + background: none; + color: #666666; +} +.affix ul > li.active > a, +.affix ul > li.active > a:before { + color: #337ab7; +} +.affix ul > li > a { + padding: 5px 12px; + color: #666666; +} +.affix > ul > li.active:last-child { + margin-bottom: 50px; +} +.affix > ul > li > a:before { + content: "|"; + font-size: 16px; + top: 1px; + left: 0; +} +.affix > ul > li.active > a, +.affix > ul > li.active > a:before { + color: #337ab7; + font-weight: bold; +} +.affix ul ul > li > a { + padding: 2px 15px; +} +.affix ul ul > li > a:before { + content: ">"; + font-size: 14px; + top: -1px; + left: 5px; +} +.affix ul > li > a:before, +.affix ul ul { + display: none; +} +.affix ul > li.active > ul, +.affix ul > li.active > a:before, +.affix ul > li > a:hover:before { + display: block; + white-space: nowrap; +} +.codewrapper { + position: relative; +} +.trydiv { + height: 0px; +} +.tryspan { + position: absolute; + top: 0px; + right: 0px; + border-style: solid; + border-radius: 0px 4px; + box-sizing: border-box; + border-width: 1px; + border-color: #cccccc; + text-align: center; + padding: 2px 8px; + background-color: white; + font-size: 12px; + cursor: pointer; + z-index: 100; + display: none; + color: #767676; +} +.tryspan:hover { + background-color: #3b8bd0; + color: white; + border-color: #3b8bd0; +} +.codewrapper:hover .tryspan { + display: block; +} +.sample-response .response-content{ + max-height: 200px; +} +footer { + position: absolute; + left: 0; + right: 0; + bottom: 0; + z-index: 1000; +} +.footer { + border-top: 1px solid #e7e7e7; + background-color: #f8f8f8; + padding: 15px 0; +} +@media (min-width: 768px) { + #sidetoggle.collapse { + display: block; + } + .topnav .navbar-nav { + float: none; + white-space: nowrap; + } + .topnav .navbar-nav > li { + float: none; + display: inline-block; + } +} +@media only screen and (max-width: 768px) { + #mobile-indicator { + display: block; + } + /* TOC display for responsive */ + .article { + margin-top: 30px !important; + } + header { + position: static; + } + .topnav { + text-align: center; + } + .sidenav { + padding: 15px 0; + margin-left: -15px; + margin-right: -15px; + } + .sidefilter { + position: static; + width: auto; + float: none; + border: none; + } + .sidetoc { + position: static; + width: auto; + float: none; + padding-bottom: 0px; + border: none; + } + .toc .nav > li, .toc .nav > li >a { + display: inline-block; + } + .toc li:after { + margin-left: -3px; + margin-right: 5px; + content: ", "; + color: #666666; + } + .toc .level1 > li { + display: block; + } + + .toc .level1 > li:after { + display: none; + } + .article.grid-right { + margin-left: 0; + } + .grad-top, + .grad-bottom { + display: none; + } + .toc-toggle { + display: block; + } + .sidetoggle.ng-hide { + display: none !important; + } + /*.expand-all { + display: none; + }*/ + .sideaffix { + display: none; + } + .mobile-hide { + display: none; + } + .breadcrumb { + white-space: inherit; + } + + /* workaround for #hashtag url is no longer needed*/ + h1:before, + h2:before, + h3:before, + h4:before { + content: ''; + display: none; + } +} + +/* For toc iframe */ +@media (max-width: 260px) { + .toc .level2 > li { + display: block; + } + + .toc .level2 > li:after { + display: none; + } +} + +/* For code snippet line highlight */ +pre > code .line-highlight { + background-color: #ffffcc; +} + +/* Alerts */ +.alert h5 { + text-transform: uppercase; + font-weight: bold; + margin-top: 0; +} + +.alert h5:before { + position:relative; + top:1px; + display:inline-block; + font-family:'Glyphicons Halflings'; + line-height:1; + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale; + margin-right: 5px; + font-weight: normal; +} + +.alert-info h5:before { + content:"\e086" +} + +.alert-warning h5:before { + content:"\e127" +} + +.alert-danger h5:before { + content:"\e107" +} + +/* For Embedded Video */ +div.embeddedvideo { + padding-top: 56.25%; + position: relative; + width: 100%; +} + +div.embeddedvideo iframe { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; +} + +/* For printer */ +@media print{ + .article.grid-right { + margin-top: 0px; + margin-left: 0px; + } + .sideaffix { + display: none; + } + .mobile-hide { + display: none; + } + .footer { + display: none; + } +} + +/* For tabbed content */ + +.tabGroup { + margin-top: 1rem; } + .tabGroup ul[role="tablist"] { + margin: 0; + padding: 0; + list-style: none; } + .tabGroup ul[role="tablist"] > li { + list-style: none; + display: inline-block; } + .tabGroup a[role="tab"] { + color: #6e6e6e; + box-sizing: border-box; + display: inline-block; + padding: 5px 7.5px; + text-decoration: none; + border-bottom: 2px solid #fff; } + .tabGroup a[role="tab"]:hover, .tabGroup a[role="tab"]:focus, .tabGroup a[role="tab"][aria-selected="true"] { + border-bottom: 2px solid #0050C5; } + .tabGroup a[role="tab"][aria-selected="true"] { + color: #222; } + .tabGroup a[role="tab"]:hover, .tabGroup a[role="tab"]:focus { + color: #0050C5; } + .tabGroup a[role="tab"]:focus { + outline: 1px solid #0050C5; + outline-offset: -1px; } + @media (min-width: 768px) { + .tabGroup a[role="tab"] { + padding: 5px 15px; } } + .tabGroup section[role="tabpanel"] { + border: 1px solid #e0e0e0; + padding: 15px; + margin: 0; + overflow: hidden; } + .tabGroup section[role="tabpanel"] > .codeHeader, + .tabGroup section[role="tabpanel"] > pre { + margin-left: -16px; + margin-right: -16px; } + .tabGroup section[role="tabpanel"] > :first-child { + margin-top: 0; } + .tabGroup section[role="tabpanel"] > pre:last-child { + display: block; + margin-bottom: -16px; } + +.mainContainer[dir='rtl'] main ul[role="tablist"] { + margin: 0; } diff --git a/docs/styles/docfx.js b/docs/styles/docfx.js new file mode 100644 index 000000000..8fa50483a --- /dev/null +++ b/docs/styles/docfx.js @@ -0,0 +1,1143 @@ +// Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information. +$(function () { + var active = 'active'; + var expanded = 'in'; + var collapsed = 'collapsed'; + var filtered = 'filtered'; + var show = 'show'; + var hide = 'hide'; + var util = new utility(); + + workAroundFixedHeaderForAnchors(); + highlight(); + enableSearch(); + + renderTables(); + renderAlerts(); + renderLinks(); + renderNavbar(); + renderSidebar(); + renderAffix(); + renderFooter(); + renderLogo(); + + breakText(); + renderTabs(); + + window.refresh = function (article) { + // Update markup result + if (typeof article == 'undefined' || typeof article.content == 'undefined') + console.error("Null Argument"); + $("article.content").html(article.content); + + highlight(); + renderTables(); + renderAlerts(); + renderAffix(); + renderTabs(); + } + + // Add this event listener when needed + // window.addEventListener('content-update', contentUpdate); + + function breakText() { + $(".xref").addClass("text-break"); + var texts = $(".text-break"); + texts.each(function () { + $(this).breakWord(); + }); + } + + // Styling for tables in conceptual documents using Bootstrap. + // See http://getbootstrap.com/css/#tables + function renderTables() { + $('table').addClass('table table-bordered table-striped table-condensed').wrap('
'); + } + + // Styling for alerts. + function renderAlerts() { + $('.NOTE, .TIP').addClass('alert alert-info'); + $('.WARNING').addClass('alert alert-warning'); + $('.IMPORTANT, .CAUTION').addClass('alert alert-danger'); + } + + // Enable anchors for headings. + (function () { + anchors.options = { + placement: 'left', + visible: 'touch' + }; + anchors.add('article h2:not(.no-anchor), article h3:not(.no-anchor), article h4:not(.no-anchor)'); + })(); + + // Open links to different host in a new window. + function renderLinks() { + if ($("meta[property='docfx:newtab']").attr("content") === "true") { + $(document.links).filter(function () { + return this.hostname !== window.location.hostname; + }).attr('target', '_blank'); + } + } + + // Enable highlight.js + function highlight() { + $('pre code').each(function (i, block) { + hljs.highlightBlock(block); + }); + $('pre code[highlight-lines]').each(function (i, block) { + if (block.innerHTML === "") return; + var lines = block.innerHTML.split('\n'); + + queryString = block.getAttribute('highlight-lines'); + if (!queryString) return; + + var ranges = queryString.split(','); + for (var j = 0, range; range = ranges[j++];) { + var found = range.match(/^(\d+)\-(\d+)?$/); + if (found) { + // consider region as `{startlinenumber}-{endlinenumber}`, in which {endlinenumber} is optional + var start = +found[1]; + var end = +found[2]; + if (isNaN(end) || end > lines.length) { + end = lines.length; + } + } else { + // consider region as a sigine line number + if (isNaN(range)) continue; + var start = +range; + var end = start; + } + if (start <= 0 || end <= 0 || start > end || start > lines.length) { + // skip current region if invalid + continue; + } + lines[start - 1] = '' + lines[start - 1]; + lines[end - 1] = lines[end - 1] + ''; + } + + block.innerHTML = lines.join('\n'); + }); + } + + // Support full-text-search + function enableSearch() { + var query; + var relHref = $("meta[property='docfx\\:rel']").attr("content"); + if (typeof relHref === 'undefined') { + return; + } + try { + var worker = new Worker(relHref + 'styles/search-worker.js'); + if (!worker && !window.worker) { + localSearch(); + } else { + webWorkerSearch(); + } + + renderSearchBox(); + highlightKeywords(); + addSearchEvent(); + } catch (e) { + console.error(e); + } + + //Adjust the position of search box in navbar + function renderSearchBox() { + autoCollapse(); + $(window).on('resize', autoCollapse); + $(document).on('click', '.navbar-collapse.in', function (e) { + if ($(e.target).is('a')) { + $(this).collapse('hide'); + } + }); + + function autoCollapse() { + var navbar = $('#autocollapse'); + if (navbar.height() === null) { + setTimeout(autoCollapse, 300); + } + navbar.removeClass(collapsed); + if (navbar.height() > 60) { + navbar.addClass(collapsed); + } + } + } + + // Search factory + function localSearch() { + console.log("using local search"); + var lunrIndex = lunr(function () { + this.ref('href'); + this.field('title', { boost: 50 }); + this.field('keywords', { boost: 20 }); + }); + lunr.tokenizer.seperator = /[\s\-\.]+/; + var searchData = {}; + var searchDataRequest = new XMLHttpRequest(); + + var indexPath = relHref + "index.json"; + if (indexPath) { + searchDataRequest.open('GET', indexPath); + searchDataRequest.onload = function () { + if (this.status != 200) { + return; + } + searchData = JSON.parse(this.responseText); + for (var prop in searchData) { + if (searchData.hasOwnProperty(prop)) { + lunrIndex.add(searchData[prop]); + } + } + } + searchDataRequest.send(); + } + + $("body").bind("queryReady", function () { + var hits = lunrIndex.search(query); + var results = []; + hits.forEach(function (hit) { + var item = searchData[hit.ref]; + results.push({ 'href': item.href, 'title': item.title, 'keywords': item.keywords }); + }); + handleSearchResults(results); + }); + } + + function webWorkerSearch() { + console.log("using Web Worker"); + var indexReady = $.Deferred(); + + worker.onmessage = function (oEvent) { + switch (oEvent.data.e) { + case 'index-ready': + indexReady.resolve(); + break; + case 'query-ready': + var hits = oEvent.data.d; + handleSearchResults(hits); + break; + } + } + + indexReady.promise().done(function () { + $("body").bind("queryReady", function () { + worker.postMessage({ q: query }); + }); + if (query && (query.length >= 3)) { + worker.postMessage({ q: query }); + } + }); + } + + // Highlight the searching keywords + function highlightKeywords() { + var q = url('?q'); + if (q !== null) { + var keywords = q.split("%20"); + keywords.forEach(function (keyword) { + if (keyword !== "") { + $('.data-searchable *').mark(keyword); + $('article *').mark(keyword); + } + }); + } + } + + function addSearchEvent() { + $('body').bind("searchEvent", function () { + $('#search-query').keypress(function (e) { + return e.which !== 13; + }); + + $('#search-query').keyup(function () { + query = $(this).val(); + if (query.length < 3) { + flipContents("show"); + } else { + flipContents("hide"); + $("body").trigger("queryReady"); + $('#search-results>.search-list').text('Search Results for "' + query + '"'); + } + }).off("keydown"); + }); + } + + function flipContents(action) { + if (action === "show") { + $('.hide-when-search').show(); + $('#search-results').hide(); + } else { + $('.hide-when-search').hide(); + $('#search-results').show(); + } + } + + function relativeUrlToAbsoluteUrl(currentUrl, relativeUrl) { + var currentItems = currentUrl.split(/\/+/); + var relativeItems = relativeUrl.split(/\/+/); + var depth = currentItems.length - 1; + var items = []; + for (var i = 0; i < relativeItems.length; i++) { + if (relativeItems[i] === '..') { + depth--; + } else if (relativeItems[i] !== '.') { + items.push(relativeItems[i]); + } + } + return currentItems.slice(0, depth).concat(items).join('/'); + } + + function extractContentBrief(content) { + var briefOffset = 512; + var words = query.split(/\s+/g); + var queryIndex = content.indexOf(words[0]); + var briefContent; + if (queryIndex > briefOffset) { + return "..." + content.slice(queryIndex - briefOffset, queryIndex + briefOffset) + "..."; + } else if (queryIndex <= briefOffset) { + return content.slice(0, queryIndex + briefOffset) + "..."; + } + } + + function handleSearchResults(hits) { + var numPerPage = 10; + $('#pagination').empty(); + $('#pagination').removeData("twbs-pagination"); + if (hits.length === 0) { + $('#search-results>.sr-items').html('

No results found

'); + } else { + $('#pagination').twbsPagination({ + totalPages: Math.ceil(hits.length / numPerPage), + visiblePages: 5, + onPageClick: function (event, page) { + var start = (page - 1) * numPerPage; + var curHits = hits.slice(start, start + numPerPage); + $('#search-results>.sr-items').empty().append( + curHits.map(function (hit) { + var currentUrl = window.location.href; + var itemRawHref = relativeUrlToAbsoluteUrl(currentUrl, relHref + hit.href); + var itemHref = relHref + hit.href + "?q=" + query; + var itemTitle = hit.title; + var itemBrief = extractContentBrief(hit.keywords); + + var itemNode = $('
').attr('class', 'sr-item'); + var itemTitleNode = $('
').attr('class', 'item-title').append($('').attr('href', itemHref).attr("target", "_blank").text(itemTitle)); + var itemHrefNode = $('
').attr('class', 'item-href').text(itemRawHref); + var itemBriefNode = $('
').attr('class', 'item-brief').text(itemBrief); + itemNode.append(itemTitleNode).append(itemHrefNode).append(itemBriefNode); + return itemNode; + }) + ); + query.split(/\s+/).forEach(function (word) { + if (word !== '') { + $('#search-results>.sr-items *').mark(word); + } + }); + } + }); + } + } + }; + + // Update href in navbar + function renderNavbar() { + var navbar = $('#navbar ul')[0]; + if (typeof (navbar) === 'undefined') { + loadNavbar(); + } else { + $('#navbar ul a.active').parents('li').addClass(active); + renderBreadcrumb(); + showSearch(); + } + + function showSearch() { + if ($('#search-results').length !== 0) { + $('#search').show(); + $('body').trigger("searchEvent"); + } + } + + function loadNavbar() { + var navbarPath = $("meta[property='docfx\\:navrel']").attr("content"); + if (!navbarPath) { + return; + } + navbarPath = navbarPath.replace(/\\/g, '/'); + var tocPath = $("meta[property='docfx\\:tocrel']").attr("content") || ''; + if (tocPath) tocPath = tocPath.replace(/\\/g, '/'); + $.get(navbarPath, function (data) { + $(data).find("#toc>ul").appendTo("#navbar"); + showSearch(); + var index = navbarPath.lastIndexOf('/'); + var navrel = ''; + if (index > -1) { + navrel = navbarPath.substr(0, index + 1); + } + $('#navbar>ul').addClass('navbar-nav'); + var currentAbsPath = util.getAbsolutePath(window.location.pathname); + // set active item + $('#navbar').find('a[href]').each(function (i, e) { + var href = $(e).attr("href"); + if (util.isRelativePath(href)) { + href = navrel + href; + $(e).attr("href", href); + + var isActive = false; + var originalHref = e.name; + if (originalHref) { + originalHref = navrel + originalHref; + if (util.getDirectory(util.getAbsolutePath(originalHref)) === util.getDirectory(util.getAbsolutePath(tocPath))) { + isActive = true; + } + } else { + if (util.getAbsolutePath(href) === currentAbsPath) { + var dropdown = $(e).attr('data-toggle') == "dropdown" + if (!dropdown) { + isActive = true; + } + } + } + if (isActive) { + $(e).addClass(active); + } + } + }); + renderNavbar(); + }); + } + } + + function renderSidebar() { + var sidetoc = $('#sidetoggle .sidetoc')[0]; + if (typeof (sidetoc) === 'undefined') { + loadToc(); + } else { + registerTocEvents(); + if ($('footer').is(':visible')) { + $('.sidetoc').addClass('shiftup'); + } + + // Scroll to active item + var top = 0; + $('#toc a.active').parents('li').each(function (i, e) { + $(e).addClass(active).addClass(expanded); + $(e).children('a').addClass(active); + top += $(e).position().top; + }) + $('.sidetoc').scrollTop(top - 50); + + if ($('footer').is(':visible')) { + $('.sidetoc').addClass('shiftup'); + } + + renderBreadcrumb(); + } + + function registerTocEvents() { + $('.toc .nav > li > .expand-stub').click(function (e) { + $(e.target).parent().toggleClass(expanded); + }); + $('.toc .nav > li > .expand-stub + a:not([href])').click(function (e) { + $(e.target).parent().toggleClass(expanded); + }); + $('#toc_filter_input').on('input', function (e) { + var val = this.value; + if (val === '') { + // Clear 'filtered' class + $('#toc li').removeClass(filtered).removeClass(hide); + return; + } + + // Get leaf nodes + $('#toc li>a').filter(function (i, e) { + return $(e).siblings().length === 0 + }).each(function (i, anchor) { + var text = $(anchor).attr('title'); + var parent = $(anchor).parent(); + var parentNodes = parent.parents('ul>li'); + for (var i = 0; i < parentNodes.length; i++) { + var parentText = $(parentNodes[i]).children('a').attr('title'); + if (parentText) text = parentText + '.' + text; + }; + if (filterNavItem(text, val)) { + parent.addClass(show); + parent.removeClass(hide); + } else { + parent.addClass(hide); + parent.removeClass(show); + } + }); + $('#toc li>a').filter(function (i, e) { + return $(e).siblings().length > 0 + }).each(function (i, anchor) { + var parent = $(anchor).parent(); + if (parent.find('li.show').length > 0) { + parent.addClass(show); + parent.addClass(filtered); + parent.removeClass(hide); + } else { + parent.addClass(hide); + parent.removeClass(show); + parent.removeClass(filtered); + } + }) + + function filterNavItem(name, text) { + if (!text) return true; + if (name && name.toLowerCase().indexOf(text.toLowerCase()) > -1) return true; + return false; + } + }); + } + + function loadToc() { + var tocPath = $("meta[property='docfx\\:tocrel']").attr("content"); + if (!tocPath) { + return; + } + tocPath = tocPath.replace(/\\/g, '/'); + $('#sidetoc').load(tocPath + " #sidetoggle > div", function () { + var index = tocPath.lastIndexOf('/'); + var tocrel = ''; + if (index > -1) { + tocrel = tocPath.substr(0, index + 1); + } + var currentHref = util.getAbsolutePath(window.location.pathname); + $('#sidetoc').find('a[href]').each(function (i, e) { + var href = $(e).attr("href"); + if (util.isRelativePath(href)) { + href = tocrel + href; + $(e).attr("href", href); + } + + if (util.getAbsolutePath(e.href) === currentHref) { + $(e).addClass(active); + } + + $(e).breakWord(); + }); + + renderSidebar(); + }); + } + } + + function renderBreadcrumb() { + var breadcrumb = []; + $('#navbar a.active').each(function (i, e) { + breadcrumb.push({ + href: e.href, + name: e.innerHTML + }); + }) + $('#toc a.active').each(function (i, e) { + breadcrumb.push({ + href: e.href, + name: e.innerHTML + }); + }) + + var html = util.formList(breadcrumb, 'breadcrumb'); + $('#breadcrumb').html(html); + } + + //Setup Affix + function renderAffix() { + var hierarchy = getHierarchy(); + if (hierarchy && hierarchy.length > 0) { + var html = '
In This Article
' + html += util.formList(hierarchy, ['nav', 'bs-docs-sidenav']); + $("#affix").empty().append(html); + if ($('footer').is(':visible')) { + $(".sideaffix").css("bottom", "70px"); + } + $('#affix a').click(function(e) { + var scrollspy = $('[data-spy="scroll"]').data()['bs.scrollspy']; + var target = e.target.hash; + if (scrollspy && target) { + scrollspy.activate(target); + } + }); + } + + function getHierarchy() { + // supported headers are h1, h2, h3, and h4 + var $headers = $($.map(['h1', 'h2', 'h3', 'h4'], function (h) { return ".article article " + h; }).join(", ")); + + // a stack of hierarchy items that are currently being built + var stack = []; + $headers.each(function (i, e) { + if (!e.id) { + return; + } + + var item = { + name: htmlEncode($(e).text()), + href: "#" + e.id, + items: [] + }; + + if (!stack.length) { + stack.push({ type: e.tagName, siblings: [item] }); + return; + } + + var frame = stack[stack.length - 1]; + if (e.tagName === frame.type) { + frame.siblings.push(item); + } else if (e.tagName[1] > frame.type[1]) { + // we are looking at a child of the last element of frame.siblings. + // push a frame onto the stack. After we've finished building this item's children, + // we'll attach it as a child of the last element + stack.push({ type: e.tagName, siblings: [item] }); + } else { // e.tagName[1] < frame.type[1] + // we are looking at a sibling of an ancestor of the current item. + // pop frames from the stack, building items as we go, until we reach the correct level at which to attach this item. + while (e.tagName[1] < stack[stack.length - 1].type[1]) { + buildParent(); + } + if (e.tagName === stack[stack.length - 1].type) { + stack[stack.length - 1].siblings.push(item); + } else { + stack.push({ type: e.tagName, siblings: [item] }); + } + } + }); + while (stack.length > 1) { + buildParent(); + } + + function buildParent() { + var childrenToAttach = stack.pop(); + var parentFrame = stack[stack.length - 1]; + var parent = parentFrame.siblings[parentFrame.siblings.length - 1]; + $.each(childrenToAttach.siblings, function (i, child) { + parent.items.push(child); + }); + } + if (stack.length > 0) { + + var topLevel = stack.pop().siblings; + if (topLevel.length === 1) { // if there's only one topmost header, dump it + return topLevel[0].items; + } + return topLevel; + } + return undefined; + } + + function htmlEncode(str) { + if (!str) return str; + return str + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(/'/g, ''') + .replace(//g, '>'); + } + + function htmlDecode(value) { + if (!str) return str; + return value + .replace(/"/g, '"') + .replace(/'/g, "'") + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/&/g, '&'); + } + + function cssEscape(str) { + // see: http://stackoverflow.com/questions/2786538/need-to-escape-a-special-character-in-a-jquery-selector-string#answer-2837646 + if (!str) return str; + return str + .replace(/[!"#$%&'()*+,.\/:;<=>?@[\\\]^`{|}~]/g, "\\$&"); + } + } + + // Show footer + function renderFooter() { + initFooter(); + $(window).on("scroll", showFooterCore); + + function initFooter() { + if (needFooter()) { + shiftUpBottomCss(); + $("footer").show(); + } else { + resetBottomCss(); + $("footer").hide(); + } + } + + function showFooterCore() { + if (needFooter()) { + shiftUpBottomCss(); + $("footer").fadeIn(); + } else { + resetBottomCss(); + $("footer").fadeOut(); + } + } + + function needFooter() { + var scrollHeight = $(document).height(); + var scrollPosition = $(window).height() + $(window).scrollTop(); + return (scrollHeight - scrollPosition) < 1; + } + + function resetBottomCss() { + $(".sidetoc").removeClass("shiftup"); + $(".sideaffix").removeClass("shiftup"); + } + + function shiftUpBottomCss() { + $(".sidetoc").addClass("shiftup"); + $(".sideaffix").addClass("shiftup"); + } + } + + function renderLogo() { + // For LOGO SVG + // Replace SVG with inline SVG + // http://stackoverflow.com/questions/11978995/how-to-change-color-of-svg-image-using-css-jquery-svg-image-replacement + jQuery('img.svg').each(function () { + var $img = jQuery(this); + var imgID = $img.attr('id'); + var imgClass = $img.attr('class'); + var imgURL = $img.attr('src'); + + jQuery.get(imgURL, function (data) { + // Get the SVG tag, ignore the rest + var $svg = jQuery(data).find('svg'); + + // Add replaced image's ID to the new SVG + if (typeof imgID !== 'undefined') { + $svg = $svg.attr('id', imgID); + } + // Add replaced image's classes to the new SVG + if (typeof imgClass !== 'undefined') { + $svg = $svg.attr('class', imgClass + ' replaced-svg'); + } + + // Remove any invalid XML tags as per http://validator.w3.org + $svg = $svg.removeAttr('xmlns:a'); + + // Replace image with new SVG + $img.replaceWith($svg); + + }, 'xml'); + }); + } + + function renderTabs() { + var contentAttrs = { + id: 'data-bi-id', + name: 'data-bi-name', + type: 'data-bi-type' + }; + + var Tab = (function () { + function Tab(li, a, section) { + this.li = li; + this.a = a; + this.section = section; + } + Object.defineProperty(Tab.prototype, "tabIds", { + get: function () { return this.a.getAttribute('data-tab').split(' '); }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Tab.prototype, "condition", { + get: function () { return this.a.getAttribute('data-condition'); }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Tab.prototype, "visible", { + get: function () { return !this.li.hasAttribute('hidden'); }, + set: function (value) { + if (value) { + this.li.removeAttribute('hidden'); + this.li.removeAttribute('aria-hidden'); + } + else { + this.li.setAttribute('hidden', 'hidden'); + this.li.setAttribute('aria-hidden', 'true'); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Tab.prototype, "selected", { + get: function () { return !this.section.hasAttribute('hidden'); }, + set: function (value) { + if (value) { + this.a.setAttribute('aria-selected', 'true'); + this.a.tabIndex = 0; + this.section.removeAttribute('hidden'); + this.section.removeAttribute('aria-hidden'); + } + else { + this.a.setAttribute('aria-selected', 'false'); + this.a.tabIndex = -1; + this.section.setAttribute('hidden', 'hidden'); + this.section.setAttribute('aria-hidden', 'true'); + } + }, + enumerable: true, + configurable: true + }); + Tab.prototype.focus = function () { + this.a.focus(); + }; + return Tab; + }()); + + initTabs(document.body); + + function initTabs(container) { + var queryStringTabs = readTabsQueryStringParam(); + var elements = container.querySelectorAll('.tabGroup'); + var state = { groups: [], selectedTabs: [] }; + for (var i = 0; i < elements.length; i++) { + var group = initTabGroup(elements.item(i)); + if (!group.independent) { + updateVisibilityAndSelection(group, state); + state.groups.push(group); + } + } + container.addEventListener('click', function (event) { return handleClick(event, state); }); + if (state.groups.length === 0) { + return state; + } + selectTabs(queryStringTabs, container); + updateTabsQueryStringParam(state); + notifyContentUpdated(); + return state; + } + + function initTabGroup(element) { + var group = { + independent: element.hasAttribute('data-tab-group-independent'), + tabs: [] + }; + var li = element.firstElementChild.firstElementChild; + while (li) { + var a = li.firstElementChild; + a.setAttribute(contentAttrs.name, 'tab'); + var dataTab = a.getAttribute('data-tab').replace(/\+/g, ' '); + a.setAttribute('data-tab', dataTab); + var section = element.querySelector("[id=\"" + a.getAttribute('aria-controls') + "\"]"); + var tab = new Tab(li, a, section); + group.tabs.push(tab); + li = li.nextElementSibling; + } + element.setAttribute(contentAttrs.name, 'tab-group'); + element.tabGroup = group; + return group; + } + + function updateVisibilityAndSelection(group, state) { + var anySelected = false; + var firstVisibleTab; + for (var _i = 0, _a = group.tabs; _i < _a.length; _i++) { + var tab = _a[_i]; + tab.visible = tab.condition === null || state.selectedTabs.indexOf(tab.condition) !== -1; + if (tab.visible) { + if (!firstVisibleTab) { + firstVisibleTab = tab; + } + } + tab.selected = tab.visible && arraysIntersect(state.selectedTabs, tab.tabIds); + anySelected = anySelected || tab.selected; + } + if (!anySelected) { + for (var _b = 0, _c = group.tabs; _b < _c.length; _b++) { + var tabIds = _c[_b].tabIds; + for (var _d = 0, tabIds_1 = tabIds; _d < tabIds_1.length; _d++) { + var tabId = tabIds_1[_d]; + var index = state.selectedTabs.indexOf(tabId); + if (index === -1) { + continue; + } + state.selectedTabs.splice(index, 1); + } + } + var tab = firstVisibleTab; + tab.selected = true; + state.selectedTabs.push(tab.tabIds[0]); + } + } + + function getTabInfoFromEvent(event) { + if (!(event.target instanceof HTMLElement)) { + return null; + } + var anchor = event.target.closest('a[data-tab]'); + if (anchor === null) { + return null; + } + var tabIds = anchor.getAttribute('data-tab').split(' '); + var group = anchor.parentElement.parentElement.parentElement.tabGroup; + if (group === undefined) { + return null; + } + return { tabIds: tabIds, group: group, anchor: anchor }; + } + + function handleClick(event, state) { + var info = getTabInfoFromEvent(event); + if (info === null) { + return; + } + event.preventDefault(); + info.anchor.href = 'javascript:'; + setTimeout(function () { return info.anchor.href = '#' + info.anchor.getAttribute('aria-controls'); }); + var tabIds = info.tabIds, group = info.group; + var originalTop = info.anchor.getBoundingClientRect().top; + if (group.independent) { + for (var _i = 0, _a = group.tabs; _i < _a.length; _i++) { + var tab = _a[_i]; + tab.selected = arraysIntersect(tab.tabIds, tabIds); + } + } + else { + if (arraysIntersect(state.selectedTabs, tabIds)) { + return; + } + var previousTabId = group.tabs.filter(function (t) { return t.selected; })[0].tabIds[0]; + state.selectedTabs.splice(state.selectedTabs.indexOf(previousTabId), 1, tabIds[0]); + for (var _b = 0, _c = state.groups; _b < _c.length; _b++) { + var group_1 = _c[_b]; + updateVisibilityAndSelection(group_1, state); + } + updateTabsQueryStringParam(state); + } + notifyContentUpdated(); + var top = info.anchor.getBoundingClientRect().top; + if (top !== originalTop && event instanceof MouseEvent) { + window.scrollTo(0, window.pageYOffset + top - originalTop); + } + } + + function selectTabs(tabIds) { + for (var _i = 0, tabIds_1 = tabIds; _i < tabIds_1.length; _i++) { + var tabId = tabIds_1[_i]; + var a = document.querySelector(".tabGroup > ul > li > a[data-tab=\"" + tabId + "\"]:not([hidden])"); + if (a === null) { + return; + } + a.dispatchEvent(new CustomEvent('click', { bubbles: true })); + } + } + + function readTabsQueryStringParam() { + var qs = parseQueryString(); + var t = qs.tabs; + if (t === undefined || t === '') { + return []; + } + return t.split(','); + } + + function updateTabsQueryStringParam(state) { + var qs = parseQueryString(); + qs.tabs = state.selectedTabs.join(); + var url = location.protocol + "//" + location.host + location.pathname + "?" + toQueryString(qs) + location.hash; + if (location.href === url) { + return; + } + history.replaceState({}, document.title, url); + } + + function toQueryString(args) { + var parts = []; + for (var name_1 in args) { + if (args.hasOwnProperty(name_1) && args[name_1] !== '' && args[name_1] !== null && args[name_1] !== undefined) { + parts.push(encodeURIComponent(name_1) + '=' + encodeURIComponent(args[name_1])); + } + } + return parts.join('&'); + } + + function parseQueryString(queryString) { + var match; + var pl = /\+/g; + var search = /([^&=]+)=?([^&]*)/g; + var decode = function (s) { return decodeURIComponent(s.replace(pl, ' ')); }; + if (queryString === undefined) { + queryString = ''; + } + queryString = queryString.substring(1); + var urlParams = {}; + while (match = search.exec(queryString)) { + urlParams[decode(match[1])] = decode(match[2]); + } + return urlParams; + } + + function arraysIntersect(a, b) { + for (var _i = 0, a_1 = a; _i < a_1.length; _i++) { + var itemA = a_1[_i]; + for (var _a = 0, b_1 = b; _a < b_1.length; _a++) { + var itemB = b_1[_a]; + if (itemA === itemB) { + return true; + } + } + } + return false; + } + + function notifyContentUpdated() { + // Dispatch this event when needed + // window.dispatchEvent(new CustomEvent('content-update')); + } + } + + function utility() { + this.getAbsolutePath = getAbsolutePath; + this.isRelativePath = isRelativePath; + this.isAbsolutePath = isAbsolutePath; + this.getDirectory = getDirectory; + this.formList = formList; + + function getAbsolutePath(href) { + // Use anchor to normalize href + var anchor = $('
')[0]; + // Ignore protocal, remove search and query + return anchor.host + anchor.pathname; + } + + function isRelativePath(href) { + if (href === undefined || href === '' || href[0] === '/') { + return false; + } + return !isAbsolutePath(href); + } + + function isAbsolutePath(href) { + return (/^(?:[a-z]+:)?\/\//i).test(href); + } + + function getDirectory(href) { + if (!href) return ''; + var index = href.lastIndexOf('/'); + if (index == -1) return ''; + if (index > -1) { + return href.substr(0, index); + } + } + + function formList(item, classes) { + var level = 1; + var model = { + items: item + }; + var cls = [].concat(classes).join(" "); + return getList(model, cls); + + function getList(model, cls) { + if (!model || !model.items) return null; + var l = model.items.length; + if (l === 0) return null; + var html = '
    '; + level++; + for (var i = 0; i < l; i++) { + var item = model.items[i]; + var href = item.href; + var name = item.name; + if (!name) continue; + html += href ? '
  • ' + name + '' : '
  • ' + name; + html += getList(item, cls) || ''; + html += '
  • '; + } + html += '
'; + return html; + } + } + + /** + * Add into long word. + * @param {String} text - The word to break. It should be in plain text without HTML tags. + */ + function breakPlainText(text) { + if (!text) return text; + return text.replace(/([a-z])([A-Z])|(\.)(\w)/g, '$1$3$2$4') + } + + /** + * Add into long word. The jQuery element should contain no html tags. + * If the jQuery element contains tags, this function will not change the element. + */ + $.fn.breakWord = function () { + if (this.html() == this.text()) { + this.html(function (index, text) { + return breakPlainText(text); + }) + } + return this; + } + } + + // adjusted from https://stackoverflow.com/a/13067009/1523776 + function workAroundFixedHeaderForAnchors() { + var HISTORY_SUPPORT = !!(history && history.pushState); + var ANCHOR_REGEX = /^#[^ ]+$/; + + function getFixedOffset() { + return $('header').first().height(); + } + + /** + * If the provided href is an anchor which resolves to an element on the + * page, scroll to it. + * @param {String} href + * @return {Boolean} - Was the href an anchor. + */ + function scrollIfAnchor(href, pushToHistory) { + var match, rect, anchorOffset; + + if (!ANCHOR_REGEX.test(href)) { + return false; + } + + match = document.getElementById(href.slice(1)); + + if (match) { + rect = match.getBoundingClientRect(); + anchorOffset = window.pageYOffset + rect.top - getFixedOffset(); + window.scrollTo(window.pageXOffset, anchorOffset); + + // Add the state to history as-per normal anchor links + if (HISTORY_SUPPORT && pushToHistory) { + history.pushState({}, document.title, location.pathname + href); + } + } + + return !!match; + } + + /** + * Attempt to scroll to the current location's hash. + */ + function scrollToCurrent() { + scrollIfAnchor(window.location.hash); + } + + /** + * If the click event's target was an anchor, fix the scroll position. + */ + function delegateAnchors(e) { + var elem = e.target; + + if (scrollIfAnchor(elem.getAttribute('href'), true)) { + e.preventDefault(); + } + } + + $(window).on('hashchange', scrollToCurrent); + // Exclude tabbed content case + $('a:not([data-tab])').click(delegateAnchors); + scrollToCurrent(); + } +}); diff --git a/docs/styles/docfx.vendor.css b/docs/styles/docfx.vendor.css new file mode 100644 index 000000000..91bb610c8 --- /dev/null +++ b/docs/styles/docfx.vendor.css @@ -0,0 +1,1464 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +.label,sub,sup{vertical-align:baseline} +hr,img{border:0} +body,figure{margin:0} +.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu{float:left} +.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px} +html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%} +article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block} +audio,canvas,progress,video{display:inline-block;vertical-align:baseline} +audio:not([controls]){display:none;height:0} +[hidden],template{display:none} +a{background-color:transparent} +a:active,a:hover{outline:0} +b,optgroup,strong{font-weight:700} +dfn{font-style:italic} +h1{margin:.67em 0} +mark{color:#000;background:#ff0} +sub,sup{position:relative;font-size:75%;line-height:0} +sup{top:-.5em} +sub{bottom:-.25em} +img{vertical-align:middle} +svg:not(:root){overflow:hidden} +hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box} +pre,textarea{overflow:auto} +code,kbd,pre,samp{font-size:1em} +button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit} +.glyphicon,address{font-style:normal} +button{overflow:visible} +button,select{text-transform:none} +button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer} +button[disabled],html input[disabled]{cursor:default} +button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0} +input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0} +input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto} +input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none} +table{border-spacing:0;border-collapse:collapse} +td,th{padding:0} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print{blockquote,img,pre,tr{page-break-inside:avoid} +*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important} +a,a:visited{text-decoration:underline} +a[href]:after{content:" (" attr(href) ")"} +abbr[title]:after{content:" (" attr(title) ")"} +a[href^="javascript:"]:after,a[href^="#"]:after{content:""} +blockquote,pre{border:1px solid #999} +thead{display:table-header-group} +img{max-width:100%!important} +h2,h3,p{orphans:3;widows:3} +h2,h3{page-break-after:avoid} +.navbar{display:none} +.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important} +.label{border:1px solid #000} +.table{border-collapse:collapse!important} +.table td,.table th{background-color:#fff!important} +.table-bordered td,.table-bordered th{border:1px solid #ddd!important} +} +.dropdown-menu,.modal-content{-webkit-background-clip:padding-box} +.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-warning{background-image:none} +.img-thumbnail,body{background-color:#fff} +@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')} +.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} +.glyphicon-asterisk:before{content:"\002a"} +.glyphicon-plus:before{content:"\002b"} +.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"} +.glyphicon-minus:before{content:"\2212"} +.glyphicon-cloud:before{content:"\2601"} +.glyphicon-envelope:before{content:"\2709"} +.glyphicon-pencil:before{content:"\270f"} +.glyphicon-glass:before{content:"\e001"} +.glyphicon-music:before{content:"\e002"} +.glyphicon-search:before{content:"\e003"} +.glyphicon-heart:before{content:"\e005"} +.glyphicon-star:before{content:"\e006"} +.glyphicon-star-empty:before{content:"\e007"} +.glyphicon-user:before{content:"\e008"} +.glyphicon-film:before{content:"\e009"} +.glyphicon-th-large:before{content:"\e010"} +.glyphicon-th:before{content:"\e011"} +.glyphicon-th-list:before{content:"\e012"} +.glyphicon-ok:before{content:"\e013"} +.glyphicon-remove:before{content:"\e014"} +.glyphicon-zoom-in:before{content:"\e015"} +.glyphicon-zoom-out:before{content:"\e016"} +.glyphicon-off:before{content:"\e017"} +.glyphicon-signal:before{content:"\e018"} +.glyphicon-cog:before{content:"\e019"} +.glyphicon-trash:before{content:"\e020"} +.glyphicon-home:before{content:"\e021"} +.glyphicon-file:before{content:"\e022"} +.glyphicon-time:before{content:"\e023"} +.glyphicon-road:before{content:"\e024"} +.glyphicon-download-alt:before{content:"\e025"} +.glyphicon-download:before{content:"\e026"} +.glyphicon-upload:before{content:"\e027"} +.glyphicon-inbox:before{content:"\e028"} +.glyphicon-play-circle:before{content:"\e029"} +.glyphicon-repeat:before{content:"\e030"} +.glyphicon-refresh:before{content:"\e031"} +.glyphicon-list-alt:before{content:"\e032"} +.glyphicon-lock:before{content:"\e033"} +.glyphicon-flag:before{content:"\e034"} +.glyphicon-headphones:before{content:"\e035"} +.glyphicon-volume-off:before{content:"\e036"} +.glyphicon-volume-down:before{content:"\e037"} +.glyphicon-volume-up:before{content:"\e038"} +.glyphicon-qrcode:before{content:"\e039"} +.glyphicon-barcode:before{content:"\e040"} +.glyphicon-tag:before{content:"\e041"} +.glyphicon-tags:before{content:"\e042"} +.glyphicon-book:before{content:"\e043"} +.glyphicon-bookmark:before{content:"\e044"} +.glyphicon-print:before{content:"\e045"} +.glyphicon-camera:before{content:"\e046"} +.glyphicon-font:before{content:"\e047"} +.glyphicon-bold:before{content:"\e048"} +.glyphicon-italic:before{content:"\e049"} +.glyphicon-text-height:before{content:"\e050"} +.glyphicon-text-width:before{content:"\e051"} +.glyphicon-align-left:before{content:"\e052"} +.glyphicon-align-center:before{content:"\e053"} +.glyphicon-align-right:before{content:"\e054"} +.glyphicon-align-justify:before{content:"\e055"} +.glyphicon-list:before{content:"\e056"} +.glyphicon-indent-left:before{content:"\e057"} +.glyphicon-indent-right:before{content:"\e058"} +.glyphicon-facetime-video:before{content:"\e059"} +.glyphicon-picture:before{content:"\e060"} +.glyphicon-map-marker:before{content:"\e062"} +.glyphicon-adjust:before{content:"\e063"} +.glyphicon-tint:before{content:"\e064"} +.glyphicon-edit:before{content:"\e065"} +.glyphicon-share:before{content:"\e066"} +.glyphicon-check:before{content:"\e067"} +.glyphicon-move:before{content:"\e068"} +.glyphicon-step-backward:before{content:"\e069"} +.glyphicon-fast-backward:before{content:"\e070"} +.glyphicon-backward:before{content:"\e071"} +.glyphicon-play:before{content:"\e072"} +.glyphicon-pause:before{content:"\e073"} +.glyphicon-stop:before{content:"\e074"} +.glyphicon-forward:before{content:"\e075"} +.glyphicon-fast-forward:before{content:"\e076"} +.glyphicon-step-forward:before{content:"\e077"} +.glyphicon-eject:before{content:"\e078"} +.glyphicon-chevron-left:before{content:"\e079"} +.glyphicon-chevron-right:before{content:"\e080"} +.glyphicon-plus-sign:before{content:"\e081"} +.glyphicon-minus-sign:before{content:"\e082"} +.glyphicon-remove-sign:before{content:"\e083"} +.glyphicon-ok-sign:before{content:"\e084"} +.glyphicon-question-sign:before{content:"\e085"} +.glyphicon-info-sign:before{content:"\e086"} +.glyphicon-screenshot:before{content:"\e087"} +.glyphicon-remove-circle:before{content:"\e088"} +.glyphicon-ok-circle:before{content:"\e089"} +.glyphicon-ban-circle:before{content:"\e090"} +.glyphicon-arrow-left:before{content:"\e091"} +.glyphicon-arrow-right:before{content:"\e092"} +.glyphicon-arrow-up:before{content:"\e093"} +.glyphicon-arrow-down:before{content:"\e094"} +.glyphicon-share-alt:before{content:"\e095"} +.glyphicon-resize-full:before{content:"\e096"} +.glyphicon-resize-small:before{content:"\e097"} +.glyphicon-exclamation-sign:before{content:"\e101"} +.glyphicon-gift:before{content:"\e102"} +.glyphicon-leaf:before{content:"\e103"} +.glyphicon-fire:before{content:"\e104"} +.glyphicon-eye-open:before{content:"\e105"} +.glyphicon-eye-close:before{content:"\e106"} +.glyphicon-warning-sign:before{content:"\e107"} +.glyphicon-plane:before{content:"\e108"} +.glyphicon-calendar:before{content:"\e109"} +.glyphicon-random:before{content:"\e110"} +.glyphicon-comment:before{content:"\e111"} +.glyphicon-magnet:before{content:"\e112"} +.glyphicon-chevron-up:before{content:"\e113"} +.glyphicon-chevron-down:before{content:"\e114"} +.glyphicon-retweet:before{content:"\e115"} +.glyphicon-shopping-cart:before{content:"\e116"} +.glyphicon-folder-close:before{content:"\e117"} +.glyphicon-folder-open:before{content:"\e118"} +.glyphicon-resize-vertical:before{content:"\e119"} +.glyphicon-resize-horizontal:before{content:"\e120"} +.glyphicon-hdd:before{content:"\e121"} +.glyphicon-bullhorn:before{content:"\e122"} +.glyphicon-bell:before{content:"\e123"} +.glyphicon-certificate:before{content:"\e124"} +.glyphicon-thumbs-up:before{content:"\e125"} +.glyphicon-thumbs-down:before{content:"\e126"} +.glyphicon-hand-right:before{content:"\e127"} +.glyphicon-hand-left:before{content:"\e128"} +.glyphicon-hand-up:before{content:"\e129"} +.glyphicon-hand-down:before{content:"\e130"} +.glyphicon-circle-arrow-right:before{content:"\e131"} +.glyphicon-circle-arrow-left:before{content:"\e132"} +.glyphicon-circle-arrow-up:before{content:"\e133"} +.glyphicon-circle-arrow-down:before{content:"\e134"} +.glyphicon-globe:before{content:"\e135"} +.glyphicon-wrench:before{content:"\e136"} +.glyphicon-tasks:before{content:"\e137"} +.glyphicon-filter:before{content:"\e138"} +.glyphicon-briefcase:before{content:"\e139"} +.glyphicon-fullscreen:before{content:"\e140"} +.glyphicon-dashboard:before{content:"\e141"} +.glyphicon-paperclip:before{content:"\e142"} +.glyphicon-heart-empty:before{content:"\e143"} +.glyphicon-link:before{content:"\e144"} +.glyphicon-phone:before{content:"\e145"} +.glyphicon-pushpin:before{content:"\e146"} +.glyphicon-usd:before{content:"\e148"} +.glyphicon-gbp:before{content:"\e149"} +.glyphicon-sort:before{content:"\e150"} +.glyphicon-sort-by-alphabet:before{content:"\e151"} +.glyphicon-sort-by-alphabet-alt:before{content:"\e152"} +.glyphicon-sort-by-order:before{content:"\e153"} +.glyphicon-sort-by-order-alt:before{content:"\e154"} +.glyphicon-sort-by-attributes:before{content:"\e155"} +.glyphicon-sort-by-attributes-alt:before{content:"\e156"} +.glyphicon-unchecked:before{content:"\e157"} +.glyphicon-expand:before{content:"\e158"} +.glyphicon-collapse-down:before{content:"\e159"} +.glyphicon-collapse-up:before{content:"\e160"} +.glyphicon-log-in:before{content:"\e161"} +.glyphicon-flash:before{content:"\e162"} +.glyphicon-log-out:before{content:"\e163"} +.glyphicon-new-window:before{content:"\e164"} +.glyphicon-record:before{content:"\e165"} +.glyphicon-save:before{content:"\e166"} +.glyphicon-open:before{content:"\e167"} +.glyphicon-saved:before{content:"\e168"} +.glyphicon-import:before{content:"\e169"} +.glyphicon-export:before{content:"\e170"} +.glyphicon-send:before{content:"\e171"} +.glyphicon-floppy-disk:before{content:"\e172"} +.glyphicon-floppy-saved:before{content:"\e173"} +.glyphicon-floppy-remove:before{content:"\e174"} +.glyphicon-floppy-save:before{content:"\e175"} +.glyphicon-floppy-open:before{content:"\e176"} +.glyphicon-credit-card:before{content:"\e177"} +.glyphicon-transfer:before{content:"\e178"} +.glyphicon-cutlery:before{content:"\e179"} +.glyphicon-header:before{content:"\e180"} +.glyphicon-compressed:before{content:"\e181"} +.glyphicon-earphone:before{content:"\e182"} +.glyphicon-phone-alt:before{content:"\e183"} +.glyphicon-tower:before{content:"\e184"} +.glyphicon-stats:before{content:"\e185"} +.glyphicon-sd-video:before{content:"\e186"} +.glyphicon-hd-video:before{content:"\e187"} +.glyphicon-subtitles:before{content:"\e188"} +.glyphicon-sound-stereo:before{content:"\e189"} +.glyphicon-sound-dolby:before{content:"\e190"} +.glyphicon-sound-5-1:before{content:"\e191"} +.glyphicon-sound-6-1:before{content:"\e192"} +.glyphicon-sound-7-1:before{content:"\e193"} +.glyphicon-copyright-mark:before{content:"\e194"} +.glyphicon-registration-mark:before{content:"\e195"} +.glyphicon-cloud-download:before{content:"\e197"} +.glyphicon-cloud-upload:before{content:"\e198"} +.glyphicon-tree-conifer:before{content:"\e199"} +.glyphicon-tree-deciduous:before{content:"\e200"} +.glyphicon-cd:before{content:"\e201"} +.glyphicon-save-file:before{content:"\e202"} +.glyphicon-open-file:before{content:"\e203"} +.glyphicon-level-up:before{content:"\e204"} +.glyphicon-copy:before{content:"\e205"} +.glyphicon-paste:before{content:"\e206"} +.glyphicon-alert:before{content:"\e209"} +.glyphicon-equalizer:before{content:"\e210"} +.glyphicon-king:before{content:"\e211"} +.glyphicon-queen:before{content:"\e212"} +.glyphicon-pawn:before{content:"\e213"} +.glyphicon-bishop:before{content:"\e214"} +.glyphicon-knight:before{content:"\e215"} +.glyphicon-baby-formula:before{content:"\e216"} +.glyphicon-tent:before{content:"\26fa"} +.glyphicon-blackboard:before{content:"\e218"} +.glyphicon-bed:before{content:"\e219"} +.glyphicon-apple:before{content:"\f8ff"} +.glyphicon-erase:before{content:"\e221"} +.glyphicon-hourglass:before{content:"\231b"} +.glyphicon-lamp:before{content:"\e223"} +.glyphicon-duplicate:before{content:"\e224"} +.glyphicon-piggy-bank:before{content:"\e225"} +.glyphicon-scissors:before{content:"\e226"} +.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"} +.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"} +.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"} +.glyphicon-scale:before{content:"\e230"} +.glyphicon-ice-lolly:before{content:"\e231"} +.glyphicon-ice-lolly-tasted:before{content:"\e232"} +.glyphicon-education:before{content:"\e233"} +.glyphicon-option-horizontal:before{content:"\e234"} +.glyphicon-option-vertical:before{content:"\e235"} +.glyphicon-menu-hamburger:before{content:"\e236"} +.glyphicon-modal-window:before{content:"\e237"} +.glyphicon-oil:before{content:"\e238"} +.glyphicon-grain:before{content:"\e239"} +.glyphicon-sunglasses:before{content:"\e240"} +.glyphicon-text-size:before{content:"\e241"} +.glyphicon-text-color:before{content:"\e242"} +.glyphicon-text-background:before{content:"\e243"} +.glyphicon-object-align-top:before{content:"\e244"} +.glyphicon-object-align-bottom:before{content:"\e245"} +.glyphicon-object-align-horizontal:before{content:"\e246"} +.glyphicon-object-align-left:before{content:"\e247"} +.glyphicon-object-align-vertical:before{content:"\e248"} +.glyphicon-object-align-right:before{content:"\e249"} +.glyphicon-triangle-right:before{content:"\e250"} +.glyphicon-triangle-left:before{content:"\e251"} +.glyphicon-triangle-bottom:before{content:"\e252"} +.glyphicon-triangle-top:before{content:"\e253"} +.glyphicon-console:before{content:"\e254"} +.glyphicon-superscript:before{content:"\e255"} +.glyphicon-subscript:before{content:"\e256"} +.glyphicon-menu-left:before{content:"\e257"} +.glyphicon-menu-right:before{content:"\e258"} +.glyphicon-menu-down:before{content:"\e259"} +.glyphicon-menu-up:before{content:"\e260"} +*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} +html{font-size:10px;-webkit-tap-highlight-color:transparent} +body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333} +button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit} +a{color:#337ab7;text-decoration:none} +a:focus,a:hover{color:#23527c;text-decoration:underline} +a:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px} +.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto} +.img-rounded{border-radius:6px} +.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out} +.img-circle{border-radius:50%} +hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee} +.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0} +.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} +[role=button]{cursor:pointer} +.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit} +.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777} +.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px} +.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%} +.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px} +.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%} +.h1,h1{font-size:36px} +.h2,h2{font-size:30px} +.h3,h3{font-size:24px} +.h4,h4{font-size:18px} +.h5,h5{font-size:14px} +.h6,h6{font-size:12px} +p{margin:0 0 10px} +.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4} +dt,kbd kbd,label{font-weight:700} +address,blockquote .small,blockquote footer,blockquote small,dd,dt,pre{line-height:1.42857143} +@media (min-width:768px){.lead{font-size:21px} +} +.small,small{font-size:85%} +.mark,mark{padding:.2em;background-color:#fcf8e3} +.list-inline,.list-unstyled{padding-left:0;list-style:none} +.text-left{text-align:left} +.text-right{text-align:right} +.text-center{text-align:center} +.text-justify{text-align:justify} +.text-nowrap{white-space:nowrap} +.text-lowercase{text-transform:lowercase} +.text-uppercase{text-transform:uppercase} +.text-capitalize{text-transform:capitalize} +.text-muted{color:#777} +.text-primary{color:#337ab7} +a.text-primary:focus,a.text-primary:hover{color:#286090} +.text-success{color:#3c763d} +a.text-success:focus,a.text-success:hover{color:#2b542c} +.text-info{color:#31708f} +a.text-info:focus,a.text-info:hover{color:#245269} +.text-warning{color:#8a6d3b} +a.text-warning:focus,a.text-warning:hover{color:#66512c} +.text-danger{color:#a94442} +a.text-danger:focus,a.text-danger:hover{color:#843534} +.bg-primary{color:#fff;background-color:#337ab7} +a.bg-primary:focus,a.bg-primary:hover{background-color:#286090} +.bg-success{background-color:#dff0d8} +a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3} +.bg-info{background-color:#d9edf7} +a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee} +.bg-warning{background-color:#fcf8e3} +a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5} +.bg-danger{background-color:#f2dede} +a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9} +pre code,table{background-color:transparent} +.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee} +dl,ol,ul{margin-top:0} +blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0} +address,dl{margin-bottom:20px} +ol,ul{margin-bottom:10px} +.list-inline{margin-left:-5px} +.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px} +dd{margin-left:0} +@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap} +.dl-horizontal dd{margin-left:180px} +.container{width:750px} +} +abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777} +.initialism{font-size:90%;text-transform:uppercase} +blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee} +blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#777} +legend,pre{display:block;color:#333} +blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'} +.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0} +code,kbd{padding:2px 4px;font-size:90%} +caption,th{text-align:left} +.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''} +.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'} +code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace} +code{color:#c7254e;background-color:#f9f2f4;border-radius:4px} +kbd{color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)} +kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none} +pre{padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px} +.container,.container-fluid{margin-right:auto;margin-left:auto} +pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0} +.container,.container-fluid{padding-right:15px;padding-left:15px} +.pre-scrollable{overflow-y:scroll} +@media (min-width:992px){.container{width:970px} +} +@media (min-width:1200px){.container{width:1170px} +} +.row{margin-right:-15px;margin-left:-15px} +.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px} +.col-xs-12{width:100%} +.col-xs-11{width:91.66666667%} +.col-xs-10{width:83.33333333%} +.col-xs-9{width:75%} +.col-xs-8{width:66.66666667%} +.col-xs-7{width:58.33333333%} +.col-xs-6{width:50%} +.col-xs-5{width:41.66666667%} +.col-xs-4{width:33.33333333%} +.col-xs-3{width:25%} +.col-xs-2{width:16.66666667%} +.col-xs-1{width:8.33333333%} +.col-xs-pull-12{right:100%} +.col-xs-pull-11{right:91.66666667%} +.col-xs-pull-10{right:83.33333333%} +.col-xs-pull-9{right:75%} +.col-xs-pull-8{right:66.66666667%} +.col-xs-pull-7{right:58.33333333%} +.col-xs-pull-6{right:50%} +.col-xs-pull-5{right:41.66666667%} +.col-xs-pull-4{right:33.33333333%} +.col-xs-pull-3{right:25%} +.col-xs-pull-2{right:16.66666667%} +.col-xs-pull-1{right:8.33333333%} +.col-xs-pull-0{right:auto} +.col-xs-push-12{left:100%} +.col-xs-push-11{left:91.66666667%} +.col-xs-push-10{left:83.33333333%} +.col-xs-push-9{left:75%} +.col-xs-push-8{left:66.66666667%} +.col-xs-push-7{left:58.33333333%} +.col-xs-push-6{left:50%} +.col-xs-push-5{left:41.66666667%} +.col-xs-push-4{left:33.33333333%} +.col-xs-push-3{left:25%} +.col-xs-push-2{left:16.66666667%} +.col-xs-push-1{left:8.33333333%} +.col-xs-push-0{left:auto} +.col-xs-offset-12{margin-left:100%} +.col-xs-offset-11{margin-left:91.66666667%} +.col-xs-offset-10{margin-left:83.33333333%} +.col-xs-offset-9{margin-left:75%} +.col-xs-offset-8{margin-left:66.66666667%} +.col-xs-offset-7{margin-left:58.33333333%} +.col-xs-offset-6{margin-left:50%} +.col-xs-offset-5{margin-left:41.66666667%} +.col-xs-offset-4{margin-left:33.33333333%} +.col-xs-offset-3{margin-left:25%} +.col-xs-offset-2{margin-left:16.66666667%} +.col-xs-offset-1{margin-left:8.33333333%} +.col-xs-offset-0{margin-left:0} +@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left} +.col-sm-12{width:100%} +.col-sm-11{width:91.66666667%} +.col-sm-10{width:83.33333333%} +.col-sm-9{width:75%} +.col-sm-8{width:66.66666667%} +.col-sm-7{width:58.33333333%} +.col-sm-6{width:50%} +.col-sm-5{width:41.66666667%} +.col-sm-4{width:33.33333333%} +.col-sm-3{width:25%} +.col-sm-2{width:16.66666667%} +.col-sm-1{width:8.33333333%} +.col-sm-pull-12{right:100%} +.col-sm-pull-11{right:91.66666667%} +.col-sm-pull-10{right:83.33333333%} +.col-sm-pull-9{right:75%} +.col-sm-pull-8{right:66.66666667%} +.col-sm-pull-7{right:58.33333333%} +.col-sm-pull-6{right:50%} +.col-sm-pull-5{right:41.66666667%} +.col-sm-pull-4{right:33.33333333%} +.col-sm-pull-3{right:25%} +.col-sm-pull-2{right:16.66666667%} +.col-sm-pull-1{right:8.33333333%} +.col-sm-pull-0{right:auto} +.col-sm-push-12{left:100%} +.col-sm-push-11{left:91.66666667%} +.col-sm-push-10{left:83.33333333%} +.col-sm-push-9{left:75%} +.col-sm-push-8{left:66.66666667%} +.col-sm-push-7{left:58.33333333%} +.col-sm-push-6{left:50%} +.col-sm-push-5{left:41.66666667%} +.col-sm-push-4{left:33.33333333%} +.col-sm-push-3{left:25%} +.col-sm-push-2{left:16.66666667%} +.col-sm-push-1{left:8.33333333%} +.col-sm-push-0{left:auto} +.col-sm-offset-12{margin-left:100%} +.col-sm-offset-11{margin-left:91.66666667%} +.col-sm-offset-10{margin-left:83.33333333%} +.col-sm-offset-9{margin-left:75%} +.col-sm-offset-8{margin-left:66.66666667%} +.col-sm-offset-7{margin-left:58.33333333%} +.col-sm-offset-6{margin-left:50%} +.col-sm-offset-5{margin-left:41.66666667%} +.col-sm-offset-4{margin-left:33.33333333%} +.col-sm-offset-3{margin-left:25%} +.col-sm-offset-2{margin-left:16.66666667%} +.col-sm-offset-1{margin-left:8.33333333%} +.col-sm-offset-0{margin-left:0} +} +@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left} +.col-md-12{width:100%} +.col-md-11{width:91.66666667%} +.col-md-10{width:83.33333333%} +.col-md-9{width:75%} +.col-md-8{width:66.66666667%} +.col-md-7{width:58.33333333%} +.col-md-6{width:50%} +.col-md-5{width:41.66666667%} +.col-md-4{width:33.33333333%} +.col-md-3{width:25%} +.col-md-2{width:16.66666667%} +.col-md-1{width:8.33333333%} +.col-md-pull-12{right:100%} +.col-md-pull-11{right:91.66666667%} +.col-md-pull-10{right:83.33333333%} +.col-md-pull-9{right:75%} +.col-md-pull-8{right:66.66666667%} +.col-md-pull-7{right:58.33333333%} +.col-md-pull-6{right:50%} +.col-md-pull-5{right:41.66666667%} +.col-md-pull-4{right:33.33333333%} +.col-md-pull-3{right:25%} +.col-md-pull-2{right:16.66666667%} +.col-md-pull-1{right:8.33333333%} +.col-md-pull-0{right:auto} +.col-md-push-12{left:100%} +.col-md-push-11{left:91.66666667%} +.col-md-push-10{left:83.33333333%} +.col-md-push-9{left:75%} +.col-md-push-8{left:66.66666667%} +.col-md-push-7{left:58.33333333%} +.col-md-push-6{left:50%} +.col-md-push-5{left:41.66666667%} +.col-md-push-4{left:33.33333333%} +.col-md-push-3{left:25%} +.col-md-push-2{left:16.66666667%} +.col-md-push-1{left:8.33333333%} +.col-md-push-0{left:auto} +.col-md-offset-12{margin-left:100%} +.col-md-offset-11{margin-left:91.66666667%} +.col-md-offset-10{margin-left:83.33333333%} +.col-md-offset-9{margin-left:75%} +.col-md-offset-8{margin-left:66.66666667%} +.col-md-offset-7{margin-left:58.33333333%} +.col-md-offset-6{margin-left:50%} +.col-md-offset-5{margin-left:41.66666667%} +.col-md-offset-4{margin-left:33.33333333%} +.col-md-offset-3{margin-left:25%} +.col-md-offset-2{margin-left:16.66666667%} +.col-md-offset-1{margin-left:8.33333333%} +.col-md-offset-0{margin-left:0} +} +@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left} +.col-lg-12{width:100%} +.col-lg-11{width:91.66666667%} +.col-lg-10{width:83.33333333%} +.col-lg-9{width:75%} +.col-lg-8{width:66.66666667%} +.col-lg-7{width:58.33333333%} +.col-lg-6{width:50%} +.col-lg-5{width:41.66666667%} +.col-lg-4{width:33.33333333%} +.col-lg-3{width:25%} +.col-lg-2{width:16.66666667%} +.col-lg-1{width:8.33333333%} +.col-lg-pull-12{right:100%} +.col-lg-pull-11{right:91.66666667%} +.col-lg-pull-10{right:83.33333333%} +.col-lg-pull-9{right:75%} +.col-lg-pull-8{right:66.66666667%} +.col-lg-pull-7{right:58.33333333%} +.col-lg-pull-6{right:50%} +.col-lg-pull-5{right:41.66666667%} +.col-lg-pull-4{right:33.33333333%} +.col-lg-pull-3{right:25%} +.col-lg-pull-2{right:16.66666667%} +.col-lg-pull-1{right:8.33333333%} +.col-lg-pull-0{right:auto} +.col-lg-push-12{left:100%} +.col-lg-push-11{left:91.66666667%} +.col-lg-push-10{left:83.33333333%} +.col-lg-push-9{left:75%} +.col-lg-push-8{left:66.66666667%} +.col-lg-push-7{left:58.33333333%} +.col-lg-push-6{left:50%} +.col-lg-push-5{left:41.66666667%} +.col-lg-push-4{left:33.33333333%} +.col-lg-push-3{left:25%} +.col-lg-push-2{left:16.66666667%} +.col-lg-push-1{left:8.33333333%} +.col-lg-push-0{left:auto} +.col-lg-offset-12{margin-left:100%} +.col-lg-offset-11{margin-left:91.66666667%} +.col-lg-offset-10{margin-left:83.33333333%} +.col-lg-offset-9{margin-left:75%} +.col-lg-offset-8{margin-left:66.66666667%} +.col-lg-offset-7{margin-left:58.33333333%} +.col-lg-offset-6{margin-left:50%} +.col-lg-offset-5{margin-left:41.66666667%} +.col-lg-offset-4{margin-left:33.33333333%} +.col-lg-offset-3{margin-left:25%} +.col-lg-offset-2{margin-left:16.66666667%} +.col-lg-offset-1{margin-left:8.33333333%} +.col-lg-offset-0{margin-left:0} +} +caption{padding-top:8px;padding-bottom:8px;color:#777} +.table{width:100%;max-width:100%;margin-bottom:20px} +.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd} +.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd} +.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0} +.table>tbody+tbody{border-top:2px solid #ddd} +.table .table{background-color:#fff} +.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px} +.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd} +.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px} +.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9} +.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5} +table col[class*=col-]{position:static;display:table-column;float:none} +table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none} +.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8} +.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8} +.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6} +.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7} +.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3} +.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3} +.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc} +.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede} +.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc} +.table-responsive{min-height:.01%;overflow-x:auto} +@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd} +.table-responsive>.table{margin-bottom:0} +.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap} +.table-responsive>.table-bordered{border:0} +.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0} +.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0} +.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0} +} +fieldset,legend{padding:0;border:0} +fieldset{min-width:0;margin:0} +legend{width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5} +label{display:inline-block;max-width:100%;margin-bottom:5px} +input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none} +input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal} +.form-control,output{font-size:14px;line-height:1.42857143;color:#555;display:block} +input[type=file]{display:block} +input[type=range]{display:block;width:100%} +select[multiple],select[size]{height:auto} +input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px} +output{padding-top:7px} +.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s} +.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)} +.form-control::-moz-placeholder{color:#999;opacity:1} +.form-control:-ms-input-placeholder{color:#999} +.form-control::-webkit-input-placeholder{color:#999} +.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d} +.form-control::-ms-expand{background-color:transparent;border:0} +.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1} +.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed} +textarea.form-control{height:auto} +@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px} +.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px} +.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px} +} +.form-group{margin-bottom:15px} +.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px} +.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer} +.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px} +.checkbox+.checkbox,.radio+.radio{margin-top:-5px} +.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer} +.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px} +.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed} +.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0} +.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0} +.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px} +.input-sm{height:30px;line-height:1.5} +select.input-sm{height:30px;line-height:30px} +select[multiple].input-sm,textarea.input-sm{height:auto} +.form-group-sm .form-control{height:30px;line-height:1.5} +.form-group-lg .form-control,.input-lg{border-radius:6px;padding:10px 16px;font-size:18px} +.form-group-sm select.form-control{height:30px;line-height:30px} +.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto} +.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5} +.input-lg{height:46px;line-height:1.3333333} +select.input-lg{height:46px;line-height:46px} +select[multiple].input-lg,textarea.input-lg{height:auto} +.form-group-lg .form-control{height:46px;line-height:1.3333333} +.form-group-lg select.form-control{height:46px;line-height:46px} +.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto} +.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333} +.has-feedback{position:relative} +.has-feedback .form-control{padding-right:42.5px} +.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none} +.collapsing,.dropdown,.dropup{position:relative} +.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px} +.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px} +.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} +.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168} +.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d} +.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b} +.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} +.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b} +.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b} +.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442} +.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} +.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483} +.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442} +.has-feedback label~.form-control-feedback{top:25px} +.has-feedback label.sr-only~.form-control-feedback{top:0} +.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373} +@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block} +.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle} +.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle} +.form-inline .input-group{display:inline-table;vertical-align:middle} +.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto} +.form-inline .input-group>.form-control{width:100%} +.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle} +.form-inline .checkbox label,.form-inline .radio label{padding-left:0} +.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0} +.form-inline .has-feedback .form-control-feedback{top:0} +.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right} +} +.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0} +.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px} +.form-horizontal .form-group{margin-right:-15px;margin-left:-15px} +.form-horizontal .has-feedback .form-control-feedback{right:15px} +@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px} +.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px} +} +.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:4px} +.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px} +.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none} +.btn.active,.btn:active{outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)} +.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65} +a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none} +.btn-default{color:#333;background-color:#fff;border-color:#ccc} +.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c} +.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad} +.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c} +.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc} +.btn-default .badge{color:#fff;background-color:#333} +.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4} +.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40} +.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74} +.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40} +.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4} +.btn-primary .badge{color:#337ab7;background-color:#fff} +.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c} +.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625} +.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439} +.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625} +.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none} +.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c} +.btn-success .badge{color:#5cb85c;background-color:#fff} +.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da} +.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85} +.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc} +.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85} +.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da} +.btn-info .badge{color:#5bc0de;background-color:#fff} +.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236} +.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d} +.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512} +.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d} +.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236} +.btn-warning .badge{color:#f0ad4e;background-color:#fff} +.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a} +.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19} +.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925} +.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19} +.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a} +.btn-danger .badge{color:#d9534f;background-color:#fff} +.btn-link{font-weight:400;color:#337ab7;border-radius:0} +.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none} +.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent} +.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent} +.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none} +.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px} +.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px} +.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px} +.btn-block{display:block;width:100%} +.btn-block+.btn-block{margin-top:5px} +input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%} +.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear} +.fade.in{opacity:1} +.collapse{display:none} +.collapse.in{display:block} +tr.collapse.in{display:table-row} +tbody.collapse.in{display:table-row-group} +.collapsing{height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility} +.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent} +.dropdown-toggle:focus{outline:0} +.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)} +.dropdown-menu-right,.dropdown-menu.pull-right{right:0;left:auto} +.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap} +.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0} +.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0} +.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0} +.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5} +.dropdown-menu>li>a{clear:both;font-weight:400;color:#333} +.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5} +.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0} +.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777} +.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} +.open>.dropdown-menu{display:block} +.open>a{outline:0} +.dropdown-menu-left{right:auto;left:0} +.dropdown-header{font-size:12px;color:#777} +.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990} +.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto} +.pull-right>.dropdown-menu{right:0;left:auto} +.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9} +.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px} +@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto} +.navbar-right .dropdown-menu-left{right:auto;left:0} +} +.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle} +.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left} +.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2} +.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px} +.btn-toolbar{margin-left:-5px} +.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px} +.btn .caret,.btn-group>.btn:first-child{margin-left:0} +.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0} +.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px} +.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px} +.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)} +.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none} +.btn-lg .caret{border-width:5px 5px 0} +.dropup .btn-lg .caret{border-width:0 5px 5px} +.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%} +.btn-group-vertical>.btn-group>.btn{float:none} +.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0} +.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:4px 4px 0 0} +.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 4px 4px} +.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0} +.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0} +.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0} +.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate} +.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%} +.btn-group-justified>.btn-group .btn{width:100%} +.btn-group-justified>.btn-group .dropdown-menu{left:auto} +[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none} +.input-group{position:relative;display:table;border-collapse:separate} +.input-group[class*=col-]{float:none;padding-right:0;padding-left:0} +.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0} +.input-group .form-control:focus{z-index:3} +.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px} +select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px} +select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto} +.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px} +select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px} +select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto} +.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell} +.nav>li,.nav>li>a{display:block;position:relative} +.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0} +.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle} +.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px} +.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px} +.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px} +.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0} +.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0} +.input-group-addon:first-child{border-right:0} +.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0} +.input-group-addon:last-child{border-left:0} +.input-group-btn{position:relative;font-size:0;white-space:nowrap} +.input-group-btn>.btn{position:relative} +.input-group-btn>.btn+.btn{margin-left:-1px} +.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2} +.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px} +.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px} +.nav{padding-left:0;margin-bottom:0;list-style:none} +.nav>li>a{padding:10px 15px} +.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee} +.nav>li.disabled>a{color:#777} +.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent} +.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7} +.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5} +.nav>li>a>img{max-width:none} +.nav-tabs{border-bottom:1px solid #ddd} +.nav-tabs>li{float:left;margin-bottom:-1px} +.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0} +.nav-tabs>li>a:hover{border-color:#eee #eee #ddd} +.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent} +.nav-tabs.nav-justified{width:100%;border-bottom:0} +.nav-tabs.nav-justified>li{float:none} +.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center;margin-right:0;border-radius:4px} +.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd} +@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%} +.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:4px 4px 0 0} +.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff} +} +.nav-pills>li{float:left} +.nav-justified>li,.nav-stacked>li{float:none} +.nav-pills>li>a{border-radius:4px} +.nav-pills>li+li{margin-left:2px} +.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7} +.nav-stacked>li+li{margin-top:2px;margin-left:0} +.nav-justified{width:100%} +.nav-justified>li>a{margin-bottom:5px;text-align:center} +.nav-tabs-justified{border-bottom:0} +.nav-tabs-justified>li>a{margin-right:0;border-radius:4px} +.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd} +@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%} +.nav-justified>li>a{margin-bottom:0} +.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0} +.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff} +} +.tab-content>.tab-pane{display:none} +.tab-content>.active{display:block} +.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0} +.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent} +.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)} +.navbar-collapse.in{overflow-y:auto} +@media (min-width:768px){.navbar{border-radius:4px} +.navbar-header{float:left} +.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none} +.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important} +.navbar-collapse.in{overflow-y:visible} +.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0} +} +.embed-responsive,.modal,.modal-open,.progress{overflow:hidden} +@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px} +} +.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px} +.navbar-static-top{z-index:1000;border-width:0 0 1px} +.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030} +.navbar-fixed-top{top:0;border-width:0 0 1px} +.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0} +.navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px} +.navbar-brand:focus,.navbar-brand:hover{text-decoration:none} +.navbar-brand>img{display:block} +@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0} +.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0} +.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px} +} +.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px} +.navbar-toggle:focus{outline:0} +.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px} +.navbar-toggle .icon-bar+.icon-bar{margin-top:4px} +.navbar-nav{margin:7.5px -15px} +.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px} +@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none} +.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px} +.navbar-nav .open .dropdown-menu>li>a{line-height:20px} +.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none} +} +.progress-bar-striped,.progress-striped .progress-bar,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} +@media (min-width:768px){.navbar-toggle{display:none} +.navbar-nav{float:left;margin:0} +.navbar-nav>li{float:left} +.navbar-nav>li>a{padding-top:15px;padding-bottom:15px} +} +.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px} +@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block} +.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle} +.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle} +.navbar-form .input-group{display:inline-table;vertical-align:middle} +.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto} +.navbar-form .input-group>.form-control{width:100%} +.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle} +.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0} +.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0} +.navbar-form .has-feedback .form-control-feedback{top:0} +.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none} +} +.breadcrumb>li,.pagination{display:inline-block} +.btn .badge,.btn .label{top:-1px;position:relative} +@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px} +.navbar-form .form-group:last-child{margin-bottom:0} +} +.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0} +.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0} +.navbar-btn{margin-top:8px;margin-bottom:8px} +.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px} +.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px} +.navbar-text{margin-top:15px;margin-bottom:15px} +@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px} +.navbar-left{float:left!important} +.navbar-right{float:right!important;margin-right:-15px} +.navbar-right~.navbar-right{margin-right:0} +} +.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7} +.navbar-default .navbar-brand{color:#777} +.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent} +.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777} +.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent} +.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7} +.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent} +.navbar-default .navbar-toggle{border-color:#ddd} +.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd} +.navbar-default .navbar-toggle .icon-bar{background-color:#888} +.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7} +.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7} +@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777} +.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent} +.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7} +.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent} +} +.navbar-default .navbar-link{color:#777} +.navbar-default .navbar-link:hover{color:#333} +.navbar-default .btn-link{color:#777} +.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333} +.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc} +.navbar-inverse{background-color:#222;border-color:#080808} +.navbar-inverse .navbar-brand{color:#9d9d9d} +.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent} +.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d} +.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent} +.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808} +.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent} +.navbar-inverse .navbar-toggle{border-color:#333} +.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333} +.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff} +.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010} +.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808} +@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808} +.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808} +.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d} +.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent} +.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808} +.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent} +} +.navbar-inverse .navbar-link{color:#9d9d9d} +.navbar-inverse .navbar-link:hover{color:#fff} +.navbar-inverse .btn-link{color:#9d9d9d} +.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff} +.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444} +.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px} +.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"} +.breadcrumb>.active{color:#777} +.pagination{padding-left:0;margin:20px 0;border-radius:4px} +.pager li,.pagination>li{display:inline} +.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd} +.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px} +.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px} +.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd} +.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7} +.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd} +.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333} +.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px} +.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px} +.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5} +.badge,.label{font-weight:700;line-height:1;white-space:nowrap;text-align:center} +.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px} +.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px} +.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none} +.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px} +.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee} +.pager .next>a,.pager .next>span{float:right} +.pager .previous>a,.pager .previous>span{float:left} +.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff} +a.badge:focus,a.badge:hover,a.label:focus,a.label:hover{color:#fff;cursor:pointer;text-decoration:none} +.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;border-radius:.25em} +.label:empty{display:none} +.label-default{background-color:#777} +.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e} +.label-primary{background-color:#337ab7} +.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090} +.label-success{background-color:#5cb85c} +.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44} +.label-info{background-color:#5bc0de} +.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5} +.label-warning{background-color:#f0ad4e} +.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f} +.label-danger{background-color:#d9534f} +.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c} +.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#777;border-radius:10px} +.badge:empty{display:none} +.media-object,.thumbnail{display:block} +.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px} +.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff} +.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit} +.list-group-item>.badge{float:right} +.list-group-item>.badge+.badge{margin-right:5px} +.nav-pills>li>a>.badge{margin-left:3px} +.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee} +.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200} +.alert,.thumbnail{margin-bottom:20px} +.alert .alert-link,.close{font-weight:700} +.jumbotron>hr{border-top-color:#d5d5d5} +.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px} +.jumbotron .container{max-width:100%} +@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px} +.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px} +.jumbotron .h1,.jumbotron h1{font-size:63px} +} +.thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out} +.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto} +a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7} +.thumbnail .caption{padding:9px;color:#333} +.alert{padding:15px;border:1px solid transparent;border-radius:4px} +.alert h4{margin-top:0;color:inherit} +.alert>p,.alert>ul{margin-bottom:0} +.alert>p+p{margin-top:5px} +.alert-dismissable,.alert-dismissible{padding-right:35px} +.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit} +.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0} +.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6} +.alert-success hr{border-top-color:#c9e2b3} +.alert-success .alert-link{color:#2b542c} +.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1} +.alert-info hr{border-top-color:#a6e1ec} +.alert-info .alert-link{color:#245269} +.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc} +.alert-warning hr{border-top-color:#f7e1b5} +.alert-warning .alert-link{color:#66512c} +.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1} +.alert-danger hr{border-top-color:#e4b9c0} +.alert-danger .alert-link{color:#843534} +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0} +to{background-position:0 0} +} +@-o-keyframes progress-bar-stripes{from{background-position:40px 0} +to{background-position:0 0} +} +@keyframes progress-bar-stripes{from{background-position:40px 0} +to{background-position:0 0} +} +.progress{height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)} +.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease} +.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px} +.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite} +.progress-bar-success{background-color:#5cb85c} +.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} +.progress-striped .progress-bar-info,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} +.progress-bar-info{background-color:#5bc0de} +.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} +.progress-bar-warning{background-color:#f0ad4e} +.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} +.progress-bar-danger{background-color:#d9534f} +.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} +.media{margin-top:15px} +.media:first-child{margin-top:0} +.media,.media-body{overflow:hidden;zoom:1} +.media-body{width:10000px} +.media-object.img-thumbnail{max-width:none} +.media-right,.media>.pull-right{padding-left:10px} +.media-left,.media>.pull-left{padding-right:10px} +.media-body,.media-left,.media-right{display:table-cell;vertical-align:top} +.media-middle{vertical-align:middle} +.media-bottom{vertical-align:bottom} +.media-heading{margin-top:0;margin-bottom:5px} +.media-list{padding-left:0;list-style:none} +.list-group{padding-left:0;margin-bottom:20px} +.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd} +.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px} +.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px} +a.list-group-item,button.list-group-item{color:#555} +a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333} +a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5} +button.list-group-item{width:100%;text-align:left} +.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee} +.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit} +.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777} +.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7} +.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit} +.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef} +.list-group-item-success{color:#3c763d;background-color:#dff0d8} +a.list-group-item-success,button.list-group-item-success{color:#3c763d} +a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit} +a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6} +a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d} +.list-group-item-info{color:#31708f;background-color:#d9edf7} +a.list-group-item-info,button.list-group-item-info{color:#31708f} +a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit} +a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3} +a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f} +.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3} +a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b} +a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit} +a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc} +a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b} +.list-group-item-danger{color:#a94442;background-color:#f2dede} +a.list-group-item-danger,button.list-group-item-danger{color:#a94442} +a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit} +a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc} +a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442} +.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit} +.list-group-item-heading{margin-top:0;margin-bottom:5px} +.list-group-item-text{margin-bottom:0;line-height:1.3} +.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)} +.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0} +.panel-body{padding:15px} +.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px} +.panel-title{margin-top:0;font-size:16px} +.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px} +.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0} +.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0} +.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px} +.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px} +.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0} +.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0} +.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px} +.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px} +.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px} +.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px} +.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px} +.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px} +.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px} +.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd} +.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0} +.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0} +.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0} +.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0} +.panel>.table-responsive{margin-bottom:0;border:0} +.panel-group{margin-bottom:20px} +.panel-group .panel{margin-bottom:0;border-radius:4px} +.panel-group .panel+.panel{margin-top:5px} +.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd} +.panel-group .panel-footer{border-top:0} +.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd} +.panel-default{border-color:#ddd} +.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd} +.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd} +.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333} +.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd} +.panel-primary{border-color:#337ab7} +.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7} +.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7} +.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff} +.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7} +.panel-success{border-color:#d6e9c6} +.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6} +.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6} +.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d} +.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6} +.panel-info{border-color:#bce8f1} +.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1} +.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1} +.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f} +.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1} +.panel-warning{border-color:#faebcc} +.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc} +.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc} +.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b} +.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc} +.panel-danger{border-color:#ebccd1} +.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1} +.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1} +.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442} +.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1} +.embed-responsive{position:relative;display:block;height:0;padding:0} +.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0} +.embed-responsive-16by9{padding-bottom:56.25%} +.embed-responsive-4by3{padding-bottom:75%} +.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)} +.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)} +.well-lg{padding:24px;border-radius:6px} +.well-sm{padding:9px;border-radius:3px} +.close{float:right;font-size:21px;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2} +.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;line-break:auto;text-decoration:none} +.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5} +button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0} +.modal{position:fixed;z-index:1050;display:none;-webkit-overflow-scrolling:touch;outline:0} +.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)} +.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)} +.modal-open .modal{overflow-x:hidden;overflow-y:auto} +.modal-dialog{position:relative;width:auto;margin:10px} +.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)} +.modal-backdrop{position:fixed;z-index:1040;background-color:#000} +.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0} +.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5} +.modal-header{padding:15px;border-bottom:1px solid #e5e5e5} +.modal-header .close{margin-top:-2px} +.modal-title{margin:0;line-height:1.42857143} +.modal-body{position:relative;padding:15px} +.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5} +.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px} +.modal-footer .btn-group .btn+.btn{margin-left:-1px} +.modal-footer .btn-block+.btn-block{margin-left:0} +.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll} +@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto} +.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)} +.modal-sm{width:300px} +} +@media (min-width:992px){.modal-lg{width:900px} +} +.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;text-align:left;text-align:start;filter:alpha(opacity=0);opacity:0} +.tooltip.in{filter:alpha(opacity=90);opacity:.9} +.tooltip.top{padding:5px 0;margin-top:-3px} +.tooltip.right{padding:0 5px;margin-left:3px} +.tooltip.bottom{padding:5px 0;margin-top:3px} +.tooltip.left{padding:0 5px;margin-left:-3px} +.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px} +.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid} +.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;border-width:5px 5px 0;border-top-color:#000} +.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px} +.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px} +.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px} +.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000} +.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000} +.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0} +.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px} +.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px} +.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px} +.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;text-align:left;text-align:start;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)} +.carousel-caption,.carousel-control{color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)} +.popover.top{margin-top:-10px} +.popover.right{margin-left:10px} +.popover.bottom{margin-top:10px} +.popover.left{margin-left:-10px} +.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0} +.popover-content{padding:9px 14px} +.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid} +.carousel,.carousel-inner{position:relative} +.popover>.arrow{border-width:11px} +.popover>.arrow:after{content:"";border-width:10px} +.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0} +.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0} +.popover.left>.arrow:after,.popover.right>.arrow:after{bottom:-10px;content:" "} +.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0} +.popover.right>.arrow:after{left:1px;border-right-color:#fff;border-left-width:0} +.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)} +.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff} +.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)} +.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff} +.carousel-inner{width:100%;overflow:hidden} +.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left} +.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1} +@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px} +.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)} +.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)} +.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)} +} +.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block} +.carousel-inner>.active{left:0} +.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%} +.carousel-inner>.next{left:100%} +.carousel-inner>.prev{left:-100%} +.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0} +.carousel-inner>.active.left{left:-100%} +.carousel-inner>.active.right{left:100%} +.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5} +.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x} +.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x} +.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9} +.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px} +.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px} +.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px} +.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1} +.carousel-control .icon-prev:before{content:'\2039'} +.carousel-control .icon-next:before{content:'\203a'} +.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none} +.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px} +.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff} +.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px} +.carousel-caption .btn,.text-hide{text-shadow:none} +@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px} +.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px} +.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px} +.carousel-caption{right:20%;left:20%;padding-bottom:30px} +.carousel-indicators{bottom:20px} +} +.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "} +.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both} +.center-block{display:block;margin-right:auto;margin-left:auto} +.pull-right{float:right!important} +.pull-left{float:left!important} +.hide{display:none!important} +.show{display:block!important} +.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important} +.invisible{visibility:hidden} +.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0} +.affix{position:fixed} +@-ms-viewport{width:device-width} +@media (max-width:767px){.visible-xs{display:block!important} +table.visible-xs{display:table!important} +tr.visible-xs{display:table-row!important} +td.visible-xs,th.visible-xs{display:table-cell!important} +.visible-xs-block{display:block!important} +.visible-xs-inline{display:inline!important} +.visible-xs-inline-block{display:inline-block!important} +} +@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important} +table.visible-sm{display:table!important} +tr.visible-sm{display:table-row!important} +td.visible-sm,th.visible-sm{display:table-cell!important} +.visible-sm-block{display:block!important} +.visible-sm-inline{display:inline!important} +.visible-sm-inline-block{display:inline-block!important} +} +@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important} +table.visible-md{display:table!important} +tr.visible-md{display:table-row!important} +td.visible-md,th.visible-md{display:table-cell!important} +.visible-md-block{display:block!important} +.visible-md-inline{display:inline!important} +.visible-md-inline-block{display:inline-block!important} +} +@media (min-width:1200px){.visible-lg{display:block!important} +table.visible-lg{display:table!important} +tr.visible-lg{display:table-row!important} +td.visible-lg,th.visible-lg{display:table-cell!important} +.visible-lg-block{display:block!important} +.visible-lg-inline{display:inline!important} +.visible-lg-inline-block{display:inline-block!important} +.hidden-lg{display:none!important} +} +@media (max-width:767px){.hidden-xs{display:none!important} +} +@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important} +} +@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important} +} +.visible-print{display:none!important} +@media print{.visible-print{display:block!important} +table.visible-print{display:table!important} +tr.visible-print{display:table-row!important} +td.visible-print,th.visible-print{display:table-cell!important} +} +.visible-print-block{display:none!important} +@media print{.visible-print-block{display:block!important} +} +.visible-print-inline{display:none!important} +@media print{.visible-print-inline{display:inline!important} +} +.visible-print-inline-block{display:none!important} +@media print{.visible-print-inline-block{display:inline-block!important} +.hidden-print{display:none!important} +} +.hljs{display:block;background:#fff;padding:.5em;color:#333;overflow-x:auto} +.hljs-comment,.hljs-meta{color:#969896} +.hljs-emphasis,.hljs-quote,.hljs-string,.hljs-strong,.hljs-template-variable,.hljs-variable{color:#df5000} +.hljs-keyword,.hljs-selector-tag,.hljs-type{color:#a71d5d} +.hljs-attribute,.hljs-bullet,.hljs-literal,.hljs-symbol{color:#0086b3} +.hljs-name,.hljs-section{color:#63a35c} +.hljs-tag{color:#333} +.hljs-attr,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-title{color:#795da3} +.hljs-addition{color:#55a532;background-color:#eaffea} +.hljs-deletion{color:#bd2c00;background-color:#ffecec} +.hljs-link{text-decoration:underline} \ No newline at end of file diff --git a/docs/styles/docfx.vendor.js b/docs/styles/docfx.vendor.js new file mode 100644 index 000000000..ff662c6de --- /dev/null +++ b/docs/styles/docfx.vendor.js @@ -0,0 +1,55 @@ +/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ +return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("