diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json new file mode 100644 index 0000000..fccc806 --- /dev/null +++ b/.config/dotnet-tools.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "dotnet-ef": { + "version": "7.0.0", + "commands": [ + "dotnet-ef" + ] + } + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 426d76d..15eb0e2 100644 --- a/.gitignore +++ b/.gitignore @@ -396,3 +396,6 @@ FodyWeavers.xsd # JetBrains Rider *.sln.iml + +# Listfile +listfile.csv diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e078178 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,9 @@ +[submodule "CascLib"] + path = CascLib + url = https://github.com/WoW-Tools/CascLib +[submodule "DBCD"] + path = DBCD + url = https://github.com/wowdev/DBCD +[submodule "WoWDBDefs"] + path = WoWDBDefs + url = https://github.com/wowdev/WoWDBDefs diff --git a/CascLib b/CascLib new file mode 160000 index 0000000..2b194bd --- /dev/null +++ b/CascLib @@ -0,0 +1 @@ +Subproject commit 2b194bdd4edebeafda9fafa1c133b93119ea6dd0 diff --git a/Controllers/CASCController.cs b/Controllers/CASCController.cs new file mode 100644 index 0000000..20f01b6 --- /dev/null +++ b/Controllers/CASCController.cs @@ -0,0 +1,31 @@ +using Microsoft.AspNetCore.Mvc; +using wow.tools.local.Services; + +namespace wow.tools.local.Controllers +{ + [Route("casc/")] + [ApiController] + public class CASCController : Controller + { + [Route("fdid")] + [HttpGet] + public FileStreamResult File(uint fileDataID) + { + return new FileStreamResult(CASC.GetFileByID(fileDataID), "application/octet-stream") + { + FileDownloadName = fileDataID.ToString() + }; + } + + [Route("buildname")] + [HttpGet] + public string BuildName() + { + // WOW-46801patch10.0.2_PTR + var splitName= CASC.BuildName.Replace("WOW-", "").Split("patch"); + var buildName = splitName[1].Split("_")[0] + "." + splitName[0]; + Console.WriteLine("Set modelviewer build name as " + buildName); + return buildName; + } + } +} diff --git a/Controllers/DBCFindController.cs b/Controllers/DBCFindController.cs new file mode 100644 index 0000000..63533c1 --- /dev/null +++ b/Controllers/DBCFindController.cs @@ -0,0 +1,138 @@ +using DBCD; +using wow.tools.local.Services; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace wow.tools.local.Controllers +{ + [Route("dbc/find")] + [ApiController] + public class DBCFindController : ControllerBase + { + private readonly DBCManager dbcManager; + + public DBCFindController(IDBCManager dbcManager) => this.dbcManager = (DBCManager)dbcManager; + + // GET: find/ + [HttpGet] + public string Get() + { + return "No DBC selected!"; + } + + // GET: find/name + [HttpGet("{name}")] + public async Task>> Get(string name, string build, string col, int val, bool useHotfixes = false, bool calcOffset = true) + { + Console.WriteLine("Finding results for " + name + "::" + col + " (" + build + ", hotfixes: " + useHotfixes + ") value " + val); + + var storage = await dbcManager.GetOrLoad(name, build, useHotfixes); + + var result = new List>(); + + if (!storage.Values.Any()) + { + return result; + } + + if (!calcOffset && col == "ID") + { + if (storage.TryGetValue(val, out DBCDRow row)) + { + for (var i = 0; i < storage.AvailableColumns.Length; ++i) + { + string fieldName = storage.AvailableColumns[i]; + + if (fieldName != col) + continue; + + var field = row[fieldName]; + + // Don't think FKs to arrays are possible, so only check regular value + if (field.ToString() == val.ToString()) + { + var newDict = new Dictionary(); + for (var j = 0; j < storage.AvailableColumns.Length; ++j) + { + string subfieldName = storage.AvailableColumns[j]; + var subfield = row[subfieldName]; + + if (subfield is Array a) + { + for (var k = 0; k < a.Length; k++) + { + newDict.Add(subfieldName + "[" + k + "]", a.GetValue(k).ToString()); + } + } + else + { + newDict.Add(subfieldName, subfield.ToString()); + } + } + + result.Add(newDict); + } + } + } + } + else + { + var arrIndex = 0; + + if (col.Contains("[")) + { + arrIndex = int.Parse(col.Split("[")[1].Replace("]", string.Empty)); + col = col.Split("[")[0]; + } + + foreach (DBCDRow row in storage.Values) + { + for (var i = 0; i < storage.AvailableColumns.Length; ++i) + { + string fieldName = storage.AvailableColumns[i]; + + if (fieldName != col) + continue; + + var field = row[fieldName]; + + if (field is Array arrayField) + { + field = arrayField.GetValue(arrIndex).ToString(); + } + + // Don't think FKs to arrays are possible, so only check regular value + if (field.ToString() == val.ToString()) + { + var newDict = new Dictionary(); + for (var j = 0; j < storage.AvailableColumns.Length; ++j) + { + string subfieldName = storage.AvailableColumns[j]; + var subfield = row[subfieldName]; + + if (subfield is Array a) + { + for (var k = 0; k < a.Length; k++) + { + newDict.Add(subfieldName + "[" + k + "]", a.GetValue(k).ToString()); + } + } + else + { + newDict.Add(subfieldName, subfield.ToString()); + } + } + + result.Add(newDict); + } + } + } + } + + return result; + } + } +} \ No newline at end of file diff --git a/Controllers/DBCPeekController.cs b/Controllers/DBCPeekController.cs new file mode 100644 index 0000000..cdf86f6 --- /dev/null +++ b/Controllers/DBCPeekController.cs @@ -0,0 +1,145 @@ +using DBCD; +using wow.tools.local.Services; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using CASCLib; + +namespace wow.tools.local.Controllers +{ + [Route("dbc/peek")] + [ApiController] + public class DBCPeekController : ControllerBase + { + private readonly DBCManager dbcManager; + + public DBCPeekController(IDBCManager dbcManager) + { + this.dbcManager = dbcManager as DBCManager; + } + + public class PeekResult + { + public Dictionary values { get; set; } + public int offset { get; set; } + } + + // GET: peek/ + [HttpGet] + public string Get() + { + return "No DBC selected!"; + } + + // GET: peek/name + [HttpGet("{name}")] + public async Task Get(string name, string build, string col, int val, bool useHotfixes = false, string pushIDs = "") + { + Console.WriteLine("Serving peek row for " + name + "::" + col + " (" + build + ", hotfixes: " + useHotfixes + ") value " + val); + + List pushIDList = null; + + if (useHotfixes && pushIDs != "") + { + pushIDList = new List(); + + var pushIDsExploded = pushIDs.Split(','); + + if (pushIDsExploded.Length > 0) + { + foreach (var pushID in pushIDs.Split(',')) + { + if (int.TryParse(pushID, out int pushIDInt)) + { + pushIDList.Add(pushIDInt); + } + } + } + } + + var storage = await dbcManager.GetOrLoad(name, build, useHotfixes, LocaleFlags.All_WoW, pushIDList); + + var result = new PeekResult { values = new Dictionary() }; + + if (!storage.Values.Any()) + { + return result; + } + + if (col == "ID" && storage.TryGetValue(val, out var rowByIndex)) + { + foreach (var fieldName in storage.AvailableColumns) + { + if (fieldName != col) + continue; + + var field = rowByIndex[fieldName]; + + // Don't think FKs to arrays are possible, so only check regular value + if (field.ToString() != val.ToString()) continue; + + foreach (var subfieldName in storage.AvailableColumns) + { + var subfield = rowByIndex[subfieldName]; + + if (subfield is Array a) + { + for (var k = 0; k < a.Length; k++) + { + result.values.Add(subfieldName + "[" + k + "]", a.GetValue(k).ToString()); + } + } + else + { + result.values.Add(subfieldName, subfield.ToString()); + } + } + } + } + else + { + var recordFound = false; + + foreach (var row in storage.Values) + { + if (recordFound) + continue; + + foreach (var fieldName in storage.AvailableColumns) + { + if (fieldName != col) + continue; + + var field = row[fieldName]; + + // Don't think FKs to arrays are possible, so only check regular value + if (field.ToString() != val.ToString()) continue; + + foreach (var subfieldName in storage.AvailableColumns) + { + var subfield = row[subfieldName]; + + if (subfield is Array a) + { + for (var k = 0; k < a.Length; k++) + { + result.values.Add(subfieldName + "[" + k + "]", a.GetValue(k).ToString()); + } + } + else + { + result.values.Add(subfieldName, subfield.ToString()); + } + } + + recordFound = true; + } + } + } + + return result; + } + } +} \ No newline at end of file diff --git a/Controllers/ListfileController.cs b/Controllers/ListfileController.cs new file mode 100644 index 0000000..70feb60 --- /dev/null +++ b/Controllers/ListfileController.cs @@ -0,0 +1,91 @@ +using Microsoft.AspNetCore.Mvc; +using wow.tools.local.Services; + +namespace wow.tools.local.Controllers +{ + [Route("listfile/")] + [ApiController] + public class ListfileController : Controller + { + [Route("datatables")] + [HttpGet] + public DataTablesResult DataTables(int draw, int start, int length) + { + var result = new DataTablesResult() + { + draw = draw, + recordsTotal = CASC.M2Listfile.Count, + data = new List>() + }; + + var listfileResults = new Dictionary(); + + if (Request.Query.TryGetValue("search[value]", out var search) && !string.IsNullOrEmpty(search)) + { + var searchStr = search.ToString().ToLower(); + listfileResults = CASC.M2Listfile.Where(x => x.Value.ToLower().Contains(searchStr)).ToDictionary(x => x.Key, x => x.Value); + result.recordsFiltered = listfileResults.Count(); + } + else + { + listfileResults = CASC.M2Listfile.ToDictionary(x => x.Key, x => x.Value); + result.recordsFiltered = CASC.M2Listfile.Count; + } + + var rows = new List(); + + foreach (var listfileResult in listfileResults.Skip(start).Take(length)) + { + result.data.Add( + new List() { + listfileResult.Key.ToString(), // ID + listfileResult.Value, // Filename + "", // Lookup + "", // Versions + Path.GetExtension(listfileResult.Value).Replace(".", "") // Type + }); + } + + return result; + } + + [Route("info")] + [HttpGet] + public string Info(int filename, string filedataid) + { + var split = filedataid.Split(","); + if(split.Length > 1) + { + foreach(var id in split) + { + if (CASC.Listfile.TryGetValue(int.Parse(id), out string name)) + { + return name; + } + } + + return ""; + } + else + { + if (CASC.Listfile.TryGetValue(int.Parse(filedataid), out string name)) + { + return name; + } + else + { + return ""; + } + } + + } + } + + public struct DataTablesResult + { + public int draw { get; set; } + public int recordsFiltered { get; set; } + public int recordsTotal { get; set; } + public List> data { get; set; } + } +} diff --git a/DBCD b/DBCD new file mode 160000 index 0000000..9314423 --- /dev/null +++ b/DBCD @@ -0,0 +1 @@ +Subproject commit 9314423d133c5c79f107d7ad79be8fe20f0e56a6 diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..3b54c25 --- /dev/null +++ b/Program.cs @@ -0,0 +1,44 @@ +using CASCLib; +using Microsoft.AspNetCore.StaticFiles; +using wow.tools.local.Services; + +namespace wow.tools.local +{ + public class Program + { + public static void Main(string[] args) + { + try + { + CASC.InitCasc(new BackgroundWorkerEx(), SettingsManager.wowFolder, SettingsManager.wowProduct); + } + catch (Exception e) + { + Console.WriteLine("Exception initializing CASC: " + e.Message); + } + + try + { + CASC.LoadListfile(); + } + catch (Exception e) + { + Console.WriteLine("Exception loading listfile: " + e.Message); + } + + CreateWebHostBuilder(args).Build().Run(); + } + + public static IHostBuilder CreateWebHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.ConfigureKestrel(serverOptions => + { + serverOptions.Limits.MaxConcurrentConnections = 500; + serverOptions.Limits.MaxConcurrentUpgradedConnections = 500; + }) + .UseStartup(); + }); + } +} \ No newline at end of file diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json new file mode 100644 index 0000000..3e6f761 --- /dev/null +++ b/Properties/launchSettings.json @@ -0,0 +1,37 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:40354", + "sslPort": 44379 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5080", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7053;http://localhost:5080", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Services/CASC.cs b/Services/CASC.cs new file mode 100644 index 0000000..4fde3ce --- /dev/null +++ b/Services/CASC.cs @@ -0,0 +1,106 @@ +using CASCLib; +using System.Net; +using System.Reflection.Metadata.Ecma335; + +namespace wow.tools.local.Services +{ + public class CASC + { + private static CASCHandler cascHandler; + public static bool IsCASCInit = false; + public static string BuildName; + public static Dictionary Listfile = new(); + public static Dictionary ListfileReverse = new(); + public static SortedDictionary M2Listfile = new(); + + public static void InitCasc(BackgroundWorkerEx worker = null, string? basedir = null, string program = "wowt", LocaleFlags locale = LocaleFlags.enUS) + { + CASCConfig.LoadFlags &= ~(LoadFlags.Download | LoadFlags.Install); + CASCConfig.ValidateData = false; + CASCConfig.ThrowOnFileNotFound = false; + + if (basedir == null) + { + Console.WriteLine("Initializing CASC from web for program " + program); + cascHandler = CASCHandler.OpenOnlineStorage(program, "eu", worker); + } + else + { + basedir = basedir.Replace("_retail_", "").Replace("_ptr_", ""); + Console.WriteLine("Initializing CASC from local disk with basedir " + basedir + " and program " + program); + cascHandler = CASCHandler.OpenLocalStorage(basedir, program, worker); + } + + BuildName = cascHandler.Config.BuildName; + + cascHandler.Root.SetFlags(locale); + + IsCASCInit = true; + Console.WriteLine("Finished loading " + BuildName); + } + + public static void LoadListfile() + { + if (!File.Exists("listfile.csv")) + { + Console.WriteLine("Downloading listfile"); + using (var client = new WebClient()) + { + client.DownloadFile(SettingsManager.listfileURL, "listfile.csv"); + } + } + + if (!File.Exists("listfile.csv")) + { + throw new FileNotFoundException("Could not find listfile.csv"); + } + + Console.WriteLine("Loading listfile"); + + foreach (var line in File.ReadAllLines("listfile.csv")) + { + if (string.IsNullOrEmpty(line)) + continue; + + if (!line.EndsWith(".blp") && !line.EndsWith(".m2") && !line.EndsWith(".db2")) + continue; + + var splitLine = line.Split(";"); + var fdid = int.Parse(splitLine[0]); + + if (!cascHandler.FileExists(fdid)) + continue; + + Listfile.Add(fdid, splitLine[1]); + ListfileReverse.Add(splitLine[1], fdid); + + // Pre-filtered M2 list + if (line.EndsWith(".m2")) + M2Listfile.Add(fdid, splitLine[1]); + } + } + + public static Stream GetFileByID(uint filedataid) + { + try + { + return cascHandler.OpenFile((int)filedataid); + } + catch(Exception e) + { + Console.WriteLine("Exception retrieving FileDataID " + filedataid + ": " + e.Message); + return new MemoryStream(); + } + } + + public static Stream GetFileByName(string filename) + { + if (ListfileReverse.TryGetValue(filename.ToLower(), out int fileDataID)) + { + return cascHandler.OpenFile(fileDataID); + } + + throw new FileNotFoundException("Could not find " + filename + " in listfile"); + } + } +} diff --git a/Services/DBCManager.cs b/Services/DBCManager.cs new file mode 100644 index 0000000..7fe2fd5 --- /dev/null +++ b/Services/DBCManager.cs @@ -0,0 +1,186 @@ +using DBCD; +using DBCD.Providers; +using wow.tools.local.Controllers; +using DBFileReaderLib; +using Microsoft.Extensions.Caching.Memory; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using CASCLib; +using wow.tools.Services; + +namespace wow.tools.local.Services +{ + public class DBCManager : IDBCManager + { + private readonly DBDProvider dbdProvider; + + private MemoryCache Cache; + private ConcurrentDictionary<(string, string, bool), SemaphoreSlim> Locks; + + public DBCManager(IDBDProvider dbdProvider) + { + this.dbdProvider = dbdProvider as DBDProvider; + + Cache = new MemoryCache(new MemoryCacheOptions() { SizeLimit = 250 }); + Locks = new ConcurrentDictionary<(string, string, bool), SemaphoreSlim>(); + } + + public async Task GetOrLoad(string name, string build) + { + return await GetOrLoad(name, build, false); + } + + public async Task GetOrLoad(string name, string build, bool useHotfixes = false, LocaleFlags locale = LocaleFlags.All_WoW, List pushIDFilter = null) + { + if (locale != LocaleFlags.All_WoW) + { + return LoadDBC(name, build, useHotfixes, locale); + } + + if (pushIDFilter != null) + { + return LoadDBC(name, build, useHotfixes, locale, pushIDFilter); + } + + if (Cache.TryGetValue((name, build, useHotfixes), out IDBCDStorage cachedDBC)) + return cachedDBC; + + SemaphoreSlim mylock = Locks.GetOrAdd((name, build, useHotfixes), k => new SemaphoreSlim(1, 1)); + + await mylock.WaitAsync(); + + try + { + if (!Cache.TryGetValue((name, build, useHotfixes), out cachedDBC)) + { + // Key not in cache, load DBC + Logger.WriteLine("DBC " + name + " for build " + build + " (hotfixes: " + useHotfixes + ") is not cached, loading!"); + cachedDBC = LoadDBC(name, build, useHotfixes); + Cache.Set((name, build, useHotfixes), cachedDBC, new MemoryCacheEntryOptions().SetSize(1)); + } + } + finally + { + mylock.Release(); + } + + return cachedDBC; + } + + private IDBCDStorage LoadDBC(string name, string build, bool useHotfixes = false, LocaleFlags locale = LocaleFlags.All_WoW, List pushIDFilter = null) + { + var dbcProvider = new DBCProvider(); + if (locale != LocaleFlags.All_WoW) + { + dbcProvider.localeFlags = locale; + } + + var dbcd = new DBCD.DBCD(dbcProvider, dbdProvider); + var storage = dbcd.Load(name, build); + + dbcProvider.localeFlags = LocaleFlags.All_WoW; + + var splitBuild = build.Split('.'); + + if (splitBuild.Length != 4) + { + throw new Exception("Invalid build!"); + } + + var buildNumber = uint.Parse(splitBuild[3]); + + if (!useHotfixes) + return storage; + + if (!HotfixManager.hotfixReaders.ContainsKey(buildNumber)) + HotfixManager.LoadCaches(buildNumber); + + if (HotfixManager.hotfixReaders.ContainsKey(buildNumber)) + { + //storage = storage.ApplyingHotfixes(HotfixManager.hotfixReaders[buildNumber], pushIDFilter); + + // DBCD PR #17 support + if (pushIDFilter != null) + { + storage = storage.ApplyingHotfixes(HotfixManager.hotfixReaders[buildNumber], (row, shouldDelete) => + { + if (!pushIDFilter.Contains(row.PushId)) + return RowOp.Ignore; + + return HotfixReader.DefaultProcessor(row, shouldDelete); + }); + } + else + { + storage = storage.ApplyingHotfixes(HotfixManager.hotfixReaders[buildNumber]); + } + + } + + return storage; + } + + public void ClearCache() + { + Cache.Dispose(); + Cache = new MemoryCache(new MemoryCacheOptions() { SizeLimit = 250 }); + } + + public void ClearHotfixCache() + { + // TODO: Only clear hotfix caches? :( + Cache.Dispose(); + Cache = new MemoryCache(new MemoryCacheOptions() { SizeLimit = 250 }); + } + + public async Task> FindRecords(string name, string build, string col, int val, bool single = false) + { + var rowList = new List(); + + var storage = await GetOrLoad(name, build); + if (col == "ID") + { + if (storage.TryGetValue(val, out var row)) + { + foreach (var fieldName in storage.AvailableColumns) + { + if (fieldName != col) + continue; + + // Don't think FKs to arrays are possible, so only check regular value + if (row[fieldName].ToString() == val.ToString()) + { + rowList.Add(row); + if (single) + return rowList; + } + } + } + } + else + { + foreach (var row in storage.Values) + { + foreach (var fieldName in storage.AvailableColumns) + { + if (fieldName != col) + continue; + + // Don't think FKs to arrays are possible, so only check regular value + if (row[fieldName].ToString() == val.ToString()) + { + rowList.Add(row); + if (single) + return rowList; + } + } + } + } + + return rowList; + } + } +} \ No newline at end of file diff --git a/Services/DBCProvider.cs b/Services/DBCProvider.cs new file mode 100644 index 0000000..1220572 --- /dev/null +++ b/Services/DBCProvider.cs @@ -0,0 +1,28 @@ +using CASCLib; +using DBCD.Providers; +using wow.tools.local.Controllers; +using System; +using System.IO; +using System.Net.Http; + +namespace wow.tools.local.Services +{ + public class DBCProvider : IDBCProvider + { + public LocaleFlags localeFlags = LocaleFlags.All_WoW; + + public Stream StreamForTableName(string tableName, string build) + { + if (tableName.Contains(".")) + throw new Exception("Invalid DBC name!"); + + if (string.IsNullOrEmpty(build)) + throw new Exception("No build given!"); + + tableName = tableName.ToLower(); + + var fullFileName = "dbfilesclient/" + tableName + ".db2"; + return CASC.GetFileByName(fullFileName); + } + } +} \ No newline at end of file diff --git a/Services/DBDProvider.cs b/Services/DBDProvider.cs new file mode 100644 index 0000000..807385c --- /dev/null +++ b/Services/DBDProvider.cs @@ -0,0 +1,55 @@ +using DBCD.Providers; +using DBDefsLib; +using wow.tools.local; + +namespace wow.tools.Services +{ + public class DBDProvider : IDBDProvider + { + private readonly DBDReader dbdReader; + private Dictionary definitionLookup; + + public DBDProvider() + { + dbdReader = new DBDReader(); + LoadDefinitions(); + } + + public int LoadDefinitions() + { + var definitionsDir = SettingsManager.definitionDir; + Console.WriteLine("Reloading definitions from directory " + definitionsDir); + + // lookup needs both filepath and def for DBCD to work + // also no longer case sensitive now + var definitionFiles = Directory.EnumerateFiles(definitionsDir); + definitionLookup = definitionFiles.ToDictionary(x => Path.GetFileNameWithoutExtension(x), x => (x, dbdReader.Read(x)), StringComparer.OrdinalIgnoreCase); + + Console.WriteLine("Loaded " + definitionLookup.Count + " definitions!"); + + return definitionLookup.Count; + } + + public Stream StreamForTableName(string tableName, string build = null) + { + tableName = Path.GetFileNameWithoutExtension(tableName); + + if (definitionLookup.TryGetValue(tableName, out var lookup)) + return new FileStream(lookup.FilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + + throw new FileNotFoundException("Definition for " + tableName + " not found"); + } + + public bool TryGetDefinition(string tableName, out Structs.DBDefinition definition) + { + if (definitionLookup.TryGetValue(tableName, out var lookup)) + { + definition = lookup.Definition; + return true; + } + + definition = default; + return false; + } + } +} \ No newline at end of file diff --git a/Services/HotfixManager.cs b/Services/HotfixManager.cs new file mode 100644 index 0000000..750a4a2 --- /dev/null +++ b/Services/HotfixManager.cs @@ -0,0 +1,78 @@ +using DBFileReaderLib; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace wow.tools.local.Services +{ + public static class HotfixManager + { + public static Dictionary hotfixReaders = new Dictionary(); + + public static Dictionary> GetHotfixDBsPerBuild(uint targetBuild = 0) + { + Console.WriteLine("Listing hotfixes for build " + targetBuild); + if (targetBuild == 0) + throw new Exception("Tried reloading hotfixes for invalid build " + targetBuild); + + var filesPerBuild = new Dictionary>(); + + if (!filesPerBuild.ContainsKey(targetBuild)) + { + filesPerBuild.Add(targetBuild, Directory.GetFiles("caches", "DBCache-" + targetBuild + "-*.bin").ToList()); + } + + return filesPerBuild; + } + + public static void LoadCaches(uint targetBuild = 0) + { + var filesPerBuild = GetHotfixDBsPerBuild(targetBuild); + + if (targetBuild != 0) + { + Console.WriteLine("Reloading hotfixes for build " + targetBuild + ".."); + hotfixReaders.Remove(targetBuild); + } + else + { + Console.WriteLine("Reloading all hotfixes.."); + hotfixReaders.Clear(); + } + + foreach (var fileList in filesPerBuild) + { + if (fileList.Value.Count == 0) + continue; + hotfixReaders.Add(fileList.Key, new HotfixReader(fileList.Value[0])); + hotfixReaders[fileList.Key].CombineCaches(fileList.Value.ToArray()); + Console.WriteLine("Loaded " + fileList.Value.Count + " hotfix DBs for build " + fileList.Key + "!"); + } + } + + public static void LoadCache(uint targetBuild, string file) + { + if (!hotfixReaders.ContainsKey(targetBuild)) + { + LoadCaches(targetBuild); + } + else + { + Console.WriteLine("Adding " + file + " for " + targetBuild + " to loaded caches"); + hotfixReaders[targetBuild].CombineCache(file); + } + } + + public static void AddCache(MemoryStream cache, uint build, int userID) + { + var filename = Path.Combine("caches", "DBCache-" + build + "-" + userID + "-" + ((DateTimeOffset)DateTime.UtcNow).ToUnixTimeSeconds() + "-" + DateTime.Now.Millisecond + ".bin"); + using (var stream = File.Create(filename)) + { + cache.CopyTo(stream); + } + + LoadCache(build, filename); + } + } +} \ No newline at end of file diff --git a/Services/IDBCManager.cs b/Services/IDBCManager.cs new file mode 100644 index 0000000..617f6ea --- /dev/null +++ b/Services/IDBCManager.cs @@ -0,0 +1,9 @@ +using DBCD; + +namespace wow.tools.local.Services +{ + public interface IDBCManager + { + Task GetOrLoad(string name, string build); + } +} \ No newline at end of file diff --git a/SettingsManager.cs b/SettingsManager.cs new file mode 100644 index 0000000..7cd1a4d --- /dev/null +++ b/SettingsManager.cs @@ -0,0 +1,31 @@ +using System.IO; +using Microsoft.Extensions.Configuration; + +namespace wow.tools.local +{ + public static class SettingsManager + { + public static string definitionDir; + public static string listfileURL; + public static string? wowFolder; + public static string wowProduct; + + static SettingsManager() + { + LoadSettings(); + } + + public static void LoadSettings() + { + var config = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("config.json", optional: false, reloadOnChange: false).Build(); + definitionDir = config.GetSection("config")["definitionDir"]; + listfileURL = config.GetSection("config")["listfileURL"]; + + wowFolder = config.GetSection("config")["wowFolder"]; + if (string.IsNullOrEmpty(wowFolder)) + wowFolder = null; + + wowProduct = config.GetSection("config")["wowProduct"]; + } + } +} \ No newline at end of file diff --git a/Startup.cs b/Startup.cs new file mode 100644 index 0000000..4d150e8 --- /dev/null +++ b/Startup.cs @@ -0,0 +1,51 @@ +using DBCD.Providers; +using Microsoft.AspNetCore.ResponseCompression; +using Microsoft.AspNetCore.StaticFiles; +using wow.tools.local.Services; +using wow.tools.Services; + +namespace wow.tools.local +{ + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddControllers(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + app.UseRouting(); + app.UseEndpoints(endpoints => + { + endpoints.MapControllers(); + }); + + app.UseDefaultFiles(); + + var extensionProvider = new FileExtensionContentTypeProvider(); + extensionProvider.Mappings.Add(".data", "application/octet-stream"); + + app.UseStaticFiles(new StaticFileOptions + { + ContentTypeProvider = extensionProvider + }); + } + } +} \ No newline at end of file diff --git a/WoWDBDefs b/WoWDBDefs new file mode 160000 index 0000000..f18fed0 --- /dev/null +++ b/WoWDBDefs @@ -0,0 +1 @@ +Subproject commit f18fed0c27b795d54c439b76ed0dec1aa45c9471 diff --git a/appsettings.Development.json b/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/appsettings.json b/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/config.json b/config.json new file mode 100644 index 0000000..b9604db --- /dev/null +++ b/config.json @@ -0,0 +1,8 @@ +{ + "config": { + "definitionDir": "WoWDBDefs/definitions", + "listfileURL": "https://github.com/wowdev/wow-listfile/raw/master/community-listfile.csv", + "wowFolder": "C:/World of Warcraft", + "wowProduct": "wowt" + } +} \ No newline at end of file diff --git a/wow.tools.local.csproj b/wow.tools.local.csproj new file mode 100644 index 0000000..f75f2ab --- /dev/null +++ b/wow.tools.local.csproj @@ -0,0 +1,29 @@ + + + + net7.0 + enable + enable + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wow.tools.local.sln b/wow.tools.local.sln new file mode 100644 index 0000000..849f8f8 --- /dev/null +++ b/wow.tools.local.sln @@ -0,0 +1,43 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33110.190 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "wow.tools.local", "wow.tools.local.csproj", "{7FBFEC01-2D6F-4227-A246-4078FADAD607}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CascLib", "CascLib\CascLib\CascLib.csproj", "{9C61914A-C8C0-4A64-BFFA-BF1ADC4054B2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DBCD", "DBCD\DBCD\DBCD.csproj", "{1F5BD03F-5623-4C39-8AA6-B3830B0BA8E6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DBFileReaderLib", "DBCD\DBFileReaderLib\DBFileReaderLib.csproj", "{3286FCEA-A7D6-443C-A178-56A94BFC4166}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7FBFEC01-2D6F-4227-A246-4078FADAD607}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7FBFEC01-2D6F-4227-A246-4078FADAD607}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7FBFEC01-2D6F-4227-A246-4078FADAD607}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7FBFEC01-2D6F-4227-A246-4078FADAD607}.Release|Any CPU.Build.0 = Release|Any CPU + {9C61914A-C8C0-4A64-BFFA-BF1ADC4054B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9C61914A-C8C0-4A64-BFFA-BF1ADC4054B2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9C61914A-C8C0-4A64-BFFA-BF1ADC4054B2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9C61914A-C8C0-4A64-BFFA-BF1ADC4054B2}.Release|Any CPU.Build.0 = Release|Any CPU + {1F5BD03F-5623-4C39-8AA6-B3830B0BA8E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1F5BD03F-5623-4C39-8AA6-B3830B0BA8E6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1F5BD03F-5623-4C39-8AA6-B3830B0BA8E6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1F5BD03F-5623-4C39-8AA6-B3830B0BA8E6}.Release|Any CPU.Build.0 = Release|Any CPU + {3286FCEA-A7D6-443C-A178-56A94BFC4166}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3286FCEA-A7D6-443C-A178-56A94BFC4166}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3286FCEA-A7D6-443C-A178-56A94BFC4166}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3286FCEA-A7D6-443C-A178-56A94BFC4166}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {2C5C4859-31E8-4E3F-8234-D9D47BC5E998} + EndGlobalSection +EndGlobal diff --git a/wwwroot/css/bootstrap.min.css b/wwwroot/css/bootstrap.min.css new file mode 100644 index 0000000..83a71b1 --- /dev/null +++ b/wwwroot/css/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.6.2 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Copyright 2011-2022 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:.875em;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.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-lg-auto,.col-md,.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-md-auto,.col-sm,.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-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.width{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.width{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:1px solid #adb5bd}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background-color:transparent;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{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);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentcolor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentcolor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.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-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{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 #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/wwwroot/css/datatables.min.css b/wwwroot/css/datatables.min.css new file mode 100644 index 0000000..994a48f --- /dev/null +++ b/wwwroot/css/datatables.min.css @@ -0,0 +1,15 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs4/dt-1.12.1 + * + * Included libraries: + * DataTables 1.12.1 + */ + +table.dataTable td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{height:1em;width:1em;margin-top:-9px;display:inline-block;color:white;border:.15em solid white;border-radius:1em;box-shadow:0 0 .2em #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:"Courier New",Courier,monospace;line-height:1em;content:"+";background-color:#31b131}table.dataTable tr.dt-hasChild td.dt-control:before{content:"-";background-color:#d33333}table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting_asc_disabled,table.dataTable thead>tr>th.sorting_desc_disabled,table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting_asc_disabled,table.dataTable thead>tr>td.sorting_desc_disabled{cursor:pointer;position:relative;padding-right:26px}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after{position:absolute;display:block;opacity:.125;right:10px;line-height:9px;font-size:.9em}table.dataTable thead>tr>th.sorting:before,table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:before,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>th.sorting_desc_disabled:before,table.dataTable thead>tr>td.sorting:before,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:before,table.dataTable thead>tr>td.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:before{bottom:50%;content:"▴"}table.dataTable thead>tr>th.sorting:after,table.dataTable thead>tr>th.sorting_asc:after,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>th.sorting_asc_disabled:after,table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting:after,table.dataTable thead>tr>td.sorting_asc:after,table.dataTable thead>tr>td.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc_disabled:after,table.dataTable thead>tr>td.sorting_desc_disabled:after{top:50%;content:"▾"}table.dataTable thead>tr>th.sorting_asc:before,table.dataTable thead>tr>th.sorting_desc:after,table.dataTable thead>tr>td.sorting_asc:before,table.dataTable thead>tr>td.sorting_desc:after{opacity:.6}table.dataTable thead>tr>th.sorting_desc_disabled:after,table.dataTable thead>tr>th.sorting_asc_disabled:before,table.dataTable thead>tr>td.sorting_desc_disabled:after,table.dataTable thead>tr>td.sorting_asc_disabled:before{display:none}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}div.dataTables_scrollBody table.dataTable thead>tr>th:before,div.dataTables_scrollBody table.dataTable thead>tr>th:after,div.dataTables_scrollBody table.dataTable thead>tr>td:before,div.dataTables_scrollBody table.dataTable thead>tr>td:after{display:none}div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:2px}div.dataTables_processing>div:last-child{position:relative;width:80px;height:15px;margin:1em auto}div.dataTables_processing>div:last-child>div{position:absolute;top:0;width:13px;height:13px;border-radius:50%;background:rgba(2, 117, 216, 0.9);animation-timing-function:cubic-bezier(0, 1, 1, 0)}div.dataTables_processing>div:last-child>div:nth-child(1){left:8px;animation:datatables-loader-1 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(2){left:8px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(3){left:32px;animation:datatables-loader-2 .6s infinite}div.dataTables_processing>div:last-child>div:nth-child(4){left:56px;animation:datatables-loader-3 .6s infinite}@keyframes datatables-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes datatables-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes datatables-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th,table.dataTable thead td,table.dataTable tfoot th,table.dataTable tfoot td{text-align:left}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important;border-spacing:0}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.table-striped>tbody>tr:nth-of-type(2n+1){background-color:transparent}table.dataTable>tbody>tr{background-color:transparent}table.dataTable>tbody>tr.selected>*{box-shadow:inset 0 0 0 9999px rgba(2, 117, 216, 0.9);color:white}table.dataTable.table-striped>tbody>tr.odd>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.05)}table.dataTable.table-striped>tbody>tr.odd.selected>*{box-shadow:inset 0 0 0 9999px rgba(2, 117, 216, 0.95)}table.dataTable.table-hover>tbody>tr:hover>*{box-shadow:inset 0 0 0 9999px rgba(0, 0, 0, 0.075)}table.dataTable.table-hover>tbody>tr.selected:hover>*{box-shadow:inset 0 0 0 9999px rgba(2, 117, 216, 0.975)}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:.85em}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody>table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody>table>thead .sorting:before,div.dataTables_scrollBody>table>thead .sorting_asc:before,div.dataTables_scrollBody>table>thead .sorting_desc:before,div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_desc:after{display:none}div.dataTables_scrollBody>table>tbody tr:first-child th,div.dataTables_scrollBody>table>tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:center !important}}table.dataTable.table-sm>thead>tr>th:not(.sorting_disabled){padding-right:20px}table.table-bordered.dataTable{border-right-width:0}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:1px}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0} + + diff --git a/wwwroot/css/font-awesome.min.css b/wwwroot/css/font-awesome.min.css new file mode 100644 index 0000000..540440c --- /dev/null +++ b/wwwroot/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.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} diff --git a/wwwroot/css/modelviewer.css b/wwwroot/css/modelviewer.css new file mode 100644 index 0000000..0f8a334 --- /dev/null +++ b/wwwroot/css/modelviewer.css @@ -0,0 +1,310 @@ +/* Root styling */ +html, body{ + width: 100%; + height: 100%; + margin: 0px; + background-color: black; + overflow: hidden; + padding: 0px; +} + +#mvTabs{ + height: calc(100% - 200px); +} + +.tab-pane{ + height: 100%; +} +/* Canvas */ +#wowcanvas { + width: 100%; + height: 100%; + touch-action: none; +} + +#fpsLabel { + position: absolute; + right: 0px; + top: 60px; + color: #999; + cursor: default; + user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} + +#eventLabel { + position: absolute; + right: 20px; + top: 80px; + color: #999; + cursor: default; + user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} + +#downloadLabel{ + position: absolute; + right: 20px; + top: 100px; + color: #999; + cursor: default; + user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} +/* Menu */ +.hamburger { + position: absolute; + cursor: pointer; + top: 35px; + left: 20px; + width: 30px; + height: 30px; + border: 0; + background-color: rgba(255,255,255,.5); + transition: background-color 0.1s ease; + border-radius: 10%; + outline: none; + z-index: 2; +} + +.hamburger:hover, +.hamburger:focus { + background-color: var(--background-color); +} + +.sidebar { + left: 0; + width: 500px; + height: 100%; + border-bottom-right-radius: 6px; + border-right: 1px solid var(--border-color); + padding-top: 10px; + transition: left 0.3s ease-out; +} + +.sidebar.closed { + left: -500px; +} + +.sidebar select { + height: 32px; + margin: 0; + border: 0; + outline: 0; + background-color: transparent; + border-bottom: 1px solid #333; +} + +.overlay{ + background-color: var(--background-color); + position: absolute; + z-index: 1; + overflow: auto; +} + +.model-control { + top: 57px; + right: 0; + width: 450px; + height: 100%; + border-bottom-left-radius: 6px; + border-left: 1px solid var(--border-color); + padding-top: 10px; + transition: right 0.3s ease-out; +} + +.model-control.closed { + right: -450px; +} + +/* Controls */ +.controls{ + bottom: 0; + right: 0; + width: 350px; + height: auto; + border-top-left-radius: 6px; + transition: right 0.3s ease-out; + background-color: transparent; + text-align: right; +} + +.controls.closed{ + right: -450px; +} + +.controls select{ + background-color: var(--background-color); + color: var(--text-color); +} + +/* Files table */ +/*#mvfiles_first{ + position: absolute; + left: 15px; +}*/ + +#mvfiles_processing{ + background-color: var(--background-color); + border: 1px solid var(--border-color); + border-radius: 10px; +} +/* +#mvfiles_previous{ + position: absolute; + left: 80px; +}*/ + +/*.paginate_page{ + position: absolute; + left: 180px; +} + +.paginate_input{ + position: absolute; + left: 220px; +} + +.paginate_of{ + position: absolute; + left: 275px; +} +*/ +/*#mvfiles_next{ + position: absolute; + left: 340px; +} + +#mvfiles_last{ + position: absolute; + left: 410px; +} +*/ +#mvfiles_filter{ + float: none; + margin-top: 15px; + width: 450px; +} + +#mvfiles_filter label{ + width: 100%; +} + +#mvfiles_filter label input{ + width: 100%; +} + +.dataTables_filter input{ + width: 390px !important; +} + +.dataTables_filter select{ + width: 390px !important; +} + +label{ + margin-bottom: 0px; +} + +#mvfiles{ + position: absolute; + top: 30px; + left: 0px; + margin: auto; + font-size: 12px; + border: 0px; +} + +#mvfiles tbody tr:hover{ + background-color: #f1515138; +} + +#mvfiles tbody tr td{ + padding: 0px; + padding-top: 5px; + padding-left: 5px; + border: 0px; +} + +#mvfiles thead th{ + padding: 5px; + border: 0px; + border-bottom: 1px solid var(--border-color); +} + +.btn-mv{ + border: 1px solid var(--border-color); + color: var(--text-color); + background-color: var(--background-color); +} +.overlay input{ + background-color: var(--background-color); + color: var(--text-color); + border: 1px solid var(--border-color); +} + +.historybutton:hover>.dropdown-menu { + display: block; +} + +.historybutton{ + font-size: 1rem; + padding: 0px 5px 0px 5px; + margin-right: 5px; + background-color: transparent; + border: 0px; + color: var(--text-color); +} + +.btn-secondary.disabled, .btn-secondary:disabled{ + background-color: transparent; + color: rgba(255, 255, 255, 0.30); +} + +#mvfiles .dropdown-toggle::after{ + display: none; +} + +.filedropdown{ + width: auto; + font-size: 13px; +} + +.table th{ + padding-left: 10px; +} + +.table td:first{ + padding-left: 10px; +} + +tr.selected{ + background-color: #8bc34aa1 !important; +} + +/* Error window */ +#errors{ + position: absolute; + top: 70px; + right: 15px; + margin: auto; +} + +#embeddedLogo{ + position: absolute; + bottom: 0px; + left: 0px; + width: 50px; + height: 50px; + margin-bottom: 5px; + margin-left: 5px; +} \ No newline at end of file diff --git a/wwwroot/css/style.css b/wwwroot/css/style.css new file mode 100644 index 0000000..2b4abce --- /dev/null +++ b/wwwroot/css/style.css @@ -0,0 +1,515 @@ +/* Variables */ +:root{ + --background-color: #343a40; + --text-color: rgba(255, 255, 255, 1); + --border-color: rgb(108, 117, 125); + --hover-color: white; + --navbar-height: 57px; + --diff-added-color: #e6ffe6; + --diff-removed-color: #ffe6e6; + --table-header-color: #272727; +} + +/* General */ +html { + height: 100%; + box-sizing: border-box; + font-size: 16px; +} + +*, +*:before, +*:after { + transition: background-color 0.3s ease-out; + box-sizing: inherit; +} + +body{ + position: relative; + margin: 0; + padding-bottom: 5rem; + min-height: 100%; + background-color: var(--background-color); + color: var(--text-color) !important; +} + +a{ + font-weight: 700; + color: var(--text-color); + text-decoration: none; +} + +a:hover{ + text-decoration: underline; + color: var(--hover-color); +} + +input{ + background-color: var(--background-color) !important; + color: var(--text-color) !important; + border: 1px solid var(--border-color) !important; +} + +select{ + background-color: var(--background-color) !important; + color: var(--text-color) !important; + width: 100%; +} + +pre{ + color: var(--text-color); +} + +/* Navbar */ +.navbar{ + background-color: var(--background-color) !important; + border-bottom: 1px solid var(--border-color); + height: var(--navbar-height); +} + +.navbar-nav a{ + font-weight: 400; + text-align: center; +} + +.navbar-brand{ + padding: 0px !important; +} + +.nav-item{ + background-color: var(--background-color) !important; + color: var(--text-color) !important; + z-index: 10; +} + +.navbar-toggler{ + color: var(--text-color); +} + +.dropdown-item{ + background-color: var(--background-color) !important; + color: var(--text-color) !important; +} + +.dropdown-menu{ + background-color: var(--background-color) !important; + color: var(--text-color) !important; +} + +.dropdown-item:focus, .dropdown-item:hover{ + background-color: rgba(0, 0, 0, 0.15) !important; +} + +.nav-tabs{ + border: 0px; +} + +#themeToggle{ + color: var(--text-color); +} + +#logo{ + position: relative; +} + +#logo #cog{ + position: absolute; + left: 26px; + top: 7px; + width: 22px; + height: 22px; + background-image: url('/img/cog.png'); + background-size: 22px; + /*animation: spin 10s infinite linear;*/ +} + +#nocog span{ + font-size: 20px; + vertical-align: bottom; +} + +#nocog img{ + width: 30px; + height: 30px; + position: relative; +} + +#nocog img:nth-child(2){ + margin-left: 15px; +} + +@keyframes spin { + from { + transform:rotate(0deg); + } + to { + transform:rotate(360deg); + } +} + +.container-fluid{ + padding-top: 1rem; +} + +.hash{ + min-width: 220px; + font-size: 12px; + font-family: monospace; +} + +.table{ + font-size: 16px; + color: var(--text-color); +} + +.table td, .table th{ + padding: 0.65rem; +} + +.table-hover tbody tr:hover{ + color: var(--text-color); +} + +.table .table{ + background-color: transparent; +} + +.table tr:hover{ + background-color: #f1515138 !important; +} + +.fptable tr{ + word-break: break-word; +} + +.table th { + border-top: 0px; +} + +.table td{ + border: 0px; +} + +.table .table td{ + border: 0px; +} + +.table-sm td, .table-sm th{ + padding: 0.1rem; +} + +.table-striped tbody tr:nth-of-type(odd){ + background-color: rgba(0, 0, 0, 0.12); +} + +.table-minimal tr th{ + padding: 5px; +} + +.table-minimal tr td{ + padding: 0px; +} + +.table-striped>tbody>tr:nth-of-type(odd){ + color: var(--text-color); +} + +.modal-content{ + background-color: var(--background-color); +} + +.odd{ + background-color: rgba(0,0,0,.12); +} + +.dropdown-menu{ + min-width: 8rem; +} + +/* Site-wide datatable styles */ +.dataTable{ + border: 0px; +} + +.dataTable thead th{ + padding: 5px; + border: 0px; + background-color: var(--table-header-color); +} + +.dataTable tr td{ + padding: 5px; + border-right: 0px; +} + +.dataTables_processing{ + background-color: var(--background-color); + border: 1px solid var(--border-color); + border-radius: 10px; +} + +.dataTables_filter input{ + width: 250px !important; +} + +.dataTables_paginate input{ + border-radius: .25rem; + text-align: center; +} + +.dataTables_info{ + padding-top: 0px !important; +} + +.paginate_input{ + width: 50px; +} + +.paginate_button { + cursor: pointer; + border: 1px solid var(--border-color); + margin-left: 5px; + margin-right: 5px; + padding-left: 10px; + padding-right: 10px; + border-radius: 10px; +} + +.popover{ + border: 1px solid var(--border-color); + max-width: 100%; + background-color: var(--background-color); +} + +.popover-header{ + background-color: var(--background-color); + border-bottom: 1px solid var(--border-color); +} + +.popover-body{ + color: var(--text-color); +} + +/* Footer */ +footer{ + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 0.5rem 0; + font-size: 80%; + text-align: center; + background-color: var(--background-color); + font-weight: 500; + border-top: 1px solid var(--border-color); + height: 55px; +} + +footer p{ + margin-bottom: 0; +} + +.alert-danger{ + color: #721c24; + background-color: #ff929c; + border-color: #ff929c; +} + +.modal-lg, .modal-xl { + max-width: 90% !important; +} + +#moreInfoModalContent, #fkModalContent, #chashModalContent, #previewModalContent, #helpModalContent { + overflow-x: auto; /* x-axis scrolling */ + overflow-y: auto; /* y-axis scrolling */ + -webkit-overflow-scrolling: touch; /* iOS fix */ +} + +.fa-stack{ + height: 0em; + line-height: 0em; +} + +.nav-pills .nav-link.active, .nav-pills .show>.nav-link{ + background-color: var(--border-color); + color: #fff; +} + +.nav-link{ + color: var(--text-color); +} + +.nav-link:hover { + color: var(--border-color); + text-decoration: none; +} + +.select2{ + float: left; +} + +.select2-container--default .select2-selection--single{ + background-color: var(--background-color) !important; + height: calc(1.5em + .5rem + 2px) !important; + font-size: .875rem !important; +} + +.select2-container--default .select2-selection--single{ + border: 1px solid #ced4da; +} + +.select2-container--default .select2-selection--single .select2-selection__rendered{ + color: var(--text-color) !important; +} + +.select2-dropdown{ + background-color: var(--background-color) !important; + font-size: .875rem; +} + +.select2-container--default .select2-results__option[aria-selected=true]{ + background-color: var(--border-color) !important; +} + +.select2-container--default .select2-results>.select2-results__options{ + max-height: 400px !important; +} + +.btn-dark{ + background-color: var(--background-color); +} + +.btn-info{ + color: #fff; +} + +.bg-warning{ + color: var(--dark); +} +/* Tooltips */ +.wt-tooltip{ + display: none; +} +.tooltip-icon{ + clear: both; + float: left; + box-shadow: #000 0 0 10px; + border-radius: 5px; + width: 64px; + height: 64px; +} + +.tooltip-icon img{ + max-width: 64px; + max-height: 64px; +} + +.tooltip-desc{ + float: left; + border: 1px solid white; + min-width: 380px; + width: 380px; + padding: 6px; + box-shadow: #000 0 0 10px; + border-radius: 5px; + background: rgba(17, 17, 34, 0.90); + color: white; + margin-left: 4px; + font: normal 12px/1.5 Verdana,sans-serif; + z-index: 10; +} + +.tooltip-desc h2{ + font-size: 14px; + margin: 0; + line-height: 20px; +} + +.tooltip-desc p{ + margin: 0px; +} + +.tooltip-desc .yellow{ + color: #ffd200; +} + +.tooltip-table{ + width: 100%; +} + +.tooltip-table tr td{ + padding: 2px; +} + +.tooltip-table tr td.right{ + text-align: right; +} + +.tooltip-preview{ + max-width: 380px; + max-height: 150px; +} + +.q0{ + color: #a0a0a0 !important; +} + +.q1{ + color: #ffffff !important; +} + +.q2{ + color: #1eff00 !important; +} + +.q3{ + color: #008dff !important; +} + +.q4{ + color: #a335ee !important; +} + +.q5{ + color: #ff8000 !important; +} + +.q6{ + color: #e6cc80 !important; +} + +.q7{ + color: #00ccff !important; +} + +.q8{ + color: #00ccff !important; +} + +#fktable tr td{ + padding-top: 2px; + padding-bottom: 2px; +} +/* Mobile Devices */ +@media screen and (max-width: 992px) { + textarea[name='files'] { + width: 100%; + } + + body > .navbar { + z-index: 5; /* force menu above the content */ + } + + #navbarNav { + position: absolute; + left: 0px; + right: 0px; + top: var(--navbar-height); + border-bottom: 1px solid var(--border-color); /* visual break between header and content */ + } + + #navbarNav > form { + background-color: var(--background-color); /* make the form look like part of the nav ul */ + padding: .5rem 1rem; + } +} \ No newline at end of file diff --git a/wwwroot/fonts/FontAwesome.otf b/wwwroot/fonts/FontAwesome.otf new file mode 100644 index 0000000..401ec0f Binary files /dev/null and b/wwwroot/fonts/FontAwesome.otf differ diff --git a/wwwroot/fonts/fontawesome-webfont.eot b/wwwroot/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/wwwroot/fonts/fontawesome-webfont.eot differ diff --git a/wwwroot/fonts/fontawesome-webfont.svg b/wwwroot/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/wwwroot/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wwwroot/fonts/fontawesome-webfont.ttf b/wwwroot/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/wwwroot/fonts/fontawesome-webfont.ttf differ diff --git a/wwwroot/fonts/fontawesome-webfont.woff b/wwwroot/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/wwwroot/fonts/fontawesome-webfont.woff differ diff --git a/wwwroot/fonts/fontawesome-webfont.woff2 b/wwwroot/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/wwwroot/fonts/fontawesome-webfont.woff2 differ diff --git a/wwwroot/img/cog.png b/wwwroot/img/cog.png new file mode 100644 index 0000000..cb6c49c Binary files /dev/null and b/wwwroot/img/cog.png differ diff --git a/wwwroot/img/cogw.png b/wwwroot/img/cogw.png new file mode 100644 index 0000000..b0152fd Binary files /dev/null and b/wwwroot/img/cogw.png differ diff --git a/wwwroot/img/w.svg b/wwwroot/img/w.svg new file mode 100644 index 0000000..e8262c2 --- /dev/null +++ b/wwwroot/img/w.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wwwroot/index.html b/wwwroot/index.html new file mode 100644 index 0000000..4b3f58a --- /dev/null +++ b/wwwroot/index.html @@ -0,0 +1,217 @@ + + + + + WoW.tools | Model viewer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

Changing the skin/displayID will reset these values.

+
+

Changing values in this form will let you assign FileDataIDs of your choosing to a certain texture slot in the model.

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/wwwroot/js/anims.js b/wwwroot/js/anims.js new file mode 100644 index 0000000..f968427 --- /dev/null +++ b/wwwroot/js/anims.js @@ -0,0 +1,1740 @@ +var animationNames = [ + "Stand", + "Death", + "Spell", + "Stop", + "Walk", + "Run", + "Dead", + "Rise", + "StandWound", + "CombatWound", + "CombatCritical", + "ShuffleLeft", + "ShuffleRight", + "Walkbackwards", + "Stun", + "HandsClosed", + "AttackUnarmed", + "Attack1H", + "Attack2H", + "Attack2HL", + "ParryUnarmed", + "Parry1H", + "Parry2H", + "Parry2HL", + "ShieldBlock", + "ReadyUnarmed", + "Ready1H", + "Ready2H", + "Ready2HL", + "ReadyBow", + "Dodge", + "SpellPrecast", + "SpellCast", + "SpellCastArea", + "NPCWelcome", + "NPCGoodbye", + "Block", + "JumpStart", + "Jump", + "JumpEnd", + "Fall", + "SwimIdle", + "Swim", + "SwimLeft", + "SwimRight", + "SwimBackwards", + "AttackBow", + "FireBow", + "ReadyRifle", + "AttackRifle", + "Loot", + "ReadySpellDirected", + "ReadySpellOmni", + "SpellCastDirected", + "SpellCastOmni", + "BattleRoar", + "ReadyAbility", + "Special1H", + "Special2H", + "ShieldBash", + "EmoteTalk", + "EmoteEat", + "EmoteWork", + "EmoteUseStanding", + "EmoteTalkExclamation", + "EmoteTalkQuestion", + "EmoteBow", + "EmoteWave", + "EmoteCheer", + "EmoteDance", + "EmoteLaugh", + "EmoteSleep", + "EmoteSitGround", + "EmoteRude", + "EmoteRoar", + "EmoteKneel", + "EmoteKiss", + "EmoteCry", + "EmoteChicken", + "EmoteBeg", + "EmoteApplaud", + "EmoteShout", + "EmoteFlex", + "EmoteShy", + "EmotePoint", + "Attack1HPierce", + "Attack2HLoosePierce", + "AttackOff", + "AttackOffPierce", + "Sheath", + "HipSheath", + "Mount", + "RunRight", + "RunLeft", + "MountSpecial", + "Kick", + "SitGroundDown", + "SitGround", + "SitGroundUp", + "SleepDown", + "Sleep", + "SleepUp", + "SitChairLow", + "SitChairMed", + "SitChairHigh", + "LoadBow", + "LoadRifle", + "AttackThrown", + "ReadyThrown", + "HoldBow", + "HoldRifle", + "HoldThrown", + "LoadThrown", + "EmoteSalute", + "KneelStart", + "KneelLoop", + "KneelEnd", + "AttackUnarmedOff", + "SpecialUnarmed", + "StealthWalk", + "StealthStand", + "Knockdown", + "EatingLoop", + "UseStandingLoop", + "ChannelCastDirected", + "ChannelCastOmni", + "Whirlwind", + "Birth", + "UseStandingStart", + "UseStandingEnd", + "CreatureSpecial", + "Drown", + "Drowned", + "FishingCast", + "FishingLoop", + "Fly", + "EmoteWorkNoSheathe", + "EmoteStunNoSheathe", + "EmoteUseStandingNoSheathe", + "SpellSleepDown", + "SpellKneelStart", + "SpellKneelLoop", + "SpellKneelEnd", + "Sprint", + "InFlight", + "Spawn", + "Close", + "Closed", + "Open", + "Opened", + "Destroy", + "Destroyed", + "Rebuild", + "Custom0", + "Custom1", + "Custom2", + "Custom3", + "Despawn", + "Hold", + "Decay", + "BowPull", + "BowRelease", + "ShipStart", + "ShipMoving", + "ShipStop", + "GroupArrow", + "Arrow", + "CorpseArrow", + "GuideArrow", + "Sway", + "DruidCatPounce", + "DruidCatRip", + "DruidCatRake", + "DruidCatRavage", + "DruidCatClaw", + "DruidCatCower", + "DruidBearSwipe", + "DruidBearBite", + "DruidBearMaul", + "DruidBearBash", + "DragonTail", + "DragonStomp", + "DragonSpit", + "DragonSpitHover", + "DragonSpitFly", + "EmoteYes", + "EmoteNo", + "JumpLandRun", + "LootHold", + "LootUp", + "StandHigh", + "Impact", + "LiftOff", + "Hover", + "SuccubusEntice", + "EmoteTrain", + "EmoteDead", + "EmoteDanceOnce", + "Deflect", + "EmoteEatNoSheathe", + "Land", + "Submerge", + "Submerged", + "Cannibalize", + "ArrowBirth", + "GroupArrowBirth", + "CorpseArrowBirth", + "GuideArrowBirth", + "EmoteTalkNoSheathe", + "EmotePointNoSheathe", + "EmoteSaluteNoSheathe", + "EmoteDanceSpecial", + "Mutilate", + "CustomSpell01", + "CustomSpell02", + "CustomSpell03", + "CustomSpell04", + "CustomSpell05", + "CustomSpell06", + "CustomSpell07", + "CustomSpell08", + "CustomSpell09", + "CustomSpell10", + "StealthRun", + "Emerge", + "Cower", + "Grab", + "GrabClosed", + "GrabThrown", + "FlyStand", + "FlyDeath", + "FlySpell", + "FlyStop", + "FlyWalk", + "FlyRun", + "FlyDead", + "FlyRise", + "FlyStandWound", + "FlyCombatWound", + "FlyCombatCritical", + "FlyShuffleLeft", + "FlyShuffleRight", + "FlyWalkbackwards", + "FlyStun", + "FlyHandsClosed", + "FlyAttackUnarmed", + "FlyAttack1H", + "FlyAttack2H", + "FlyAttack2HL", + "FlyParryUnarmed", + "FlyParry1H", + "FlyParry2H", + "FlyParry2HL", + "FlyShieldBlock", + "FlyReadyUnarmed", + "FlyReady1H", + "FlyReady2H", + "FlyReady2HL", + "FlyReadyBow", + "FlyDodge", + "FlySpellPrecast", + "FlySpellCast", + "FlySpellCastArea", + "FlyNPCWelcome", + "FlyNPCGoodbye", + "FlyBlock", + "FlyJumpStart", + "FlyJump", + "FlyJumpEnd", + "FlyFall", + "FlySwimIdle", + "FlySwim", + "FlySwimLeft", + "FlySwimRight", + "FlySwimBackwards", + "FlyAttackBow", + "FlyFireBow", + "FlyReadyRifle", + "FlyAttackRifle", + "FlyLoot", + "FlyReadySpellDirected", + "FlyReadySpellOmni", + "FlySpellCastDirected", + "FlySpellCastOmni", + "FlyBattleRoar", + "FlyReadyAbility", + "FlySpecial1H", + "FlySpecial2H", + "FlyShieldBash", + "FlyEmoteTalk", + "FlyEmoteEat", + "FlyEmoteWork", + "FlyEmoteUseStanding", + "FlyEmoteTalkExclamation", + "FlyEmoteTalkQuestion", + "FlyEmoteBow", + "FlyEmoteWave", + "FlyEmoteCheer", + "FlyEmoteDance", + "FlyEmoteLaugh", + "FlyEmoteSleep", + "FlyEmoteSitGround", + "FlyEmoteRude", + "FlyEmoteRoar", + "FlyEmoteKneel", + "FlyEmoteKiss", + "FlyEmoteCry", + "FlyEmoteChicken", + "FlyEmoteBeg", + "FlyEmoteApplaud", + "FlyEmoteShout", + "FlyEmoteFlex", + "FlyEmoteShy", + "FlyEmotePoint", + "FlyAttack1HPierce", + "FlyAttack2HLoosePierce", + "FlyAttackOff", + "FlyAttackOffPierce", + "FlySheath", + "FlyHipSheath", + "FlyMount", + "FlyRunRight", + "FlyRunLeft", + "FlyMountSpecial", + "FlyKick", + "FlySitGroundDown", + "FlySitGround", + "FlySitGroundUp", + "FlySleepDown", + "FlySleep", + "FlySleepUp", + "FlySitChairLow", + "FlySitChairMed", + "FlySitChairHigh", + "FlyLoadBow", + "FlyLoadRifle", + "FlyAttackThrown", + "FlyReadyThrown", + "FlyHoldBow", + "FlyHoldRifle", + "FlyHoldThrown", + "FlyLoadThrown", + "FlyEmoteSalute", + "FlyKneelStart", + "FlyKneelLoop", + "FlyKneelEnd", + "FlyAttackUnarmedOff", + "FlySpecialUnarmed", + "FlyStealthWalk", + "FlyStealthStand", + "FlyKnockdown", + "FlyEatingLoop", + "FlyUseStandingLoop", + "FlyChannelCastDirected", + "FlyChannelCastOmni", + "FlyWhirlwind", + "FlyBirth", + "FlyUseStandingStart", + "FlyUseStandingEnd", + "FlyCreatureSpecial", + "FlyDrown", + "FlyDrowned", + "FlyFishingCast", + "FlyFishingLoop", + "FlyFly", + "FlyEmoteWorkNoSheathe", + "FlyEmoteStunNoSheathe", + "FlyEmoteUseStandingNoSheathe", + "FlySpellSleepDown", + "FlySpellKneelStart", + "FlySpellKneelLoop", + "FlySpellKneelEnd", + "FlySprint", + "FlyInFlight", + "FlySpawn", + "FlyClose", + "FlyClosed", + "FlyOpen", + "FlyOpened", + "FlyDestroy", + "FlyDestroyed", + "FlyRebuild", + "FlyCustom0", + "FlyCustom1", + "FlyCustom2", + "FlyCustom3", + "FlyDespawn", + "FlyHold", + "FlyDecay", + "FlyBowPull", + "FlyBowRelease", + "FlyShipStart", + "FlyShipMoving", + "FlyShipStop", + "FlyGroupArrow", + "FlyArrow", + "FlyCorpseArrow", + "FlyGuideArrow", + "FlySway", + "FlyDruidCatPounce", + "FlyDruidCatRip", + "FlyDruidCatRake", + "FlyDruidCatRavage", + "FlyDruidCatClaw", + "FlyDruidCatCower", + "FlyDruidBearSwipe", + "FlyDruidBearBite", + "FlyDruidBearMaul", + "FlyDruidBearBash", + "FlyDragonTail", + "FlyDragonStomp", + "FlyDragonSpit", + "FlyDragonSpitHover", + "FlyDragonSpitFly", + "FlyEmoteYes", + "FlyEmoteNo", + "FlyJumpLandRun", + "FlyLootHold", + "FlyLootUp", + "FlyStandHigh", + "FlyImpact", + "FlyLiftOff", + "FlyHover", + "FlySuccubusEntice", + "FlyEmoteTrain", + "FlyEmoteDead", + "FlyEmoteDanceOnce", + "FlyDeflect", + "FlyEmoteEatNoSheathe", + "FlyLand", + "FlySubmerge", + "FlySubmerged", + "FlyCannibalize", + "FlyArrowBirth", + "FlyGroupArrowBirth", + "FlyCorpseArrowBirth", + "FlyGuideArrowBirth", + "FlyEmoteTalkNoSheathe", + "FlyEmotePointNoSheathe", + "FlyEmoteSaluteNoSheathe", + "FlyEmoteDanceSpecial", + "FlyMutilate", + "FlyCustomSpell01", + "FlyCustomSpell02", + "FlyCustomSpell03", + "FlyCustomSpell04", + "FlyCustomSpell05", + "FlyCustomSpell06", + "FlyCustomSpell07", + "FlyCustomSpell08", + "FlyCustomSpell09", + "FlyCustomSpell10", + "FlyStealthRun", + "FlyEmerge", + "FlyCower", + "FlyGrab", + "FlyGrabClosed", + "FlyGrabThrown", + "ToFly", + "ToHover", + "ToGround", + "FlyToFly", + "FlyToHover", + "FlyToGround", + "Settle", + "FlySettle", + "DeathStart", + "DeathLoop", + "DeathEnd", + "FlyDeathStart", + "FlyDeathLoop", + "FlyDeathEnd", + "DeathEndHold", + "FlyDeathEndHold", + "Strangulate", + "FlyStrangulate", + "ReadyJoust", + "LoadJoust", + "HoldJoust", + "FlyReadyJoust", + "FlyLoadJoust", + "FlyHoldJoust", + "AttackJoust", + "FlyAttackJoust", + "ReclinedMount", + "FlyReclinedMount", + "ToAltered", + "FromAltered", + "FlyToAltered", + "FlyFromAltered", + "InStocks", + "FlyInStocks", + "VehicleGrab", + "VehicleThrow", + "FlyVehicleGrab", + "FlyVehicleThrow", + "ToAlteredPostSwap", + "FromAlteredPostSwap", + "FlyToAlteredPostSwap", + "FlyFromAlteredPostSwap", + "ReclinedMountPassenger", + "FlyReclinedMountPassenger", + "Carry2H", + "Carried2H", + "FlyCarry2H", + "FlyCarried2H", + "EmoteSniff", + "EmoteFlySniff", + "AttackFist1H", + "FlyAttackFist1H", + "AttackFist1HOff", + "FlyAttackFist1HOff", + "ParryFist1H", + "FlyParryFist1H", + "ReadyFist1H", + "FlyReadyFist1H", + "SpecialFist1H", + "FlySpecialFist1H", + "EmoteReadStart", + "FlyEmoteReadStart", + "EmoteReadLoop", + "FlyEmoteReadLoop", + "EmoteReadEnd", + "FlyEmoteReadEnd", + "SwimRun", + "FlySwimRun", + "SwimWalk", + "FlySwimWalk", + "SwimWalkBackwards", + "FlySwimWalkBackwards", + "SwimSprint", + "FlySwimSprint", + "MountSwimIdle", + "FlyMountSwimIdle", + "MountSwimBackwards", + "FlyMountSwimBackwards", + "MountSwimLeft", + "FlyMountSwimLeft", + "MountSwimRight", + "FlyMountSwimRight", + "MountSwimRun", + "FlyMountSwimRun", + "MountSwimSprint", + "FlyMountSwimSprint", + "MountSwimWalk", + "FlyMountSwimWalk", + "MountSwimWalkBackwards", + "FlyMountSwimWalkBackwards", + "MountFlightIdle", + "FlyMountFlightIdle", + "MountFlightBackwards", + "FlyMountFlightBackwards", + "MountFlightLeft", + "FlyMountFlightLeft", + "MountFlightRight", + "FlyMountFlightRight", + "MountFlightRun", + "FlyMountFlightRun", + "MountFlightSprint", + "FlyMountFlightSprint", + "MountFlightWalk", + "FlyMountFlightWalk", + "MountFlightWalkBackwards", + "FlyMountFlightWalkBackwards", + "MountFlightStart", + "FlyMountFlightStart", + "MountSwimStart", + "FlyMountSwimStart", + "MountSwimLand", + "FlyMountSwimLand", + "MountSwimLandRun", + "FlyMountSwimLandRun", + "MountFlightLand", + "FlyMountFlightLand", + "MountFlightLandRun", + "FlyMountFlightLandRun", + "ReadyBlowDart", + "FlyReadyBlowDart", + "LoadBlowDart", + "FlyLoadBlowDart", + "HoldBlowDart", + "FlyHoldBlowDart", + "AttackBlowDart", + "FlyAttackBlowDart", + "CarriageMount", + "FlyCarriageMount", + "CarriagePassengerMount", + "FlyCarriagePassengerMount", + "CarriageMountAttack", + "FlyCarriageMountAttack", + "BarTendStand", + "FlyBarTendStand", + "BarServerWalk", + "FlyBarServerWalk", + "BarServerRun", + "FlyBarServerRun", + "BarServerShuffleLeft", + "FlyBarServerShuffleLeft", + "BarServerShuffleRight", + "FlyBarServerShuffleRight", + "BarTendEmoteTalk", + "FlyBarTendEmoteTalk", + "BarTendEmotePoint", + "FlyBarTendEmotePoint", + "BarServerStand", + "FlyBarServerStand", + "BarSweepWalk", + "FlyBarSweepWalk", + "BarSweepRun", + "FlyBarSweepRun", + "BarSweepShuffleLeft", + "FlyBarSweepShuffleLeft", + "BarSweepShuffleRight", + "FlyBarSweepShuffleRight", + "BarSweepEmoteTalk", + "FlyBarSweepEmoteTalk", + "BarPatronSitEmotePoint", + "FlyBarPatronSitEmotePoint", + "MountSelfIdle", + "FlyMountSelfIdle", + "MountSelfWalk", + "FlyMountSelfWalk", + "MountSelfRun", + "FlyMountSelfRun", + "MountSelfSprint", + "FlyMountSelfSprint", + "MountSelfRunLeft", + "FlyMountSelfRunLeft", + "MountSelfRunRight", + "FlyMountSelfRunRight", + "MountSelfShuffleLeft", + "FlyMountSelfShuffleLeft", + "MountSelfShuffleRight", + "FlyMountSelfShuffleRight", + "MountSelfWalkBackwards", + "FlyMountSelfWalkBackwards", + "MountSelfSpecial", + "FlyMountSelfSpecial", + "MountSelfJump", + "FlyMountSelfJump", + "MountSelfJumpStart", + "FlyMountSelfJumpStart", + "MountSelfJumpEnd", + "FlyMountSelfJumpEnd", + "MountSelfJumpLandRun", + "FlyMountSelfJumpLandRun", + "MountSelfStart", + "FlyMountSelfStart", + "MountSelfFall", + "FlyMountSelfFall", + "Stormstrike", + "FlyStormstrike", + "ReadyJoustNoSheathe", + "FlyReadyJoustNoSheathe", + "Slam", + "FlySlam", + "DeathStrike", + "FlyDeathStrike", + "SwimAttackUnarmed", + "FlySwimAttackUnarmed", + "SpinningKick", + "FlySpinningKick", + "RoundHouseKick", + "FlyRoundHouseKick", + "RollStart", + "FlyRollStart", + "Roll", + "FlyRoll", + "RollEnd", + "FlyRollEnd", + "PalmStrike", + "FlyPalmStrike", + "MonkOffenseAttackUnarmed", + "FlyMonkOffenseAttackUnarmed", + "MonkOffenseAttackUnarmedOff", + "FlyMonkOffenseAttackUnarmedOff", + "MonkOffenseParryUnarmed", + "FlyMonkOffenseParryUnarmed", + "MonkOffenseReadyUnarmed", + "FlyMonkOffenseReadyUnarmed", + "MonkOffenseSpecialUnarmed", + "FlyMonkOffenseSpecialUnarmed", + "MonkDefenseAttackUnarmed", + "FlyMonkDefenseAttackUnarmed", + "MonkDefenseAttackUnarmedOff", + "FlyMonkDefenseAttackUnarmedOff", + "MonkDefenseParryUnarmed", + "FlyMonkDefenseParryUnarmed", + "MonkDefenseReadyUnarmed", + "FlyMonkDefenseReadyUnarmed", + "MonkDefenseSpecialUnarmed", + "FlyMonkDefenseSpecialUnarmed", + "MonkHealAttackUnarmed", + "FlyMonkHealAttackUnarmed", + "MonkHealAttackUnarmedOff", + "FlyMonkHealAttackUnarmedOff", + "MonkHealParryUnarmed", + "FlyMonkHealParryUnarmed", + "MonkHealReadyUnarmed", + "FlyMonkHealReadyUnarmed", + "MonkHealSpecialUnarmed", + "FlyMonkHealSpecialUnarmed", + "FlyingKick", + "FlyFlyingKick", + "FlyingKickStart", + "FlyFlyingKickStart", + "FlyingKickEnd", + "FlyFlyingKickEnd", + "CraneStart", + "FlyCraneStart", + "CraneLoop", + "FlyCraneLoop", + "CraneEnd", + "FlyCraneEnd", + "Despawned", + "FlyDespawned", + "ThousandFists", + "FlyThousandFists", + "MonkHealReadySpellDirected", + "FlyMonkHealReadySpellDirected", + "MonkHealReadySpellOmni", + "FlyMonkHealReadySpellOmni", + "MonkHealSpellCastDirected", + "FlyMonkHealSpellCastDirected", + "MonkHealSpellCastOmni", + "FlyMonkHealSpellCastOmni", + "MonkHealChannelCastDirected", + "FlyMonkHealChannelCastDirected", + "MonkHealChannelCastOmni", + "FlyMonkHealChannelCastOmni", + "Torpedo", + "FlyTorpedo", + "Meditate", + "FlyMeditate", + "BreathOfFire", + "FlyBreathOfFire", + "RisingSunKick", + "FlyRisingSunKick", + "GroundKick", + "FlyGroundKick", + "KickBack", + "FlyKickBack", + "PetBattleStand", + "FlyPetBattleStand", + "PetBattleDeath", + "FlyPetBattleDeath", + "PetBattleRun", + "FlyPetBattleRun", + "PetBattleWound", + "FlyPetBattleWound", + "PetBattleAttack", + "FlyPetBattleAttack", + "PetBattleReadySpell", + "FlyPetBattleReadySpell", + "PetBattleSpellCast", + "FlyPetBattleSpellCast", + "PetBattleCustom0", + "FlyPetBattleCustom0", + "PetBattleCustom1", + "FlyPetBattleCustom1", + "PetBattleCustom2", + "FlyPetBattleCustom2", + "PetBattleCustom3", + "FlyPetBattleCustom3", + "PetBattleVictory", + "FlyPetBattleVictory", + "PetBattleLoss", + "FlyPetBattleLoss", + "PetBattleStun", + "FlyPetBattleStun", + "PetBattleDead", + "FlyPetBattleDead", + "PetBattleFreeze", + "FlyPetBattleFreeze", + "MonkOffenseAttackWeapon", + "FlyMonkOffenseAttackWeapon", + "BarTendEmoteWave", + "FlyBarTendEmoteWave", + "BarServerEmoteTalk", + "FlyBarServerEmoteTalk", + "BarServerEmoteWave", + "FlyBarServerEmoteWave", + "BarServerPourDrinks", + "FlyBarServerPourDrinks", + "BarServerPickup", + "FlyBarServerPickup", + "BarServerPutDown", + "FlyBarServerPutDown", + "BarSweepStand", + "FlyBarSweepStand", + "BarPatronSit", + "FlyBarPatronSit", + "BarPatronSitEmoteTalk", + "FlyBarPatronSitEmoteTalk", + "BarPatronStand", + "FlyBarPatronStand", + "BarPatronStandEmoteTalk", + "FlyBarPatronStandEmoteTalk", + "BarPatronStandEmotePoint", + "FlyBarPatronStandEmotePoint", + "CarrionSwarm", + "FlyCarrionSwarm", + "WheelLoop", + "FlyWheelLoop", + "StandCharacterCreate", + "FlyStandCharacterCreate", + "MountChopper", + "FlyMountChopper", + "FacePose", + "FlyFacePose", + "CombatAbility2HBig01", + "FlyCombatAbility2HBig01", + "CombatAbility2H01", + "FlyCombatAbility2H01", + "CombatWhirlwind", + "FlyCombatWhirlwind", + "CombatChargeLoop", + "FlyCombatChargeLoop", + "CombatAbility1H01", + "FlyCombatAbility1H01", + "CombatChargeEnd", + "FlyCombatChargeEnd", + "CombatAbility1H02", + "FlyCombatAbility1H02", + "CombatAbility1HBig01", + "FlyCombatAbility1HBig01", + "CombatAbility2H02", + "FlyCombatAbility2H02", + "ShaSpellPrecastBoth", + "FlyShaSpellPrecastBoth", + "ShaSpellCastBothFront", + "FlyShaSpellCastBothFront", + "ShaSpellCastLeftFront", + "FlyShaSpellCastLeftFront", + "ShaSpellCastRightFront", + "FlyShaSpellCastRightFront", + "ReadyCrossbow", + "FlyReadyCrossbow", + "LoadCrossbow", + "FlyLoadCrossbow", + "AttackCrossbow", + "FlyAttackCrossbow", + "HoldCrossbow", + "FlyHoldCrossbow", + "CombatAbility2HL01", + "FlyCombatAbility2HL01", + "CombatAbility2HL02", + "FlyCombatAbility2HL02", + "CombatAbility2HLBig01", + "FlyCombatAbility2HLBig01", + "CombatUnarmed01", + "FlyCombatUnarmed01", + "CombatStompLeft", + "FlyCombatStompLeft", + "CombatStompRight", + "FlyCombatStompRight", + "CombatLeapLoop", + "FlyCombatLeapLoop", + "CombatLeapEnd", + "FlyCombatLeapEnd", + "ShaReadySpellCast", + "FlyShaReadySpellCast", + "ShaSpellPrecastBothChannel", + "FlyShaSpellPrecastBothChannel", + "ShaSpellCastBothUp", + "FlyShaSpellCastBothUp", + "ShaSpellCastBothUpChannel", + "FlyShaSpellCastBothUpChannel", + "ShaSpellCastBothFrontChannel", + "FlyShaSpellCastBothFrontChannel", + "ShaSpellCastLeftFrontChannel", + "FlyShaSpellCastLeftFrontChannel", + "ShaSpellCastRightFrontChannel", + "FlyShaSpellCastRightFrontChannel", + "PriReadySpellCast", + "FlyPriReadySpellCast", + "PriSpellPrecastBoth", + "FlyPriSpellPrecastBoth", + "PriSpellPrecastBothChannel", + "FlyPriSpellPrecastBothChannel", + "PriSpellCastBothUp", + "FlyPriSpellCastBothUp", + "PriSpellCastBothFront", + "FlyPriSpellCastBothFront", + "PriSpellCastLeftFront", + "FlyPriSpellCastLeftFront", + "PriSpellCastRightFront", + "FlyPriSpellCastRightFront", + "PriSpellCastBothUpChannel", + "FlyPriSpellCastBothUpChannel", + "PriSpellCastBothFrontChannel", + "FlyPriSpellCastBothFrontChannel", + "PriSpellCastLeftFrontChannel", + "FlyPriSpellCastLeftFrontChannel", + "PriSpellCastRightFrontChannel", + "FlyPriSpellCastRightFrontChannel", + "MagReadySpellCast", + "FlyMagReadySpellCast", + "MagSpellPrecastBoth", + "FlyMagSpellPrecastBoth", + "MagSpellPrecastBothChannel", + "FlyMagSpellPrecastBothChannel", + "MagSpellCastBothUp", + "FlyMagSpellCastBothUp", + "MagSpellCastBothFront", + "FlyMagSpellCastBothFront", + "MagSpellCastLeftFront", + "FlyMagSpellCastLeftFront", + "MagSpellCastRightFront", + "FlyMagSpellCastRightFront", + "MagSpellCastBothUpChannel", + "FlyMagSpellCastBothUpChannel", + "MagSpellCastBothFrontChannel", + "FlyMagSpellCastBothFrontChannel", + "MagSpellCastLeftFrontChannel", + "FlyMagSpellCastLeftFrontChannel", + "MagSpellCastRightFrontChannel", + "FlyMagSpellCastRightFrontChannel", + "LocReadySpellCast", + "FlyLocReadySpellCast", + "LocSpellPrecastBoth", + "FlyLocSpellPrecastBoth", + "LocSpellPrecastBothChannel", + "FlyLocSpellPrecastBothChannel", + "LocSpellCastBothUp", + "FlyLocSpellCastBothUp", + "LocSpellCastBothFront", + "FlyLocSpellCastBothFront", + "LocSpellCastLeftFront", + "FlyLocSpellCastLeftFront", + "LocSpellCastRightFront", + "FlyLocSpellCastRightFront", + "LocSpellCastBothUpChannel", + "FlyLocSpellCastBothUpChannel", + "LocSpellCastBothFrontChannel", + "FlyLocSpellCastBothFrontChannel", + "LocSpellCastLeftFrontChannel", + "FlyLocSpellCastLeftFrontChannel", + "LocSpellCastRightFrontChannel", + "FlyLocSpellCastRightFrontChannel", + "DruReadySpellCast", + "FlyDruReadySpellCast", + "DruSpellPrecastBoth", + "FlyDruSpellPrecastBoth", + "DruSpellPrecastBothChannel", + "FlyDruSpellPrecastBothChannel", + "DruSpellCastBothUp", + "FlyDruSpellCastBothUp", + "DruSpellCastBothFront", + "FlyDruSpellCastBothFront", + "DruSpellCastLeftFront", + "FlyDruSpellCastLeftFront", + "DruSpellCastRightFront", + "FlyDruSpellCastRightFront", + "DruSpellCastBothUpChannel", + "FlyDruSpellCastBothUpChannel", + "DruSpellCastBothFrontChannel", + "FlyDruSpellCastBothFrontChannel", + "DruSpellCastLeftFrontChannel", + "FlyDruSpellCastLeftFrontChannel", + "DruSpellCastRightFrontChannel", + "FlyDruSpellCastRightFrontChannel", + "ArtMainLoop", + "FlyArtMainLoop", + "ArtDualLoop", + "FlyArtDualLoop", + "ArtFistsLoop", + "FlyArtFistsLoop", + "ArtBowLoop", + "FlyArtBowLoop", + "CombatAbility1H01Off", + "FlyCombatAbility1H01Off", + "CombatAbility1H02Off", + "FlyCombatAbility1H02Off", + "CombatFuriousStrike01", + "FlyCombatFuriousStrike01", + "CombatFuriousStrike02", + "FlyCombatFuriousStrike02", + "CombatFuriousStrikes", + "FlyCombatFuriousStrikes", + "CombatReadySpellCast", + "FlyCombatReadySpellCast", + "CombatShieldThrow", + "FlyCombatShieldThrow", + "PalSpellCast1HUp", + "FlyPalSpellCast1HUp", + "CombatReadyPostSpellCast", + "FlyCombatReadyPostSpellCast", + "PriReadyPostSpellCast", + "FlyPriReadyPostSpellCast", + "DHCombatRun", + "FlyDHCombatRun", + "CombatShieldBash", + "FlyCombatShieldBash", + "CombatThrow", + "FlyCombatThrow", + "CombatAbility1HPierce", + "FlyCombatAbility1HPierce", + "CombatAbility1HOffPierce", + "FlyCombatAbility1HOffPierce", + "CombatMutilate", + "FlyCombatMutilate", + "CombatBladeStorm", + "FlyCombatBladeStorm", + "CombatFinishingMove", + "FlyCombatFinishingMove", + "CombatLeapStart", + "FlyCombatLeapStart", + "GlvThrowMain", + "FlyGlvThrowMain", + "GlvThrownOff", + "FlyGlvThrownOff", + "DHCombatSprint", + "FlyDHCombatSprint", + "CombatAbilityGlv01", + "FlyCombatAbilityGlv01", + "CombatAbilityGlv02", + "FlyCombatAbilityGlv02", + "CombatAbilityGlvOff01", + "FlyCombatAbilityGlvOff01", + "CombatAbilityGlvOff02", + "FlyCombatAbilityGlvOff02", + "CombatAbilityGlvBig01", + "FlyCombatAbilityGlvBig01", + "CombatAbilityGlvBig02", + "FlyCombatAbilityGlvBig02", + "ReadyGlv", + "FlyReadyGlv", + "CombatAbilityGlvBig03", + "FlyCombatAbilityGlvBig03", + "DoubleJumpStart", + "FlyDoubleJumpStart", + "DoubleJump", + "FlyDoubleJump", + "CombatEviscerate", + "FlyCombatEviscerate", + "DoubleJumpLandRun", + "FlyDoubleJumpLandRun", + "BackFlipStart", + "FlyBackFlipStart", + "BackFlipLoop", + "FlyBackFlipLoop", + "FelRushLoop", + "FlyFelRushLoop", + "FelRushEnd", + "FlyFelRushEnd", + "DHToAlteredStart", + "FlyDHToAlteredStart", + "DHToAlteredEnd", + "FlyDHToAlteredEnd", + "DHGlide", + "FlyDHGlide", + "FanOfKnives", + "FlyFanOfKnives", + "SingleJumpStart", + "FlySingleJumpStart", + "DHBladeDance1", + "FlyDHBladeDance1", + "DHBladeDance2", + "FlyDHBladeDance2", + "DHBladeDance3", + "FlyDHBladeDance3", + "DHMeteorStrike", + "FlyDHMeteorStrike", + "CombatExecute", + "FlyCombatExecute", + "ArtLoop", + "FlyArtLoop", + "ParryGlv", + "FlyParryGlv", + "CombatUnarmed02", + "FlyCombatUnarmed02", + "CombatPistolShot", + "FlyCombatPistolShot", + "CombatPistolShotOff", + "FlyCombatPistolShotOff", + "Monk2HLIdle", + "FlyMonk2HLIdle", + "ArtShieldLoop", + "FlyArtShieldLoop", + "CombatAbility2H03", + "FlyCombatAbility2H03", + "CombatStomp", + "FlyCombatStomp", + "CombatRoar", + "FlyCombatRoar", + "PalReadySpellCast", + "FlyPalReadySpellCast", + "PalSpellPrecastRight", + "FlyPalSpellPrecastRight", + "PalSpellPrecastRightChannel", + "FlyPalSpellPrecastRightChannel", + "PalSpellCastRightFront", + "FlyPalSpellCastRightFront", + "ShaSpellCastBothOut", + "FlyShaSpellCastBothOut", + "AttackWeapon", + "FlyAttackWeapon", + "ReadyWeapon", + "FlyReadyWeapon", + "AttackWeaponOff", + "FlyAttackWeaponOff", + "SpecialDual", + "FlySpecialDual", + "DkCast1HFront", + "FlyDkCast1HFront", + "CastStrongRight", + "FlyCastStrongRight", + "CastStrongLeft", + "FlyCastStrongLeft", + "CastCurseRight", + "FlyCastCurseRight", + "CastCurseLeft", + "FlyCastCurseLeft", + "CastSweepRight", + "FlyCastSweepRight", + "CastSweepLeft", + "FlyCastSweepLeft", + "CastStrongUpLeft", + "FlyCastStrongUpLeft", + "CastTwistUpBoth", + "FlyCastTwistUpBoth", + "CastOutStrong", + "FlyCastOutStrong", + "DrumLoop", + "FlyDrumLoop", + "ParryWeapon", + "FlyParryWeapon", + "ReadyFL", + "FlyReadyFL", + "AttackFL", + "FlyAttackFL", + "AttackFLOff", + "FlyAttackFLOff", + "ParryFL", + "FlyParryFL", + "SpecialFL", + "FlySpecialFL", + "PriHoverForward", + "FlyPriHoverForward", + "PriHoverBackward", + "FlyPriHoverBackward", + "PriHoverRight", + "FlyPriHoverRight", + "PriHoverLeft", + "FlyPriHoverLeft", + "RunBackwards", + "FlyRunBackwards", + "CastStrongUpRight", + "FlyCastStrongUpRight", + "WAWalk", + "FlyWAWalk", + "WARun", + "FlyWARun", + "WADrunkStand", + "FlyWADrunkStand", + "WADrunkShuffleLeft", + "FlyWADrunkShuffleLeft", + "WADrunkShuffleRight", + "FlyWADrunkShuffleRight", + "WADrunkWalk", + "FlyWADrunkWalk", + "WADrunkWalkBackwards", + "FlyWADrunkWalkBackwards", + "WADrunkWound", + "FlyWADrunkWound", + "WADrunkTalk", + "FlyWADrunkTalk", + "WATrance01", + "FlyWATrance01", + "WATrance02", + "FlyWATrance02", + "WAChant01", + "FlyWAChant01", + "WAChant02", + "FlyWAChant02", + "WAChant03", + "FlyWAChant03", + "WAHang01", + "FlyWAHang01", + "WAHang02", + "FlyWAHang02", + "WASummon01", + "FlyWASummon01", + "WASummon02", + "FlyWASummon02", + "WABeggarTalk", + "FlyWABeggarTalk", + "WABeggarStand", + "FlyWABeggarStand", + "WABeggarPoint", + "FlyWABeggarPoint", + "WABeggarBeg", + "FlyWABeggarBeg", + "WASit01", + "FlyWASit01", + "WASit02", + "FlyWASit02", + "WASit03", + "FlyWASit03", + "WACrierStand01", + "FlyWACrierStand01", + "WACrierStand02", + "FlyWACrierStand02", + "WACrierStand03", + "FlyWACrierStand03", + "WACrierTalk", + "FlyWACrierTalk", + "WACrateHold", + "FlyWACrateHold", + "WABarrelHold", + "FlyWABarrelHold", + "WASackHold", + "FlyWASackHold", + "WAWheelBarrowStand", + "FlyWAWheelBarrowStand", + "WAWheelBarrowWalk", + "FlyWAWheelBarrowWalk", + "WAWheelBarrowRun", + "FlyWAWheelBarrowRun", + "WAHammerLoop", + "FlyWAHammerLoop", + "WACrankLoop", + "FlyWACrankLoop", + "WAPourStart", + "FlyWAPourStart", + "WAPourLoop", + "FlyWAPourLoop", + "WAPourEnd", + "FlyWAPourEnd", + "WAEmotePour", + "FlyWAEmotePour", + "WARowingStandRight", + "FlyWARowingStandRight", + "WARowingStandLeft", + "FlyWARowingStandLeft", + "WARowingRight", + "FlyWARowingRight", + "WARowingLeft", + "FlyWARowingLeft", + "WAGuardStand01", + "FlyWAGuardStand01", + "WAGuardStand02", + "FlyWAGuardStand02", + "WAGuardStand03", + "FlyWAGuardStand03", + "WAGuardStand04", + "FlyWAGuardStand04", + "WAFreezing01", + "FlyWAFreezing01", + "WAFreezing02", + "FlyWAFreezing02", + "WAVendorStand01", + "FlyWAVendorStand01", + "WAVendorStand02", + "FlyWAVendorStand02", + "WAVendorStand03", + "FlyWAVendorStand03", + "WAVendorTalk", + "FlyWAVendorTalk", + "WALean01", + "FlyWALean01", + "WALean02", + "FlyWALean02", + "WALean03", + "FlyWALean03", + "WALeanTalk", + "FlyWALeanTalk", + "WABoatWheel", + "FlyWABoatWheel", + "WASmithLoop", + "FlyWASmithLoop", + "WAScrubbing", + "FlyWAScrubbing", + "WAWeaponSharpen", + "FlyWAWeaponSharpen", + "WAStirring", + "FlyWAStirring", + "WAPerch01", + "FlyWAPerch01", + "WAPerch02", + "FlyWAPerch02", + "HoldWeapon", + "FlyHoldWeapon", + "WABarrelWalk", + "FlyWABarrelWalk", + "WAPourHold", + "FlyWAPourHold", + "CastStrong", + "FlyCastStrong", + "CastCurse", + "FlyCastCurse", + "CastSweep", + "FlyCastSweep", + "CastStrongUp", + "FlyCastStrongUp", + "WABoatWheelStand", + "FlyWABoatWheelStand", + "WASmithStand", + "FlyWASmithStand", + "WACrankStand", + "FlyWACrankStand", + "WAPourWalk", + "FlyWAPourWalk", + "FalconeerStart", + "FlyFalconeerStart", + "FalconeerLoop", + "FlyFalconeerLoop", + "FalconeerEnd", + "FlyFalconeerEnd", + "WADrunkDrink", + "FlyWADrunkDrink", + "WAStandEat", + "FlyWAStandEat", + "WAStandDrink", + "FlyWAStandDrink", + "WABound01", + "FlyWABound01", + "WABound02", + "FlyWABound02", + "CombatAbility1H03Off", + "FlyCombatAbility1H03Off", + "CombatAbilityDualWield01", + "FlyCombatAbilityDualWield01", + "WACradle01", + "FlyWACradle01", + "LocSummon", + "FlyLocSummon", + "LoadWeapon", + "FlyLoadWeapon", + "ArtOffLoop", + "FlyArtOffLoop", + "WADead01", + "FlyWADead01", + "WADead02", + "FlyWADead02", + "WADead03", + "FlyWADead03", + "WADead04", + "FlyWADead04", + "WADead05", + "FlyWADead05", + "WADead06", + "FlyWADead06", + "WADead07", + "FlyWADead07", + "GiantRun", + "FlyGiantRun", + "BarTendEmoteCheer", + "FlyBarTendEmoteCheer", + "BarTendEmoteTalkQuestion", + "FlyBarTendEmoteTalkQuestion", + "BarTendEmoteTalkExclamation", + "FlyBarTendEmoteTalkExclamation", + "BarTendWalk", + "FlyBarTendWalk", + "BartendShuffleLeft", + "FlyBartendShuffleLeft", + "BarTendShuffleRight", + "FlyBarTendShuffleRight", + "BarTendCustomSpell01", + "FlyBarTendCustomSpell01", + "BarTendCustomSpell02", + "FlyBarTendCustomSpell02", + "BarTendCustomSpell03", + "FlyBarTendCustomSpell03", + "BarServerEmoteCheer", + "FlyBarServerEmoteCheer", + "BarServerEmoteTalkQuestion", + "FlyBarServerEmoteTalkQuestion", + "BarServerEmoteTalkExclamation", + "FlyBarServerEmoteTalkExclamation", + "BarServerCustomSpell01", + "FlyBarServerCustomSpell01", + "BarServerCustomSpell02", + "FlyBarServerCustomSpell02", + "BarServerCustomSpell03", + "FlyBarServerCustomSpell03", + "BarPatronEmoteDrink", + "FlyBarPatronEmoteDrink", + "BarPatronEmoteCheer", + "FlyBarPatronEmoteCheer", + "BarPatronCustomSpell01", + "FlyBarPatronCustomSpell01", + "BarPatronCustomSpell02", + "FlyBarPatronCustomSpell02", + "BarPatronCustomSpell03", + "FlyBarPatronCustomSpell03", + "HoldDart", + "FlyHoldDart", + "ReadyDart", + "FlyReadyDart", + "AttackDart", + "FlyAttackDart", + "LoadDart", + "FlyLoadDart", + "WADartTargetStand", + "FlyWADartTargetStand", + "WADartTargetEmoteTalk", + "FlyWADartTargetEmoteTalk", + "BarPatronSitEmoteCheer", + "FlyBarPatronSitEmoteCheer", + "BarPatronSitCustomSpell01", + "FlyBarPatronSitCustomSpell01", + "BarPatronSitCustomSpell02", + "FlyBarPatronSitCustomSpell02", + "BarPatronSitCustomSpell03", + "FlyBarPatronSitCustomSpell03", + "BarPianoStand", + "FlyBarPianoStand", + "BarPianoEmoteTalk", + "FlyBarPianoEmoteTalk", + "WAHearthSit", + "FlyWAHearthSit", + "WAHearthSitEmoteCry", + "FlyWAHearthSitEmoteCry", + "WAHearthSitEmoteCheer", + "FlyWAHearthSitEmoteCheer", + "WAHearthSitCustomSpell01", + "FlyWAHearthSitCustomSpell01", + "WAHearthSitCustomSpell02", + "FlyWAHearthSitCustomSpell02", + "WAHearthSitCustomSpell03", + "FlyWAHearthSitCustomSpell03", + "WAHearthStand", + "FlyWAHearthStand", + "WAHearthStandEmoteCheer", + "FlyWAHearthStandEmoteCheer", + "WAHearthStandEmoteTalk", + "FlyWAHearthStandEmoteTalk", + "WAHearthStandCustomSpell01", + "FlyWAHearthStandCustomSpell01", + "WAHearthStandCustomSpell02", + "FlyWAHearthStandCustomSpell02", + "WAHearthStandCustomSpell03", + "FlyWAHearthStandCustomSpell03", + "WAScribeStart", + "FlyWAScribeStart", + "WAScribeLoop", + "FlyWAScribeLoop", + "WAScribeEnd", + "FlyWAScribeEnd", + "WAEmoteScribe", + "FlyWAEmoteScribe", + "Haymaker", + "FlyHaymaker", + "HaymakerPrecast", + "FlyHaymakerPrecast", + "ChannelCastOmniUp", + "FlyChannelCastOmniUp", + "DHJumpLandRun", + "FlyDHJumpLandRun", + "Cinematic01", + "FlyCinematic01", + "Cinematic02", + "FlyCinematic02", + "Cinematic03", + "FlyCinematic03", + "Cinematic04", + "FlyCinematic04", + "Cinematic05", + "FlyCinematic05", + "Cinematic06", + "FlyCinematic06", + "Cinematic07", + "FlyCinematic07", + "Cinematic08", + "FlyCinematic08", + "Cinematic09", + "FlyCinematic09", + "Cinematic10", + "FlyCinematic10", + "TakeOffStart", + "FlyTakeOffStart", + "TakeOffFinish", + "FlyTakeOffFinish", + "LandStart", + "FlyLandStart", + "LandFinish", + "FlyLandFinish", + "WAWalkTalk", + "FlyWAWalkTalk", + "WAPerch03", + "FlyWAPerch03", + "CarriageMountMoving", + "FlyCarriageMountMoving", + "TakeOffFinishFly", + "FlyTakeOffFinishFly", + "CombatAbility2HBig02", + "FlyCombatAbility2HBig02", + "MountWide", + "FlyMountWide", + "EmoteTalkSubdued", + "FlyEmoteTalkSubdued", + "WASit04", + "FlyWASit04", + "MountSummon", + "FlyMountSummon", + "EmoteSelfie", + "FlyEmoteSelfie", + "CustomSpell11", + "FlyCustomSpell11", + "CustomSpell12", + "FlyCustomSpell12", + "CustomSpell13", + "FlyCustomSpell13", + "CustomSpell14", + "FlyCustomSpell14", + "CustomSpell15", + "FlyCustomSpell15", + "CustomSpell16", + "FlyCustomSpell16", + "CustomSpell17", + "FlyCustomSpell17", + "CustomSpell18", + "FlyCustomSpell18", + "CustomSpell19", + "FlyCustomSpell19", + "CustomSpell20", + "FlyCustomSpell20", + "AdvFlyLeft", + "FlyAdvFlyLeft", + "AdvFlyRight", + "FlyAdvFlyRight", + "AdvFlyForward", + "FlyAdvFlyForward", + "AdvFlyBackward", + "FlyAdvFlyBackward", + "AdvFlyUp", + "FlyAdvFlyUp", + "AdvFlyDown", + "FlyAdvFlyDown", + "AdvFlyForwardGlide", + "FlyAdvFlyForwardGlide", + "AdvFlyRoll", + "FlyAdvFlyRoll", + "ProfCookingLoop", + "FlyProfCookingLoop", + "ProfCookingStart", + "FlyProfCookingStart", + "ProfCookingEnd", + "FlyProfCookingEnd", + "WACurious", + "FlyWACurious", + "WAAlert", + "FlyWAAlert", + "WAInvestigate", + "FlyWAInvestigate", + "WAInteraction", + "FlyWAInteraction", + "WAThreaten", + "FlyWAThreaten", + "WAReact01", + "FlyWAReact01", + "WAReact02", + "FlyWAReact02", + "AdvFlyRollStart", + "FlyAdvFlyRollStart", + "AdvFlyRollEnd", + "FlyAdvFlyRollEnd", + "EmpBreathPrecast", + "FlyEmpBreathPrecast", + "EmpBreathPrecastChannel", + "FlyEmpBreathPrecastChannel", + "EmpBreathSpellCast", + "FlyEmpBreathSpellCast", + "EmpBreathSpellCastChannel", + "FlyEmpBreathSpellCastChannel", + "DracFlyBreathTakeoffStart", + "FlyDracFlyBreathTakeoffStart", + "DracFlyBreathTakeoffFinish", + "FlyDracFlyBreathTakeoffFinish", + "DracFlyBreath", + "FlyDracFlyBreath", + "DracFlyBreathLandStart", + "FlyDracFlyBreathLandStart", + "DracFlyBreathLandFinish", + "FlyDracFlyBreathLandFinish", + "DracAirDashLeft", + "FlyDracAirDashLeft", + "DracAirDashForward", + "FlyDracAirDashForward", + "DracAirDashBackward", + "FlyDracAirDashBackward", + "DracAirDashRight", + "FlyDracAirDashRight", + "LivingWorldProximityEnter", + "FlyLivingWorldProximityEnter", + "AdvFlyDownEnd", + "FlyAdvFlyDownEnd", + "LivingWorldProximityLoop", + "FlyLivingWorldProximityLoop", + "LivingWorldProximityLeave", + "FlyLivingWorldProximityLeave", + "EmpAirBarragePrecast", + "FlyEmpAirBarragePrecast", + "EmpAirBarragePrecastChannel", + "FlyEmpAirBarragePrecastChannel", + "EmpAirBarrageSpellCast", + "FlyEmpAirBarrageSpellCast", + "DracClawSwipeLeft", + "FlyDracClawSwipeLeft", + "DracClawSwipeRight", + "FlyDracClawSwipeRight", + "DracHoverIdle", + "FlyDracHoverIdle", + "DracHoverLeft", + "FlyDracHoverLeft", + "DracHoverRight", + "FlyDracHoverRight", + "DracHoverBackward", + "FlyDracHoverBackward", + "DracHoverForward", + "FlyDracHoverForward", + "DracAttackWings", + "FlyDracAttackWings", + "DracAttackTail", + "FlyDracAttackTail", + "AdvFlyStart", + "FlyAdvFlyStart", + "AdvFlyLand", + "FlyAdvFlyLand", + "AdvFlyLandRun", + "FlyAdvFlyLandRun", + "AdvFlyStrafeLeft", + "FlyAdvFlyStrafeLeft", + "AdvFlyStrafeRight", + "FlyAdvFlyStrafeRight", + "AdvFlyIdle", + "FlyAdvFlyIdle", + "AdvFlyRollRight", + "FlyAdvFlyRollRight", + "AdvFlyRollRightEnd", + "FlyAdvFlyRollRightEnd", + "AdvFlyRollLeft", + "FlyAdvFlyRollLeft", + "AdvFlyRollLeftEnd", + "FlyAdvFlyRollLeftEnd", + "AdvFlyFlap", + "FlyAdvFlyFlap", + "DracHoverDracClawSwipeLeft", + "FlyDracHoverDracClawSwipeLeft", + "DracHoverDracClawSwipeRight", + "FlyDracHoverDracClawSwipeRight", + "DracHoverDracAttackWings", + "FlyDracHoverDracAttackWings", + "DracHoverReadySpellOmni", + "FlyDracHoverReadySpellOmni", + "DracHoverSpellCastOmni", + "FlyDracHoverSpellCastOmni", + "DracHoverChannelSpellOmni", + "FlyDracHoverChannelSpellOmni", + "DracHoverReadySpellDirected", + "FlyDracHoverReadySpellDirected", + "DracHoverChannelSpellDirected", + "FlyDracHoverChannelSpellDirected", + "DracHoverSpellCastDirected", + "FlyDracHoverSpellCastDirected", + "DracHoverCastOutStrong", + "FlyDracHoverCastOutStrong", + "DracHoverBattleRoar", + "FlyDracHoverBattleRoar", + "DracHoverEmpBreathSpellCast", + "FlyDracHoverEmpBreathSpellCast", + "DracHoverEmpBreathSpellCastChannel", + "FlyDracHoverEmpBreathSpellCastChannel", + "LivingWorldTimeOfDayEnter", + "FlyLivingWorldTimeOfDayEnter", + "LivingWorldTimeOfDayLoop", + "FlyLivingWorldTimeOfDayLoop", + "LivingWorldTimeOfDayLeave", + "FlyLivingWorldTimeOfDayLeave", + "LivingWorldWeatherEnter", + "FlyLivingWorldWeatherEnter", + "LivingWorldWeatherLoop", + "FlyLivingWorldWeatherLoop", + "LivingWorldWeatherLeave", + "FlyLivingWorldWeatherLeave", + "AdvFlyDownStart", + "FlyAdvFlyDownStart", + "AdvFlyFlapBig", + "FlyAdvFlyFlapBig", + "DracHoverReadyUnarmed", + "FlyDracHoverReadyUnarmed", + "DracHoverAttackUnarmed", + "FlyDracHoverAttackUnarmed", + "DracHoverParryUnarmed", + "FlyDracHoverParryUnarmed", + "DracHoverCombatWound", + "FlyDracHoverCombatWound", + "DracHoverCombatCritical", + "FlyDracHoverCombatCritical", + "DracHoverAttackTail", + "FlyDracHoverAttackTail", + "Glide", + "FlyGlide", + "GlideEnd", + "FlyGlideEnd", + "DracClawSwipe", + "FlyDracClawSwipe", + "DracHoverDracClawSwipe", + "FlyDracHoverDracClawSwipe", + "AdvFlyFlapUp", + "FlyAdvFlyFlapUp", + "AdvFlySlowFall", + "FlyAdvFlySlowFall", + "AdvFlyFlapFoward", + "FlyAdvFlyFlapFoward", + "DracSpellCastWings", + "FlyDracSpellCastWings", + "DracHoverDracSpellCastWings", + "FlyDracHoverDracSpellCastWings", + "DracAirDashVertical", + "FlyDracAirDashVertical", + "DracAirDashRefresh", + "FlyDracAirDashRefresh", + "SkinningLoop", + "FlySkinningLoop", + "SkinningStart", + "FlySkinningStart", + "SkinningEnd", + "FlySkinningEnd", + "AdvFlyForwardGlideSlow", + "FlyAdvFlyForwardGlideSlow", + "AdvFlyForwardGlideFast", + "FlyAdvFlyForwardGlideFast", + "AdvFlySecondFlapUp", + "FlyAdvFlySecondFlapUp", + "FloatIdle", + "FlyFloatIdle", + "FloatWalk", + "FlyFloatWalk", + "CinematicTalk", + "FlyCinematicTalk", + "CinematicWAGuardEmoteSlam01", + "FlyCinematicWAGuardEmoteSlam01", + "WABlowHorn", + "FlyWABlowHorn" +]; diff --git a/wwwroot/js/bootstrap.bundle.min.js b/wwwroot/js/bootstrap.bundle.min.js new file mode 100644 index 0000000..d7524d1 --- /dev/null +++ b/wwwroot/js/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.6.2 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery)}(this,(function(t,e){"use strict";function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var i=n(e);function o(t,e){for(var n=0;n=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};u.jQueryDetection(),i.default.fn.emulateTransitionEnd=function(t){var e=this,n=!1;return i.default(this).one(u.TRANSITION_END,(function(){n=!0})),setTimeout((function(){n||u.triggerTransitionEnd(e)}),t),this},i.default.event.special[u.TRANSITION_END]={bindType:l,delegateType:l,handle:function(t){if(i.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var f="bs.alert",d=i.default.fn.alert,c=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){i.default.removeData(this._element,f),this._element=null},e._getRootElement=function(t){var e=u.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=i.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=i.default.Event("close.bs.alert");return i.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(i.default(t).removeClass("show"),i.default(t).hasClass("fade")){var n=u.getTransitionDurationFromElement(t);i.default(t).one(u.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){i.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(f);o||(o=new t(this),n.data(f,o)),"close"===e&&o[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},r(t,null,[{key:"VERSION",get:function(){return"4.6.2"}}]),t}();i.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',c._handleDismiss(new c)),i.default.fn.alert=c._jQueryInterface,i.default.fn.alert.Constructor=c,i.default.fn.alert.noConflict=function(){return i.default.fn.alert=d,c._jQueryInterface};var h="bs.button",p=i.default.fn.button,m="active",g='[data-toggle^="button"]',_='input:not([type="hidden"])',v=".btn",b=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=i.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var o=this._element.querySelector(_);if(o){if("radio"===o.type)if(o.checked&&this._element.classList.contains(m))t=!1;else{var r=n.querySelector(".active");r&&i.default(r).removeClass(m)}t&&("checkbox"!==o.type&&"radio"!==o.type||(o.checked=!this._element.classList.contains(m)),this.shouldAvoidTriggerChange||i.default(o).trigger("change")),o.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(m)),t&&i.default(this._element).toggleClass(m))},e.dispose=function(){i.default.removeData(this._element,h),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var o=i.default(this),r=o.data(h);r||(r=new t(this),o.data(h,r)),r.shouldAvoidTriggerChange=n,"toggle"===e&&r[e]()}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.2"}}]),t}();i.default(document).on("click.bs.button.data-api",g,(function(t){var e=t.target,n=e;if(i.default(e).hasClass("btn")||(e=i.default(e).closest(v)[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var o=e.querySelector(_);if(o&&(o.hasAttribute("disabled")||o.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||b._jQueryInterface.call(i.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",g,(function(t){var e=i.default(t.target).closest(v)[0];i.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),i.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(C)},e.nextWhenVisible=function(){var t=i.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(S)},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(u.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(D);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)i.default(this._element).one(N,(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var o=t>n?C:S;this._slide(o,this._items[t])}},e.dispose=function(){i.default(this._element).off(".bs.carousel"),i.default.removeData(this._element,E),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=a({},A,t),u.typeCheckConfig(y,t,k),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&i.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&i.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&I[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&I[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};i.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(i.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(i.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),i.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),i.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n=t===C,i=t===S,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+(t===S?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),o=this._getItemIndex(this._element.querySelector(D)),r=i.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:o,to:n});return i.default(this._element).trigger(r),r},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));i.default(e).removeClass(T);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&i.default(n).addClass(T)}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(D);if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,o,r,a=this,s=this._element.querySelector(D),l=this._getItemIndex(s),f=e||s&&this._getItemByDirection(t,s),d=this._getItemIndex(f),c=Boolean(this._interval);if(t===C?(n="carousel-item-left",o="carousel-item-next",r="left"):(n="carousel-item-right",o="carousel-item-prev",r="right"),f&&i.default(f).hasClass(T))this._isSliding=!1;else if(!this._triggerSlideEvent(f,r).isDefaultPrevented()&&s&&f){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(f),this._activeElement=f;var h=i.default.Event(N,{relatedTarget:f,direction:r,from:l,to:d});if(i.default(this._element).hasClass("slide")){i.default(f).addClass(o),u.reflow(f),i.default(s).addClass(n),i.default(f).addClass(n);var p=u.getTransitionDurationFromElement(s);i.default(s).one(u.TRANSITION_END,(function(){i.default(f).removeClass(n+" "+o).addClass(T),i.default(s).removeClass("active "+o+" "+n),a._isSliding=!1,setTimeout((function(){return i.default(a._element).trigger(h)}),0)})).emulateTransitionEnd(p)}else i.default(s).removeClass(T),i.default(f).addClass(T),this._isSliding=!1,i.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data(E),o=a({},A,i.default(this).data());"object"==typeof e&&(o=a({},o,e));var r="string"==typeof e?e:o.slide;if(n||(n=new t(this,o),i.default(this).data(E,n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if("undefined"==typeof n[r])throw new TypeError('No method named "'+r+'"');n[r]()}else o.interval&&o.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=u.getSelectorFromElement(this);if(n){var o=i.default(n)[0];if(o&&i.default(o).hasClass("carousel")){var r=a({},i.default(o).data(),i.default(this).data()),s=this.getAttribute("data-slide-to");s&&(r.interval=!1),t._jQueryInterface.call(i.default(o),r),s&&i.default(o).data(E).to(s),e.preventDefault()}}},r(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return A}}]),t}();i.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",O._dataApiClickHandler),i.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e0&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){i.default(this._element).hasClass(P)?this.hide():this.show()},e.show=function(){var e,n,o=this;if(!(this._isTransitioning||i.default(this._element).hasClass(P)||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof o._config.parent?t.getAttribute("data-parent")===o._config.parent:t.classList.contains(F)}))).length&&(e=null),e&&(n=i.default(e).not(this._selector).data(j))&&n._isTransitioning))){var r=i.default.Event("show.bs.collapse");if(i.default(this._element).trigger(r),!r.isDefaultPrevented()){e&&(t._jQueryInterface.call(i.default(e).not(this._selector),"hide"),n||i.default(e).data(j,null));var a=this._getDimension();i.default(this._element).removeClass(F).addClass(R),this._element.style[a]=0,this._triggerArray.length&&i.default(this._triggerArray).removeClass(B).attr("aria-expanded",!0),this.setTransitioning(!0);var s="scroll"+(a[0].toUpperCase()+a.slice(1)),l=u.getTransitionDurationFromElement(this._element);i.default(this._element).one(u.TRANSITION_END,(function(){i.default(o._element).removeClass(R).addClass("collapse show"),o._element.style[a]="",o.setTransitioning(!1),i.default(o._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(l),this._element.style[a]=this._element[s]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&i.default(this._element).hasClass(P)){var e=i.default.Event("hide.bs.collapse");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",u.reflow(this._element),i.default(this._element).addClass(R).removeClass("collapse show");var o=this._triggerArray.length;if(o>0)for(var r=0;r=0)return 1;return 0}(),Y=U&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),V))}};function z(t){return t&&"[object Function]"==={}.toString.call(t)}function K(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function X(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function G(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=K(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:G(X(t))}function $(t){return t&&t.referenceNode?t.referenceNode:t}var J=U&&!(!window.MSInputMethodContext||!document.documentMode),Z=U&&/MSIE 10/.test(navigator.userAgent);function tt(t){return 11===t?J:10===t?Z:J||Z}function et(t){if(!t)return document.documentElement;for(var e=tt(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===K(n,"position")?et(n):n:t?t.ownerDocument.documentElement:document.documentElement}function nt(t){return null!==t.parentNode?nt(t.parentNode):t}function it(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(s=(a=l).nodeName)||"HTML"!==s&&et(a.firstElementChild)!==a?et(l):l;var u=nt(t);return u.host?it(u.host,e):it(t,nt(e).host)}function ot(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===e?"scrollTop":"scrollLeft",i=t.nodeName;if("BODY"===i||"HTML"===i){var o=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||o;return r[n]}return t[n]}function rt(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=ot(e,"top"),o=ot(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}function at(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+i+"Width"])}function st(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],tt(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function lt(t){var e=t.body,n=t.documentElement,i=tt(10)&&getComputedStyle(n);return{height:st("Height",e,n,i),width:st("Width",e,n,i)}}var ut=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},ft=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=tt(10),o="HTML"===e.nodeName,r=pt(t),a=pt(e),s=G(t),l=K(e),u=parseFloat(l.borderTopWidth),f=parseFloat(l.borderLeftWidth);n&&o&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var d=ht({top:r.top-a.top-u,left:r.left-a.left-f,width:r.width,height:r.height});if(d.marginTop=0,d.marginLeft=0,!i&&o){var c=parseFloat(l.marginTop),h=parseFloat(l.marginLeft);d.top-=u-c,d.bottom-=u-c,d.left-=f-h,d.right-=f-h,d.marginTop=c,d.marginLeft=h}return(i&&!n?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(d=rt(d,e)),d}function gt(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=mt(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:ot(n),s=e?0:ot(n,"left"),l={top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:r};return ht(l)}function _t(t){var e=t.nodeName;if("BODY"===e||"HTML"===e)return!1;if("fixed"===K(t,"position"))return!0;var n=X(t);return!!n&&_t(n)}function vt(t){if(!t||!t.parentElement||tt())return document.documentElement;for(var e=t.parentElement;e&&"none"===K(e,"transform");)e=e.parentElement;return e||document.documentElement}function bt(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=o?vt(t):it(t,$(e));if("viewport"===i)r=gt(a,o);else{var s=void 0;"scrollParent"===i?"BODY"===(s=G(X(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===i?t.ownerDocument.documentElement:i;var l=mt(s,a,o);if("HTML"!==s.nodeName||_t(a))r=l;else{var u=lt(t.ownerDocument),f=u.height,d=u.width;r.top+=l.top-l.marginTop,r.bottom=f+l.top,r.left+=l.left-l.marginLeft,r.right=d+l.left}}var c="number"==typeof(n=n||0);return r.left+=c?n:n.left||0,r.top+=c?n:n.top||0,r.right-=c?n:n.right||0,r.bottom-=c?n:n.bottom||0,r}function yt(t){return t.width*t.height}function Et(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=bt(n,i,r,o),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},l=Object.keys(s).map((function(t){return ct({key:t},s[t],{area:yt(s[t])})})).sort((function(t,e){return e.area-t.area})),u=l.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),f=u.length>0?u[0].key:l[0].key,d=t.split("-")[1];return f+(d?"-"+d:"")}function wt(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=i?vt(e):it(e,$(n));return mt(n,o,i)}function Tt(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function Ct(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function St(t,e,n){n=n.split("-")[0];var i=Tt(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[Ct(s)],o}function Nt(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function Dt(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t.name===n}));var i=Nt(t,(function(t){return t.name===n}));return t.indexOf(i)}(t,0,n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&z(n)&&(e.offsets.popper=ht(e.offsets.popper),e.offsets.reference=ht(e.offsets.reference),e=n(e,t))})),e}function At(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=wt(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=Et(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=St(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=Dt(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function kt(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function It(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=Qt.indexOf(t),i=Qt.slice(n+1).concat(Qt.slice(0,n));return e?i.reverse():i}var Ut={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,a=o.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",u=s?"width":"height",f={start:dt({},l,r[l]),end:dt({},l,r[l]+r[u]-a[u])};t.offsets.popper=ct({},a,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n,i=e.offset,o=t.placement,r=t.offsets,a=r.popper,s=r.reference,l=o.split("-")[0];return n=Rt(+i)?[+i,0]:function(t,e,n,i){var o=[0,0],r=-1!==["right","left"].indexOf(i),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(Nt(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return u=u.map((function(t,i){var o=(1===i?!r:r)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],a=o[2];return r?0===a.indexOf("%")?ht("%p"===a?n:i)[e]/100*r:"vh"===a||"vw"===a?("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r:r:t}(t,o,e,n)}))})),u.forEach((function(t,e){t.forEach((function(n,i){Rt(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))}))})),o}(i,a,s,l),"left"===l?(a.top+=n[0],a.left-=n[1]):"right"===l?(a.top+=n[0],a.left+=n[1]):"top"===l?(a.left+=n[0],a.top-=n[1]):"bottom"===l&&(a.left+=n[0],a.top+=n[1]),t.popper=a,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||et(t.instance.popper);t.instance.reference===n&&(n=et(n));var i=It("transform"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[i];o.top="",o.left="",o[i]="";var l=bt(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=a,o[i]=s,e.boundaries=l;var u=e.priority,f=t.offsets.popper,d={primary:function(t){var n=f[t];return f[t]l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-("right"===t?f.width:f.height))),dt({},n,i)}};return u.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=ct({},f,d[e](t))})),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!Mt(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,a=r.popper,s=r.reference,l=-1!==["left","right"].indexOf(o),u=l?"height":"width",f=l?"Top":"Left",d=f.toLowerCase(),c=l?"left":"top",h=l?"bottom":"right",p=Tt(i)[u];s[h]-pa[h]&&(t.offsets.popper[d]+=s[d]+p-a[h]),t.offsets.popper=ht(t.offsets.popper);var m=s[d]+s[u]/2-p/2,g=K(t.instance.popper),_=parseFloat(g["margin"+f]),v=parseFloat(g["border"+f+"Width"]),b=m-t.offsets.popper[d]-_-v;return b=Math.max(Math.min(a[u]-p,b),0),t.arrowElement=i,t.offsets.arrow=(dt(n={},d,Math.round(b)),dt(n,c,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(kt(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=bt(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=Ct(i),r=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case"flip":a=[i,o];break;case"clockwise":a=Wt(i);break;case"counterclockwise":a=Wt(i,!0);break;default:a=e.behavior}return a.forEach((function(s,l){if(i!==s||a.length===l+1)return t;i=t.placement.split("-")[0],o=Ct(i);var u=t.offsets.popper,f=t.offsets.reference,d=Math.floor,c="left"===i&&d(u.right)>d(f.left)||"right"===i&&d(u.left)d(f.top)||"bottom"===i&&d(u.top)d(n.right),m=d(u.top)d(n.bottom),_="left"===i&&h||"right"===i&&p||"top"===i&&m||"bottom"===i&&g,v=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(v&&"start"===r&&h||v&&"end"===r&&p||!v&&"start"===r&&m||!v&&"end"===r&&g),y=!!e.flipVariationsByContent&&(v&&"start"===r&&p||v&&"end"===r&&h||!v&&"start"===r&&g||!v&&"end"===r&&m),E=b||y;(c||_||E)&&(t.flipped=!0,(c||_)&&(i=a[l+1]),E&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=i+(r?"-"+r:""),t.offsets.popper=ct({},t.offsets.popper,St(t.instance.popper,t.offsets.reference,t.placement)),t=Dt(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=r[n]-(s?o[a?"width":"height"]:0),t.placement=Ct(e),t.offsets.popper=ht(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!Mt(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=Nt(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};ut(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=Y(this.update.bind(this)),this.options=ct({},t.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(ct({},t.Defaults.modifiers,o.modifiers)).forEach((function(e){i.options.modifiers[e]=ct({},t.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return ct({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&z(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return ft(t,[{key:"update",value:function(){return At.call(this)}},{key:"destroy",value:function(){return Ot.call(this)}},{key:"enableEventListeners",value:function(){return Pt.call(this)}},{key:"disableEventListeners",value:function(){return Ft.call(this)}}]),t}();Vt.Utils=("undefined"!=typeof window?window:global).PopperUtils,Vt.placements=qt,Vt.Defaults=Ut;var Yt=Vt,zt="dropdown",Kt="bs.dropdown",Xt=i.default.fn[zt],Gt=new RegExp("38|40|27"),$t="disabled",Jt="show",Zt="dropdown-menu-right",te="hide.bs.dropdown",ee="hidden.bs.dropdown",ne="click.bs.dropdown.data-api",ie="keydown.bs.dropdown.data-api",oe='[data-toggle="dropdown"]',re=".dropdown-menu",ae={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},se={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},le=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!i.default(this._element).hasClass($t)){var e=i.default(this._menu).hasClass(Jt);t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||i.default(this._element).hasClass($t)||i.default(this._menu).hasClass(Jt))){var n={relatedTarget:this._element},o=i.default.Event("show.bs.dropdown",n),r=t._getParentFromElement(this._element);if(i.default(r).trigger(o),!o.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof Yt)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");var a=this._element;"parent"===this._config.reference?a=r:u.isElement(this._config.reference)&&(a=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(a=this._config.reference[0])),"scrollParent"!==this._config.boundary&&i.default(r).addClass("position-static"),this._popper=new Yt(a,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===i.default(r).closest(".navbar-nav").length&&i.default(document.body).children().on("mouseover",null,i.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),i.default(this._menu).toggleClass(Jt),i.default(r).toggleClass(Jt).trigger(i.default.Event("shown.bs.dropdown",n))}}},e.hide=function(){if(!this._element.disabled&&!i.default(this._element).hasClass($t)&&i.default(this._menu).hasClass(Jt)){var e={relatedTarget:this._element},n=i.default.Event(te,e),o=t._getParentFromElement(this._element);i.default(o).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),i.default(this._menu).toggleClass(Jt),i.default(o).toggleClass(Jt).trigger(i.default.Event(ee,e)))}},e.dispose=function(){i.default.removeData(this._element,Kt),i.default(this._element).off(".bs.dropdown"),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;i.default(this._element).on("click.bs.dropdown",(function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}))},e._getConfig=function(t){return t=a({},this.constructor.Default,i.default(this._element).data(),t),u.typeCheckConfig(zt,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(re))}return this._menu},e._getPlacement=function(){var t=i.default(this._element.parentNode),e="bottom-start";return t.hasClass("dropup")?e=i.default(this._menu).hasClass(Zt)?"top-end":"top-start":t.hasClass("dropright")?e="right-start":t.hasClass("dropleft")?e="left-start":i.default(this._menu).hasClass(Zt)&&(e="bottom-end"),e},e._detectNavbar=function(){return i.default(this._element).closest(".navbar").length>0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),a({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this).data(Kt);if(n||(n=new t(this,"object"==typeof e?e:null),i.default(this).data(Kt,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll(oe)),o=0,r=n.length;o0&&a--,40===e.which&&adocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add(pe);var o=u.getTransitionDurationFromElement(this._dialog);i.default(this._element).off(u.TRANSITION_END),i.default(this._element).one(u.TRANSITION_END,(function(){t._element.classList.remove(pe),n||i.default(t._element).one(u.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,o)})).emulateTransitionEnd(o),this._element.focus()}},e._showElement=function(t){var e=this,n=i.default(this._element).hasClass(ce),o=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),i.default(this._dialog).hasClass("modal-dialog-scrollable")&&o?o.scrollTop=0:this._element.scrollTop=0,n&&u.reflow(this._element),i.default(this._element).addClass(he),this._config.focus&&this._enforceFocus();var r=i.default.Event("shown.bs.modal",{relatedTarget:t}),a=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,i.default(e._element).trigger(r)};if(n){var s=u.getTransitionDurationFromElement(this._dialog);i.default(this._dialog).one(u.TRANSITION_END,a).emulateTransitionEnd(s)}else a()},e._enforceFocus=function(){var t=this;i.default(document).off(_e).on(_e,(function(e){document!==e.target&&t._element!==e.target&&0===i.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?i.default(this._element).on(ye,(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||i.default(this._element).off(ye)},e._setResizeEvent=function(){var t=this;this._isShown?i.default(window).on(ve,(function(e){return t.handleUpdate(e)})):i.default(window).off(ve)},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){i.default(document.body).removeClass(de),t._resetAdjustments(),t._resetScrollbar(),i.default(t._element).trigger(me)}))},e._removeBackdrop=function(){this._backdrop&&(i.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=i.default(this._element).hasClass(ce)?ce:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),i.default(this._backdrop).appendTo(document.body),i.default(this._element).on(be,(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&u.reflow(this._backdrop),i.default(this._backdrop).addClass(he),!t)return;if(!n)return void t();var o=u.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(u.TRANSITION_END,t).emulateTransitionEnd(o)}else if(!this._isShown&&this._backdrop){i.default(this._backdrop).removeClass(he);var r=function(){e._removeBackdrop(),t&&t()};if(i.default(this._element).hasClass(ce)){var a=u.getTransitionDurationFromElement(this._backdrop);i.default(this._backdrop).one(u.TRANSITION_END,r).emulateTransitionEnd(a)}else r()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},We={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},Ue={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Ve=function(){function t(t,e){if("undefined"==typeof Yt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=i.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(i.default(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),i.default.removeData(this.element,this.constructor.DATA_KEY),i.default(this.element).off(this.constructor.EVENT_KEY),i.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&i.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===i.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=i.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){i.default(this.element).trigger(e);var n=u.findShadowRoot(this.element),o=i.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!o)return;var r=this.getTipElement(),a=u.getUID(this.constructor.NAME);r.setAttribute("id",a),this.element.setAttribute("aria-describedby",a),this.setContent(),this.config.animation&&i.default(r).addClass(Pe);var s="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,l=this._getAttachment(s);this.addAttachmentClass(l);var f=this._getContainer();i.default(r).data(this.constructor.DATA_KEY,this),i.default.contains(this.element.ownerDocument.documentElement,this.tip)||i.default(r).appendTo(f),i.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new Yt(this.element,r,this._getPopperConfig(l)),i.default(r).addClass(Fe),i.default(r).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&i.default(document.body).children().on("mouseover",null,i.default.noop);var d=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,i.default(t.element).trigger(t.constructor.Event.SHOWN),e===Be&&t._leave(null,t)};if(i.default(this.tip).hasClass(Pe)){var c=u.getTransitionDurationFromElement(this.tip);i.default(this.tip).one(u.TRANSITION_END,d).emulateTransitionEnd(c)}else d()}},e.hide=function(t){var e=this,n=this.getTipElement(),o=i.default.Event(this.constructor.Event.HIDE),r=function(){e._hoverState!==Re&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),i.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(i.default(this.element).trigger(o),!o.isDefaultPrevented()){if(i.default(n).removeClass(Fe),"ontouchstart"in document.documentElement&&i.default(document.body).children().off("mouseover",null,i.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,i.default(this.tip).hasClass(Pe)){var a=u.getTransitionDurationFromElement(n);i.default(n).one(u.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(i.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),i.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=ke(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?i.default(e).parent().is(t)||t.empty().append(e):t.text(i.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return a({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:u.isElement(this.config.container)?i.default(this.config.container):i.default(document).find(this.config.container)},e._getAttachment=function(t){return qe[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)i.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n=e===He?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,o=e===He?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;i.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(o,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},i.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=a({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Me:He]=!0),i.default(e.getTipElement()).hasClass(Fe)||e._hoverState===Re?e._hoverState=Re:(clearTimeout(e._timeout),e._hoverState=Re,e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){e._hoverState===Re&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Me:He]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=Be,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){e._hoverState===Be&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=i.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Le.indexOf(t)&&delete e[t]})),"number"==typeof(t=a({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),u.typeCheckConfig(Ie,t,this.constructor.DefaultType),t.sanitize&&(t.template=ke(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(je);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(i.default(t).removeClass(Pe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(Oe),r="object"==typeof e&&e;if((o||!/dispose|hide/.test(e))&&(o||(o=new t(this,r),n.data(Oe,o)),"string"==typeof e)){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return Qe}},{key:"NAME",get:function(){return Ie}},{key:"DATA_KEY",get:function(){return Oe}},{key:"Event",get:function(){return Ue}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return We}}]),t}();i.default.fn.tooltip=Ve._jQueryInterface,i.default.fn.tooltip.Constructor=Ve,i.default.fn.tooltip.noConflict=function(){return i.default.fn.tooltip=xe,Ve._jQueryInterface};var Ye="bs.popover",ze=i.default.fn.popover,Ke=new RegExp("(^|\\s)bs-popover\\S+","g"),Xe=a({},Ve.Default,{placement:"right",trigger:"click",content:"",template:''}),Ge=a({},Ve.DefaultType,{content:"(string|element|function)"}),$e={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Je=function(t){var e,n;function o(){return t.apply(this,arguments)||this}n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,s(e,n);var a=o.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},a.setContent=function(){var t=i.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(Ke);null!==e&&e.length>0&&t.removeClass(e.join(""))},o._jQueryInterface=function(t){return this.each((function(){var e=i.default(this).data(Ye),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new o(this,n),i.default(this).data(Ye,e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},r(o,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"Default",get:function(){return Xe}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return Ye}},{key:"Event",get:function(){return $e}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Ge}}]),o}(Ve);i.default.fn.popover=Je._jQueryInterface,i.default.fn.popover.Constructor=Je,i.default.fn.popover.noConflict=function(){return i.default.fn.popover=ze,Je._jQueryInterface};var Ze="scrollspy",tn="bs.scrollspy",en=i.default.fn[Ze],nn="active",on="position",rn=".nav, .list-group",an={offset:10,method:"auto",target:""},sn={offset:"number",method:"string",target:"(string|element)"},ln=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,i.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":on,n="auto"===this._config.method?e:this._config.method,o=n===on?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,r=u.getSelectorFromElement(t);if(r&&(e=document.querySelector(r)),e){var a=e.getBoundingClientRect();if(a.width||a.height)return[i.default(e)[n]().top+o,r]}return null})).filter(Boolean).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){i.default.removeData(this._element,tn),i.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=a({},an,"object"==typeof t&&t?t:{})).target&&u.isElement(t.target)){var e=i.default(t.target).attr("id");e||(e=u.getUID(Ze),i.default(t.target).attr("id",e)),t.target="#"+e}return u.typeCheckConfig(Ze,t,sn),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active",gn=function(){function t(t){this._element=t}var e=t.prototype;return e.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&i.default(this._element).hasClass(dn)||i.default(this._element).hasClass("disabled")||this._element.hasAttribute("disabled"))){var e,n,o=i.default(this._element).closest(".nav, .list-group")[0],r=u.getSelectorFromElement(this._element);if(o){var a="UL"===o.nodeName||"OL"===o.nodeName?mn:pn;n=(n=i.default.makeArray(i.default(o).find(a)))[n.length-1]}var s=i.default.Event("hide.bs.tab",{relatedTarget:this._element}),l=i.default.Event("show.bs.tab",{relatedTarget:n});if(n&&i.default(n).trigger(s),i.default(this._element).trigger(l),!l.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,o);var f=function(){var e=i.default.Event("hidden.bs.tab",{relatedTarget:t._element}),o=i.default.Event("shown.bs.tab",{relatedTarget:n});i.default(n).trigger(e),i.default(t._element).trigger(o)};e?this._activate(e,e.parentNode,f):f()}}},e.dispose=function(){i.default.removeData(this._element,un),this._element=null},e._activate=function(t,e,n){var o=this,r=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?i.default(e).children(pn):i.default(e).find(mn))[0],a=n&&r&&i.default(r).hasClass(cn),s=function(){return o._transitionComplete(t,r,n)};if(r&&a){var l=u.getTransitionDurationFromElement(r);i.default(r).removeClass(hn).one(u.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._transitionComplete=function(t,e,n){if(e){i.default(e).removeClass(dn);var o=i.default(e.parentNode).find("> .dropdown-menu .active")[0];o&&i.default(o).removeClass(dn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}i.default(t).addClass(dn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),u.reflow(t),t.classList.contains(cn)&&t.classList.add(hn);var r=t.parentNode;if(r&&"LI"===r.nodeName&&(r=r.parentNode),r&&i.default(r).hasClass("dropdown-menu")){var a=i.default(t).closest(".dropdown")[0];if(a){var s=[].slice.call(a.querySelectorAll(".dropdown-toggle"));i.default(s).addClass(dn)}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(un);if(o||(o=new t(this),n.data(un,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.2"}}]),t}();i.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),gn._jQueryInterface.call(i.default(this),"show")})),i.default.fn.tab=gn._jQueryInterface,i.default.fn.tab.Constructor=gn,i.default.fn.tab.noConflict=function(){return i.default.fn.tab=fn,gn._jQueryInterface};var _n="bs.toast",vn=i.default.fn.toast,bn="hide",yn="show",En="showing",wn="click.dismiss.bs.toast",Tn={animation:!0,autohide:!0,delay:500},Cn={animation:"boolean",autohide:"boolean",delay:"number"},Sn=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=i.default.Event("show.bs.toast");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove(En),t._element.classList.add(yn),i.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove(bn),u.reflow(this._element),this._element.classList.add(En),this._config.animation){var o=u.getTransitionDurationFromElement(this._element);i.default(this._element).one(u.TRANSITION_END,n).emulateTransitionEnd(o)}else n()}},e.hide=function(){if(this._element.classList.contains(yn)){var t=i.default.Event("hide.bs.toast");i.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains(yn)&&this._element.classList.remove(yn),i.default(this._element).off(wn),i.default.removeData(this._element,_n),this._element=null,this._config=null},e._getConfig=function(t){return t=a({},Tn,i.default(this._element).data(),"object"==typeof t&&t?t:{}),u.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;i.default(this._element).on(wn,'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add(bn),i.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove(yn),this._config.animation){var n=u.getTransitionDurationFromElement(this._element);i.default(this._element).one(u.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data(_n);if(o||(o=new t(this,"object"==typeof e&&e),n.data(_n,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e](this)}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.2"}},{key:"DefaultType",get:function(){return Cn}},{key:"Default",get:function(){return Tn}}]),t}();i.default.fn.toast=Sn._jQueryInterface,i.default.fn.toast.Constructor=Sn,i.default.fn.toast.noConflict=function(){return i.default.fn.toast=vn,Sn._jQueryInterface},t.Alert=c,t.Button=b,t.Carousel=O,t.Collapse=W,t.Dropdown=le,t.Modal=Se,t.Popover=Je,t.Scrollspy=ln,t.Tab=gn,t.Toast=Sn,t.Tooltip=Ve,t.Util=u,Object.defineProperty(t,"__esModule",{value:!0})})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/wwwroot/js/datatables.min.js b/wwwroot/js/datatables.min.js new file mode 100644 index 0000000..bc4dd13 --- /dev/null +++ b/wwwroot/js/datatables.min.js @@ -0,0 +1,222 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs4/dt-1.12.1 + * + * Included libraries: + * DataTables 1.12.1 + */ + +/*! + SpryMedia Ltd. + + This source file is free software, available under the following license: + MIT license - http://datatables.net/license + + This source file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + + For details please refer to: http://www.datatables.net + DataTables 1.12.1 + ©2008-2022 SpryMedia Ltd - datatables.net/license +*/ +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(l,y,A){l instanceof String&&(l=String(l));for(var q=l.length,E=0;E").css({position:"fixed",top:0,left:-1*l(y).scrollLeft(),height:1, +width:1,overflow:"hidden"}).append(l("
").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(l("
").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}l.extend(a.oBrowser,u.__browser);a.oScroll.iBarWidth=u.__browser.barWidth} +function Gb(a,b,c,d,e,h){var f=!1;if(c!==q){var g=c;f=!0}for(;d!==e;)a.hasOwnProperty(d)&&(g=f?b(g,a[d],d,a):a[d],f=!0,d+=h);return g}function cb(a,b){var c=u.defaults.column,d=a.aoColumns.length;c=l.extend({},u.models.oColumn,c,{nTh:b?b:A.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=l.extend({},u.models.oSearch,c[d]);Ia(a,d,l(b).data())}function Ia(a,b,c){b=a.aoColumns[b]; +var d=a.oClasses,e=l(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var h=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);h&&(b.sWidthOrig=h[1])}c!==q&&null!==c&&(Eb(c),P(u.defaults.column,c,!0),c.mDataProp===q||c.mData||(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),h=b.sClass,l.extend(b,c),Y(b,c,"sWidth","sWidthOrig"),h!==b.sClass&&(b.sClass=h+" "+b.sClass),c.iDataSort!==q&&(b.aDataSort=[c.iDataSort]), +Y(b,c,"aDataSort"));var f=b.mData,g=ma(f),k=b.mRender?ma(b.mRender):null;c=function(m){return"string"===typeof m&&-1!==m.indexOf("@")};b._bAttrSrc=l.isPlainObject(f)&&(c(f.sort)||c(f.type)||c(f.filter));b._setter=null;b.fnGetData=function(m,n,p){var t=g(m,n,q,p);return k&&n?k(t,n,m,p):t};b.fnSetData=function(m,n,p){return ha(f)(m,n,p)};"number"!==typeof f&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==l.inArray("asc",b.asSorting);c=-1!==l.inArray("desc", +b.asSorting);b.bSortable&&(a||c)?a&&!c?(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI):(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI="")}function sa(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;db(a);for(var c=0,d=b.length;cm[n])d(g.length+m[n],k);else if("string"===typeof m[n]){var p=0;for(f=g.length;pb&&a[e]--; -1!=d&&c===q&&a.splice(d,1)}function va(a,b,c,d){var e=a.aoData[b],h,f=function(k,m){for(;k.childNodes.length;)k.removeChild(k.firstChild);k.innerHTML=T(a,b,m,"display")};if("dom"!==c&&(c&&"auto"!==c||"dom"!==e.src)){var g=e.anCells;if(g)if(d!==q)f(g[d],d);else for(c=0,h=g.length;c").appendTo(d));var k=0;for(b=g.length;k=a.fnRecordsDisplay()?0:d,a.iInitDisplayStart=-1);c=F(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==l.inArray(!1,c))V(a,!1);else{c=[];var e=0;d=a.asStripeClasses;var h=d.length,f=a.oLanguage,g="ssp"==Q(a),k=a.aiDisplay,m=a._iDisplayStart,n=a.fnDisplayEnd();a.bDrawing=!0;if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,V(a,!1);else if(!g)a.iDraw++;else if(!a.bDestroying&&!b){Kb(a);return}if(0!==k.length)for(b=g?a.aoData.length:n,f=g?0:m;f",{"class":h?d[0]:""}).append(l("",{valign:"top",colSpan:na(a),"class":a.oClasses.sRowEmpty}).html(e))[0];F(a,"aoHeaderCallback","header",[l(a.nTHead).children("tr")[0], +ib(a),m,n,k]);F(a,"aoFooterCallback","footer",[l(a.nTFoot).children("tr")[0],ib(a),m,n,k]);d=l(a.nTBody);d.children().detach();d.append(l(c));F(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function ka(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&Lb(a);d?ya(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;ja(a);a._drawHold=!1}function Mb(a){var b=a.oClasses,c=l(a.nTable);c=l("
").insertBefore(c);var d=a.oFeatures, +e=l("
",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var h=a.sDom.split(""),f,g,k,m,n,p,t=0;t")[0];m=h[t+1];if("'"==m||'"'==m){n="";for(p=2;h[t+p]!=m;)n+=h[t+p],p++;"H"==n?n=b.sJUIHeader:"F"==n&&(n=b.sJUIFooter);-1!=n.indexOf(".")?(m=n.split("."),k.id=m[0].substr(1,m[0].length-1),k.className=m[1]):"#"==n.charAt(0)?k.id=n.substr(1, +n.length-1):k.className=n;t+=p}e.append(k);e=l(k)}else if(">"==g)e=e.parent();else if("l"==g&&d.bPaginate&&d.bLengthChange)f=Nb(a);else if("f"==g&&d.bFilter)f=Ob(a);else if("r"==g&&d.bProcessing)f=Pb(a);else if("t"==g)f=Qb(a);else if("i"==g&&d.bInfo)f=Rb(a);else if("p"==g&&d.bPaginate)f=Sb(a);else if(0!==u.ext.feature.length)for(k=u.ext.feature,p=0,m=k.length;p',g=d.sSearch;g=g.match(/_INPUT_/)?g.replace("_INPUT_",f):g+f;b=l("
",{id:h.f?null:c+"_filter","class":b.sFilter}).append(l("
").addClass(b.sLength);a.aanFeatures.l||(k[0].id=c+"_length");k.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));l("select",k).val(a._iDisplayLength).on("change.DT",function(m){pb(a,l(this).val());ja(a)});l(a.nTable).on("length.dt.DT",function(m,n,p){a===n&&l("select",k).val(p)});return k[0]}function Sb(a){var b=a.sPaginationType,c=u.ext.pager[b],d="function"===typeof c,e=function(f){ja(f)};b=l("
").addClass(a.oClasses.sPaging+ +b)[0];var h=a.aanFeatures;d||c.fnInit(a,b,e);h.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(f){if(d){var g=f._iDisplayStart,k=f._iDisplayLength,m=f.fnRecordsDisplay(),n=-1===k;g=n?0:Math.ceil(g/k);k=n?1:Math.ceil(m/k);m=c(g,k);var p;n=0;for(p=h.p.length;nh&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e",{id:a.aanFeatures.r?null:a.sTableId+"_processing","class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).append("
").insertBefore(a.nTable)[0]}function V(a, +b){a.oFeatures.bProcessing&&l(a.aanFeatures.r).css("display",b?"block":"none");F(a,null,"processing",[a,b])}function Qb(a){var b=l(a.nTable),c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,h=a.oClasses,f=b.children("caption"),g=f.length?f[0]._captionSide:null,k=l(b[0].cloneNode(!1)),m=l(b[0].cloneNode(!1)),n=b.children("tfoot");n.length||(n=null);k=l("
",{"class":h.sScrollWrapper}).append(l("
",{"class":h.sScrollHead}).css({overflow:"hidden",position:"relative",border:0, +width:d?d?K(d):null:"100%"}).append(l("
",{"class":h.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(k.removeAttr("id").css("margin-left",0).append("top"===g?f:null).append(b.children("thead"))))).append(l("
",{"class":h.sScrollBody}).css({position:"relative",overflow:"auto",width:d?K(d):null}).append(b));n&&k.append(l("
",{"class":h.sScrollFoot}).css({overflow:"hidden",border:0,width:d?d?K(d):null:"100%"}).append(l("
",{"class":h.sScrollFootInner}).append(m.removeAttr("id").css("margin-left", +0).append("bottom"===g?f:null).append(b.children("tfoot")))));b=k.children();var p=b[0];h=b[1];var t=n?b[2]:null;if(d)l(h).on("scroll.DT",function(v){v=this.scrollLeft;p.scrollLeft=v;n&&(t.scrollLeft=v)});l(h).css("max-height",e);c.bCollapse||l(h).css("height",e);a.nScrollHead=p;a.nScrollBody=h;a.nScrollFoot=t;a.aoDrawCallback.push({fn:Ja,sName:"scrolling"});return k[0]}function Ja(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY;b=b.iBarWidth;var h=l(a.nScrollHead),f=h[0].style,g=h.children("div"),k= +g[0].style,m=g.children("table");g=a.nScrollBody;var n=l(g),p=g.style,t=l(a.nScrollFoot).children("div"),v=t.children("table"),x=l(a.nTHead),w=l(a.nTable),r=w[0],C=r.style,G=a.nTFoot?l(a.nTFoot):null,ba=a.oBrowser,L=ba.bScrollOversize;U(a.aoColumns,"nTh");var O=[],I=[],H=[],fa=[],Z,Ba=function(D){D=D.style;D.paddingTop="0";D.paddingBottom="0";D.borderTopWidth="0";D.borderBottomWidth="0";D.height=0};var X=g.scrollHeight>g.clientHeight;if(a.scrollBarVis!==X&&a.scrollBarVis!==q)a.scrollBarVis=X,sa(a); +else{a.scrollBarVis=X;w.children("thead, tfoot").remove();if(G){X=G.clone().prependTo(w);var ca=G.find("tr");var Ca=X.find("tr");X.find("[id]").removeAttr("id")}var Ua=x.clone().prependTo(w);x=x.find("tr");X=Ua.find("tr");Ua.find("th, td").removeAttr("tabindex");Ua.find("[id]").removeAttr("id");c||(p.width="100%",h[0].style.width="100%");l.each(Pa(a,Ua),function(D,W){Z=ta(a,D);W.style.width=a.aoColumns[Z].sWidth});G&&da(function(D){D.style.width=""},Ca);h=w.outerWidth();""===c?(C.width="100%",L&& +(w.find("tbody").height()>g.offsetHeight||"scroll"==n.css("overflow-y"))&&(C.width=K(w.outerWidth()-b)),h=w.outerWidth()):""!==d&&(C.width=K(d),h=w.outerWidth());da(Ba,X);da(function(D){var W=y.getComputedStyle?y.getComputedStyle(D).width:K(l(D).width());H.push(D.innerHTML);O.push(W)},X);da(function(D,W){D.style.width=O[W]},x);l(X).css("height",0);G&&(da(Ba,Ca),da(function(D){fa.push(D.innerHTML);I.push(K(l(D).css("width")))},Ca),da(function(D,W){D.style.width=I[W]},ca),l(Ca).height(0));da(function(D, +W){D.innerHTML='
'+H[W]+"
";D.childNodes[0].style.height="0";D.childNodes[0].style.overflow="hidden";D.style.width=O[W]},X);G&&da(function(D,W){D.innerHTML='
'+fa[W]+"
";D.childNodes[0].style.height="0";D.childNodes[0].style.overflow="hidden";D.style.width=I[W]},Ca);Math.round(w.outerWidth())g.offsetHeight||"scroll"==n.css("overflow-y")?h+b:h,L&&(g.scrollHeight>g.offsetHeight||"scroll"==n.css("overflow-y"))&& +(C.width=K(ca-b)),""!==c&&""===d||ea(a,1,"Possible column misalignment",6)):ca="100%";p.width=K(ca);f.width=K(ca);G&&(a.nScrollFoot.style.width=K(ca));!e&&L&&(p.height=K(r.offsetHeight+b));c=w.outerWidth();m[0].style.width=K(c);k.width=K(c);d=w.height()>g.clientHeight||"scroll"==n.css("overflow-y");e="padding"+(ba.bScrollbarLeft?"Left":"Right");k[e]=d?b+"px":"0px";G&&(v[0].style.width=K(c),t[0].style.width=K(c),t[0].style[e]=d?b+"px":"0px");w.children("colgroup").insertBefore(w.children("thead")); +n.trigger("scroll");!a.bSorted&&!a.bFiltered||a._drawHold||(g.scrollTop=0)}}function da(a,b,c){for(var d=0,e=0,h=b.length,f,g;e").appendTo(g.find("tbody"));g.find("thead, tfoot").remove();g.append(l(a.nTHead).clone()).append(l(a.nTFoot).clone());g.find("tfoot th, tfoot td").css("width","");m=Pa(a,g.find("thead")[0]); +for(v=0;v").css({width:w.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(v=0;v").css(h||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(g).appendTo(p);h&&f?g.width(f):h? +(g.css("width","auto"),g.removeAttr("width"),g.width()").css("width",K(a)).appendTo(b||A.body);b=a[0].offsetWidth;a.remove();return b}function dc(a,b){var c=ec(a,b);if(0>c)return null;var d=a.aoData[c];return d.nTr?d.anCells[b]:l("").html(T(a,c,b,"display"))[0]}function ec(a,b){for(var c,d=-1,e=-1,h=0,f=a.aoData.length;hd&&(d=c.length,e=h);return e}function K(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function oa(a){var b= +[],c=a.aoColumns;var d=a.aaSortingFixed;var e=l.isPlainObject(d);var h=[];var f=function(n){n.length&&!Array.isArray(n[0])?h.push(n):l.merge(h,n)};Array.isArray(d)&&f(d);e&&d.pre&&f(d.pre);f(a.aaSorting);e&&d.post&&f(d.post);for(a=0;aG?1:0;if(0!==C)return"asc"===r.dir?C:-C}C=c[n];G=c[p];return CG?1:0}):f.sort(function(n,p){var t,v=g.length, +x=e[n]._aSortData,w=e[p]._aSortData;for(t=0;tG?1:0})}a.bSorted=!0}function gc(a){var b=a.aoColumns,c=oa(a);a=a.oLanguage.oAria;for(var d=0,e=b.length;d/g,"");var k=h.nTh;k.removeAttribute("aria-sort");h.bSortable&&(0e?e+1:3))}e=0;for(h=d.length;ee?e+1:3))}a.aLastSort=d}function fc(a,b){var c=a.aoColumns[b],d=u.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,ua(a,b)));for(var h,f=u.ext.type.order[c.sType+"-pre"],g=0,k=a.aoData.length;g=e.length?[0,m[1]]:m)}));b.search!==q&&l.extend(a.oPreviousSearch,$b(b.search));if(b.columns){f=0;for(d=b.columns.length;f=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function lb(a,b){a=a.renderer;var c=u.ext.renderer[b]; +return l.isPlainObject(a)&&a[b]?c[a[b]]||c._:"string"===typeof a?c[a]||c._:c._}function Q(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Ea(a,b){var c=ic.numbers_length,d=Math.floor(c/2);b<=c?a=pa(0,b):a<=d?(a=pa(0,c-2),a.push("ellipsis"),a.push(b-1)):(a>=b-1-d?a=pa(b-(c-2),b):(a=pa(a-d+2,a+d-1),a.push("ellipsis"),a.push(b-1)),a.splice(0,0,"ellipsis"),a.splice(0,0,0));a.DT_el="span";return a}function bb(a){l.each({num:function(b){return Xa(b,a)},"num-fmt":function(b){return Xa(b, +a,vb)},"html-num":function(b){return Xa(b,a,Ya)},"html-num-fmt":function(b){return Xa(b,a,Ya,vb)}},function(b,c){M.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(M.type.search[b+a]=M.type.search.html)})}function jc(a,b,c,d,e){return y.moment?a[b](e):y.luxon?a[c](e):d?a[d](e):a}function Za(a,b,c){if(y.moment){var d=y.moment.utc(a,b,c,!0);if(!d.isValid())return null}else if(y.luxon){d=b?y.luxon.DateTime.fromFormat(a,b):y.luxon.DateTime.fromISO(a);if(!d.isValid)return null;d.setLocale(c)}else b?(kc|| +alert("DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17"),kc=!0):d=new Date(a);return d}function wb(a){return function(b,c,d,e){0===arguments.length?(d="en",b=c=null):1===arguments.length?(d="en",c=b,b=null):2===arguments.length&&(d=c,c=b,b=null);var h="datetime-"+c;u.ext.type.order[h]||(u.ext.type.detect.unshift(function(f){return f===h?h:!1}),u.ext.type.order[h+"-asc"]=function(f,g){f=f.valueOf();g=g.valueOf();return f===g?0:fg?-1:1});return function(f,g){if(null===f||f===q)"--now"===e?(f=new Date,f=new Date(Date.UTC(f.getFullYear(),f.getMonth(),f.getDate(),f.getHours(),f.getMinutes(),f.getSeconds()))):f="";if("type"===g)return h;if(""===f)return"sort"!==g?"":Za("0000-01-01 00:00:00",null,d);if(null!==c&&b===c&&"sort"!==g&&"type"!==g&&!(f instanceof Date))return f;var k=Za(f,b,d);if(null===k)return f;if("sort"===g)return k;f=null===c?jc(k,"toDate","toJSDate", +"")[a]():jc(k,"format","toFormat","toISOString",c);return"display"===g?$a(f):f}}}function lc(a){return function(){var b=[Wa(this[u.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return u.ext.internal[a].apply(this,b)}}var u=function(a,b){if(this instanceof u)return l(a).DataTable(b);b=a;this.$=function(f,g){return this.api(!0).$(f,g)};this._=function(f,g){return this.api(!0).rows(f,g).data()};this.api=function(f){return f?new B(Wa(this[M.iApiIndex])):new B(this)};this.fnAddData=function(f, +g){var k=this.api(!0);f=Array.isArray(f)&&(Array.isArray(f[0])||l.isPlainObject(f[0]))?k.rows.add(f):k.row.add(f);(g===q||g)&&k.draw();return f.flatten().toArray()};this.fnAdjustColumnSizing=function(f){var g=this.api(!0).columns.adjust(),k=g.settings()[0],m=k.oScroll;f===q||f?g.draw(!1):(""!==m.sX||""!==m.sY)&&Ja(k)};this.fnClearTable=function(f){var g=this.api(!0).clear();(f===q||f)&&g.draw()};this.fnClose=function(f){this.api(!0).row(f).child.hide()};this.fnDeleteRow=function(f,g,k){var m=this.api(!0); +f=m.rows(f);var n=f.settings()[0],p=n.aoData[f[0][0]];f.remove();g&&g.call(this,n,p);(k===q||k)&&m.draw();return p};this.fnDestroy=function(f){this.api(!0).destroy(f)};this.fnDraw=function(f){this.api(!0).draw(f)};this.fnFilter=function(f,g,k,m,n,p){n=this.api(!0);null===g||g===q?n.search(f,k,m,p):n.column(g).search(f,k,m,p);n.draw()};this.fnGetData=function(f,g){var k=this.api(!0);if(f!==q){var m=f.nodeName?f.nodeName.toLowerCase():"";return g!==q||"td"==m||"th"==m?k.cell(f,g).data():k.row(f).data()|| +null}return k.data().toArray()};this.fnGetNodes=function(f){var g=this.api(!0);return f!==q?g.row(f).node():g.rows().nodes().flatten().toArray()};this.fnGetPosition=function(f){var g=this.api(!0),k=f.nodeName.toUpperCase();return"TR"==k?g.row(f).index():"TD"==k||"TH"==k?(f=g.cell(f).index(),[f.row,f.columnVisible,f.column]):null};this.fnIsOpen=function(f){return this.api(!0).row(f).child.isShown()};this.fnOpen=function(f,g,k){return this.api(!0).row(f).child(g,k).show().child()[0]};this.fnPageChange= +function(f,g){f=this.api(!0).page(f);(g===q||g)&&f.draw(!1)};this.fnSetColumnVis=function(f,g,k){f=this.api(!0).column(f).visible(g);(k===q||k)&&f.columns.adjust().draw()};this.fnSettings=function(){return Wa(this[M.iApiIndex])};this.fnSort=function(f){this.api(!0).order(f).draw()};this.fnSortListener=function(f,g,k){this.api(!0).order.listener(f,g,k)};this.fnUpdate=function(f,g,k,m,n){var p=this.api(!0);k===q||null===k?p.row(g).data(f):p.cell(g,k).data(f);(n===q||n)&&p.columns.adjust();(m===q||m)&& +p.draw();return 0};this.fnVersionCheck=M.fnVersionCheck;var c=this,d=b===q,e=this.length;d&&(b={});this.oApi=this.internal=M.internal;for(var h in u.ext.internal)h&&(this[h]=lc(h));this.each(function(){var f={},g=1").appendTo(t));r.nTHead=H[0];var fa=t.children("tbody");0===fa.length&&(fa=l("").insertAfter(H));r.nTBody=fa[0];H=t.children("tfoot");0===H.length&&0").appendTo(t));0===H.length||0===H.children().length?t.addClass(C.sNoFooter):0/g,Dc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,Ec=/(\/|\.|\*|\+|\?|\||\(|\)|\[|\]|\{|\}|\\|\$|\^|\-)/g,vb=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,aa=function(a){return a&&!0!==a&&"-"!== +a?!1:!0},nc=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},oc=function(a,b){xb[b]||(xb[b]=new RegExp(ob(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(xb[b],"."):a},yb=function(a,b,c){var d="string"===typeof a;if(aa(a))return!0;b&&d&&(a=oc(a,b));c&&d&&(a=a.replace(vb,""));return!isNaN(parseFloat(a))&&isFinite(a)},pc=function(a,b,c){return aa(a)?!0:aa(a)||"string"===typeof a?yb(a.replace(Ya,""),b,c)?!0:null:null},U=function(a,b,c){var d=[],e=0,h=a.length; +if(c!==q)for(;ea.length)){var b=a.slice().sort();for(var c=b[0], +d=1,e=b.length;d")[0],Bc=Sa.textContent!==q,Cc=/<.*?>/g,mb=u.util.throttle,tc=[],N=Array.prototype,Fc=function(a){var b,c=u.settings,d=l.map(c,function(h,f){return h.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase()){var e= +l.inArray(a,d);return-1!==e?[c[e]]:null}if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?b=l(a):a instanceof l&&(b=a)}else return[];if(b)return b.map(function(h){e=l.inArray(this,d);return-1!==e?c[e]:null}).toArray()};var B=function(a,b){if(!(this instanceof B))return new B(a,b);var c=[],d=function(f){(f=Fc(f))&&c.push.apply(c,f)};if(Array.isArray(a))for(var e=0,h=a.length;ea?new B(b[a],this[a]):null},filter:function(a){var b=[];if(N.filter)b=N.filter.call(this,a,this);else for(var c=0,d=this.length;c").addClass(g),l("td",k).addClass(g).html(f)[0].colSpan=na(a),e.push(k[0]))};h(c,d);b._details&&b._details.detach();b._details=l(e);b._detailsShow&&b._details.insertAfter(b.nTr)},wc=u.util.throttle(function(a){Da(a[0])}, +500),Cb=function(a,b){var c=a.context;c.length&&(a=c[0].aoData[b!==q?b:a[0]])&&a._details&&(a._details.remove(),a._detailsShow=q,a._details=q,l(a.nTr).removeClass("dt-hasChild"),wc(c))},xc=function(a,b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];d._details&&((d._detailsShow=b)?(d._details.insertAfter(d.nTr),l(d.nTr).addClass("dt-hasChild")):(d._details.detach(),l(d.nTr).removeClass("dt-hasChild")),F(c[0],null,"childRow",[b,a.row(a[0])]),Ic(c[0]),wc(c))}},Ic=function(a){var b=new B(a), +c=a.aoData;b.off("draw.dt.DT_details column-sizing.dt.DT_details destroy.dt.DT_details");0g){var n=l.map(d,function(p,t){return p.bVisible?t:null});return[n[n.length+g]]}return[ta(a,g)];case "name":return l.map(e,function(p,t){return p===m[1]?t:null});default:return[]}if(f.nodeName&&f._DT_CellIndex)return[f._DT_CellIndex.column];g=l(h).filter(f).map(function(){return l.inArray(this,h)}).toArray();if(g.length||!f.nodeName)return g; +g=l(f).closest("*[data-dt-column]");return g.length?[g.data("dt-column")]:[]},a,c)};z("columns()",function(a,b){a===q?a="":l.isPlainObject(a)&&(b=a,a="");b=Ab(b);var c=this.iterator("table",function(d){return Kc(d,a,b)},1);c.selector.cols=a;c.selector.opts=b;return c});J("columns().header()","column().header()",function(a,b){return this.iterator("column",function(c,d){return c.aoColumns[d].nTh},1)});J("columns().footer()","column().footer()",function(a,b){return this.iterator("column",function(c, +d){return c.aoColumns[d].nTf},1)});J("columns().data()","column().data()",function(){return this.iterator("column-rows",yc,1)});J("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});J("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,h){return Fa(b.aoData,h,"search"===a?"_aFilterData":"_aSortData",c)},1)});J("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows", +function(a,b,c,d,e){return Fa(a.aoData,e,"anCells",b)},1)});J("columns().visible()","column().visible()",function(a,b){var c=this,d=this.iterator("column",function(e,h){if(a===q)return e.aoColumns[h].bVisible;var f=e.aoColumns,g=f[h],k=e.aoData,m;if(a!==q&&g.bVisible!==a){if(a){var n=l.inArray(!0,U(f,"bVisible"),h+1);f=0;for(m=k.length;fd;return!0};u.isDataTable=u.fnIsDataTable=function(a){var b=l(a).get(0),c=!1;if(a instanceof u.Api)return!0;l.each(u.settings,function(d,e){d=e.nScrollHead?l("table",e.nScrollHead)[0]:null;var h=e.nScrollFoot? +l("table",e.nScrollFoot)[0]:null;if(e.nTable===b||d===b||h===b)c=!0});return c};u.tables=u.fnTables=function(a){var b=!1;l.isPlainObject(a)&&(b=a.api,a=a.visible);var c=l.map(u.settings,function(d){if(!a||a&&l(d.nTable).is(":visible"))return d.nTable});return b?new B(c):c};u.camelToHungarian=P;z("$()",function(a,b){b=this.rows(b).nodes();b=l(b);return l([].concat(b.filter(a).toArray(),b.find(a).toArray()))});l.each(["on","one","off"],function(a,b){z(b+"()",function(){var c=Array.prototype.slice.call(arguments); +c[0]=l.map(c[0].split(/\s/),function(e){return e.match(/\.dt\b/)?e:e+".dt"}).join(" ");var d=l(this.tables().nodes());d[b].apply(d,c);return this})});z("clear()",function(){return this.iterator("table",function(a){Ma(a)})});z("settings()",function(){return new B(this.context,this.context)});z("init()",function(){var a=this.context;return a.length?a[0].oInit:null});z("data()",function(){return this.iterator("table",function(a){return U(a.aoData,"_aData")}).flatten()});z("destroy()",function(a){a=a|| +!1;return this.iterator("table",function(b){var c=b.oClasses,d=b.nTable,e=b.nTBody,h=b.nTHead,f=b.nTFoot,g=l(d);e=l(e);var k=l(b.nTableWrapper),m=l.map(b.aoData,function(p){return p.nTr}),n;b.bDestroying=!0;F(b,"aoDestroyCallback","destroy",[b]);a||(new B(b)).columns().visible(!0);k.off(".DT").find(":not(tbody *)").off(".DT");l(y).off(".DT-"+b.sInstance);d!=h.parentNode&&(g.children("thead").detach(),g.append(h));f&&d!=f.parentNode&&(g.children("tfoot").detach(),g.append(f));b.aaSorting=[];b.aaSortingFixed= +[];Va(b);l(m).removeClass(b.asStripeClasses.join(" "));l("th, td",h).removeClass(c.sSortable+" "+c.sSortableAsc+" "+c.sSortableDesc+" "+c.sSortableNone);e.children().detach();e.append(m);h=b.nTableWrapper.parentNode;f=a?"remove":"detach";g[f]();k[f]();!a&&h&&(h.insertBefore(d,b.nTableReinsertBefore),g.css("width",b.sDestroyWidth).removeClass(c.sTable),(n=b.asDestroyStripes.length)&&e.children().each(function(p){l(this).addClass(b.asDestroyStripes[p%n])}));c=l.inArray(b,u.settings);-1!==c&&u.settings.splice(c, +1)})});l.each(["column","row","cell"],function(a,b){z(b+"s().every()",function(c){var d=this.selector.opts,e=this;return this.iterator(b,function(h,f,g,k,m){c.call(e[b](f,"cell"===b?g:d,"cell"===b?d:q),f,g,k,m)})})});z("i18n()",function(a,b,c){var d=this.context[0];a=ma(a)(d.oLanguage);a===q&&(a=b);c!==q&&l.isPlainObject(a)&&(a=a[c]!==q?a[c]:a._);return a.replace("%d",c)});u.version="1.12.1";u.settings=[];u.models={};u.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0,"return":!1}; +u.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};u.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null, +sWidth:null,sWidthOrig:null};u.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, +this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){return{}}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+ +a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries", +sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:l.extend({},u.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};E(u.defaults); +u.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};E(u.defaults.column);u.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null, +bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[], +aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,jqXHR:null,json:q,oAjaxData:q,fnServerData:null,aoServerParams:[],sServerMethod:null, +fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==Q(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==Q(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+ +a,d=this.aiDisplay.length,e=this.oFeatures,h=e.bPaginate;return e.bServerSide?!1===h||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!h||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};u.ext=M={buttons:{},classes:{},builder:"bs4/dt-1.12.1",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[], +search:{},order:{}},_unique:0,fnVersionCheck:u.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:u.version};l.extend(M,{afnFiltering:M.search,aTypes:M.type.detect,ofnSearch:M.type.search,oSort:M.type.order,afnSortData:M.order,aoFeatures:M.feature,oApi:M.internal,oStdClasses:M.classes,oPagination:M.pager});l.extend(u.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty", +sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_desc_disabled",sSortableDesc:"sorting_asc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner", +sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var ic=u.ext.pager;l.extend(ic,{simple:function(a,b){return["previous","next"]},full:function(a,b){return["first","previous","next","last"]},numbers:function(a,b){return[Ea(a,b)]},simple_numbers:function(a,b){return["previous", +Ea(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Ea(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",Ea(a,b),"last"]},_numbers:Ea,numbers_length:7});l.extend(!0,u.ext.renderer,{pageButton:{_:function(a,b,c,d,e,h){var f=a.oClasses,g=a.oLanguage.oPaginate,k=a.oLanguage.oAria.paginate||{},m,n,p=0,t=function(x,w){var r,C=f.sPageButtonDisabled,G=function(I){Ta(a,I.data.action,!0)};var ba=0;for(r=w.length;ba").appendTo(x);t(O,L)}else{m=null;n=L;O=a.iTabIndex;switch(L){case "ellipsis":x.append('');break;case "first":m=g.sFirst;0===e&&(O=-1,n+=" "+C);break;case "previous":m=g.sPrevious;0===e&&(O=-1,n+=" "+C);break;case "next":m=g.sNext;if(0===h||e===h-1)O=-1,n+=" "+C;break;case "last":m=g.sLast;if(0===h||e===h-1)O=-1,n+=" "+C;break;default:m=a.fnFormatNumber(L+1),n=e===L?f.sPageButtonActive:""}null!==m&&(O=l("",{"class":f.sPageButton+" "+n,"aria-controls":a.sTableId, +"aria-label":k[L],"data-dt-idx":p,tabindex:O,id:0===c&&"string"===typeof L?a.sTableId+"_"+L:null}).html(m).appendTo(x),sb(O,{action:L},G),p++)}}};try{var v=l(b).find(A.activeElement).data("dt-idx")}catch(x){}t(l(b).empty(),d);v!==q&&l(b).find("[data-dt-idx="+v+"]").trigger("focus")}}});l.extend(u.ext.type.detect,[function(a,b){b=b.oLanguage.sDecimal;return yb(a,b)?"num"+b:null},function(a,b){if(a&&!(a instanceof Date)&&!Dc.test(a))return null;b=Date.parse(a);return null!==b&&!isNaN(b)||aa(a)?"date": +null},function(a,b){b=b.oLanguage.sDecimal;return yb(a,b,!0)?"num-fmt"+b:null},function(a,b){b=b.oLanguage.sDecimal;return pc(a,b)?"html-num"+b:null},function(a,b){b=b.oLanguage.sDecimal;return pc(a,b,!0)?"html-num-fmt"+b:null},function(a,b){return aa(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);l.extend(u.ext.type.search,{html:function(a){return aa(a)?a:"string"===typeof a?a.replace(mc," ").replace(Ya,""):""},string:function(a){return aa(a)?a:"string"===typeof a?a.replace(mc," "): +a}});var Xa=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=oc(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};l.extend(M.type.order,{"date-pre":function(a){a=Date.parse(a);return isNaN(a)?-Infinity:a},"html-pre":function(a){return aa(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return aa(a)?"":"string"===typeof a?a.toLowerCase():a.toString?a.toString():""},"string-asc":function(a,b){return ab?1:0},"string-desc":function(a, +b){return ab?-1:0}});bb("");l.extend(!0,u.ext.renderer,{header:{_:function(a,b,c,d){l(a.nTable).on("order.dt.DT",function(e,h,f,g){a===h&&(e=c.idx,b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==g[e]?d.sSortAsc:"desc"==g[e]?d.sSortDesc:c.sSortingClass))})},jqueryui:function(a,b,c,d){l("
").addClass(d.sSortJUIWrapper).append(b.contents()).append(l("").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);l(a.nTable).on("order.dt.DT",function(e,h,f,g){a===h&&(e=c.idx, +b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==g[e]?d.sSortAsc:"desc"==g[e]?d.sSortDesc:c.sSortingClass),b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass("asc"==g[e]?d.sSortJUIAsc:"desc"==g[e]?d.sSortJUIDesc:c.sSortingClassJUI))})}}});var $a=function(a){Array.isArray(a)&&(a=a.join(","));return"string"===typeof a?a.replace(/&/g,"&").replace(//g,">").replace(/"/g, +"""):a},kc=!1,zc=",",Ac=".";if(Intl)try{for(var Ha=(new Intl.NumberFormat).formatToParts(100000.1),ra=0;rah?"-":"",g=parseFloat(h);if(isNaN(g))return $a(h);g=g.toFixed(c);h=Math.abs(g);g=parseInt(h,10);h=c?b+(h-g).toFixed(c).substring(2):"";0===g&&0===parseFloat(h)&&(f="");return f+(d||"")+g.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+h+(e||"")}}},text:function(){return{display:$a,filter:$a}}}; +l.extend(u.ext.internal,{_fnExternApiFunc:lc,_fnBuildAjax:Qa,_fnAjaxUpdate:Kb,_fnAjaxParameters:Tb,_fnAjaxUpdateDraw:Ub,_fnAjaxDataSrc:za,_fnAddColumn:cb,_fnColumnOptions:Ia,_fnAdjustColumnSizing:sa,_fnVisibleToColumnIndex:ta,_fnColumnIndexToVisible:ua,_fnVisbleColumns:na,_fnGetColumns:Ka,_fnColumnTypes:eb,_fnApplyColumnDefs:Hb,_fnHungarianMap:E,_fnCamelToHungarian:P,_fnLanguageCompat:la,_fnBrowserDetect:Fb,_fnAddData:ia,_fnAddTr:La,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==q?b._DT_RowIndex: +null},_fnNodeToColumnIndex:function(a,b,c){return l.inArray(c,a.aoData[b].anCells)},_fnGetCellData:T,_fnSetCellData:Ib,_fnSplitObjNotation:hb,_fnGetObjectDataFn:ma,_fnSetObjectDataFn:ha,_fnGetDataMaster:ib,_fnClearTable:Ma,_fnDeleteIndex:Na,_fnInvalidate:va,_fnGetRowElements:gb,_fnCreateTr:fb,_fnBuildHead:Jb,_fnDrawHead:xa,_fnDraw:ja,_fnReDraw:ka,_fnAddOptionsHtml:Mb,_fnDetectHeader:wa,_fnGetUniqueThs:Pa,_fnFeatureHtmlFilter:Ob,_fnFilterComplete:ya,_fnFilterCustom:Xb,_fnFilterColumn:Wb,_fnFilter:Vb, +_fnFilterCreateSearch:nb,_fnEscapeRegex:ob,_fnFilterData:Yb,_fnFeatureHtmlInfo:Rb,_fnUpdateInfo:ac,_fnInfoMacros:bc,_fnInitialise:Aa,_fnInitComplete:Ra,_fnLengthChange:pb,_fnFeatureHtmlLength:Nb,_fnFeatureHtmlPaginate:Sb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:Pb,_fnProcessingDisplay:V,_fnFeatureHtmlTable:Qb,_fnScrollDraw:Ja,_fnApplyToChildren:da,_fnCalculateColumnWidths:db,_fnThrottle:mb,_fnConvertToWidth:cc,_fnGetWidestNode:dc,_fnGetMaxLenString:ec,_fnStringToCss:K,_fnSortFlatten:oa,_fnSort:Lb, +_fnSortAria:gc,_fnSortListener:rb,_fnSortAttachListener:kb,_fnSortingClasses:Va,_fnSortData:fc,_fnSaveState:Da,_fnLoadState:hc,_fnImplementState:tb,_fnSettingsFromNode:Wa,_fnLog:ea,_fnMap:Y,_fnBindAction:sb,_fnCallbackReg:R,_fnCallbackFire:F,_fnLengthOverflow:qb,_fnRenderer:lb,_fnDataSource:Q,_fnRowAttributes:jb,_fnExtend:ub,_fnCalculateEnd:function(){}});l.fn.dataTable=u;u.$=l;l.fn.dataTableSettings=u.settings;l.fn.dataTableExt=u.ext;l.fn.DataTable=function(a){return l(this).dataTable(a).api()}; +l.each(u,function(a,b){l.fn.DataTable[a]=b});return u}); + + +/*! + DataTables Bootstrap 4 integration + ©2011-2017 SpryMedia Ltd - datatables.net/license +*/ +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>", +renderer:"bootstrap"});a.extend(d.ext.classes,{sWrapper:"dataTables_wrapper dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"custom-select custom-select-sm form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});d.ext.renderer.pageButton.bootstrap=function(f,l,A,B,m,t){var u=new d.Api(f),C=f.oClasses,n=f.oLanguage.oPaginate,D=f.oLanguage.oAria.paginate||{},h,k,v=0,y=function(q,w){var x,E=function(p){p.preventDefault(); +a(p.currentTarget).hasClass("disabled")||u.page()==p.data.action||u.page(p.data.action).draw("page")};var r=0;for(x=w.length;r",{"class":C.sPageButton+" "+k,id:0===A&&"string"===typeof g?f.sTableId+"_"+g:null}).append(a("",{href:"#","aria-controls":f.sTableId,"aria-label":D[g],"data-dt-idx":v,tabindex:f.iTabIndex,"class":"page-link"}).html(h)).appendTo(q);f.oApi._fnBindAction(F,{action:g},E);v++}}}};try{var z=a(l).find(c.activeElement).data("dt-idx")}catch(q){}y(a(l).empty().html('
") +} + +window.onerror = function(message, source, lineno, colno, error) { + showError("An error occured! You might have to force reload the page with CTRL-F5.
Let us know what the error is by opening the console (CTRL-SHIFT-J on Chrome) and posting a screenshot of the error in Discord."); +} + +var Elements = +{ + Sidebar: document.getElementById('js-sidebar'), + Counter: document.getElementById('fpsLabel'), + EventLabel: document.getElementById('eventLabel'), + DownloadLabel: document.getElementById('downloadLabel'), + ModelControl: document.getElementById('js-model-control'), +}; + +var Settings = +{ + showFPS: true, + paused: false, + clearColor: [0.117, 0.207, 0.392], + farClip: 500, + farClipCull: 250, + speed: 1000.0, + portalCulling: true, + newDisplayInfo: true, + buildName: "" +} + +var Current = +{ + buildName: "", + fileDataID: 397940, + type: "m2", + embedded: false, + displayID: 0, + availableGeosets: [], + enabledGeosets: [] +} + +var DownloadQueue = []; +var isDownloading = false; +var numDownloading = 0; + +var stats = new Stats(); + +const materialResourceMap = new Map(); + +const filenameMap = new Map(); +filenameMap.set("0", "No texture"); + +function loadSettings(applyNow = false){ + /* Show/hide FPS counter */ + var storedShowFPS = localStorage.getItem('settings[showFPS]'); + if (storedShowFPS){ + if (storedShowFPS== "1"){ + Settings.showFPS = true; + stats.showPanel(1); + Elements.Counter.appendChild(stats.dom); + } else { + Settings.showFPS = false; + Elements.Counter.innerHTML = ""; + } + } + + document.getElementById("showFPS").checked = Settings.showFPS; + + /* Clear color */ + var storedCustomClearColor = localStorage.getItem('settings[customClearColor]'); + if (storedCustomClearColor){ + document.getElementById("customClearColor").value = storedCustomClearColor; + } else { + document.getElementById("customClearColor").value = '#1e3564'; + } + + var rawClearColor = document.getElementById("customClearColor").value.replace('#', ''); + var r = parseInt('0x' + rawClearColor.substring(0, 2)) / 255; + var g = parseInt('0x' + rawClearColor.substring(2, 4)) / 255; + var b = parseInt('0x' + rawClearColor.substring(4, 6)) / 255; + Settings.clearColor = [r, g, b]; + + /* Far clip */ + var storedFarClip = localStorage.getItem('settings[farClip]'); + if (storedFarClip){ + Settings.farClip = storedFarClip; + document.getElementById('farClip').value = storedFarClip; + } else { + document.getElementById('farClip').value = Settings.farClip; + } + + /* Far clip (model culling) */ + var storedFarClipCull = localStorage.getItem('settings[farClipCull]'); + if (storedFarClipCull){ + Settings.farClipCull = storedFarClipCull; + document.getElementById('farClipCull').value = storedFarClipCull; + } else { + document.getElementById('farClipCull').value = Settings.farClipCull; + } + + /* Portal culling */ + var storedPortalCulling = localStorage.getItem('settings[portalCulling]'); + if (storedPortalCulling){ + if (storedPortalCulling== "1"){ + Settings.portalCulling = true; + } else { + Settings.portalCulling = false; + } + } + + document.getElementById("portalCulling").checked = Settings.portalCulling; + + /* New Display Info */ + var newDisplayInfo = localStorage.getItem('settings[newDisplayInfo]'); + if (newDisplayInfo){ + if (newDisplayInfo== "1"){ + Settings.newDisplayInfo = true; + } else { + Settings.newDisplayInfo = false; + } + } + + document.getElementById("newDisplayInfo").checked = Settings.newDisplayInfo; + + /* If settings should be applied now (don't do this on page load!) */ + if (applyNow){ + Module._setClearColor(Settings.clearColor[0], Settings.clearColor[1], Settings.clearColor[2]); + Module._setFarPlane(Settings.farClip); + Module._setFarPlaneForCulling(Settings.farClipCull); + Module._enablePortalCulling(Settings.portalCulling); + } +} + +function saveSettings(){ + if (document.getElementById("showFPS").checked){ + localStorage.setItem('settings[showFPS]', '1'); + } else { + localStorage.setItem('settings[showFPS]', '0'); + } + + localStorage.setItem('settings[customClearColor]', document.getElementById("customClearColor").value); + localStorage.setItem('settings[farClip]', document.getElementById("farClip").value); + localStorage.setItem('settings[farClipCull]', document.getElementById("farClipCull").value); + + if (document.getElementById("portalCulling").checked){ + localStorage.setItem('settings[portalCulling]', '1'); + } else { + localStorage.setItem('settings[portalCulling]', '0'); + } + + if (document.getElementById("newDisplayInfo").checked){ + localStorage.setItem('settings[newDisplayInfo]', '1'); + } else { + localStorage.setItem('settings[newDisplayInfo]', '0'); + } + loadSettings(true); +} + +// Sidebar button, might not exist in embedded mode +if (document.getElementById( 'js-sidebar-button' )){ + document.getElementById( 'js-sidebar-button' ).addEventListener( 'click', function( ) + { + Elements.Sidebar.classList.toggle( 'closed' ); + } ); +} + +// Model control button, might not exist in embedded mode +if (document.getElementById( 'modelControlButton' )){ + document.getElementById( 'modelControlButton' ).addEventListener( 'click', function( ) + { + Elements.ModelControl.classList.toggle( 'closed' ); + } ); +} + +try { + if (typeof WebAssembly === "object" && typeof WebAssembly.instantiate === "function") { + const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00)); + if (module instanceof WebAssembly.Module) + var testModule = new WebAssembly.Instance(module) instanceof WebAssembly.Instance; + if (!testModule) showError("WebAssembly support is required but not supported by your browser."); + } +} catch (e) { + showError("WebAssembly support is required but not supported by your browser."); +} + +var urlFileDataID = new URL(window.location).searchParams.get("filedataid"); +if (urlFileDataID){ + Current.fileDataID = urlFileDataID; +} + +var urlType = new URL(window.location).searchParams.get("type"); +if (urlType){ + Current.type = urlType; +} + +var urlEmbed = new URL(window.location).searchParams.get("embed"); +if (urlEmbed){ + Current.embedded = true; + $("#js-sidebar-button").hide(); + $("#fpsLabel").hide(); + console.log("Running modelviewer in embedded mode!"); +} + +var urlClearColor = new URL(window.location).searchParams.get("clearColor"); +if (urlClearColor){ + var r = parseInt('0x' + urlClearColor.substring(0, 2)) / 255; + var g = parseInt('0x' + urlClearColor.substring(2, 4)) / 255; + var b = parseInt('0x' + urlClearColor.substring(4, 6)) / 255; + Settings.clearColor = [r, g, b]; +} + +var urlDisplayID = new URL(window.location).searchParams.get("displayID"); +if (urlDisplayID){ + Current.displayID = urlDisplayID; +} + +window.createscene = async function () { + const response = await fetch("/casc/buildname"); + Settings.buildName = await response.text(); + Current.buildName = Settings.buildName; + + + Module["canvas"] = document.getElementById("wowcanvas"); + + var url = "/casc/fname?filename="; + let urlFileId = "/casc/fdid?filedataid="; + + var ptrUrl = allocateUTF8(url); + var ptrUrlFileDataId = allocateUTF8(urlFileId); + + Module._createWebJsScene(document.body.clientWidth, document.body.clientHeight, ptrUrl, ptrUrlFileDataId); + + Module._setClearColor(Settings.clearColor[0], Settings.clearColor[1], Settings.clearColor[2]); + + if (Current.fileDataID == 397940 && Current.displayID != 0){ + Current.fileDataID = await getFileDataIDByDisplayID(Current.displayID); + Settings.newDisplayInfo = true; + } + + loadModel(Current.type, Current.fileDataID); + + _free(ptrUrl); + _free(ptrUrlFileDataId); + var lastTimeStamp = new Date().getTime(); + + Module["canvas"].width = document.body.clientWidth; + Module["canvas"].height = document.body.clientHeight; + + Module["animationArrayCallback"] = function(animIDArray) { + const animSelect = document.getElementById("animationSelect"); + animSelect.length = 0; + + if (animIDArray.length > 1){ + animIDArray.forEach(function(a) { + var opt = document.createElement('option'); + opt.value = a; + + if (a in animationNames){ + opt.innerHTML = animationNames[a] + ' (' + a + ')'; + } else { + console.log("Missing animation name for " + a + ", let a dev know!"); + opt.innerHTML = 'Animation ' + a; + } + + animSelect.appendChild(opt); + }); + + animSelect.style.display = "block"; + } + }; + + Module["meshIdArrayCallback"] = function(meshIDArray) { + Current.availableGeosets = Object.values(meshIDArray).map(function (x) { return parseInt(x, 10); }).sort(); + + const geosetControl = document.getElementById("geosets"); + geosetControl.innerHTML = "This functionality is WIP and might cause display issues. Use with caution."; + for (let meshID of Current.availableGeosets){ + meshID = Number(meshID); + + const geosetGroup = Math.round(meshID / 100); + const geosetIndex = meshID - (geosetGroup * 100); + + if (!document.getElementById("geosets-" + geosetGroup)){ + let geosetHolder = document.createElement('div'); + geosetHolder.innerHTML = "Geoset #" + geosetGroup; + geosetHolder.id = "geosets-" + geosetGroup; + geosetControl.appendChild(geosetHolder); + + let geosetSelect = document.createElement('select'); + geosetSelect.id = "geosetSelection-" + geosetGroup; + geosetSelect.dataset.geosetGroup = geosetGroup; + geosetSelect.onchange = function(){ Current.enabledGeosets[Number(this.dataset.geosetGroup)] = Number(this.value); updateEnabledGeosets(); }; + // let opt = document.createElement('option'); + // opt.value = 0; + // opt.innerHTML = 0; + // geosetSelect.appendChild(opt); + geosetHolder.appendChild(geosetSelect); + } + + let select = document.getElementById("geosetSelection-" + geosetGroup); + let opt = document.createElement('option'); + opt.value = geosetIndex; + opt.innerHTML = geosetIndex; + select.appendChild(opt); + + } + }; + + var renderfunc = function(now){ + stats.begin(); + + var timeDelta = 0; + + if (lastTimeStamp !== undefined) { + timeDelta = now - lastTimeStamp; + } + + lastTimeStamp = now; + + Module._gameloop(timeDelta / Settings.speed); + + // if (numDownloading > 0){ + // Elements.DownloadLabel.innerText = "Downloading " + numDownloading + " files.."; + // } + + stats.end(); + window.requestAnimationFrame(renderfunc); + }; + + window.requestAnimationFrame(renderfunc); +} + +window.addEventListener('resize', () => { + var canvas = document.getElementById("wowcanvas"); + if (canvas){ + canvas.width = document.body.clientWidth; + canvas.height = document.body.clientHeight; + if (Module && Module._setSceneSize){ + window.Module._setSceneSize(document.body.clientWidth, document.body.clientHeight); + } + } +}); + +$('#mvfiles').on('click', 'tbody tr td:first-child', function() { + var data = Elements.table.row($(this).parent()).data(); + + $(".selected").removeClass("selected"); + $(this).parent().addClass('selected'); + loadModel(data[4], data[0]); +}); + +$('#js-sidebar').on('input', '.paginate_input', function(){ + if ($(".paginate_input")[0].value != ''){ + $("#mvfiles").DataTable().page($(".paginate_input")[0].value - 1).ajax.reload(null, false) + } +}); + +window.addEventListener('keydown', function(event){ + if (document.activeElement.tagName == "SELECT"){ + return; + } + + if ($(".selected").length == 1){ + if (event.key == "ArrowDown"){ + if ($(".selected")[0].rowIndex == 20) return; + if (document.getElementById('mvfiles').rows.length > 1){ + $(document.getElementById('mvfiles').rows[$(".selected")[0].rowIndex + 1].firstChild).trigger("click"); + } + } else if (event.key == "ArrowUp"){ + if ($(".selected")[0].rowIndex == 1) return; + if (document.getElementById('mvfiles').rows.length > 1){ + $(document.getElementById('mvfiles').rows[$(".selected")[0].rowIndex - 1].firstChild).trigger("click"); + } + } + } + + if (document.activeElement.tagName == "INPUT" || document.activeElement.tagName == "SELECT"){ + event.stopImmediatePropagation(); + } else { + if (event.key == " "){ + if (Settings.paused){ + Settings.paused = false; + Elements.EventLabel.textContent = ""; + } else { + Settings.paused = true; + Elements.EventLabel.innerHTML = " Paused"; + } + + if (Settings.paused){ + Settings.speed = 1000000000000.0; + } else { + Settings.speed = 1000.0; + } + } + } +}, true); + +window.addEventListener('keyup', function(event){ + if (event.key == "PrintScreen" && !event.shiftKey && !event.ctrlKey && !event.altKey) Module._createScreenshot(); + if (document.activeElement.tagName == "INPUT" || document.activeElement.tagName == "SELECT"){ + event.stopImmediatePropagation(); + } +}, true); + +window.addEventListener('keypress', function(event){ + if (document.activeElement.tagName == "INPUT" || document.activeElement.tagName == "SELECT"){ + event.stopImmediatePropagation(); + } + + if (event.key == "Z" && event.shiftKey){ + toggleUI(); + } +}, true); + +$("#animationSelect").change(function () { + var display = this.options[this.selectedIndex].value; + Module._setAnimationId(display); +}); + +$("#skinSelect").change(function() { + if (this.options[this.selectedIndex].dataset.displayid == undefined){ + // Backwards compat + var display = this.options[this.selectedIndex].value.split(','); + if (display.length == 3 || display.length == 4){ + // Creature + if (display.length == 3){ + Module._resetReplaceParticleColor(); + } + setModelTexture(display, 11); + } else { + // Item + setModelTexture(display, 2); + } + } else { + setModelDisplay(this.options[this.selectedIndex].dataset.displayid, this.options[this.selectedIndex].dataset.type); + } +}); + +function toggleUI(){ + $(".navbar").toggle(); + $("#js-sidebar-button").toggle(); + $("#js-controls").toggle(); +} + +function loadModel(type, filedataid){ + Current.fileDataID = filedataid; + Current.type = type; + + Module._setClearColor(Settings.clearColor[0], Settings.clearColor[1], Settings.clearColor[2]); + Module._setFarPlane(Settings.farClip); + Module._setFarPlaneForCulling(Settings.farClipCull); + Module._enablePortalCulling(Settings.portalCulling); + + DownloadQueue = []; + isDownloading = false; + numDownloading = 0; + $.ajax({ + url: "/listfile/info?filename=1&filedataid=" + Current.fileDataID + }) + .done(function( filename ) { + Current.filename = filename; + + updateURLs(); + + if (!embeddedMode){ + history.pushState({id: 'modelviewer'}, 'Model Viewer', '/?filedataid=' + Current.fileDataID + '&type=' + Current.type); + } + + $("#animationSelect").hide(); + $("#skinSelect").hide(); + + var alwaysLoadByFDID = true; + + if (Current.type == "adt"){ + alwaysLoadByFDID = false; + } + + if (Current.type == "m2"){ + $("#exportButton").prop('disabled', false); + } else { + $("#exportButton").prop('disabled', true); + } + + if (Current.filename != "" && !alwaysLoadByFDID) { + console.log("Loading " + Current.filename + " " + Current.fileDataID + " (" + Current.type + ")"); + var ptrName = allocateUTF8(Current.filename); + if (Current.type == "adt") { + Module._setScene(2, ptrName, -1); + $("#js-controls").hide(); + } else if (Current.type == "wmo") { + Module._setScene(1, ptrName, -1); + $("#js-controls").hide(); + } else if (Current.type == "m2") { + Module._setScene(0, ptrName, -1); + $("#js-controls").show(); + if (!Settings.newDisplayInfo){ + loadModelTextures(); + } else { + loadModelDisplays(); + } + } else { + console.log("Unsupported type: " + Current.type); + } + } else { + console.log("Loading " + Current.fileDataID + " (" + Current.type + ")"); + if (Current.type == "adt") { + Module._setSceneFileDataId(2, Current.fileDataID, -1); + $("#js-controls").hide(); + } else if (Current.type == "wmo") { + Module._setSceneFileDataId(1, Current.fileDataID, -1); + $("#js-controls").hide(); + } else if (Current.type == "m2") { + Module._setSceneFileDataId(0, Current.fileDataID, -1); + $("#js-controls").show(); + if (!Settings.newDisplayInfo){ + loadModelTextures(); + } else { + loadModelDisplays(); + } + } else { + console.log("Unsupported type: " + Current.type); + } + } + }); +} + +async function setBuildNameByConfig(config){ + const buildResponse = await fetch("/api.php?type=namebybc&hash=" + config); + const buildName = await buildResponse.text(); + Current.buildName = buildName; +} + +async function loadModelDisplays() { + const cmdRows = await findCreatureModelDataRows(); + + let results; + if (cmdRows.length > 0){ + results = await loadCreatureDisplays(cmdRows); + } else { + results = await loadItemDisplays(); + } + + if (results == undefined || results.length == 0) + return; + + const skinSelect = document.getElementById("skinSelect"); + skinSelect.length = 0; + + // Filenames? + for (const result of results){ + var opt = document.createElement('option'); + + if (result.ResultType == "creature"){ + // Backwards compat with current model texture setting + opt.value = result['TextureVariationFileDataID[0]'] + "," + result['TextureVariationFileDataID[1]'] + "," + result['TextureVariationFileDataID[2]']; + opt.dataset.displayid = result.ID; + opt.dataset.type = 'creature'; + + if (!filenameMap.has(result['TextureVariationFileDataID[0]'])){ + const filenameResponse = await fetch("/listfile/info?filename=1&filedataid=" + result['TextureVariationFileDataID[0]']); + const filenameContents = await filenameResponse.text(); + if (filenameContents != ""){ + filenameMap.set(result['TextureVariationFileDataID[0]'], filenameContents.substring(filenameContents.lastIndexOf('/') + 1).replace(".blp", "")); + } else { + filenameMap.set(result['TextureVariationFileDataID[0]'], "Unknown"); + } + } + + opt.innerHTML = result.ID + " (" + filenameMap.get(result['TextureVariationFileDataID[0]']) + ")"; + } else if (result.ResultType == "item"){ + if (result['ModelMaterialResourcesID[0]'] != "0" && !materialResourceMap.has(result['ModelMaterialResourcesID[0]'])){ + const materialResponse = await fetch("/dbc/peek/TextureFileData/?build=" + Current.buildName + "&col=MaterialResourcesID&val=" + result['ModelMaterialResourcesID[0]']); + const materialJson = await materialResponse.json(); + + if (materialJson.values.FileDataID != undefined){ + materialResourceMap.set(materialJson.values.MaterialResourcesID, materialJson.values.FileDataID); + + if (!filenameMap.has(materialJson.values.FileDataID)){ + const filenameResponse = await fetch("/listfile/info?filename=1&filedataid=" + materialJson.values.FileDataID); + const filenameContents = await filenameResponse.text(); + if (filenameContents != ""){ + filenameMap.set(materialJson.values.FileDataID, filenameContents.substring(filenameContents.lastIndexOf('/') + 1).replace(".blp", "")); + } else { + filenameMap.set(materialJson.values.FileDataID, "Unknown"); + } + } + } + } else { + opt.innerHTML = "DisplayID " + result.ID; + } + + if (materialResourceMap.has(result['ModelMaterialResourcesID[0]'])){ + opt.value = materialResourceMap.get(result['ModelMaterialResourcesID[0]']); + opt.innerHTML = result.ID + " (" + filenameMap.get(materialResourceMap.get(result['ModelMaterialResourcesID[0]'])) + ")"; + } else { + opt.value = 0; + opt.innerHTML = result.ID + " (Unknown)"; + } + + opt.dataset.displayid = result.ID; + opt.dataset.type = 'item'; + } + + // TODO: If display ID is given (through URL params??), set to selected otherwise select first + if (Current.displayID == 0){ + if (skinSelect.children.length == 0){ + opt.selected = true; + setModelDisplay(result.ID, result.ResultType); + } + } + else if (Current.displayID != 0 && result.ID == Current.displayID){ + opt.selected = true; + setModelDisplay(result.ID, result.ResultType); + } + + skinSelect.appendChild(opt); + } + + if (skinSelect.children.length == 0){ + opt.selected = true; + setModelDisplay(result.ID, result.ResultType); + } + + skinSelect.style.display = "block"; +} + +async function findCreatureModelDataRows(){ + const response = await fetch("/dbc/find/CreatureModelData/?build=" + Current.buildName + "&col=FileDataID&val=" + Current.fileDataID); + const json = await response.json(); + return json; +} + +async function loadCreatureDisplays(cmdRows){ + const cdiPromises = Array(cmdRows.length); + let index = 0; + for (const cmdRow of cmdRows) { + cdiPromises[index++] = fetch("/dbc/find/CreatureDisplayInfo/?build=" + Current.buildName + "&col=ModelID&val=" + cmdRow.ID); + } + + const cdiResult = await Promise.all(cdiPromises); + const data = Array(cdiResult.length); + index = 0; + for (const response of cdiResult) + data[index++] = await response.json(); + + const result = []; + index = 0 + for (const entry of data){ + for (const row of entry){ + // TODO: Generic result format? + result[index] = row; + result[index].ResultType = "creature"; + index++; + } + } + + return result; +} + +async function loadItemDisplays(){ + const response = await fetch("/dbc/peek/ModelFileData/?build=" + Current.buildName + "&col=FileDataID&val=" + Current.fileDataID); + const modelFileData = await response.json(); + + if (modelFileData.values['ModelResourcesID'] === undefined) + return []; + + const idiPromises = [ + fetch("/dbc/find/ItemDisplayInfo/?build=" + Current.buildName + "&col=ModelResourcesID[0]&val=" + modelFileData.values['ModelResourcesID']), + fetch("/dbc/find/ItemDisplayInfo/?build=" + Current.buildName + "&col=ModelResourcesID[1]&val=" + modelFileData.values['ModelResourcesID']) + ]; + + const idiResult = await Promise.all(idiPromises); + const data = Array(idiResult.length); + let index = 0; + for (const response of idiResult) + data[index++] = await response.json(); + + const result = []; + index = 0 + for (const entry of data){ + for (const row of entry){ + // TODO: Generic result format? + result[index] = row; + result[index].ResultType = "item"; + index++; + } + } + + return result; +} + +async function getFileDataIDByDisplayID(displayID){ + const cdiResponse = await fetch("/dbc/peek/CreatureDisplayInfo/?build=" + Current.buildName + "&col=ID&val=" + displayID); + const cdiJson = await cdiResponse.json(); + + const cmdResponse = await fetch("/dbc/peek/CreatureModelData/?build=" + Current.buildName + "&col=ID&val=" + cdiJson.values['ModelID']); + const cmdJson = await cmdResponse.json(); + + if (cmdJson.values['FileDataID'] !== undefined){ + return cmdJson.values['FileDataID']; + } +} + +function loadModelTextures() { + //TODO build, fix wrong skin showing up after initial load + var loadedTextures = Array(); + var currentFDID = Current.fileDataID; + $.ajax({url: "/dbc/texture/" + Current.fileDataID + "?build=" + Current.buildName}).done( function(data) { + var forFDID = this.url.replace("/dbc/texture/", "").replace("?build=" + Current.buildName, ""); + if (Current.fileDataID != forFDID){ + console.log("This request is not for this filedataid, discarding.."); + return; + } + + $("#skinSelect").empty(); + for (let displayId in data) { + if (!data.hasOwnProperty(displayId)) continue; + + var intArray = data[displayId]; + if (intArray.every(fdid => fdid === 0)){ + continue; + } + + // Open controls overlay + $("#skinSelect").show(); + + if (loadedTextures.includes(intArray.join(','))) + continue; + + loadedTextures.push(intArray.join(',')); + + $.ajax({ + type: 'GET', + url: "/listfile/info", + data: { + filename: 1, + filedataid : intArray.join(",") + } + }) + .done(function( filename ) { + var textureFileDataIDs = decodeURIComponent(this.url.replace("/listfile/info?filename=1&filedataid=", '')).split(','); + + var textureFileDataID = textureFileDataIDs[0]; + + var optionHTML = '"; + } + + $("#skinSelect").append(optionHTML); + }); + } + }); +} + +function queueDL(url){ + DownloadQueue.push(url); + numDownloading++; + + if (!isDownloading){ + isDownloading = true; + $("#downloadLabel").show(); + } +} + +function unqueueDL(url){ + DownloadQueue = DownloadQueue.filter(function(queuedURL){ + return queuedURL != url; + }); + + if (DownloadQueue.length == 0){ + isDownloading = false; + $("#downloadLabel").hide(); + } + + numDownloading--; +} + +function handleDownloadStarted(url){ + queueDL(url); +} + +function handleDownloadFinished(url){ + unqueueDL(url); +} + +// Called by texture model save button +function updateTextures(){ + const textureArray = new Int32Array(18); + for (let i = 0; i < 18; i++){ + if (document.getElementById('tex' + i)){ + textureArray[i] = document.getElementById('tex' + i).value; + } + } + setModelTexture(textureArray, 0); +} + +function getScenePos(){ + var data = new Float32Array(3); + + var nDataBytes = data.length * data.BYTES_PER_ELEMENT; + var dataPtr = Module._malloc(nDataBytes); + + var dataHeap = new Uint8Array(Module.HEAPU8.buffer, dataPtr, nDataBytes); + dataHeap.set(new Uint8Array(data.buffer)); + + Module._getScenePos(dataHeap.byteOffset); + + var pos = new Float32Array(dataHeap.buffer, dataHeap.byteOffset, data.length); + console.log(pos); + + Module._free(dataHeap.byteOffset); +} + +async function setModelDisplay(displayID, type){ + console.log("Selected Display ID " + displayID); + if (type == "creature"){ + const response = await fetch("/dbc/peek/CreatureDisplayInfo/?build=" + Current.buildName + "&col=ID&val=" + displayID); + const cdiRow = await response.json(); + + if (Object.keys(cdiRow.values).length == 0) + return; + + // Textures + setModelTexture([cdiRow.values['TextureVariationFileDataID[0]'], cdiRow.values['TextureVariationFileDataID[1]'], cdiRow.values['TextureVariationFileDataID[2]']], 11); + + // Particle colors + if (cdiRow.values['ParticleColorID'] != 0){ + const particleResponse = await fetch("/dbc/peek/ParticleColor/?build=" + Current.buildName + "&col=ID&val=" + cdiRow.values['ParticleColorID']); + const particleRow = await particleResponse.json(); + console.log(particleRow); + Module._resetReplaceParticleColor(); + Module._setReplaceParticleColors( + particleRow.values["Start[0]"], particleRow.values["Start[1]"], particleRow.values["Start[2]"], + particleRow.values["MID[0]"], particleRow.values["MID[1]"], particleRow.values["MID[2]"], + particleRow.values["End[0]"], particleRow.values["End[1]"], particleRow.values["End[2]"] + ); + } else { + Module._resetReplaceParticleColor(); + } + + const cmdResponse = await fetch("/dbc/peek/CreatureModelData/?build=" + Current.buildName + "&col=ID&val=" + cdiRow.values['ModelID']); + const cmdRow = await cmdResponse.json(); + // TODO: Model scale? Anything else from CMD? + + // Geosets + Current.enabledGeosets = []; + + if (cmdRow.values.CreatureGeosetDataID != "0"){ + const geosetResponse = await fetch("/dbc/find/CreatureDisplayInfoGeosetData/?build=" + Current.buildName + "&col=CreatureDisplayInfoID&val=" + cdiRow.values['ID']); + const geosetResults = await geosetResponse.json(); + const geosetsToEnable = []; + + console.log(geosetResults); + + for (const geosetRow of geosetResults){ + geosetsToEnable[Number(geosetRow.GeosetIndex) + 1] = Number(geosetRow.GeosetValue); + } + + for (const geoset of Current.availableGeosets){ + const geosetGroup = Math.floor(Number(geoset / 100)); + if (!(geosetGroup in geosetsToEnable)){ + geosetsToEnable[geosetGroup] = 0; + } + } + + Current.enabledGeosets = geosetsToEnable; + + updateEnabledGeosets(); + } + } else if (type == "item"){ + // TODO: Items, this is very rough support, only supports ModelMaterialResourcesID[0] + + // Textures + // Probably don't request loadItemDisplays all over again + const displays = await loadItemDisplays(); + for (const display of displays){ + if (display.ID != displayID) + continue; + + console.log(display); + + setModelTexture([materialResourceMap.get(display['ModelMaterialResourcesID[0]'])], 2); + } + + } +} + +function updateEnabledGeosets(){ + var nDataBytes = Current.enabledGeosets.length; + var dataPtr = Module._malloc(nDataBytes); + + var dataHeap = new Uint8Array(Module.HEAPU8.buffer, dataPtr, nDataBytes); + dataHeap.set(new Uint8Array(Current.enabledGeosets)); + + Module._setMeshIdArray(dataHeap.byteOffset, Current.enabledGeosets.length); +} + +function setModelTexture(textures, offset){ + //Create real texture replace array + const typedArray = new Int32Array(18); + + for (let i = 0; i < textures.length; i++){ + if (offset == 11 && i == 3){ + var particleColorID = textures[3]; + console.log("Particle Color should be set to " + particleColorID); + fetch("/dbc/peek/particlecolor?build=" + Current.buildName + "&col=ID&val=" + particleColorID) + .then(function (response) { + return response.json(); + }).then(function (particleColorEntry) { + const row = particleColorEntry.values; + Module._setReplaceParticleColors( + row["Start[0]"], row["Start[1]"], row["Start[2]"], + row["MID[0]"], row["MID[1]"], row["MID[2]"], + row["End[0]"], row["End[1]"], row["End[2]"] + ); + }).catch(function (error) { + console.log("An error occured retrieving particle colors for ID " + particleColorID); + }); + } else { + typedArray[offset + i] = textures[i]; + const inputTarget = offset + i; + if (document.getElementById('tex' + inputTarget)){ + document.getElementById('tex' + inputTarget).value = textures[i]; + } + } + } + + // Allocate some space in the heap for the data (making sure to use the appropriate memory size of the elements) + let buffer = Module._malloc(typedArray.length * typedArray.BYTES_PER_ELEMENT); + + // Assign the data to the heap - Keep in mind bytes per element + Module.HEAP32.set(typedArray, buffer >> 2); + + Module._setTextures(buffer, typedArray.length); + + Module._free(buffer); +} + +function updateURLs(){ + var url = "/casc/fname?filename="; + let urlFileId = "/casc/fdid?filedataid="; + + var ptrUrl = allocateUTF8(url); + var ptrUrlFileDataId = allocateUTF8(urlFileId); + + Module._setNewUrls(ptrUrl, ptrUrlFileDataId); + + _free(ptrUrl); + _free(ptrUrlFileDataId); +} + +function exportScene(){ + if (Current.type == "m2"){ + Module._startExport(); + } +} + +(function() { + $('#wowcanvas').bind('contextmenu', function(e){ + return false; + }); + + // Skip further initialization in embedded mode + if (embeddedMode){ + return; + } + + loadSettings(); + + Elements.table = $('#mvfiles').DataTable({ + "processing": true, + "serverSide": true, + "ajax": { + "url": "/listfile/datatables", + "data": function ( d ) { + return $.extend( {}, d, { + "src": "mv" + } ); + } + }, + "pageLength": 20, + "autoWidth": false, + "pagingType": "input", + "orderMulti": false, + "ordering": true, + "order": [[0, 'asc']], + "dom": 'prt', + "searching": true, + "columnDefs": + [ + { + "targets": 0, + "orderable": false, + "visible": false + }, + { + "targets": 1, + "orderable": false, + "createdCell": function (td, cellData, rowData, row, col) { + if (!cellData && !rowData[7]) { + $(td).css('background-color', '#ff5858'); + $(td).css('color', 'white'); + } + }, + "render": function ( data, type, full, meta ) { + if (full[1]) { + var test = full[1].replace(/^.*[\\\/]/, ''); + } else { + if (!full[4]){ + full[4] = "unk"; + } + if (full[7]){ + var test = full[7].replace(/^.*[\\\/]/, ''); + } else { + var test = "Unknown filename (Type: " + full[4] + ", ID " + full[0] + ")"; + } + } + + return test; + } + } + ], + "language": { + search: "", + searchPlaceholder: "Search" + } + }); + + $(".filterBox").on('change', function(){ + Elements.table.ajax.reload(); + }); + + $('#mvfiles_search').on('input', function(){ + Elements.table.search($(this).val()).draw(); + }); +}()); \ No newline at end of file diff --git a/wwwroot/project.data b/wwwroot/project.data new file mode 100644 index 0000000..d603cd2 --- /dev/null +++ b/wwwroot/project.data @@ -0,0 +1,6812 @@ +#version 100 +precision mediump float; +precision highp int; + +uniform vec4 _65_uViewUp; +uniform vec4 _65_uSunDir_FogStart; +uniform vec4 _65_uSunColor_uFogEnd; +uniform vec4 _65_uAmbientLight; +uniform vec4 _65_FogColor; +uniform int _65_uNewFormula; +uniform sampler2D uDiffuseTexture; +uniform sampler2D uNormalTexture; + +varying vec2 vChunkCoords; +varying vec3 vPosition; + +void main() +{ + vec2 TextureCoords = vec2(vChunkCoords.x, vChunkCoords.y); + vec4 texDiffuse = texture2D(uDiffuseTexture, TextureCoords); + vec3 matDiffuse = texDiffuse.xyz; + vec3 vNormal = (texture2D(uNormalTexture, TextureCoords).xyz * 2.0) - vec3(1.0); + vNormal = vec3(-vNormal.z, -vNormal.x, vNormal.y); + vec4 finalColor = vec4(0.0, 0.0, 0.0, 1.0); + vec3 fogColor = _65_FogColor.xyz; + float fog_start = _65_uSunDir_FogStart.w; + float fog_end = _65_uSunColor_uFogEnd.w; + float fog_rate = 1.5; + float fog_bias = 0.00999999977648258209228515625; + float distanceToCamera = length(vPosition); + float z_depth = distanceToCamera - fog_bias; + float expFog = 1.0 / exp(max(0.0, z_depth - fog_start) * fog_rate); + float heightFog = 1.0; + expFog += heightFog; + float endFadeFog = clamp((fog_end - distanceToCamera) / (0.699999988079071044921875 * fog_end), 0.0, 1.0); + vec3 _123 = mix(fogColor, finalColor.xyz, vec3(min(expFog, endFadeFog))); + finalColor = vec4(_123.x, _123.y, _123.z, finalColor.w); + finalColor.w = 1.0; + gl_FragData[0] = finalColor; +} + + +#version 100 + +uniform vec3 _55_uPos; +uniform mat4 _55_uLookAtMat; +uniform mat4 _55_uPMatrix; +attribute float aIndex; +attribute float aHeight; +varying vec2 vChunkCoords; +varying vec3 vPosition; + +void main() +{ + float stepX = floor(aIndex / 16641.0); + float division = 129.0; + bool _20 = stepX > 0.100000001490116119384765625; + if (_20) + { + division = 128.0; + } + float offset = (stepX * 129.0) * 129.0; + float iX = mod(aIndex - offset, division) + (stepX * 0.5); + float iY = floor((aIndex - offset) / division) + (stepX * 0.5); + vec4 worldPoint = vec4(_55_uPos.x - (iY * 4.166666507720947265625), _55_uPos.y - (iX * 4.166666507720947265625), aHeight, 1.0); + vChunkCoords = vec2(iX / 128.0, iY / 128.0); + vPosition = (_55_uLookAtMat * worldPoint).xyz; + gl_Position = (_55_uPMatrix * _55_uLookAtMat) * worldPoint; +} + + +#version 100 +precision mediump float; +precision highp int; + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct InteriorLightParam +{ + vec4 uInteriorAmbientColorAndApplyInteriorLight; + vec4 uInteriorDirectColorAndApplyExteriorLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +uniform vec4 _466_uHeightScale; +uniform vec4 _466_uHeightOffset; +uniform mat4 _466_animationMat[4]; +uniform ivec4 _506_uUseHeightMixFormula; +uniform mat4 _748_scene_uLookAtMat; +uniform mat4 _748_scene_uPMatrix; +uniform vec4 _748_scene_uViewUp; +uniform vec4 _748_scene_uInteriorSunDir; +uniform vec4 _748_scene_extLight_uExteriorAmbientColor; +uniform vec4 _748_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _748_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _748_scene_extLight_uExteriorDirectColor; +uniform vec4 _748_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _748_scene_extLight_adtSpecMult; +uniform vec4 _748_fogData_densityParams; +uniform vec4 _748_fogData_heightPlane; +uniform vec4 _748_fogData_color_and_heightRate; +uniform vec4 _748_fogData_heightDensity_and_endColor; +uniform vec4 _748_fogData_sunAngle_and_sunColor; +uniform vec4 _748_fogData_heightColor_and_endFogDistance; +uniform vec4 _748_fogData_sunPercentage; +uniform sampler2D uAlphaTexture; +uniform sampler2D uLayerHeight0; +uniform sampler2D uLayerHeight1; +uniform sampler2D uLayerHeight2; +uniform sampler2D uLayerHeight3; +uniform sampler2D uLayer0; +uniform sampler2D uLayer1; +uniform sampler2D uLayer2; +uniform sampler2D uLayer3; + +varying vec2 vChunkCoords; +varying vec4 vColor; +varying vec3 vNormal; +varying vec3 vVertexLighting; +varying vec3 vPosition; + +vec4 mixTextures(vec4 tex0, vec4 tex1, float alpha) +{ + return ((tex1 - tex0) * alpha) + tex0; +} + +vec3 calcLight(vec3 matDiffuse, vec3 vNormal_1, bool applyLight, float interiorExteriorBlend, SceneWideParams sceneParams, InteriorLightParam intLight, vec3 accumLight, vec3 precomputedLight, vec3 specular, vec3 emissive) +{ + vec3 localDiffuse = accumLight; + bool _58 = !applyLight; + if (_58) + { + return matDiffuse; + } + vec3 lDiffuse = vec3(0.0); + vec3 normalizedN = normalize(vNormal_1); + bool _74 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + vec3 currColor; + if (_74) + { + float nDotL = clamp(dot(normalizedN, -sceneParams.extLight.uExteriorDirectColorDir.xyz), 0.0, 1.0); + float nDotUp = dot(normalizedN, sceneParams.uViewUp.xyz); + vec3 adjAmbient = sceneParams.extLight.uExteriorAmbientColor.xyz + precomputedLight; + vec3 adjHorizAmbient = sceneParams.extLight.uExteriorHorizontAmbientColor.xyz + precomputedLight; + vec3 adjGroundAmbient = sceneParams.extLight.uExteriorGroundAmbientColor.xyz + precomputedLight; + bool _111 = nDotUp >= 0.0; + if (_111) + { + currColor = mix(adjHorizAmbient, adjAmbient, vec3(nDotUp)); + } + else + { + currColor = mix(adjHorizAmbient, adjGroundAmbient, vec3(-nDotUp)); + } + vec3 skyColor = currColor * 1.10000002384185791015625; + vec3 groundColor = currColor * 0.699999988079071044921875; + lDiffuse = sceneParams.extLight.uExteriorDirectColor.xyz * nDotL; + currColor = mix(groundColor, skyColor, vec3(0.5 + (0.5 * nDotL))); + } + bool _151 = intLight.uInteriorAmbientColorAndApplyInteriorLight.w > 0.0; + if (_151) + { + float nDotL_1 = clamp(dot(normalizedN, -sceneParams.uInteriorSunDir.xyz), 0.0, 1.0); + vec3 lDiffuseInterior = intLight.uInteriorDirectColorAndApplyExteriorLight.xyz * nDotL_1; + vec3 interiorAmbient = intLight.uInteriorAmbientColorAndApplyInteriorLight.xyz + precomputedLight; + bool _175 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + if (_175) + { + lDiffuse = mix(lDiffuseInterior, lDiffuse, vec3(interiorExteriorBlend)); + currColor = mix(interiorAmbient, currColor, vec3(interiorExteriorBlend)); + } + else + { + lDiffuse = lDiffuseInterior; + currColor = interiorAmbient; + } + } + vec3 gammaDiffTerm = matDiffuse * (currColor + lDiffuse); + vec3 linearDiffTerm = (matDiffuse * matDiffuse) * localDiffuse; + vec3 specTerm = specular; + vec3 emTerm = emissive; + return (sqrt((gammaDiffTerm * gammaDiffTerm) + linearDiffTerm) + specTerm) + emTerm; +} + +vec3 validateFogColor(in vec3 fogColor, int blendMode) { + return fogColor; +} +vec4 makeFog(PSFog fogData, vec4 final, vec3 vertexInViewSpace, vec3 sunDirInViewSpace, int blendMode) +{ + vec4 l_densityParams = fogData.densityParams; + vec4 l_heightPlane = fogData.heightPlane; + vec4 l_color_and_heightRate = fogData.color_and_heightRate; + vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + float start = l_densityParams.x; + float end = l_densityParams.y; + float density = l_densityParams.z; + float bias = l_densityParams.w; + float vLength = length(vertexInViewSpace); + float z = vLength - bias; + float expMax = max(0.0, z - start); + float expFog = 1.0 / exp(expMax * density); + float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + float finalFog = mix(expFog, expFogHeight, heightFog); + float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + float alpha = 1.0; + bool _317 = blendMode == 13; + if (_317) + { + alpha = min(finalFog, endFadeFog); + } + vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + vec3 endColor = validateFogColor(param, param_1); + vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + float end2 = vLength / l_heightColor_and_endFogDistance.w; + float end2_cube = end2 * (end2 * end2); + vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _395 = nDotSun > 0.0; + if (_395) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + vec2 vTexCoord = vChunkCoords; + vec2 alphaCoord = vec2(vChunkCoords.x / 8.0, vChunkCoords.y / 8.0); + vec3 alphaBlend = texture2D(uAlphaTexture, alphaCoord).yzw; + vec2 tcLayer0 = (_466_animationMat[0] * vec4(vTexCoord, 0.0, 1.0)).xy; + vec2 tcLayer1 = (_466_animationMat[1] * vec4(vTexCoord, 0.0, 1.0)).xy; + vec2 tcLayer2 = (_466_animationMat[2] * vec4(vTexCoord, 0.0, 1.0)).xy; + vec2 tcLayer3 = (_466_animationMat[3] * vec4(vTexCoord, 0.0, 1.0)).xy; + bool _510 = _506_uUseHeightMixFormula.x > 0; + vec4 final; + if (_510) + { + float minusAlphaBlendSum = 1.0 - clamp(dot(alphaBlend, vec3(1.0)), 0.0, 1.0); + vec4 weightsVector = vec4(minusAlphaBlendSum, alphaBlend); + float weightedTexture_x = minusAlphaBlendSum * ((texture2D(uLayerHeight0, tcLayer0).w * _466_uHeightScale.x) + _466_uHeightOffset.x); + float weightedTexture_y = weightsVector.y * ((texture2D(uLayerHeight1, tcLayer1).w * _466_uHeightScale.y) + _466_uHeightOffset.y); + float weightedTexture_z = weightsVector.z * ((texture2D(uLayerHeight2, tcLayer2).w * _466_uHeightScale.z) + _466_uHeightOffset.z); + float weightedTexture_w = weightsVector.w * ((texture2D(uLayerHeight3, tcLayer3).w * _466_uHeightScale.w) + _466_uHeightOffset.w); + vec4 weights = vec4(weightedTexture_x, weightedTexture_y, weightedTexture_z, weightedTexture_w); + vec4 weights_temp = weights * (vec4(1.0) - clamp(vec4(max(max(weightedTexture_x, weightedTexture_y), max(weightedTexture_z, weightedTexture_w))) - weights, vec4(0.0), vec4(1.0))); + vec4 weightsNormalized = weights_temp / vec4(dot(vec4(1.0), weights_temp)); + vec4 weightedLayer_0 = texture2D(uLayer0, tcLayer0) * weightsNormalized.x; + vec3 matDiffuse_0 = weightedLayer_0.xyz; + float specBlend_0 = weightedLayer_0.w; + vec4 weightedLayer_1 = texture2D(uLayer1, tcLayer1) * weightsNormalized.y; + vec3 matDiffuse_1 = matDiffuse_0 + weightedLayer_1.xyz; + float specBlend_1 = specBlend_0 + weightedLayer_1.w; + vec4 weightedLayer_2 = texture2D(uLayer2, tcLayer2) * weightsNormalized.z; + vec3 matDiffuse_2 = matDiffuse_1 + weightedLayer_2.xyz; + float specBlend_2 = specBlend_1 + weightedLayer_2.w; + vec4 weightedLayer_3 = texture2D(uLayer3, tcLayer3) * weightsNormalized.w; + vec3 matDiffuse_3 = matDiffuse_2 + weightedLayer_3.xyz; + float specBlend_3 = specBlend_2 + weightedLayer_3.w; + final = vec4(matDiffuse_3, specBlend_3); + } + else + { + vec4 tex1 = texture2D(uLayer0, tcLayer0); + vec4 tex2 = texture2D(uLayer1, tcLayer1); + vec4 tex3 = texture2D(uLayer2, tcLayer2); + vec4 tex4 = texture2D(uLayer3, tcLayer3); + vec4 param = tex1; + vec4 param_1 = tex2; + float param_2 = alphaBlend.x; + vec4 param_3 = mixTextures(param, param_1, param_2); + vec4 param_4 = tex3; + float param_5 = alphaBlend.y; + vec4 param_6 = mixTextures(param_3, param_4, param_5); + vec4 param_7 = tex4; + float param_8 = alphaBlend.z; + final = mixTextures(param_6, param_7, param_8); + } + vec3 matDiffuse = (final.xyz * 2.0) * vColor.xyz; + vec3 param_9 = matDiffuse; + vec3 param_10 = vNormal; + bool param_11 = true; + float param_12 = 0.0; + SceneWideParams param_13; + param_13.uLookAtMat = _748_scene_uLookAtMat; + param_13.uPMatrix = _748_scene_uPMatrix; + param_13.uViewUp = _748_scene_uViewUp; + param_13.uInteriorSunDir = _748_scene_uInteriorSunDir; + param_13.extLight.uExteriorAmbientColor = _748_scene_extLight_uExteriorAmbientColor; + param_13.extLight.uExteriorHorizontAmbientColor = _748_scene_extLight_uExteriorHorizontAmbientColor; + param_13.extLight.uExteriorGroundAmbientColor = _748_scene_extLight_uExteriorGroundAmbientColor; + param_13.extLight.uExteriorDirectColor = _748_scene_extLight_uExteriorDirectColor; + param_13.extLight.uExteriorDirectColorDir = _748_scene_extLight_uExteriorDirectColorDir; + param_13.extLight.adtSpecMult = _748_scene_extLight_adtSpecMult; + InteriorLightParam param_14 = InteriorLightParam(vec4(0.0), vec4(0.0, 0.0, 0.0, 1.0)); + vec3 param_15 = vVertexLighting; + vec4 finalColor = vec4(calcLight(param_9, param_10, param_11, param_12, param_13, param_14, param_15, vec3(0.0), vec3(0.0), vec3(0.0)), 1.0); + float specBlend = final.w; + vec3 halfVec = -normalize(_748_scene_extLight_uExteriorDirectColorDir.xyz + normalize(vPosition)); + vec3 lSpecular = _748_scene_extLight_uExteriorDirectColor.xyz * pow(max(0.0, dot(halfVec, vNormal)), 20.0); + vec3 specTerm = (vec3(specBlend) * lSpecular) * _748_scene_extLight_adtSpecMult.x; + vec3 _831 = finalColor.xyz + specTerm; + finalColor = vec4(_831.x, _831.y, _831.z, finalColor.w); + PSFog arg; + arg.densityParams = _748_fogData_densityParams; + arg.heightPlane = _748_fogData_heightPlane; + arg.color_and_heightRate = _748_fogData_color_and_heightRate; + arg.heightDensity_and_endColor = _748_fogData_heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _748_fogData_sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _748_fogData_heightColor_and_endFogDistance; + arg.sunPercentage = _748_fogData_sunPercentage; + vec4 param_16 = finalColor; + vec3 param_17 = vPosition; + vec3 param_18 = _748_scene_extLight_uExteriorDirectColorDir.xyz; + int param_19 = 0; + finalColor = makeFog(arg, param_16, param_17, param_18, param_19); + finalColor.w = 1.0; + gl_FragData[0] = finalColor; +} + + +#version 100 + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +uniform mat4 _91_scene_uLookAtMat; +uniform mat4 _91_scene_uPMatrix; +uniform vec4 _91_scene_uViewUp; +uniform vec4 _91_scene_uInteriorSunDir; +uniform vec4 _91_scene_extLight_uExteriorAmbientColor; +uniform vec4 _91_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _91_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _91_scene_extLight_uExteriorDirectColor; +uniform vec4 _91_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _91_scene_extLight_adtSpecMult; +uniform vec4 _91_fogData_densityParams; +uniform vec4 _91_fogData_heightPlane; +uniform vec4 _91_fogData_color_and_heightRate; +uniform vec4 _91_fogData_heightDensity_and_endColor; +uniform vec4 _91_fogData_sunAngle_and_sunColor; +uniform vec4 _91_fogData_heightColor_and_endFogDistance; +uniform vec4 _91_fogData_sunPercentage; +uniform vec4 _139_uPos; +attribute float aIndex; +attribute vec3 aHeight; +varying vec2 vChunkCoords; +varying vec3 vPosition; +varying vec4 vColor; +attribute vec4 aColor; +varying vec3 vVertexLighting; +attribute vec4 aVertexLighting; +varying vec3 vNormal; +attribute vec3 aNormal; + +mat3 blizzTranspose(mat4 value) +{ + return mat3(vec3(value[0].xyz), vec3(value[1].xyz), vec3(value[2].xyz)); +} + +void main() +{ + float iX = mod(aIndex, 17.0); + float iY = floor(aIndex / 17.0); + bool _61 = iX > 8.0100002288818359375; + if (_61) + { + iY += 0.5; + iX -= 8.5; + } + vec4 worldPoint = vec4(aHeight, 1.0); + vChunkCoords = vec2(iX, iY); + vPosition = (_91_scene_uLookAtMat * worldPoint).xyz; + vColor = aColor; + vVertexLighting = aVertexLighting.xyz; + mat4 param = _91_scene_uLookAtMat; + vNormal = blizzTranspose(param) * aNormal; + gl_Position = (_91_scene_uPMatrix * _91_scene_uLookAtMat) * worldPoint; +} + + +#version 100 +precision mediump float; +precision highp int; + +uniform mat4 _13_uPlacementMat; +uniform vec4 _13_uBBScale; +uniform vec4 _13_uBBCenter; +uniform vec4 _13_uColor; +void main() +{ + vec4 finalColor = _13_uColor; + gl_FragData[0] = finalColor; +} + + +#version 100 + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +uniform mat4 _21_uPlacementMat; +uniform vec4 _21_uBBScale; +uniform vec4 _21_uBBCenter; +uniform vec4 _21_uColor; +uniform mat4 _62_scene_uLookAtMat; +uniform mat4 _62_scene_uPMatrix; +uniform vec4 _62_scene_uViewUp; +uniform vec4 _62_scene_uInteriorSunDir; +uniform vec4 _62_scene_extLight_uExteriorAmbientColor; +uniform vec4 _62_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _62_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _62_scene_extLight_uExteriorDirectColor; +uniform vec4 _62_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _62_scene_extLight_adtSpecMult; +uniform vec4 _62_fogData_densityParams; +uniform vec4 _62_fogData_heightPlane; +uniform vec4 _62_fogData_color_and_heightRate; +uniform vec4 _62_fogData_heightDensity_and_endColor; +uniform vec4 _62_fogData_sunAngle_and_sunColor; +uniform vec4 _62_fogData_heightColor_and_endFogDistance; +uniform vec4 _62_fogData_sunPercentage; +attribute vec3 aPosition; + +void main() +{ + vec4 worldPoint = vec4((aPosition.x * _21_uBBScale.x) + _21_uBBCenter.x, (aPosition.y * _21_uBBScale.y) + _21_uBBCenter.y, (aPosition.z * _21_uBBScale.z) + _21_uBBCenter.z, 1.0); + gl_Position = ((_62_scene_uPMatrix * _62_scene_uLookAtMat) * _21_uPlacementMat) * worldPoint; +} + + +#version 100 +precision mediump float; +precision highp int; + +uniform int _10_drawDepth; +uniform float _10_uFarPlane; +uniform float _10_uNearPlane; +uniform sampler2D diffuse; + +varying vec2 texCoord; + +void main() +{ + bool _17 = _10_drawDepth == 1; + vec4 finalColor; + if (_17) + { + float f = _10_uFarPlane; + float n = _10_uNearPlane; + float z = (2.0 * n) / ((f + n) - (texture2D(diffuse, texCoord).x * (f - n))); + finalColor = vec4(z, z, z, 255.0); + } + else + { + finalColor = vec4(texture2D(diffuse, texCoord).xyz, 255.0); + } + gl_FragData[0] = finalColor; +} + + +#version 100 +precision mediump float; +precision highp int; + +uniform vec3 _22_uColor; +void main() +{ + vec4 finalColor = vec4(1.0); + finalColor.w = 1.0; + gl_FragData[0] = finalColor; +} + + +#version 100 + +uniform mat4 _13_uLookAtMat; +uniform mat4 _13_uPMatrix; +attribute vec3 aPosition; + +void main() +{ + vec4 c_world = inverse(_13_uPMatrix) * vec4(aPosition, 1.0); + c_world = (c_world * 1.0) / vec4(c_world.w); + gl_Position = (_13_uPMatrix * _13_uLookAtMat) * vec4(c_world.xyz, 1.0); +} + + +#version 100 +precision mediump float; +precision highp int; + +uniform vec3 _19_uColor; +void main() +{ + vec4 finalColor = vec4(1.0, 1.0, 0.0, 1.0); + gl_FragData[0] = finalColor; +} + + +#version 100 + +uniform mat4 _19_uLookAtMat; +uniform mat4 _19_uPMatrix; +attribute vec2 aPosition; + +void main() +{ + gl_Position = (_19_uPMatrix * _19_uLookAtMat) * vec4(aPosition, 0.0, 1.0); +} + + +#version 100 +precision mediump float; +precision highp int; + +uniform vec3 _13_uColor; +varying vec4 vPos; + +void main() +{ + gl_FragData[0] = vec4(_13_uColor, 1.0); +} + + +#version 100 + +uniform mat4 _19_uLookAtMat; +uniform mat4 _19_uPMatrix; +uniform mat4 _29_uPlacementMat; +attribute vec3 aPosition; +varying vec4 vPos; + +void main() +{ + gl_Position = ((_19_uPMatrix * _19_uLookAtMat) * _29_uPlacementMat) * vec4(aPosition, 1.0); + gl_PointSize = 10.0; +} + + +#version 100 +precision mediump float; +precision highp int; + +uniform vec4 _12_uColor; +void main() +{ + vec4 finalColor = _12_uColor; + gl_FragData[0] = finalColor; +} + + +#version 100 + +uniform mat4 _30_uLookAtMat; +uniform mat4 _30_uPMatrix; +attribute vec3 aPosition; + +void main() +{ + vec4 worldPoint = vec4(aPosition, 1.0); + gl_Position = (_30_uPMatrix * _30_uLookAtMat) * worldPoint; +} + + +#version 100 + +uniform vec4 _12_uWidth_uHeight_uX_uY; +varying vec2 texCoord; +attribute vec2 position; + +void main() +{ + float uWidth = _12_uWidth_uHeight_uX_uY.x; + float uHeight = _12_uWidth_uHeight_uX_uY.y; + float uX = _12_uWidth_uHeight_uX_uY.z; + float uY = _12_uWidth_uHeight_uX_uY.w; + texCoord = (position * 0.5) + vec2(0.5); + gl_Position = vec4((((((position.x + 1.0) / 2.0) * uWidth) + uX) * 2.0) - 1.0, (((((position.y + 1.0) / 2.0) * uHeight) + uY) * 2.0) - 1.0, 0.5, 1.0); +} + + +#version 100 +precision mediump float; +precision highp int; + +uniform vec4 _33_texOffsetX; +uniform vec4 _33_texOffsetY; +uniform sampler2D texture0; + +varying vec2 texCoord; + +void main() +{ + vec2 tex_offset = vec2(0.001000000047497451305389404296875); + vec3 result = texture2D(texture0, texCoord).xyz * 0.0; + result = vec3(0.0); + result += (texture2D(texture0, texCoord + vec2(_33_texOffsetX.x * tex_offset.x, _33_texOffsetY.x * tex_offset.y)).xyz * 0.125); + result += (texture2D(texture0, texCoord + vec2(_33_texOffsetX.y * tex_offset.x, _33_texOffsetY.y * tex_offset.y)).xyz * 0.375); + result += (texture2D(texture0, texCoord + vec2(_33_texOffsetX.z * tex_offset.x, _33_texOffsetY.z * tex_offset.y)).xyz * 0.375); + result += (texture2D(texture0, texCoord + vec2(_33_texOffsetX.w * tex_offset.x, _33_texOffsetY.w * tex_offset.y)).xyz * 0.125); + gl_FragData[0] = vec4(result, 1.0); +} + + +#version 100 +precision mediump float; +precision highp int; + +uniform vec4 _34_blurAmount; +uniform sampler2D screenTex; +uniform sampler2D blurTex; + +varying vec2 texCoord; + +void main() +{ + vec4 screen = texture2D(screenTex, texCoord); + vec3 blurred = texture2D(blurTex, texCoord).xyz; + vec3 mixed = mix(screen.xyz, blurred, vec3(_34_blurAmount.z)); + vec3 glow = (blurred * blurred) * _34_blurAmount.w; + gl_FragData[0] = vec4(mixed + glow, screen.w); +} + + +#version 100 +#ifdef GL_ARB_shading_language_420pack +#extension GL_ARB_shading_language_420pack : require +#endif +precision mediump float; +precision highp int; + +uniform sampler2D Texture; + +varying vec4 Frag_Color; +varying vec2 Frag_UV; + +void main() +{ + gl_FragData[0] = Frag_Color * texture2D(Texture, Frag_UV); +} + + +#version 100 + +uniform mat4 _30_ProjMtx; +uniform vec4 _30_uiScale; +varying vec2 Frag_UV; +attribute vec2 UV; +varying vec4 Frag_Color; +attribute vec4 Color; +attribute vec2 Position; + +void main() +{ + Frag_UV = UV; + Frag_Color = Color; + gl_Position = _30_ProjMtx * vec4(Position * _30_uiScale.x, 0.0, 1.0); +} + + +#version 100 +precision mediump float; +precision highp int; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +uniform vec4 _277_uAlphaTestv; +uniform ivec4 _277_uPixelShaderBlendModev; +uniform mat4 _485_scene_uLookAtMat; +uniform mat4 _485_scene_uPMatrix; +uniform vec4 _485_scene_uViewUp; +uniform vec4 _485_scene_uInteriorSunDir; +uniform vec4 _485_scene_extLight_uExteriorAmbientColor; +uniform vec4 _485_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _485_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _485_scene_extLight_uExteriorDirectColor; +uniform vec4 _485_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _485_scene_extLight_adtSpecMult; +uniform vec4 _485_fogData_densityParams; +uniform vec4 _485_fogData_heightPlane; +uniform vec4 _485_fogData_color_and_heightRate; +uniform vec4 _485_fogData_heightDensity_and_endColor; +uniform vec4 _485_fogData_sunAngle_and_sunColor; +uniform vec4 _485_fogData_heightColor_and_endFogDistance; +uniform vec4 _485_fogData_sunPercentage; +uniform sampler2D uTexture; +uniform sampler2D uTexture2; +uniform sampler2D uTexture3; + +varying vec2 vTexcoord0; +varying vec2 vTexcoord1; +varying vec2 vTexcoord2; +varying vec4 vColor; +varying vec3 vPosition; + +vec3 validateFogColor(in vec3 fogColor, int blendMode) { + return fogColor; +} +vec4 makeFog(PSFog fogData, vec4 final, vec3 vertexInViewSpace, vec3 sunDirInViewSpace, int blendMode) +{ + vec4 l_densityParams = fogData.densityParams; + vec4 l_heightPlane = fogData.heightPlane; + vec4 l_color_and_heightRate = fogData.color_and_heightRate; + vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + float start = l_densityParams.x; + float end = l_densityParams.y; + float density = l_densityParams.z; + float bias = l_densityParams.w; + float vLength = length(vertexInViewSpace); + float z = vLength - bias; + float expMax = max(0.0, z - start); + float expFog = 1.0 / exp(expMax * density); + float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + float finalFog = mix(expFog, expFogHeight, heightFog); + float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + float alpha = 1.0; + bool _139 = blendMode == 13; + if (_139) + { + alpha = min(finalFog, endFadeFog); + } + vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + vec3 endColor = validateFogColor(param, param_1); + vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + float end2 = vLength / l_heightColor_and_endFogDistance.w; + float end2_cube = end2 * (end2 * end2); + vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _218 = nDotSun > 0.0; + if (_218) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + vec4 tex = texture2D(uTexture, vTexcoord0); + vec4 tex2 = texture2D(uTexture2, vTexcoord1); + vec4 tex3 = texture2D(uTexture3, vTexcoord2); + float uAlphaTest = _277_uAlphaTestv.x; + bool _284 = tex.w < uAlphaTest; + if (_284) + { + discard; + } + vec4 finalColor = vec4((tex * vColor).xyz, tex.w * vColor.w); + int uNonOptPixelShader = _277_uPixelShaderBlendModev.x; + bool _310 = uNonOptPixelShader == 0; + if (_310) + { + vec3 matDiffuse = vColor.xyz * tex.xyz; + finalColor = vec4(matDiffuse, tex.w * vColor.w); + } + else + { + bool _331 = uNonOptPixelShader == 1; + if (_331) + { + vec4 textureMod = tex * tex2; + float texAlpha = textureMod.w * tex3.w; + float opacity = texAlpha * vColor.w; + vec3 matDiffuse_1 = vColor.xyz * textureMod.xyz; + finalColor = vec4(matDiffuse_1, opacity); + } + else + { + bool _363 = uNonOptPixelShader == 2; + if (_363) + { + vec4 textureMod_1 = (tex * tex2) * tex3; + float texAlpha_1 = textureMod_1.w; + float opacity_1 = texAlpha_1 * vColor.w; + vec3 matDiffuse_2 = vColor.xyz * textureMod_1.xyz; + finalColor = vec4(matDiffuse_2, opacity_1); + } + else + { + bool _394 = uNonOptPixelShader == 3; + if (_394) + { + vec4 textureMod_2 = (tex * tex2) * tex3; + float texAlpha_2 = textureMod_2.w; + float opacity_2 = texAlpha_2 * vColor.w; + vec3 matDiffuse_3 = vColor.xyz * textureMod_2.xyz; + finalColor = vec4(matDiffuse_3, opacity_2); + } + else + { + bool _425 = uNonOptPixelShader == 4; + if (_425) + { + float t0_973 = tex.x; + float t1_978 = tex2.y; + float t2_983 = tex3.z; + float textureMod_986 = ((t0_973 * t1_978) * t2_983) * 4.0; + float depthScale_991 = 1.0 - clamp(vPosition.z * 0.00999999977648258209228515625, 0.0, 1.0); + float textureMod_992 = textureMod_986 * depthScale_991; + float height_995 = textureMod_992 * vColor.x; + float alpha_997 = textureMod_992 * vColor.w; + finalColor = vec4(height_995, 0.0, 0.0, alpha_997); + } + } + } + } + } + bool _474 = finalColor.w < uAlphaTest; + if (_474) + { + discard; + } + vec3 sunDir = _485_scene_extLight_uExteriorDirectColorDir.xyz; + PSFog arg; + arg.densityParams = _485_fogData_densityParams; + arg.heightPlane = _485_fogData_heightPlane; + arg.color_and_heightRate = _485_fogData_color_and_heightRate; + arg.heightDensity_and_endColor = _485_fogData_heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _485_fogData_sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _485_fogData_heightColor_and_endFogDistance; + arg.sunPercentage = _485_fogData_sunPercentage; + vec4 param = finalColor; + vec3 param_1 = vPosition; + vec3 param_2 = sunDir; + int param_3 = _277_uPixelShaderBlendModev.y; + finalColor = makeFog(arg, param, param_1, param_2, param_3); + gl_FragData[0] = finalColor; +} + + +#version 100 + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +uniform mat4 _43_scene_uLookAtMat; +uniform mat4 _43_scene_uPMatrix; +uniform vec4 _43_scene_uViewUp; +uniform vec4 _43_scene_uInteriorSunDir; +uniform vec4 _43_scene_extLight_uExteriorAmbientColor; +uniform vec4 _43_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _43_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _43_scene_extLight_uExteriorDirectColor; +uniform vec4 _43_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _43_scene_extLight_adtSpecMult; +uniform vec4 _43_fogData_densityParams; +uniform vec4 _43_fogData_heightPlane; +uniform vec4 _43_fogData_color_and_heightRate; +uniform vec4 _43_fogData_heightDensity_and_endColor; +uniform vec4 _43_fogData_sunAngle_and_sunColor; +uniform vec4 _43_fogData_heightColor_and_endFogDistance; +uniform vec4 _43_fogData_sunPercentage; +attribute vec3 aPosition; +varying vec4 vColor; +attribute vec4 aColor; +varying vec2 vTexcoord0; +attribute vec2 aTexcoord0; +varying vec2 vTexcoord1; +attribute vec2 aTexcoord1; +varying vec2 vTexcoord2; +attribute vec2 aTexcoord2; +varying vec3 vPosition; + +void main() +{ + vec4 aPositionVec4 = vec4(aPosition, 1.0); + vColor = aColor; + vTexcoord0 = aTexcoord0; + vTexcoord1 = aTexcoord1; + vTexcoord2 = aTexcoord2; + vec4 vertexViewSpace = _43_scene_uLookAtMat * aPositionVec4; + vPosition = vertexViewSpace.xyz; + gl_Position = _43_scene_uPMatrix * vertexViewSpace; +} + + +#version 100 +precision mediump float; +precision highp int; + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct InteriorLightParam +{ + vec4 uInteriorAmbientColorAndApplyInteriorLight; + vec4 uInteriorDirectColorAndApplyExteriorLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +struct LocalLight +{ + vec4 color; + vec4 position; + vec4 attenuation; +}; + +uniform ivec4 _473_PixelShader_UnFogged_IsAffectedByLight_blendMode; +uniform vec4 _473_uFogColorAndAlphaTest; +uniform vec4 _473_uTexSampleAlpha; +uniform vec4 _473_uPcColor; +uniform vec4 _496_intLight_uInteriorAmbientColorAndApplyInteriorLight; +uniform vec4 _496_intLight_uInteriorDirectColorAndApplyExteriorLight; +uniform LocalLight _496_pc_lights[4]; +uniform ivec4 _496_lightCountAndBcHack; +uniform vec4 _496_interiorExteriorBlend; +uniform mat4 _535_scene_uLookAtMat; +uniform mat4 _535_scene_uPMatrix; +uniform vec4 _535_scene_uViewUp; +uniform vec4 _535_scene_uInteriorSunDir; +uniform vec4 _535_scene_extLight_uExteriorAmbientColor; +uniform vec4 _535_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _535_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _535_scene_extLight_uExteriorDirectColor; +uniform vec4 _535_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _535_scene_extLight_adtSpecMult; +uniform vec4 _535_fogData_densityParams; +uniform vec4 _535_fogData_heightPlane; +uniform vec4 _535_fogData_color_and_heightRate; +uniform vec4 _535_fogData_heightDensity_and_endColor; +uniform vec4 _535_fogData_sunAngle_and_sunColor; +uniform vec4 _535_fogData_heightColor_and_endFogDistance; +uniform vec4 _535_fogData_sunPercentage; +uniform mat4 _543_uPlacementMat; +uniform mat4 _543_uBoneMatrixes[220]; +uniform sampler2D uTexture; +uniform sampler2D uTexture2; +uniform sampler2D uTexture3; +uniform sampler2D uTexture4; + +varying vec2 vTexCoord; +varying vec2 vTexCoord2; +varying vec2 vTexCoord3; +varying vec4 vDiffuseColor; +varying vec3 vPosition; +varying vec3 vNormal; + +vec3 calcLight(vec3 matDiffuse, vec3 vNormal_1, bool applyLight, float interiorExteriorBlend, SceneWideParams sceneParams, InteriorLightParam intLight, vec3 accumLight, vec3 precomputedLight, vec3 specular, vec3 emissive) +{ + vec3 localDiffuse = accumLight; + bool _52 = !applyLight; + if (_52) + { + return matDiffuse; + } + vec3 lDiffuse = vec3(0.0); + vec3 normalizedN = normalize(vNormal_1); + bool _68 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + vec3 currColor; + if (_68) + { + float nDotL = clamp(dot(normalizedN, -sceneParams.extLight.uExteriorDirectColorDir.xyz), 0.0, 1.0); + float nDotUp = dot(normalizedN, sceneParams.uViewUp.xyz); + vec3 adjAmbient = sceneParams.extLight.uExteriorAmbientColor.xyz + precomputedLight; + vec3 adjHorizAmbient = sceneParams.extLight.uExteriorHorizontAmbientColor.xyz + precomputedLight; + vec3 adjGroundAmbient = sceneParams.extLight.uExteriorGroundAmbientColor.xyz + precomputedLight; + bool _105 = nDotUp >= 0.0; + if (_105) + { + currColor = mix(adjHorizAmbient, adjAmbient, vec3(nDotUp)); + } + else + { + currColor = mix(adjHorizAmbient, adjGroundAmbient, vec3(-nDotUp)); + } + vec3 skyColor = currColor * 1.10000002384185791015625; + vec3 groundColor = currColor * 0.699999988079071044921875; + lDiffuse = sceneParams.extLight.uExteriorDirectColor.xyz * nDotL; + currColor = mix(groundColor, skyColor, vec3(0.5 + (0.5 * nDotL))); + } + bool _145 = intLight.uInteriorAmbientColorAndApplyInteriorLight.w > 0.0; + if (_145) + { + float nDotL_1 = clamp(dot(normalizedN, -sceneParams.uInteriorSunDir.xyz), 0.0, 1.0); + vec3 lDiffuseInterior = intLight.uInteriorDirectColorAndApplyExteriorLight.xyz * nDotL_1; + vec3 interiorAmbient = intLight.uInteriorAmbientColorAndApplyInteriorLight.xyz + precomputedLight; + bool _169 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + if (_169) + { + lDiffuse = mix(lDiffuseInterior, lDiffuse, vec3(interiorExteriorBlend)); + currColor = mix(interiorAmbient, currColor, vec3(interiorExteriorBlend)); + } + else + { + lDiffuse = lDiffuseInterior; + currColor = interiorAmbient; + } + } + vec3 gammaDiffTerm = matDiffuse * (currColor + lDiffuse); + vec3 linearDiffTerm = (matDiffuse * matDiffuse) * localDiffuse; + vec3 specTerm = specular; + vec3 emTerm = emissive; + return (sqrt((gammaDiffTerm * gammaDiffTerm) + linearDiffTerm) + specTerm) + emTerm; +} + +vec3 validateFogColor(in vec3 fogColor, int blendMode) { + return fogColor; +} +vec4 makeFog(PSFog fogData, vec4 final, vec3 vertexInViewSpace, vec3 sunDirInViewSpace, int blendMode) +{ + vec4 l_densityParams = fogData.densityParams; + vec4 l_heightPlane = fogData.heightPlane; + vec4 l_color_and_heightRate = fogData.color_and_heightRate; + vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + float start = l_densityParams.x; + float end = l_densityParams.y; + float density = l_densityParams.z; + float bias = l_densityParams.w; + float vLength = length(vertexInViewSpace); + float z = vLength - bias; + float expMax = max(0.0, z - start); + float expFog = 1.0 / exp(expMax * density); + float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + float finalFog = mix(expFog, expFogHeight, heightFog); + float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + float alpha = 1.0; + bool _311 = blendMode == 13; + if (_311) + { + alpha = min(finalFog, endFadeFog); + } + vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + vec3 endColor = validateFogColor(param, param_1); + vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + float end2 = vLength / l_heightColor_and_endFogDistance.w; + float end2_cube = end2 * (end2 * end2); + vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _389 = nDotSun > 0.0; + if (_389) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + vec2 texCoord = vTexCoord; + vec2 texCoord2 = vTexCoord2; + vec2 texCoord3 = vTexCoord3; + vec4 tex = texture2D(uTexture, texCoord); + vec4 tex2 = texture2D(uTexture2, texCoord2); + vec4 tex3 = texture2D(uTexture3, texCoord3); + vec4 tex2WithTextCoord1 = texture2D(uTexture2, texCoord); + vec4 tex3WithTextCoord1 = texture2D(uTexture3, texCoord); + vec4 tex4WithTextCoord2 = texture2D(uTexture4, texCoord2); + vec4 finalColor = vec4(0.0); + vec4 meshResColor = vDiffuseColor; + bool _477 = _473_PixelShader_UnFogged_IsAffectedByLight_blendMode.z == 1; + vec3 accumLight; + if (_477) + { + vec3 vPos3 = vPosition; + vec3 vNormal3 = normalize(vNormal); + vec3 lightColor = vec3(0.0); + int count = int(_496_pc_lights[0].attenuation.w); + LocalLight lightRecord; + for (int index = 0; index < 4; index++) + { + bool _512 = index >= _496_lightCountAndBcHack.x; + if (_512) + { + break; + } + lightRecord.color = _496_pc_lights[index].color; + lightRecord.position = _496_pc_lights[index].position; + lightRecord.attenuation = _496_pc_lights[index].attenuation; + vec3 vectorToLight = (_535_scene_uLookAtMat * (_543_uPlacementMat * lightRecord.position)).xyz - vPos3; + float distanceToLightSqr = dot(vectorToLight, vectorToLight); + float distanceToLightInv = inversesqrt(distanceToLightSqr); + float distanceToLight = distanceToLightSqr * distanceToLightInv; + float diffuseTerm1 = max(dot(vectorToLight, vNormal3) * distanceToLightInv, 0.0); + vec4 attenuationRec = lightRecord.attenuation; + float attenuation = 1.0 - clamp((distanceToLight - attenuationRec.x) * (1.0 / (attenuationRec.z - attenuationRec.x)), 0.0, 1.0); + vec3 attenuatedColor = lightRecord.color.xyz * attenuation; + lightColor += vec3((attenuatedColor * attenuatedColor) * diffuseTerm1); + } + vec3 _610 = clamp(lightColor, vec3(0.0), vec3(1.0)); + meshResColor = vec4(_610.x, _610.y, _610.z, meshResColor.w); + accumLight = mix(lightColor, meshResColor.xyz, vec3(float(_496_lightCountAndBcHack.y))); + } + float finalOpacity = 0.0; + vec3 specular = vec3(0.0); + vec3 visParams = vec3(1.0); + vec4 genericParams[3]; + genericParams[0] = vec4(1.0); + genericParams[1] = vec4(1.0); + genericParams[2] = vec4(1.0); + bool canDiscard = false; + float discardAlpha = 1.0; + int uPixelShader = _473_PixelShader_UnFogged_IsAffectedByLight_blendMode.x; + bool _639 = uPixelShader == 0; + vec3 matDiffuse; + #if (FRAGMENTSHADER == 0) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + #endif + bool _652 = uPixelShader == 1; + #if (FRAGMENTSHADER == 1) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _666 = uPixelShader == 2; + #if (FRAGMENTSHADER == 2) + matDiffuse = ((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz; + discardAlpha = tex2.w; + canDiscard = true; + #endif + bool _682 = uPixelShader == 3; + #if (FRAGMENTSHADER == 3) + matDiffuse = (((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz) * 2.0; + discardAlpha = tex2.w * 2.0; + canDiscard = true; + #endif + bool _700 = uPixelShader == 4; + #if (FRAGMENTSHADER == 4) + matDiffuse = (((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz) * 2.0; + #endif + bool _715 = uPixelShader == 5; + #if (FRAGMENTSHADER == 5) + matDiffuse = ((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz; + #endif + bool _729 = uPixelShader == 6; + #if (FRAGMENTSHADER == 6) + matDiffuse = ((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz; + discardAlpha = tex.w * tex2.w; + canDiscard = true; + #endif + bool _749 = uPixelShader == 7; + #if (FRAGMENTSHADER == 7) + matDiffuse = (((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz) * 2.0; + discardAlpha = (tex.w * tex2.w) * 2.0; + canDiscard = true; + #endif + bool _771 = uPixelShader == 8; + #if (FRAGMENTSHADER == 8) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w + tex2.w; + canDiscard = true; + specular = tex2.xyz; + #endif + bool _790 = uPixelShader == 9; + #if (FRAGMENTSHADER == 9) + matDiffuse = (((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz) * 2.0; + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _808 = uPixelShader == 10; + #if (FRAGMENTSHADER == 10) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w; + canDiscard = true; + specular = tex2.xyz; + #endif + bool _824 = uPixelShader == 11; + #if (FRAGMENTSHADER == 11) + matDiffuse = ((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz; + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _841 = uPixelShader == 12; + #if (FRAGMENTSHADER == 12) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix((tex.xyz * tex2.xyz) * 2.0, tex.xyz, vec3(tex.w)); + #endif + bool _862 = uPixelShader == 13; + #if (FRAGMENTSHADER == 13) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + specular = tex2.xyz * tex2.w; + #endif + bool _879 = uPixelShader == 14; + #if (FRAGMENTSHADER == 14) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + specular = (tex2.xyz * tex2.w) * (1.0 - tex.w); + #endif + bool _900 = uPixelShader == 15; + #if (FRAGMENTSHADER == 15) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix((tex.xyz * tex2.xyz) * 2.0, tex.xyz, vec3(tex.w)); + specular = (tex3.xyz * tex3.w) * _473_uTexSampleAlpha.z; + #endif + bool _930 = uPixelShader == 16; + #if (FRAGMENTSHADER == 16) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w; + canDiscard = true; + specular = tex2.xyz * tex2.w; + #endif + bool _949 = uPixelShader == 17; + #if (FRAGMENTSHADER == 17) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w + (tex2.w * (((0.300000011920928955078125 * tex2.x) + (0.589999973773956298828125 * tex2.y)) + (0.10999999940395355224609375 * tex2.z))); + canDiscard = true; + specular = (tex2.xyz * tex2.w) * (1.0 - tex.w); + #endif + bool _990 = uPixelShader == 18; + #if (FRAGMENTSHADER == 18) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(mix(tex.xyz, tex2.xyz, vec3(tex2.w)), tex.xyz, vec3(tex.w)); + #endif + bool _1014 = uPixelShader == 19; + #if (FRAGMENTSHADER == 19) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix((tex.xyz * tex2.xyz) * 2.0, tex3.xyz, vec3(tex3.w)); + #endif + bool _1036 = uPixelShader == 20; + #if (FRAGMENTSHADER == 20) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + specular = (tex2.xyz * tex2.w) * _473_uTexSampleAlpha.y; + #endif + bool _1056 = uPixelShader == 21; + #if (FRAGMENTSHADER == 21) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w + tex2.w; + canDiscard = true; + specular = tex2.xyz * (1.0 - tex.w); + #endif + bool _1079 = uPixelShader == 22; + #if (FRAGMENTSHADER == 22) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(tex.xyz * tex2.xyz, tex.xyz, vec3(tex.w)); + #endif + bool _1100 = uPixelShader == 23; + #if (FRAGMENTSHADER == 23) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w; + canDiscard = true; + specular = (tex2.xyz * tex2.w) * _473_uTexSampleAlpha.y; + #endif + bool _1122 = uPixelShader == 24; + #if (FRAGMENTSHADER == 24) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(tex.xyz, tex2.xyz, vec3(tex2.w)); + specular = (tex.xyz * tex.w) * _473_uTexSampleAlpha.x; + #endif + bool _1148 = uPixelShader == 25; + #if (FRAGMENTSHADER == 25) + float glowOpacity = clamp(tex3.w * _473_uTexSampleAlpha.z, 0.0, 1.0); + matDiffuse = ((vDiffuseColor.xyz * 2.0) * mix((tex.xyz * tex2.xyz) * 2.0, tex.xyz, vec3(tex.w))) * (1.0 - glowOpacity); + specular = tex3.xyz * glowOpacity; + #endif + bool _1184 = uPixelShader == 26; + #if (FRAGMENTSHADER == 26) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(mix(tex, tex2WithTextCoord1, vec4(clamp(_473_uTexSampleAlpha.y, 0.0, 1.0))), tex3WithTextCoord1, vec4(clamp(_473_uTexSampleAlpha.z, 0.0, 1.0))).xyz; + discardAlpha = mix(mix(tex, tex2WithTextCoord1, vec4(clamp(_473_uTexSampleAlpha.y, 0.0, 1.0))), tex3WithTextCoord1, vec4(clamp(_473_uTexSampleAlpha.z, 0.0, 1.0))).w; + canDiscard = true; + #endif + bool _1222 = uPixelShader == 27; + #if (FRAGMENTSHADER == 27) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(mix((tex.xyz * tex2.xyz) * 2.0, tex3.xyz, vec3(tex3.w)), tex.xyz, vec3(tex.w)); + #endif + bool _1250 = uPixelShader == 28; + #if (FRAGMENTSHADER == 28) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(mix(tex, tex2WithTextCoord1, vec4(clamp(_473_uTexSampleAlpha.y, 0.0, 1.0))), tex3WithTextCoord1, vec4(clamp(_473_uTexSampleAlpha.z, 0.0, 1.0))).xyz; + discardAlpha = mix(mix(tex, tex2WithTextCoord1, vec4(clamp(_473_uTexSampleAlpha.y, 0.0, 1.0))), tex3WithTextCoord1, vec4(clamp(_473_uTexSampleAlpha.z, 0.0, 1.0))).w * tex4WithTextCoord2.w; + canDiscard = true; + #endif + bool _1291 = uPixelShader == 29; + #if (FRAGMENTSHADER == 29) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(tex.xyz, tex2.xyz, vec3(tex2.w)); + #endif + bool _1309 = uPixelShader == 30; + #if (FRAGMENTSHADER == 30) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(tex.xyz * mix(genericParams[0].xyz, tex2.xyz * genericParams[1].xyz, vec3(tex2.w)), tex3.xyz * genericParams[2].xyz, vec3(tex3.w)); + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _1347 = uPixelShader == 31; + #if (FRAGMENTSHADER == 31) + matDiffuse = ((vDiffuseColor.xyz * 2.0) * tex.xyz) * mix(genericParams[0].xyz, tex2.xyz * genericParams[1].xyz, vec3(tex2.w)); + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _1375 = uPixelShader == 32; + #if (FRAGMENTSHADER == 32) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(tex.xyz * mix(genericParams[0].xyz, tex2.xyz * genericParams[1].xyz, vec3(tex2.w)), tex3.xyz * genericParams[2].xyz, vec3(tex3.w)); + #endif + bool _1411 = uPixelShader == 33; + #if (FRAGMENTSHADER == 33) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _1425 = uPixelShader == 34; + #if (FRAGMENTSHADER == 34) + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _1433 = uPixelShader == 35; + #if (FRAGMENTSHADER == 35) + matDiffuse = (vDiffuseColor.xyz * 2.0) * (((tex * tex2) * tex3) * genericParams[0]).xyz; + discardAlpha = (((tex * tex2) * tex3) * genericParams[0]).w; + canDiscard = true; + #endif + bool _1461 = uPixelShader == 36; + #if (FRAGMENTSHADER == 36) + matDiffuse = ((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz; + discardAlpha = tex.w * tex2.w; + canDiscard = true; + #endif + int blendMode = _473_PixelShader_UnFogged_IsAffectedByLight_blendMode.w; + bool _1482 = blendMode == 13; + if (_1482) + { + finalOpacity = discardAlpha * vDiffuseColor.w; + } + else + { + bool _1492 = blendMode == 1; + if (_1492) + { + finalOpacity = vDiffuseColor.w; + bool _1501 = canDiscard && (discardAlpha < 0.501960813999176025390625); + if (_1501) + { + discard; + } + finalOpacity = vDiffuseColor.w; + } + else + { + bool _1509 = blendMode == 0; + if (_1509) + { + finalOpacity = vDiffuseColor.w; + } + else + { + finalOpacity = discardAlpha * vDiffuseColor.w; + } + } + } + vec3 param = matDiffuse; + vec3 param_1 = vNormal; + bool param_2 = _473_PixelShader_UnFogged_IsAffectedByLight_blendMode.z > 0; + float param_3 = _496_interiorExteriorBlend.x; + SceneWideParams param_4; + param_4.uLookAtMat = _535_scene_uLookAtMat; + param_4.uPMatrix = _535_scene_uPMatrix; + param_4.uViewUp = _535_scene_uViewUp; + param_4.uInteriorSunDir = _535_scene_uInteriorSunDir; + param_4.extLight.uExteriorAmbientColor = _535_scene_extLight_uExteriorAmbientColor; + param_4.extLight.uExteriorHorizontAmbientColor = _535_scene_extLight_uExteriorHorizontAmbientColor; + param_4.extLight.uExteriorGroundAmbientColor = _535_scene_extLight_uExteriorGroundAmbientColor; + param_4.extLight.uExteriorDirectColor = _535_scene_extLight_uExteriorDirectColor; + param_4.extLight.uExteriorDirectColorDir = _535_scene_extLight_uExteriorDirectColorDir; + param_4.extLight.adtSpecMult = _535_scene_extLight_adtSpecMult; + InteriorLightParam param_5; + param_5.uInteriorAmbientColorAndApplyInteriorLight = _496_intLight_uInteriorAmbientColorAndApplyInteriorLight; + param_5.uInteriorDirectColorAndApplyExteriorLight = _496_intLight_uInteriorDirectColorAndApplyExteriorLight; + vec3 param_6 = accumLight; + finalColor = vec4(calcLight(param, param_1, param_2, param_3, param_4, param_5, param_6, vec3(0.0), specular, vec3(0.0)), finalOpacity); + int uUnFogged = _473_PixelShader_UnFogged_IsAffectedByLight_blendMode.y; + bool _1579 = uUnFogged == 0; + if (_1579) + { + vec3 sunDir = mix(_535_scene_uInteriorSunDir, _535_scene_extLight_uExteriorDirectColorDir, vec4(_496_interiorExteriorBlend.x)).xyz; + PSFog arg; + arg.densityParams = _535_fogData_densityParams; + arg.heightPlane = _535_fogData_heightPlane; + arg.color_and_heightRate = _535_fogData_color_and_heightRate; + arg.heightDensity_and_endColor = _535_fogData_heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _535_fogData_sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _535_fogData_heightColor_and_endFogDistance; + arg.sunPercentage = _535_fogData_sunPercentage; + vec4 param_7 = finalColor; + vec3 param_8 = vPosition; + vec3 param_9 = sunDir; + int param_10 = _473_PixelShader_UnFogged_IsAffectedByLight_blendMode.w; + finalColor = makeFog(arg, param_7, param_8, param_9, param_10); + } + gl_FragData[0] = finalColor; +} + + +#version 100 + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +uniform mat4 _133_uPlacementMat; +uniform mat4 _133_uBoneMatrixes[220]; +uniform ivec4 _230_vertexShader_IsAffectedByLight; +uniform vec4 _230_color_Transparency; +uniform mat4 _230_uTextMat[2]; +uniform mat4 _240_scene_uLookAtMat; +uniform mat4 _240_scene_uPMatrix; +uniform vec4 _240_scene_uViewUp; +uniform vec4 _240_scene_uInteriorSunDir; +uniform vec4 _240_scene_extLight_uExteriorAmbientColor; +uniform vec4 _240_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _240_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _240_scene_extLight_uExteriorDirectColor; +uniform vec4 _240_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _240_scene_extLight_adtSpecMult; +uniform vec4 _240_fogData_densityParams; +uniform vec4 _240_fogData_heightPlane; +uniform vec4 _240_fogData_color_and_heightRate; +uniform vec4 _240_fogData_heightDensity_and_endColor; +uniform vec4 _240_fogData_sunAngle_and_sunColor; +uniform vec4 _240_fogData_heightColor_and_endFogDistance; +uniform vec4 _240_fogData_sunPercentage; +attribute vec3 aPosition; +attribute vec4 boneWeights; +attribute vec4 bones; +attribute vec3 aNormal; +varying vec2 vTexCoord2; +varying vec2 vTexCoord3; +varying vec4 vDiffuseColor; +varying vec2 vTexCoord; +attribute vec2 aTexCoord; +attribute vec2 aTexCoord2; +varying vec3 vNormal; +varying vec3 vPosition; + +mat3 blizzTranspose(mat4 value) +{ + return mat3(vec3(value[0].xyz), vec3(value[1].xyz), vec3(value[2].xyz)); +} + +vec2 posToTexCoord(vec3 cameraPoint, vec3 normal) +{ + vec3 normPos_495 = normalize(cameraPoint); + vec3 temp_500 = normPos_495 - (normal * (2.0 * dot(normPos_495, normal))); + vec3 temp_657 = vec3(temp_500.x, temp_500.y, temp_500.z + 1.0); + return (normalize(temp_657).xy * 0.5) + vec2(0.5); +} + +float edgeScan(vec3 position, vec3 normal) +{ + float dotProductClamped = clamp(dot(-normalize(position), normal), 0.0, 1.0); + return clamp(((2.7000000476837158203125 * dotProductClamped) * dotProductClamped) - 0.4000000059604644775390625, 0.0, 1.0); +} + +void main() +{ + vec4 modelPoint = vec4(0.0); + vec4 aPositionVec4 = vec4(aPosition, 1.0); + mat4 boneTransformMat = mat4(vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0)); + mat4 _143 = _133_uBoneMatrixes[bones.x] * boneWeights.x; + boneTransformMat = mat4(boneTransformMat[0] + _143[0], boneTransformMat[1] + _143[1], boneTransformMat[2] + _143[2], boneTransformMat[3] + _143[3]); + mat4 _164 = _133_uBoneMatrixes[bones.y] * boneWeights.y; + boneTransformMat = mat4(boneTransformMat[0] + _164[0], boneTransformMat[1] + _164[1], boneTransformMat[2] + _164[2], boneTransformMat[3] + _164[3]); + mat4 _185 = _133_uBoneMatrixes[bones.z] * boneWeights.z; + boneTransformMat = mat4(boneTransformMat[0] + _185[0], boneTransformMat[1] + _185[1], boneTransformMat[2] + _185[2], boneTransformMat[3] + _185[3]); + mat4 _207 = _133_uBoneMatrixes[bones.w] * boneWeights.w; + boneTransformMat = mat4(boneTransformMat[0] + _207[0], boneTransformMat[1] + _207[1], boneTransformMat[2] + _207[2], boneTransformMat[3] + _207[3]); + mat4 placementMat = _133_uPlacementMat; + vec4 lDiffuseColor = _230_color_Transparency; + mat4 cameraMatrix = (_240_scene_uLookAtMat * placementMat) * boneTransformMat; + vec4 cameraPoint = cameraMatrix * aPositionVec4; + mat4 param = _240_scene_uLookAtMat; + mat4 param_1 = placementMat; + mat4 param_2 = boneTransformMat; + mat3 viewModelMatTransposed = (blizzTranspose(param) * blizzTranspose(param_1)) * blizzTranspose(param_2); + vec3 normal = normalize(viewModelMatTransposed * aNormal); + vec4 combinedColor = clamp(lDiffuseColor, vec4(0.0), vec4(1.0)); + vec4 combinedColorHalved = combinedColor * 0.5; + vec3 param_3 = cameraPoint.xyz; + vec3 param_4 = normal; + vec2 envCoord = posToTexCoord(param_3, param_4); + vec3 param_5 = cameraPoint.xyz; + vec3 param_6 = normal; + float edgeScanVal = edgeScan(param_5, param_6); + vTexCoord2 = vec2(0.0); + vTexCoord3 = vec2(0.0); + int uVertexShader = _230_vertexShader_IsAffectedByLight.x; + bool _305 = uVertexShader == 0; + #if (VERTEXSHADER == 0) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _332 = uVertexShader == 1; + #if (VERTEXSHADER == 1) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = envCoord; + #endif + bool _347 = uVertexShader == 2; + #if (VERTEXSHADER == 2) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = (_230_uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + #endif + bool _379 = uVertexShader == 3; + #if (VERTEXSHADER == 3) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = envCoord; + #endif + bool _403 = uVertexShader == 4; + #if (VERTEXSHADER == 4) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = envCoord; + vTexCoord2 = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _427 = uVertexShader == 5; + #if (VERTEXSHADER == 5) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = envCoord; + vTexCoord2 = envCoord; + #endif + bool _444 = uVertexShader == 6; + #if (VERTEXSHADER == 6) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = envCoord; + vTexCoord3 = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _476 = uVertexShader == 7; + #if (VERTEXSHADER == 7) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _507 = uVertexShader == 8; + #if (VERTEXSHADER == 8) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord3 = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _546 = uVertexShader == 9; + #if (VERTEXSHADER == 9) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w * edgeScanVal); + vTexCoord = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _571 = uVertexShader == 10; + #if (VERTEXSHADER == 10) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230_uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + #endif + bool _594 = uVertexShader == 11; + #if (VERTEXSHADER == 11) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = envCoord; + vTexCoord3 = (_230_uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + #endif + bool _626 = uVertexShader == 12; + #if (VERTEXSHADER == 12) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w * edgeScanVal); + vTexCoord = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = (_230_uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + #endif + bool _659 = uVertexShader == 13; + #if (VERTEXSHADER == 13) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w * edgeScanVal); + vTexCoord = envCoord; + #endif + bool _677 = uVertexShader == 14; + #if (VERTEXSHADER == 14) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = (_230_uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + vTexCoord3 = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _716 = uVertexShader == 15; + #if (VERTEXSHADER == 15) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = (_230_uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + vTexCoord3 = vTexCoord3; + #endif + bool _748 = uVertexShader == 16; + #if (VERTEXSHADER == 16) + vec4 in_col0 = vec4(1.0); + vDiffuseColor = vec4((in_col0.xyz * 0.5).x, (in_col0.xyz * 0.5).y, (in_col0.xyz * 0.5).z, in_col0.w); + vTexCoord = (_230_uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + vTexCoord2 = vec2(0.0); + vTexCoord3 = vTexCoord3; + #endif + bool _780 = uVertexShader == 17; + #if (VERTEXSHADER == 17) + vDiffuseColor = vec4(combinedColor.xyz * 0.5, combinedColor.w); + vTexCoord = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _803 = uVertexShader == 18; + #if (VERTEXSHADER == 18) + vDiffuseColor = vec4(combinedColor.xyz * 0.5, combinedColor.w); + vTexCoord = (_230_uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + gl_Position = _240_scene_uPMatrix * cameraPoint; + vNormal = normal; + vPosition = cameraPoint.xyz; +} + + +#version 100 +precision mediump float; +precision highp int; + +uniform float _34_gauss_offsets[5]; +uniform float _34_gauss_weights[5]; +uniform vec2 _34_uResolution; +uniform sampler2D u_sampler; +uniform sampler2D u_depth; + +varying vec2 v_texcoord; + +void main() +{ + float FXAA_SPAN_MAX = 8.0; + float FXAA_REDUCE_MUL = 0.125; + float FXAA_REDUCE_MIN = 0.0078125; + vec3 rgbNW = texture2D(u_sampler, v_texcoord + (vec2(-1.0) / _34_uResolution)).xyz; + vec3 rgbNE = texture2D(u_sampler, v_texcoord + (vec2(1.0, -1.0) / _34_uResolution)).xyz; + vec3 rgbSW = texture2D(u_sampler, v_texcoord + (vec2(-1.0, 1.0) / _34_uResolution)).xyz; + vec3 rgbSE = texture2D(u_sampler, v_texcoord + (vec2(1.0) / _34_uResolution)).xyz; + vec3 rgbM = texture2D(u_sampler, v_texcoord).xyz; + vec3 luma = vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625); + float lumaNW = dot(rgbNW, luma); + float lumaNE = dot(rgbNE, luma); + float lumaSW = dot(rgbSW, luma); + float lumaSE = dot(rgbSE, luma); + float lumaM = dot(rgbM, luma); + float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE))); + float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE))); + vec2 dir; + dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE)); + dir.y = (lumaNW + lumaSW) - (lumaNE + lumaSE); + float dirReduce = max((((lumaNW + lumaNE) + lumaSW) + lumaSE) * (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN); + float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce); + dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX), max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX), dir * rcpDirMin)) / _34_uResolution; + vec3 rgbA = (texture2D(u_sampler, v_texcoord + (dir * (-0.16666667163372039794921875))).xyz + texture2D(u_sampler, v_texcoord + (dir * 0.16666667163372039794921875)).xyz) * 0.5; + vec3 rgbB = (rgbA * 0.5) + ((texture2D(u_sampler, v_texcoord + (dir * (-0.5))).xyz + texture2D(u_sampler, v_texcoord + (dir * 0.5)).xyz) * 0.25); + float lumaB = dot(rgbB, luma); + bool _240 = (lumaB < lumaMin) || (lumaB > lumaMax); + if (_240) + { + gl_FragData[0] = vec4(rgbA.x, rgbA.y, rgbA.z, gl_FragData[0].w); + } + else + { + gl_FragData[0] = vec4(rgbB.x, rgbB.y, rgbB.z, gl_FragData[0].w); + } +} + + +#version 100 +#ifdef GL_ARB_shading_language_420pack +#extension GL_ARB_shading_language_420pack : require +#endif + +attribute vec4 a_position; +varying vec2 v_texcoord; + +void main() +{ + gl_Position = a_position; + v_texcoord = (a_position.xy * 0.5) + vec2(0.5); +} + + +#version 100 +precision mediump float; +precision highp int; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +uniform vec4 _256_uAlphaTestScalev; +uniform ivec4 _256_uPixelShaderv; +uniform vec4 _256_uTextureTranslate; +uniform mat4 _304_scene_uLookAtMat; +uniform mat4 _304_scene_uPMatrix; +uniform vec4 _304_scene_uViewUp; +uniform vec4 _304_scene_uInteriorSunDir; +uniform vec4 _304_scene_extLight_uExteriorAmbientColor; +uniform vec4 _304_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _304_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _304_scene_extLight_uExteriorDirectColor; +uniform vec4 _304_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _304_scene_extLight_adtSpecMult; +uniform vec4 _304_fogData_densityParams; +uniform vec4 _304_fogData_heightPlane; +uniform vec4 _304_fogData_color_and_heightRate; +uniform vec4 _304_fogData_heightDensity_and_endColor; +uniform vec4 _304_fogData_sunAngle_and_sunColor; +uniform vec4 _304_fogData_heightColor_and_endFogDistance; +uniform vec4 _304_fogData_sunPercentage; +uniform sampler2D uTexture; + +varying vec2 vTexcoord0; +varying vec4 vColor; +varying vec3 vPosition; + +vec3 validateFogColor(in vec3 fogColor, int blendMode) { + return fogColor; +} +vec4 makeFog(PSFog fogData, vec4 final, vec3 vertexInViewSpace, vec3 sunDirInViewSpace, int blendMode) +{ + vec4 l_densityParams = fogData.densityParams; + vec4 l_heightPlane = fogData.heightPlane; + vec4 l_color_and_heightRate = fogData.color_and_heightRate; + vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + float start = l_densityParams.x; + float end = l_densityParams.y; + float density = l_densityParams.z; + float bias = l_densityParams.w; + float vLength = length(vertexInViewSpace); + float z = vLength - bias; + float expMax = max(0.0, z - start); + float expFog = 1.0 / exp(expMax * density); + float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + float finalFog = mix(expFog, expFogHeight, heightFog); + float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + float alpha = 1.0; + bool _139 = blendMode == 13; + if (_139) + { + alpha = min(finalFog, endFadeFog); + } + vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + vec3 endColor = validateFogColor(param, param_1); + vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + float end2 = vLength / l_heightColor_and_endFogDistance.w; + float end2_cube = end2 * (end2 * end2); + vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _218 = nDotSun > 0.0; + if (_218) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + vec2 textCoordScale = _256_uAlphaTestScalev.yz; + vec2 texcoord = (vTexcoord0 * textCoordScale) + _256_uTextureTranslate.xy; + vec4 tex = texture2D(uTexture, texcoord); + vec4 finalColor = vec4(vColor.xyz * tex.xyz, tex.w * vColor.w); + vec3 sunDir = _304_scene_extLight_uExteriorDirectColorDir.xyz; + PSFog arg; + arg.densityParams = _304_fogData_densityParams; + arg.heightPlane = _304_fogData_heightPlane; + arg.color_and_heightRate = _304_fogData_color_and_heightRate; + arg.heightDensity_and_endColor = _304_fogData_heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _304_fogData_sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _304_fogData_heightColor_and_endFogDistance; + arg.sunPercentage = _304_fogData_sunPercentage; + vec4 param = finalColor; + vec3 param_1 = vPosition; + vec3 param_2 = sunDir; + int param_3 = _256_uPixelShaderv.y; + finalColor = makeFog(arg, param, param_1, param_2, param_3); + gl_FragData[0] = finalColor; +} + + +#version 100 + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +uniform mat4 _37_scene_uLookAtMat; +uniform mat4 _37_scene_uPMatrix; +uniform vec4 _37_scene_uViewUp; +uniform vec4 _37_scene_uInteriorSunDir; +uniform vec4 _37_scene_extLight_uExteriorAmbientColor; +uniform vec4 _37_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _37_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _37_scene_extLight_uExteriorDirectColor; +uniform vec4 _37_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _37_scene_extLight_adtSpecMult; +uniform vec4 _37_fogData_densityParams; +uniform vec4 _37_fogData_heightPlane; +uniform vec4 _37_fogData_color_and_heightRate; +uniform vec4 _37_fogData_heightDensity_and_endColor; +uniform vec4 _37_fogData_sunAngle_and_sunColor; +uniform vec4 _37_fogData_heightColor_and_endFogDistance; +uniform vec4 _37_fogData_sunPercentage; +attribute vec3 aPosition; +varying vec4 vColor; +attribute vec4 aColor; +varying vec2 vTexcoord0; +attribute vec2 aTexcoord0; +varying vec3 vPosition; + +void main() +{ + vec4 aPositionVec4 = vec4(aPosition, 1.0); + vColor = aColor; + vTexcoord0 = aTexcoord0; + vec4 vertexViewSpace = _37_scene_uLookAtMat * aPositionVec4; + vPosition = vertexViewSpace.xyz; + gl_Position = _37_scene_uPMatrix * vertexViewSpace; +} + + +#version 100 +#ifdef GL_ARB_shading_language_420pack +#extension GL_ARB_shading_language_420pack : require +#endif +precision mediump float; +precision highp int; + +varying vec4 vColor; + +void main() +{ + gl_FragData[0] = vec4(vColor.xyz, vColor.w); +} + + +#version 100 + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +uniform mat4 _26_scene_uLookAtMat; +uniform mat4 _26_scene_uPMatrix; +uniform vec4 _26_scene_uViewUp; +uniform vec4 _26_scene_uInteriorSunDir; +uniform vec4 _26_scene_extLight_uExteriorAmbientColor; +uniform vec4 _26_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _26_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _26_scene_extLight_uExteriorDirectColor; +uniform vec4 _26_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _26_scene_extLight_adtSpecMult; +uniform vec4 _26_fogData_densityParams; +uniform vec4 _26_fogData_heightPlane; +uniform vec4 _26_fogData_color_and_heightRate; +uniform vec4 _26_fogData_heightDensity_and_endColor; +uniform vec4 _26_fogData_sunAngle_and_sunColor; +uniform vec4 _26_fogData_heightColor_and_endFogDistance; +uniform vec4 _26_fogData_sunPercentage; +uniform vec4 _67_skyColor[6]; +attribute vec4 aPosition; +varying vec4 vColor; + +void main() +{ + vec3 inputPos = aPosition.xyz; + inputPos *= 33.33300018310546875; + vec4 cameraPos = _26_scene_uLookAtMat * vec4(inputPos, 1.0); + vec3 _46 = cameraPos.xyz - _26_scene_uLookAtMat[3].xyz; + cameraPos = vec4(_46.x, _46.y, _46.z, cameraPos.w); + cameraPos.z = cameraPos.z; + vec4 vertPosInNDC = _26_scene_uPMatrix * cameraPos; + vColor = _67_skyColor[int(aPosition.w)]; + gl_Position = _26_scene_uPMatrix * cameraPos; +} + + +#version 100 +precision mediump float; +precision highp int; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +uniform vec4 _253_color; +uniform mat4 _277_scene_uLookAtMat; +uniform mat4 _277_scene_uPMatrix; +uniform vec4 _277_scene_uViewUp; +uniform vec4 _277_scene_uInteriorSunDir; +uniform vec4 _277_scene_extLight_uExteriorAmbientColor; +uniform vec4 _277_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _277_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _277_scene_extLight_uExteriorDirectColor; +uniform vec4 _277_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _277_scene_extLight_adtSpecMult; +uniform vec4 _277_fogData_densityParams; +uniform vec4 _277_fogData_heightPlane; +uniform vec4 _277_fogData_color_and_heightRate; +uniform vec4 _277_fogData_heightDensity_and_endColor; +uniform vec4 _277_fogData_sunAngle_and_sunColor; +uniform vec4 _277_fogData_heightColor_and_endFogDistance; +uniform vec4 _277_fogData_sunPercentage; +uniform sampler2D uTexture; + +varying vec2 vTextCoords; +varying vec3 vPosition; + +vec3 validateFogColor(in vec3 fogColor, int blendMode) { + return fogColor; +} +vec4 makeFog(PSFog fogData, vec4 final, vec3 vertexInViewSpace, vec3 sunDirInViewSpace, int blendMode) +{ + vec4 l_densityParams = fogData.densityParams; + vec4 l_heightPlane = fogData.heightPlane; + vec4 l_color_and_heightRate = fogData.color_and_heightRate; + vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + float start = l_densityParams.x; + float end = l_densityParams.y; + float density = l_densityParams.z; + float bias = l_densityParams.w; + float vLength = length(vertexInViewSpace); + float z = vLength - bias; + float expMax = max(0.0, z - start); + float expFog = 1.0 / exp(expMax * density); + float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + float finalFog = mix(expFog, expFogHeight, heightFog); + float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + float alpha = 1.0; + bool _139 = blendMode == 13; + if (_139) + { + alpha = min(finalFog, endFadeFog); + } + vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + vec3 endColor = validateFogColor(param, param_1); + vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + float end2 = vLength / l_heightColor_and_endFogDistance.w; + float end2_cube = end2 * (end2 * end2); + vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _218 = nDotSun > 0.0; + if (_218) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + vec3 finalColor = _253_color.xyz + texture2D(uTexture, vTextCoords).xyz; + vec3 sunDir = _277_scene_extLight_uExteriorDirectColorDir.xyz; + PSFog arg; + arg.densityParams = _277_fogData_densityParams; + arg.heightPlane = _277_fogData_heightPlane; + arg.color_and_heightRate = _277_fogData_color_and_heightRate; + arg.heightDensity_and_endColor = _277_fogData_heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _277_fogData_sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _277_fogData_heightColor_and_endFogDistance; + arg.sunPercentage = _277_fogData_sunPercentage; + vec4 param = vec4(finalColor, 1.0); + vec3 param_1 = vPosition; + vec3 param_2 = sunDir; + int param_3 = 2; + finalColor = makeFog(arg, param, param_1, param_2, param_3).xyz; + gl_FragData[0] = vec4(finalColor, 0.699999988079071044921875); +} + + +#version 100 + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +uniform mat4 _28_scene_uLookAtMat; +uniform mat4 _28_scene_uPMatrix; +uniform vec4 _28_scene_uViewUp; +uniform vec4 _28_scene_uInteriorSunDir; +uniform vec4 _28_scene_extLight_uExteriorAmbientColor; +uniform vec4 _28_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _28_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _28_scene_extLight_uExteriorDirectColor; +uniform vec4 _28_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _28_scene_extLight_adtSpecMult; +uniform vec4 _28_fogData_densityParams; +uniform vec4 _28_fogData_heightPlane; +uniform vec4 _28_fogData_color_and_heightRate; +uniform vec4 _28_fogData_heightDensity_and_endColor; +uniform vec4 _28_fogData_sunAngle_and_sunColor; +uniform vec4 _28_fogData_heightColor_and_endFogDistance; +uniform vec4 _28_fogData_sunPercentage; +uniform mat4 _36_uPlacementMat; +attribute vec4 aPositionTransp; +varying vec2 vTextCoords; +varying vec3 vPosition; +attribute vec2 aTexCoord; + +void main() +{ + vec4 aPositionVec4 = vec4(aPositionTransp.xyz, 1.0); + mat4 cameraMatrix = _28_scene_uLookAtMat * _36_uPlacementMat; + vec4 cameraPoint = cameraMatrix * aPositionVec4; + vTextCoords = aPositionVec4.xy * 0.02999999932944774627685546875; + gl_Position = _28_scene_uPMatrix * cameraPoint; + vPosition = cameraPoint.xyz; +} + + +#version 100 +precision mediump float; +precision highp int; + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct InteriorLightParam +{ + vec4 uInteriorAmbientColorAndApplyInteriorLight; + vec4 uInteriorDirectColorAndApplyExteriorLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +uniform vec4 _445_values0; +uniform vec4 _445_values1; +uniform vec4 _445_values2; +uniform vec4 _445_values3; +uniform vec4 _445_values4; +uniform vec4 _445_baseColor; +uniform mat4 _709_scene_uLookAtMat; +uniform mat4 _709_scene_uPMatrix; +uniform vec4 _709_scene_uViewUp; +uniform vec4 _709_scene_uInteriorSunDir; +uniform vec4 _709_scene_extLight_uExteriorAmbientColor; +uniform vec4 _709_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _709_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _709_scene_extLight_uExteriorDirectColor; +uniform vec4 _709_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _709_scene_extLight_adtSpecMult; +uniform vec4 _709_fogData_densityParams; +uniform vec4 _709_fogData_heightPlane; +uniform vec4 _709_fogData_color_and_heightRate; +uniform vec4 _709_fogData_heightDensity_and_endColor; +uniform vec4 _709_fogData_sunAngle_and_sunColor; +uniform vec4 _709_fogData_heightColor_and_endFogDistance; +uniform vec4 _709_fogData_sunPercentage; +uniform mat4 _818_uPlacementMat; +uniform mat4 _818_uBoneMatrixes[220]; +uniform sampler2D uNormalTex; +uniform sampler2D uNoise; +uniform sampler2D uWhiteWater; +uniform sampler2D uMask; + +varying vec2 vTexCoord2_animated; +varying vec3 vPosition; +varying vec3 vNormal; +varying vec2 vTexCoord; +varying vec2 vTexCoord2; + +vec3 PerturbNormal(vec3 surf_pos, vec3 surf_norm) +{ + vec2 dBdUV = ((texture2D(uNormalTex, vTexCoord2_animated).xy * 2.0) - vec2(1.0)) * (_445_values3.x * 100.0); + vec2 duv1 = dFdx(vTexCoord2_animated); + vec2 duv2 = dFdy(vTexCoord2_animated); + vec3 vSigmaS = dFdx(surf_pos); + vec3 vSigmaT = dFdy(surf_pos); + vec3 vN = surf_norm; + vec3 vR1 = cross(vSigmaT, vN); + vec3 vR2 = cross(vN, vSigmaS); + float fDet = dot(vSigmaS, vR1); + float dBs = (dBdUV.x * duv1.x) + (dBdUV.y * duv1.y); + float dBt = (dBdUV.x * duv2.x) + (dBdUV.y * duv2.y); + vec3 vSurfGrad = ((vR1 * dBs) + (vR2 * dBt)) * sign(fDet); + return normalize((vN * abs(fDet)) - vSurfGrad); +} + +vec3 calcLight(vec3 matDiffuse, vec3 vNormal_1, bool applyLight, float interiorExteriorBlend, SceneWideParams sceneParams, InteriorLightParam intLight, vec3 accumLight, vec3 precomputedLight, vec3 specular, vec3 emissive) +{ + vec3 localDiffuse = accumLight; + bool _57 = !applyLight; + if (_57) + { + return matDiffuse; + } + vec3 lDiffuse = vec3(0.0); + vec3 normalizedN = normalize(vNormal_1); + bool _73 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + vec3 currColor; + if (_73) + { + float nDotL = clamp(dot(normalizedN, -sceneParams.extLight.uExteriorDirectColorDir.xyz), 0.0, 1.0); + float nDotUp = dot(normalizedN, sceneParams.uViewUp.xyz); + vec3 adjAmbient = sceneParams.extLight.uExteriorAmbientColor.xyz + precomputedLight; + vec3 adjHorizAmbient = sceneParams.extLight.uExteriorHorizontAmbientColor.xyz + precomputedLight; + vec3 adjGroundAmbient = sceneParams.extLight.uExteriorGroundAmbientColor.xyz + precomputedLight; + bool _110 = nDotUp >= 0.0; + if (_110) + { + currColor = mix(adjHorizAmbient, adjAmbient, vec3(nDotUp)); + } + else + { + currColor = mix(adjHorizAmbient, adjGroundAmbient, vec3(-nDotUp)); + } + vec3 skyColor = currColor * 1.10000002384185791015625; + vec3 groundColor = currColor * 0.699999988079071044921875; + lDiffuse = sceneParams.extLight.uExteriorDirectColor.xyz * nDotL; + currColor = mix(groundColor, skyColor, vec3(0.5 + (0.5 * nDotL))); + } + bool _150 = intLight.uInteriorAmbientColorAndApplyInteriorLight.w > 0.0; + if (_150) + { + float nDotL_1 = clamp(dot(normalizedN, -sceneParams.uInteriorSunDir.xyz), 0.0, 1.0); + vec3 lDiffuseInterior = intLight.uInteriorDirectColorAndApplyExteriorLight.xyz * nDotL_1; + vec3 interiorAmbient = intLight.uInteriorAmbientColorAndApplyInteriorLight.xyz + precomputedLight; + bool _174 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + if (_174) + { + lDiffuse = mix(lDiffuseInterior, lDiffuse, vec3(interiorExteriorBlend)); + currColor = mix(interiorAmbient, currColor, vec3(interiorExteriorBlend)); + } + else + { + lDiffuse = lDiffuseInterior; + currColor = interiorAmbient; + } + } + vec3 gammaDiffTerm = matDiffuse * (currColor + lDiffuse); + vec3 linearDiffTerm = (matDiffuse * matDiffuse) * localDiffuse; + vec3 specTerm = specular; + vec3 emTerm = emissive; + return (sqrt((gammaDiffTerm * gammaDiffTerm) + linearDiffTerm) + specTerm) + emTerm; +} + +vec3 validateFogColor(in vec3 fogColor, int blendMode) { + return fogColor; +} +vec4 makeFog(PSFog fogData, vec4 final, vec3 vertexInViewSpace, vec3 sunDirInViewSpace, int blendMode) +{ + vec4 l_densityParams = fogData.densityParams; + vec4 l_heightPlane = fogData.heightPlane; + vec4 l_color_and_heightRate = fogData.color_and_heightRate; + vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + float start = l_densityParams.x; + float end = l_densityParams.y; + float density = l_densityParams.z; + float bias = l_densityParams.w; + float vLength = length(vertexInViewSpace); + float z = vLength - bias; + float expMax = max(0.0, z - start); + float expFog = 1.0 / exp(expMax * density); + float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + float finalFog = mix(expFog, expFogHeight, heightFog); + float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + float alpha = 1.0; + bool _316 = blendMode == 13; + if (_316) + { + alpha = min(finalFog, endFadeFog); + } + vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + vec3 endColor = validateFogColor(param, param_1); + vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + float end2 = vLength / l_heightColor_and_endFogDistance.w; + float end2_cube = end2 * (end2 * end2); + vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _394 = nDotSun > 0.0; + if (_394) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + vec3 param = vPosition; + vec3 param_1 = normalize(vNormal); + vec3 perturbedNormal = PerturbNormal(param, param_1); + vec2 vTexCoordNorm = vTexCoord / vec2(_445_values1.x); + float noise0 = texture2D(uNoise, vec2(vTexCoordNorm.x - _445_values1.z, (vTexCoordNorm.y - _445_values1.z) - _445_values2.z)).x; + float _noise1 = texture2D(uNoise, vec2((vTexCoordNorm.x - _445_values1.z) + 0.4180000126361846923828125, ((vTexCoordNorm.y + 0.3549999892711639404296875) + _445_values1.z) - _445_values2.z)).x; + float _noise2 = texture2D(uNoise, vec2((vTexCoordNorm.x + _445_values1.z) + 0.8650000095367431640625, ((vTexCoordNorm.y + 0.1480000019073486328125) - _445_values1.z) - _445_values2.z)).x; + float _noise3 = texture2D(uNoise, vec2((vTexCoordNorm.x + _445_values1.z) + 0.65100002288818359375, ((vTexCoordNorm.y + 0.75199997425079345703125) + _445_values1.z) - _445_values2.z)).x; + float noise_avr = abs(((noise0 + _noise1) + _noise2) + _noise3) * 0.25; + float noiseFinal = clamp(exp((_445_values0.x * log2(noise_avr)) * 2.2000000476837158203125) * _445_values0.y, 0.0, 1.0); + vec4 whiteWater_val = texture2D(uWhiteWater, vTexCoord2_animated); + vec4 mask_val_0 = texture2D(uMask, vTexCoord); + vec4 mask_val_1 = texture2D(uMask, vec2(vTexCoord.x, vTexCoord.y + _445_values3.z)); + float mix_alpha = clamp((((((whiteWater_val.w * noiseFinal) - (mask_val_1.y * mask_val_0.x)) * 2.0) + _445_values0.z) * ((_445_values0.w * 2.0) + 1.0)) - _445_values0.w, 0.0, 1.0); + vec4 whiteWater_val_baseColor_mix = mix(_445_baseColor, whiteWater_val, vec4(mix_alpha)); + vec3 param_2 = whiteWater_val_baseColor_mix.xyz; + vec3 param_3 = perturbedNormal; + bool param_4 = true; + float param_5 = 0.0; + SceneWideParams param_6; + param_6.uLookAtMat = _709_scene_uLookAtMat; + param_6.uPMatrix = _709_scene_uPMatrix; + param_6.uViewUp = _709_scene_uViewUp; + param_6.uInteriorSunDir = _709_scene_uInteriorSunDir; + param_6.extLight.uExteriorAmbientColor = _709_scene_extLight_uExteriorAmbientColor; + param_6.extLight.uExteriorHorizontAmbientColor = _709_scene_extLight_uExteriorHorizontAmbientColor; + param_6.extLight.uExteriorGroundAmbientColor = _709_scene_extLight_uExteriorGroundAmbientColor; + param_6.extLight.uExteriorDirectColor = _709_scene_extLight_uExteriorDirectColor; + param_6.extLight.uExteriorDirectColorDir = _709_scene_extLight_uExteriorDirectColorDir; + param_6.extLight.adtSpecMult = _709_scene_extLight_adtSpecMult; + InteriorLightParam param_7 = InteriorLightParam(vec4(0.0), vec4(0.0, 0.0, 0.0, 1.0)); + vec3 param_8 = vec3(0.0); + vec3 colorAfterLight = calcLight(param_2, param_3, param_4, param_5, param_6, param_7, param_8, vec3(0.0), vec3(0.0), vec3(0.0)); + float w_clamped = clamp((1.0 - mask_val_0.w) * _445_values1.w, 0.0, 1.0); + float w_alpha_combined = clamp(w_clamped + mix_alpha, 0.0, 1.0); + vec4 finalColor = vec4(mix(colorAfterLight, whiteWater_val_baseColor_mix.xyz, vec3(_445_values3.w)), w_alpha_combined); + vec3 sunDir = _709_scene_extLight_uExteriorDirectColorDir.xyz; + PSFog arg; + arg.densityParams = _709_fogData_densityParams; + arg.heightPlane = _709_fogData_heightPlane; + arg.color_and_heightRate = _709_fogData_color_and_heightRate; + arg.heightDensity_and_endColor = _709_fogData_heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _709_fogData_sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _709_fogData_heightColor_and_endFogDistance; + arg.sunPercentage = _709_fogData_sunPercentage; + vec4 param_9 = finalColor; + vec3 param_10 = vPosition; + vec3 param_11 = sunDir; + int param_12 = 0; + finalColor = makeFog(arg, param_9, param_10, param_11, param_12); + gl_FragData[0] = finalColor; +} + + +#version 100 +#extension GL_ARB_shader_texture_lod : require + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +uniform vec4 _55_bumpScale; +uniform mat4 _55_uTextMat[2]; +uniform mat4 _104_uPlacementMat; +uniform mat4 _104_uBoneMatrixes[220]; +uniform mat4 _199_scene_uLookAtMat; +uniform mat4 _199_scene_uPMatrix; +uniform vec4 _199_scene_uViewUp; +uniform vec4 _199_scene_uInteriorSunDir; +uniform vec4 _199_scene_extLight_uExteriorAmbientColor; +uniform vec4 _199_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _199_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _199_scene_extLight_uExteriorDirectColor; +uniform vec4 _199_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _199_scene_extLight_adtSpecMult; +uniform vec4 _199_fogData_densityParams; +uniform vec4 _199_fogData_heightPlane; +uniform vec4 _199_fogData_color_and_heightRate; +uniform vec4 _199_fogData_heightDensity_and_endColor; +uniform vec4 _199_fogData_sunAngle_and_sunColor; +uniform vec4 _199_fogData_heightColor_and_endFogDistance; +uniform vec4 _199_fogData_sunPercentage; +uniform sampler2D uBumpTexture; + +attribute vec2 aTexCoord2; +attribute vec3 aNormal; +attribute vec3 aPosition; +attribute vec4 boneWeights; +attribute vec4 bones; +varying vec3 vNormal; +varying vec3 vPosition; +varying vec2 vTexCoord; +attribute vec2 aTexCoord; +varying vec2 vTexCoord2_animated; +varying vec2 vTexCoord2; + +mat3 blizzTranspose(mat4 value) +{ + return mat3(vec3(value[0].xyz), vec3(value[1].xyz), vec3(value[2].xyz)); +} + +void main() +{ + vec2 texCoord2 = (_55_uTextMat[0] * vec4(aTexCoord2, 0.0, 1.0)).xy; + vec4 bumpValue = texture2DLod(uBumpTexture, texCoord2, 0.0); + vec3 pos = ((aNormal * _55_bumpScale.x) * bumpValue.z) + aPosition; + mat4 boneTransformMat = mat4(vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0)); + mat4 _113 = _104_uBoneMatrixes[bones.x] * boneWeights.x; + boneTransformMat = mat4(boneTransformMat[0] + _113[0], boneTransformMat[1] + _113[1], boneTransformMat[2] + _113[2], boneTransformMat[3] + _113[3]); + mat4 _135 = _104_uBoneMatrixes[bones.y] * boneWeights.y; + boneTransformMat = mat4(boneTransformMat[0] + _135[0], boneTransformMat[1] + _135[1], boneTransformMat[2] + _135[2], boneTransformMat[3] + _135[3]); + mat4 _156 = _104_uBoneMatrixes[bones.z] * boneWeights.z; + boneTransformMat = mat4(boneTransformMat[0] + _156[0], boneTransformMat[1] + _156[1], boneTransformMat[2] + _156[2], boneTransformMat[3] + _156[3]); + mat4 _178 = _104_uBoneMatrixes[bones.w] * boneWeights.w; + boneTransformMat = mat4(boneTransformMat[0] + _178[0], boneTransformMat[1] + _178[1], boneTransformMat[2] + _178[2], boneTransformMat[3] + _178[3]); + mat4 cameraMatrix = (_199_scene_uLookAtMat * _104_uPlacementMat) * boneTransformMat; + vec4 cameraPoint = cameraMatrix * vec4(pos, 1.0); + mat4 param = _199_scene_uLookAtMat; + mat4 param_1 = _104_uPlacementMat; + mat4 param_2 = boneTransformMat; + mat3 viewModelMatTransposed = (blizzTranspose(param) * blizzTranspose(param_1)) * blizzTranspose(param_2); + vNormal = ((_199_scene_uLookAtMat * _104_uPlacementMat) * vec4(aNormal, 0.0)).xyz; + vPosition = pos; + vTexCoord = aTexCoord; + vTexCoord2_animated = texCoord2; + vTexCoord2 = aTexCoord2; + gl_Position = _199_scene_uPMatrix * cameraPoint; +} + + +#version 100 +precision mediump float; +precision highp int; + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct InteriorLightParam +{ + vec4 uInteriorAmbientColorAndApplyInteriorLight; + vec4 uInteriorDirectColorAndApplyExteriorLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +uniform vec4 _525_intLight_uInteriorAmbientColorAndApplyInteriorLight; +uniform vec4 _525_intLight_uInteriorDirectColorAndApplyExteriorLight; +uniform mat4 _537_scene_uLookAtMat; +uniform mat4 _537_scene_uPMatrix; +uniform vec4 _537_scene_uViewUp; +uniform vec4 _537_scene_uInteriorSunDir; +uniform vec4 _537_scene_extLight_uExteriorAmbientColor; +uniform vec4 _537_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _537_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _537_scene_extLight_uExteriorDirectColor; +uniform vec4 _537_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _537_scene_extLight_adtSpecMult; +uniform vec4 _537_fogData_densityParams; +uniform vec4 _537_fogData_heightPlane; +uniform vec4 _537_fogData_color_and_heightRate; +uniform vec4 _537_fogData_heightDensity_and_endColor; +uniform vec4 _537_fogData_sunAngle_and_sunColor; +uniform vec4 _537_fogData_heightColor_and_endFogDistance; +uniform vec4 _537_fogData_sunPercentage; +uniform ivec4 _657_UseLitColor_EnableAlpha_PixelShader_BlendMode; +uniform vec4 _657_FogColor_AlphaTest; +uniform sampler2D uTexture; +uniform sampler2D uTexture2; +uniform sampler2D uTexture3; +uniform sampler2D uTexture6; +uniform sampler2D uTexture4; +uniform sampler2D uTexture5; +uniform sampler2D uTexture7; +uniform sampler2D uTexture8; +uniform sampler2D uTexture9; + +varying vec3 vNormal; +varying vec4 vColor; +varying vec4 vPosition; +varying vec2 vTexCoord; +varying vec2 vTexCoord2; +varying vec2 vTexCoord3; +varying vec4 vColor2; +varying vec4 vColorSecond; +varying vec2 vTexCoord4; + +vec3 Slerp(vec3 p0, vec3 p1, float t) +{ + float dotp = dot(normalize(p0), normalize(p1)); + bool _479 = (dotp > 0.99989998340606689453125) || (dotp < (-0.99989998340606689453125)); + if (_479) + { + bool _483 = t <= 0.5; + if (_483) + { + return p0; + } + return p1; + } + float theta = acos(dotp); + vec3 P = ((p0 * sin((1.0 - t) * theta)) + (p1 * sin(t * theta))) / vec3(sin(theta)); + return P; +} + +vec3 calcSpec(float texAlpha) +{ + vec3 normal = normalize(vNormal); + vec3 sunDir = vec3(0.0); + vec3 sunColor = vec3(0.0); + bool _529 = _525_intLight_uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + if (_529) + { + sunDir = -_537_scene_extLight_uExteriorDirectColorDir.xyz; + sunColor = _537_scene_extLight_uExteriorDirectColor.xyz; + } + bool _548 = _525_intLight_uInteriorAmbientColorAndApplyInteriorLight.w > 0.0; + if (_548) + { + sunDir = -_537_scene_uInteriorSunDir.xyz; + sunColor = _525_intLight_uInteriorDirectColorAndApplyExteriorLight.xyz; + bool _560 = _525_intLight_uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + if (_560) + { + vec3 param = sunDir; + vec3 param_1 = -_537_scene_extLight_uExteriorDirectColorDir.xyz; + float param_2 = vColor.w; + sunDir = Slerp(param, param_1, param_2); + sunColor = mix(sunColor, _537_scene_extLight_uExteriorDirectColor.xyz, vec3(vColor.w)); + } + } + vec3 t849 = normalize(sunDir + normalize(-vPosition.xyz)); + float dirAtten_956 = clamp(dot(normal, sunDir), 0.0, 1.0); + float spec = 1.25 * pow(clamp(dot(normal, t849), 0.0, 1.0), 8.0); + vec3 specTerm = ((vec3(mix(pow(1.0 - clamp(dot(sunDir, t849), 0.0, 1.0), 5.0), 1.0, texAlpha)) * spec) * sunColor) * dirAtten_956; + float distFade = 1.0; + specTerm *= distFade; + return specTerm; +} + +vec2 posToTexCoord(vec3 cameraPoint, vec3 normal) +{ + vec3 normPos_495 = normalize(cameraPoint); + vec3 temp_500 = normPos_495 - (normal * (2.0 * dot(normPos_495, normal))); + vec3 temp_657 = vec3(temp_500.x, temp_500.y, temp_500.z + 1.0); + return (normalize(temp_657).xy * 0.5) + vec2(0.5); +} + +vec3 calcLight(vec3 matDiffuse, vec3 vNormal_1, bool applyLight, float interiorExteriorBlend, SceneWideParams sceneParams, InteriorLightParam intLight, vec3 accumLight, vec3 precomputedLight, vec3 specular, vec3 emissive) +{ + vec3 localDiffuse = accumLight; + bool _68 = !applyLight; + if (_68) + { + return matDiffuse; + } + vec3 lDiffuse = vec3(0.0); + vec3 normalizedN = normalize(vNormal_1); + bool _84 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + vec3 currColor; + if (_84) + { + float nDotL = clamp(dot(normalizedN, -sceneParams.extLight.uExteriorDirectColorDir.xyz), 0.0, 1.0); + float nDotUp = dot(normalizedN, sceneParams.uViewUp.xyz); + vec3 adjAmbient = sceneParams.extLight.uExteriorAmbientColor.xyz + precomputedLight; + vec3 adjHorizAmbient = sceneParams.extLight.uExteriorHorizontAmbientColor.xyz + precomputedLight; + vec3 adjGroundAmbient = sceneParams.extLight.uExteriorGroundAmbientColor.xyz + precomputedLight; + bool _121 = nDotUp >= 0.0; + if (_121) + { + currColor = mix(adjHorizAmbient, adjAmbient, vec3(nDotUp)); + } + else + { + currColor = mix(adjHorizAmbient, adjGroundAmbient, vec3(-nDotUp)); + } + vec3 skyColor = currColor * 1.10000002384185791015625; + vec3 groundColor = currColor * 0.699999988079071044921875; + lDiffuse = sceneParams.extLight.uExteriorDirectColor.xyz * nDotL; + currColor = mix(groundColor, skyColor, vec3(0.5 + (0.5 * nDotL))); + } + bool _161 = intLight.uInteriorAmbientColorAndApplyInteriorLight.w > 0.0; + if (_161) + { + float nDotL_1 = clamp(dot(normalizedN, -sceneParams.uInteriorSunDir.xyz), 0.0, 1.0); + vec3 lDiffuseInterior = intLight.uInteriorDirectColorAndApplyExteriorLight.xyz * nDotL_1; + vec3 interiorAmbient = intLight.uInteriorAmbientColorAndApplyInteriorLight.xyz + precomputedLight; + bool _185 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + if (_185) + { + lDiffuse = mix(lDiffuseInterior, lDiffuse, vec3(interiorExteriorBlend)); + currColor = mix(interiorAmbient, currColor, vec3(interiorExteriorBlend)); + } + else + { + lDiffuse = lDiffuseInterior; + currColor = interiorAmbient; + } + } + vec3 gammaDiffTerm = matDiffuse * (currColor + lDiffuse); + vec3 linearDiffTerm = (matDiffuse * matDiffuse) * localDiffuse; + vec3 specTerm = specular; + vec3 emTerm = emissive; + return (sqrt((gammaDiffTerm * gammaDiffTerm) + linearDiffTerm) + specTerm) + emTerm; +} + +vec3 validateFogColor(in vec3 fogColor, int blendMode) { + return fogColor; +} +vec4 makeFog(PSFog fogData, vec4 final, vec3 vertexInViewSpace, vec3 sunDirInViewSpace, int blendMode) +{ + vec4 l_densityParams = fogData.densityParams; + vec4 l_heightPlane = fogData.heightPlane; + vec4 l_color_and_heightRate = fogData.color_and_heightRate; + vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + float start = l_densityParams.x; + float end = l_densityParams.y; + float density = l_densityParams.z; + float bias = l_densityParams.w; + float vLength = length(vertexInViewSpace); + float z = vLength - bias; + float expMax = max(0.0, z - start); + float expFog = 1.0 / exp(expMax * density); + float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + float finalFog = mix(expFog, expFogHeight, heightFog); + float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + float alpha = 1.0; + bool _327 = blendMode == 13; + if (_327) + { + alpha = min(finalFog, endFadeFog); + } + vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + vec3 endColor = validateFogColor(param, param_1); + vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + float end2 = vLength / l_heightColor_and_endFogDistance.w; + float end2_cube = end2 * (end2 * end2); + vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _405 = nDotSun > 0.0; + if (_405) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + vec4 tex = texture2D(uTexture, vTexCoord); + vec4 tex2 = texture2D(uTexture2, vTexCoord2); + vec4 tex3 = texture2D(uTexture3, vTexCoord3); + bool _661 = _657_UseLitColor_EnableAlpha_PixelShader_BlendMode.y == 1; + if (_661) + { + bool _668 = (tex.w - 0.501960813999176025390625) < 0.0; + if (_668) + { + discard; + } + } + int uPixelShader = _657_UseLitColor_EnableAlpha_PixelShader_BlendMode.z; + vec4 finalColor = vec4(0.0, 0.0, 0.0, 1.0); + vec3 matDiffuse = vec3(0.0); + vec3 spec = vec3(0.0); + vec3 emissive = vec3(0.0); + float finalOpacity = 0.0; + float distFade = 1.0; + bool _684 = uPixelShader == (-1); + #if (FRAGMENTSHADER == (-1)) + matDiffuse = tex.xyz * tex2.xyz; + finalOpacity = tex.w; + #endif + bool _696 = uPixelShader == 0; + #if (FRAGMENTSHADER == 0) + matDiffuse = tex.xyz; + finalOpacity = tex.w; + #endif + bool _705 = uPixelShader == 1; + #if (FRAGMENTSHADER == 1) + matDiffuse = tex.xyz; + float param = tex.w; + spec = calcSpec(param); + finalOpacity = tex.w; + #endif + bool _718 = uPixelShader == 2; + #if (FRAGMENTSHADER == 2) + matDiffuse = tex.xyz; + float param_1 = ((tex * 4.0) * tex.w).x; + spec = calcSpec(param_1); + finalOpacity = tex.w; + #endif + bool _736 = uPixelShader == 3; + #if (FRAGMENTSHADER == 3) + matDiffuse = tex.xyz; + emissive = (tex2.xyz * tex.w) * distFade; + finalOpacity = 1.0; + #endif + bool _750 = uPixelShader == 4; + #if (FRAGMENTSHADER == 4) + matDiffuse = tex.xyz; + finalOpacity = 1.0; + #endif + bool _757 = uPixelShader == 5; + #if (FRAGMENTSHADER == 5) + matDiffuse = tex.xyz; + emissive = ((tex.xyz * tex.w) * tex2.xyz) * distFade; + finalOpacity = 1.0; + #endif + bool _774 = uPixelShader == 6; + #if (FRAGMENTSHADER == 6) + vec3 layer1 = tex.xyz; + vec3 layer2 = mix(layer1, tex2.xyz, vec3(tex2.w)); + matDiffuse = mix(layer2, layer1, vec3(vColor2.w)); + finalOpacity = tex.w; + #endif + bool _800 = uPixelShader == 7; + #if (FRAGMENTSHADER == 7) + vec4 colorMix = mix(tex2, tex, vec4(vColor2.w)); + matDiffuse = colorMix.xyz; + emissive = ((colorMix.xyz * colorMix.w) * tex3.xyz) * distFade; + finalOpacity = tex.w; + #endif + bool _827 = uPixelShader == 8; + #if (FRAGMENTSHADER == 8) + vec3 layer1_1 = tex.xyz; + vec3 layer2_1 = tex2.xyz; + matDiffuse = mix(layer2_1, layer1_1, vec3(vColor2.w)); + float param_2 = tex2.w * (1.0 - vColor2.w); + spec = calcSpec(param_2); + finalOpacity = tex.w; + #endif + bool _855 = uPixelShader == 9; + #if (FRAGMENTSHADER == 9) + matDiffuse = tex.xyz; + emissive = (tex2.xyz * tex2.w) * vColor2.w; + finalOpacity = tex.w; + #endif + bool _873 = uPixelShader == 10; + #if (FRAGMENTSHADER == 10) + float mixFactor = clamp(tex3.w * vColor2.w, 0.0, 1.0); + matDiffuse = mix(mix((tex.xyz * tex2.xyz) * 2.0, tex3.xyz, vec3(mixFactor)), tex.xyz, vec3(tex.w)); + finalOpacity = tex.w; + #endif + bool _905 = uPixelShader == 11; + #if (FRAGMENTSHADER == 11) + matDiffuse = tex.xyz; + emissive = ((tex.xyz * tex.w) * tex2.xyz) + ((tex3.xyz * tex3.w) * vColor2.w); + finalOpacity = tex.w; + #endif + bool _932 = uPixelShader == 12; + #if (FRAGMENTSHADER == 12) + matDiffuse = mix(tex2.xyz, tex.xyz, vec3(vColor2.w)); + finalOpacity = 1.0; + #endif + bool _945 = uPixelShader == 13; + #if (FRAGMENTSHADER == 13) + vec3 t1diffuse = tex2.xyz * (1.0 - tex2.w); + matDiffuse = mix(t1diffuse, tex.xyz, vec3(vColor2.w)); + emissive = (tex2.xyz * tex2.w) * (1.0 - vColor2.w); + finalOpacity = tex.w; + #endif + bool _976 = uPixelShader == 14; + #if (FRAGMENTSHADER == 14) + matDiffuse = mix(((tex.xyz * tex2.xyz) * 2.0) + (tex3.xyz * clamp(tex3.w * vColor2.w, 0.0, 1.0)), tex.xyz, vec3(tex.w)); + finalOpacity = 1.0; + #endif + bool _1004 = uPixelShader == 15; + #if (FRAGMENTSHADER == 15) + vec3 layer1_2 = tex.xyz; + vec3 layer2_2 = mix(layer1_2, tex2.xzy, vec3(tex2.w)); + vec3 layer3 = mix(layer2_2, layer1_2, vec3(vColor2.w)); + matDiffuse = (layer3 * tex3.xyz) * 2.0; + finalOpacity = tex.w; + #endif + bool _1034 = uPixelShader == 16; + #if (FRAGMENTSHADER == 16) + vec3 layer1_3 = (tex.xyz * tex2.xyz) * 2.0; + matDiffuse = mix(tex.xyz, layer1_3, vec3(vColor2.w)); + finalOpacity = tex.w; + #endif + bool _1055 = uPixelShader == 17; + #if (FRAGMENTSHADER == 17) + vec3 layer1_4 = tex.xyz; + vec3 layer2_3 = mix(layer1_4, tex2.xyz, vec3(tex2.w)); + vec3 layer3_1 = mix(layer2_3, layer1_4, vec3(tex3.w)); + matDiffuse = (layer3_1 * tex3.xyz) * 2.0; + finalOpacity = tex.w; + #endif + bool _1085 = uPixelShader == 18; + #if (FRAGMENTSHADER == 18) + matDiffuse = tex.xyz; + finalOpacity = tex.w; + #endif + bool _1094 = uPixelShader == 19; + #if (FRAGMENTSHADER == 19) + vec4 tex_6 = texture2D(uTexture6, vTexCoord2); + vec3 crossDy = cross(dFdy(vPosition.xyz), vNormal); + vec3 crossDx = cross(vNormal, dFdx(vPosition.xyz)); + vec2 dTexCoord2Dx = dFdx(vTexCoord2); + vec2 dTexCoord2Dy = dFdy(vTexCoord2); + vec3 sum1 = (crossDx * dTexCoord2Dy.x) + (crossDy * dTexCoord2Dx.x); + vec3 sum2 = (crossDx * dTexCoord2Dy.y) + (crossDy * dTexCoord2Dx.y); + float maxInverseDot = inversesqrt(max(dot(sum1, sum1), dot(sum2, sum2))); + float cosAlpha = dot(normalize(vPosition.xyz), vNormal); + float dot1 = dot(sum1 * maxInverseDot, normalize(vPosition.xyz)) / cosAlpha; + float dot2 = dot(sum2 * maxInverseDot, normalize(vPosition.xyz)) / cosAlpha; + vec4 tex_4 = texture2D(uTexture4, vTexCoord2 - ((vec2(dot1, dot2) * tex_6.x) * 0.25)); + vec4 tex_5 = texture2D(uTexture5, vTexCoord3 - ((vec2(dot1, dot2) * tex_6.x) * 0.25)); + vec4 tex_3 = texture2D(uTexture3, vTexCoord2); + vec3 mix1 = tex_5.xyz + (tex_4.xyz * tex_4.w); + vec3 mix2 = ((tex_3.xyz - mix1) * tex_6.y) + mix1; + vec3 mix3 = (tex_3.xyz * tex_6.z) + ((tex_5.xyz * tex_5.w) * (1.0 - tex3.z)); + vec4 tex_2 = texture2D(uTexture3, vColorSecond.zy); + vec3 tex_2_mult = tex_2.xyz * tex_2.w; + bool _1256 = vColor2.w > 0.0; + vec3 emissive_component; + if (_1256) + { + vec4 tex_1 = texture2D(uTexture, vTexCoord); + matDiffuse = ((tex_1.xyz - mix2) * vColor2.w) + mix2; + emissive_component = (((tex_1.xyz * tex_1.w) - tex_2_mult) * vColor2.w) + tex_2_mult; + } + else + { + emissive_component = tex_2_mult; + matDiffuse = mix2; + } + emissive = (mix3 - (mix3 * vColor2.w)) + (emissive_component * tex_2.xyz); + #endif + bool _1301 = uPixelShader == 20; + #if (FRAGMENTSHADER == 20) + vec3 param_3 = vPosition.xyz; + vec3 param_4 = vNormal; + vec4 tex_1_1 = texture2D(uTexture, posToTexCoord(param_3, param_4)); + vec4 tex_2_1 = texture2D(uTexture2, vTexCoord); + vec4 tex_3_1 = texture2D(uTexture3, vTexCoord2); + vec4 tex_4_1 = texture2D(uTexture4, vTexCoord3); + vec4 tex_5_1 = texture2D(uTexture5, vTexCoord4); + vec4 tex_6_1 = texture2D(uTexture6, vTexCoord); + vec4 tex_7 = texture2D(uTexture7, vTexCoord2); + vec4 tex_8 = texture2D(uTexture8, vTexCoord3); + vec4 tex_9 = texture2D(uTexture9, vTexCoord4); + float secondColorSum = dot(vColorSecond.zyx, vec3(1.0)); + vec4 alphaVec = max(vec4(tex_6_1.w, tex_7.w, tex_8.w, tex_9.w), vec4(0.0040000001899898052215576171875)) * vec4(vColorSecond.zyx, 1.0 - clamp(secondColorSum, 0.0, 1.0)); + float maxAlpha = max(alphaVec.x, max(alphaVec.y, max(alphaVec.x, alphaVec.w))); + vec4 alphaVec2 = vec4(1.0) - clamp(vec4(maxAlpha) - alphaVec, vec4(0.0), vec4(1.0)); + alphaVec2 *= alphaVec; + vec4 alphaVec2Normalized = alphaVec2 * (1.0 / dot(alphaVec2, vec4(1.0))); + vec4 texMixed = (((tex_2_1 * alphaVec2Normalized.x) + (tex_3_1 * alphaVec2Normalized.y)) + (tex_4_1 * alphaVec2Normalized.z)) + (tex_5_1 * alphaVec2Normalized.w); + emissive = (tex_1_1.xyz * texMixed.w) * texMixed.xyz; + vec3 diffuseColor = vec3(0.0); + matDiffuse = ((diffuseColor - texMixed.xyz) * vColorSecond.w) + texMixed.xyz; + #endif + vec3 param_5 = matDiffuse; + vec3 param_6 = vNormal; + bool param_7 = true; + float param_8 = vColor.w; + SceneWideParams param_9; + param_9.uLookAtMat = _537_scene_uLookAtMat; + param_9.uPMatrix = _537_scene_uPMatrix; + param_9.uViewUp = _537_scene_uViewUp; + param_9.uInteriorSunDir = _537_scene_uInteriorSunDir; + param_9.extLight.uExteriorAmbientColor = _537_scene_extLight_uExteriorAmbientColor; + param_9.extLight.uExteriorHorizontAmbientColor = _537_scene_extLight_uExteriorHorizontAmbientColor; + param_9.extLight.uExteriorGroundAmbientColor = _537_scene_extLight_uExteriorGroundAmbientColor; + param_9.extLight.uExteriorDirectColor = _537_scene_extLight_uExteriorDirectColor; + param_9.extLight.uExteriorDirectColorDir = _537_scene_extLight_uExteriorDirectColorDir; + param_9.extLight.adtSpecMult = _537_scene_extLight_adtSpecMult; + InteriorLightParam param_10; + param_10.uInteriorAmbientColorAndApplyInteriorLight = _525_intLight_uInteriorAmbientColorAndApplyInteriorLight; + param_10.uInteriorDirectColorAndApplyExteriorLight = _525_intLight_uInteriorDirectColorAndApplyExteriorLight; + vec3 param_11 = vec3(0.0); + finalColor = vec4(calcLight(param_5, param_6, param_7, param_8, param_9, param_10, param_11, vColor.xyz, spec, emissive), finalOpacity); + PSFog arg; + arg.densityParams = _537_fogData_densityParams; + arg.heightPlane = _537_fogData_heightPlane; + arg.color_and_heightRate = _537_fogData_color_and_heightRate; + arg.heightDensity_and_endColor = _537_fogData_heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _537_fogData_sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _537_fogData_heightColor_and_endFogDistance; + arg.sunPercentage = _537_fogData_sunPercentage; + vec4 param_12 = finalColor; + vec3 param_13 = vPosition.xyz; + vec3 param_14 = _537_scene_extLight_uExteriorDirectColorDir.xyz; + int param_15 = _657_UseLitColor_EnableAlpha_PixelShader_BlendMode.w; + finalColor = makeFog(arg, param_12, param_13, param_14, param_15); + gl_FragData[0] = finalColor; +} + + +#version 100 + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +uniform mat4 _93_uPlacementMat; +uniform mat4 _111_scene_uLookAtMat; +uniform mat4 _111_scene_uPMatrix; +uniform vec4 _111_scene_uViewUp; +uniform vec4 _111_scene_uInteriorSunDir; +uniform vec4 _111_scene_extLight_uExteriorAmbientColor; +uniform vec4 _111_scene_extLight_uExteriorHorizontAmbientColor; +uniform vec4 _111_scene_extLight_uExteriorGroundAmbientColor; +uniform vec4 _111_scene_extLight_uExteriorDirectColor; +uniform vec4 _111_scene_extLight_uExteriorDirectColorDir; +uniform vec4 _111_scene_extLight_adtSpecMult; +uniform vec4 _111_fogData_densityParams; +uniform vec4 _111_fogData_heightPlane; +uniform vec4 _111_fogData_color_and_heightRate; +uniform vec4 _111_fogData_heightDensity_and_endColor; +uniform vec4 _111_fogData_sunAngle_and_sunColor; +uniform vec4 _111_fogData_heightColor_and_endFogDistance; +uniform vec4 _111_fogData_sunPercentage; +uniform ivec4 _178_VertexShader_UseLitColor; +attribute vec3 aPosition; +varying vec4 vPosition; +varying vec3 vNormal; +attribute vec3 aNormal; +varying vec4 vColor; +attribute vec4 aColor; +varying vec4 vColor2; +attribute vec4 aColor2; +varying vec4 vColorSecond; +attribute vec4 aColorSecond; +varying vec2 vTexCoord4; +attribute vec2 aTexCoord4; +varying vec2 vTexCoord; +attribute vec2 aTexCoord; +varying vec2 vTexCoord2; +attribute vec2 aTexCoord2; +varying vec2 vTexCoord3; +attribute vec2 aTexCoord3; + +mat3 blizzTranspose(mat4 value) +{ + return mat3(vec3(value[0].xyz), vec3(value[1].xyz), vec3(value[2].xyz)); +} + +vec2 posToTexCoord(vec3 cameraPoint, vec3 normal) +{ + vec3 normPos_495 = normalize(cameraPoint); + vec3 temp_500 = normPos_495 - (normal * (2.0 * dot(normPos_495, normal))); + vec3 temp_657 = vec3(temp_500.x, temp_500.y, temp_500.z + 1.0); + return (normalize(temp_657).xy * 0.5) + vec2(0.5); +} + +void main() +{ + vec4 worldPoint = _93_uPlacementMat * vec4(aPosition, 1.0); + vec4 cameraPoint = _111_scene_uLookAtMat * worldPoint; + mat4 viewModelMat = _111_scene_uLookAtMat * _93_uPlacementMat; + mat4 param = _111_scene_uLookAtMat; + mat4 param_1 = _93_uPlacementMat; + mat3 viewModelMatTransposed = blizzTranspose(param) * blizzTranspose(param_1); + gl_Position = _111_scene_uPMatrix * cameraPoint; + vPosition = vec4(cameraPoint.xyz, 0.0); + vNormal = normalize(viewModelMatTransposed * aNormal); + vColor = aColor.zyxw; + vColor2 = aColor2; + vColorSecond = aColorSecond; + vTexCoord4 = aTexCoord4; + int uVertexShader = _178_VertexShader_UseLitColor.x; + #if (VERTEXSHADER == (-1)) + vTexCoord = aTexCoord; + vTexCoord2 = aTexCoord2; + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 0) + vTexCoord = aTexCoord; + vTexCoord2 = aTexCoord2; + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 1) + vTexCoord = aTexCoord; + vTexCoord2 = reflect(normalize(cameraPoint.xyz), vNormal).xy; + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 2) + vTexCoord = aTexCoord; + vec3 param_2 = vPosition.xyz; + vec3 param_3 = vNormal; + vTexCoord2 = posToTexCoord(param_2, param_3); + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 3) + vTexCoord = aTexCoord; + vTexCoord2 = aTexCoord2; + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 4) + vTexCoord = aTexCoord; + vTexCoord2 = aTexCoord2; + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 5) + vTexCoord = aTexCoord; + vTexCoord2 = aTexCoord2; + vTexCoord3 = reflect(normalize(cameraPoint.xyz), vNormal).xy; + #endif + #if (VERTEXSHADER == 6) + vTexCoord = aTexCoord; + vTexCoord2 = vPosition.xy * (-0.23999999463558197021484375); + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 7) + vTexCoord = aTexCoord; + vTexCoord2 = vPosition.xy * (-0.23999999463558197021484375); + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 8) + vTexCoord = aTexCoord; + vTexCoord2 = aTexCoord2; + vTexCoord3 = aTexCoord3; + #endif +} + + +#version 300 es +precision mediump float; +precision highp int; + +layout(std140) uniform modelWideBlockPS +{ + highp vec4 uViewUp; + highp vec4 uSunDir_FogStart; + highp vec4 uSunColor_uFogEnd; + highp vec4 uAmbientLight; + highp vec4 FogColor; + int uNewFormula; +} _65; + +uniform highp sampler2D uDiffuseTexture; +uniform highp sampler2D uNormalTexture; + +in highp vec2 vChunkCoords; +in highp vec3 vPosition; +layout(location = 0) out highp vec4 fragColor; + +void main() +{ + highp vec2 TextureCoords = vec2(vChunkCoords.x, vChunkCoords.y); + highp vec4 texDiffuse = texture(uDiffuseTexture, TextureCoords); + highp vec3 matDiffuse = texDiffuse.xyz; + highp vec3 vNormal = (texture(uNormalTexture, TextureCoords).xyz * 2.0) - vec3(1.0); + vNormal = vec3(-vNormal.z, -vNormal.x, vNormal.y); + highp vec4 finalColor = vec4(0.0, 0.0, 0.0, 1.0); + highp vec3 fogColor = _65.FogColor.xyz; + highp float fog_start = _65.uSunDir_FogStart.w; + highp float fog_end = _65.uSunColor_uFogEnd.w; + highp float fog_rate = 1.5; + highp float fog_bias = 0.00999999977648258209228515625; + highp float distanceToCamera = length(vPosition); + highp float z_depth = distanceToCamera - fog_bias; + highp float expFog = 1.0 / exp(max(0.0, z_depth - fog_start) * fog_rate); + highp float heightFog = 1.0; + expFog += heightFog; + highp float endFadeFog = clamp((fog_end - distanceToCamera) / (0.699999988079071044921875 * fog_end), 0.0, 1.0); + highp vec3 _123 = mix(fogColor, finalColor.xyz, vec3(min(expFog, endFadeFog))); + finalColor = vec4(_123.x, _123.y, _123.z, finalColor.w); + finalColor.w = 1.0; + fragColor = finalColor; +} + + +#version 300 es + +layout(std140) uniform modelWideBlockVS +{ + vec3 uPos; + mat4 uLookAtMat; + mat4 uPMatrix; +} _55; + +layout(location = 1) in float aIndex; +layout(location = 0) in float aHeight; +out vec2 vChunkCoords; +out vec3 vPosition; + +void main() +{ + float stepX = floor(aIndex / 16641.0); + float division = 129.0; + bool _20 = stepX > 0.100000001490116119384765625; + if (_20) + { + division = 128.0; + } + float offset = (stepX * 129.0) * 129.0; + float iX = mod(aIndex - offset, division) + (stepX * 0.5); + float iY = floor((aIndex - offset) / division) + (stepX * 0.5); + vec4 worldPoint = vec4(_55.uPos.x - (iY * 4.166666507720947265625), _55.uPos.y - (iX * 4.166666507720947265625), aHeight, 1.0); + vChunkCoords = vec2(iX / 128.0, iY / 128.0); + vPosition = (_55.uLookAtMat * worldPoint).xyz; + gl_Position = (_55.uPMatrix * _55.uLookAtMat) * worldPoint; +} + + +#version 300 es +precision mediump float; +precision highp int; + +struct SceneExteriorLight +{ + highp vec4 uExteriorAmbientColor; + highp vec4 uExteriorHorizontAmbientColor; + highp vec4 uExteriorGroundAmbientColor; + highp vec4 uExteriorDirectColor; + highp vec4 uExteriorDirectColorDir; + highp vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + highp mat4 uLookAtMat; + highp mat4 uPMatrix; + highp vec4 uViewUp; + highp vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct InteriorLightParam +{ + highp vec4 uInteriorAmbientColorAndApplyInteriorLight; + highp vec4 uInteriorDirectColorAndApplyExteriorLight; +}; + +struct PSFog +{ + highp vec4 densityParams; + highp vec4 heightPlane; + highp vec4 color_and_heightRate; + highp vec4 heightDensity_and_endColor; + highp vec4 sunAngle_and_sunColor; + highp vec4 heightColor_and_endFogDistance; + highp vec4 sunPercentage; +}; + +const vec3 _222[14] = vec3[](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(1.0), vec3(0.5), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); +const float _229[14] = float[](0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0); + +layout(std140) uniform meshWideBlockPS +{ + highp vec4 uHeightScale; + highp vec4 uHeightOffset; + highp mat4 animationMat[4]; +} _466; + +layout(std140) uniform modelWideBlockPS +{ + ivec4 uUseHeightMixFormula; +} _506; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _748; + +uniform highp sampler2D uAlphaTexture; +uniform highp sampler2D uLayerHeight0; +uniform highp sampler2D uLayerHeight1; +uniform highp sampler2D uLayerHeight2; +uniform highp sampler2D uLayerHeight3; +uniform highp sampler2D uLayer0; +uniform highp sampler2D uLayer1; +uniform highp sampler2D uLayer2; +uniform highp sampler2D uLayer3; + +in highp vec2 vChunkCoords; +in highp vec4 vColor; +in highp vec3 vNormal; +in highp vec3 vVertexLighting; +in highp vec3 vPosition; +layout(location = 0) out highp vec4 outColor; + +highp vec4 mixTextures(highp vec4 tex0, highp vec4 tex1, highp float alpha) +{ + return ((tex1 - tex0) * alpha) + tex0; +} + +highp vec3 calcLight(highp vec3 matDiffuse, highp vec3 vNormal_1, bool applyLight, highp float interiorExteriorBlend, SceneWideParams sceneParams, InteriorLightParam intLight, highp vec3 accumLight, highp vec3 precomputedLight, highp vec3 specular, highp vec3 emissive) +{ + highp vec3 localDiffuse = accumLight; + bool _58 = !applyLight; + if (_58) + { + return matDiffuse; + } + highp vec3 lDiffuse = vec3(0.0); + highp vec3 normalizedN = normalize(vNormal_1); + bool _74 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + highp vec3 currColor; + if (_74) + { + highp float nDotL = clamp(dot(normalizedN, -sceneParams.extLight.uExteriorDirectColorDir.xyz), 0.0, 1.0); + highp float nDotUp = dot(normalizedN, sceneParams.uViewUp.xyz); + highp vec3 adjAmbient = sceneParams.extLight.uExteriorAmbientColor.xyz + precomputedLight; + highp vec3 adjHorizAmbient = sceneParams.extLight.uExteriorHorizontAmbientColor.xyz + precomputedLight; + highp vec3 adjGroundAmbient = sceneParams.extLight.uExteriorGroundAmbientColor.xyz + precomputedLight; + bool _111 = nDotUp >= 0.0; + if (_111) + { + currColor = mix(adjHorizAmbient, adjAmbient, vec3(nDotUp)); + } + else + { + currColor = mix(adjHorizAmbient, adjGroundAmbient, vec3(-nDotUp)); + } + highp vec3 skyColor = currColor * 1.10000002384185791015625; + highp vec3 groundColor = currColor * 0.699999988079071044921875; + lDiffuse = sceneParams.extLight.uExteriorDirectColor.xyz * nDotL; + currColor = mix(groundColor, skyColor, vec3(0.5 + (0.5 * nDotL))); + } + bool _151 = intLight.uInteriorAmbientColorAndApplyInteriorLight.w > 0.0; + if (_151) + { + highp float nDotL_1 = clamp(dot(normalizedN, -sceneParams.uInteriorSunDir.xyz), 0.0, 1.0); + highp vec3 lDiffuseInterior = intLight.uInteriorDirectColorAndApplyExteriorLight.xyz * nDotL_1; + highp vec3 interiorAmbient = intLight.uInteriorAmbientColorAndApplyInteriorLight.xyz + precomputedLight; + bool _175 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + if (_175) + { + lDiffuse = mix(lDiffuseInterior, lDiffuse, vec3(interiorExteriorBlend)); + currColor = mix(interiorAmbient, currColor, vec3(interiorExteriorBlend)); + } + else + { + lDiffuse = lDiffuseInterior; + currColor = interiorAmbient; + } + } + highp vec3 gammaDiffTerm = matDiffuse * (currColor + lDiffuse); + highp vec3 linearDiffTerm = (matDiffuse * matDiffuse) * localDiffuse; + highp vec3 specTerm = specular; + highp vec3 emTerm = emissive; + return (sqrt((gammaDiffTerm * gammaDiffTerm) + linearDiffTerm) + specTerm) + emTerm; +} + +highp vec3 validateFogColor(highp vec3 fogColor, int blendMode) +{ + return mix(fogColor, _222[blendMode], vec3(_229[blendMode])); +} + +highp vec4 makeFog(PSFog fogData, highp vec4 final, highp vec3 vertexInViewSpace, highp vec3 sunDirInViewSpace, int blendMode) +{ + highp vec4 l_densityParams = fogData.densityParams; + highp vec4 l_heightPlane = fogData.heightPlane; + highp vec4 l_color_and_heightRate = fogData.color_and_heightRate; + highp vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + highp float start = l_densityParams.x; + highp float end = l_densityParams.y; + highp float density = l_densityParams.z; + highp float bias = l_densityParams.w; + highp float vLength = length(vertexInViewSpace); + highp float z = vLength - bias; + highp float expMax = max(0.0, z - start); + highp float expFog = 1.0 / exp(expMax * density); + highp float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + highp float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + highp float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + highp float finalFog = mix(expFog, expFogHeight, heightFog); + highp float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + highp float alpha = 1.0; + bool _317 = blendMode == 13; + if (_317) + { + alpha = min(finalFog, endFadeFog); + } + highp vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + highp vec3 endColor = validateFogColor(param, param_1); + highp vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + highp float end2 = vLength / l_heightColor_and_endFogDistance.w; + highp float end2_cube = end2 * (end2 * end2); + highp vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + highp vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + highp vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + highp vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + highp float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + highp vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + highp vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _395 = nDotSun > 0.0; + if (_395) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + highp vec2 vTexCoord = vChunkCoords; + highp vec2 alphaCoord = vec2(vChunkCoords.x / 8.0, vChunkCoords.y / 8.0); + highp vec3 alphaBlend = texture(uAlphaTexture, alphaCoord).yzw; + highp vec2 tcLayer0 = (_466.animationMat[0] * vec4(vTexCoord, 0.0, 1.0)).xy; + highp vec2 tcLayer1 = (_466.animationMat[1] * vec4(vTexCoord, 0.0, 1.0)).xy; + highp vec2 tcLayer2 = (_466.animationMat[2] * vec4(vTexCoord, 0.0, 1.0)).xy; + highp vec2 tcLayer3 = (_466.animationMat[3] * vec4(vTexCoord, 0.0, 1.0)).xy; + bool _510 = _506.uUseHeightMixFormula.x > 0; + highp vec4 final; + if (_510) + { + highp float minusAlphaBlendSum = 1.0 - clamp(dot(alphaBlend, vec3(1.0)), 0.0, 1.0); + highp vec4 weightsVector = vec4(minusAlphaBlendSum, alphaBlend); + highp float weightedTexture_x = minusAlphaBlendSum * ((texture(uLayerHeight0, tcLayer0).w * _466.uHeightScale.x) + _466.uHeightOffset.x); + highp float weightedTexture_y = weightsVector.y * ((texture(uLayerHeight1, tcLayer1).w * _466.uHeightScale.y) + _466.uHeightOffset.y); + highp float weightedTexture_z = weightsVector.z * ((texture(uLayerHeight2, tcLayer2).w * _466.uHeightScale.z) + _466.uHeightOffset.z); + highp float weightedTexture_w = weightsVector.w * ((texture(uLayerHeight3, tcLayer3).w * _466.uHeightScale.w) + _466.uHeightOffset.w); + highp vec4 weights = vec4(weightedTexture_x, weightedTexture_y, weightedTexture_z, weightedTexture_w); + highp vec4 weights_temp = weights * (vec4(1.0) - clamp(vec4(max(max(weightedTexture_x, weightedTexture_y), max(weightedTexture_z, weightedTexture_w))) - weights, vec4(0.0), vec4(1.0))); + highp vec4 weightsNormalized = weights_temp / vec4(dot(vec4(1.0), weights_temp)); + highp vec4 weightedLayer_0 = texture(uLayer0, tcLayer0) * weightsNormalized.x; + highp vec3 matDiffuse_0 = weightedLayer_0.xyz; + highp float specBlend_0 = weightedLayer_0.w; + highp vec4 weightedLayer_1 = texture(uLayer1, tcLayer1) * weightsNormalized.y; + highp vec3 matDiffuse_1 = matDiffuse_0 + weightedLayer_1.xyz; + highp float specBlend_1 = specBlend_0 + weightedLayer_1.w; + highp vec4 weightedLayer_2 = texture(uLayer2, tcLayer2) * weightsNormalized.z; + highp vec3 matDiffuse_2 = matDiffuse_1 + weightedLayer_2.xyz; + highp float specBlend_2 = specBlend_1 + weightedLayer_2.w; + highp vec4 weightedLayer_3 = texture(uLayer3, tcLayer3) * weightsNormalized.w; + highp vec3 matDiffuse_3 = matDiffuse_2 + weightedLayer_3.xyz; + highp float specBlend_3 = specBlend_2 + weightedLayer_3.w; + final = vec4(matDiffuse_3, specBlend_3); + } + else + { + highp vec4 tex1 = texture(uLayer0, tcLayer0); + highp vec4 tex2 = texture(uLayer1, tcLayer1); + highp vec4 tex3 = texture(uLayer2, tcLayer2); + highp vec4 tex4 = texture(uLayer3, tcLayer3); + highp vec4 param = tex1; + highp vec4 param_1 = tex2; + highp float param_2 = alphaBlend.x; + highp vec4 param_3 = mixTextures(param, param_1, param_2); + highp vec4 param_4 = tex3; + highp float param_5 = alphaBlend.y; + highp vec4 param_6 = mixTextures(param_3, param_4, param_5); + highp vec4 param_7 = tex4; + highp float param_8 = alphaBlend.z; + final = mixTextures(param_6, param_7, param_8); + } + highp vec3 matDiffuse = (final.xyz * 2.0) * vColor.xyz; + highp vec3 param_9 = matDiffuse; + highp vec3 param_10 = vNormal; + bool param_11 = true; + highp float param_12 = 0.0; + SceneWideParams param_13; + param_13.uLookAtMat = _748.scene.uLookAtMat; + param_13.uPMatrix = _748.scene.uPMatrix; + param_13.uViewUp = _748.scene.uViewUp; + param_13.uInteriorSunDir = _748.scene.uInteriorSunDir; + param_13.extLight.uExteriorAmbientColor = _748.scene.extLight.uExteriorAmbientColor; + param_13.extLight.uExteriorHorizontAmbientColor = _748.scene.extLight.uExteriorHorizontAmbientColor; + param_13.extLight.uExteriorGroundAmbientColor = _748.scene.extLight.uExteriorGroundAmbientColor; + param_13.extLight.uExteriorDirectColor = _748.scene.extLight.uExteriorDirectColor; + param_13.extLight.uExteriorDirectColorDir = _748.scene.extLight.uExteriorDirectColorDir; + param_13.extLight.adtSpecMult = _748.scene.extLight.adtSpecMult; + InteriorLightParam param_14 = InteriorLightParam(vec4(0.0), vec4(0.0, 0.0, 0.0, 1.0)); + highp vec3 param_15 = vVertexLighting; + highp vec4 finalColor = vec4(calcLight(param_9, param_10, param_11, param_12, param_13, param_14, param_15, vec3(0.0), vec3(0.0), vec3(0.0)), 1.0); + highp float specBlend = final.w; + highp vec3 halfVec = -normalize(_748.scene.extLight.uExteriorDirectColorDir.xyz + normalize(vPosition)); + highp vec3 lSpecular = _748.scene.extLight.uExteriorDirectColor.xyz * pow(max(0.0, dot(halfVec, vNormal)), 20.0); + highp vec3 specTerm = (vec3(specBlend) * lSpecular) * _748.scene.extLight.adtSpecMult.x; + highp vec3 _831 = finalColor.xyz + specTerm; + finalColor = vec4(_831.x, _831.y, _831.z, finalColor.w); + PSFog arg; + arg.densityParams = _748.fogData.densityParams; + arg.heightPlane = _748.fogData.heightPlane; + arg.color_and_heightRate = _748.fogData.color_and_heightRate; + arg.heightDensity_and_endColor = _748.fogData.heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _748.fogData.sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _748.fogData.heightColor_and_endFogDistance; + arg.sunPercentage = _748.fogData.sunPercentage; + highp vec4 param_16 = finalColor; + highp vec3 param_17 = vPosition; + highp vec3 param_18 = _748.scene.extLight.uExteriorDirectColorDir.xyz; + int param_19 = 0; + finalColor = makeFog(arg, param_16, param_17, param_18, param_19); + finalColor.w = 1.0; + outColor = finalColor; +} + + +#version 300 es + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _91; + +layout(std140) uniform meshWideBlockVS +{ + vec4 uPos; +} _139; + +layout(location = 4) in float aIndex; +layout(location = 0) in vec3 aHeight; +out vec2 vChunkCoords; +out vec3 vPosition; +out vec4 vColor; +layout(location = 1) in vec4 aColor; +out vec3 vVertexLighting; +layout(location = 2) in vec4 aVertexLighting; +out vec3 vNormal; +layout(location = 3) in vec3 aNormal; + +mat3 blizzTranspose(mat4 value) +{ + return mat3(vec3(value[0].xyz), vec3(value[1].xyz), vec3(value[2].xyz)); +} + +void main() +{ + float iX = mod(aIndex, 17.0); + float iY = floor(aIndex / 17.0); + bool _61 = iX > 8.0100002288818359375; + if (_61) + { + iY += 0.5; + iX -= 8.5; + } + vec4 worldPoint = vec4(aHeight, 1.0); + vChunkCoords = vec2(iX, iY); + vPosition = (_91.scene.uLookAtMat * worldPoint).xyz; + vColor = aColor; + vVertexLighting = aVertexLighting.xyz; + mat4 param = _91.scene.uLookAtMat; + vNormal = blizzTranspose(param) * aNormal; + gl_Position = (_91.scene.uPMatrix * _91.scene.uLookAtMat) * worldPoint; +} + + +#version 300 es +precision mediump float; +precision highp int; + +layout(std140) uniform modelWideBlockVS +{ + highp mat4 uPlacementMat; + highp vec4 uBBScale; + highp vec4 uBBCenter; + highp vec4 uColor; +} _13; + +layout(location = 0) out highp vec4 outColor; + +void main() +{ + highp vec4 finalColor = _13.uColor; + outColor = finalColor; +} + + +#version 300 es + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +layout(std140) uniform modelWideBlockVS +{ + mat4 uPlacementMat; + vec4 uBBScale; + vec4 uBBCenter; + vec4 uColor; +} _21; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _62; + +layout(location = 0) in vec3 aPosition; + +void main() +{ + vec4 worldPoint = vec4((aPosition.x * _21.uBBScale.x) + _21.uBBCenter.x, (aPosition.y * _21.uBBScale.y) + _21.uBBCenter.y, (aPosition.z * _21.uBBScale.z) + _21.uBBCenter.z, 1.0); + gl_Position = ((_62.scene.uPMatrix * _62.scene.uLookAtMat) * _21.uPlacementMat) * worldPoint; +} + + +#version 300 es +precision mediump float; +precision highp int; + +layout(std140) uniform meshWideBlockPS +{ + int drawDepth; + highp float uFarPlane; + highp float uNearPlane; +} _10; + +uniform highp sampler2D diffuse; + +in highp vec2 texCoord; +layout(location = 0) out highp vec4 fragColor; + +void main() +{ + bool _17 = _10.drawDepth == 1; + highp vec4 finalColor; + if (_17) + { + highp float f = _10.uFarPlane; + highp float n = _10.uNearPlane; + highp float z = (2.0 * n) / ((f + n) - (texture(diffuse, texCoord).x * (f - n))); + finalColor = vec4(z, z, z, 255.0); + } + else + { + finalColor = vec4(texture(diffuse, texCoord).xyz, 255.0); + } + fragColor = finalColor; +} + + +#version 300 es +precision mediump float; +precision highp int; + +layout(std140) uniform meshWideBlockPS +{ + highp vec3 uColor; +} _22; + +layout(location = 0) out highp vec4 fragColor; + +void main() +{ + highp vec4 finalColor = vec4(1.0); + finalColor.w = 1.0; + fragColor = finalColor; +} + + +#version 300 es + +layout(std140) uniform sceneWideBlockVSPS +{ + mat4 uLookAtMat; + mat4 uPMatrix; +} _13; + +layout(location = 0) in vec3 aPosition; + +void main() +{ + vec4 c_world = inverse(_13.uPMatrix) * vec4(aPosition, 1.0); + c_world = (c_world * 1.0) / vec4(c_world.w); + gl_Position = (_13.uPMatrix * _13.uLookAtMat) * vec4(c_world.xyz, 1.0); +} + + +#version 300 es +precision mediump float; +precision highp int; + +layout(std140) uniform modelWideBlockPS +{ + highp vec3 uColor; +} _19; + +layout(location = 0) out highp vec4 fragColor; + +void main() +{ + highp vec4 finalColor = vec4(1.0, 1.0, 0.0, 1.0); + fragColor = finalColor; +} + + +#version 300 es + +layout(std140) uniform sceneWideBlockVSPS +{ + mat4 uLookAtMat; + mat4 uPMatrix; +} _19; + +layout(location = 0) in vec2 aPosition; + +void main() +{ + gl_Position = (_19.uPMatrix * _19.uLookAtMat) * vec4(aPosition, 0.0, 1.0); +} + + +#version 300 es +precision mediump float; +precision highp int; + +layout(std140) uniform modelWideBlockVS +{ + highp vec3 uColor; +} _13; + +layout(location = 0) out highp vec4 fragColor; +in highp vec4 vPos; + +void main() +{ + fragColor = vec4(_13.uColor, 1.0); +} + + +#version 300 es + +layout(std140) uniform sceneWideBlockVSPS +{ + mat4 uLookAtMat; + mat4 uPMatrix; +} _19; + +layout(std140) uniform modelWideBlockVS +{ + mat4 uPlacementMat; +} _29; + +layout(location = 0) in vec3 aPosition; +out vec4 vPos; + +void main() +{ + gl_Position = ((_19.uPMatrix * _19.uLookAtMat) * _29.uPlacementMat) * vec4(aPosition, 1.0); + gl_PointSize = 10.0; +} + + +#version 300 es +precision mediump float; +precision highp int; + +layout(std140) uniform meshWideBlockPS +{ + highp vec4 uColor; +} _12; + +layout(location = 0) out highp vec4 fragColor; + +void main() +{ + highp vec4 finalColor = _12.uColor; + fragColor = finalColor; +} + + +#version 300 es + +layout(std140) uniform sceneWideBlockVSPS +{ + mat4 uLookAtMat; + mat4 uPMatrix; +} _30; + +layout(location = 0) in vec3 aPosition; + +void main() +{ + vec4 worldPoint = vec4(aPosition, 1.0); + gl_Position = (_30.uPMatrix * _30.uLookAtMat) * worldPoint; +} + + +#version 300 es + +layout(std140) uniform meshWideBlockVS +{ + vec4 uWidth_uHeight_uX_uY; +} _12; + +out vec2 texCoord; +layout(location = 0) in vec2 position; + +void main() +{ + float uWidth = _12.uWidth_uHeight_uX_uY.x; + float uHeight = _12.uWidth_uHeight_uX_uY.y; + float uX = _12.uWidth_uHeight_uX_uY.z; + float uY = _12.uWidth_uHeight_uX_uY.w; + texCoord = (position * 0.5) + vec2(0.5); + gl_Position = vec4((((((position.x + 1.0) / 2.0) * uWidth) + uX) * 2.0) - 1.0, (((((position.y + 1.0) / 2.0) * uHeight) + uY) * 2.0) - 1.0, 0.5, 1.0); +} + + +#version 300 es +precision mediump float; +precision highp int; + +layout(std140) uniform meshWideBlockPS +{ + highp vec4 texOffsetX; + highp vec4 texOffsetY; +} _33; + +uniform highp sampler2D texture0; + +in highp vec2 texCoord; +layout(location = 0) out highp vec4 out_result; + +void main() +{ + highp vec2 tex_offset = vec2(0.001000000047497451305389404296875); + highp vec3 result = texture(texture0, texCoord).xyz * 0.0; + result = vec3(0.0); + result += (texture(texture0, texCoord + vec2(_33.texOffsetX.x * tex_offset.x, _33.texOffsetY.x * tex_offset.y)).xyz * 0.125); + result += (texture(texture0, texCoord + vec2(_33.texOffsetX.y * tex_offset.x, _33.texOffsetY.y * tex_offset.y)).xyz * 0.375); + result += (texture(texture0, texCoord + vec2(_33.texOffsetX.z * tex_offset.x, _33.texOffsetY.z * tex_offset.y)).xyz * 0.375); + result += (texture(texture0, texCoord + vec2(_33.texOffsetX.w * tex_offset.x, _33.texOffsetY.w * tex_offset.y)).xyz * 0.125); + out_result = vec4(result, 1.0); +} + + +#version 300 es +precision mediump float; +precision highp int; + +layout(std140) uniform meshWideBlockPS +{ + highp vec4 blurAmount; +} _34; + +uniform highp sampler2D screenTex; +uniform highp sampler2D blurTex; + +in highp vec2 texCoord; +layout(location = 0) out highp vec4 Out_Color; + +void main() +{ + highp vec4 screen = texture(screenTex, texCoord); + highp vec3 blurred = texture(blurTex, texCoord).xyz; + highp vec3 mixed = mix(screen.xyz, blurred, vec3(_34.blurAmount.z)); + highp vec3 glow = (blurred * blurred) * _34.blurAmount.w; + Out_Color = vec4(mixed + glow, screen.w); +} + + +#version 300 es +precision mediump float; +precision highp int; + +uniform highp sampler2D Texture; + +layout(location = 0) out highp vec4 Out_Color; +in highp vec4 Frag_Color; +in highp vec2 Frag_UV; + +void main() +{ + Out_Color = Frag_Color * texture(Texture, Frag_UV); +} + + +#version 300 es + +layout(std140) uniform modelWideBlockVS +{ + mat4 ProjMtx; + vec4 uiScale; +} _30; + +out vec2 Frag_UV; +layout(location = 1) in vec2 UV; +out vec4 Frag_Color; +layout(location = 2) in vec4 Color; +layout(location = 0) in vec2 Position; + +void main() +{ + Frag_UV = UV; + Frag_Color = Color; + gl_Position = _30.ProjMtx * vec4(Position * _30.uiScale.x, 0.0, 1.0); +} + + +#version 300 es +precision mediump float; +precision highp int; + +struct PSFog +{ + highp vec4 densityParams; + highp vec4 heightPlane; + highp vec4 color_and_heightRate; + highp vec4 heightDensity_and_endColor; + highp vec4 sunAngle_and_sunColor; + highp vec4 heightColor_and_endFogDistance; + highp vec4 sunPercentage; +}; + +const vec3 _37[14] = vec3[](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(1.0), vec3(0.5), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); +const float _44[14] = float[](0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0); + +struct SceneExteriorLight +{ + highp vec4 uExteriorAmbientColor; + highp vec4 uExteriorHorizontAmbientColor; + highp vec4 uExteriorGroundAmbientColor; + highp vec4 uExteriorDirectColor; + highp vec4 uExteriorDirectColorDir; + highp vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + highp mat4 uLookAtMat; + highp mat4 uPMatrix; + highp vec4 uViewUp; + highp vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +layout(std140) uniform meshWideBlockPS +{ + highp vec4 uAlphaTestv; + ivec4 uPixelShaderBlendModev; +} _277; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _485; + +uniform highp sampler2D uTexture; +uniform highp sampler2D uTexture2; +uniform highp sampler2D uTexture3; + +in highp vec2 vTexcoord0; +in highp vec2 vTexcoord1; +in highp vec2 vTexcoord2; +in highp vec4 vColor; +in highp vec3 vPosition; +layout(location = 0) out highp vec4 outputColor; + +highp vec3 validateFogColor(highp vec3 fogColor, int blendMode) +{ + return mix(fogColor, _37[blendMode], vec3(_44[blendMode])); +} + +highp vec4 makeFog(PSFog fogData, highp vec4 final, highp vec3 vertexInViewSpace, highp vec3 sunDirInViewSpace, int blendMode) +{ + highp vec4 l_densityParams = fogData.densityParams; + highp vec4 l_heightPlane = fogData.heightPlane; + highp vec4 l_color_and_heightRate = fogData.color_and_heightRate; + highp vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + highp float start = l_densityParams.x; + highp float end = l_densityParams.y; + highp float density = l_densityParams.z; + highp float bias = l_densityParams.w; + highp float vLength = length(vertexInViewSpace); + highp float z = vLength - bias; + highp float expMax = max(0.0, z - start); + highp float expFog = 1.0 / exp(expMax * density); + highp float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + highp float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + highp float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + highp float finalFog = mix(expFog, expFogHeight, heightFog); + highp float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + highp float alpha = 1.0; + bool _139 = blendMode == 13; + if (_139) + { + alpha = min(finalFog, endFadeFog); + } + highp vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + highp vec3 endColor = validateFogColor(param, param_1); + highp vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + highp float end2 = vLength / l_heightColor_and_endFogDistance.w; + highp float end2_cube = end2 * (end2 * end2); + highp vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + highp vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + highp vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + highp vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + highp float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + highp vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + highp vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _218 = nDotSun > 0.0; + if (_218) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + highp vec4 tex = texture(uTexture, vTexcoord0); + highp vec4 tex2 = texture(uTexture2, vTexcoord1); + highp vec4 tex3 = texture(uTexture3, vTexcoord2); + highp float uAlphaTest = _277.uAlphaTestv.x; + bool _284 = tex.w < uAlphaTest; + if (_284) + { + discard; + } + highp vec4 finalColor = vec4((tex * vColor).xyz, tex.w * vColor.w); + int uNonOptPixelShader = _277.uPixelShaderBlendModev.x; + bool _310 = uNonOptPixelShader == 0; + if (_310) + { + highp vec3 matDiffuse = vColor.xyz * tex.xyz; + finalColor = vec4(matDiffuse, tex.w * vColor.w); + } + else + { + bool _331 = uNonOptPixelShader == 1; + if (_331) + { + highp vec4 textureMod = tex * tex2; + highp float texAlpha = textureMod.w * tex3.w; + highp float opacity = texAlpha * vColor.w; + highp vec3 matDiffuse_1 = vColor.xyz * textureMod.xyz; + finalColor = vec4(matDiffuse_1, opacity); + } + else + { + bool _363 = uNonOptPixelShader == 2; + if (_363) + { + highp vec4 textureMod_1 = (tex * tex2) * tex3; + highp float texAlpha_1 = textureMod_1.w; + highp float opacity_1 = texAlpha_1 * vColor.w; + highp vec3 matDiffuse_2 = vColor.xyz * textureMod_1.xyz; + finalColor = vec4(matDiffuse_2, opacity_1); + } + else + { + bool _394 = uNonOptPixelShader == 3; + if (_394) + { + highp vec4 textureMod_2 = (tex * tex2) * tex3; + highp float texAlpha_2 = textureMod_2.w; + highp float opacity_2 = texAlpha_2 * vColor.w; + highp vec3 matDiffuse_3 = vColor.xyz * textureMod_2.xyz; + finalColor = vec4(matDiffuse_3, opacity_2); + } + else + { + bool _425 = uNonOptPixelShader == 4; + if (_425) + { + highp float t0_973 = tex.x; + highp float t1_978 = tex2.y; + highp float t2_983 = tex3.z; + highp float textureMod_986 = ((t0_973 * t1_978) * t2_983) * 4.0; + highp float depthScale_991 = 1.0 - clamp(vPosition.z * 0.00999999977648258209228515625, 0.0, 1.0); + highp float textureMod_992 = textureMod_986 * depthScale_991; + highp float height_995 = textureMod_992 * vColor.x; + highp float alpha_997 = textureMod_992 * vColor.w; + finalColor = vec4(height_995, 0.0, 0.0, alpha_997); + } + } + } + } + } + bool _474 = finalColor.w < uAlphaTest; + if (_474) + { + discard; + } + highp vec3 sunDir = _485.scene.extLight.uExteriorDirectColorDir.xyz; + PSFog arg; + arg.densityParams = _485.fogData.densityParams; + arg.heightPlane = _485.fogData.heightPlane; + arg.color_and_heightRate = _485.fogData.color_and_heightRate; + arg.heightDensity_and_endColor = _485.fogData.heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _485.fogData.sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _485.fogData.heightColor_and_endFogDistance; + arg.sunPercentage = _485.fogData.sunPercentage; + highp vec4 param = finalColor; + highp vec3 param_1 = vPosition; + highp vec3 param_2 = sunDir; + int param_3 = _277.uPixelShaderBlendModev.y; + finalColor = makeFog(arg, param, param_1, param_2, param_3); + outputColor = finalColor; +} + + +#version 300 es + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _43; + +layout(location = 0) in vec3 aPosition; +out vec4 vColor; +layout(location = 1) in vec4 aColor; +out vec2 vTexcoord0; +layout(location = 2) in vec2 aTexcoord0; +out vec2 vTexcoord1; +layout(location = 3) in vec2 aTexcoord1; +out vec2 vTexcoord2; +layout(location = 4) in vec2 aTexcoord2; +out vec3 vPosition; + +void main() +{ + vec4 aPositionVec4 = vec4(aPosition, 1.0); + vColor = aColor; + vTexcoord0 = aTexcoord0; + vTexcoord1 = aTexcoord1; + vTexcoord2 = aTexcoord2; + vec4 vertexViewSpace = _43.scene.uLookAtMat * aPositionVec4; + vPosition = vertexViewSpace.xyz; + gl_Position = _43.scene.uPMatrix * vertexViewSpace; +} + + +#version 300 es +precision mediump float; +precision highp int; + +struct SceneExteriorLight +{ + highp vec4 uExteriorAmbientColor; + highp vec4 uExteriorHorizontAmbientColor; + highp vec4 uExteriorGroundAmbientColor; + highp vec4 uExteriorDirectColor; + highp vec4 uExteriorDirectColorDir; + highp vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + highp mat4 uLookAtMat; + highp mat4 uPMatrix; + highp vec4 uViewUp; + highp vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct InteriorLightParam +{ + highp vec4 uInteriorAmbientColorAndApplyInteriorLight; + highp vec4 uInteriorDirectColorAndApplyExteriorLight; +}; + +struct PSFog +{ + highp vec4 densityParams; + highp vec4 heightPlane; + highp vec4 color_and_heightRate; + highp vec4 heightDensity_and_endColor; + highp vec4 sunAngle_and_sunColor; + highp vec4 heightColor_and_endFogDistance; + highp vec4 sunPercentage; +}; + +const vec3 _216[14] = vec3[](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(1.0), vec3(0.5), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); +const float _223[14] = float[](0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0); + +struct LocalLight +{ + highp vec4 color; + highp vec4 position; + highp vec4 attenuation; +}; + +layout(std140) uniform meshWideBlockPS +{ + ivec4 PixelShader_UnFogged_IsAffectedByLight_blendMode; + highp vec4 uFogColorAndAlphaTest; + highp vec4 uTexSampleAlpha; + highp vec4 uPcColor; +} _473; + +layout(std140) uniform modelWideBlockPS +{ + InteriorLightParam intLight; + LocalLight pc_lights[4]; + ivec4 lightCountAndBcHack; + highp vec4 interiorExteriorBlend; +} _496; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _535; + +layout(std140) uniform modelWideBlockVS +{ + highp mat4 uPlacementMat; + highp mat4 uBoneMatrixes[220]; +} _543; + +uniform highp sampler2D uTexture; +uniform highp sampler2D uTexture2; +uniform highp sampler2D uTexture3; +uniform highp sampler2D uTexture4; + +in highp vec2 vTexCoord; +in highp vec2 vTexCoord2; +in highp vec2 vTexCoord3; +in highp vec4 vDiffuseColor; +in highp vec3 vPosition; +in highp vec3 vNormal; +layout(location = 0) out highp vec4 outputColor; + +highp vec3 calcLight(highp vec3 matDiffuse, highp vec3 vNormal_1, bool applyLight, highp float interiorExteriorBlend, SceneWideParams sceneParams, InteriorLightParam intLight, highp vec3 accumLight, highp vec3 precomputedLight, highp vec3 specular, highp vec3 emissive) +{ + highp vec3 localDiffuse = accumLight; + bool _52 = !applyLight; + if (_52) + { + return matDiffuse; + } + highp vec3 lDiffuse = vec3(0.0); + highp vec3 normalizedN = normalize(vNormal_1); + bool _68 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + highp vec3 currColor; + if (_68) + { + highp float nDotL = clamp(dot(normalizedN, -sceneParams.extLight.uExteriorDirectColorDir.xyz), 0.0, 1.0); + highp float nDotUp = dot(normalizedN, sceneParams.uViewUp.xyz); + highp vec3 adjAmbient = sceneParams.extLight.uExteriorAmbientColor.xyz + precomputedLight; + highp vec3 adjHorizAmbient = sceneParams.extLight.uExteriorHorizontAmbientColor.xyz + precomputedLight; + highp vec3 adjGroundAmbient = sceneParams.extLight.uExteriorGroundAmbientColor.xyz + precomputedLight; + bool _105 = nDotUp >= 0.0; + if (_105) + { + currColor = mix(adjHorizAmbient, adjAmbient, vec3(nDotUp)); + } + else + { + currColor = mix(adjHorizAmbient, adjGroundAmbient, vec3(-nDotUp)); + } + highp vec3 skyColor = currColor * 1.10000002384185791015625; + highp vec3 groundColor = currColor * 0.699999988079071044921875; + lDiffuse = sceneParams.extLight.uExteriorDirectColor.xyz * nDotL; + currColor = mix(groundColor, skyColor, vec3(0.5 + (0.5 * nDotL))); + } + bool _145 = intLight.uInteriorAmbientColorAndApplyInteriorLight.w > 0.0; + if (_145) + { + highp float nDotL_1 = clamp(dot(normalizedN, -sceneParams.uInteriorSunDir.xyz), 0.0, 1.0); + highp vec3 lDiffuseInterior = intLight.uInteriorDirectColorAndApplyExteriorLight.xyz * nDotL_1; + highp vec3 interiorAmbient = intLight.uInteriorAmbientColorAndApplyInteriorLight.xyz + precomputedLight; + bool _169 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + if (_169) + { + lDiffuse = mix(lDiffuseInterior, lDiffuse, vec3(interiorExteriorBlend)); + currColor = mix(interiorAmbient, currColor, vec3(interiorExteriorBlend)); + } + else + { + lDiffuse = lDiffuseInterior; + currColor = interiorAmbient; + } + } + highp vec3 gammaDiffTerm = matDiffuse * (currColor + lDiffuse); + highp vec3 linearDiffTerm = (matDiffuse * matDiffuse) * localDiffuse; + highp vec3 specTerm = specular; + highp vec3 emTerm = emissive; + return (sqrt((gammaDiffTerm * gammaDiffTerm) + linearDiffTerm) + specTerm) + emTerm; +} + +highp vec3 validateFogColor(highp vec3 fogColor, int blendMode) +{ + return mix(fogColor, _216[blendMode], vec3(_223[blendMode])); +} + +highp vec4 makeFog(PSFog fogData, highp vec4 final, highp vec3 vertexInViewSpace, highp vec3 sunDirInViewSpace, int blendMode) +{ + highp vec4 l_densityParams = fogData.densityParams; + highp vec4 l_heightPlane = fogData.heightPlane; + highp vec4 l_color_and_heightRate = fogData.color_and_heightRate; + highp vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + highp float start = l_densityParams.x; + highp float end = l_densityParams.y; + highp float density = l_densityParams.z; + highp float bias = l_densityParams.w; + highp float vLength = length(vertexInViewSpace); + highp float z = vLength - bias; + highp float expMax = max(0.0, z - start); + highp float expFog = 1.0 / exp(expMax * density); + highp float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + highp float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + highp float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + highp float finalFog = mix(expFog, expFogHeight, heightFog); + highp float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + highp float alpha = 1.0; + bool _311 = blendMode == 13; + if (_311) + { + alpha = min(finalFog, endFadeFog); + } + highp vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + highp vec3 endColor = validateFogColor(param, param_1); + highp vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + highp float end2 = vLength / l_heightColor_and_endFogDistance.w; + highp float end2_cube = end2 * (end2 * end2); + highp vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + highp vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + highp vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + highp vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + highp float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + highp vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + highp vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _389 = nDotSun > 0.0; + if (_389) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + highp vec2 texCoord = vTexCoord; + highp vec2 texCoord2 = vTexCoord2; + highp vec2 texCoord3 = vTexCoord3; + highp vec4 tex = texture(uTexture, texCoord); + highp vec4 tex2 = texture(uTexture2, texCoord2); + highp vec4 tex3 = texture(uTexture3, texCoord3); + highp vec4 tex2WithTextCoord1 = texture(uTexture2, texCoord); + highp vec4 tex3WithTextCoord1 = texture(uTexture3, texCoord); + highp vec4 tex4WithTextCoord2 = texture(uTexture4, texCoord2); + highp vec4 finalColor = vec4(0.0); + highp vec4 meshResColor = vDiffuseColor; + bool _477 = _473.PixelShader_UnFogged_IsAffectedByLight_blendMode.z == 1; + highp vec3 accumLight; + if (_477) + { + highp vec3 vPos3 = vPosition; + highp vec3 vNormal3 = normalize(vNormal); + highp vec3 lightColor = vec3(0.0); + int count = int(_496.pc_lights[0].attenuation.w); + LocalLight lightRecord; + for (int index = 0; index < 4; index++) + { + bool _512 = index >= _496.lightCountAndBcHack.x; + if (_512) + { + break; + } + lightRecord.color = _496.pc_lights[index].color; + lightRecord.position = _496.pc_lights[index].position; + lightRecord.attenuation = _496.pc_lights[index].attenuation; + highp vec3 vectorToLight = (_535.scene.uLookAtMat * (_543.uPlacementMat * lightRecord.position)).xyz - vPos3; + highp float distanceToLightSqr = dot(vectorToLight, vectorToLight); + highp float distanceToLightInv = inversesqrt(distanceToLightSqr); + highp float distanceToLight = distanceToLightSqr * distanceToLightInv; + highp float diffuseTerm1 = max(dot(vectorToLight, vNormal3) * distanceToLightInv, 0.0); + highp vec4 attenuationRec = lightRecord.attenuation; + highp float attenuation = 1.0 - clamp((distanceToLight - attenuationRec.x) * (1.0 / (attenuationRec.z - attenuationRec.x)), 0.0, 1.0); + highp vec3 attenuatedColor = lightRecord.color.xyz * attenuation; + lightColor += vec3((attenuatedColor * attenuatedColor) * diffuseTerm1); + } + highp vec3 _610 = clamp(lightColor, vec3(0.0), vec3(1.0)); + meshResColor = vec4(_610.x, _610.y, _610.z, meshResColor.w); + accumLight = mix(lightColor, meshResColor.xyz, vec3(float(_496.lightCountAndBcHack.y))); + } + highp float finalOpacity = 0.0; + highp vec3 specular = vec3(0.0); + highp vec3 visParams = vec3(1.0); + highp vec4 genericParams[3]; + genericParams[0] = vec4(1.0); + genericParams[1] = vec4(1.0); + genericParams[2] = vec4(1.0); + bool canDiscard = false; + highp float discardAlpha = 1.0; + int uPixelShader = _473.PixelShader_UnFogged_IsAffectedByLight_blendMode.x; + bool _639 = uPixelShader == 0; + highp vec3 matDiffuse; + #if (FRAGMENTSHADER == 0) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + #endif + bool _652 = uPixelShader == 1; + #if (FRAGMENTSHADER == 1) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _666 = uPixelShader == 2; + #if (FRAGMENTSHADER == 2) + matDiffuse = ((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz; + discardAlpha = tex2.w; + canDiscard = true; + #endif + bool _682 = uPixelShader == 3; + #if (FRAGMENTSHADER == 3) + matDiffuse = (((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz) * 2.0; + discardAlpha = tex2.w * 2.0; + canDiscard = true; + #endif + bool _700 = uPixelShader == 4; + #if (FRAGMENTSHADER == 4) + matDiffuse = (((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz) * 2.0; + #endif + bool _715 = uPixelShader == 5; + #if (FRAGMENTSHADER == 5) + matDiffuse = ((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz; + #endif + bool _729 = uPixelShader == 6; + #if (FRAGMENTSHADER == 6) + matDiffuse = ((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz; + discardAlpha = tex.w * tex2.w; + canDiscard = true; + #endif + bool _749 = uPixelShader == 7; + #if (FRAGMENTSHADER == 7) + matDiffuse = (((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz) * 2.0; + discardAlpha = (tex.w * tex2.w) * 2.0; + canDiscard = true; + #endif + bool _771 = uPixelShader == 8; + #if (FRAGMENTSHADER == 8) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w + tex2.w; + canDiscard = true; + specular = tex2.xyz; + #endif + bool _790 = uPixelShader == 9; + #if (FRAGMENTSHADER == 9) + matDiffuse = (((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz) * 2.0; + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _808 = uPixelShader == 10; + #if (FRAGMENTSHADER == 10) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w; + canDiscard = true; + specular = tex2.xyz; + #endif + bool _824 = uPixelShader == 11; + #if (FRAGMENTSHADER == 11) + matDiffuse = ((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz; + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _841 = uPixelShader == 12; + #if (FRAGMENTSHADER == 12) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix((tex.xyz * tex2.xyz) * 2.0, tex.xyz, vec3(tex.w)); + #endif + bool _862 = uPixelShader == 13; + #if (FRAGMENTSHADER == 13) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + specular = tex2.xyz * tex2.w; + #endif + bool _879 = uPixelShader == 14; + #if (FRAGMENTSHADER == 14) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + specular = (tex2.xyz * tex2.w) * (1.0 - tex.w); + #endif + bool _900 = uPixelShader == 15; + #if (FRAGMENTSHADER == 15) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix((tex.xyz * tex2.xyz) * 2.0, tex.xyz, vec3(tex.w)); + specular = (tex3.xyz * tex3.w) * _473.uTexSampleAlpha.z; + #endif + bool _930 = uPixelShader == 16; + #if (FRAGMENTSHADER == 16) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w; + canDiscard = true; + specular = tex2.xyz * tex2.w; + #endif + bool _949 = uPixelShader == 17; + #if (FRAGMENTSHADER == 17) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w + (tex2.w * (((0.300000011920928955078125 * tex2.x) + (0.589999973773956298828125 * tex2.y)) + (0.10999999940395355224609375 * tex2.z))); + canDiscard = true; + specular = (tex2.xyz * tex2.w) * (1.0 - tex.w); + #endif + bool _990 = uPixelShader == 18; + #if (FRAGMENTSHADER == 18) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(mix(tex.xyz, tex2.xyz, vec3(tex2.w)), tex.xyz, vec3(tex.w)); + #endif + bool _1014 = uPixelShader == 19; + #if (FRAGMENTSHADER == 19) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix((tex.xyz * tex2.xyz) * 2.0, tex3.xyz, vec3(tex3.w)); + #endif + bool _1036 = uPixelShader == 20; + #if (FRAGMENTSHADER == 20) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + specular = (tex2.xyz * tex2.w) * _473.uTexSampleAlpha.y; + #endif + bool _1056 = uPixelShader == 21; + #if (FRAGMENTSHADER == 21) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w + tex2.w; + canDiscard = true; + specular = tex2.xyz * (1.0 - tex.w); + #endif + bool _1079 = uPixelShader == 22; + #if (FRAGMENTSHADER == 22) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(tex.xyz * tex2.xyz, tex.xyz, vec3(tex.w)); + #endif + bool _1100 = uPixelShader == 23; + #if (FRAGMENTSHADER == 23) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w; + canDiscard = true; + specular = (tex2.xyz * tex2.w) * _473.uTexSampleAlpha.y; + #endif + bool _1122 = uPixelShader == 24; + #if (FRAGMENTSHADER == 24) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(tex.xyz, tex2.xyz, vec3(tex2.w)); + specular = (tex.xyz * tex.w) * _473.uTexSampleAlpha.x; + #endif + bool _1148 = uPixelShader == 25; + #if (FRAGMENTSHADER == 25) + highp float glowOpacity = clamp(tex3.w * _473.uTexSampleAlpha.z, 0.0, 1.0); + matDiffuse = ((vDiffuseColor.xyz * 2.0) * mix((tex.xyz * tex2.xyz) * 2.0, tex.xyz, vec3(tex.w))) * (1.0 - glowOpacity); + specular = tex3.xyz * glowOpacity; + #endif + bool _1184 = uPixelShader == 26; + #if (FRAGMENTSHADER == 26) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(mix(tex, tex2WithTextCoord1, vec4(clamp(_473.uTexSampleAlpha.y, 0.0, 1.0))), tex3WithTextCoord1, vec4(clamp(_473.uTexSampleAlpha.z, 0.0, 1.0))).xyz; + discardAlpha = mix(mix(tex, tex2WithTextCoord1, vec4(clamp(_473.uTexSampleAlpha.y, 0.0, 1.0))), tex3WithTextCoord1, vec4(clamp(_473.uTexSampleAlpha.z, 0.0, 1.0))).w; + canDiscard = true; + #endif + bool _1222 = uPixelShader == 27; + #if (FRAGMENTSHADER == 27) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(mix((tex.xyz * tex2.xyz) * 2.0, tex3.xyz, vec3(tex3.w)), tex.xyz, vec3(tex.w)); + #endif + bool _1250 = uPixelShader == 28; + #if (FRAGMENTSHADER == 28) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(mix(tex, tex2WithTextCoord1, vec4(clamp(_473.uTexSampleAlpha.y, 0.0, 1.0))), tex3WithTextCoord1, vec4(clamp(_473.uTexSampleAlpha.z, 0.0, 1.0))).xyz; + discardAlpha = mix(mix(tex, tex2WithTextCoord1, vec4(clamp(_473.uTexSampleAlpha.y, 0.0, 1.0))), tex3WithTextCoord1, vec4(clamp(_473.uTexSampleAlpha.z, 0.0, 1.0))).w * tex4WithTextCoord2.w; + canDiscard = true; + #endif + bool _1291 = uPixelShader == 29; + #if (FRAGMENTSHADER == 29) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(tex.xyz, tex2.xyz, vec3(tex2.w)); + #endif + bool _1309 = uPixelShader == 30; + #if (FRAGMENTSHADER == 30) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(tex.xyz * mix(genericParams[0].xyz, tex2.xyz * genericParams[1].xyz, vec3(tex2.w)), tex3.xyz * genericParams[2].xyz, vec3(tex3.w)); + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _1347 = uPixelShader == 31; + #if (FRAGMENTSHADER == 31) + matDiffuse = ((vDiffuseColor.xyz * 2.0) * tex.xyz) * mix(genericParams[0].xyz, tex2.xyz * genericParams[1].xyz, vec3(tex2.w)); + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _1375 = uPixelShader == 32; + #if (FRAGMENTSHADER == 32) + matDiffuse = (vDiffuseColor.xyz * 2.0) * mix(tex.xyz * mix(genericParams[0].xyz, tex2.xyz * genericParams[1].xyz, vec3(tex2.w)), tex3.xyz * genericParams[2].xyz, vec3(tex3.w)); + #endif + bool _1411 = uPixelShader == 33; + #if (FRAGMENTSHADER == 33) + matDiffuse = (vDiffuseColor.xyz * 2.0) * tex.xyz; + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _1425 = uPixelShader == 34; + #if (FRAGMENTSHADER == 34) + discardAlpha = tex.w; + canDiscard = true; + #endif + bool _1433 = uPixelShader == 35; + #if (FRAGMENTSHADER == 35) + matDiffuse = (vDiffuseColor.xyz * 2.0) * (((tex * tex2) * tex3) * genericParams[0]).xyz; + discardAlpha = (((tex * tex2) * tex3) * genericParams[0]).w; + canDiscard = true; + #endif + bool _1461 = uPixelShader == 36; + #if (FRAGMENTSHADER == 36) + matDiffuse = ((vDiffuseColor.xyz * 2.0) * tex.xyz) * tex2.xyz; + discardAlpha = tex.w * tex2.w; + canDiscard = true; + #endif + int blendMode = _473.PixelShader_UnFogged_IsAffectedByLight_blendMode.w; + bool _1482 = blendMode == 13; + if (_1482) + { + finalOpacity = discardAlpha * vDiffuseColor.w; + } + else + { + bool _1492 = blendMode == 1; + if (_1492) + { + finalOpacity = vDiffuseColor.w; + bool _1501 = canDiscard && (discardAlpha < 0.501960813999176025390625); + if (_1501) + { + discard; + } + finalOpacity = vDiffuseColor.w; + } + else + { + bool _1509 = blendMode == 0; + if (_1509) + { + finalOpacity = vDiffuseColor.w; + } + else + { + finalOpacity = discardAlpha * vDiffuseColor.w; + } + } + } + highp vec3 param = matDiffuse; + highp vec3 param_1 = vNormal; + bool param_2 = _473.PixelShader_UnFogged_IsAffectedByLight_blendMode.z > 0; + highp float param_3 = _496.interiorExteriorBlend.x; + SceneWideParams param_4; + param_4.uLookAtMat = _535.scene.uLookAtMat; + param_4.uPMatrix = _535.scene.uPMatrix; + param_4.uViewUp = _535.scene.uViewUp; + param_4.uInteriorSunDir = _535.scene.uInteriorSunDir; + param_4.extLight.uExteriorAmbientColor = _535.scene.extLight.uExteriorAmbientColor; + param_4.extLight.uExteriorHorizontAmbientColor = _535.scene.extLight.uExteriorHorizontAmbientColor; + param_4.extLight.uExteriorGroundAmbientColor = _535.scene.extLight.uExteriorGroundAmbientColor; + param_4.extLight.uExteriorDirectColor = _535.scene.extLight.uExteriorDirectColor; + param_4.extLight.uExteriorDirectColorDir = _535.scene.extLight.uExteriorDirectColorDir; + param_4.extLight.adtSpecMult = _535.scene.extLight.adtSpecMult; + InteriorLightParam param_5; + param_5.uInteriorAmbientColorAndApplyInteriorLight = _496.intLight.uInteriorAmbientColorAndApplyInteriorLight; + param_5.uInteriorDirectColorAndApplyExteriorLight = _496.intLight.uInteriorDirectColorAndApplyExteriorLight; + highp vec3 param_6 = accumLight; + finalColor = vec4(calcLight(param, param_1, param_2, param_3, param_4, param_5, param_6, vec3(0.0), specular, vec3(0.0)), finalOpacity); + int uUnFogged = _473.PixelShader_UnFogged_IsAffectedByLight_blendMode.y; + bool _1579 = uUnFogged == 0; + if (_1579) + { + highp vec3 sunDir = mix(_535.scene.uInteriorSunDir, _535.scene.extLight.uExteriorDirectColorDir, vec4(_496.interiorExteriorBlend.x)).xyz; + PSFog arg; + arg.densityParams = _535.fogData.densityParams; + arg.heightPlane = _535.fogData.heightPlane; + arg.color_and_heightRate = _535.fogData.color_and_heightRate; + arg.heightDensity_and_endColor = _535.fogData.heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _535.fogData.sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _535.fogData.heightColor_and_endFogDistance; + arg.sunPercentage = _535.fogData.sunPercentage; + highp vec4 param_7 = finalColor; + highp vec3 param_8 = vPosition; + highp vec3 param_9 = sunDir; + int param_10 = _473.PixelShader_UnFogged_IsAffectedByLight_blendMode.w; + finalColor = makeFog(arg, param_7, param_8, param_9, param_10); + } + outputColor = finalColor; +} + + +#version 300 es + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +layout(std140) uniform modelWideBlockVS +{ + mat4 uPlacementMat; + mat4 uBoneMatrixes[220]; +} _133; + +layout(std140) uniform meshWideBlockVS +{ + ivec4 vertexShader_IsAffectedByLight; + vec4 color_Transparency; + mat4 uTextMat[2]; +} _230; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _240; + +layout(location = 0) in vec3 aPosition; +layout(location = 3) in vec4 boneWeights; +layout(location = 2) in vec4 bones; +layout(location = 1) in vec3 aNormal; +out vec2 vTexCoord2; +out vec2 vTexCoord3; +out vec4 vDiffuseColor; +out vec2 vTexCoord; +layout(location = 4) in vec2 aTexCoord; +layout(location = 5) in vec2 aTexCoord2; +out vec3 vNormal; +out vec3 vPosition; + +mat3 blizzTranspose(mat4 value) +{ + return mat3(vec3(value[0].xyz), vec3(value[1].xyz), vec3(value[2].xyz)); +} + +vec2 posToTexCoord(vec3 cameraPoint, vec3 normal) +{ + vec3 normPos_495 = normalize(cameraPoint); + vec3 temp_500 = normPos_495 - (normal * (2.0 * dot(normPos_495, normal))); + vec3 temp_657 = vec3(temp_500.x, temp_500.y, temp_500.z + 1.0); + return (normalize(temp_657).xy * 0.5) + vec2(0.5); +} + +float edgeScan(vec3 position, vec3 normal) +{ + float dotProductClamped = clamp(dot(-normalize(position), normal), 0.0, 1.0); + return clamp(((2.7000000476837158203125 * dotProductClamped) * dotProductClamped) - 0.4000000059604644775390625, 0.0, 1.0); +} + +void main() +{ + vec4 modelPoint = vec4(0.0); + vec4 aPositionVec4 = vec4(aPosition, 1.0); + mat4 boneTransformMat = mat4(vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0)); + mat4 _143 = _133.uBoneMatrixes[bones.x] * boneWeights.x; + boneTransformMat = mat4(boneTransformMat[0] + _143[0], boneTransformMat[1] + _143[1], boneTransformMat[2] + _143[2], boneTransformMat[3] + _143[3]); + mat4 _164 = _133.uBoneMatrixes[bones.y] * boneWeights.y; + boneTransformMat = mat4(boneTransformMat[0] + _164[0], boneTransformMat[1] + _164[1], boneTransformMat[2] + _164[2], boneTransformMat[3] + _164[3]); + mat4 _185 = _133.uBoneMatrixes[bones.z] * boneWeights.z; + boneTransformMat = mat4(boneTransformMat[0] + _185[0], boneTransformMat[1] + _185[1], boneTransformMat[2] + _185[2], boneTransformMat[3] + _185[3]); + mat4 _207 = _133.uBoneMatrixes[bones.w] * boneWeights.w; + boneTransformMat = mat4(boneTransformMat[0] + _207[0], boneTransformMat[1] + _207[1], boneTransformMat[2] + _207[2], boneTransformMat[3] + _207[3]); + mat4 placementMat = _133.uPlacementMat; + vec4 lDiffuseColor = _230.color_Transparency; + mat4 cameraMatrix = (_240.scene.uLookAtMat * placementMat) * boneTransformMat; + vec4 cameraPoint = cameraMatrix * aPositionVec4; + mat4 param = _240.scene.uLookAtMat; + mat4 param_1 = placementMat; + mat4 param_2 = boneTransformMat; + mat3 viewModelMatTransposed = (blizzTranspose(param) * blizzTranspose(param_1)) * blizzTranspose(param_2); + vec3 normal = normalize(viewModelMatTransposed * aNormal); + vec4 combinedColor = clamp(lDiffuseColor, vec4(0.0), vec4(1.0)); + vec4 combinedColorHalved = combinedColor * 0.5; + vec3 param_3 = cameraPoint.xyz; + vec3 param_4 = normal; + vec2 envCoord = posToTexCoord(param_3, param_4); + vec3 param_5 = cameraPoint.xyz; + vec3 param_6 = normal; + float edgeScanVal = edgeScan(param_5, param_6); + vTexCoord2 = vec2(0.0); + vTexCoord3 = vec2(0.0); + int uVertexShader = _230.vertexShader_IsAffectedByLight.x; + bool _305 = uVertexShader == 0; + #if (VERTEXSHADER == 0) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _332 = uVertexShader == 1; + #if (VERTEXSHADER == 1) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = envCoord; + #endif + bool _347 = uVertexShader == 2; + #if (VERTEXSHADER == 2) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = (_230.uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + #endif + bool _379 = uVertexShader == 3; + #if (VERTEXSHADER == 3) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = envCoord; + #endif + bool _403 = uVertexShader == 4; + #if (VERTEXSHADER == 4) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = envCoord; + vTexCoord2 = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _427 = uVertexShader == 5; + #if (VERTEXSHADER == 5) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = envCoord; + vTexCoord2 = envCoord; + #endif + bool _444 = uVertexShader == 6; + #if (VERTEXSHADER == 6) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = envCoord; + vTexCoord3 = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _476 = uVertexShader == 7; + #if (VERTEXSHADER == 7) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _507 = uVertexShader == 8; + #if (VERTEXSHADER == 8) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord3 = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _546 = uVertexShader == 9; + #if (VERTEXSHADER == 9) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w * edgeScanVal); + vTexCoord = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _571 = uVertexShader == 10; + #if (VERTEXSHADER == 10) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230.uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + #endif + bool _594 = uVertexShader == 11; + #if (VERTEXSHADER == 11) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = envCoord; + vTexCoord3 = (_230.uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + #endif + bool _626 = uVertexShader == 12; + #if (VERTEXSHADER == 12) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w * edgeScanVal); + vTexCoord = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = (_230.uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + #endif + bool _659 = uVertexShader == 13; + #if (VERTEXSHADER == 13) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w * edgeScanVal); + vTexCoord = envCoord; + #endif + bool _677 = uVertexShader == 14; + #if (VERTEXSHADER == 14) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = (_230.uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + vTexCoord3 = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _716 = uVertexShader == 15; + #if (VERTEXSHADER == 15) + vDiffuseColor = vec4(combinedColorHalved.x, combinedColorHalved.y, combinedColorHalved.z, combinedColor.w); + vTexCoord = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + vTexCoord2 = (_230.uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + vTexCoord3 = vTexCoord3; + #endif + bool _748 = uVertexShader == 16; + #if (VERTEXSHADER == 16) + vec4 in_col0 = vec4(1.0); + vDiffuseColor = vec4((in_col0.xyz * 0.5).x, (in_col0.xyz * 0.5).y, (in_col0.xyz * 0.5).z, in_col0.w); + vTexCoord = (_230.uTextMat[1] * vec4(aTexCoord2, 0.0, 1.0)).xy; + vTexCoord2 = vec2(0.0); + vTexCoord3 = vTexCoord3; + #endif + bool _780 = uVertexShader == 17; + #if (VERTEXSHADER == 17) + vDiffuseColor = vec4(combinedColor.xyz * 0.5, combinedColor.w); + vTexCoord = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + bool _803 = uVertexShader == 18; + #if (VERTEXSHADER == 18) + vDiffuseColor = vec4(combinedColor.xyz * 0.5, combinedColor.w); + vTexCoord = (_230.uTextMat[0] * vec4(aTexCoord, 0.0, 1.0)).xy; + #endif + gl_Position = _240.scene.uPMatrix * cameraPoint; + vNormal = normal; + vPosition = cameraPoint.xyz; +} + + +#version 300 es +precision mediump float; +precision highp int; + +layout(std140) uniform meshWideBlockPS +{ + highp float gauss_offsets[5]; + highp float gauss_weights[5]; + highp vec2 uResolution; +} _34; + +uniform highp sampler2D u_sampler; +uniform highp sampler2D u_depth; + +in highp vec2 v_texcoord; +layout(location = 0) out highp vec4 outputColor; + +void main() +{ + highp float FXAA_SPAN_MAX = 8.0; + highp float FXAA_REDUCE_MUL = 0.125; + highp float FXAA_REDUCE_MIN = 0.0078125; + highp vec3 rgbNW = texture(u_sampler, v_texcoord + (vec2(-1.0) / _34.uResolution)).xyz; + highp vec3 rgbNE = texture(u_sampler, v_texcoord + (vec2(1.0, -1.0) / _34.uResolution)).xyz; + highp vec3 rgbSW = texture(u_sampler, v_texcoord + (vec2(-1.0, 1.0) / _34.uResolution)).xyz; + highp vec3 rgbSE = texture(u_sampler, v_texcoord + (vec2(1.0) / _34.uResolution)).xyz; + highp vec3 rgbM = texture(u_sampler, v_texcoord).xyz; + highp vec3 luma = vec3(0.2989999949932098388671875, 0.58700001239776611328125, 0.114000000059604644775390625); + highp float lumaNW = dot(rgbNW, luma); + highp float lumaNE = dot(rgbNE, luma); + highp float lumaSW = dot(rgbSW, luma); + highp float lumaSE = dot(rgbSE, luma); + highp float lumaM = dot(rgbM, luma); + highp float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE))); + highp float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE))); + highp vec2 dir; + dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE)); + dir.y = (lumaNW + lumaSW) - (lumaNE + lumaSE); + highp float dirReduce = max((((lumaNW + lumaNE) + lumaSW) + lumaSE) * (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN); + highp float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce); + dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX), max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX), dir * rcpDirMin)) / _34.uResolution; + highp vec3 rgbA = (texture(u_sampler, v_texcoord + (dir * (-0.16666667163372039794921875))).xyz + texture(u_sampler, v_texcoord + (dir * 0.16666667163372039794921875)).xyz) * 0.5; + highp vec3 rgbB = (rgbA * 0.5) + ((texture(u_sampler, v_texcoord + (dir * (-0.5))).xyz + texture(u_sampler, v_texcoord + (dir * 0.5)).xyz) * 0.25); + highp float lumaB = dot(rgbB, luma); + bool _240 = (lumaB < lumaMin) || (lumaB > lumaMax); + if (_240) + { + outputColor = vec4(rgbA.x, rgbA.y, rgbA.z, outputColor.w); + } + else + { + outputColor = vec4(rgbB.x, rgbB.y, rgbB.z, outputColor.w); + } +} + + +#version 300 es + +layout(location = 0) in vec4 a_position; +out vec2 v_texcoord; + +void main() +{ + gl_Position = a_position; + v_texcoord = (a_position.xy * 0.5) + vec2(0.5); +} + + +#version 300 es +precision mediump float; +precision highp int; + +struct PSFog +{ + highp vec4 densityParams; + highp vec4 heightPlane; + highp vec4 color_and_heightRate; + highp vec4 heightDensity_and_endColor; + highp vec4 sunAngle_and_sunColor; + highp vec4 heightColor_and_endFogDistance; + highp vec4 sunPercentage; +}; + +const vec3 _37[14] = vec3[](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(1.0), vec3(0.5), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); +const float _44[14] = float[](0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0); + +struct SceneExteriorLight +{ + highp vec4 uExteriorAmbientColor; + highp vec4 uExteriorHorizontAmbientColor; + highp vec4 uExteriorGroundAmbientColor; + highp vec4 uExteriorDirectColor; + highp vec4 uExteriorDirectColorDir; + highp vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + highp mat4 uLookAtMat; + highp mat4 uPMatrix; + highp vec4 uViewUp; + highp vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +layout(std140) uniform meshWideBlockPS +{ + highp vec4 uAlphaTestScalev; + ivec4 uPixelShaderv; + highp vec4 uTextureTranslate; +} _256; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _304; + +uniform highp sampler2D uTexture; + +in highp vec2 vTexcoord0; +in highp vec4 vColor; +in highp vec3 vPosition; +layout(location = 0) out highp vec4 outputColor; + +highp vec3 validateFogColor(highp vec3 fogColor, int blendMode) +{ + return mix(fogColor, _37[blendMode], vec3(_44[blendMode])); +} + +highp vec4 makeFog(PSFog fogData, highp vec4 final, highp vec3 vertexInViewSpace, highp vec3 sunDirInViewSpace, int blendMode) +{ + highp vec4 l_densityParams = fogData.densityParams; + highp vec4 l_heightPlane = fogData.heightPlane; + highp vec4 l_color_and_heightRate = fogData.color_and_heightRate; + highp vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + highp float start = l_densityParams.x; + highp float end = l_densityParams.y; + highp float density = l_densityParams.z; + highp float bias = l_densityParams.w; + highp float vLength = length(vertexInViewSpace); + highp float z = vLength - bias; + highp float expMax = max(0.0, z - start); + highp float expFog = 1.0 / exp(expMax * density); + highp float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + highp float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + highp float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + highp float finalFog = mix(expFog, expFogHeight, heightFog); + highp float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + highp float alpha = 1.0; + bool _139 = blendMode == 13; + if (_139) + { + alpha = min(finalFog, endFadeFog); + } + highp vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + highp vec3 endColor = validateFogColor(param, param_1); + highp vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + highp float end2 = vLength / l_heightColor_and_endFogDistance.w; + highp float end2_cube = end2 * (end2 * end2); + highp vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + highp vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + highp vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + highp vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + highp float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + highp vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + highp vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _218 = nDotSun > 0.0; + if (_218) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + highp vec2 textCoordScale = _256.uAlphaTestScalev.yz; + highp vec2 texcoord = (vTexcoord0 * textCoordScale) + _256.uTextureTranslate.xy; + highp vec4 tex = texture(uTexture, texcoord); + highp vec4 finalColor = vec4(vColor.xyz * tex.xyz, tex.w * vColor.w); + highp vec3 sunDir = _304.scene.extLight.uExteriorDirectColorDir.xyz; + PSFog arg; + arg.densityParams = _304.fogData.densityParams; + arg.heightPlane = _304.fogData.heightPlane; + arg.color_and_heightRate = _304.fogData.color_and_heightRate; + arg.heightDensity_and_endColor = _304.fogData.heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _304.fogData.sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _304.fogData.heightColor_and_endFogDistance; + arg.sunPercentage = _304.fogData.sunPercentage; + highp vec4 param = finalColor; + highp vec3 param_1 = vPosition; + highp vec3 param_2 = sunDir; + int param_3 = _256.uPixelShaderv.y; + finalColor = makeFog(arg, param, param_1, param_2, param_3); + outputColor = finalColor; +} + + +#version 300 es + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _37; + +layout(location = 0) in vec3 aPosition; +out vec4 vColor; +layout(location = 1) in vec4 aColor; +out vec2 vTexcoord0; +layout(location = 2) in vec2 aTexcoord0; +out vec3 vPosition; + +void main() +{ + vec4 aPositionVec4 = vec4(aPosition, 1.0); + vColor = aColor; + vTexcoord0 = aTexcoord0; + vec4 vertexViewSpace = _37.scene.uLookAtMat * aPositionVec4; + vPosition = vertexViewSpace.xyz; + gl_Position = _37.scene.uPMatrix * vertexViewSpace; +} + + +#version 300 es +precision mediump float; +precision highp int; + +layout(location = 0) out highp vec4 outputColor; +in highp vec4 vColor; + +void main() +{ + outputColor = vec4(vColor.xyz, vColor.w); +} + + +#version 300 es + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _26; + +layout(std140) uniform meshWideBlockVS +{ + vec4 skyColor[6]; +} _67; + +layout(location = 0) in vec4 aPosition; +out vec4 vColor; + +void main() +{ + vec3 inputPos = aPosition.xyz; + inputPos *= 33.33300018310546875; + vec4 cameraPos = _26.scene.uLookAtMat * vec4(inputPos, 1.0); + vec3 _46 = cameraPos.xyz - _26.scene.uLookAtMat[3].xyz; + cameraPos = vec4(_46.x, _46.y, _46.z, cameraPos.w); + cameraPos.z = cameraPos.z; + vec4 vertPosInNDC = _26.scene.uPMatrix * cameraPos; + vColor = _67.skyColor[int(aPosition.w)]; + gl_Position = _26.scene.uPMatrix * cameraPos; +} + + +#version 300 es +precision mediump float; +precision highp int; + +struct PSFog +{ + highp vec4 densityParams; + highp vec4 heightPlane; + highp vec4 color_and_heightRate; + highp vec4 heightDensity_and_endColor; + highp vec4 sunAngle_and_sunColor; + highp vec4 heightColor_and_endFogDistance; + highp vec4 sunPercentage; +}; + +const vec3 _37[14] = vec3[](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(1.0), vec3(0.5), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); +const float _44[14] = float[](0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0); + +struct SceneExteriorLight +{ + highp vec4 uExteriorAmbientColor; + highp vec4 uExteriorHorizontAmbientColor; + highp vec4 uExteriorGroundAmbientColor; + highp vec4 uExteriorDirectColor; + highp vec4 uExteriorDirectColorDir; + highp vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + highp mat4 uLookAtMat; + highp mat4 uPMatrix; + highp vec4 uViewUp; + highp vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +layout(std140) uniform meshWideBlockPS +{ + highp vec4 color; +} _253; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _277; + +uniform highp sampler2D uTexture; + +in highp vec2 vTextCoords; +in highp vec3 vPosition; +layout(location = 0) out highp vec4 outputColor; + +highp vec3 validateFogColor(highp vec3 fogColor, int blendMode) +{ + return mix(fogColor, _37[blendMode], vec3(_44[blendMode])); +} + +highp vec4 makeFog(PSFog fogData, highp vec4 final, highp vec3 vertexInViewSpace, highp vec3 sunDirInViewSpace, int blendMode) +{ + highp vec4 l_densityParams = fogData.densityParams; + highp vec4 l_heightPlane = fogData.heightPlane; + highp vec4 l_color_and_heightRate = fogData.color_and_heightRate; + highp vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + highp float start = l_densityParams.x; + highp float end = l_densityParams.y; + highp float density = l_densityParams.z; + highp float bias = l_densityParams.w; + highp float vLength = length(vertexInViewSpace); + highp float z = vLength - bias; + highp float expMax = max(0.0, z - start); + highp float expFog = 1.0 / exp(expMax * density); + highp float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + highp float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + highp float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + highp float finalFog = mix(expFog, expFogHeight, heightFog); + highp float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + highp float alpha = 1.0; + bool _139 = blendMode == 13; + if (_139) + { + alpha = min(finalFog, endFadeFog); + } + highp vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + highp vec3 endColor = validateFogColor(param, param_1); + highp vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + highp float end2 = vLength / l_heightColor_and_endFogDistance.w; + highp float end2_cube = end2 * (end2 * end2); + highp vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + highp vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + highp vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + highp vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + highp float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + highp vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + highp vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _218 = nDotSun > 0.0; + if (_218) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + highp vec3 finalColor = _253.color.xyz + texture(uTexture, vTextCoords).xyz; + highp vec3 sunDir = _277.scene.extLight.uExteriorDirectColorDir.xyz; + PSFog arg; + arg.densityParams = _277.fogData.densityParams; + arg.heightPlane = _277.fogData.heightPlane; + arg.color_and_heightRate = _277.fogData.color_and_heightRate; + arg.heightDensity_and_endColor = _277.fogData.heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _277.fogData.sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _277.fogData.heightColor_and_endFogDistance; + arg.sunPercentage = _277.fogData.sunPercentage; + highp vec4 param = vec4(finalColor, 1.0); + highp vec3 param_1 = vPosition; + highp vec3 param_2 = sunDir; + int param_3 = 2; + finalColor = makeFog(arg, param, param_1, param_2, param_3).xyz; + outputColor = vec4(finalColor, 0.699999988079071044921875); +} + + +#version 300 es + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _28; + +layout(std140) uniform modelWideBlockVS +{ + mat4 uPlacementMat; +} _36; + +layout(location = 0) in vec4 aPositionTransp; +out vec2 vTextCoords; +out vec3 vPosition; +layout(location = 1) in vec2 aTexCoord; + +void main() +{ + vec4 aPositionVec4 = vec4(aPositionTransp.xyz, 1.0); + mat4 cameraMatrix = _28.scene.uLookAtMat * _36.uPlacementMat; + vec4 cameraPoint = cameraMatrix * aPositionVec4; + vTextCoords = aPositionVec4.xy * 0.02999999932944774627685546875; + gl_Position = _28.scene.uPMatrix * cameraPoint; + vPosition = cameraPoint.xyz; +} + + +#version 300 es +precision mediump float; +precision highp int; + +struct SceneExteriorLight +{ + highp vec4 uExteriorAmbientColor; + highp vec4 uExteriorHorizontAmbientColor; + highp vec4 uExteriorGroundAmbientColor; + highp vec4 uExteriorDirectColor; + highp vec4 uExteriorDirectColorDir; + highp vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + highp mat4 uLookAtMat; + highp mat4 uPMatrix; + highp vec4 uViewUp; + highp vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct InteriorLightParam +{ + highp vec4 uInteriorAmbientColorAndApplyInteriorLight; + highp vec4 uInteriorDirectColorAndApplyExteriorLight; +}; + +struct PSFog +{ + highp vec4 densityParams; + highp vec4 heightPlane; + highp vec4 color_and_heightRate; + highp vec4 heightDensity_and_endColor; + highp vec4 sunAngle_and_sunColor; + highp vec4 heightColor_and_endFogDistance; + highp vec4 sunPercentage; +}; + +const vec3 _221[14] = vec3[](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(1.0), vec3(0.5), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); +const float _228[14] = float[](0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0); + +layout(std140) uniform meshWideBlockPS +{ + highp vec4 values0; + highp vec4 values1; + highp vec4 values2; + highp vec4 values3; + highp vec4 values4; + highp vec4 baseColor; +} _445; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _709; + +layout(std140) uniform modelWideBlockVS +{ + highp mat4 uPlacementMat; + highp mat4 uBoneMatrixes[220]; +} _818; + +uniform highp sampler2D uNormalTex; +uniform highp sampler2D uNoise; +uniform highp sampler2D uWhiteWater; +uniform highp sampler2D uMask; + +in highp vec2 vTexCoord2_animated; +in highp vec3 vPosition; +in highp vec3 vNormal; +in highp vec2 vTexCoord; +layout(location = 0) out highp vec4 outputColor; +in highp vec2 vTexCoord2; + +highp vec3 PerturbNormal(highp vec3 surf_pos, highp vec3 surf_norm) +{ + highp vec2 dBdUV = ((texture(uNormalTex, vTexCoord2_animated).xy * 2.0) - vec2(1.0)) * (_445.values3.x * 100.0); + highp vec2 duv1 = dFdx(vTexCoord2_animated); + highp vec2 duv2 = dFdy(vTexCoord2_animated); + highp vec3 vSigmaS = dFdx(surf_pos); + highp vec3 vSigmaT = dFdy(surf_pos); + highp vec3 vN = surf_norm; + highp vec3 vR1 = cross(vSigmaT, vN); + highp vec3 vR2 = cross(vN, vSigmaS); + highp float fDet = dot(vSigmaS, vR1); + highp float dBs = (dBdUV.x * duv1.x) + (dBdUV.y * duv1.y); + highp float dBt = (dBdUV.x * duv2.x) + (dBdUV.y * duv2.y); + highp vec3 vSurfGrad = ((vR1 * dBs) + (vR2 * dBt)) * sign(fDet); + return normalize((vN * abs(fDet)) - vSurfGrad); +} + +highp vec3 calcLight(highp vec3 matDiffuse, highp vec3 vNormal_1, bool applyLight, highp float interiorExteriorBlend, SceneWideParams sceneParams, InteriorLightParam intLight, highp vec3 accumLight, highp vec3 precomputedLight, highp vec3 specular, highp vec3 emissive) +{ + highp vec3 localDiffuse = accumLight; + bool _57 = !applyLight; + if (_57) + { + return matDiffuse; + } + highp vec3 lDiffuse = vec3(0.0); + highp vec3 normalizedN = normalize(vNormal_1); + bool _73 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + highp vec3 currColor; + if (_73) + { + highp float nDotL = clamp(dot(normalizedN, -sceneParams.extLight.uExteriorDirectColorDir.xyz), 0.0, 1.0); + highp float nDotUp = dot(normalizedN, sceneParams.uViewUp.xyz); + highp vec3 adjAmbient = sceneParams.extLight.uExteriorAmbientColor.xyz + precomputedLight; + highp vec3 adjHorizAmbient = sceneParams.extLight.uExteriorHorizontAmbientColor.xyz + precomputedLight; + highp vec3 adjGroundAmbient = sceneParams.extLight.uExteriorGroundAmbientColor.xyz + precomputedLight; + bool _110 = nDotUp >= 0.0; + if (_110) + { + currColor = mix(adjHorizAmbient, adjAmbient, vec3(nDotUp)); + } + else + { + currColor = mix(adjHorizAmbient, adjGroundAmbient, vec3(-nDotUp)); + } + highp vec3 skyColor = currColor * 1.10000002384185791015625; + highp vec3 groundColor = currColor * 0.699999988079071044921875; + lDiffuse = sceneParams.extLight.uExteriorDirectColor.xyz * nDotL; + currColor = mix(groundColor, skyColor, vec3(0.5 + (0.5 * nDotL))); + } + bool _150 = intLight.uInteriorAmbientColorAndApplyInteriorLight.w > 0.0; + if (_150) + { + highp float nDotL_1 = clamp(dot(normalizedN, -sceneParams.uInteriorSunDir.xyz), 0.0, 1.0); + highp vec3 lDiffuseInterior = intLight.uInteriorDirectColorAndApplyExteriorLight.xyz * nDotL_1; + highp vec3 interiorAmbient = intLight.uInteriorAmbientColorAndApplyInteriorLight.xyz + precomputedLight; + bool _174 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + if (_174) + { + lDiffuse = mix(lDiffuseInterior, lDiffuse, vec3(interiorExteriorBlend)); + currColor = mix(interiorAmbient, currColor, vec3(interiorExteriorBlend)); + } + else + { + lDiffuse = lDiffuseInterior; + currColor = interiorAmbient; + } + } + highp vec3 gammaDiffTerm = matDiffuse * (currColor + lDiffuse); + highp vec3 linearDiffTerm = (matDiffuse * matDiffuse) * localDiffuse; + highp vec3 specTerm = specular; + highp vec3 emTerm = emissive; + return (sqrt((gammaDiffTerm * gammaDiffTerm) + linearDiffTerm) + specTerm) + emTerm; +} + +highp vec3 validateFogColor(highp vec3 fogColor, int blendMode) +{ + return mix(fogColor, _221[blendMode], vec3(_228[blendMode])); +} + +highp vec4 makeFog(PSFog fogData, highp vec4 final, highp vec3 vertexInViewSpace, highp vec3 sunDirInViewSpace, int blendMode) +{ + highp vec4 l_densityParams = fogData.densityParams; + highp vec4 l_heightPlane = fogData.heightPlane; + highp vec4 l_color_and_heightRate = fogData.color_and_heightRate; + highp vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + highp float start = l_densityParams.x; + highp float end = l_densityParams.y; + highp float density = l_densityParams.z; + highp float bias = l_densityParams.w; + highp float vLength = length(vertexInViewSpace); + highp float z = vLength - bias; + highp float expMax = max(0.0, z - start); + highp float expFog = 1.0 / exp(expMax * density); + highp float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + highp float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + highp float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + highp float finalFog = mix(expFog, expFogHeight, heightFog); + highp float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + highp float alpha = 1.0; + bool _316 = blendMode == 13; + if (_316) + { + alpha = min(finalFog, endFadeFog); + } + highp vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + highp vec3 endColor = validateFogColor(param, param_1); + highp vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + highp float end2 = vLength / l_heightColor_and_endFogDistance.w; + highp float end2_cube = end2 * (end2 * end2); + highp vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + highp vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + highp vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + highp vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + highp float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + highp vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + highp vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _394 = nDotSun > 0.0; + if (_394) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + highp vec3 param = vPosition; + highp vec3 param_1 = normalize(vNormal); + highp vec3 perturbedNormal = PerturbNormal(param, param_1); + highp vec2 vTexCoordNorm = vTexCoord / vec2(_445.values1.x); + highp float noise0 = texture(uNoise, vec2(vTexCoordNorm.x - _445.values1.z, (vTexCoordNorm.y - _445.values1.z) - _445.values2.z)).x; + highp float _noise1 = texture(uNoise, vec2((vTexCoordNorm.x - _445.values1.z) + 0.4180000126361846923828125, ((vTexCoordNorm.y + 0.3549999892711639404296875) + _445.values1.z) - _445.values2.z)).x; + highp float _noise2 = texture(uNoise, vec2((vTexCoordNorm.x + _445.values1.z) + 0.8650000095367431640625, ((vTexCoordNorm.y + 0.1480000019073486328125) - _445.values1.z) - _445.values2.z)).x; + highp float _noise3 = texture(uNoise, vec2((vTexCoordNorm.x + _445.values1.z) + 0.65100002288818359375, ((vTexCoordNorm.y + 0.75199997425079345703125) + _445.values1.z) - _445.values2.z)).x; + highp float noise_avr = abs(((noise0 + _noise1) + _noise2) + _noise3) * 0.25; + highp float noiseFinal = clamp(exp((_445.values0.x * log2(noise_avr)) * 2.2000000476837158203125) * _445.values0.y, 0.0, 1.0); + highp vec4 whiteWater_val = texture(uWhiteWater, vTexCoord2_animated); + highp vec4 mask_val_0 = texture(uMask, vTexCoord); + highp vec4 mask_val_1 = texture(uMask, vec2(vTexCoord.x, vTexCoord.y + _445.values3.z)); + highp float mix_alpha = clamp((((((whiteWater_val.w * noiseFinal) - (mask_val_1.y * mask_val_0.x)) * 2.0) + _445.values0.z) * ((_445.values0.w * 2.0) + 1.0)) - _445.values0.w, 0.0, 1.0); + highp vec4 whiteWater_val_baseColor_mix = mix(_445.baseColor, whiteWater_val, vec4(mix_alpha)); + highp vec3 param_2 = whiteWater_val_baseColor_mix.xyz; + highp vec3 param_3 = perturbedNormal; + bool param_4 = true; + highp float param_5 = 0.0; + SceneWideParams param_6; + param_6.uLookAtMat = _709.scene.uLookAtMat; + param_6.uPMatrix = _709.scene.uPMatrix; + param_6.uViewUp = _709.scene.uViewUp; + param_6.uInteriorSunDir = _709.scene.uInteriorSunDir; + param_6.extLight.uExteriorAmbientColor = _709.scene.extLight.uExteriorAmbientColor; + param_6.extLight.uExteriorHorizontAmbientColor = _709.scene.extLight.uExteriorHorizontAmbientColor; + param_6.extLight.uExteriorGroundAmbientColor = _709.scene.extLight.uExteriorGroundAmbientColor; + param_6.extLight.uExteriorDirectColor = _709.scene.extLight.uExteriorDirectColor; + param_6.extLight.uExteriorDirectColorDir = _709.scene.extLight.uExteriorDirectColorDir; + param_6.extLight.adtSpecMult = _709.scene.extLight.adtSpecMult; + InteriorLightParam param_7 = InteriorLightParam(vec4(0.0), vec4(0.0, 0.0, 0.0, 1.0)); + highp vec3 param_8 = vec3(0.0); + highp vec3 colorAfterLight = calcLight(param_2, param_3, param_4, param_5, param_6, param_7, param_8, vec3(0.0), vec3(0.0), vec3(0.0)); + highp float w_clamped = clamp((1.0 - mask_val_0.w) * _445.values1.w, 0.0, 1.0); + highp float w_alpha_combined = clamp(w_clamped + mix_alpha, 0.0, 1.0); + highp vec4 finalColor = vec4(mix(colorAfterLight, whiteWater_val_baseColor_mix.xyz, vec3(_445.values3.w)), w_alpha_combined); + highp vec3 sunDir = _709.scene.extLight.uExteriorDirectColorDir.xyz; + PSFog arg; + arg.densityParams = _709.fogData.densityParams; + arg.heightPlane = _709.fogData.heightPlane; + arg.color_and_heightRate = _709.fogData.color_and_heightRate; + arg.heightDensity_and_endColor = _709.fogData.heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _709.fogData.sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _709.fogData.heightColor_and_endFogDistance; + arg.sunPercentage = _709.fogData.sunPercentage; + highp vec4 param_9 = finalColor; + highp vec3 param_10 = vPosition; + highp vec3 param_11 = sunDir; + int param_12 = 0; + finalColor = makeFog(arg, param_9, param_10, param_11, param_12); + outputColor = finalColor; +} + + +#version 300 es + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +layout(std140) uniform meshWideBlockVS +{ + vec4 bumpScale; + mat4 uTextMat[2]; +} _55; + +layout(std140) uniform modelWideBlockVS +{ + mat4 uPlacementMat; + mat4 uBoneMatrixes[220]; +} _104; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _199; + +uniform highp sampler2D uBumpTexture; + +layout(location = 5) in vec2 aTexCoord2; +layout(location = 1) in vec3 aNormal; +layout(location = 0) in vec3 aPosition; +layout(location = 3) in vec4 boneWeights; +layout(location = 2) in vec4 bones; +out vec3 vNormal; +out vec3 vPosition; +out vec2 vTexCoord; +layout(location = 4) in vec2 aTexCoord; +out vec2 vTexCoord2_animated; +out vec2 vTexCoord2; + +mat3 blizzTranspose(mat4 value) +{ + return mat3(vec3(value[0].xyz), vec3(value[1].xyz), vec3(value[2].xyz)); +} + +void main() +{ + vec2 texCoord2 = (_55.uTextMat[0] * vec4(aTexCoord2, 0.0, 1.0)).xy; + vec4 bumpValue = textureLod(uBumpTexture, texCoord2, 0.0); + vec3 pos = ((aNormal * _55.bumpScale.x) * bumpValue.z) + aPosition; + mat4 boneTransformMat = mat4(vec4(0.0), vec4(0.0), vec4(0.0), vec4(0.0)); + mat4 _113 = _104.uBoneMatrixes[bones.x] * boneWeights.x; + boneTransformMat = mat4(boneTransformMat[0] + _113[0], boneTransformMat[1] + _113[1], boneTransformMat[2] + _113[2], boneTransformMat[3] + _113[3]); + mat4 _135 = _104.uBoneMatrixes[bones.y] * boneWeights.y; + boneTransformMat = mat4(boneTransformMat[0] + _135[0], boneTransformMat[1] + _135[1], boneTransformMat[2] + _135[2], boneTransformMat[3] + _135[3]); + mat4 _156 = _104.uBoneMatrixes[bones.z] * boneWeights.z; + boneTransformMat = mat4(boneTransformMat[0] + _156[0], boneTransformMat[1] + _156[1], boneTransformMat[2] + _156[2], boneTransformMat[3] + _156[3]); + mat4 _178 = _104.uBoneMatrixes[bones.w] * boneWeights.w; + boneTransformMat = mat4(boneTransformMat[0] + _178[0], boneTransformMat[1] + _178[1], boneTransformMat[2] + _178[2], boneTransformMat[3] + _178[3]); + mat4 cameraMatrix = (_199.scene.uLookAtMat * _104.uPlacementMat) * boneTransformMat; + vec4 cameraPoint = cameraMatrix * vec4(pos, 1.0); + mat4 param = _199.scene.uLookAtMat; + mat4 param_1 = _104.uPlacementMat; + mat4 param_2 = boneTransformMat; + mat3 viewModelMatTransposed = (blizzTranspose(param) * blizzTranspose(param_1)) * blizzTranspose(param_2); + vNormal = ((_199.scene.uLookAtMat * _104.uPlacementMat) * vec4(aNormal, 0.0)).xyz; + vPosition = pos; + vTexCoord = aTexCoord; + vTexCoord2_animated = texCoord2; + vTexCoord2 = aTexCoord2; + gl_Position = _199.scene.uPMatrix * cameraPoint; +} + + +#version 300 es +precision mediump float; +precision highp int; + +struct SceneExteriorLight +{ + highp vec4 uExteriorAmbientColor; + highp vec4 uExteriorHorizontAmbientColor; + highp vec4 uExteriorGroundAmbientColor; + highp vec4 uExteriorDirectColor; + highp vec4 uExteriorDirectColorDir; + highp vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + highp mat4 uLookAtMat; + highp mat4 uPMatrix; + highp vec4 uViewUp; + highp vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct InteriorLightParam +{ + highp vec4 uInteriorAmbientColorAndApplyInteriorLight; + highp vec4 uInteriorDirectColorAndApplyExteriorLight; +}; + +struct PSFog +{ + highp vec4 densityParams; + highp vec4 heightPlane; + highp vec4 color_and_heightRate; + highp vec4 heightDensity_and_endColor; + highp vec4 sunAngle_and_sunColor; + highp vec4 heightColor_and_endFogDistance; + highp vec4 sunPercentage; +}; + +const vec3 _232[14] = vec3[](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0), vec3(1.0), vec3(0.5), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.5), vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); +const float _239[14] = float[](0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0); + +layout(std140) uniform modelWideBlockPS +{ + InteriorLightParam intLight; +} _525; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _537; + +layout(std140) uniform meshWideBlockPS +{ + ivec4 UseLitColor_EnableAlpha_PixelShader_BlendMode; + highp vec4 FogColor_AlphaTest; +} _657; + +uniform highp sampler2D uTexture; +uniform highp sampler2D uTexture2; +uniform highp sampler2D uTexture3; +uniform highp sampler2D uTexture6; +uniform highp sampler2D uTexture4; +uniform highp sampler2D uTexture5; +uniform highp sampler2D uTexture7; +uniform highp sampler2D uTexture8; +uniform highp sampler2D uTexture9; + +in highp vec3 vNormal; +in highp vec4 vColor; +in highp vec4 vPosition; +in highp vec2 vTexCoord; +in highp vec2 vTexCoord2; +in highp vec2 vTexCoord3; +in highp vec4 vColor2; +in highp vec4 vColorSecond; +in highp vec2 vTexCoord4; +layout(location = 0) out highp vec4 outputColor; + +highp vec3 Slerp(highp vec3 p0, highp vec3 p1, highp float t) +{ + highp float dotp = dot(normalize(p0), normalize(p1)); + bool _479 = (dotp > 0.99989998340606689453125) || (dotp < (-0.99989998340606689453125)); + if (_479) + { + bool _483 = t <= 0.5; + if (_483) + { + return p0; + } + return p1; + } + highp float theta = acos(dotp); + highp vec3 P = ((p0 * sin((1.0 - t) * theta)) + (p1 * sin(t * theta))) / vec3(sin(theta)); + return P; +} + +highp vec3 calcSpec(highp float texAlpha) +{ + highp vec3 normal = normalize(vNormal); + highp vec3 sunDir = vec3(0.0); + highp vec3 sunColor = vec3(0.0); + bool _529 = _525.intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + if (_529) + { + sunDir = -_537.scene.extLight.uExteriorDirectColorDir.xyz; + sunColor = _537.scene.extLight.uExteriorDirectColor.xyz; + } + bool _548 = _525.intLight.uInteriorAmbientColorAndApplyInteriorLight.w > 0.0; + if (_548) + { + sunDir = -_537.scene.uInteriorSunDir.xyz; + sunColor = _525.intLight.uInteriorDirectColorAndApplyExteriorLight.xyz; + bool _560 = _525.intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + if (_560) + { + highp vec3 param = sunDir; + highp vec3 param_1 = -_537.scene.extLight.uExteriorDirectColorDir.xyz; + highp float param_2 = vColor.w; + sunDir = Slerp(param, param_1, param_2); + sunColor = mix(sunColor, _537.scene.extLight.uExteriorDirectColor.xyz, vec3(vColor.w)); + } + } + highp vec3 t849 = normalize(sunDir + normalize(-vPosition.xyz)); + highp float dirAtten_956 = clamp(dot(normal, sunDir), 0.0, 1.0); + highp float spec = 1.25 * pow(clamp(dot(normal, t849), 0.0, 1.0), 8.0); + highp vec3 specTerm = ((vec3(mix(pow(1.0 - clamp(dot(sunDir, t849), 0.0, 1.0), 5.0), 1.0, texAlpha)) * spec) * sunColor) * dirAtten_956; + highp float distFade = 1.0; + specTerm *= distFade; + return specTerm; +} + +highp vec2 posToTexCoord(highp vec3 cameraPoint, highp vec3 normal) +{ + highp vec3 normPos_495 = normalize(cameraPoint); + highp vec3 temp_500 = normPos_495 - (normal * (2.0 * dot(normPos_495, normal))); + highp vec3 temp_657 = vec3(temp_500.x, temp_500.y, temp_500.z + 1.0); + return (normalize(temp_657).xy * 0.5) + vec2(0.5); +} + +highp vec3 calcLight(highp vec3 matDiffuse, highp vec3 vNormal_1, bool applyLight, highp float interiorExteriorBlend, SceneWideParams sceneParams, InteriorLightParam intLight, highp vec3 accumLight, highp vec3 precomputedLight, highp vec3 specular, highp vec3 emissive) +{ + highp vec3 localDiffuse = accumLight; + bool _68 = !applyLight; + if (_68) + { + return matDiffuse; + } + highp vec3 lDiffuse = vec3(0.0); + highp vec3 normalizedN = normalize(vNormal_1); + bool _84 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + highp vec3 currColor; + if (_84) + { + highp float nDotL = clamp(dot(normalizedN, -sceneParams.extLight.uExteriorDirectColorDir.xyz), 0.0, 1.0); + highp float nDotUp = dot(normalizedN, sceneParams.uViewUp.xyz); + highp vec3 adjAmbient = sceneParams.extLight.uExteriorAmbientColor.xyz + precomputedLight; + highp vec3 adjHorizAmbient = sceneParams.extLight.uExteriorHorizontAmbientColor.xyz + precomputedLight; + highp vec3 adjGroundAmbient = sceneParams.extLight.uExteriorGroundAmbientColor.xyz + precomputedLight; + bool _121 = nDotUp >= 0.0; + if (_121) + { + currColor = mix(adjHorizAmbient, adjAmbient, vec3(nDotUp)); + } + else + { + currColor = mix(adjHorizAmbient, adjGroundAmbient, vec3(-nDotUp)); + } + highp vec3 skyColor = currColor * 1.10000002384185791015625; + highp vec3 groundColor = currColor * 0.699999988079071044921875; + lDiffuse = sceneParams.extLight.uExteriorDirectColor.xyz * nDotL; + currColor = mix(groundColor, skyColor, vec3(0.5 + (0.5 * nDotL))); + } + bool _161 = intLight.uInteriorAmbientColorAndApplyInteriorLight.w > 0.0; + if (_161) + { + highp float nDotL_1 = clamp(dot(normalizedN, -sceneParams.uInteriorSunDir.xyz), 0.0, 1.0); + highp vec3 lDiffuseInterior = intLight.uInteriorDirectColorAndApplyExteriorLight.xyz * nDotL_1; + highp vec3 interiorAmbient = intLight.uInteriorAmbientColorAndApplyInteriorLight.xyz + precomputedLight; + bool _185 = intLight.uInteriorDirectColorAndApplyExteriorLight.w > 0.0; + if (_185) + { + lDiffuse = mix(lDiffuseInterior, lDiffuse, vec3(interiorExteriorBlend)); + currColor = mix(interiorAmbient, currColor, vec3(interiorExteriorBlend)); + } + else + { + lDiffuse = lDiffuseInterior; + currColor = interiorAmbient; + } + } + highp vec3 gammaDiffTerm = matDiffuse * (currColor + lDiffuse); + highp vec3 linearDiffTerm = (matDiffuse * matDiffuse) * localDiffuse; + highp vec3 specTerm = specular; + highp vec3 emTerm = emissive; + return (sqrt((gammaDiffTerm * gammaDiffTerm) + linearDiffTerm) + specTerm) + emTerm; +} + +highp vec3 validateFogColor(highp vec3 fogColor, int blendMode) +{ + return mix(fogColor, _232[blendMode], vec3(_239[blendMode])); +} + +highp vec4 makeFog(PSFog fogData, highp vec4 final, highp vec3 vertexInViewSpace, highp vec3 sunDirInViewSpace, int blendMode) +{ + highp vec4 l_densityParams = fogData.densityParams; + highp vec4 l_heightPlane = fogData.heightPlane; + highp vec4 l_color_and_heightRate = fogData.color_and_heightRate; + highp vec4 l_heightDensity_and_endColor = fogData.heightDensity_and_endColor; + highp float start = l_densityParams.x; + highp float end = l_densityParams.y; + highp float density = l_densityParams.z; + highp float bias = l_densityParams.w; + highp float vLength = length(vertexInViewSpace); + highp float z = vLength - bias; + highp float expMax = max(0.0, z - start); + highp float expFog = 1.0 / exp(expMax * density); + highp float expFogHeight = 1.0 / exp(expMax * l_heightDensity_and_endColor.x); + highp float height = dot(l_heightPlane.xyz, vertexInViewSpace) + l_heightPlane.w; + highp float heightFog = clamp(height * l_color_and_heightRate.w, 0.0, 1.0); + highp float finalFog = mix(expFog, expFogHeight, heightFog); + highp float endFadeFog = clamp(1.4285714626312255859375 * (1.0 - (vLength / end)), 0.0, 1.0); + highp float alpha = 1.0; + bool _327 = blendMode == 13; + if (_327) + { + alpha = min(finalFog, endFadeFog); + } + highp vec3 param = l_heightDensity_and_endColor.yzw; + int param_1 = blendMode; + highp vec3 endColor = validateFogColor(param, param_1); + highp vec4 l_heightColor_and_endFogDistance = fogData.heightColor_and_endFogDistance; + highp float end2 = vLength / l_heightColor_and_endFogDistance.w; + highp float end2_cube = end2 * (end2 * end2); + highp vec3 param_2 = l_heightColor_and_endFogDistance.xyz; + int param_3 = blendMode; + highp vec3 heightColor = mix(validateFogColor(param_2, param_3), endColor, vec3(clamp(end2, 0.0, 1.0))); + highp vec3 param_4 = l_color_and_heightRate.xyz; + int param_5 = blendMode; + highp vec3 fogFinal = mix(validateFogColor(param_4, param_5), endColor, vec3(clamp(end2_cube, 0.0, 1.0))); + fogFinal = mix(fogFinal, heightColor, vec3(heightFog)); + highp float nDotSun = dot(normalize(vertexInViewSpace), sunDirInViewSpace); + highp vec3 param_6 = fogData.sunAngle_and_sunColor.yzw; + int param_7 = blendMode; + highp vec3 sunColor = mix(fogFinal, validateFogColor(param_6, param_7), vec3(fogData.sunPercentage.x)); + nDotSun = clamp(nDotSun - fogData.sunAngle_and_sunColor.x, 0.0, 1.0); + bool _405 = nDotSun > 0.0; + if (_405) + { + nDotSun = (nDotSun * nDotSun) * nDotSun; + fogFinal = mix(fogFinal, sunColor, vec3(nDotSun)); + } + fogFinal = mix(fogFinal, final.xyz, vec3(min(finalFog, endFadeFog))); + return vec4(fogFinal, final.w * alpha); +} + +void main() +{ + highp vec4 tex = texture(uTexture, vTexCoord); + highp vec4 tex2 = texture(uTexture2, vTexCoord2); + highp vec4 tex3 = texture(uTexture3, vTexCoord3); + bool _661 = _657.UseLitColor_EnableAlpha_PixelShader_BlendMode.y == 1; + if (_661) + { + bool _668 = (tex.w - 0.501960813999176025390625) < 0.0; + if (_668) + { + discard; + } + } + int uPixelShader = _657.UseLitColor_EnableAlpha_PixelShader_BlendMode.z; + highp vec4 finalColor = vec4(0.0, 0.0, 0.0, 1.0); + highp vec3 matDiffuse = vec3(0.0); + highp vec3 spec = vec3(0.0); + highp vec3 emissive = vec3(0.0); + highp float finalOpacity = 0.0; + highp float distFade = 1.0; + bool _684 = uPixelShader == (-1); + #if (FRAGMENTSHADER == (-1)) + matDiffuse = tex.xyz * tex2.xyz; + finalOpacity = tex.w; + #endif + bool _696 = uPixelShader == 0; + #if (FRAGMENTSHADER == 0) + matDiffuse = tex.xyz; + finalOpacity = tex.w; + #endif + bool _705 = uPixelShader == 1; + #if (FRAGMENTSHADER == 1) + matDiffuse = tex.xyz; + highp float param = tex.w; + spec = calcSpec(param); + finalOpacity = tex.w; + #endif + bool _718 = uPixelShader == 2; + #if (FRAGMENTSHADER == 2) + matDiffuse = tex.xyz; + highp float param_1 = ((tex * 4.0) * tex.w).x; + spec = calcSpec(param_1); + finalOpacity = tex.w; + #endif + bool _736 = uPixelShader == 3; + #if (FRAGMENTSHADER == 3) + matDiffuse = tex.xyz; + emissive = (tex2.xyz * tex.w) * distFade; + finalOpacity = 1.0; + #endif + bool _750 = uPixelShader == 4; + #if (FRAGMENTSHADER == 4) + matDiffuse = tex.xyz; + finalOpacity = 1.0; + #endif + bool _757 = uPixelShader == 5; + #if (FRAGMENTSHADER == 5) + matDiffuse = tex.xyz; + emissive = ((tex.xyz * tex.w) * tex2.xyz) * distFade; + finalOpacity = 1.0; + #endif + bool _774 = uPixelShader == 6; + #if (FRAGMENTSHADER == 6) + highp vec3 layer1 = tex.xyz; + highp vec3 layer2 = mix(layer1, tex2.xyz, vec3(tex2.w)); + matDiffuse = mix(layer2, layer1, vec3(vColor2.w)); + finalOpacity = tex.w; + #endif + bool _800 = uPixelShader == 7; + #if (FRAGMENTSHADER == 7) + highp vec4 colorMix = mix(tex2, tex, vec4(vColor2.w)); + matDiffuse = colorMix.xyz; + emissive = ((colorMix.xyz * colorMix.w) * tex3.xyz) * distFade; + finalOpacity = tex.w; + #endif + bool _827 = uPixelShader == 8; + #if (FRAGMENTSHADER == 8) + highp vec3 layer1_1 = tex.xyz; + highp vec3 layer2_1 = tex2.xyz; + matDiffuse = mix(layer2_1, layer1_1, vec3(vColor2.w)); + highp float param_2 = tex2.w * (1.0 - vColor2.w); + spec = calcSpec(param_2); + finalOpacity = tex.w; + #endif + bool _855 = uPixelShader == 9; + #if (FRAGMENTSHADER == 9) + matDiffuse = tex.xyz; + emissive = (tex2.xyz * tex2.w) * vColor2.w; + finalOpacity = tex.w; + #endif + bool _873 = uPixelShader == 10; + #if (FRAGMENTSHADER == 10) + highp float mixFactor = clamp(tex3.w * vColor2.w, 0.0, 1.0); + matDiffuse = mix(mix((tex.xyz * tex2.xyz) * 2.0, tex3.xyz, vec3(mixFactor)), tex.xyz, vec3(tex.w)); + finalOpacity = tex.w; + #endif + bool _905 = uPixelShader == 11; + #if (FRAGMENTSHADER == 11) + matDiffuse = tex.xyz; + emissive = ((tex.xyz * tex.w) * tex2.xyz) + ((tex3.xyz * tex3.w) * vColor2.w); + finalOpacity = tex.w; + #endif + bool _932 = uPixelShader == 12; + #if (FRAGMENTSHADER == 12) + matDiffuse = mix(tex2.xyz, tex.xyz, vec3(vColor2.w)); + finalOpacity = 1.0; + #endif + bool _945 = uPixelShader == 13; + #if (FRAGMENTSHADER == 13) + highp vec3 t1diffuse = tex2.xyz * (1.0 - tex2.w); + matDiffuse = mix(t1diffuse, tex.xyz, vec3(vColor2.w)); + emissive = (tex2.xyz * tex2.w) * (1.0 - vColor2.w); + finalOpacity = tex.w; + #endif + bool _976 = uPixelShader == 14; + #if (FRAGMENTSHADER == 14) + matDiffuse = mix(((tex.xyz * tex2.xyz) * 2.0) + (tex3.xyz * clamp(tex3.w * vColor2.w, 0.0, 1.0)), tex.xyz, vec3(tex.w)); + finalOpacity = 1.0; + #endif + bool _1004 = uPixelShader == 15; + #if (FRAGMENTSHADER == 15) + highp vec3 layer1_2 = tex.xyz; + highp vec3 layer2_2 = mix(layer1_2, tex2.xzy, vec3(tex2.w)); + highp vec3 layer3 = mix(layer2_2, layer1_2, vec3(vColor2.w)); + matDiffuse = (layer3 * tex3.xyz) * 2.0; + finalOpacity = tex.w; + #endif + bool _1034 = uPixelShader == 16; + #if (FRAGMENTSHADER == 16) + highp vec3 layer1_3 = (tex.xyz * tex2.xyz) * 2.0; + matDiffuse = mix(tex.xyz, layer1_3, vec3(vColor2.w)); + finalOpacity = tex.w; + #endif + bool _1055 = uPixelShader == 17; + #if (FRAGMENTSHADER == 17) + highp vec3 layer1_4 = tex.xyz; + highp vec3 layer2_3 = mix(layer1_4, tex2.xyz, vec3(tex2.w)); + highp vec3 layer3_1 = mix(layer2_3, layer1_4, vec3(tex3.w)); + matDiffuse = (layer3_1 * tex3.xyz) * 2.0; + finalOpacity = tex.w; + #endif + bool _1085 = uPixelShader == 18; + #if (FRAGMENTSHADER == 18) + matDiffuse = tex.xyz; + finalOpacity = tex.w; + #endif + bool _1094 = uPixelShader == 19; + #if (FRAGMENTSHADER == 19) + highp vec4 tex_6 = texture(uTexture6, vTexCoord2); + highp vec3 crossDy = cross(dFdy(vPosition.xyz), vNormal); + highp vec3 crossDx = cross(vNormal, dFdx(vPosition.xyz)); + highp vec2 dTexCoord2Dx = dFdx(vTexCoord2); + highp vec2 dTexCoord2Dy = dFdy(vTexCoord2); + highp vec3 sum1 = (crossDx * dTexCoord2Dy.x) + (crossDy * dTexCoord2Dx.x); + highp vec3 sum2 = (crossDx * dTexCoord2Dy.y) + (crossDy * dTexCoord2Dx.y); + highp float maxInverseDot = inversesqrt(max(dot(sum1, sum1), dot(sum2, sum2))); + highp float cosAlpha = dot(normalize(vPosition.xyz), vNormal); + highp float dot1 = dot(sum1 * maxInverseDot, normalize(vPosition.xyz)) / cosAlpha; + highp float dot2 = dot(sum2 * maxInverseDot, normalize(vPosition.xyz)) / cosAlpha; + highp vec4 tex_4 = texture(uTexture4, vTexCoord2 - ((vec2(dot1, dot2) * tex_6.x) * 0.25)); + highp vec4 tex_5 = texture(uTexture5, vTexCoord3 - ((vec2(dot1, dot2) * tex_6.x) * 0.25)); + highp vec4 tex_3 = texture(uTexture3, vTexCoord2); + highp vec3 mix1 = tex_5.xyz + (tex_4.xyz * tex_4.w); + highp vec3 mix2 = ((tex_3.xyz - mix1) * tex_6.y) + mix1; + highp vec3 mix3 = (tex_3.xyz * tex_6.z) + ((tex_5.xyz * tex_5.w) * (1.0 - tex3.z)); + highp vec4 tex_2 = texture(uTexture3, vColorSecond.zy); + highp vec3 tex_2_mult = tex_2.xyz * tex_2.w; + bool _1256 = vColor2.w > 0.0; + highp vec3 emissive_component; + if (_1256) + { + highp vec4 tex_1 = texture(uTexture, vTexCoord); + matDiffuse = ((tex_1.xyz - mix2) * vColor2.w) + mix2; + emissive_component = (((tex_1.xyz * tex_1.w) - tex_2_mult) * vColor2.w) + tex_2_mult; + } + else + { + emissive_component = tex_2_mult; + matDiffuse = mix2; + } + emissive = (mix3 - (mix3 * vColor2.w)) + (emissive_component * tex_2.xyz); + #endif + bool _1301 = uPixelShader == 20; + #if (FRAGMENTSHADER == 20) + highp vec3 param_3 = vPosition.xyz; + highp vec3 param_4 = vNormal; + highp vec4 tex_1_1 = texture(uTexture, posToTexCoord(param_3, param_4)); + highp vec4 tex_2_1 = texture(uTexture2, vTexCoord); + highp vec4 tex_3_1 = texture(uTexture3, vTexCoord2); + highp vec4 tex_4_1 = texture(uTexture4, vTexCoord3); + highp vec4 tex_5_1 = texture(uTexture5, vTexCoord4); + highp vec4 tex_6_1 = texture(uTexture6, vTexCoord); + highp vec4 tex_7 = texture(uTexture7, vTexCoord2); + highp vec4 tex_8 = texture(uTexture8, vTexCoord3); + highp vec4 tex_9 = texture(uTexture9, vTexCoord4); + highp float secondColorSum = dot(vColorSecond.zyx, vec3(1.0)); + highp vec4 alphaVec = max(vec4(tex_6_1.w, tex_7.w, tex_8.w, tex_9.w), vec4(0.0040000001899898052215576171875)) * vec4(vColorSecond.zyx, 1.0 - clamp(secondColorSum, 0.0, 1.0)); + highp float maxAlpha = max(alphaVec.x, max(alphaVec.y, max(alphaVec.x, alphaVec.w))); + highp vec4 alphaVec2 = vec4(1.0) - clamp(vec4(maxAlpha) - alphaVec, vec4(0.0), vec4(1.0)); + alphaVec2 *= alphaVec; + highp vec4 alphaVec2Normalized = alphaVec2 * (1.0 / dot(alphaVec2, vec4(1.0))); + highp vec4 texMixed = (((tex_2_1 * alphaVec2Normalized.x) + (tex_3_1 * alphaVec2Normalized.y)) + (tex_4_1 * alphaVec2Normalized.z)) + (tex_5_1 * alphaVec2Normalized.w); + emissive = (tex_1_1.xyz * texMixed.w) * texMixed.xyz; + highp vec3 diffuseColor = vec3(0.0); + matDiffuse = ((diffuseColor - texMixed.xyz) * vColorSecond.w) + texMixed.xyz; + #endif + highp vec3 param_5 = matDiffuse; + highp vec3 param_6 = vNormal; + bool param_7 = true; + highp float param_8 = vColor.w; + SceneWideParams param_9; + param_9.uLookAtMat = _537.scene.uLookAtMat; + param_9.uPMatrix = _537.scene.uPMatrix; + param_9.uViewUp = _537.scene.uViewUp; + param_9.uInteriorSunDir = _537.scene.uInteriorSunDir; + param_9.extLight.uExteriorAmbientColor = _537.scene.extLight.uExteriorAmbientColor; + param_9.extLight.uExteriorHorizontAmbientColor = _537.scene.extLight.uExteriorHorizontAmbientColor; + param_9.extLight.uExteriorGroundAmbientColor = _537.scene.extLight.uExteriorGroundAmbientColor; + param_9.extLight.uExteriorDirectColor = _537.scene.extLight.uExteriorDirectColor; + param_9.extLight.uExteriorDirectColorDir = _537.scene.extLight.uExteriorDirectColorDir; + param_9.extLight.adtSpecMult = _537.scene.extLight.adtSpecMult; + InteriorLightParam param_10; + param_10.uInteriorAmbientColorAndApplyInteriorLight = _525.intLight.uInteriorAmbientColorAndApplyInteriorLight; + param_10.uInteriorDirectColorAndApplyExteriorLight = _525.intLight.uInteriorDirectColorAndApplyExteriorLight; + highp vec3 param_11 = vec3(0.0); + finalColor = vec4(calcLight(param_5, param_6, param_7, param_8, param_9, param_10, param_11, vColor.xyz, spec, emissive), finalOpacity); + PSFog arg; + arg.densityParams = _537.fogData.densityParams; + arg.heightPlane = _537.fogData.heightPlane; + arg.color_and_heightRate = _537.fogData.color_and_heightRate; + arg.heightDensity_and_endColor = _537.fogData.heightDensity_and_endColor; + arg.sunAngle_and_sunColor = _537.fogData.sunAngle_and_sunColor; + arg.heightColor_and_endFogDistance = _537.fogData.heightColor_and_endFogDistance; + arg.sunPercentage = _537.fogData.sunPercentage; + highp vec4 param_12 = finalColor; + highp vec3 param_13 = vPosition.xyz; + highp vec3 param_14 = _537.scene.extLight.uExteriorDirectColorDir.xyz; + int param_15 = _657.UseLitColor_EnableAlpha_PixelShader_BlendMode.w; + finalColor = makeFog(arg, param_12, param_13, param_14, param_15); + outputColor = finalColor; +} + + +#version 300 es + +struct SceneExteriorLight +{ + vec4 uExteriorAmbientColor; + vec4 uExteriorHorizontAmbientColor; + vec4 uExteriorGroundAmbientColor; + vec4 uExteriorDirectColor; + vec4 uExteriorDirectColorDir; + vec4 adtSpecMult; +}; + +struct SceneWideParams +{ + mat4 uLookAtMat; + mat4 uPMatrix; + vec4 uViewUp; + vec4 uInteriorSunDir; + SceneExteriorLight extLight; +}; + +struct PSFog +{ + vec4 densityParams; + vec4 heightPlane; + vec4 color_and_heightRate; + vec4 heightDensity_and_endColor; + vec4 sunAngle_and_sunColor; + vec4 heightColor_and_endFogDistance; + vec4 sunPercentage; +}; + +layout(std140) uniform modelWideBlockVS +{ + mat4 uPlacementMat; +} _93; + +layout(std140) uniform sceneWideBlockVSPS +{ + SceneWideParams scene; + PSFog fogData; +} _111; + +layout(std140) uniform meshWideBlockVS +{ + ivec4 VertexShader_UseLitColor; +} _178; + +layout(location = 0) in vec3 aPosition; +out vec4 vPosition; +out vec3 vNormal; +layout(location = 1) in vec3 aNormal; +out vec4 vColor; +layout(location = 6) in vec4 aColor; +out vec4 vColor2; +layout(location = 7) in vec4 aColor2; +out vec4 vColorSecond; +layout(location = 8) in vec4 aColorSecond; +out vec2 vTexCoord4; +layout(location = 5) in vec2 aTexCoord4; +out vec2 vTexCoord; +layout(location = 2) in vec2 aTexCoord; +out vec2 vTexCoord2; +layout(location = 3) in vec2 aTexCoord2; +out vec2 vTexCoord3; +layout(location = 4) in vec2 aTexCoord3; + +mat3 blizzTranspose(mat4 value) +{ + return mat3(vec3(value[0].xyz), vec3(value[1].xyz), vec3(value[2].xyz)); +} + +vec2 posToTexCoord(vec3 cameraPoint, vec3 normal) +{ + vec3 normPos_495 = normalize(cameraPoint); + vec3 temp_500 = normPos_495 - (normal * (2.0 * dot(normPos_495, normal))); + vec3 temp_657 = vec3(temp_500.x, temp_500.y, temp_500.z + 1.0); + return (normalize(temp_657).xy * 0.5) + vec2(0.5); +} + +void main() +{ + vec4 worldPoint = _93.uPlacementMat * vec4(aPosition, 1.0); + vec4 cameraPoint = _111.scene.uLookAtMat * worldPoint; + mat4 viewModelMat = _111.scene.uLookAtMat * _93.uPlacementMat; + mat4 param = _111.scene.uLookAtMat; + mat4 param_1 = _93.uPlacementMat; + mat3 viewModelMatTransposed = blizzTranspose(param) * blizzTranspose(param_1); + gl_Position = _111.scene.uPMatrix * cameraPoint; + vPosition = vec4(cameraPoint.xyz, 0.0); + vNormal = normalize(viewModelMatTransposed * aNormal); + vColor = aColor.zyxw; + vColor2 = aColor2; + vColorSecond = aColorSecond; + vTexCoord4 = aTexCoord4; + int uVertexShader = _178.VertexShader_UseLitColor.x; + #if (VERTEXSHADER == (-1)) + vTexCoord = aTexCoord; + vTexCoord2 = aTexCoord2; + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 0) + vTexCoord = aTexCoord; + vTexCoord2 = aTexCoord2; + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 1) + vTexCoord = aTexCoord; + vTexCoord2 = reflect(normalize(cameraPoint.xyz), vNormal).xy; + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 2) + vTexCoord = aTexCoord; + vec3 param_2 = vPosition.xyz; + vec3 param_3 = vNormal; + vTexCoord2 = posToTexCoord(param_2, param_3); + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 3) + vTexCoord = aTexCoord; + vTexCoord2 = aTexCoord2; + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 4) + vTexCoord = aTexCoord; + vTexCoord2 = aTexCoord2; + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 5) + vTexCoord = aTexCoord; + vTexCoord2 = aTexCoord2; + vTexCoord3 = reflect(normalize(cameraPoint.xyz), vNormal).xy; + #endif + #if (VERTEXSHADER == 6) + vTexCoord = aTexCoord; + vTexCoord2 = vPosition.xy * (-0.23999999463558197021484375); + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 7) + vTexCoord = aTexCoord; + vTexCoord2 = vPosition.xy * (-0.23999999463558197021484375); + vTexCoord3 = aTexCoord3; + #endif + #if (VERTEXSHADER == 8) + vTexCoord = aTexCoord; + vTexCoord2 = aTexCoord2; + vTexCoord3 = aTexCoord3; + #endif +} + + diff --git a/wwwroot/project.js b/wwwroot/project.js new file mode 100644 index 0000000..14ac46d --- /dev/null +++ b/wwwroot/project.js @@ -0,0 +1 @@ +var Module=typeof Module!="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){if(Module["ENVIRONMENT_IS_PTHREAD"])return;var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="/home/runner/work/WebWowViewerCpp/WebWowViewerCpp/build_packed/project.data";var REMOTE_PACKAGE_BASE="project.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","glsl",true,true);Module["FS_createPath"]("/glsl","glsl20",true,true);Module["FS_createPath"]("/glsl","glsl3.3",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||41943040;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}var wasmBinaryFile;wasmBinaryFile="project.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["kc"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["Pc"];addOnInit(Module["asm"]["lc"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);exception_addRef(info);return info.get_exception_ptr()}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}function ___cxa_free_exception(ptr){return _free(new ExceptionInfo(ptr).ptr)}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){getWasmTableEntry(destructor)(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_decrement_exception_refcount(ptr){if(!ptr)return;exception_decRef(new ExceptionInfo(ptr))}var exceptionLast=0;function ___cxa_end_catch(){_setThrew(0);var info=exceptionCaught.pop();exception_decRef(info);exceptionLast=0}function ___resumeException(ptr){if(!exceptionLast){exceptionLast=ptr}throw ptr}function ___cxa_find_matching_catch_2(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}var typeArray=Array.prototype.slice.call(arguments);for(var i=0;i>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return()=>{crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else return()=>abort("randomDevice")}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;tempI64=[Math.floor(stat.atime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.atime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAP32[buf+64>>2]=0;tempI64=[Math.floor(stat.mtime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.mtime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAP32[buf+80>>2]=0;tempI64=[Math.floor(stat.ctime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.ctime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAP32[buf+96>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size>>0,(tempDouble=id,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos>>2]=tempI64[0],HEAP32[dirp+pos+4>>2]=tempI64[1];tempI64=[(idx+1)*struct_size>>>0,(tempDouble=(idx+1)*struct_size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos+8>>2]=tempI64[0],HEAP32[dirp+pos+12>>2]=tempI64[1];HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~4352;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort("Invalid flags passed to unlinkat")}return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __dlinit(main_dso_handle){}var dlopenMissingError="To use dlopen, you need enable dynamic linking, see https://github.com/emscripten-core/emscripten/wiki/Linking";function __dlopen_js(filename,flag){abort(dlopenMissingError)}function __dlsym_js(handle,symbol){abort(dlopenMissingError)}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}var name=registeredInstance.name;if(!rawType){throwBindingError('type "'+name+'" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError("Cannot register type '"+name+"' twice")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":8,"readValueFromPointer":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])},destructorFunction:null})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[pointer>>2])}function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function __emscripten_date_now(){return Date.now()}function __emscripten_fetch_free(id){delete Fetch.xhrs[id-1]}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function _abort(){abort("")}function getHeapMax(){return 2147483648}function _emscripten_get_heap_max(){return getHeapMax()}var _emscripten_get_now;_emscripten_get_now=()=>performance.now();function _emscripten_is_main_browser_thread(){return!ENVIRONMENT_IS_WORKER}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}var Fetch={xhrs:[],setu64:function(addr,val){HEAPU32[addr>>2]=val;HEAPU32[addr+4>>2]=val/4294967296|0},openDatabase:function(dbname,dbversion,onsuccess,onerror){try{var openRequest=indexedDB.open(dbname,dbversion)}catch(e){return onerror(e)}openRequest.onupgradeneeded=event=>{var db=event.target.result;if(db.objectStoreNames.contains("FILES")){db.deleteObjectStore("FILES")}db.createObjectStore("FILES")};openRequest.onsuccess=event=>onsuccess(event.target.result);openRequest.onerror=error=>onerror(error)},staticInit:function(){var isMainThread=true;var onsuccess=db=>{Fetch.dbInstance=db;if(isMainThread){removeRunDependency("library_fetch_init")}};var onerror=()=>{Fetch.dbInstance=false;if(isMainThread){removeRunDependency("library_fetch_init")}};Fetch.openDatabase("emscripten_filesystem",1,onsuccess,onerror);if(typeof ENVIRONMENT_IS_FETCH_WORKER=="undefined"||!ENVIRONMENT_IS_FETCH_WORKER)addRunDependency("library_fetch_init")}};function fetchXHR(fetch,onsuccess,onerror,onprogress,onreadystatechange){var url=HEAPU32[fetch+8>>2];if(!url){onerror(fetch,0,"no url specified!");return}var url_=UTF8ToString(url);var fetch_attr=fetch+112;var requestMethod=UTF8ToString(fetch_attr);if(!requestMethod)requestMethod="GET";var userData=HEAPU32[fetch+4>>2];var fetchAttributes=HEAPU32[fetch_attr+52>>2];var timeoutMsecs=HEAPU32[fetch_attr+56>>2];var withCredentials=!!HEAPU32[fetch_attr+60>>2];var destinationPath=HEAPU32[fetch_attr+64>>2];var userName=HEAPU32[fetch_attr+68>>2];var password=HEAPU32[fetch_attr+72>>2];var requestHeaders=HEAPU32[fetch_attr+76>>2];var overriddenMimeType=HEAPU32[fetch_attr+80>>2];var dataPtr=HEAPU32[fetch_attr+84>>2];var dataLength=HEAPU32[fetch_attr+88>>2];var fetchAttrLoadToMemory=!!(fetchAttributes&1);var fetchAttrStreamData=!!(fetchAttributes&2);var fetchAttrSynchronous=!!(fetchAttributes&64);var userNameStr=userName?UTF8ToString(userName):undefined;var passwordStr=password?UTF8ToString(password):undefined;var xhr=new XMLHttpRequest;xhr.withCredentials=withCredentials;xhr.open(requestMethod,url_,!fetchAttrSynchronous,userNameStr,passwordStr);if(!fetchAttrSynchronous)xhr.timeout=timeoutMsecs;xhr.url_=url_;xhr.responseType="arraybuffer";if(overriddenMimeType){var overriddenMimeTypeStr=UTF8ToString(overriddenMimeType);xhr.overrideMimeType(overriddenMimeTypeStr)}if(requestHeaders){for(;;){var key=HEAPU32[requestHeaders>>2];if(!key)break;var value=HEAPU32[requestHeaders+4>>2];if(!value)break;requestHeaders+=8;var keyStr=UTF8ToString(key);var valueStr=UTF8ToString(value);xhr.setRequestHeader(keyStr,valueStr)}}Fetch.xhrs.push(xhr);var id=Fetch.xhrs.length;HEAPU32[fetch+0>>2]=id;var data=dataPtr&&dataLength?HEAPU8.slice(dataPtr,dataPtr+dataLength):null;function saveResponse(condition){var ptr=0;var ptrLen=0;if(condition){ptrLen=xhr.response?xhr.response.byteLength:0;ptr=_malloc(ptrLen);HEAPU8.set(new Uint8Array(xhr.response),ptr)}HEAPU32[fetch+12>>2]=ptr;Fetch.setu64(fetch+16,ptrLen)}xhr.onload=e=>{saveResponse(fetchAttrLoadToMemory&&!fetchAttrStreamData);var len=xhr.response?xhr.response.byteLength:0;Fetch.setu64(fetch+24,0);if(len){Fetch.setu64(fetch+32,len)}HEAPU16[fetch+40>>1]=xhr.readyState;HEAPU16[fetch+42>>1]=xhr.status;if(xhr.statusText)stringToUTF8(xhr.statusText,fetch+44,64);if(xhr.status>=200&&xhr.status<300){if(onsuccess)onsuccess(fetch,xhr,e)}else{if(onerror)onerror(fetch,xhr,e)}};xhr.onerror=e=>{saveResponse(fetchAttrLoadToMemory);var status=xhr.status;Fetch.setu64(fetch+24,0);Fetch.setu64(fetch+32,xhr.response?xhr.response.byteLength:0);HEAPU16[fetch+40>>1]=xhr.readyState;HEAPU16[fetch+42>>1]=status;if(onerror)onerror(fetch,xhr,e)};xhr.ontimeout=e=>{if(onerror)onerror(fetch,xhr,e)};xhr.onprogress=e=>{var ptrLen=fetchAttrLoadToMemory&&fetchAttrStreamData&&xhr.response?xhr.response.byteLength:0;var ptr=0;if(fetchAttrLoadToMemory&&fetchAttrStreamData){ptr=_malloc(ptrLen);HEAPU8.set(new Uint8Array(xhr.response),ptr)}HEAPU32[fetch+12>>2]=ptr;Fetch.setu64(fetch+16,ptrLen);Fetch.setu64(fetch+24,e.loaded-ptrLen);Fetch.setu64(fetch+32,e.total);HEAPU16[fetch+40>>1]=xhr.readyState;if(xhr.readyState>=3&&xhr.status===0&&e.loaded>0)xhr.status=200;HEAPU16[fetch+42>>1]=xhr.status;if(xhr.statusText)stringToUTF8(xhr.statusText,fetch+44,64);if(onprogress)onprogress(fetch,xhr,e);if(ptr){_free(ptr)}};xhr.onreadystatechange=e=>{HEAPU16[fetch+40>>1]=xhr.readyState;if(xhr.readyState>=2){HEAPU16[fetch+42>>1]=xhr.status}if(onreadystatechange)onreadystatechange(fetch,xhr,e)};try{xhr.send(data)}catch(e){if(onerror)onerror(fetch,xhr,e)}}function callUserCallback(func){if(ABORT){return}try{func()}catch(e){handleException(e)}}function fetchCacheData(db,fetch,data,onsuccess,onerror){if(!db){onerror(fetch,0,"IndexedDB not available!");return}var fetch_attr=fetch+112;var destinationPath=HEAPU32[fetch_attr+64>>2];if(!destinationPath)destinationPath=HEAPU32[fetch+8>>2];var destinationPathStr=UTF8ToString(destinationPath);try{var transaction=db.transaction(["FILES"],"readwrite");var packages=transaction.objectStore("FILES");var putRequest=packages.put(data,destinationPathStr);putRequest.onsuccess=event=>{HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=200;stringToUTF8("OK",fetch+44,64);onsuccess(fetch,0,destinationPathStr)};putRequest.onerror=error=>{HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=413;stringToUTF8("Payload Too Large",fetch+44,64);onerror(fetch,0,error)}}catch(e){onerror(fetch,0,e)}}function fetchLoadCachedData(db,fetch,onsuccess,onerror){if(!db){onerror(fetch,0,"IndexedDB not available!");return}var fetch_attr=fetch+112;var path=HEAPU32[fetch_attr+64>>2];if(!path)path=HEAPU32[fetch+8>>2];var pathStr=UTF8ToString(path);try{var transaction=db.transaction(["FILES"],"readonly");var packages=transaction.objectStore("FILES");var getRequest=packages.get(pathStr);getRequest.onsuccess=event=>{if(event.target.result){var value=event.target.result;var len=value.byteLength||value.length;var ptr=_malloc(len);HEAPU8.set(new Uint8Array(value),ptr);HEAPU32[fetch+12>>2]=ptr;Fetch.setu64(fetch+16,len);Fetch.setu64(fetch+24,0);Fetch.setu64(fetch+32,len);HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=200;stringToUTF8("OK",fetch+44,64);onsuccess(fetch,0,value)}else{HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=404;stringToUTF8("Not Found",fetch+44,64);onerror(fetch,0,"no data")}};getRequest.onerror=error=>{HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=404;stringToUTF8("Not Found",fetch+44,64);onerror(fetch,0,error)}}catch(e){onerror(fetch,0,e)}}function fetchDeleteCachedData(db,fetch,onsuccess,onerror){if(!db){onerror(fetch,0,"IndexedDB not available!");return}var fetch_attr=fetch+112;var path=HEAPU32[fetch_attr+64>>2];if(!path)path=HEAPU32[fetch+8>>2];var pathStr=UTF8ToString(path);try{var transaction=db.transaction(["FILES"],"readwrite");var packages=transaction.objectStore("FILES");var request=packages.delete(pathStr);request.onsuccess=event=>{var value=event.target.result;HEAPU32[fetch+12>>2]=0;Fetch.setu64(fetch+16,0);Fetch.setu64(fetch+24,0);Fetch.setu64(fetch+32,0);HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=200;stringToUTF8("OK",fetch+44,64);onsuccess(fetch,0,value)};request.onerror=error=>{HEAPU16[fetch+40>>1]=4;HEAPU16[fetch+42>>1]=404;stringToUTF8("Not Found",fetch+44,64);onerror(fetch,0,error)}}catch(e){onerror(fetch,0,e)}}function _emscripten_start_fetch(fetch,successcb,errorcb,progresscb,readystatechangecb){var fetch_attr=fetch+112;var requestMethod=UTF8ToString(fetch_attr);var onsuccess=HEAPU32[fetch_attr+36>>2];var onerror=HEAPU32[fetch_attr+40>>2];var onprogress=HEAPU32[fetch_attr+44>>2];var onreadystatechange=HEAPU32[fetch_attr+48>>2];var fetchAttributes=HEAPU32[fetch_attr+52>>2];var fetchAttrPersistFile=!!(fetchAttributes&4);var fetchAttrNoDownload=!!(fetchAttributes&32);var fetchAttrReplace=!!(fetchAttributes&16);var fetchAttrSynchronous=!!(fetchAttributes&64);function doCallback(f){if(fetchAttrSynchronous){f()}else{callUserCallback(f)}}var reportSuccess=(fetch,xhr,e)=>{doCallback(()=>{if(onsuccess)getWasmTableEntry(onsuccess)(fetch);else if(successcb)successcb(fetch)})};var reportProgress=(fetch,xhr,e)=>{doCallback(()=>{if(onprogress)getWasmTableEntry(onprogress)(fetch);else if(progresscb)progresscb(fetch)})};var reportError=(fetch,xhr,e)=>{doCallback(()=>{if(onerror)getWasmTableEntry(onerror)(fetch);else if(errorcb)errorcb(fetch)})};var reportReadyStateChange=(fetch,xhr,e)=>{doCallback(()=>{if(onreadystatechange)getWasmTableEntry(onreadystatechange)(fetch);else if(readystatechangecb)readystatechangecb(fetch)})};var performUncachedXhr=(fetch,xhr,e)=>{fetchXHR(fetch,reportSuccess,reportError,reportProgress,reportReadyStateChange)};var cacheResultAndReportSuccess=(fetch,xhr,e)=>{var storeSuccess=(fetch,xhr,e)=>{doCallback(()=>{if(onsuccess)getWasmTableEntry(onsuccess)(fetch);else if(successcb)successcb(fetch)})};var storeError=(fetch,xhr,e)=>{doCallback(()=>{if(onsuccess)getWasmTableEntry(onsuccess)(fetch);else if(successcb)successcb(fetch)})};fetchCacheData(Fetch.dbInstance,fetch,xhr.response,storeSuccess,storeError)};var performCachedXhr=(fetch,xhr,e)=>{fetchXHR(fetch,cacheResultAndReportSuccess,reportError,reportProgress,reportReadyStateChange)};if(requestMethod==="EM_IDB_STORE"){var ptr=HEAPU32[fetch_attr+84>>2];fetchCacheData(Fetch.dbInstance,fetch,HEAPU8.slice(ptr,ptr+HEAPU32[fetch_attr+88>>2]),reportSuccess,reportError)}else if(requestMethod==="EM_IDB_DELETE"){fetchDeleteCachedData(Fetch.dbInstance,fetch,reportSuccess,reportError)}else if(!fetchAttrReplace){fetchLoadCachedData(Fetch.dbInstance,fetch,reportSuccess,fetchAttrNoDownload?reportError:fetchAttrPersistFile?performCachedXhr:performUncachedXhr)}else if(!fetchAttrNoDownload){fetchXHR(fetch,fetchAttrPersistFile?cacheResultAndReportSuccess:reportSuccess,reportError,reportProgress,reportReadyStateChange)}else{return 0}return fetch}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function getTempVertexBuffer(sizeBytes){var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},calcBufLength:function calcBufLength(size,type,stride,count){if(stride>0){return count*stride}var typeSize=GL.byteSizeByType[type-GL.byteSizeByTypeRoot];return size*typeSize*count},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function preDrawHandleClientVertexAttribBindings(count){GL.resetBufferBinding=false;for(var i=0;i1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}context.maxVertexAttribs=context.GLctx.getParameter(34921);context.clientBuffers=[];for(var i=0;i=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function _emscripten_webgl_enable_extension(contextHandle,extension){var context=GL.getContext(contextHandle);var extString=UTF8ToString(extension);if(extString.startsWith("GL_"))extString=extString.substr(3);if(extString=="ANGLE_instanced_arrays")__webgl_enable_ANGLE_instanced_arrays(GLctx);if(extString=="OES_vertex_array_object")__webgl_enable_OES_vertex_array_object(GLctx);if(extString=="WEBGL_draw_buffers")__webgl_enable_WEBGL_draw_buffers(GLctx);if(extString=="WEBGL_draw_instanced_base_vertex_base_instance")__webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);if(extString=="WEBGL_multi_draw_instanced_base_vertex_base_instance")__webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(extString=="WEBGL_multi_draw")__webgl_enable_WEBGL_multi_draw(GLctx);var ext=context.GLctx.getExtension(extString);return!!ext}var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];function _emscripten_webgl_get_context_attributes(c,a){if(!a)return-5;c=GL.contexts[c];if(!c)return-3;var t=c.GLctx;if(!t)return-3;t=t.getContextAttributes();HEAP32[a>>2]=t.alpha;HEAP32[a+4>>2]=t.depth;HEAP32[a+8>>2]=t.stencil;HEAP32[a+12>>2]=t.antialias;HEAP32[a+16>>2]=t.premultipliedAlpha;HEAP32[a+20>>2]=t.preserveDrawingBuffer;var power=t["powerPreference"]&&__emscripten_webgl_power_preferences.indexOf(t["powerPreference"]);HEAP32[a+24>>2]=power;HEAP32[a+28>>2]=t.failIfMajorPerformanceCaveat;HEAP32[a+32>>2]=c.version;HEAP32[a+36>>2]=0;HEAP32[a+40>>2]=c.attributes.enableExtensionsByDefault;return 0}function _emscripten_webgl_do_get_current_context(){return GL.currentContext?GL.currentContext.handle:0}var _emscripten_webgl_get_current_context=_emscripten_webgl_do_get_current_context;var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}var tempRet0=0;function getTempRet0(){return tempRet0}var _getTempRet0=getTempRet0;function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){if(target==34962){GLctx.currentArrayBufferBinding=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindBufferRange(target,index,buffer,offset,ptrsize){GLctx["bindBufferRange"](target,index,GL.buffers[buffer],offset,ptrsize)}function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindVertexArray(vao){GLctx["bindVertexArray"](GL.vaos[vao]);var ibo=GLctx.getParameter(34965);GLctx.currentElementArrayBufferBinding=ibo?ibo.name|0:0}function _glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _glBufferData(target,size,data,usage){if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}}function _glBufferSubData(target,offset,size,data){if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glDeleteBuffers(n,buffers){for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}}function _glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDeleteVertexArrays(n,vaos){for(var i=0;i>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDepthMask(flag){GLctx.depthMask(!!flag)}function _glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];cb.enabled=false;GLctx.disableVertexAttribArray(index)}function _glDrawElements(mode,count,type,indices){var buf;if(!GLctx.currentElementArrayBufferBinding){var size=GL.calcBufLength(1,type,0,count);buf=GL.getTempIndexBuffer(size);GLctx.bindBuffer(34963,buf);GLctx.bufferSubData(34963,0,HEAPU8.subarray(indices,indices+size));indices=0}GL.preDrawHandleClientVertexAttribBindings(count);GLctx.drawElements(mode,count,type,indices);GL.postDrawHandleClientVertexAttribBindings(count);if(!GLctx.currentElementArrayBufferBinding){GLctx.bindBuffer(34963,null)}}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){var cb=GL.currentContext.clientBuffers[index];cb.enabled=true;GLctx.enableVertexAttribArray(index)}function _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}var exts=GLctx.getSupportedExtensions()||[];ret=2*exts.length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetInternalformativ(target,internalformat,pname,bufSize,params){if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx["getInternalformatParameter"](target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetUniformBlockIndex(program,uniformBlockName){return GLctx["getUniformBlockIndex"](GL.programs[program],UTF8ToString(uniformBlockName))}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function webglPrepareUniformLocationsBeforeFirstUse(program){var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){GLctx["renderbufferStorageMultisample"](x0,x1,x2,x3,x4)}function _glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function webglGetUniformLocation(location){var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?"["+webglLoc+"]":""))}return webglLoc}else{GL.recordError(1282)}}function _glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)}var miniTempWebGLFloatBuffers=[];function _glUniform4fv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)}var __miniTempWebGLIntBuffers=[];function _glUniform4iv(location,count,value){if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)}function _glUniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding){program=GL.programs[program];GLctx["uniformBlockBinding"](program,uniformBlockIndex,uniformBlockBinding)}function _glUniformMatrix2fv(location,count,transpose,value){if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)}function _glUniformMatrix3fv(location,count,transpose,value){if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)}function _glUniformMatrix4fv(location,count,transpose,value){if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)}function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){var cb=GL.currentContext.clientBuffers[index];if(!GLctx.currentArrayBufferBinding){cb.size=size;cb.type=type;cb.normalized=normalized;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;cb.vertexAttribPointerAdaptor=function(index,size,type,normalized,stride,ptr){this.vertexAttribPointer(index,size,type,normalized,stride,ptr)};return}cb.clientside=false;GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}function maybeExit(){}function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}out('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}GL.newRenderingFrameStarted();Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function safeSetTimeout(func,timeout){return setTimeout(function(){callUserCallback(func)},timeout)}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;preloadedAudios[name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},handledByPreloadPlugin:function(byteArray,fullname,finish,onerror){Browser.init();var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout:function(func){return safeSetTimeout(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){callUserCallback(func)})},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h=0&&charCode<=31)return;getWasmTableEntry(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;getWasmTableEntry(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;getWasmTableEntry(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;getWasmTableEntry(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=delta;if(event.type=="mousewheel"){sx=event.wheelDeltaX}else{sx=event.deltaX}getWasmTableEntry(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;getWasmTableEntry(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;getWasmTableEntry(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:[],lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:[];GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy>0]=gamepad.buttons[i].pressed}for(var i=0;i>2]=gamepad.axes[i]}}else{if(GLFW.joys[joy]){out("glfw joystick disconnected",joy);if(GLFW.joystickFunc){getWasmTableEntry(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=_malloc(event.dataTransfer.files.length*4);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=e=>{if(reader.readyState!=2){++written;out("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){getWasmTableEntry(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i>2]=filename}for(var i=0;i0},getCursorPos:function(winid,x,y){HEAPF64[x>>3]=Browser.mouseX;HEAPF64[y>>3]=Browser.mouseY},getMousePos:function(winid,x,y){HEAP32[x>>2]=Browser.mouseX;HEAP32[y>>2]=Browser.mouseY},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){HEAP32[x>>2]=wx}if(y){HEAP32[y>>2]=wy}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){HEAP32[width>>2]=ww}if(height){HEAP32[height>>2]=wh}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;getWasmTableEntry(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)getWasmTableEntry(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i{GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwPollEvents(){}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetInputMode(winid,mode,value){GLFW.setInputMode(winid,mode,value)}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSetWindowUserPointer(winid,ptr){var win=GLFW.WindowFromId(winid);if(!win)return;win.userptr=ptr}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _offerFileAsDownload(filename_ptr,filename_len){let mime="application/octet-stream";let filename=AsciiToString(filename_ptr);let content=Module.FS.readFile(filename);console.log(`Offering download of "${filename}", with ${content.length} bytes...`);var a=document.createElement("a");a.download=filename;a.href=URL.createObjectURL(new Blob([content],{type:mime}));a.style.display="none";document.body.appendChild(a);a.click();setTimeout(()=>{document.body.removeChild(a);URL.revokeObjectURL(a.href)},2e3)}function setTempRet0(val){tempRet0=val}var _setTempRet0=setTempRet0;function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}function _supplyAnimationList(arrPtr,length){var animationIdArr=Module.HEAP32.subarray(arrPtr/4,arrPtr/4+length);console.log(animationIdArr);Module["animationArrayCallback"](animationIdArr)}function _supplyMeshIds(arrPtr,length){var meshIdArr=Module.HEAP32.subarray(arrPtr/4,arrPtr/4+length);console.log(meshIdArr);if(Module["meshIdArrayCallback"]){Module["meshIdArrayCallback"](meshIdArr)}}function AsciiToString(ptr){var str="";while(1){var ch=HEAPU8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();Fetch.staticInit();var GLctx;var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};var preloadedImages={};var preloadedAudios={};var asmLibraryArg={"i":___cxa_allocate_exception,"p":___cxa_begin_catch,"jc":___cxa_decrement_exception_refcount,"v":___cxa_end_catch,"b":___cxa_find_matching_catch_2,"g":___cxa_find_matching_catch_3,"M":___cxa_free_exception,"ic":___cxa_increment_exception_refcount,"Va":___cxa_rethrow,"hc":___cxa_rethrow_primary_exception,"j":___cxa_throw,"gc":___cxa_uncaught_exceptions,"e":___resumeException,"Ua":___syscall_fcntl64,"fc":___syscall_getcwd,"ec":___syscall_getdents64,"dc":___syscall_ioctl,"cc":___syscall_lstat64,"bc":___syscall_mkdirat,"ac":___syscall_newfstatat,"Ta":___syscall_openat,"$b":___syscall_rmdir,"_b":___syscall_stat64,"Zb":___syscall_unlinkat,"Vb":__dlinit,"Ub":__dlopen_js,"Tb":__dlsym_js,"ab":__embind_register_bigint,"Sb":__embind_register_bool,"Rb":__embind_register_emval,"Ra":__embind_register_float,"D":__embind_register_integer,"r":__embind_register_memory_view,"Qa":__embind_register_std_string,"la":__embind_register_std_wstring,"Qb":__embind_register_void,"Pb":__emscripten_date_now,"Ob":__emscripten_fetch_free,"Nb":__emscripten_get_now_is_monotonic,"Q":_abort,"Mb":_emscripten_get_heap_max,"ka":_emscripten_get_now,"Lb":_emscripten_is_main_browser_thread,"Kb":_emscripten_memcpy_big,"Jb":_emscripten_resize_heap,"Ib":_emscripten_run_script,"Hb":_emscripten_start_fetch,"Pa":_emscripten_webgl_enable_extension,"Gb":_emscripten_webgl_get_context_attributes,"ja":_emscripten_webgl_get_current_context,"Yb":_environ_get,"Xb":_environ_sizes_get,"ca":_fd_close,"Wb":_fd_read,"bb":_fd_seek,"Sa":_fd_write,"a":_getTempRet0,"ba":_glActiveTexture,"aa":_glAttachShader,"Fb":_glBindAttribLocation,"C":_glBindBuffer,"Eb":_glBindBufferRange,"w":_glBindFramebuffer,"L":_glBindRenderbuffer,"Db":_glBindTexture,"Cb":_glBindVertexArray,"Oa":_glBlendFuncSeparate,"Bb":_glBlitFramebuffer,"x":_glBufferData,"G":_glBufferSubData,"Na":_glClear,"Ma":_glClearColor,"La":_glClearDepthf,"Ka":_glColorMask,"$":_glCompileShader,"ia":_glCompressedTexImage2D,"Ja":_glCreateProgram,"_":_glCreateShader,"Z":_glDeleteBuffers,"ha":_glDeleteFramebuffers,"Ia":_glDeleteRenderbuffers,"Ha":_glDeleteTextures,"Ab":_glDeleteVertexArrays,"Ga":_glDepthFunc,"K":_glDepthMask,"Y":_glDepthRangef,"u":_glDisable,"zb":_glDisableVertexAttribArray,"X":_glDrawElements,"B":_glEnable,"Fa":_glEnableVertexAttribArray,"Ea":_glFramebufferRenderbuffer,"ga":_glFramebufferTexture2D,"Da":_glFrontFace,"F":_glGenBuffers,"fa":_glGenFramebuffers,"Ca":_glGenRenderbuffers,"Ba":_glGenTextures,"yb":_glGenVertexArrays,"ea":_glGenerateMipmap,"Aa":_glGetActiveUniform,"za":_glGetFloatv,"J":_glGetIntegerv,"xb":_glGetInternalformativ,"ya":_glGetProgramInfoLog,"I":_glGetProgramiv,"W":_glGetShaderInfoLog,"E":_glGetShaderiv,"P":_glGetUniformBlockIndex,"xa":_glGetUniformLocation,"wa":_glLinkProgram,"wb":_glReadBuffer,"va":_glReadPixels,"V":_glRenderbufferStorageMultisample,"ua":_glScissor,"U":_glShaderSource,"z":_glTexImage2D,"ta":_glTexParameterf,"n":_glTexParameteri,"h":_glUniform1i,"vb":_glUniform4fv,"ub":_glUniform4iv,"O":_glUniformBlockBinding,"tb":_glUniformMatrix2fv,"sb":_glUniformMatrix3fv,"rb":_glUniformMatrix4fv,"m":_glUseProgram,"sa":_glVertexAttribPointer,"qb":_glViewport,"pb":_glfwCreateWindow,"ob":_glfwGetCursorPos,"nb":_glfwInit,"mb":_glfwMakeContextCurrent,"lb":_glfwPollEvents,"kb":_glfwSetCursorPosCallback,"ra":_glfwSetInputMode,"jb":_glfwSetKeyCallback,"ib":_glfwSetMouseButtonCallback,"hb":_glfwSetScrollCallback,"gb":_glfwSetWindowSizeCallback,"fb":_glfwSetWindowUserPointer,"eb":_glfwSwapBuffers,"db":_glfwTerminate,"da":_glfwWindowHint,"qa":invoke_diii,"pa":invoke_fiii,"o":invoke_i,"c":invoke_ii,"f":invoke_iii,"q":invoke_iiii,"l":invoke_iiiii,"cb":invoke_iiiiid,"N":invoke_iiiiii,"A":invoke_iiiiiii,"oa":invoke_iiiiiiii,"T":invoke_iiiiiiiiiiii,"$a":invoke_j,"_a":invoke_jiiii,"k":invoke_v,"t":invoke_vi,"d":invoke_vii,"s":invoke_viii,"S":invoke_viiii,"y":invoke_viiiiiii,"H":invoke_viiiiiiiiii,"R":invoke_viiiiiiiiiiiiiii,"Za":invoke_viijii,"na":_offerFileAsDownload,"ma":_setTempRet0,"Ya":_strftime_l,"Xa":_supplyAnimationList,"Wa":_supplyMeshIds};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["lc"]).apply(null,arguments)};var _createWebJsScene=Module["_createWebJsScene"]=function(){return(_createWebJsScene=Module["_createWebJsScene"]=Module["asm"]["mc"]).apply(null,arguments)};var _createScreenshot=Module["_createScreenshot"]=function(){return(_createScreenshot=Module["_createScreenshot"]=Module["asm"]["nc"]).apply(null,arguments)};var _startExport=Module["_startExport"]=function(){return(_startExport=Module["_startExport"]=Module["asm"]["oc"]).apply(null,arguments)};var _setNewUrls=Module["_setNewUrls"]=function(){return(_setNewUrls=Module["_setNewUrls"]=Module["asm"]["pc"]).apply(null,arguments)};var _setScene=Module["_setScene"]=function(){return(_setScene=Module["_setScene"]=Module["asm"]["qc"]).apply(null,arguments)};var _setMap=Module["_setMap"]=function(){return(_setMap=Module["_setMap"]=Module["asm"]["rc"]).apply(null,arguments)};var _setSceneFileDataId=Module["_setSceneFileDataId"]=function(){return(_setSceneFileDataId=Module["_setSceneFileDataId"]=Module["asm"]["sc"]).apply(null,arguments)};var _setSceneSize=Module["_setSceneSize"]=function(){return(_setSceneSize=Module["_setSceneSize"]=Module["asm"]["tc"]).apply(null,arguments)};var _addHorizontalViewDir=Module["_addHorizontalViewDir"]=function(){return(_addHorizontalViewDir=Module["_addHorizontalViewDir"]=Module["asm"]["uc"]).apply(null,arguments)};var _addVerticalViewDir=Module["_addVerticalViewDir"]=function(){return(_addVerticalViewDir=Module["_addVerticalViewDir"]=Module["asm"]["vc"]).apply(null,arguments)};var _zoomInFromMouseScroll=Module["_zoomInFromMouseScroll"]=function(){return(_zoomInFromMouseScroll=Module["_zoomInFromMouseScroll"]=Module["asm"]["wc"]).apply(null,arguments)};var _addCameraViewOffset=Module["_addCameraViewOffset"]=function(){return(_addCameraViewOffset=Module["_addCameraViewOffset"]=Module["asm"]["xc"]).apply(null,arguments)};var _startMovingForward=Module["_startMovingForward"]=function(){return(_startMovingForward=Module["_startMovingForward"]=Module["asm"]["yc"]).apply(null,arguments)};var _startMovingBackwards=Module["_startMovingBackwards"]=function(){return(_startMovingBackwards=Module["_startMovingBackwards"]=Module["asm"]["zc"]).apply(null,arguments)};var _stopMovingForward=Module["_stopMovingForward"]=function(){return(_stopMovingForward=Module["_stopMovingForward"]=Module["asm"]["Ac"]).apply(null,arguments)};var _stopMovingBackwards=Module["_stopMovingBackwards"]=function(){return(_stopMovingBackwards=Module["_stopMovingBackwards"]=Module["asm"]["Bc"]).apply(null,arguments)};var _setClearColor=Module["_setClearColor"]=function(){return(_setClearColor=Module["_setClearColor"]=Module["asm"]["Cc"]).apply(null,arguments)};var _enablePortalCulling=Module["_enablePortalCulling"]=function(){return(_enablePortalCulling=Module["_enablePortalCulling"]=Module["asm"]["Dc"]).apply(null,arguments)};var _setFarPlane=Module["_setFarPlane"]=function(){return(_setFarPlane=Module["_setFarPlane"]=Module["asm"]["Ec"]).apply(null,arguments)};var _setFarPlaneForCulling=Module["_setFarPlaneForCulling"]=function(){return(_setFarPlaneForCulling=Module["_setFarPlaneForCulling"]=Module["asm"]["Fc"]).apply(null,arguments)};var _setAnimationId=Module["_setAnimationId"]=function(){return(_setAnimationId=Module["_setAnimationId"]=Module["asm"]["Gc"]).apply(null,arguments)};var _setMeshIdArray=Module["_setMeshIdArray"]=function(){return(_setMeshIdArray=Module["_setMeshIdArray"]=Module["asm"]["Hc"]).apply(null,arguments)};var _setReplaceParticleColors=Module["_setReplaceParticleColors"]=function(){return(_setReplaceParticleColors=Module["_setReplaceParticleColors"]=Module["asm"]["Ic"]).apply(null,arguments)};var _resetReplaceParticleColor=Module["_resetReplaceParticleColor"]=function(){return(_resetReplaceParticleColor=Module["_resetReplaceParticleColor"]=Module["asm"]["Jc"]).apply(null,arguments)};var _setTextures=Module["_setTextures"]=function(){return(_setTextures=Module["_setTextures"]=Module["asm"]["Kc"]).apply(null,arguments)};var _setScenePos=Module["_setScenePos"]=function(){return(_setScenePos=Module["_setScenePos"]=Module["asm"]["Lc"]).apply(null,arguments)};var _gameloop=Module["_gameloop"]=function(){return(_gameloop=Module["_gameloop"]=Module["asm"]["Mc"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["Nc"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["Oc"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["Qc"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Rc"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["Sc"]).apply(null,arguments)};var __embind_initialize_bindings=Module["__embind_initialize_bindings"]=function(){return(__embind_initialize_bindings=Module["__embind_initialize_bindings"]=Module["asm"]["Tc"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["Uc"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["Vc"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Wc"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["Xc"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["Yc"]).apply(null,arguments)};var dynCall_j=Module["dynCall_j"]=function(){return(dynCall_j=Module["dynCall_j"]=Module["asm"]["Zc"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["_c"]).apply(null,arguments)};var dynCall_jiiii=Module["dynCall_jiiii"]=function(){return(dynCall_jiiii=Module["dynCall_jiiii"]=Module["asm"]["$c"]).apply(null,arguments)};function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiid(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_j(index){var sp=stackSave();try{return dynCall_j(index)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viijii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;Module["FS"]=FS;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/wwwroot/project.js.symbols b/wwwroot/project.js.symbols new file mode 100644 index 0000000..8d08227 --- /dev/null +++ b/wwwroot/project.js.symbols @@ -0,0 +1,3163 @@ +0:getTempRet0 +1:__cxa_find_matching_catch_2 +2:invoke_ii +3:invoke_vii +4:__resumeException +5:invoke_iii +6:__cxa_find_matching_catch_3 +7:glUniform1i +8:__cxa_allocate_exception +9:__cxa_throw +10:invoke_v +11:invoke_iiiii +12:glUseProgram +13:glTexParameteri +14:invoke_i +15:__cxa_begin_catch +16:invoke_iiii +17:_embind_register_memory_view +18:invoke_viii +19:invoke_vi +20:glDisable +21:__cxa_end_catch +22:glBindFramebuffer +23:glBufferData +24:invoke_viiiiiii +25:glTexImage2D +26:invoke_iiiiiii +27:glEnable +28:glBindBuffer +29:_embind_register_integer +30:glGetShaderiv +31:glGenBuffers +32:glBufferSubData +33:invoke_viiiiiiiiii +34:glGetProgramiv +35:glGetIntegerv +36:glDepthMask +37:glBindRenderbuffer +38:__cxa_free_exception +39:invoke_iiiiii +40:glUniformBlockBinding +41:glGetUniformBlockIndex +42:abort +43:invoke_viiiiiiiiiiiiiii +44:invoke_viiii +45:invoke_iiiiiiiiiiii +46:glShaderSource +47:glRenderbufferStorageMultisample +48:glGetShaderInfoLog +49:glDrawElements +50:glDepthRangef +51:glDeleteBuffers +52:glCreateShader +53:glCompileShader +54:glAttachShader +55:glActiveTexture +56:__wasi_fd_close +57:glfwWindowHint +58:glGenerateMipmap +59:glGenFramebuffers +60:glFramebufferTexture2D +61:glDeleteFramebuffers +62:glCompressedTexImage2D +63:emscripten_webgl_get_current_context +64:emscripten_get_now +65:_embind_register_std_wstring +66:setTempRet0 +67:offerFileAsDownload +68:invoke_iiiiiiii +69:invoke_fiii +70:invoke_diii +71:glfwSetInputMode +72:glVertexAttribPointer +73:glTexParameterf +74:glScissor +75:glReadPixels +76:glLinkProgram +77:glGetUniformLocation +78:glGetProgramInfoLog +79:glGetFloatv +80:glGetActiveUniform +81:glGenTextures +82:glGenRenderbuffers +83:glFrontFace +84:glFramebufferRenderbuffer +85:glEnableVertexAttribArray +86:glDepthFunc +87:glDeleteTextures +88:glDeleteRenderbuffers +89:glCreateProgram +90:glColorMask +91:glClearDepthf +92:glClearColor +93:glClear +94:glBlendFuncSeparate +95:emscripten_webgl_enable_extension +96:_embind_register_std_string +97:_embind_register_float +98:__wasi_fd_write +99:__syscall_openat +100:__syscall_fcntl64 +101:__cxa_rethrow +102:supplyMeshIds +103:supplyAnimationList +104:strftime_l +105:legalimport$invoke_viijii +106:legalimport$invoke_jiiii +107:legalimport$invoke_j +108:legalimport$_embind_register_bigint +109:legalimport$__wasi_fd_seek +110:invoke_iiiiid +111:glfwTerminate +112:glfwSwapBuffers +113:glfwSetWindowUserPointer +114:glfwSetWindowSizeCallback +115:glfwSetScrollCallback +116:glfwSetMouseButtonCallback +117:glfwSetKeyCallback +118:glfwSetCursorPosCallback +119:glfwPollEvents +120:glfwMakeContextCurrent +121:glfwInit +122:glfwGetCursorPos +123:glfwCreateWindow +124:glViewport +125:glUniformMatrix4fv +126:glUniformMatrix3fv +127:glUniformMatrix2fv +128:glUniform4iv +129:glUniform4fv +130:glReadBuffer +131:glGetInternalformativ +132:glGenVertexArrays +133:glDisableVertexAttribArray +134:glDeleteVertexArrays +135:glBlitFramebuffer +136:glBindVertexArray +137:glBindTexture +138:glBindBufferRange +139:glBindAttribLocation +140:emscripten_webgl_get_context_attributes +141:emscripten_start_fetch +142:emscripten_run_script +143:emscripten_resize_heap +144:emscripten_memcpy_big +145:emscripten_is_main_browser_thread +146:emscripten_get_heap_max +147:_emscripten_get_now_is_monotonic +148:_emscripten_fetch_free +149:_emscripten_date_now +150:_embind_register_void +151:_embind_register_emval +152:_embind_register_bool +153:_dlsym_js +154:_dlopen_js +155:_dlinit +156:__wasi_fd_read +157:__wasi_environ_sizes_get +158:__wasi_environ_get +159:__syscall_unlinkat +160:__syscall_stat64 +161:__syscall_rmdir +162:__syscall_newfstatat +163:__syscall_mkdirat +164:__syscall_lstat64 +165:__syscall_ioctl +166:__syscall_getdents64 +167:__syscall_getcwd +168:__cxa_uncaught_exceptions +169:__cxa_rethrow_primary_exception +170:__cxa_increment_exception_refcount +171:__cxa_decrement_exception_refcount +172:dlfree +173:operator\20new\28unsigned\20long\29 +174:std::__2::__shared_weak_count::__release_weak\28\29 +175:std::__2::basic_string\2c\20std::__2::allocator>::__init_copy_ctor_external\28char\20const*\2c\20unsigned\20long\29 +176:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::~__shared_ptr_pointer\28\29 +177:__memcpy +178:nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>::json_value::destroy\28nlohmann::detail::value_t\29 +179:memset +180:IScene::resetReplaceParticleColor\28\29 +181:std::__2::vector>::__throw_length_error\28\29\20const +182:std::__2::basic_string\2c\20std::__2::allocator>::~basic_string\28\29 +183:dlmalloc +184:tbb::detail::r1::ITT_DoUnsafeOneTimeInitialization\28\29 +185:nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>&\20nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>::operator\5b\5d\28char\20const*\29 +186:std::__2::condition_variable::notify_one\28\29 +187:memcmp +188:std::__2::basic_string\2c\20std::__2::allocator>::append\28char\20const*\2c\20unsigned\20long\29 +189:std::__2::basic_ostream>&\20std::__2::__put_character_sequence>\28std::__2::basic_ostream>&\2c\20char\20const*\2c\20unsigned\20long\29 +190:dlrealloc +191:std::__2::basic_string\2c\20std::__2::allocator>::append\28char\20const*\29 +192:void\20std::__2::vector\2c\20std::__2::allocator>>::__push_back_slow_path\20const&>\28std::__2::shared_ptr\20const&\29 +193:std::__throw_bad_array_new_length\28\29 +194:std::__2::locale::use_facet\28std::__2::locale::id&\29\20const +195:std::__2::basic_ostream>::flush\28\29 +196:std::__2::to_string\28int\29 +197:Map::produceUpdateStage\28std::__2::shared_ptr\29::$_7::operator\28\29\28std::__2::shared_ptr\20const&\2c\20std::__2::shared_ptr\20const&\29\20const +198:strlen +199:std::__2::pair>>\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table>>\2c\20std::__2::__unordered_map_hasher>>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal>>\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>>>::__emplace_unique_key_args>>\20const&>\28int\20const&\2c\20std::__2::pair>>\20const&\29 +200:tbb::detail::r1::allocate\28tbb::detail::d1::small_object_pool*&\2c\20unsigned\20long\2c\20tbb::detail::d1::execution_data\20const&\29 +201:std::__2::unique_ptr::~unique_ptr\28\29 +202:tbb::detail::r1::throw_exception\28tbb::detail::d0::exception_id\29 +203:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\28\29 +204:std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::destroy\28std::__2::__tree_node>\2c\20void*>*\29 +205:std::terminate\28\29 +206:std::__2::__tree\2c\20std::__2::allocator>\2c\20tinygltf::Value>\2c\20std::__2::__map_value_compare\2c\20std::__2::allocator>\2c\20std::__2::__value_type\2c\20std::__2::allocator>\2c\20tinygltf::Value>\2c\20std::__2::less\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20tinygltf::Value>>>::destroy\28std::__2::__tree_node\2c\20std::__2::allocator>\2c\20tinygltf::Value>\2c\20void*>*\29 +207:std::__2::__shared_weak_count::lock\28\29 +208:tinygltf::Value::~Value\28\29 +209:std::__2::basic_ostream>::put\28char\29 +210:std::__2::basic_string\2c\20std::__2::allocator>::__throw_length_error\28\29\20const +211:NullScene::getCameraNum\28\29 +212:std::__2::basic_string\2c\20std::__2::allocator>::__assign_external\28char\20const*\2c\20unsigned\20long\29 +213:std::__2::basic_string\2c\20std::__2::allocator>::insert\28unsigned\20long\2c\20char\20const*\29 +214:stbi__get32le\28stbi__context*\29 +215:std::__2::basic_string\2c\20std::__2::allocator>::~basic_string\28\29 +216:tbb::detail::r1::execution_slot\28tbb::detail::d1::execution_data\20const*\29 +217:__shgetc +218:std::__2::pair>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20bool>\20std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::__emplace_hint_unique_key_args>\20const&>\28std::__2::__tree_const_iterator>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20unsigned\20int\20const&\2c\20std::__2::pair>\20const&\29 +219:std::__2::basic_string\2c\20std::__2::allocator>::operator=\28wchar_t\20const*\29 +220:std::__2::basic_string\2c\20std::__2::allocator>::operator=\28char\20const*\29 +221:std::__2::unordered_map>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>>::unordered_map\28std::__2::unordered_map>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>>\20const&\29 +222:std::__2::__next_prime\28unsigned\20long\29 +223:M2Track>::initTrack\28void*\2c\20M2Array*\2c\20CM2SequenceLoad*\29 +224:tbb::detail::r1::spawn\28tbb::detail::d1::task&\2c\20tbb::detail::d1::task_group_context&\29 +225:tbb::detail::r1::deallocate\28tbb::detail::d1::small_object_pool&\2c\20void*\2c\20unsigned\20long\2c\20tbb::detail::d1::execution_data\20const&\29 +226:std::__2::pair\2c\20std::__2::allocator>\2c\20std::__2::unordered_map>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>>>\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table\2c\20std::__2::allocator>\2c\20std::__2::unordered_map>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>>>\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20std::__2::unordered_map>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>>>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20std::__2::unordered_map>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>>>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20std::__2::unordered_map>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>>>>>::__emplace_unique_key_args\2c\20std::__2::allocator>\2c\20std::__2::pair\2c\20std::__2::allocator>\20const\2c\20std::__2::unordered_map>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>>>\20const&>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::pair\2c\20std::__2::allocator>\20const\2c\20std::__2::unordered_map>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>>>\20const&\29 +227:std::__2::pair\2c\20std::__2::allocator>\2c\20shaderMetaData>\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table\2c\20std::__2::allocator>\2c\20shaderMetaData>\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20shaderMetaData>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20shaderMetaData>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20shaderMetaData>>>::__emplace_unique_key_args\2c\20std::__2::allocator>\2c\20std::__2::pair\2c\20std::__2::allocator>\20const\2c\20shaderMetaData>\20const&>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::pair\2c\20std::__2::allocator>\20const\2c\20shaderMetaData>\20const&\29 +228:memmove +229:tbb::detail::r1::observer_list::do_notify_entry_observers\28tbb::detail::r1::observer_proxy*&\2c\20bool\29 +230:std::__2::ios_base::~ios_base\28\29 +231:std::__2::basic_string\2c\20std::__2::allocator>::__erase_external_with_move\28unsigned\20long\2c\20unsigned\20long\29 +232:__multf3 +233:NullScene::setReplaceTextureArray\28std::__2::vector>&\29 +234:std::__2::locale::id::__get\28\29 +235:std::__2::__throw_out_of_range\28char\20const*\29 +236:float\20animateTrack\28AnimationStruct\20const&\2c\20M2Track&\2c\20M2Array&\2c\20std::__2::vector>&\2c\20float&\29 +237:std::__2::vector\2c\20std::__2::allocator>>::reserve\28unsigned\20long\29 +238:std::__2::locale::__imp::install\28std::__2::locale::facet*\2c\20long\29 +239:std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::destroy\28std::__2::__tree_node>\2c\20void*>*\29 +240:nlohmann::detail::output_adapter_protocol::~output_adapter_protocol\28\29 +241:tinygltf::ValueToJson\28tinygltf::Value\20const&\2c\20nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>*\29 +242:std::__2::unique_ptr<_IO_FILE\2c\20int\20\28*\29\28_IO_FILE*\29>::unique_ptr\28_IO_FILE*\2c\20std::__2::__dependent_type\2c\20true>::__good_rval_ref_type\29 +243:void\20std::__2::__tree_balance_after_insert*>\28std::__2::__tree_node_base*\2c\20std::__2::__tree_node_base*\29 +244:std::__2::basic_string\2c\20std::__2::allocator>&\20std::__2::basic_string\2c\20std::__2::allocator>::__assign_no_alias\28char\20const*\2c\20unsigned\20long\29 +245:sinf +246:cosf +247:std::__2::pair>\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table>\2c\20std::__2::__unordered_map_hasher>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal>\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>>::__emplace_unique_key_args\2c\20std::__2::tuple<>>\28int\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple&&\2c\20std::__2::tuple<>&&\29 +248:std::__2::basic_string\2c\20std::__2::allocator>::compare\28unsigned\20long\2c\20unsigned\20long\2c\20char\20const*\2c\20unsigned\20long\29\20const +249:tinygltf::Value::Value\28tinygltf::Value\20const&\29 +250:std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::destroy\28std::__2::__tree_node>\2c\20void*>*\29 +251:std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::destroy\28std::__2::__tree_node>\2c\20void*>*\29 +252:tbb::detail::r1::task_stream<\28tbb::detail::r1::task_stream_accessor_type\291>::try_pop\28unsigned\20int\29 +253:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20long\2c\20unsigned\20long\2c\20std::__2::allocator\20const&\29 +254:std::__2::__cloc\28\29 +255:unsigned\20int\20std::__2::__sort4\2c\20std::__2::shared_ptr>&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::__less\2c\20std::__2::shared_ptr>&\29 +256:tinygltf::SerializeStringProperty\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>&\29 +257:std::__2::pair\2c\20std::__2::allocator>\2c\20int>\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table\2c\20std::__2::allocator>\2c\20int>\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20int>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20int>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20int>>>::__emplace_unique_key_args\2c\20std::__2::allocator>\2c\20std::__2::pair\2c\20std::__2::allocator>\20const\2c\20int>\20const&>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::pair\2c\20std::__2::allocator>\20const\2c\20int>\20const&\29 +258:std::__2::ios_base::init\28void*\29 +259:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\28char\20const*\29 +260:std::__2::basic_ostream>::sentry::~sentry\28\29 +261:std::__2::basic_ostream>::operator<<\28int\29 +262:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__on_zero_shared\28\29 +263:stbi__grow_buffer_unsafe\28stbi__jpeg*\29 +264:stbi__get32be\28stbi__context*\29 +265:memchr +266:FrameCounter::endMeasurement\28\29 +267:FrameCounter::beginMeasurement\28\29 +268:tbb::detail::r1::notify_by_address_one\28void*\29 +269:std::__2::unique_ptr::reset\28unsigned\20char*\29 +270:std::__2::map\2c\20std::__2::allocator>\2c\20tinygltf::Value\2c\20std::__2::less\2c\20std::__2::allocator>>\2c\20std::__2::allocator\2c\20std::__2::allocator>\20const\2c\20tinygltf::Value>>>::map\28std::__2::map\2c\20std::__2::allocator>\2c\20tinygltf::Value\2c\20std::__2::less\2c\20std::__2::allocator>>\2c\20std::__2::allocator\2c\20std::__2::allocator>\20const\2c\20tinygltf::Value>>>\20const&\29 +271:std::__2::basic_streambuf>::~basic_streambuf\28\29 +272:is_equal\28std::type_info\20const*\2c\20std::type_info\20const*\2c\20bool\29 +273:std::__2::pair>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20bool>\20std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::__emplace_hint_unique_key_args>\20const&>\28std::__2::__tree_const_iterator>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20unsigned\20int\20const&\2c\20std::__2::pair>\20const&\29 +274:std::__2::pair\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>>>::__emplace_unique_key_args\2c\20std::__2::allocator>\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple\2c\20std::__2::allocator>\20const&>\2c\20std::__2::tuple<>>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple\2c\20std::__2::allocator>\20const&>&&\2c\20std::__2::tuple<>&&\29 +275:std::__2::__hash_iterator\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>\2c\20void*>*>\20std::__2::__hash_table\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>>>::find\2c\20std::__2::allocator>>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +276:std::__2::__check_grouping\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20unsigned\20int&\29 +277:tbb::detail::r1::task_stream<\28tbb::detail::r1::task_stream_accessor_type\291>::pop_specific\28unsigned\20int&\2c\20long\29 +278:std::__2::pair>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20bool>\20std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::__emplace_hint_unique_key_args>\20const&>\28std::__2::__tree_const_iterator>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20unsigned\20int\20const&\2c\20std::__2::pair>\20const&\29 +279:std::__2::ios_base::clear\28unsigned\20int\29 +280:std::__2::basic_string\2c\20std::__2::allocator>&\20std::__2::basic_string\2c\20std::__2::allocator>::__assign_no_alias\28char\20const*\2c\20unsigned\20long\29 +281:std::__2::__libcpp_locale_guard::~__libcpp_locale_guard\28\29 +282:_tr_flush_bits +283:tinygltf::SerializeExtensionMap\28std::__2::map\2c\20std::__2::allocator>\2c\20tinygltf::Value\2c\20std::__2::less\2c\20std::__2::allocator>>\2c\20std::__2::allocator\2c\20std::__2::allocator>\20const\2c\20tinygltf::Value>>>\20const&\2c\20nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>&\29 +284:std::__2::basic_string\2c\20std::__2::allocator>\20std::__2::operator+\2c\20std::__2::allocator>\28char\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +285:out +286:__multi3 +287:CRndSeed::Uniform\28\29 +288:tbb::detail::r1::notify_waiters\28unsigned\20long\29 +289:std::__2::basic_string\2c\20std::__2::allocator>::operator=\28std::__2::basic_string\2c\20std::__2::allocator>&&\29 +290:std::__2::__libcpp_snprintf_l\28char*\2c\20unsigned\20long\2c\20__locale_struct*\2c\20char\20const*\2c\20...\29 +291:pad +292:color_tree_cleanup\28ColorTree*\29 +293:__ashlti3 +294:tbb::detail::r1::task_group_context_impl::destroy\28tbb::detail::d1::task_group_context&\29 +295:std::__2::pair\2c\20std::__2::allocator>\20const\2c\20std::__2::vector>>::pair\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::vector>\20const&\29 +296:std::__2::pair\2c\20std::__2::allocator>\2c\20std::__2::vector>>\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table\2c\20std::__2::allocator>\2c\20std::__2::vector>>\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20std::__2::vector>>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20std::__2::vector>>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20std::__2::vector>>>>::__emplace_unique_key_args\2c\20std::__2::allocator>\2c\20std::__2::pair\2c\20std::__2::allocator>\20const\2c\20std::__2::vector>>\20const&>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::pair\2c\20std::__2::allocator>\20const\2c\20std::__2::vector>>\20const&\29 +297:std::__2::basic_string\2c\20std::__2::allocator>::__throw_out_of_range\28\29\20const +298:std::__2::basic_streambuf>::basic_streambuf\28\29 +299:nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>::push_back\28nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>&&\29 +300:fwrite +301:bool\20mathfu::InverseHelper\28mathfu::Matrix\20const&\2c\20mathfu::Matrix*\2c\20float\29 +302:strcmp +303:std::__2::shared_ptr::~shared_ptr\28\29 +304:std::__2::promise::~promise\28\29 +305:std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::destroy\28std::__2::__tree_node>\2c\20void*>*\29 +306:std::__2::__throw_bad_weak_ptr\28\29 +307:std::__2::__throw_bad_function_call\28\29 +308:filter\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20LodePNGColorMode\20const*\2c\20LodePNGEncoderSettings\20const*\29 +309:call_zseek64 +310:crc32 +311:__addtf3 +312:void\20std::__2::__sift_down\2c\20std::__2::shared_ptr>&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::__less\2c\20std::__2::shared_ptr>&\2c\20std::__2::iterator_traits*>::difference_type\2c\20std::__2::shared_ptr*\29 +313:tinygltf::Accessor::~Accessor\28\29 +314:tbb::detail::r1::initialize\28tbb::detail::d1::task_group_context&\29 +315:tbb::detail::r1::execute_and_wait\28tbb::detail::d1::task&\2c\20tbb::detail::d1::task_group_context&\2c\20tbb::detail::d1::wait_context&\2c\20tbb::detail::d1::task_group_context&\29 +316:tbb::detail::r1::allocate\28tbb::detail::d1::small_object_pool*&\2c\20unsigned\20long\29 +317:tbb::detail::d1::start_for*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::quick_sort_body*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::auto_partitioner\20const>::~start_for\28\29 +318:strdup +319:std::__2::pair>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20bool>\20std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::__emplace_hint_unique_key_args>\20const&>\28std::__2::__tree_const_iterator>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20unsigned\20int\20const&\2c\20std::__2::pair>\20const&\29 +320:std::__2::basic_string\2c\20std::__2::allocator>::push_back\28char\29 +321:std::__2::basic_string\2c\20std::__2::allocator>::begin\28\29 +322:std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::destroy\28std::__2::__tree_node>\2c\20void*>*\29 +323:std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::destroy\28std::__2::__tree_node>\2c\20void*>*\29 +324:std::__2::__num_put_base::__identify_padding\28char*\2c\20char*\2c\20std::__2::ios_base\20const&\29 +325:filterScanline\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20char\29 +326:bool\20std::__2::__insertion_sort_incomplete\2c\20std::__2::shared_ptr>&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::__less\2c\20std::__2::shared_ptr>&\29 +327:__floatsitf +328:tinygltf::Accessor::Accessor\28tinygltf::Accessor\20const&\29 +329:tbb::detail::r1::max_concurrency\28tbb::detail::d1::task_arena_base\20const*\29 +330:sysconf +331:std::__2::char_traits::copy\28char*\2c\20char\20const*\2c\20unsigned\20long\29 +332:std::__2::basic_filebuf>::~basic_filebuf\28\29 +333:std::__2::__throw_future_error\28std::__2::future_errc\29 +334:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +335:stbiw__encode_png_line\28unsigned\20char*\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20int\2c\20signed\20char*\29 +336:ghc::filesystem::path::postprocess_path_with_format\28std::__2::basic_string\2c\20std::__2::allocator>&\2c\20ghc::filesystem::path::format\29 +337:_tr_flush_block +338:__dynamic_cast +339:void\20std::__2::vector>::__push_back_slow_path\28tinygltf::Accessor\20const&\29 +340:std::__2::moneypunct::do_grouping\28\29\20const +341:std::__2::__num_get_base::__get_base\28std::__2::ios_base&\29 +342:gMeshTemplate::~gMeshTemplate\28\29 +343:MathHelper::PlanesUndPoints::PlanesUndPoints\28MathHelper::PlanesUndPoints\20const&\29 +344:void\20tinygltf::SerializeNumberArrayProperty\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::vector>\20const&\2c\20nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>&\29 +345:tbb::detail::r1::concurrent_monitor_mutex::lock\28\29 +346:std::__2::enable_if<__is_cpp17_forward_iterator*>::value\20&&\20is_constructible\2c\20std::__2::iterator_traits*>::reference>::value\2c\20void>::type\20std::__2::vector\2c\20std::__2::allocator>>::assign*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\29 +347:std::__2::basic_stringbuf\2c\20std::__2::allocator>::str\28\29\20const +348:std::__2::__libcpp_locale_guard::__libcpp_locale_guard\28__locale_struct*&\29 +349:__sindf +350:__shlim +351:__cosdf +352:MathHelper::checkFrustum\28std::__2::vector>\20const&\2c\20CAaBox\20const&\29 +353:Cache::reject\28std::__2::basic_string\2c\20std::__2::allocator>\29 +354:Cache::~Cache\28\29 +355:Cache::processCacheQueue\28int\29 +356:zip64local_getLong +357:tbb::detail::r1::notify_by_address\28void*\2c\20unsigned\20long\29 +358:tbb::detail::r1::cancel_group_execution\28tbb::detail::d1::task_group_context&\29 +359:std::__2::char_traits::copy\28wchar_t*\2c\20wchar_t\20const*\2c\20unsigned\20long\29 +360:std::__2::basic_string\2c\20std::__2::allocator>::operator=\28std::__2::basic_string\2c\20std::__2::allocator>&&\29 +361:std::__2::basic_ostream>::sentry::sentry\28std::__2::basic_ostream>&\29 +362:std::__2::array\2c\206ul>::~array\28\29 +363:std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::destroy\28std::__2::__tree_node>\2c\20void*>*\29 +364:std::__2::__function::__value_func::swap\28std::__2::__function::__value_func&\29 +365:stbi__get_marker\28stbi__jpeg*\29 +366:mathfu::Vector\20animateTrack\2c\20mathfu::Vector>\28AnimationStruct\20const&\2c\20M2Track>&\2c\20M2Array&\2c\20std::__2::vector>&\2c\20mathfu::Vector&\29 +367:int\20std::__2::__get_up_to_n_digits>>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\2c\20int\29 +368:int\20std::__2::__get_up_to_n_digits>>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\2c\20int\29 +369:dlsym +370:call_ztell64 +371:bool\20std::__2::operator==>\28std::__2::istreambuf_iterator>\20const&\2c\20std::__2::istreambuf_iterator>\20const&\29 +372:__extenddftf2 +373:MathHelper::transformAABBWithMat4\28mathfu::Matrix\20const&\2c\20mathfu::Vector\20const&\2c\20mathfu::Vector\20const&\29 +374:M2ObjectListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29 +375:GShaderPermutationGL33::~GShaderPermutationGL33\28\29.1 +376:GShaderPermutationGL33::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +377:Cache::clear\28\29 +378:CRndSeed::UniformPos\28\29 +379:tbb::detail::r1::task_group_context_impl::bind_to\28tbb::detail::d1::task_group_context&\2c\20tbb::detail::r1::thread_data*\29 +380:tbb::detail::r1::governor::init_external_thread\28\29 +381:tbb::detail::r1::arena::is_out_of_work\28\29 +382:strncpy +383:std::__2::time_get>>::get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const +384:std::__2::time_get>>::get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20char\20const*\2c\20char\20const*\29\20const +385:std::__2::char_traits::move\28char*\2c\20char\20const*\2c\20unsigned\20long\29 +386:std::__2::basic_string\2c\20std::__2::allocator>\20std::__2::operator+\2c\20std::__2::allocator>\28char\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>&&\29 +387:std::__2::basic_ios>::setstate\28unsigned\20int\29 +388:snprintf +389:nlohmann::detail::serializer\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>>::dump\28nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>\20const&\2c\20bool\2c\20bool\2c\20unsigned\20int\2c\20unsigned\20int\29 +390:lodepng_zlib_compress\28unsigned\20char**\2c\20unsigned\20long*\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20LodePNGCompressSettings\20const*\29 +391:bool\20std::__2::operator==>\28std::__2::istreambuf_iterator>\20const&\2c\20std::__2::istreambuf_iterator>\20const&\29 +392:FirstPersonCamera::zoomInFromMouseScroll\28float\29 +393:Cache::getFileId\28int\29 +394:vsnprintf +395:void\20std::__2::reverse\28char*\2c\20char*\29 +396:void\20WmoGroupObject::queryBspTree>\28CAaBox&\2c\20int\2c\20PointerChecker&\2c\20std::__2::vector>&\29 +397:tinygltf::BufferView::BufferView\28tinygltf::BufferView\20const&\29 +398:tbb::detail::r1::market::adjust_demand\28tbb::detail::r1::arena&\2c\20int\2c\20bool\29 +399:tbb::detail::r1::handle_perror\28int\2c\20char\20const*\29 +400:tbb::detail::r1::concurrent_monitor_base::prepare_wait\28tbb::detail::r1::wait_node&\29 +401:tbb::detail::r1::concurrent_monitor_base::cancel_wait\28tbb::detail::r1::wait_node&\29 +402:tbb::detail::d1::mutex::lock\28\29 +403:std::runtime_error::~runtime_error\28\29 +404:std::__2::moneypunct::do_pos_format\28\29\20const +405:std::__2::istreambuf_iterator>::operator*\28\29\20const +406:std::__2::basic_string\2c\20std::__2::allocator>::end\28\29 +407:std::__2::basic_string\2c\20std::__2::allocator>::end\28\29 +408:std::__2::basic_filebuf>::open\28char\20const*\2c\20unsigned\20int\29 +409:std::__2::basic_filebuf>::basic_filebuf\28\29 +410:std::__2::__tree_node_base*&\20std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::__find_equal\28std::__2::__tree_const_iterator>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20std::__2::__tree_end_node*>*&\2c\20std::__2::__tree_node_base*&\2c\20unsigned\20int\20const&\29 +411:std::__2::__num_put_base::__format_int\28char*\2c\20char\20const*\2c\20bool\2c\20unsigned\20int\29 +412:std::__2::__num_get::__stage2_int_loop\28wchar_t\2c\20int\2c\20char*\2c\20char*&\2c\20unsigned\20int&\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20wchar_t\20const*\29 +413:std::__2::__num_get::__stage2_int_loop\28char\2c\20int\2c\20char*\2c\20char*&\2c\20unsigned\20int&\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20char\20const*\29 +414:nlohmann::detail::type_error::create\28int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +415:nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>::basic_json\28nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>\20const&\29 +416:getenv +417:fflush +418:addPaddingBits\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20int\29 +419:M2Object::setLoadParams\28int\2c\20std::__2::vector>\2c\20std::__2::vector\2c\20std::__2::allocator>>\29 +420:ICamera::isCompatibleWithInfiniteZ\28\29 +421:void\20std::__2::vector>::__push_back_slow_path\28tinygltf::BufferView\20const&\29 +422:void\20std::__2::vector>::__push_back_slow_path\28LightResult\20const&\29 +423:void\20std::__2::__insertion_sort_3\2c\20std::__2::shared_ptr>&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::__less\2c\20std::__2::shared_ptr>&\29 +424:tbb::detail::r1::task_stream<\28tbb::detail::r1::task_stream_accessor_type\290>::try_pop\28unsigned\20int\29 +425:tbb::detail::r1::resume\28tbb::detail::r1::suspend_point_type*\29 +426:tbb::detail::r1::notify_by_address_all\28void*\29 +427:swapc +428:std::runtime_error::runtime_error\28char\20const*\29 +429:std::__2::pair>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20bool>\20std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::__emplace_hint_unique_key_args>\20const&>\28std::__2::__tree_const_iterator>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20unsigned\20int\20const&\2c\20std::__2::pair>\20const&\29 +430:std::__2::ostreambuf_iterator>\20std::__2::__pad_and_output>\28std::__2::ostreambuf_iterator>\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20std::__2::ios_base&\2c\20char\29 +431:std::__2::istreambuf_iterator>::operator++\28\29 +432:std::__2::istreambuf_iterator>::istreambuf_iterator\28std::__2::basic_istream>&\29 +433:std::__2::enable_if<__is_cpp17_forward_iterator*>>::value\20&&\20is_constructible\2c\20std::__2::iterator_traits*>>::reference>::value\2c\20std::__2::__wrap_iter*>>::type\20std::__2::vector\2c\20std::__2::allocator>>::insert*>>\28std::__2::__wrap_iter\20const*>\2c\20std::__2::__wrap_iter*>\2c\20std::__2::__wrap_iter*>\29 +434:std::__2::basic_string\2c\20std::__2::allocator>::insert\28unsigned\20long\2c\20char\20const*\2c\20unsigned\20long\29 +435:std::__2::__tree_node_base*&\20std::__2::__tree\2c\20std::__2::allocator>\2c\20tinygltf::Value>\2c\20std::__2::__map_value_compare\2c\20std::__2::allocator>\2c\20std::__2::__value_type\2c\20std::__2::allocator>\2c\20tinygltf::Value>\2c\20std::__2::less\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20tinygltf::Value>>>::__find_equal\2c\20std::__2::allocator>>\28std::__2::__tree_const_iterator\2c\20std::__2::allocator>\2c\20tinygltf::Value>\2c\20std::__2::__tree_node\2c\20std::__2::allocator>\2c\20tinygltf::Value>\2c\20void*>*\2c\20long>\2c\20std::__2::__tree_end_node*>*&\2c\20std::__2::__tree_node_base*&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +436:std::__2::__hash_table>\2c\20std::__2::__unordered_map_hasher>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal>\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>>::__rehash\28unsigned\20long\29 +437:stbi__convert_format\28unsigned\20char*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 +438:scalbn +439:sbrk +440:ghc::filesystem::detail::status_ex\28ghc::filesystem::path\20const&\2c\20std::__2::error_code&\2c\20ghc::filesystem::file_status*\2c\20unsigned\20long\20long*\2c\20unsigned\20long\20long*\2c\20long\20long*\2c\20int\29 +441:fiprintf +442:__lshrti3 +443:__letf2 +444:GShaderPermutationGL33::GShaderPermutationGL33\28std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::shared_ptr\20const&\29 +445:zip64local_getLong64 +446:void\20tbb::detail::r1::concurrent_monitor_base::notify_relaxed\28\29::'lambda'\28tbb::detail::r1::market_context\29>\28void\20tbb::detail::r1::arena::advertise_new_work<\28tbb::detail::r1::arena::new_work_type\291>\28\29::'lambda'\28tbb::detail::r1::market_context\29\20const&\29 +447:void\20std::__2::shared_ptr::reset\28IShaderPermutation*\29 +448:unsigned\20int\20std::__2::__sort3&\2c\20int*>\28int*\2c\20int*\2c\20int*\2c\20std::__2::__less&\29 +449:unsigned\20int\20std::__2::__sort3\2c\20std::__2::allocator>>&\29::$_0&\2c\20mathfu::Vector*>\28mathfu::Vector*\2c\20mathfu::Vector*\2c\20mathfu::Vector*\2c\20MathHelper::getHullPoints\28std::__2::vector\2c\20std::__2::allocator>>&\29::$_0&\29 +450:unsigned\20int\20std::__2::__sort3\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29::$_1&\2c\20LightResult*>\28LightResult*\2c\20LightResult*\2c\20LightResult*\2c\20Map::updateLightAndSkyboxData\28std::__2::shared_ptr\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29::$_1&\29 +451:unsigned\20int\20std::__2::__sort3\29::$_7&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_7&\29 +452:unsigned\20char\20animateTrack\28AnimationStruct\20const&\2c\20M2Track&\2c\20M2Array&\2c\20std::__2::vector>&\2c\20unsigned\20char&\29 +453:tinygltf::Node::~Node\28\29 +454:tinygltf::Buffer::~Buffer\28\29 +455:tbb::detail::r1::task_dispatcher::steal_or_get_critical\28tbb::detail::r1::execution_data_ext&\2c\20tbb::detail::r1::arena&\2c\20unsigned\20int\2c\20tbb::detail::r1::FastRandom&\2c\20long\2c\20bool\29 +456:tbb::detail::r1::task_dispatcher::get_stream_or_critical_task\28tbb::detail::r1::execution_data_ext&\2c\20tbb::detail::r1::arena&\2c\20tbb::detail::r1::task_stream<\28tbb::detail::r1::task_stream_accessor_type\290>&\2c\20unsigned\20int&\2c\20long\2c\20bool\29 +457:tbb::detail::r1::task_dispatcher::get_inbox_or_critical_task\28tbb::detail::r1::execution_data_ext&\2c\20tbb::detail::r1::mail_inbox&\2c\20long\2c\20bool\29 +458:tbb::detail::r1::outermost_worker_waiter::continue_execution\28tbb::detail::r1::arena_slot&\2c\20tbb::detail::d1::task*&\29\20const +459:tbb::detail::r1::arena_slot::get_task\28tbb::detail::r1::execution_data_ext&\2c\20long\29 +460:tbb::detail::r1::PrintExtraVersionInfo\28char\20const*\2c\20char\20const*\2c\20...\29 +461:tbb::detail::d1::start_for*>>\2c\20tbb::detail::d1::quick_sort_pretest_body*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::auto_partitioner\20const>::cancel\28tbb::detail::d1::execution_data&\29 +462:tbb::detail::d1::quick_sort_range*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>::split_range\28tbb::detail::d1::quick_sort_range*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>&\29 +463:strchr +464:std::exception_ptr::~exception_ptr\28\29 +465:std::__2::pair\2c\20std::__2::allocator>\20const\2c\20tinygltf::Value>::pair\28std::__2::pair\2c\20std::__2::allocator>\20const\2c\20tinygltf::Value>\20const&\29 +466:std::__2::pair>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20bool>\20std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::__emplace_hint_unique_key_args>\20const&>\28std::__2::__tree_const_iterator>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20unsigned\20int\20const&\2c\20std::__2::pair>\20const&\29 +467:std::__2::pair>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20bool>\20std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::__emplace_hint_unique_key_args>\20const&>\28std::__2::__tree_const_iterator>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20unsigned\20int\20const&\2c\20std::__2::pair>\20const&\29 +468:std::__2::pair\2c\20std::__2::allocator>\2c\20int>\2c\20std::__2::__tree_node\2c\20std::__2::allocator>\2c\20int>\2c\20void*>*\2c\20long>\2c\20bool>\20std::__2::__tree\2c\20std::__2::allocator>\2c\20int>\2c\20std::__2::__map_value_compare\2c\20std::__2::allocator>\2c\20std::__2::__value_type\2c\20std::__2::allocator>\2c\20int>\2c\20std::__2::less\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20int>>>::__emplace_unique_key_args\2c\20std::__2::allocator>\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple\2c\20std::__2::allocator>&&>\2c\20std::__2::tuple<>>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple\2c\20std::__2::allocator>&&>&&\2c\20std::__2::tuple<>&&\29 +469:std::__2::ostreambuf_iterator>\20std::__2::__pad_and_output>\28std::__2::ostreambuf_iterator>\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20std::__2::ios_base&\2c\20wchar_t\29 +470:std::__2::istreambuf_iterator>::operator++\28\29 +471:std::__2::enable_shared_from_this::shared_from_this\28\29 +472:std::__2::enable_if<__is_cpp17_forward_iterator::value\20&&\20is_constructible::reference>::value\2c\20void>::type\20std::__2::vector>::assign\28double\20const*\2c\20double\20const*\29 +473:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\28wchar_t\20const*\29 +474:std::__2::basic_string\2c\20std::__2::allocator>\20ghc::filesystem::detail::systemErrorText\28int\29 +475:std::__2::basic_string\2c\20std::__2::allocator>::compare\28char\20const*\29\20const +476:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by_and_replace\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20char\20const*\29 +477:std::__2::allocator_traits>::allocate\28std::__2::allocator&\2c\20unsigned\20long\29 +478:std::__2::allocator_traits>::allocate\28std::__2::allocator&\2c\20unsigned\20long\29 +479:std::__2::__tree>::destroy\28std::__2::__tree_node*\29 +480:std::__2::__throw_system_error\28int\2c\20char\20const*\29 +481:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +482:std::__2::__num_get::__stage2_int_prep\28std::__2::ios_base&\2c\20wchar_t&\29 +483:std::__2::__num_get::__do_widen\28std::__2::ios_base&\2c\20wchar_t*\29\20const +484:std::__2::__num_get::__stage2_int_prep\28std::__2::ios_base&\2c\20char&\29 +485:std::__2::__hash_table\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::allocator>\2c\20std::__2::__hash_value_type\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20std::__2::weak_ptr>>>::__rehash\28unsigned\20long\29 +486:std::__2::__call_once\28unsigned\20long\20volatile&\2c\20void*\2c\20void\20\28*\29\28void*\29\29 +487:mathfu::Vector\20animateTrack\2c\20mathfu::Vector>\28AnimationStruct\20const&\2c\20M2Track>&\2c\20M2Array&\2c\20std::__2::vector>&\2c\20mathfu::Vector&\29 +488:main +489:ghc::filesystem::path::iterator::updateCurrent\28\29 +490:ghc::filesystem::filesystem_error::filesystem_error\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20ghc::filesystem::path\20const&\2c\20std::__2::error_code\29 +491:fmt_u +492:flush_pending +493:float\20animateTrack\28AnimationStruct\20const&\2c\20M2Track&\2c\20M2Array&\2c\20std::__2::vector>&\2c\20float&\29 +494:dlcalloc +495:__tandf +496:__itt_report_error\28int\2c\20...\29\20\28.llvm.5409248318739920059\29 +497:__floatunsitf +498:__dl_invalid_handle +499:Map::~Map\28\29 +500:M2Object::getTexture\28int\29 +501:M2Object::getBlpTextureData\28int\29 +502:GMeshGL33::~GMeshGL33\28\29 +503:GMeshGL20::~GMeshGL20\28\29 +504:FirstPersonCamera::setCameraLookAt\28float\2c\20float\2c\20float\29 +505:Cache::get\28std::__2::basic_string\2c\20std::__2::allocator>\29 +506:void\20std::__2::vector\2c\20std::__2::allocator>>::__push_back_slow_path>\28std::__2::shared_ptr&&\29 +507:void\20std::__2::reverse\28wchar_t*\2c\20wchar_t*\29 +508:void\20std::__2::__introsort\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29&\2c\20std::__2::shared_ptr*>\28auto\2c\20auto\2c\20auto\2c\20std::__2::iterator_traits::difference_type\29 +509:void\20std::__2::__introsort\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29&\2c\20std::__2::shared_ptr*>\28auto\2c\20auto\2c\20auto\2c\20std::__2::iterator_traits::difference_type\29 +510:void\20std::__2::__introsort\29::$_8&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_8&\2c\20std::__2::iterator_traits*>::difference_type\29 +511:void\20std::__2::__introsort\29::$_7&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_7&\2c\20std::__2::iterator_traits*>::difference_type\29 +512:void\20std::__2::__introsort\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29&\2c\20std::__2::shared_ptr*>\28auto\2c\20auto\2c\20auto\2c\20std::__2::iterator_traits::difference_type\29 +513:unsigned\20int\20std::__2::__sort4\29::$_8&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_8&\29 +514:trimmed\28std::__2::basic_string\2c\20std::__2::allocator>\29 +515:tinygltf::Node::Node\28tinygltf::Node\20const&\29 +516:tinygltf::Buffer::Buffer\28tinygltf::Buffer\20const&\29 +517:tbb::detail::r1::task_dispatcher::internal_suspend\28\29 +518:tbb::detail::r1::task_dispatcher::do_post_resume_action\28\29 +519:tbb::detail::r1::runtime_warning\28char\20const*\2c\20...\29 +520:tbb::detail::r1::market::try_destroy_arena\28tbb::detail::r1::arena*\2c\20unsigned\20long\2c\20unsigned\20int\29 +521:tbb::detail::r1::DoOneTimeInitialization\28\29 +522:tbb::detail::d1::start_for*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::quick_sort_body*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::auto_partitioner\20const>::cancel\28tbb::detail::d1::execution_data&\29 +523:tbb::detail::d1::rw_mutex::lock\28\29 +524:std::__2::vector\2c\20std::__2::allocator>>::__append\28unsigned\20long\29 +525:std::__2::unordered_map\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>::operator\5b\5d\28unsigned\20long\20const&\29 +526:std::__2::shared_ptr::operator=\28std::__2::shared_ptr\20const&\29 +527:std::__2::future_error::~future_error\28\29.1 +528:std::__2::enable_if<__is_cpp17_forward_iterator::value\20&&\20is_constructible::reference>::value\2c\20void>::type\20std::__2::vector>::assign\28unsigned\20char*\2c\20unsigned\20char*\29 +529:std::__2::enable_if<__is_cpp17_forward_iterator::value\20&&\20is_constructible::reference>::value\2c\20void>::type\20std::__2::vector>::assign\28int\20const*\2c\20int\20const*\29 +530:std::__2::deque\2c\20std::__2::allocator>>::__add_back_capacity\28\29 +531:std::__2::codecvt::do_unshift\28__mbstate_t&\2c\20char*\2c\20char*\2c\20char*&\29\20const +532:std::__2::basic_string\2c\20std::__2::allocator>::__null_terminate_at\28char*\2c\20unsigned\20long\29 +533:std::__2::basic_streambuf>::~basic_streambuf\28\29 +534:std::__2::basic_istream>::sentry::sentry\28std::__2::basic_istream>&\2c\20bool\29 +535:std::__2::__tree\2c\20std::__2::allocator>\2c\20int>\2c\20std::__2::__map_value_compare\2c\20std::__2::allocator>\2c\20std::__2::__value_type\2c\20std::__2::allocator>\2c\20int>\2c\20std::__2::less\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20int>>>::destroy\28std::__2::__tree_node\2c\20std::__2::allocator>\2c\20int>\2c\20void*>*\29 +536:std::__2::__throw_bad_cast\28\29 +537:std::__2::__shared_ptr_emplace>::__shared_ptr_emplace&\2c\20std::__2::shared_ptr&\2c\20SMOGroupInfo&\2c\20int&>\28std::__2::allocator\2c\20mathfu::Matrix&\2c\20std::__2::shared_ptr&\2c\20SMOGroupInfo&\2c\20int&\29 +538:std::__2::__shared_ptr_emplace>::__shared_ptr_emplace&>\28std::__2::allocator\2c\20std::__2::shared_ptr&\29 +539:std::__2::__hash_table\2c\20std::__2::allocator>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20std::__2::allocator\2c\20std::__2::allocator>>>::remove\28std::__2::__hash_const_iterator\2c\20std::__2::allocator>\2c\20void*>*>\29 +540:std::__2::__compressed_pair\2c\20std::__2::allocator>::__rep\2c\20std::__2::allocator>::__compressed_pair\28std::__2::__default_init_tag&&\2c\20std::__2::__default_init_tag&&\29 +541:std::__2::__compressed_pair<_IO_FILE*\2c\20int\20\28*\29\28_IO_FILE*\29>::__compressed_pair<_IO_FILE*&\2c\20int\20\28*\29\28_IO_FILE*\29>\28_IO_FILE*&\2c\20int\20\28*&&\29\28_IO_FILE*\29\29 +542:stbi__zbuild_huffman\28stbi__zhuffman*\2c\20unsigned\20char\20const*\2c\20int\29 +543:stbi__get8\28stbi__context*\29 +544:nlohmann::detail::serializer\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>>::dump_escaped\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20bool\29 +545:mbrtowc +546:fmodf +547:fmod +548:fclose +549:bool\20std::__2::operator!=>\28std::__2::istreambuf_iterator>\20const&\2c\20std::__2::istreambuf_iterator>\20const&\29 +550:adler32 +551:__fseeko +552:WmoObject::setLoadingParam\28SMMapObjDef&\29 +553:WMOGroupListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29 +554:NullScene::produceUpdateStage\28std::__2::shared_ptr\29 +555:MathHelper::checkFrustum\28MathHelper::FrustumCullingData\20const&\2c\20CAaBox\20const&\29 +556:M2Object::createPlacementMatrix\28mathfu::Vector\2c\20float\2c\20mathfu::Vector\2c\20mathfu::Matrix*\29 +557:IDevice::insertAfterVersion\28std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 +558:HuffmanTree_makeFromLengths2\28HuffmanTree*\29 +559:GShaderPermutationGL20::~GShaderPermutationGL20\28\29.1 +560:GShaderPermutationGL20::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +561:GShaderPermutationGL20::GShaderPermutationGL20\28std::__2::basic_string\2c\20std::__2::allocator>&\2c\20IDevice*\29 +562:FrameViewsHolder::getOrCreateExterior\28MathHelper::FrustumCullingData\20const&\29 +563:Cache::get\28std::__2::basic_string\2c\20std::__2::allocator>\29 +564:Cache::getFileId\28int\29 +565:CRndSeed::uint32t\28\29 +566:CRibbonEmitter::RibbonFrame::~RibbonFrame\28\29 +567:zipper::Zipper::Impl::close\28\29 +568:zip64local_putValue +569:wcrtomb +570:void\20std::__2::vector>::__push_back_slow_path\28tinygltf::Node\20const&\29 +571:void\20std::__2::vector>::__push_back_slow_path\28tinygltf::Buffer\20const&\29 +572:void\20std::__2::__introsort\2c\20std::__2::shared_ptr>&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::__less\2c\20std::__2::shared_ptr>&\2c\20std::__2::iterator_traits*>::difference_type\29 +573:ungetc +574:trinkle +575:tinygltf::AnimationSampler::AnimationSampler\28tinygltf::AnimationSampler\20const&\29 +576:tinygltf::AnimationChannel::~AnimationChannel\28\29 +577:tinygltf::AnimationChannel::AnimationChannel\28tinygltf::AnimationChannel\20const&\29 +578:tbb::detail::r1::wait_on_address\28void*\2c\20tbb::detail::d1::delegate_base&\2c\20unsigned\20long\29 +579:tbb::detail::r1::task_dispatcher::get_suspend_point\28\29 +580:tbb::detail::r1::swap_coroutine\28tbb::detail::r1::coroutine_type&\2c\20tbb::detail::r1::coroutine_type&\29 +581:tbb::detail::r1::observe\28tbb::detail::d1::task_scheduler_observer&\2c\20bool\29 +582:tbb::detail::r1::market::arena_in_need\28tbb::detail::r1::arena*\29 +583:tbb::detail::r1::itt_make_task_group\28tbb::detail::d1::itt_domain_enum\2c\20void*\2c\20unsigned\20long\20long\2c\20void*\2c\20unsigned\20long\20long\2c\20tbb::detail::d0::string_resource_index\29 +584:strncat +585:std::__2::vector\2c\20std::__2::allocator>>::erase\28std::__2::__wrap_iter\20const*>\2c\20std::__2::__wrap_iter\20const*>\29 +586:std::__2::shared_ptr\20std::__2::allocate_shared\2c\20std::__2::shared_ptr&\2c\20void>\28std::__2::allocator\20const&\2c\20std::__2::shared_ptr&\29 +587:std::__2::shared_ptr::operator=\28std::__2::shared_ptr&&\29 +588:std::__2::pair>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20bool>\20std::__2::__tree>\2c\20std::__2::__map_value_compare>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator>>>::__emplace_hint_unique_key_args>\20const&>\28std::__2::__tree_const_iterator>\2c\20std::__2::__tree_node>\2c\20void*>*\2c\20long>\2c\20unsigned\20int\20const&\2c\20std::__2::pair>\20const&\29 +589:std::__2::moneypunct::do_decimal_point\28\29\20const +590:std::__2::moneypunct::do_decimal_point\28\29\20const +591:std::__2::ios_base::failure::~failure\28\29.1 +592:std::__2::ctype::__classic_upper_table\28\29 +593:std::__2::ctype::__classic_lower_table\28\29 +594:std::__2::codecvt\20const&\20std::__2::use_facet>\28std::__2::locale\20const&\29 +595:std::__2::codecvt::do_max_length\28\29\20const +596:std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29 +597:std::__2::basic_string\2c\20std::__2::allocator>\20const*\20std::__2::__scan_keyword>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype\20const&\2c\20unsigned\20int&\2c\20bool\29 +598:std::__2::basic_string\2c\20std::__2::allocator>\20ghc::filesystem::detail::toUtf8\28char\20const*\29 +599:std::__2::basic_string\2c\20std::__2::allocator>\20const*\20std::__2::__scan_keyword>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype>\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::ctype\20const&\2c\20unsigned\20int&\2c\20bool\29 +600:std::__2::basic_string\2c\20std::__2::allocator>::resize\28unsigned\20long\2c\20char\29 +601:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +602:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 +603:std::__2::basic_streambuf>::pbackfail\28int\29 +604:std::__2::basic_ostream>::~basic_ostream\28\29.1 +605:std::__2::basic_ostream>::write\28char\20const*\2c\20long\29 +606:std::__2::basic_istream>::~basic_istream\28\29.1 +607:std::__2::basic_istream>::seekg\28long\20long\2c\20std::__2::ios_base::seekdir\29 +608:std::__2::basic_istream>::read\28char*\2c\20long\29 +609:std::__2::basic_iostream>::~basic_iostream\28\29.1 +610:std::__2::allocator_traits>::deallocate\28std::__2::allocator&\2c\20wchar_t*\2c\20unsigned\20long\29 +611:std::__2::allocator_traits>::deallocate\28std::__2::allocator&\2c\20char*\2c\20unsigned\20long\29 +612:std::__2::__tree\2c\20std::__2::allocator>\2c\20tinygltf::Parameter>\2c\20std::__2::__map_value_compare\2c\20std::__2::allocator>\2c\20std::__2::__value_type\2c\20std::__2::allocator>\2c\20tinygltf::Parameter>\2c\20std::__2::less\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20tinygltf::Parameter>>>::destroy\28std::__2::__tree_node\2c\20std::__2::allocator>\2c\20tinygltf::Parameter>\2c\20void*>*\29 +613:std::__2::__throw_runtime_error\28char\20const*\29 +614:std::__2::__thread_struct::~__thread_struct\28\29 +615:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +616:std::__2::__num_put_base::__format_float\28char*\2c\20char\20const*\2c\20unsigned\20int\29 +617:std::__2::__num_get::__stage2_float_loop\28wchar_t\2c\20bool&\2c\20char&\2c\20char*\2c\20char*&\2c\20wchar_t\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20unsigned\20int&\2c\20wchar_t*\29 +618:std::__2::__num_get::__stage2_float_loop\28char\2c\20bool&\2c\20char&\2c\20char*\2c\20char*&\2c\20char\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20int*\2c\20unsigned\20int*&\2c\20unsigned\20int&\2c\20char*\29 +619:std::__2::__hash_const_iterator\2c\20std::__2::allocator>\2c\20void*>*>\20std::__2::__hash_table\2c\20std::__2::allocator>\2c\20std::__2::hash\2c\20std::__2::allocator>>\2c\20std::__2::equal_to\2c\20std::__2::allocator>>\2c\20std::__2::allocator\2c\20std::__2::allocator>>>::find\2c\20std::__2::allocator>>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const +620:std::__2::__function::__func\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14\2c\20std::__2::allocator\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14>\2c\20void\20\28\29>::destroy\28\29 +621:std::__2::__function::__func\2c\20void\20\28\29>::operator\28\29\28\29 +622:std::__2::__assoc_sub_state::wait\28\29 +623:std::__2::__assoc_state::__on_zero_shared\28\29 +624:stbi__readval\28stbi__context*\2c\20int\2c\20unsigned\20char*\29 +625:stbi__hdr_gettoken\28stbi__context*\2c\20char*\29 +626:shr +627:shl +628:mathfu::Quaternion::Slerp\28mathfu::Quaternion\20const&\2c\20mathfu::Quaternion\20const&\2c\20float\29 +629:legalfunc$invoke_jiiii +630:ghc::filesystem::path::root_name\28\29\20const +631:ghc::filesystem::directory_iterator::impl::impl\28ghc::filesystem::path\20const&\2c\20ghc::filesystem::directory_options\29 +632:getc +633:getPixelColorRGBA16\28unsigned\20short*\2c\20unsigned\20short*\2c\20unsigned\20short*\2c\20unsigned\20short*\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20LodePNGColorMode\20const*\29 +634:fopen +635:findAnimationIndex\28unsigned\20int\2c\20M2Array*\2c\20M2Array*\29 +636:fill_window +637:dlopen +638:dispose_chunk +639:char*\20std::__2::copy\2c\20char*>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\2c\20char*\29 +640:char*\20std::__2::__itoa::append4\28char*\2c\20unsigned\20int\29 +641:bpmnode_create\28BPMLists*\2c\20int\2c\20unsigned\20int\2c\20BPMNode*\29 +642:bool\20std::__2::operator==\2c\20std::__2::allocator>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20char\20const*\29 +643:bool\20std::__2::operator!=>\28std::__2::istreambuf_iterator>\20const&\2c\20std::__2::istreambuf_iterator>\20const&\29 +644:_tr_stored_block +645:__toread +646:__pthread_key_create +647:__cxxabiv1::__base_class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const +648:RequestProcessor::~RequestProcessor\28\29.1 +649:MathHelper::getFrustumClipsFromMatrix\28mathfu::Matrix\20const&\29 +650:MathHelper::convertV69ToV2\28vector_2fp_6_9&\29 +651:M2ObjectListContainer::addToDraw\28std::__2::shared_ptr\20const&\29 +652:M2Object::setModelFileName\28std::__2::basic_string\2c\20std::__2::allocator>\29 +653:M2Object::getTextureWeight\28M2SkinProfile*\2c\20M2Data*\2c\20int\2c\20int\2c\20std::__2::vector>\20const&\29 +654:M2Object::getCombinedColor\28M2SkinProfile*\2c\20int\2c\20std::__2::vector\2c\20std::__2::allocator>>\20const&\29 +655:M2Object::createSingleMesh\28M2Data\20const*\2c\20int\2c\20int\2c\20std::__2::shared_ptr\2c\20M2Batch\20const*\2c\20M2SkinSection\20const*\2c\20M2MaterialInst&\2c\20EGxBlendEnum&\2c\20bool\29 +656:GVertexBufferGL20::unbind\28\29 +657:GMeshGL20::setRenderOrder\28int\29 +658:GM2MeshGL20::setSortDistance\28float\29 +659:GM2MeshGL20::setPriorityPlane\28int\29 +660:GM2MeshGL20::getSortDistance\28\29 +661:GDeviceGL33::drawMesh\28std::__2::shared_ptr\2c\20std::__2::shared_ptr\29 +662:GBlpTextureGL20::bind\28\29 +663:zipCloseFileInZipRaw64 +664:zip64FlushWriteBuffer +665:wchar_t\20const*\20std::__2::find\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const&\29 +666:void\20tinygltf::SerializeNumberArrayProperty\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::vector>\20const&\2c\20nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>&\29 +667:void\20std::__2::vector\2c\20std::__2::allocator>>::__push_back_slow_path\20const&>\28std::__2::function\20const&\29 +668:void\20std::__2::vector>::__push_back_slow_path\28WmoGroupResult\20const&\29 +669:void\20std::__2::vector>::__push_back_slow_path\28M2MaterialInst\20const&\29 +670:void\20std::__2::__sift_down&\2c\20int*>\28int*\2c\20std::__2::__less&\2c\20std::__2::iterator_traits::difference_type\2c\20int*\29 +671:void\20std::__2::__introsort\2c\20std::__2::shared_ptr>&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::__less\2c\20std::__2::shared_ptr>&\2c\20std::__2::iterator_traits*>::difference_type\29 +672:void\20std::__2::__introsort\2c\20std::__2::shared_ptr>&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::__less\2c\20std::__2::shared_ptr>&\2c\20std::__2::iterator_traits*>::difference_type\29 +673:void\20std::__2::__introsort\2c\20std::__2::shared_ptr>&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::__less\2c\20std::__2::shared_ptr>&\2c\20std::__2::iterator_traits*>::difference_type\29 +674:void\20std::__2::__introsort&\2c\20int*>\28int*\2c\20int*\2c\20std::__2::__less&\2c\20std::__2::iterator_traits::difference_type\29 +675:void\20std::__2::__introsort&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20int\2c\20int&\2c\20bool\2c\20FrameViewsHolder&\29::$_0&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20WmoObject::startTraversingWMOGroup\28mathfu::Vector&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20int\2c\20int&\2c\20bool\2c\20FrameViewsHolder&\29::$_0&\2c\20std::__2::iterator_traits*>::difference_type\29 +676:void\20std::__2::__introsort\2c\20std::__2::allocator>>&\29::$_0&\2c\20mathfu::Vector*>\28mathfu::Vector*\2c\20mathfu::Vector*\2c\20MathHelper::getHullPoints\28std::__2::vector\2c\20std::__2::allocator>>&\29::$_0&\2c\20std::__2::iterator_traits*>::difference_type\29 +677:void\20std::__2::__introsort\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29::$_1&\2c\20LightResult*>\28LightResult*\2c\20LightResult*\2c\20Map::updateLightAndSkyboxData\28std::__2::shared_ptr\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29::$_1&\2c\20std::__2::iterator_traits::difference_type\29 +678:vfiprintf +679:unsigned\20int\20std::__2::__sort5&\2c\20int*>\28int*\2c\20int*\2c\20int*\2c\20int*\2c\20int*\2c\20std::__2::__less&\29 +680:unsigned\20int\20std::__2::__sort5&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20int\2c\20int&\2c\20bool\2c\20FrameViewsHolder&\29::$_0&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20WmoObject::startTraversingWMOGroup\28mathfu::Vector&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20int\2c\20int&\2c\20bool\2c\20FrameViewsHolder&\29::$_0&\29 +681:unsigned\20int\20std::__2::__sort5\2c\20std::__2::allocator>>&\29::$_0&\2c\20mathfu::Vector*>\28mathfu::Vector*\2c\20mathfu::Vector*\2c\20mathfu::Vector*\2c\20mathfu::Vector*\2c\20mathfu::Vector*\2c\20MathHelper::getHullPoints\28std::__2::vector\2c\20std::__2::allocator>>&\29::$_0&\29 +682:unsigned\20int\20std::__2::__sort5\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29::$_1&\2c\20LightResult*>\28LightResult*\2c\20LightResult*\2c\20LightResult*\2c\20LightResult*\2c\20LightResult*\2c\20Map::updateLightAndSkyboxData\28std::__2::shared_ptr\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29::$_1&\29 +683:unsigned\20int\20std::__2::__sort5\29::$_7&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_7&\29 +684:unsigned\20int\20std::__2::__sort4&\2c\20int*>\28int*\2c\20int*\2c\20int*\2c\20int*\2c\20std::__2::__less&\29 +685:unsigned\20int\20std::__2::__sort4&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20int\2c\20int&\2c\20bool\2c\20FrameViewsHolder&\29::$_0&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20WmoObject::startTraversingWMOGroup\28mathfu::Vector&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20int\2c\20int&\2c\20bool\2c\20FrameViewsHolder&\29::$_0&\29 +686:unsigned\20int\20std::__2::__sort4\2c\20std::__2::allocator>>&\29::$_0&\2c\20mathfu::Vector*>\28mathfu::Vector*\2c\20mathfu::Vector*\2c\20mathfu::Vector*\2c\20mathfu::Vector*\2c\20MathHelper::getHullPoints\28std::__2::vector\2c\20std::__2::allocator>>&\29::$_0&\29 +687:unsigned\20int\20std::__2::__sort4\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29::$_1&\2c\20LightResult*>\28LightResult*\2c\20LightResult*\2c\20LightResult*\2c\20LightResult*\2c\20Map::updateLightAndSkyboxData\28std::__2::shared_ptr\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29::$_1&\29 +688:unsigned\20int\20std::__2::__sort4\29::$_7&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_7&\29 +689:tinygltf::TextureInfo::TextureInfo\28tinygltf::TextureInfo&&\29 +690:tinygltf::Skin::~Skin\28\29 +691:tinygltf::SerializeGltfTextureInfo\28tinygltf::TextureInfo&\2c\20nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>&\29 +692:tinygltf::Scene::~Scene\28\29 +693:tinygltf::Primitive::~Primitive\28\29 +694:tinygltf::Primitive::Primitive\28tinygltf::Primitive\20const&\29 +695:tinygltf::Mesh::~Mesh\28\29 +696:tinygltf::Material::~Material\28\29 +697:tinygltf::Animation::~Animation\28\29 +698:tbb::detail::r1::rml::private_server::wake_some\28int\29 +699:tbb::detail::r1::market::~market\28\29 +700:tbb::detail::r1::market::update_allotment\28tbb::detail::r1::intrusive_list*\2c\20int\2c\20int\29 +701:tbb::detail::r1::market::global_market\28bool\2c\20unsigned\20int\2c\20unsigned\20long\29 +702:tbb::detail::r1::governor::release_resources\28\29 +703:tbb::detail::r1::governor::auto_terminate\28void*\29 +704:tbb::detail::r1::co_context::~co_context\28\29 +705:tbb::detail::r1::cache_aligned_allocate\28unsigned\20long\29 +706:tbb::detail::r1::assertion_failure\28char\20const*\2c\20int\2c\20char\20const*\2c\20char\20const*\29 +707:tanf +708:strtox.1 +709:strtox +710:strtoull_l\28char\20const*\2c\20char**\2c\20int\2c\20__locale_struct*\29 +711:strtol +712:strerror +713:std::logic_error::~logic_error\28\29 +714:std::logic_error::logic_error\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +715:std::__throw_bad_alloc\28\29 +716:std::__2::unique_lock::~unique_lock\28\29 +717:std::__2::to_string\28unsigned\20int\29 +718:std::__2::time_put>>::~time_put\28\29.1 +719:std::__2::pair>\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table>\2c\20std::__2::__unordered_map_hasher>\2c\20GDeviceGL20::M2ShaderCacheRecordHasher\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal>\2c\20std::__2::equal_to\2c\20GDeviceGL20::M2ShaderCacheRecordHasher\2c\20true>\2c\20std::__2::allocator>>>::__emplace_unique_key_args\2c\20std::__2::tuple<>>\28M2ShaderCacheRecord\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple&&\2c\20std::__2::tuple<>&&\29 +720:std::__2::numpunct\20const&\20std::__2::use_facet>\28std::__2::locale\20const&\29 +721:std::__2::numpunct\20const&\20std::__2::use_facet>\28std::__2::locale\20const&\29 +722:std::__2::locale::locale\28\29 +723:std::__2::enable_if<__is_cpp17_forward_iterator*>::value\20&&\20is_constructible\2c\20std::__2::iterator_traits*>::reference>::value\2c\20void>::type\20std::__2::vector\2c\20std::__2::allocator>>::assign*>\28mathfu::Vector*\2c\20mathfu::Vector*\29 +724:std::__2::enable_if<__is_cpp17_forward_iterator::value\20&&\20is_constructible::reference>::value\2c\20void>::type\20std::__2::vector>::assign\28MathHelper::PlanesUndPoints\20const*\2c\20MathHelper::PlanesUndPoints\20const*\29 +725:std::__2::ctype\20const&\20std::__2::use_facet>\28std::__2::locale\20const&\29 +726:std::__2::ctype\20const&\20std::__2::use_facet>\28std::__2::locale\20const&\29 +727:std::__2::condition_variable::wait\28std::__2::unique_lock&\29 +728:std::__2::codecvt\20const&\20std::__2::use_facet>\28std::__2::locale\20const&\29 +729:std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29.1 +730:std::__2::basic_string\2c\20std::__2::allocator>\20std::__2::operator+\2c\20std::__2::allocator>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20char\20const*\29 +731:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\28char\20const*\2c\20char\20const*\29 +732:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\28char*\2c\20char*\2c\20std::__2::allocator\20const&\29 +733:std::__2::basic_string\2c\20std::__2::allocator>::__zero\28\29 +734:std::__2::basic_string\2c\20std::__2::allocator>::__assign_external\28char\20const*\29 +735:std::__2::basic_ostream>::basic_ostream\28std::__2::basic_streambuf>*\29 +736:std::__2::basic_ostream>::~basic_ostream\28\29.2 +737:std::__2::basic_ostream>::operator<<\28float\29 +738:std::__2::basic_ostream>::basic_ostream\28std::__2::basic_streambuf>*\29 +739:std::__2::basic_ofstream>::~basic_ofstream\28\29 +740:std::__2::basic_istream>::~basic_istream\28\29.2 +741:std::__2::basic_iostream>::~basic_iostream\28\29.2 +742:std::__2::basic_ios>::~basic_ios\28\29.1 +743:std::__2::basic_ifstream>::~basic_ifstream\28\29 +744:std::__2::array::~array\28\29 +745:std::__2::__tree\2c\20std::__2::less>\2c\20std::__2::allocator>>::destroy\28std::__2::__tree_node\2c\20void*>*\29 +746:std::__2::__tree\2c\20std::__2::allocator>\2c\20nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>>\2c\20std::__2::__map_value_compare\2c\20std::__2::allocator>\2c\20std::__2::__value_type\2c\20std::__2::allocator>\2c\20nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>>\2c\20std::__2::less\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>>>>::destroy\28std::__2::__tree_node\2c\20std::__2::allocator>\2c\20nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>>\2c\20void*>*\29 +747:std::__2::__tree\2c\20std::__2::allocator>\2c\20double>\2c\20std::__2::__map_value_compare\2c\20std::__2::allocator>\2c\20std::__2::__value_type\2c\20std::__2::allocator>\2c\20double>\2c\20std::__2::less\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20double>>>::destroy\28std::__2::__tree_node\2c\20std::__2::allocator>\2c\20double>\2c\20void*>*\29 +748:std::__2::__thread_local_data\28\29 +749:std::__2::__num_get::__stage2_float_prep\28std::__2::ios_base&\2c\20wchar_t*\2c\20wchar_t&\2c\20wchar_t&\29 +750:std::__2::__num_get::__stage2_float_prep\28std::__2::ios_base&\2c\20char*\2c\20char&\2c\20char&\29 +751:std::__2::__libcpp_wcrtomb_l\28char*\2c\20wchar_t\2c\20__mbstate_t*\2c\20__locale_struct*\29 +752:std::__2::__function::__func\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14\2c\20std::__2::allocator\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14>\2c\20void\20\28\29>::destroy_deallocate\28\29 +753:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::destroy_deallocate\28\29 +754:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::destroy\28\29 +755:std::__2::__deque_base>::~__deque_base\28\29 +756:stbiw__jpg_processDU\28stbi__write_context*\2c\20int*\2c\20int*\2c\20float*\2c\20float*\2c\20int\2c\20unsigned\20short\20const\20\28*\29\20\5b2\5d\2c\20unsigned\20short\20const\20\28*\29\20\5b2\5d\29 +757:stbi__pnm_skip_whitespace\28stbi__context*\2c\20char*\29 +758:stat +759:sift +760:saveScreenshotLodePng\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20int\2c\20int\2c\20std::__2::vector>&\29 +761:nlohmann::detail::invalid_iterator::~invalid_iterator\28\29 +762:nlohmann::detail::exception::what\28\29\20const +763:mbsrtowcs +764:lodepng_info_cleanup\28LodePNGInfo*\29 +765:lodepng_huffman_code_lengths\28unsigned\20int*\2c\20unsigned\20int\20const*\2c\20unsigned\20long\2c\20unsigned\20int\29 +766:initM2Attachment\28void*\2c\20M2Array*\2c\20M2Array*\2c\20CM2SequenceLoad*\29 +767:initCompBones\28void*\2c\20M2Array*\2c\20M2Array*\2c\20CM2SequenceLoad*\29 +768:ghc::filesystem::remove_all\28ghc::filesystem::path\20const&\2c\20std::__2::error_code&\29 +769:ghc::filesystem::directory_iterator::impl::increment\28std::__2::error_code&\29 +770:getPixelColorRGBA8\28unsigned\20char*\2c\20unsigned\20char*\2c\20unsigned\20char*\2c\20unsigned\20char*\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20LodePNGColorMode\20const*\29 +771:freelocale +772:fread +773:fetch_free +774:color_tree_add\28ColorTree*\2c\20unsigned\20char\2c\20unsigned\20char\2c\20unsigned\20char\2c\20unsigned\20char\2c\20unsigned\20int\29 +775:collectMeshes\28std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29 +776:char\20const*\20std::__2::find\28char\20const*\2c\20char\20const*\2c\20char\20const&\29 +777:build_tree +778:atanf +779:addUnknownChunks\28ucvector*\2c\20unsigned\20char*\2c\20unsigned\20long\29 +780:__uflow +781:__trunctfdf2 +782:__subtf3 +783:__rem_pio2f +784:__itt_fini_ittlib +785:__fwritex +786:__cxxabiv1::__class_type_info::process_static_type_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\29\20const +787:__cxxabiv1::__class_type_info::process_found_base_class\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const +788:__cxxabiv1::__base_class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const +789:WmoObject::traverseGroupWmo\28int\2c\20bool\2c\20WmoObject::PortalTraverseTempData&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\2c\20int\2c\20int\29 +790:WmoObject::setModelFileName\28std::__2::basic_string\2c\20std::__2::allocator>\29 +791:WmoGroupObject::setModelFileName\28std::__2::basic_string\2c\20std::__2::allocator>\29 +792:WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29 +793:RequestProcessor::~RequestProcessor\28\29 +794:MathHelper::calcExteriorColorDir\28mathfu::Matrix\2c\20int\29 +795:Map::updateLightAndSkyboxData\28std::__2::shared_ptr\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29 +796:Map::doPostLoad\28std::__2::shared_ptr\29 +797:M2ObjectListContainer::~M2ObjectListContainer\28\29 +798:M2Object::createMeshes\28\29 +799:M2MeshBufferUpdater::assignUpdateEvents\28std::__2::shared_ptr&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29 +800:IMesh::~IMesh\28\29 +801:GTextureGL33::~GTextureGL33\28\29 +802:GTextureGL20::~GTextureGL20\28\29 +803:GShaderPermutationGL33::GShaderPermutationGL33\28std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::shared_ptr\20const&\29 +804:GMeshGL33::GMeshGL33\28std::__2::shared_ptr\20const&\2c\20gMeshTemplate\20const&\29 +805:GMeshGL20::GMeshGL20\28IDevice&\2c\20gMeshTemplate\20const&\29 +806:GM2MeshGL20::getM2Object\28\29 +807:DrawStage::operator=\28DrawStage\20const&\29 +808:DecompressBC3\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20char*\29 +809:DecompressBC2\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20char*\29 +810:DecompressBC1\28unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20char\20const*\2c\20unsigned\20char*\2c\20bool\29 +811:CParticleGenerator::CalcVelocity\28\29 +812:C3Spline::evaluate\28unsigned\20int\2c\20float\2c\20mathfu::Matrix&\2c\20mathfu::Vector&\29 +813:AnimationManager::setAnimationId\28int\2c\20bool\29 +814:zipOpenNewFileInZip4_64 +815:zipGoToNextDisk +816:zip64local_getShort +817:writeLZ77data\28LodePNGBitWriter*\2c\20uivector\20const*\2c\20HuffmanTree\20const*\2c\20HuffmanTree\20const*\29 +818:writeBits\28LodePNGBitWriter*\2c\20unsigned\20int\2c\20unsigned\20long\29 +819:wmemset +820:wmemmove +821:wmemcpy +822:wctomb +823:wcslen +824:vsscanf +825:void\20tbb::detail::r1::task_stream<\28tbb::detail::r1::task_stream_accessor_type\290>::push\28tbb::detail::d1::task*\2c\20tbb::detail::r1::random_lane_selector\20const&\29 +826:void\20tbb::detail::r1::sleep_waiter::sleep\28unsigned\20long\2c\20tbb::detail::r1::external_waiter::pause\28tbb::detail::r1::arena_slot&\29::'lambda'\28\29\29 +827:void\20tbb::detail::r1::sleep_waiter::sleep\28unsigned\20long\2c\20tbb::detail::r1::coroutine_waiter::pause\28tbb::detail::r1::arena_slot&\29::'lambda'\28\29\29 +828:void\20std::__2::vector>::__push_back_slow_path\28tinygltf::AnimationSampler\20const&\29 +829:void\20std::__2::vector>::__push_back_slow_path\28tinygltf::AnimationChannel\20const&\29 +830:void\20std::__2::vector\2c\20std::__2::allocator>>\2c\20std::__2::allocator\2c\20std::__2::allocator>>>>::__push_back_slow_path\2c\20std::__2::allocator>>\20const&>\28std::__2::vector\2c\20std::__2::allocator>>\20const&\29 +831:void\20std::__2::vector\2c\20std::__2::allocator>\2c\20std::__2::allocator\2c\20std::__2::allocator>>>::__push_back_slow_path\2c\20std::__2::allocator>\20const&>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +832:void\20std::__2::vector\2c\20std::__2::allocator>\2c\20std::__2::allocator\2c\20std::__2::allocator>>>::__push_back_slow_path\2c\20std::__2::allocator>>\28std::__2::basic_string\2c\20std::__2::allocator>&&\29 +833:void\20std::__2::vector>::__push_back_slow_path\28MathHelper::PlanesUndPoints\20const&\29 +834:void\20std::__2::allocator_traits\2c\20std::__2::allocator>\2c\20std::__2::unordered_map>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>>>\2c\20void*>>>::destroy\2c\20std::__2::allocator>\20const\2c\20std::__2::unordered_map>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>>>\2c\20void\2c\20void>\28std::__2::allocator\2c\20std::__2::allocator>\2c\20std::__2::unordered_map>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>>>\2c\20void*>>&\2c\20std::__2::pair\2c\20std::__2::allocator>\20const\2c\20std::__2::unordered_map>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>>>*\29 +835:void\20std::__2::__sift_down&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20int\2c\20int&\2c\20bool\2c\20FrameViewsHolder&\29::$_0&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20WmoObject::startTraversingWMOGroup\28mathfu::Vector&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20int\2c\20int&\2c\20bool\2c\20FrameViewsHolder&\29::$_0&\2c\20std::__2::iterator_traits*>::difference_type\2c\20std::__2::shared_ptr*\29 +836:void\20std::__2::__sift_down\2c\20std::__2::allocator>>&\29::$_0&\2c\20mathfu::Vector*>\28mathfu::Vector*\2c\20MathHelper::getHullPoints\28std::__2::vector\2c\20std::__2::allocator>>&\29::$_0&\2c\20std::__2::iterator_traits*>::difference_type\2c\20mathfu::Vector*\29 +837:void\20std::__2::__sift_down\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29::$_1&\2c\20LightResult*>\28LightResult*\2c\20Map::updateLightAndSkyboxData\28std::__2::shared_ptr\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29::$_1&\2c\20std::__2::iterator_traits::difference_type\2c\20LightResult*\29 +838:void\20std::__2::__sift_down\29::$_8&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_8&\2c\20std::__2::iterator_traits*>::difference_type\2c\20std::__2::shared_ptr*\29 +839:void\20std::__2::__sift_down\29::$_7&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_7&\2c\20std::__2::iterator_traits*>::difference_type\2c\20std::__2::shared_ptr*\29 +840:void\20std::__2::__double_or_nothing\28std::__2::unique_ptr&\2c\20unsigned\20int*&\2c\20unsigned\20int*&\29 +841:void\20GLTFExporter::addTrack>\28tinygltf::Animation&\2c\20M2Track>&\2c\20int\2c\20float\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\2c\20int\2c\20M2Array&\29 +842:void\20CChunkFileReader::loopOverSubChunks\28chunkDef*&\2c\20int\2c\20int\2c\20WmoMainGeom&\29 +843:void\20CChunkFileReader::loopOverSubChunks\28chunkDef*&\2c\20int\2c\20int\2c\20WmoGroupGeom&\29 +844:void\20CChunkFileReader::loopOverSubChunks\28chunkDef*&\2c\20int\2c\20int\2c\20WdtFile&\29 +845:void\20CChunkFileReader::loopOverSubChunks\28chunkDef*&\2c\20int\2c\20int\2c\20WdlFile&\29 +846:void\20CChunkFileReader::loopOverSubChunks\28chunkDef*&\2c\20int\2c\20int\2c\20SkelFile&\29 +847:void\20CChunkFileReader::loopOverSubChunks\28chunkDef*&\2c\20int\2c\20int\2c\20M2Geom&\29 +848:void\20CChunkFileReader::loopOverSubChunks\28chunkDef*&\2c\20int\2c\20int\2c\20AnimFile&\29 +849:void\20CChunkFileReader::loopOverSubChunks\28chunkDef*&\2c\20int\2c\20int\2c\20AdtFile&\29 +850:virtual\20thunk\20to\20std::__2::basic_ostream>::~basic_ostream\28\29.1 +851:virtual\20thunk\20to\20std::__2::basic_ostream>::~basic_ostream\28\29 +852:virtual\20thunk\20to\20std::__2::basic_istream>::~basic_istream\28\29.1 +853:virtual\20thunk\20to\20std::__2::basic_istream>::~basic_istream\28\29 +854:unsigned\20short\20animateTrack\28AnimationStruct\20const&\2c\20M2Track&\2c\20M2Array&\2c\20std::__2::vector>&\2c\20unsigned\20short&\29 +855:unsigned\20short\20animatePartTrack\28double\2c\20M2PartTrack*\2c\20unsigned\20short&\29 +856:unsigned\20int\20std::__2::__num_get_unsigned_integral\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 +857:unsigned\20int\20const*\20std::__2::lower_bound\28unsigned\20int\20const*\2c\20unsigned\20int\20const*\2c\20unsigned\20long\20const&\29 +858:tinygltf::Texture::Texture\28tinygltf::Texture\20const&\29 +859:tinygltf::Skin::Skin\28tinygltf::Skin\20const&\29 +860:tinygltf::SerializeStringArrayProperty\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::vector\2c\20std::__2::allocator>\2c\20std::__2::allocator\2c\20std::__2::allocator>>>\20const&\2c\20nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>&\29 +861:tinygltf::Scene::Scene\28tinygltf::Scene\20const&\29 +862:tinygltf::Sampler::Sampler\28tinygltf::Sampler\20const&\29 +863:tinygltf::NormalTextureInfo::NormalTextureInfo\28tinygltf::NormalTextureInfo&&\29 +864:tinygltf::Model::~Model\28\29 +865:tinygltf::MimeToExt\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +866:tinygltf::Mesh::Mesh\28tinygltf::Mesh\20const&\29 +867:tinygltf::Material::Material\28tinygltf::Material\20const&\29 +868:tinygltf::JoinPath\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +869:tinygltf::Image::~Image\28\29 +870:tinygltf::Animation::Animation\28tinygltf::Animation\20const&\29 +871:tbb::detail::r1::sleep_node::wait\28\29 +872:tbb::detail::r1::sleep_node::reset\28\29 +873:tbb::detail::r1::sleep_node::init\28\29 +874:tbb::detail::r1::rml::private_server::~private_server\28\29 +875:tbb::detail::r1::observer_list::do_notify_exit_observers\28tbb::detail::r1::observer_proxy*\2c\20bool\29 +876:tbb::detail::r1::numa_binding_observer::~numa_binding_observer\28\29.1 +877:tbb::detail::r1::numa_binding_observer::~numa_binding_observer\28\29 +878:tbb::detail::r1::numa_binding_observer::on_scheduler_entry\28bool\29 +879:tbb::detail::r1::market::set_active_num_workers\28unsigned\20int\29 +880:tbb::detail::r1::market::create_arena\28int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20long\29 +881:tbb::detail::r1::market::add_ref_unsafe\28tbb::detail::d1::unique_scoped_lock&\2c\20bool\2c\20unsigned\20int\2c\20unsigned\20long\29 +882:tbb::detail::r1::arena::process\28tbb::detail::r1::thread_data&\29 +883:tbb::detail::r1::arena::free_arena\28\29 +884:tbb::detail::d1::start_for*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::quick_sort_body*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::auto_partitioner\20const>::run\28tbb::detail::d1::quick_sort_range*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\20const&\2c\20tbb::detail::d1::quick_sort_body*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\20const&\2c\20tbb::detail::d1::auto_partitioner\20const&\29 +885:tbb::detail::d1::start_for*>\2c\20WMOGroupListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::quick_sort_body*>\2c\20WMOGroupListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::auto_partitioner\20const>::run\28tbb::detail::d1::quick_sort_range*>\2c\20WMOGroupListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\20const&\2c\20tbb::detail::d1::quick_sort_body*>\2c\20WMOGroupListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\20const&\2c\20tbb::detail::d1::auto_partitioner\20const&\29 +886:tbb::detail::d1::start_for*>\2c\20M2ObjectListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::quick_sort_body*>\2c\20M2ObjectListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::auto_partitioner\20const>::run\28tbb::detail::d1::quick_sort_range*>\2c\20M2ObjectListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\20const&\2c\20tbb::detail::d1::quick_sort_body*>\2c\20M2ObjectListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\20const&\2c\20tbb::detail::d1::auto_partitioner\20const&\29 +887:tbb::detail::d1::start_for\2c\20Map::checkExterior\28mathfu::Vector&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20std::__2::shared_ptr\29::$_2\2c\20tbb::detail::d1::auto_partitioner\20const>::cancel\28tbb::detail::d1::execution_data&\29 +888:tbb::detail::d1::quick_sort_range*>\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_8>::quick_sort_range\28tbb::detail::d1::quick_sort_range*>\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_8>&\2c\20tbb::detail::d0::split\29 +889:tbb::detail::d1::quick_sort_range*>\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_7>::quick_sort_range\28tbb::detail::d1::quick_sort_range*>\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_7>&\2c\20tbb::detail::d0::split\29 +890:strtoll_l\28char\20const*\2c\20char**\2c\20int\2c\20__locale_struct*\29 +891:strspn +892:strncmp +893:strerror_r +894:strcpy +895:store_int +896:std::uncaught_exception\28\29 +897:std::logic_error::logic_error\28char\20const*\29 +898:std::__2::weak_ptr::lock\28\29\20const +899:std::__2::vector>::__throw_out_of_range\28\29\20const +900:std::__2::vector>::~vector\28\29 +901:std::__2::vector>::~vector\28\29 +902:std::__2::vector>::max_size\28\29\20const +903:std::__2::vector>::__construct_at_end\28unsigned\20long\29 +904:std::__2::vector>::__clear\28\29 +905:std::__2::vector>::__base_destruct_at_end\28std::__2::locale::facet**\29 +906:std::__2::vector>::vector\28\29 +907:std::__2::vector\2c\20std::__2::allocator>>::push_back\28mathfu::Vector&&\29 +908:std::__2::unordered_map\2c\20GDeviceGL33::WMOShaderCacheRecordHasher\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>::operator\5b\5d\28WMOShaderCacheRecord\20const&\29 +909:std::__2::unordered_map\2c\20GDeviceGL20::WMOShaderCacheRecordHasher\2c\20std::__2::equal_to\2c\20std::__2::allocator>>>::erase\28std::__2::__hash_map_iterator>\2c\20void*>*>>\29 +910:std::__2::unique_ptr::reset\28std::__2::locale::facet*\29 +911:std::__2::unique_ptr::operator=\28std::__2::unique_ptr&&\29 +912:std::__2::unique_ptr<_IO_FILE\2c\20int\20\28*\29\28_IO_FILE*\29>::reset\28_IO_FILE*\29 +913:std::__2::to_chars_result\20std::__2::__to_chars_itoa\28char*\2c\20char*\2c\20unsigned\20int\2c\20std::__2::integral_constant\29 +914:std::__2::time_put>>::~time_put\28\29 +915:std::__2::time_get>>::__get_year\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const +916:std::__2::time_get>>::__get_weekdayname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const +917:std::__2::time_get>>::__get_monthname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const +918:std::__2::time_get>>::do_date_order\28\29\20const +919:std::__2::time_get>>::__get_year\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const +920:std::__2::time_get>>::__get_weekdayname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const +921:std::__2::time_get>>::__get_monthname\28int&\2c\20std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20unsigned\20int&\2c\20std::__2::ctype\20const&\29\20const +922:std::__2::system_error::system_error\28std::__2::error_code\2c\20char\20const*\29 +923:std::__2::stoi\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20long*\2c\20int\29 +924:std::__2::shared_ptr\20std::__2::allocate_shared\2c\20std::__2::shared_ptr&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20int&\2c\20int&\2c\20std::__2::shared_ptr&\2c\20void>\28std::__2::allocator\20const&\2c\20std::__2::shared_ptr&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20int&\2c\20int&\2c\20std::__2::shared_ptr&\29 +925:std::__2::promise::set_value\28float&&\29 +926:std::__2::promise::set_value\28bool&&\29 +927:std::__2::pair\2c\20std::__2::allocator>\2c\20tinygltf::Parameter>\2c\20std::__2::__tree_node\2c\20std::__2::allocator>\2c\20tinygltf::Parameter>\2c\20void*>*\2c\20long>\2c\20bool>\20std::__2::__tree\2c\20std::__2::allocator>\2c\20tinygltf::Parameter>\2c\20std::__2::__map_value_compare\2c\20std::__2::allocator>\2c\20std::__2::__value_type\2c\20std::__2::allocator>\2c\20tinygltf::Parameter>\2c\20std::__2::less\2c\20std::__2::allocator>>\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>\2c\20tinygltf::Parameter>>>::__emplace_hint_unique_key_args\2c\20std::__2::allocator>\2c\20std::__2::pair\2c\20std::__2::allocator>\20const\2c\20tinygltf::Parameter>\20const&>\28std::__2::__tree_const_iterator\2c\20std::__2::allocator>\2c\20tinygltf::Parameter>\2c\20std::__2::__tree_node\2c\20std::__2::allocator>\2c\20tinygltf::Parameter>\2c\20void*>*\2c\20long>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::pair\2c\20std::__2::allocator>\20const\2c\20tinygltf::Parameter>\20const&\29 +928:std::__2::pair\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>::__emplace_unique_key_args\2c\20std::__2::tuple<>>\28unsigned\20long\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple&&\2c\20std::__2::tuple<>&&\29 +929:std::__2::pair>\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table>\2c\20std::__2::__unordered_map_hasher>\2c\20GDeviceGL20::WMOShaderCacheRecordHasher\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal>\2c\20std::__2::equal_to\2c\20GDeviceGL20::WMOShaderCacheRecordHasher\2c\20true>\2c\20std::__2::allocator>>>::__emplace_unique_key_args\2c\20std::__2::tuple<>>\28WMOShaderCacheRecord\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple&&\2c\20std::__2::tuple<>&&\29 +930:std::__2::pair>\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table>\2c\20std::__2::__unordered_map_hasher>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal>\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>>::__emplace_unique_key_args\2c\20std::__2::tuple<>>\28SkinGeom*\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple&&\2c\20std::__2::tuple<>&&\29 +931:std::__2::pair\2c\20std::__2::allocator>>\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table\2c\20std::__2::allocator>>\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::allocator>>\2c\20ShaderContentCacheRecordHasher\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::allocator>>\2c\20std::__2::equal_to\2c\20ShaderContentCacheRecordHasher\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>>>>::__emplace_unique_key_args\2c\20std::__2::tuple<>>\28ShaderContentCacheRecord\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple&&\2c\20std::__2::tuple<>&&\29 +932:std::__2::pair>\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table>\2c\20std::__2::__unordered_map_hasher>\2c\20M2Geom::AnimCacheRecordHasher\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal>\2c\20std::__2::equal_to\2c\20M2Geom::AnimCacheRecordHasher\2c\20true>\2c\20std::__2::allocator>>>::__emplace_unique_key_args\2c\20std::__2::tuple<>>\28M2Geom::AnimCacheRecord\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple&&\2c\20std::__2::tuple<>&&\29 +933:std::__2::pair>\2c\20void*>*>\2c\20bool>\20std::__2::__hash_table>\2c\20std::__2::__unordered_map_hasher>\2c\20GDeviceGL33::BlpCacheRecordHasher\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal>\2c\20std::__2::equal_to\2c\20GDeviceGL33::BlpCacheRecordHasher\2c\20true>\2c\20std::__2::allocator>>>::__emplace_unique_key_args\2c\20std::__2::tuple<>>\28GDeviceGL33::BlpCacheRecord\20const&\2c\20std::__2::piecewise_construct_t\20const&\2c\20std::__2::tuple&&\2c\20std::__2::tuple<>&&\29 +934:std::__2::ostreambuf_iterator>::operator=\28wchar_t\29 +935:std::__2::ostreambuf_iterator>\20std::__2::__rewrap_iter>>\28std::__2::ostreambuf_iterator>\2c\20std::__2::ostreambuf_iterator>\29 +936:std::__2::ostreambuf_iterator>::operator=\28char\29 +937:std::__2::numpunct::~numpunct\28\29 +938:std::__2::numpunct::~numpunct\28\29 +939:std::__2::numpunct::truename\28\29\20const +940:std::__2::numpunct::thousands_sep\28\29\20const +941:std::__2::numpunct::grouping\28\29\20const +942:std::__2::numpunct::falsename\28\29\20const +943:std::__2::numpunct::decimal_point\28\29\20const +944:std::__2::moneypunct\20const&\20std::__2::use_facet>\28std::__2::locale\20const&\29 +945:std::__2::moneypunct\20const&\20std::__2::use_facet>\28std::__2::locale\20const&\29 +946:std::__2::moneypunct::do_negative_sign\28\29\20const +947:std::__2::moneypunct\20const&\20std::__2::use_facet>\28std::__2::locale\20const&\29 +948:std::__2::moneypunct\20const&\20std::__2::use_facet>\28std::__2::locale\20const&\29 +949:std::__2::moneypunct::do_negative_sign\28\29\20const +950:std::__2::messages::do_open\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::locale\20const&\29\20const +951:std::__2::locale::__imp::~__imp\28\29 +952:std::__2::locale::__imp::has_facet\28long\29\20const +953:std::__2::istreambuf_iterator>::equal\28std::__2::istreambuf_iterator>\20const&\29\20const +954:std::__2::istreambuf_iterator>::__test_for_eof\28\29\20const +955:std::__2::istreambuf_iterator>::equal\28std::__2::istreambuf_iterator>\20const&\29\20const +956:std::__2::istreambuf_iterator>::__test_for_eof\28\29\20const +957:std::__2::ios_base::failure::~failure\28\29 +958:std::__2::future_error::future_error\28std::__2::error_code\29 +959:std::__2::enable_if<__is_cpp17_forward_iterator::value\2c\20void>::type\20std::__2::basic_string\2c\20std::__2::allocator>::__init\28wchar_t\20const*\2c\20wchar_t\20const*\29 +960:std::__2::enable_if<__is_cpp17_forward_iterator::value\20&&\20is_constructible::reference>::value\2c\20std::__2::__wrap_iter>::type\20std::__2::vector>::insert\28std::__2::__wrap_iter\2c\20unsigned\20char*\2c\20unsigned\20char*\29 +961:std::__2::enable_if<__is_cpp17_forward_iterator*>::value\20&&\20is_constructible\2c\20std::__2::iterator_traits*>::reference>::value\2c\20void>::type\20std::__2::vector\2c\20std::__2::allocator>>::assign*>\28mathfu::Vector*\2c\20mathfu::Vector*\29 +962:std::__2::enable_if<__is_cpp17_forward_iterator::value\2c\20void>::type\20std::__2::basic_string\2c\20std::__2::allocator>::__init\28char*\2c\20char*\29 +963:std::__2::ctype::~ctype\28\29 +964:std::__2::ctype::widen\28char\29\20const +965:std::__2::ctype::ctype\28unsigned\20long\20const*\2c\20bool\2c\20unsigned\20long\29 +966:std::__2::codecvt::~codecvt\28\29 +967:std::__2::codecvt::do_out\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const +968:std::__2::codecvt::do_out\28__mbstate_t&\2c\20char32_t\20const*\2c\20char32_t\20const*\2c\20char32_t\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const +969:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const +970:std::__2::codecvt::do_in\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20char32_t*\2c\20char32_t*\2c\20char32_t*&\29\20const +971:std::__2::codecvt::do_out\28__mbstate_t&\2c\20char16_t\20const*\2c\20char16_t\20const*\2c\20char16_t\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const +972:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const +973:std::__2::codecvt::do_in\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20char16_t*\2c\20char16_t*\2c\20char16_t*&\29\20const +974:std::__2::chrono::steady_clock::now\28\29 +975:std::__2::chrono::duration>::duration>\28std::__2::chrono::duration>\20const&\2c\20std::__2::enable_if<__no_overflow\2c\20std::__2::ratio<1ll\2c\201000000000ll>>::value\20&&\20\28std::__2::integral_constant::value\20||\20__no_overflow\2c\20std::__2::ratio<1ll\2c\201000000000ll>>::type::den\20==\201\20&&\20!treat_as_floating_point::value\29\2c\20void>::type*\29 +976:std::__2::char_traits::assign\28char*\2c\20unsigned\20long\2c\20char\29 +977:std::__2::basic_stringbuf\2c\20std::__2::allocator>::~basic_stringbuf\28\29 +978:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\28unsigned\20long\2c\20wchar_t\29 +979:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by_and_replace\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20wchar_t\20const*\29 +980:std::__2::basic_string\2c\20std::__2::allocator>::__grow_by\28unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20long\29 +981:std::__2::basic_string\2c\20std::__2::allocator>\20std::__2::operator+\2c\20std::__2::allocator>\28std::__2::basic_string\2c\20std::__2::allocator>&&\2c\20char\20const*\29 +982:std::__2::basic_string\2c\20std::__2::allocator>::basic_string\28std::__2::allocator\20const&\29 +983:std::__2::basic_streambuf>::sbumpc\28\29 +984:std::__2::basic_streambuf>::basic_streambuf\28\29 +985:std::__2::basic_streambuf>::underflow\28\29 +986:std::__2::basic_streambuf>::sputn\28char\20const*\2c\20long\29 +987:std::__2::basic_streambuf>::sputc\28char\29 +988:std::__2::basic_streambuf>::seekpos\28std::__2::fpos<__mbstate_t>\2c\20unsigned\20int\29 +989:std::__2::basic_streambuf>::seekoff\28long\20long\2c\20std::__2::ios_base::seekdir\2c\20unsigned\20int\29 +990:std::__2::basic_streambuf>::sbumpc\28\29 +991:std::__2::basic_streambuf>::pubsync\28\29 +992:std::__2::basic_ostream>::sentry::~sentry\28\29 +993:std::__2::basic_ostream>::flush\28\29 +994:std::__2::basic_ostream>::operator<<\28unsigned\20short\29 +995:std::__2::basic_ofstream>::~basic_ofstream\28\29.2 +996:std::__2::basic_istream>::tellg\28\29 +997:std::__2::basic_istream>::operator>>\28unsigned\20int&\29 +998:std::__2::basic_ios>::~basic_ios\28\29 +999:std::__2::basic_ios>::init\28std::__2::basic_streambuf>*\29 +1000:std::__2::basic_ios>::clear\28unsigned\20int\29 +1001:std::__2::basic_ifstream>::~basic_ifstream\28\29.2 +1002:std::__2::allocator_traits>::deallocate\28std::__2::__sso_allocator&\2c\20std::__2::locale::facet**\2c\20unsigned\20long\29 +1003:std::__2::allocator_traits>::allocate\28std::__2::__sso_allocator&\2c\20unsigned\20long\29 +1004:std::__2::allocator::deallocate\28wchar_t*\2c\20unsigned\20long\29 +1005:std::__2::allocator::allocate\28unsigned\20long\29 +1006:std::__2::__wrap_iter::operator+\28long\29\20const +1007:std::__2::__wrap_iter::operator+\28long\29\20const +1008:std::__2::__unwrap_iter_impl\2c\20true>::__apply\28std::__2::__wrap_iter\29 +1009:std::__2::__time_put::__do_put\28char*\2c\20char*&\2c\20tm\20const*\2c\20char\2c\20char\29\20const +1010:std::__2::__throw_length_error\28char\20const*\29 +1011:std::__2::__stdoutbuf::__stdoutbuf\28_IO_FILE*\2c\20__mbstate_t*\29 +1012:std::__2::__stdoutbuf::sync\28\29 +1013:std::__2::__stdoutbuf::__stdoutbuf\28_IO_FILE*\2c\20__mbstate_t*\29 +1014:std::__2::__stdinbuf::~__stdinbuf\28\29 +1015:std::__2::__stdinbuf::__getchar\28bool\29 +1016:std::__2::__stdinbuf::~__stdinbuf\28\29 +1017:std::__2::__stdinbuf::__getchar\28bool\29 +1018:std::__2::__split_buffer&>::~__split_buffer\28\29 +1019:std::__2::__split_buffer*\2c\20std::__2::allocator*>>::push_front\28mathfu::Vector*&&\29 +1020:std::__2::__split_buffer*\2c\20std::__2::allocator*>>::push_back\28mathfu::Vector*&&\29 +1021:std::__2::__shared_ptr_emplace>::__shared_ptr_emplace&\2c\20bool>\28std::__2::allocator\2c\20std::__2::shared_ptr&\2c\20bool&&\29 +1022:std::__2::__shared_ptr_emplace>::__shared_ptr_emplace\2c\20std::__2::vector>&\2c\20ITextureFormat&\2c\20int&\2c\20int&>\28std::__2::allocator\2c\20std::__2::shared_ptr&&\2c\20std::__2::vector>&\2c\20ITextureFormat&\2c\20int&\2c\20int&\29 +1023:std::__2::__libcpp_refstring::~__libcpp_refstring\28\29 +1024:std::__2::__libcpp_mbrtowc_l\28wchar_t*\2c\20char\20const*\2c\20unsigned\20long\2c\20__mbstate_t*\2c\20__locale_struct*\29 +1025:std::__2::__libcpp_allocate\28unsigned\20long\2c\20unsigned\20long\29 +1026:std::__2::__hash_table>\2c\20std::__2::__unordered_map_hasher>\2c\20std::__2::hash\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal>\2c\20std::__2::equal_to\2c\20std::__2::hash\2c\20true>\2c\20std::__2::allocator>>>::__node_insert_multi\28std::__2::__hash_node>\2c\20void*>*\29 +1027:std::__2::__hash_iterator>\2c\20void*>*>\20std::__2::__hash_table>\2c\20std::__2::__unordered_map_hasher>\2c\20GDeviceGL20::WMOShaderCacheRecordHasher\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal>\2c\20std::__2::equal_to\2c\20GDeviceGL20::WMOShaderCacheRecordHasher\2c\20true>\2c\20std::__2::allocator>>>::find\28WMOShaderCacheRecord\20const&\29 +1028:std::__2::__hash_iterator\2c\20std::__2::allocator>>\2c\20void*>*>\20std::__2::__hash_table\2c\20std::__2::allocator>>\2c\20std::__2::__unordered_map_hasher\2c\20std::__2::allocator>>\2c\20ShaderContentCacheRecordHasher\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal\2c\20std::__2::allocator>>\2c\20std::__2::equal_to\2c\20ShaderContentCacheRecordHasher\2c\20true>\2c\20std::__2::allocator\2c\20std::__2::allocator>>>>::find\28ShaderContentCacheRecord\20const&\29 +1029:std::__2::__hash_iterator>\2c\20void*>*>\20std::__2::__hash_table>\2c\20std::__2::__unordered_map_hasher>\2c\20GDeviceGL20::M2ShaderCacheRecordHasher\2c\20std::__2::equal_to\2c\20true>\2c\20std::__2::__unordered_map_equal>\2c\20std::__2::equal_to\2c\20GDeviceGL20::M2ShaderCacheRecordHasher\2c\20true>\2c\20std::__2::allocator>>>::find\28M2ShaderCacheRecord\20const&\29 +1030:std::__2::__generic_error_category::message\28int\29\20const +1031:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1032:std::__2::__function::__func\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0\2c\20std::__2::allocator\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0>\2c\20void\20\28\29>::operator\28\29\28\29 +1033:std::__2::__function::__func\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0\2c\20std::__2::allocator\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0>\2c\20void\20\28\29>::destroy_deallocate\28\29 +1034:std::__2::__function::__func\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0\2c\20std::__2::allocator\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0>\2c\20void\20\28\29>::destroy\28\29 +1035:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::destroy_deallocate\28\29 +1036:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::destroy\28\29 +1037:std::__2::__do_message::message\28int\29\20const +1038:std::__2::__compressed_pair&>::second\28\29 +1039:std::__2::__compressed_pair>::__compressed_pair\28std::nullptr_t&&\2c\20std::__2::__default_init_tag&&\29 +1040:std::__2::__assoc_sub_state::~__assoc_sub_state\28\29 +1041:std::__2::__assoc_state::~__assoc_state\28\29 +1042:stbi__tga_read_rgb16\28stbi__context*\2c\20unsigned\20char*\29 +1043:stbi__process_marker\28stbi__jpeg*\2c\20int\29 +1044:stbi__pic_is4\28stbi__context*\2c\20char\20const*\29 +1045:stbi__parse_png_file\28stbi__png*\2c\20int\2c\20int\29 +1046:stbi__out_gif_code\28stbi__gif*\2c\20unsigned\20short\29 +1047:stbi__malloc_mad3\28int\2c\20int\2c\20int\2c\20int\29 +1048:stbi__load_main\28stbi__context*\2c\20int*\2c\20int*\2c\20int*\2c\20int\2c\20stbi__result_info*\2c\20int\29 +1049:stbi__jpeg_decode_block_prog_dc\28stbi__jpeg*\2c\20short*\2c\20stbi__huffman*\2c\20int\29 +1050:stbi__jpeg_decode_block\28stbi__jpeg*\2c\20short*\2c\20stbi__huffman*\2c\20stbi__huffman*\2c\20short*\2c\20int\2c\20unsigned\20short*\29 +1051:stbi__hdr_convert\28float*\2c\20unsigned\20char*\2c\20int\29 +1052:stbi__gif_parse_colortable\28stbi__context*\2c\20unsigned\20char\20\28*\29\20\5b4\5d\2c\20int\2c\20int\29 +1053:stbi__get16be\28stbi__context*\29 +1054:stbi__create_png_image_raw\28stbi__png*\2c\20unsigned\20char*\2c\20unsigned\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20int\2c\20int\29 +1055:stbi__convert_format16\28unsigned\20short*\2c\20int\2c\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 +1056:stbi__check_png_header\28stbi__context*\29 +1057:stbi__build_huffman\28stbi__huffman*\2c\20int*\29 +1058:sscanf +1059:send_tree +1060:scanexp +1061:scalbnl +1062:scalbnf +1063:remove +1064:readdir +1065:printf_core +1066:preProcessScanlines\28unsigned\20char**\2c\20unsigned\20long*\2c\20unsigned\20char\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20LodePNGInfo\20const*\2c\20LodePNGEncoderSettings\20const*\29 +1067:pop_arg +1068:pntz +1069:operator\20delete\28void*\2c\20std::align_val_t\29 +1070:nlohmann::detail::exception::name\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20int\29 +1071:nlohmann::basic_json\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>::basic_json\28std::initializer_list\2c\20std::__2::allocator>\2c\20bool\2c\20long\20long\2c\20unsigned\20long\20long\2c\20double\2c\20std::__2::allocator\2c\20nlohmann::adl_serializer>>>\2c\20bool\2c\20nlohmann::detail::value_t\29 +1072:mbtowc +1073:mbsnrtowcs +1074:mbrlen +1075:mathfu::Vector\20animateTrack>\28AnimationStruct\20const&\2c\20M2Track&\2c\20M2Array&\2c\20std::__2::vector>&\2c\20mathfu::Vector&\29 +1076:mathfu::Vector\20animateSplineTrack\2c\20mathfu::Vector>\28double\2c\20unsigned\20int\2c\20int\2c\20M2Track>>&\2c\20M2Array&\2c\20std::__2::vector>&\2c\20mathfu::Vector&\29 +1077:mathfu::Quaternion\20animateTrack\2c\20mathfu::Quaternion>\28AnimationStruct\20const&\2c\20M2Track>&\2c\20M2Array&\2c\20std::__2::vector>&\2c\20mathfu::Quaternion&\29 +1078:mathfu::Quaternion\20animateTrack>\28AnimationStruct\20const&\2c\20M2Track&\2c\20M2Array&\2c\20std::__2::vector>&\2c\20mathfu::Quaternion&\29 +1079:lstat +1080:longest_match +1081:lodepng_convert_rgb\28unsigned\20int*\2c\20unsigned\20int*\2c\20unsigned\20int*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20LodePNGColorMode\20const*\2c\20LodePNGColorMode\20const*\29 +1082:lodepng_compute_color_stats\28LodePNGColorStats*\2c\20unsigned\20char\20const*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20LodePNGColorMode\20const*\29 +1083:load_library_start +1084:load_library_done +1085:legalfunc$invoke_viijii +1086:legalfunc$_embind_register_bigint +1087:iprintf +1088:init_block +1089:ghc::filesystem::path::iterator::operator++\28\29 +1090:ghc::filesystem::path::filename\28\29\20const +1091:getint +1092:fstatat +1093:frexp +1094:fmodl +1095:float\20animateSplineTrack\28double\2c\20unsigned\20int\2c\20int\2c\20M2Track>&\2c\20M2Array&\2c\20std::__2::vector>&\2c\20float&\29 +1096:exp +1097:encodeLZ77\28uivector*\2c\20Hash*\2c\20unsigned\20char\20const*\2c\20unsigned\20long\2c\20unsigned\20long\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 +1098:emscripten_fetch_close +1099:embind_init_builtin\28\29 +1100:dlposix_memalign +1101:dlerror +1102:deflate_stored +1103:deflateEnd +1104:deflate +1105:cycle +1106:createSkyMesh\28IDevice*\2c\20std::__2::shared_ptr\2c\20Config*\2c\20bool\29 +1107:createSceneDrawStage\28std::__2::shared_ptr\2c\20int\2c\20int\2c\20double\2c\20bool\2c\20ApiContainer&\2c\20std::__2::shared_ptr\20const&\2c\20std::__2::shared_ptr&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29 +1108:copysignl +1109:compress_block +1110:color_tree_get\28ColorTree*\2c\20unsigned\20char\2c\20unsigned\20char\2c\20unsigned\20char\2c\20unsigned\20char\29 +1111:closedir +1112:checkint +1113:char*\20std::__2::__itoa::append4_no_zeros\28char*\2c\20unsigned\20int\29 +1114:char*\20std::__2::__itoa::append2_no_zeros\28char*\2c\20unsigned\20int\29 +1115:boundaryPM\28BPMLists*\2c\20BPMNode*\2c\20unsigned\20long\2c\20int\2c\20int\29 +1116:bool\20std::__2::equal\2c\20std::__2::__wrap_iter>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\29 +1117:bool\20std::__2::equal\2c\20std::__2::__wrap_iter>\28std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\2c\20std::__2::__wrap_iter\29 +1118:bool\20std::__2::__insertion_sort_incomplete&\2c\20int*>\28int*\2c\20int*\2c\20std::__2::__less&\29 +1119:bool\20std::__2::__insertion_sort_incomplete&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20int\2c\20int&\2c\20bool\2c\20FrameViewsHolder&\29::$_0&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20WmoObject::startTraversingWMOGroup\28mathfu::Vector&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20int\2c\20int&\2c\20bool\2c\20FrameViewsHolder&\29::$_0&\29 +1120:bool\20std::__2::__insertion_sort_incomplete\2c\20std::__2::allocator>>&\29::$_0&\2c\20mathfu::Vector*>\28mathfu::Vector*\2c\20mathfu::Vector*\2c\20MathHelper::getHullPoints\28std::__2::vector\2c\20std::__2::allocator>>&\29::$_0&\29 +1121:bool\20std::__2::__insertion_sort_incomplete\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29::$_1&\2c\20LightResult*>\28LightResult*\2c\20LightResult*\2c\20Map::updateLightAndSkyboxData\28std::__2::shared_ptr\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29::$_1&\29 +1122:bool\20std::__2::__insertion_sort_incomplete\29::$_8&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_8&\29 +1123:bool\20std::__2::__insertion_sort_incomplete\29::$_7&\2c\20std::__2::shared_ptr*>\28std::__2::shared_ptr*\2c\20std::__2::shared_ptr*\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_7&\29 +1124:addChunk_tEXt\28ucvector*\2c\20char\20const*\2c\20char\20const*\29 +1125:addChunk_PLTE\28ucvector*\2c\20LodePNGColorMode\20const*\29 +1126:abort_message +1127:__vfprintf_internal +1128:__trunctfsf2 +1129:__towrite +1130:__strchrnul +1131:__itt_thread_ignore_init_3_0\28\29 +1132:__getf2 +1133:__get_locale +1134:__ftello_unlocked +1135:__ftello +1136:__fseeko_unlocked +1137:__floatscan +1138:__dl_seterr +1139:__divtf3 +1140:__cxxabiv1::__pointer_to_member_type_info::can_catch_nested\28__cxxabiv1::__shim_type_info\20const*\29\20const +1141:__cxxabiv1::__base_class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const +1142:WoWFilesCacheStorage::processCaches\28int\29 +1143:WmoScene::getPotentialEntities\28MathHelper::FrustumCullingData\20const&\2c\20mathfu::Vector\20const&\2c\20std::__2::shared_ptr&\2c\20M2ObjectListContainer&\2c\20WMOListContainer&\29 +1144:WmoObject::startTraversingWMOGroup\28mathfu::Vector&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20int\2c\20int&\2c\20bool\2c\20FrameViewsHolder&\29 +1145:WmoObject::setLoadingParam\28SMMapObjDefObj1&\29 +1146:WmoObject::addSplitChildWMOsToView\28InteriorView&\2c\20int\29 +1147:WmoGroupObject::getBottomVertexesFromBspResult\28PointerChecker\20const&\2c\20PointerChecker\20const&\2c\20std::__2::vector>\20const&\2c\20mathfu::Vector&\2c\20float&\2c\20float&\2c\20mathfu::Vector&\2c\20bool\29 +1148:WmoGroupObject::collectMeshes\28std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\2c\20int\29 +1149:WdlObject::SkyObjectScene::SkyObjectScene\28WdlObject::SkyObjectScene\20const&\29 +1150:WMOGroupListContainer::~WMOGroupListContainer\28\29 +1151:SkinGeom::generateIndexBuffer\28\29 +1152:SkelFile::loadLowPriority\28std::__2::shared_ptr\2c\20unsigned\20int\2c\20unsigned\20int\29 +1153:SceneComposer::DoUpdate\28\29 +1154:SceneComposer::DoCulling\28\29 +1155:ParticleEmitter::StepUpdate\28double\29 +1156:ParticleEmitter::BuildQuadT3\28mathfu::Vector&\2c\20mathfu::Vector&\2c\20mathfu::Vector&\2c\20mathfu::Vector&\2c\20float\2c\20float\2c\20float\2c\20mathfu::Vector*\29 +1157:NullScene::createCamera\28int\29 +1158:MathHelper::getIntersectionPointsFromPlanes\28std::__2::vector\2c\20std::__2::allocator>>\20const&\29 +1159:MathHelper::getHullPoints\28std::__2::vector\2c\20std::__2::allocator>>&\29 +1160:MathHelper::getHullLines\28std::__2::vector\2c\20std::__2::allocator>>&\29 +1161:MathHelper::getBarycentric\28mathfu::Vector&\2c\20mathfu::Vector&\2c\20mathfu::Vector&\2c\20mathfu::Vector&\29 +1162:MathHelper::distanceFromAABBToPoint\28CAaBox\20const&\2c\20mathfu::Vector&\29 +1163:MathHelper::createPlaneFromEyeAndVertexes\28mathfu::Vector\20const&\2c\20mathfu::Vector\20const&\2c\20mathfu::Vector\20const&\29 +1164:MathHelper::calculateFrustumPointsFromMat\28mathfu::Matrix&\29 +1165:Map::mapInnerZoneLightRecord::mapInnerZoneLightRecord\28Map::mapInnerZoneLightRecord\20const&\29 +1166:Map::getWmoObject\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20SMMapObjDefObj1&\29 +1167:Map::getWmoObject\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20SMMapObjDef&\29 +1168:Map::getWmoObject\28int\2c\20SMMapObjDefObj1&\29 +1169:Map::getWmoObject\28int\2c\20SMMapObjDef&\29 +1170:Map::getM2Object\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20SMDoodadDef&\29 +1171:Map::getM2Object\28int\2c\20SMDoodadDef&\29 +1172:Map::getLightResultsFromDB\28mathfu::Vector&\2c\20Config\20const*\2c\20std::__2::vector>&\2c\20StateForConditions*\29 +1173:Map::createAdtFreeLamdas\28\29 +1174:Map::checkExterior\28mathfu::Vector&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20std::__2::shared_ptr\29 +1175:Map::checkADTCulling\28int\2c\20int\2c\20MathHelper::FrustumCullingData\20const&\2c\20mathfu::Vector\20const&\2c\20std::__2::shared_ptr&\2c\20M2ObjectListContainer&\2c\20WMOListContainer&\29 +1176:M2Scene::setMeshIdArray\28std::__2::vector>&\29 +1177:M2Scene::getPotentialEntities\28MathHelper::FrustumCullingData\20const&\2c\20mathfu::Vector\20const&\2c\20std::__2::shared_ptr&\2c\20M2ObjectListContainer&\2c\20WMOListContainer&\29 +1178:M2ObjectListContainer::addDrawnAndToLoad\28M2ObjectListContainer&\29 +1179:M2Object::setDiffuseColor\28CImVector&\29 +1180:M2Object::getHardCodedTexture\28int\29 +1181:M2Object::createPlacementMatrix\28SMDoodadDef&\29 +1182:M2Object::calcDistance\28mathfu::Vector\29 +1183:M2MeshBufferUpdater::updateSortData\28std::__2::shared_ptr&\2c\20M2Object\20const&\2c\20M2MaterialInst&\2c\20M2Data\20const*\2c\20M2SkinProfile\20const*\2c\20mathfu::Matrix&\29 +1184:M2MeshBufferUpdater::fillTextureMatrices\28M2Object\20const&\2c\20int\2c\20M2Data*\2c\20M2SkinProfile*\2c\20mathfu::Matrix*\29 +1185:M2Geom::initTracks\28CM2SequenceLoad*\29 +1186:IMesh::IMesh\28IMesh\20const&\29 +1187:GeneralView::~GeneralView\28\29 +1188:GeneralView::produceTransformedPortalMeshes\28std::__2::shared_ptr&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29 +1189:GeneralView::addM2FromGroups\28MathHelper::FrustumCullingData\20const&\2c\20mathfu::Vector&\29 +1190:GVertexBufferGL33::~GVertexBufferGL33\28\29 +1191:GVertexBufferGL20::~GVertexBufferGL20\28\29 +1192:GVertexBufferDynamicGL33::~GVertexBufferDynamicGL33\28\29 +1193:GVertexBufferDynamicGL20::~GVertexBufferDynamicGL20\28\29 +1194:GVertexBufferDynamicGL20::getPointerForModification\28\29 +1195:GVertexBufferBindingsGL33::~GVertexBufferBindingsGL33\28\29 +1196:GVertexBufferBindingsGL33::bind\28\29 +1197:GVertexBufferBindingsGL20::~GVertexBufferBindingsGL20\28\29 +1198:GVertexBufferBindingsGL20::setIndexBuffer\28std::__2::shared_ptr\29 +1199:GVertexBufferBindingsGL20::bind\28\29 +1200:GVertexBufferBindingsGL20::addVertexBufferBinding\28GVertexBufferBinding\29 +1201:GUniformBufferGL33::~GUniformBufferGL33\28\29 +1202:GUniformBufferGL33::uploadData\28void*\2c\20int\29 +1203:GTextureGL33::bindToCurrentFrameBufferAsColor\28unsigned\20char\29 +1204:GTextureGL33::GTextureGL33\28std::__2::shared_ptr\20const&\2c\20bool\2c\20bool\29 +1205:GTextureGL20::GTextureGL20\28IDevice&\2c\20bool\2c\20bool\29 +1206:GShaderPermutationGL33::~GShaderPermutationGL33\28\29 +1207:GShaderPermutationGL20::bindProgram\28\29 +1208:GOcclusionQueryGL33::~GOcclusionQueryGL33\28\29 +1209:GOcclusionQueryGL20::~GOcclusionQueryGL20\28\29 +1210:GMeshGL20::setStart\28int\29 +1211:GMeshGL20::setEnd\28int\29 +1212:GMeshGL20::getSortDistance\28\29 +1213:GMeshGL20::getMeshType\28\29 +1214:GM2MeshGL20::setM2Object\28void*\29 +1215:GM2MeshGL20::setLayer\28int\29 +1216:GIndexBufferGL33::~GIndexBufferGL33\28\29 +1217:GIndexBufferGL20::~GIndexBufferGL20\28\29 +1218:GIndexBufferGL20::unbind\28\29 +1219:GFrameBufferGL33::~GFrameBufferGL33\28\29 +1220:GDeviceGL33::~GDeviceGL33\28\29 +1221:GDeviceGL20::~GDeviceGL20\28\29 +1222:GDeviceGL20::setViewPortDimensions\28float\2c\20float\2c\20float\2c\20float\29 +1223:GDeviceGL20::drawMesh\28std::__2::shared_ptr\2c\20std::__2::shared_ptr\29 +1224:GDeviceGL20::createFence\28\29 +1225:GBlpTextureGL33::~GBlpTextureGL33\28\29 +1226:GBlpTextureGL20::~GBlpTextureGL20\28\29 +1227:GBlpTextureGL20::getIsLoaded\28\29 +1228:FrameViewsHolder::createInterior\28MathHelper::FrustumCullingData\20const&\29 +1229:FirstPersonCamera::stopMovingDown\28\29 +1230:FirstPersonCamera::startMovingDown\28\29 +1231:FirstPersonCamera::getCameraPosition\28float*\29 +1232:FirstPersonCamera::addHorizontalViewDir\28float\29 +1233:FirstPersonCamera::addCameraViewOffset\28float\2c\20float\29 +1234:DecompressBlockBC1Internal\28unsigned\20char\20const*\2c\20unsigned\20char*\2c\20unsigned\20int\2c\20unsigned\20char\20const*\2c\20bool\29 +1235:Cache::getFileId\28int\29 +1236:Cache::getFileId\28int\29 +1237:CRibbonEmitter::InterpEdge\28float\2c\20float\2c\20unsigned\20int\29 +1238:CBoneMasterData::loadLowPriority\28std::__2::shared_ptr\2c\20unsigned\20int\2c\20unsigned\20int\2c\20bool\29 +1239:C3Spline_Bezier3::calcSegmentLength\28\29 +1240:C3Spline::arclengthSegT\28float\2c\20mathfu::Matrix*\2c\20unsigned\20int\2c\20unsigned\20int*\2c\20float*\29 +1241:AnimationManager::calcBoneMatrix\28std::__2::vector\2c\20std::__2::allocator>>&\2c\20int\2c\20mathfu::Matrix\20const&\29 +1242:AdtObject::getAreaId\28int\2c\20int\29 +1243:AdtObject::checkReferences\28ADTObjRenderRes&\2c\20mathfu::Vector\20const&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20M2ObjectListContainer&\2c\20WMOListContainer&\2c\20int\2c\20int\2c\20int\2c\20int\29 +1244:AdtFile::AdtFile\28std::__2::basic_string\2c\20std::__2::allocator>\29 +1245:Adam7_getpassvalues\28unsigned\20int*\2c\20unsigned\20int*\2c\20unsigned\20long*\2c\20unsigned\20long*\2c\20unsigned\20long*\2c\20unsigned\20int\2c\20unsigned\20int\2c\20unsigned\20int\29 +1246:zoomInFromMouseScroll +1247:zcfree +1248:zcalloc +1249:window_size_callback\28GLFWwindow*\2c\20int\2c\20int\29 +1250:wcsnrtombs +1251:void\20std::__2::locale::__imp::install>>>\28std::__2::time_put>>*\29 +1252:void\20std::__2::locale::__imp::install>>>\28std::__2::time_put>>*\29 +1253:void\20std::__2::locale::__imp::install>>>\28std::__2::time_get>>*\29 +1254:void\20std::__2::locale::__imp::install>>>\28std::__2::time_get>>*\29 +1255:void\20std::__2::locale::__imp::install>\28std::__2::numpunct*\29 +1256:void\20std::__2::locale::__imp::install>\28std::__2::numpunct*\29 +1257:void\20std::__2::locale::__imp::install>>>\28std::__2::num_put>>*\29 +1258:void\20std::__2::locale::__imp::install>>>\28std::__2::num_put>>*\29 +1259:void\20std::__2::locale::__imp::install>>>\28std::__2::num_get>>*\29 +1260:void\20std::__2::locale::__imp::install>>>\28std::__2::num_get>>*\29 +1261:void\20std::__2::locale::__imp::install>\28std::__2::moneypunct*\29 +1262:void\20std::__2::locale::__imp::install>\28std::__2::moneypunct*\29 +1263:void\20std::__2::locale::__imp::install>\28std::__2::moneypunct*\29 +1264:void\20std::__2::locale::__imp::install>\28std::__2::moneypunct*\29 +1265:void\20std::__2::locale::__imp::install>>>\28std::__2::money_put>>*\29 +1266:void\20std::__2::locale::__imp::install>>>\28std::__2::money_put>>*\29 +1267:void\20std::__2::locale::__imp::install>>>\28std::__2::money_get>>*\29 +1268:void\20std::__2::locale::__imp::install>>>\28std::__2::money_get>>*\29 +1269:void\20std::__2::locale::__imp::install>\28std::__2::messages*\29 +1270:void\20std::__2::locale::__imp::install>\28std::__2::messages*\29 +1271:void\20std::__2::locale::__imp::install>\28std::__2::ctype*\29 +1272:void\20std::__2::locale::__imp::install>\28std::__2::ctype*\29 +1273:void\20std::__2::locale::__imp::install>\28std::__2::collate*\29 +1274:void\20std::__2::locale::__imp::install>\28std::__2::collate*\29 +1275:void\20std::__2::locale::__imp::install>\28std::__2::codecvt*\29 +1276:void\20std::__2::locale::__imp::install>\28std::__2::codecvt*\29 +1277:void\20std::__2::locale::__imp::install>\28std::__2::codecvt*\29 +1278:void\20std::__2::locale::__imp::install>\28std::__2::codecvt*\29 +1279:void\20std::__2::locale::__imp::install>\28std::__2::codecvt*\29 +1280:void\20std::__2::locale::__imp::install>\28std::__2::codecvt*\29 +1281:void\20std::__2::allocator_traits>::construct\28std::__2::__sso_allocator&\2c\20std::__2::locale::facet**\29 +1282:void\20std::__2::__double_or_nothing\28std::__2::unique_ptr&\2c\20char*&\2c\20char*&\29 +1283:void\20std::__2::__call_once_proxy>\28void*\29 +1284:void\20std::__2::__call_once_proxy>\28void*\29 +1285:void\20std::__2::__call_once_proxy>\28void*\29 +1286:void\20std::__2::\28anonymous\20namespace\29::throw_helper\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +1287:void\20std::__2::\28anonymous\20namespace\29::throw_helper\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +1288:void*\20std::__2::__thread_proxy>\2c\20SceneComposer::SceneComposer\28std::__2::shared_ptr\29::$_2>>\28void*\29 +1289:void*\20std::__2::__thread_proxy>\2c\20SceneComposer::SceneComposer\28std::__2::shared_ptr\29::$_1>>\28void*\29 +1290:void*\20std::__2::__thread_proxy>\2c\20SceneComposer::SceneComposer\28std::__2::shared_ptr\29::$_0>>\28void*\29 +1291:virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29.1 +1292:virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29 +1293:virtual\20thunk\20to\20std::__2::basic_ofstream>::~basic_ofstream\28\29.1 +1294:virtual\20thunk\20to\20std::__2::basic_ofstream>::~basic_ofstream\28\29 +1295:virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29.1 +1296:virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29 +1297:virtual\20thunk\20to\20std::__2::basic_ifstream>::~basic_ifstream\28\29.1 +1298:virtual\20thunk\20to\20std::__2::basic_ifstream>::~basic_ifstream\28\29 +1299:vasprintf +1300:unsigned\20short\20std::__2::__num_get_unsigned_integral\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 +1301:unsigned\20long\20long\20std::__2::__num_get_unsigned_integral\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 +1302:unsigned\20long\20const&\20std::__2::min\28unsigned\20long\20const&\2c\20unsigned\20long\20const&\29 +1303:tinygltf::base64_encode\28unsigned\20char\20const*\2c\20unsigned\20int\29 +1304:tinygltf::WriteWholeFile\28std::__2::basic_string\2c\20std::__2::allocator>*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::vector>\20const&\2c\20void*\29 +1305:tinygltf::WriteToMemory_stbi\28void*\2c\20void*\2c\20int\29 +1306:tinygltf::WriteImageData\28std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const*\2c\20tinygltf::Image*\2c\20bool\2c\20void*\29 +1307:tinygltf::ReadWholeFile\28std::__2::vector>*\2c\20std::__2::basic_string\2c\20std::__2::allocator>*\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20void*\29 +1308:tinygltf::LoadImageData\28tinygltf::Image*\2c\20int\2c\20std::__2::basic_string\2c\20std::__2::allocator>*\2c\20std::__2::basic_string\2c\20std::__2::allocator>*\2c\20int\2c\20int\2c\20unsigned\20char\20const*\2c\20int\2c\20void*\29 +1309:tinygltf::FileExists\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20void*\29 +1310:tinygltf::ExpandFilePath\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20void*\29 +1311:tbb::detail::r1::user_abort::what\28\29\20const +1312:tbb::detail::r1::unsafe_wait::~unsafe_wait\28\29 +1313:tbb::detail::r1::suspend_point_type::resume_task::execute\28tbb::detail::d1::execution_data&\29 +1314:tbb::detail::r1::std_cache_aligned_allocate\28unsigned\20long\2c\20unsigned\20long\29 +1315:tbb::detail::r1::stack_size_control::default_value\28\29\20const +1316:tbb::detail::r1::sleep_node::~sleep_node\28\29.1 +1317:tbb::detail::r1::sleep_node::~sleep_node\28\29 +1318:tbb::detail::r1::sleep_node::~sleep_node\28\29.1 +1319:tbb::detail::r1::sleep_node::~sleep_node\28\29 +1320:tbb::detail::r1::rml::private_worker::thread_routine\28void*\29 +1321:tbb::detail::r1::rml::private_server::~private_server\28\29.1 +1322:tbb::detail::r1::rml::private_server::request_close_connection\28bool\29 +1323:tbb::detail::r1::rml::private_server::default_concurrency\28\29\20const +1324:tbb::detail::r1::rml::private_server::adjust_job_count_estimate\28int\29 +1325:tbb::detail::r1::resume_node::~resume_node\28\29.1 +1326:tbb::detail::r1::resume_node::~resume_node\28\29 +1327:tbb::detail::r1::resume_node::wait\28\29 +1328:tbb::detail::r1::resume_node::reset\28\29 +1329:tbb::detail::r1::resume_node::notify\28\29 +1330:tbb::detail::r1::resume_node::init\28\29 +1331:tbb::detail::r1::missing_wait::what\28\29\20const +1332:tbb::detail::r1::market::~market\28\29.1 +1333:tbb::detail::r1::market::process\28rml::job&\29 +1334:tbb::detail::r1::market::min_stack_size\28\29\20const +1335:tbb::detail::r1::market::max_job_count\28\29\20const +1336:tbb::detail::r1::market::create_one_job\28\29 +1337:tbb::detail::r1::market::cleanup\28rml::job&\29 +1338:tbb::detail::r1::market::acknowledge_close_connection\28\29 +1339:tbb::detail::r1::lifetime_control::apply_active\28unsigned\20long\29 +1340:tbb::detail::r1::initialize_handler_pointers\28\29 +1341:tbb::detail::r1::initialize_cache_aligned_allocate_handler\28unsigned\20long\2c\20unsigned\20long\29 +1342:tbb::detail::r1::initialize_allocate_handler\28unsigned\20long\29 +1343:tbb::detail::r1::init_dl_data\28\29 +1344:tbb::detail::r1::dynamic_link\28char\20const*\2c\20tbb::detail::r1::dynamic_link_descriptor\20const*\2c\20unsigned\20long\2c\20void**\2c\20int\29 +1345:tbb::detail::r1::coroutine_thread_func\28void*\29 +1346:tbb::detail::r1::control_storage::is_first_arg_preferred\28unsigned\20long\2c\20unsigned\20long\29\20const +1347:tbb::detail::r1::control_storage::active_value\28\29 +1348:tbb::detail::r1::bad_last_alloc::what\28\29\20const +1349:tbb::detail::r1::allowed_parallelism_control::is_first_arg_preferred\28unsigned\20long\2c\20unsigned\20long\29\20const +1350:tbb::detail::r1::allowed_parallelism_control::default_value\28\29\20const +1351:tbb::detail::r1::allowed_parallelism_control::apply_active\28unsigned\20long\29 +1352:tbb::detail::r1::allowed_parallelism_control::active_value\28\29 +1353:tbb::detail::d1::start_for*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::quick_sort_body*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::auto_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1354:tbb::detail::d1::start_for*>\2c\20WMOGroupListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::quick_sort_body*>\2c\20WMOGroupListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::auto_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1355:tbb::detail::d1::start_for*>\2c\20M2ObjectListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::quick_sort_body*>\2c\20M2ObjectListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::auto_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1356:tbb::detail::d1::start_for*>\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_8>\2c\20tbb::detail::d1::quick_sort_body*>\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_8>\2c\20tbb::detail::d1::auto_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1357:tbb::detail::d1::start_for*>\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_7>\2c\20tbb::detail::d1::quick_sort_body*>\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_7>\2c\20tbb::detail::d1::auto_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1358:tbb::detail::d1::start_for\2c\20Map::update\28std::__2::shared_ptr\29::$_6\2c\20tbb::detail::d1::auto_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1359:tbb::detail::d1::start_for\2c\20Map::update\28std::__2::shared_ptr\29::$_5\2c\20tbb::detail::d1::simple_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1360:tbb::detail::d1::start_for\2c\20Map::update\28std::__2::shared_ptr\29::$_5\2c\20tbb::detail::d1::simple_partitioner\20const>::cancel\28tbb::detail::d1::execution_data&\29 +1361:tbb::detail::d1::start_for\2c\20Map::checkExterior\28mathfu::Vector&\2c\20MathHelper::FrustumCullingData\20const&\2c\20int\2c\20std::__2::shared_ptr\29::$_2\2c\20tbb::detail::d1::auto_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1362:tbb::detail::d1::start_for\2c\20GeneralView::addM2FromGroups\28MathHelper::FrustumCullingData\20const&\2c\20mathfu::Vector&\29::$_0\2c\20tbb::detail::d1::auto_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1363:tbb::detail::d1::start_for*>>\2c\20tbb::detail::d1::quick_sort_pretest_body*>\2c\20WMOListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::auto_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1364:tbb::detail::d1::start_for*>>\2c\20tbb::detail::d1::quick_sort_pretest_body*>\2c\20WMOGroupListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::auto_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1365:tbb::detail::d1::start_for*>>\2c\20tbb::detail::d1::quick_sort_pretest_body*>\2c\20M2ObjectListContainer::removeDuplicates\28std::__2::vector\2c\20std::__2::allocator>>&\29::'lambda'\28auto&\2c\20auto&\29>\2c\20tbb::detail::d1::auto_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1366:tbb::detail::d1::start_for*>>\2c\20tbb::detail::d1::quick_sort_pretest_body*>\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_8>\2c\20tbb::detail::d1::auto_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1367:tbb::detail::d1::start_for*>>\2c\20tbb::detail::d1::quick_sort_pretest_body*>\2c\20Map::produceUpdateStage\28std::__2::shared_ptr\29::$_7>\2c\20tbb::detail::d1::auto_partitioner\20const>::execute\28tbb::detail::d1::execution_data&\29 +1368:tbb::detail::d1::delegated_function::wait_until\28int\2c\20unsigned\20long\2c\20std::__2::memory_order\29::'lambda'\28\29>::operator\28\29\28\29\20const +1369:tbb::detail::d1::delegated_function::wait\28bool\2c\20unsigned\20long\2c\20std::__2::memory_order\29::'lambda'\28\29>::operator\28\29\28\29\20const +1370:tbb::detail::d1::delegated_function::operator\28\29\28\29\20const +1371:tbb::detail::d1::delegated_function::operator\28\29\28\29\20const +1372:string_read +1373:stopMovingForward +1374:stopMovingBackwards +1375:std::runtime_error::runtime_error\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +1376:std::overflow_error::overflow_error\28char\20const*\29 +1377:std::out_of_range::out_of_range\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +1378:std::invalid_argument::invalid_argument\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +1379:std::exception::what\28\29\20const +1380:std::bad_cast::what\28\29\20const +1381:std::bad_array_new_length::what\28\29\20const +1382:std::bad_alloc::what\28\29\20const +1383:std::__2::vector>::vector\28unsigned\20long\29 +1384:std::__2::vector>::resize\28unsigned\20long\29 +1385:std::__2::vector>::__swap_out_circular_buffer\28std::__2::__split_buffer&>&\29 +1386:std::__2::time_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20tm\20const*\2c\20char\2c\20char\29\20const +1387:std::__2::time_put>>&\20std::__2::\28anonymous\20namespace\29::make>>\2c\20unsigned\20int>\28unsigned\20int\29 +1388:std::__2::time_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20tm\20const*\2c\20char\2c\20char\29\20const +1389:std::__2::time_put>>&\20std::__2::\28anonymous\20namespace\29::make>>\2c\20unsigned\20int>\28unsigned\20int\29 +1390:std::__2::time_get>>::do_get_year\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const +1391:std::__2::time_get>>::do_get_weekday\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const +1392:std::__2::time_get>>::do_get_time\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const +1393:std::__2::time_get>>::do_get_monthname\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const +1394:std::__2::time_get>>::do_get_date\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const +1395:std::__2::time_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20char\2c\20char\29\20const +1396:std::__2::time_get>>::do_get_year\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const +1397:std::__2::time_get>>::do_get_weekday\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const +1398:std::__2::time_get>>::do_get_time\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const +1399:std::__2::time_get>>::do_get_monthname\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const +1400:std::__2::time_get>>::do_get_date\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\29\20const +1401:std::__2::time_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20tm*\2c\20char\2c\20char\29\20const +1402:std::__2::system_error::__init\28std::__2::error_code\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\29 +1403:std::__2::numpunct::~numpunct\28\29.1 +1404:std::__2::numpunct::do_truename\28\29\20const +1405:std::__2::numpunct::do_grouping\28\29\20const +1406:std::__2::numpunct::do_falsename\28\29\20const +1407:std::__2::numpunct&\20std::__2::\28anonymous\20namespace\29::make\2c\20unsigned\20int>\28unsigned\20int\29 +1408:std::__2::numpunct::~numpunct\28\29.1 +1409:std::__2::numpunct::do_truename\28\29\20const +1410:std::__2::numpunct::do_thousands_sep\28\29\20const +1411:std::__2::numpunct::do_grouping\28\29\20const +1412:std::__2::numpunct::do_falsename\28\29\20const +1413:std::__2::numpunct::do_decimal_point\28\29\20const +1414:std::__2::numpunct&\20std::__2::\28anonymous\20namespace\29::make\2c\20unsigned\20int>\28unsigned\20int\29 +1415:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20void\20const*\29\20const +1416:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20unsigned\20long\29\20const +1417:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20unsigned\20long\20long\29\20const +1418:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\29\20const +1419:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20long\29\20const +1420:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20double\29\20const +1421:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20double\29\20const +1422:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20bool\29\20const +1423:std::__2::num_put>>\20const&\20std::__2::use_facet>>>\28std::__2::locale\20const&\29 +1424:std::__2::num_put>>::put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20unsigned\20long\29\20const +1425:std::__2::num_put>>::put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\29\20const +1426:std::__2::num_put>>::put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20double\29\20const +1427:std::__2::num_put>>::put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20bool\29\20const +1428:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20void\20const*\29\20const +1429:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20unsigned\20long\29\20const +1430:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20unsigned\20long\20long\29\20const +1431:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\29\20const +1432:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\20long\29\20const +1433:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20long\20double\29\20const +1434:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20double\29\20const +1435:std::__2::num_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20std::__2::ios_base&\2c\20char\2c\20bool\29\20const +1436:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20void*&\29\20const +1437:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20short&\29\20const +1438:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20long\20long&\29\20const +1439:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20long&\29\20const +1440:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20int&\29\20const +1441:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20long&\29\20const +1442:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const +1443:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long&\29\20const +1444:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20float&\29\20const +1445:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20double&\29\20const +1446:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20bool&\29\20const +1447:std::__2::num_get>>\20const&\20std::__2::use_facet>>>\28std::__2::locale\20const&\29 +1448:std::__2::num_get>>::get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20int&\29\20const +1449:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20void*&\29\20const +1450:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20short&\29\20const +1451:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20long\20long&\29\20const +1452:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20long&\29\20const +1453:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20unsigned\20int&\29\20const +1454:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20long&\29\20const +1455:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const +1456:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long&\29\20const +1457:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20float&\29\20const +1458:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20double&\29\20const +1459:std::__2::num_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20bool&\29\20const +1460:std::__2::moneypunct&\20std::__2::\28anonymous\20namespace\29::make\2c\20unsigned\20int>\28unsigned\20int\29 +1461:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const +1462:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20wchar_t\2c\20long\20double\29\20const +1463:std::__2::money_put>>&\20std::__2::\28anonymous\20namespace\29::make>>\2c\20unsigned\20int>\28unsigned\20int\29 +1464:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const +1465:std::__2::money_put>>::do_put\28std::__2::ostreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20char\2c\20long\20double\29\20const +1466:std::__2::money_put>>&\20std::__2::\28anonymous\20namespace\29::make>>\2c\20unsigned\20int>\28unsigned\20int\29 +1467:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\29\20const +1468:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const +1469:std::__2::money_get>>::__do_get\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::locale\20const&\2c\20unsigned\20int\2c\20unsigned\20int&\2c\20bool&\2c\20std::__2::ctype\20const&\2c\20std::__2::unique_ptr&\2c\20wchar_t*&\2c\20wchar_t*\29 +1470:std::__2::money_get>>&\20std::__2::\28anonymous\20namespace\29::make>>\2c\20unsigned\20int>\28unsigned\20int\29 +1471:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\29\20const +1472:std::__2::money_get>>::do_get\28std::__2::istreambuf_iterator>\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::ios_base&\2c\20unsigned\20int&\2c\20long\20double&\29\20const +1473:std::__2::money_get>>::__do_get\28std::__2::istreambuf_iterator>&\2c\20std::__2::istreambuf_iterator>\2c\20bool\2c\20std::__2::locale\20const&\2c\20unsigned\20int\2c\20unsigned\20int&\2c\20bool&\2c\20std::__2::ctype\20const&\2c\20std::__2::unique_ptr&\2c\20char*&\2c\20char*\29 +1474:std::__2::money_get>>&\20std::__2::\28anonymous\20namespace\29::make>>\2c\20unsigned\20int>\28unsigned\20int\29 +1475:std::__2::messages::do_get\28long\2c\20int\2c\20int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const +1476:std::__2::messages::do_get\28long\2c\20int\2c\20int\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29\20const +1477:std::__2::messages&\20std::__2::\28anonymous\20namespace\29::make\2c\20unsigned\20int>\28unsigned\20int\29 +1478:std::__2::locale::id::__init\28\29 +1479:std::__2::locale::has_facet\28std::__2::locale::id&\29\20const +1480:std::__2::locale::__imp::~__imp\28\29.1 +1481:std::__2::locale::__global\28\29 +1482:std::__2::istreambuf_iterator>::operator++\28int\29 +1483:std::__2::istreambuf_iterator>::operator*\28\29\20const +1484:std::__2::istreambuf_iterator>::operator++\28int\29 +1485:std::__2::ios_base::getloc\28\29\20const +1486:std::__2::ios_base::failure::failure\28char\20const*\2c\20std::__2::error_code\20const&\29 +1487:std::__2::ios_base::__set_badbit_and_consider_rethrow\28\29 +1488:std::__2::ios_base::__call_callbacks\28std::__2::ios_base::event\29 +1489:std::__2::future_error::~future_error\28\29 +1490:std::__2::error_category::equivalent\28std::__2::error_code\20const&\2c\20int\29\20const +1491:std::__2::error_category::equivalent\28int\2c\20std::__2::error_condition\20const&\29\20const +1492:std::__2::error_category::default_error_condition\28int\29\20const +1493:std::__2::enable_if<__is_cpp17_forward_iterator::value\2c\20std::__2::basic_string\2c\20std::__2::allocator>&>::type\20std::__2::basic_string\2c\20std::__2::allocator>::append\28wchar_t*\2c\20wchar_t*\29 +1494:std::__2::enable_if<__is_cpp17_forward_iterator::value\2c\20std::__2::basic_string\2c\20std::__2::allocator>&>::type\20std::__2::basic_string\2c\20std::__2::allocator>::append\28char*\2c\20char*\29 +1495:std::__2::ctype::widen\28char\29\20const +1496:std::__2::ctype::widen\28char\20const*\2c\20char\20const*\2c\20wchar_t*\29\20const +1497:std::__2::ctype::is\28unsigned\20long\2c\20wchar_t\29\20const +1498:std::__2::ctype::do_widen\28char\20const*\2c\20char\20const*\2c\20wchar_t*\29\20const +1499:std::__2::ctype::do_toupper\28wchar_t\29\20const +1500:std::__2::ctype::do_toupper\28wchar_t*\2c\20wchar_t\20const*\29\20const +1501:std::__2::ctype::do_tolower\28wchar_t\29\20const +1502:std::__2::ctype::do_tolower\28wchar_t*\2c\20wchar_t\20const*\29\20const +1503:std::__2::ctype::do_scan_not\28unsigned\20long\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const +1504:std::__2::ctype::do_scan_is\28unsigned\20long\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const +1505:std::__2::ctype::do_narrow\28wchar_t\2c\20char\29\20const +1506:std::__2::ctype::do_narrow\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20char\2c\20char*\29\20const +1507:std::__2::ctype::do_is\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20unsigned\20long*\29\20const +1508:std::__2::ctype::do_is\28unsigned\20long\2c\20wchar_t\29\20const +1509:std::__2::ctype::~ctype\28\29.1 +1510:std::__2::ctype::widen\28char\20const*\2c\20char\20const*\2c\20char*\29\20const +1511:std::__2::ctype::toupper\28char\29\20const +1512:std::__2::ctype::do_widen\28char\20const*\2c\20char\20const*\2c\20char*\29\20const +1513:std::__2::ctype::do_toupper\28char\29\20const +1514:std::__2::ctype::do_toupper\28char*\2c\20char\20const*\29\20const +1515:std::__2::ctype::do_tolower\28char\29\20const +1516:std::__2::ctype::do_tolower\28char*\2c\20char\20const*\29\20const +1517:std::__2::ctype::do_narrow\28char\2c\20char\29\20const +1518:std::__2::ctype::do_narrow\28char\20const*\2c\20char\20const*\2c\20char\2c\20char*\29\20const +1519:std::__2::ctype&\20std::__2::\28anonymous\20namespace\29::make\2c\20std::nullptr_t\2c\20bool\2c\20unsigned\20int>\28std::nullptr_t\2c\20bool\2c\20unsigned\20int\29 +1520:std::__2::collate::do_transform\28wchar_t\20const*\2c\20wchar_t\20const*\29\20const +1521:std::__2::collate::do_hash\28wchar_t\20const*\2c\20wchar_t\20const*\29\20const +1522:std::__2::collate::do_compare\28wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*\29\20const +1523:std::__2::collate::do_transform\28char\20const*\2c\20char\20const*\29\20const +1524:std::__2::collate::do_hash\28char\20const*\2c\20char\20const*\29\20const +1525:std::__2::collate::do_compare\28char\20const*\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*\29\20const +1526:std::__2::codecvt::~codecvt\28\29.1 +1527:std::__2::codecvt::do_unshift\28__mbstate_t&\2c\20char*\2c\20char*\2c\20char*&\29\20const +1528:std::__2::codecvt::do_out\28__mbstate_t&\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20wchar_t\20const*&\2c\20char*\2c\20char*\2c\20char*&\29\20const +1529:std::__2::codecvt::do_max_length\28\29\20const +1530:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const +1531:std::__2::codecvt::do_in\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20char\20const*&\2c\20wchar_t*\2c\20wchar_t*\2c\20wchar_t*&\29\20const +1532:std::__2::codecvt::do_encoding\28\29\20const +1533:std::__2::codecvt&\20std::__2::\28anonymous\20namespace\29::make\2c\20unsigned\20int>\28unsigned\20int\29 +1534:std::__2::codecvt::do_length\28__mbstate_t&\2c\20char\20const*\2c\20char\20const*\2c\20unsigned\20long\29\20const +1535:std::__2::chrono::__libcpp_steady_clock_now\28\29 +1536:std::__2::basic_stringbuf\2c\20std::__2::allocator>::~basic_stringbuf\28\29.1 +1537:std::__2::basic_stringbuf\2c\20std::__2::allocator>::underflow\28\29 +1538:std::__2::basic_stringbuf\2c\20std::__2::allocator>::seekpos\28std::__2::fpos<__mbstate_t>\2c\20unsigned\20int\29 +1539:std::__2::basic_stringbuf\2c\20std::__2::allocator>::seekoff\28long\20long\2c\20std::__2::ios_base::seekdir\2c\20unsigned\20int\29 +1540:std::__2::basic_stringbuf\2c\20std::__2::allocator>::pbackfail\28int\29 +1541:std::__2::basic_stringbuf\2c\20std::__2::allocator>::overflow\28int\29 +1542:std::__2::basic_string\2c\20std::__2::allocator>::push_back\28wchar_t\29 +1543:std::__2::basic_string\2c\20std::__2::allocator>::append\28wchar_t\20const*\2c\20unsigned\20long\29 +1544:std::__2::basic_string\2c\20std::__2::allocator>::resize\28unsigned\20long\29 +1545:std::__2::basic_string\2c\20std::__2::allocator>::operator+=\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +1546:std::__2::basic_string\2c\20std::__2::allocator>::__init\28char\20const*\2c\20unsigned\20long\2c\20unsigned\20long\29 +1547:std::__2::basic_streambuf>::~basic_streambuf\28\29.1 +1548:std::__2::basic_streambuf>::xsputn\28wchar_t\20const*\2c\20long\29 +1549:std::__2::basic_streambuf>::xsgetn\28wchar_t*\2c\20long\29 +1550:std::__2::basic_streambuf>::uflow\28\29 +1551:std::__2::basic_streambuf>::~basic_streambuf\28\29.1 +1552:std::__2::basic_streambuf>::xsputn\28char\20const*\2c\20long\29 +1553:std::__2::basic_streambuf>::xsgetn\28char*\2c\20long\29 +1554:std::__2::basic_streambuf>::uflow\28\29 +1555:std::__2::basic_streambuf>::sgetn\28char*\2c\20long\29 +1556:std::__2::basic_streambuf>::pubseekpos\28std::__2::fpos<__mbstate_t>\2c\20unsigned\20int\29 +1557:std::__2::basic_streambuf>::pubseekoff\28long\20long\2c\20std::__2::ios_base::seekdir\2c\20unsigned\20int\29 +1558:std::__2::basic_ostream>::sentry::sentry\28std::__2::basic_ostream>&\29 +1559:std::__2::basic_ios>::rdbuf\28\29\20const +1560:std::__2::basic_ios>::good\28\29\20const +1561:std::__2::basic_ios>::fill\28\29\20const +1562:std::__2::basic_filebuf>::~basic_filebuf\28\29.1 +1563:std::__2::basic_filebuf>::underflow\28\29 +1564:std::__2::basic_filebuf>::sync\28\29 +1565:std::__2::basic_filebuf>::setbuf\28char*\2c\20long\29 +1566:std::__2::basic_filebuf>::seekpos\28std::__2::fpos<__mbstate_t>\2c\20unsigned\20int\29 +1567:std::__2::basic_filebuf>::seekoff\28long\20long\2c\20std::__2::ios_base::seekdir\2c\20unsigned\20int\29 +1568:std::__2::basic_filebuf>::pbackfail\28int\29 +1569:std::__2::basic_filebuf>::overflow\28int\29 +1570:std::__2::basic_filebuf>::imbue\28std::__2::locale\20const&\29 +1571:std::__2::basic_filebuf>::close\28\29 +1572:std::__2::bad_weak_ptr::what\28\29\20const +1573:std::__2::bad_function_call::what\28\29\20const +1574:std::__2::__time_put::__time_put\28\29 +1575:std::__2::__time_get_c_storage::__x\28\29\20const +1576:std::__2::__time_get_c_storage::__weeks\28\29\20const +1577:std::__2::__time_get_c_storage::__r\28\29\20const +1578:std::__2::__time_get_c_storage::__months\28\29\20const +1579:std::__2::__time_get_c_storage::__c\28\29\20const +1580:std::__2::__time_get_c_storage::__am_pm\28\29\20const +1581:std::__2::__time_get_c_storage::__X\28\29\20const +1582:std::__2::__time_get_c_storage::__x\28\29\20const +1583:std::__2::__time_get_c_storage::__weeks\28\29\20const +1584:std::__2::__time_get_c_storage::__r\28\29\20const +1585:std::__2::__time_get_c_storage::__months\28\29\20const +1586:std::__2::__time_get_c_storage::__c\28\29\20const +1587:std::__2::__time_get_c_storage::__am_pm\28\29\20const +1588:std::__2::__time_get_c_storage::__X\28\29\20const +1589:std::__2::__thread_struct_imp::~__thread_struct_imp\28\29 +1590:std::__2::__thread_specific_ptr::__at_thread_exit\28void*\29 +1591:std::__2::__system_error_category::name\28\29\20const +1592:std::__2::__system_error_category::default_error_condition\28int\29\20const +1593:std::__2::__stdoutbuf::xsputn\28wchar_t\20const*\2c\20long\29 +1594:std::__2::__stdoutbuf::overflow\28unsigned\20int\29 +1595:std::__2::__stdoutbuf::imbue\28std::__2::locale\20const&\29 +1596:std::__2::__stdoutbuf::xsputn\28char\20const*\2c\20long\29 +1597:std::__2::__stdoutbuf::overflow\28int\29 +1598:std::__2::__stdoutbuf::imbue\28std::__2::locale\20const&\29 +1599:std::__2::__stdinbuf::underflow\28\29 +1600:std::__2::__stdinbuf::uflow\28\29 +1601:std::__2::__stdinbuf::pbackfail\28unsigned\20int\29 +1602:std::__2::__stdinbuf::imbue\28std::__2::locale\20const&\29 +1603:std::__2::__stdinbuf::underflow\28\29 +1604:std::__2::__stdinbuf::uflow\28\29 +1605:std::__2::__stdinbuf::pbackfail\28int\29 +1606:std::__2::__stdinbuf::imbue\28std::__2::locale\20const&\29 +1607:std::__2::__split_buffer&>::__construct_at_end\28unsigned\20long\29 +1608:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__on_zero_shared\28\29 +1609:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1610:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1611:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1612:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1613:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1614:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1615:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1616:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1617:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1618:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1619:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1620:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1621:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1622:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1623:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1624:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1625:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1626:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1627:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1628:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1629:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1630:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1631:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1632:std::__2::__shared_ptr_pointer::__shared_ptr_default_delete\2c\20std::__2::allocator>::__get_deleter\28std::type_info\20const&\29\20const +1633:std::__2::__shared_ptr_emplace>\2c\20std::__2::allocator>>>::~__shared_ptr_emplace\28\29.1 +1634:std::__2::__shared_ptr_emplace>\2c\20std::__2::allocator>>>::~__shared_ptr_emplace\28\29 +1635:std::__2::__shared_ptr_emplace>\2c\20std::__2::allocator>>>::__on_zero_shared\28\29 +1636:std::__2::__shared_ptr_emplace>\2c\20std::__2::allocator>>>::~__shared_ptr_emplace\28\29.1 +1637:std::__2::__shared_ptr_emplace>\2c\20std::__2::allocator>>>::~__shared_ptr_emplace\28\29 +1638:std::__2::__shared_ptr_emplace>\2c\20std::__2::allocator>>>::__on_zero_shared\28\29 +1639:std::__2::__shared_ptr_emplace\2c\20std::__2::allocator>>\2c\20std::__2::allocator\2c\20std::__2::allocator>>>>::~__shared_ptr_emplace\28\29.1 +1640:std::__2::__shared_ptr_emplace\2c\20std::__2::allocator>>\2c\20std::__2::allocator\2c\20std::__2::allocator>>>>::~__shared_ptr_emplace\28\29 +1641:std::__2::__shared_ptr_emplace\2c\20std::__2::allocator>>\2c\20std::__2::allocator\2c\20std::__2::allocator>>>>::__on_zero_shared\28\29 +1642:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1643:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1644:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1645:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1646:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1647:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1648:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1649:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1650:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1651:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1652:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1653:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1654:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1655:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1656:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1657:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1658:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1659:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1660:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1661:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1662:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1663:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1664:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1665:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1666:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1667:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1668:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1669:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1670:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1671:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1672:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1673:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1674:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1675:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1676:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1677:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1678:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1679:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1680:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1681:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1682:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1683:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1684:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1685:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1686:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1687:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1688:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1689:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1690:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1691:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1692:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1693:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1694:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1695:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1696:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1697:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1698:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1699:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1700:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1701:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1702:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1703:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1704:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1705:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1706:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1707:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1708:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1709:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1710:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1711:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1712:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1713:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1714:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1715:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1716:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1717:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1718:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1719:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1720:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1721:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1722:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1723:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1724:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1725:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1726:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1727:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1728:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1729:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1730:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1731:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1732:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1733:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1734:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1735:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1736:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1737:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1738:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1739:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1740:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1741:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1742:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1743:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1744:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1745:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1746:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1747:std::__2::__shared_ptr_emplace>::__on_zero_shared\28\29 +1748:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29.1 +1749:std::__2::__shared_ptr_emplace>::~__shared_ptr_emplace\28\29 +1750:std::__2::__num_put::__widen_and_group_int\28char*\2c\20char*\2c\20char*\2c\20wchar_t*\2c\20wchar_t*&\2c\20wchar_t*&\2c\20std::__2::locale\20const&\29 +1751:std::__2::__num_put::__widen_and_group_float\28char*\2c\20char*\2c\20char*\2c\20wchar_t*\2c\20wchar_t*&\2c\20wchar_t*&\2c\20std::__2::locale\20const&\29 +1752:std::__2::__num_put::__widen_and_group_int\28char*\2c\20char*\2c\20char*\2c\20char*\2c\20char*&\2c\20char*&\2c\20std::__2::locale\20const&\29 +1753:std::__2::__num_put::__widen_and_group_float\28char*\2c\20char*\2c\20char*\2c\20char*\2c\20char*&\2c\20char*&\2c\20std::__2::locale\20const&\29 +1754:std::__2::__money_put::__gather_info\28bool\2c\20bool\2c\20std::__2::locale\20const&\2c\20std::__2::money_base::pattern&\2c\20wchar_t&\2c\20wchar_t&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20int&\29 +1755:std::__2::__money_put::__format\28wchar_t*\2c\20wchar_t*&\2c\20wchar_t*&\2c\20unsigned\20int\2c\20wchar_t\20const*\2c\20wchar_t\20const*\2c\20std::__2::ctype\20const&\2c\20bool\2c\20std::__2::money_base::pattern\20const&\2c\20wchar_t\2c\20wchar_t\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20int\29 +1756:std::__2::__money_put::__gather_info\28bool\2c\20bool\2c\20std::__2::locale\20const&\2c\20std::__2::money_base::pattern&\2c\20char&\2c\20char&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20int&\29 +1757:std::__2::__money_put::__format\28char*\2c\20char*&\2c\20char*&\2c\20unsigned\20int\2c\20char\20const*\2c\20char\20const*\2c\20std::__2::ctype\20const&\2c\20bool\2c\20std::__2::money_base::pattern\20const&\2c\20char\2c\20char\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20int\29 +1758:std::__2::__money_get::__gather_info\28bool\2c\20std::__2::locale\20const&\2c\20std::__2::money_base::pattern&\2c\20wchar_t&\2c\20wchar_t&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20int&\29 +1759:std::__2::__money_get::__gather_info\28bool\2c\20std::__2::locale\20const&\2c\20std::__2::money_base::pattern&\2c\20char&\2c\20char&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20std::__2::basic_string\2c\20std::__2::allocator>&\2c\20int&\29 +1760:std::__2::__libcpp_thread_isnull\28unsigned\20long\20const*\29 +1761:std::__2::__libcpp_sscanf_l\28char\20const*\2c\20__locale_struct*\2c\20char\20const*\2c\20...\29 +1762:std::__2::__libcpp_refstring::__libcpp_refstring\28char\20const*\29 +1763:std::__2::__libcpp_mbtowc_l\28wchar_t*\2c\20char\20const*\2c\20unsigned\20long\2c\20__locale_struct*\29 +1764:std::__2::__libcpp_mb_cur_max_l\28__locale_struct*\29 +1765:std::__2::__libcpp_deallocate\28void*\2c\20unsigned\20long\2c\20unsigned\20long\29 +1766:std::__2::__libcpp_asprintf_l\28char**\2c\20__locale_struct*\2c\20char\20const*\2c\20...\29 +1767:std::__2::__iostream_category::name\28\29\20const +1768:std::__2::__iostream_category::message\28int\29\20const +1769:std::__2::__generic_error_category::name\28\29\20const +1770:std::__2::__future_error_category::name\28\29\20const +1771:std::__2::__future_error_category::message\28int\29\20const +1772:std::__2::__function::__func\2c\20Config*\2c\20bool\29::$_0\2c\20std::__2::allocator\2c\20Config*\2c\20bool\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +1773:std::__2::__function::__func\2c\20Config*\2c\20bool\29::$_0\2c\20std::__2::allocator\2c\20Config*\2c\20bool\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +1774:std::__2::__function::__func\2c\20Config*\2c\20bool\29::$_0\2c\20std::__2::allocator\2c\20Config*\2c\20bool\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +1775:std::__2::__function::__func\2c\20Config*\2c\20bool\29::$_0\2c\20std::__2::allocator\2c\20Config*\2c\20bool\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +1776:std::__2::__function::__func\2c\20Config*\2c\20bool\29::$_0\2c\20std::__2::allocator\2c\20Config*\2c\20bool\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +1777:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\29>::target_type\28\29\20const +1778:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\29>::target\28std::type_info\20const&\29\20const +1779:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\29>::__clone\28std::__2::__function::__base*\29\20const +1780:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\29>::__clone\28\29\20const +1781:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1782:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1783:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1784:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1785:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1786:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1787:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1788:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1789:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1790:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1791:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1792:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1793:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1794:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1795:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1796:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1797:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1798:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1799:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1800:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1801:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1802:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1803:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1804:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1805:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1806:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1807:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1808:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1809:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1810:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1811:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1812:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1813:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1814:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1815:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1816:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1817:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1818:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1819:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1820:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1821:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1822:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1823:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1824:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1825:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1826:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1827:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1828:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1829:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1830:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1831:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1832:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1833:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1834:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1835:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1836:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1837:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1838:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1839:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1840:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1841:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1842:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1843:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1844:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1845:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1846:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1847:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1848:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1849:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1850:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1851:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1852:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1853:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1854:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1855:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1856:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1857:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1858:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1859:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1860:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1861:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1862:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1863:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1864:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1865:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1866:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1867:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1868:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1869:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1870:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1871:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1872:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1873:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1874:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1875:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1876:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoMainGeom&\2c\20CChunkFileReader&\29 +1877:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1878:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1879:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1880:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1881:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1882:std::__2::__function::__func\2c\20void\20\28WmoMainGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1883:std::__2::__function::__func\2c\20void\20\28\29>::~__func\28\29.1 +1884:std::__2::__function::__func\2c\20void\20\28\29>::~__func\28\29 +1885:std::__2::__function::__func\2c\20void\20\28\29>::target_type\28\29\20const +1886:std::__2::__function::__func\2c\20void\20\28\29>::target\28std::type_info\20const&\29\20const +1887:std::__2::__function::__func\2c\20void\20\28\29>::operator\28\29\28\29 +1888:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const +1889:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const +1890:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +1891:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +1892:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +1893:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +1894:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +1895:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +1896:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +1897:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +1898:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +1899:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +1900:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +1901:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +1902:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +1903:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +1904:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +1905:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +1906:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +1907:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +1908:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +1909:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +1910:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +1911:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +1912:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +1913:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +1914:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +1915:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1916:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1917:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1918:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1919:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1920:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1921:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1922:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1923:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1924:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1925:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1926:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1927:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1928:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1929:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1930:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1931:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1932:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1933:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1934:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1935:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1936:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1937:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1938:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1939:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1940:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1941:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1942:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1943:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1944:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1945:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1946:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1947:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1948:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1949:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1950:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1951:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1952:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1953:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1954:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1955:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1956:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1957:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1958:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1959:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1960:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1961:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1962:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1963:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1964:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1965:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1966:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1967:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1968:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1969:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1970:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1971:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1972:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1973:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1974:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1975:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1976:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1977:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1978:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1979:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1980:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1981:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1982:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1983:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1984:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1985:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1986:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1987:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1988:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1989:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1990:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1991:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1992:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1993:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1994:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +1995:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +1996:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +1997:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +1998:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +1999:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2000:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2001:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::operator\28\29\28WmoGroupGeom&\2c\20CChunkFileReader&\29 +2002:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2003:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2004:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2005:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2006:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2007:std::__2::__function::__func\2c\20void\20\28WmoGroupGeom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2008:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2009:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2010:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28WdtFile&\2c\20CChunkFileReader&\29 +2011:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2012:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2013:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2014:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2015:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28WdtFile&\2c\20CChunkFileReader&\29 +2016:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2017:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2018:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2019:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2020:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28WdtFile&\2c\20CChunkFileReader&\29 +2021:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2022:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2023:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2024:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2025:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28WdtFile&\2c\20CChunkFileReader&\29 +2026:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2027:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2028:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2029:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2030:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28WdtFile&\2c\20CChunkFileReader&\29 +2031:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2032:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2033:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2034:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2035:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2036:std::__2::__function::__func\2c\20void\20\28WdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2037:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2038:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2039:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::operator\28\29\28WdlFile&\2c\20CChunkFileReader&\29 +2040:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2041:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2042:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2043:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2044:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::operator\28\29\28WdlFile&\2c\20CChunkFileReader&\29 +2045:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2046:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2047:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2048:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2049:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::operator\28\29\28WdlFile&\2c\20CChunkFileReader&\29 +2050:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2051:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2052:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2053:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2054:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::operator\28\29\28WdlFile&\2c\20CChunkFileReader&\29 +2055:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2056:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2057:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2058:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2059:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::operator\28\29\28WdlFile&\2c\20CChunkFileReader&\29 +2060:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2061:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2062:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2063:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2064:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2065:std::__2::__function::__func\2c\20void\20\28WdlFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2066:std::__2::__function::__func\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7\2c\20std::__2::allocator\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7>\2c\20void\20\28\29>::~__func\28\29.1 +2067:std::__2::__function::__func\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7\2c\20std::__2::allocator\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7>\2c\20void\20\28\29>::~__func\28\29 +2068:std::__2::__function::__func\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7\2c\20std::__2::allocator\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7>\2c\20void\20\28\29>::target_type\28\29\20const +2069:std::__2::__function::__func\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7\2c\20std::__2::allocator\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7>\2c\20void\20\28\29>::target\28std::type_info\20const&\29\20const +2070:std::__2::__function::__func\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7\2c\20std::__2::allocator\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7>\2c\20void\20\28\29>::operator\28\29\28\29 +2071:std::__2::__function::__func\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7\2c\20std::__2::allocator\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const +2072:std::__2::__function::__func\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7\2c\20std::__2::allocator\2c\20unsigned\20int\2c\20unsigned\20int\29::$_7>\2c\20void\20\28\29>::__clone\28\29\20const +2073:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2074:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2075:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::operator\28\29\28SkelFile&\2c\20CChunkFileReader&\29 +2076:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2077:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2078:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2079:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2080:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::operator\28\29\28SkelFile&\2c\20CChunkFileReader&\29 +2081:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2082:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2083:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2084:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2085:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::operator\28\29\28SkelFile&\2c\20CChunkFileReader&\29 +2086:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2087:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2088:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2089:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2090:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::operator\28\29\28SkelFile&\2c\20CChunkFileReader&\29 +2091:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2092:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2093:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2094:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2095:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::operator\28\29\28SkelFile&\2c\20CChunkFileReader&\29 +2096:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2097:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2098:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2099:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2100:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::operator\28\29\28SkelFile&\2c\20CChunkFileReader&\29 +2101:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2102:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2103:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2104:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2105:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2106:std::__2::__function::__func\2c\20void\20\28SkelFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2107:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2108:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2109:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2110:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2111:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2112:std::__2::__function::__func\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9\2c\20std::__2::allocator\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::~__func\28\29.1 +2113:std::__2::__function::__func\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9\2c\20std::__2::allocator\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::~__func\28\29 +2114:std::__2::__function::__func\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9\2c\20std::__2::allocator\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2115:std::__2::__function::__func\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9\2c\20std::__2::allocator\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2116:std::__2::__function::__func\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9\2c\20std::__2::allocator\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2117:std::__2::__function::__func\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9\2c\20std::__2::allocator\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2118:std::__2::__function::__func\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9\2c\20std::__2::allocator\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_9>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2119:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_14\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_14>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2120:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_14\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_14>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2121:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_14\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_14>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2122:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_14\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_14>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2123:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_14\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_14>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2124:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_13\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_13>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2125:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_13\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_13>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2126:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_13\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_13>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2127:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_13\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_13>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2128:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_13\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_13>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2129:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_12\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_12>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2130:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_12\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_12>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2131:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_12\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_12>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2132:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_12\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_12>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2133:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_12\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_12>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2134:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_11\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_11>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2135:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_11\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_11>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2136:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_11\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_11>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2137:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_11\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_11>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2138:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_11\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_11>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2139:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_10\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_10>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2140:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_10\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_10>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2141:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_10\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_10>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2142:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_10\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_10>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2143:std::__2::__function::__func\2c\20std::__2::shared_ptr&\29\20const::$_10\2c\20std::__2::allocator\2c\20std::__2::shared_ptr&\29\20const::$_10>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2144:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::~__func\28\29.1 +2145:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::~__func\28\29 +2146:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::target_type\28\29\20const +2147:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::target\28std::type_info\20const&\29\20const +2148:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::operator\28\29\28bool&&\2c\20bool&&\2c\20double&&\29 +2149:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::__clone\28std::__2::__function::__base*\29\20const +2150:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::__clone\28\29\20const +2151:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::target_type\28\29\20const +2152:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::target\28std::type_info\20const&\29\20const +2153:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::operator\28\29\28bool&&\2c\20bool&&\2c\20double&&\29 +2154:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::__clone\28std::__2::__function::__base*\29\20const +2155:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::__clone\28\29\20const +2156:std::__2::__function::__func\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0\2c\20std::__2::allocator\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0>\2c\20void\20\28\29>::~__func\28\29.1 +2157:std::__2::__function::__func\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0\2c\20std::__2::allocator\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0>\2c\20void\20\28\29>::~__func\28\29 +2158:std::__2::__function::__func\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0\2c\20std::__2::allocator\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0>\2c\20void\20\28\29>::target_type\28\29\20const +2159:std::__2::__function::__func\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0\2c\20std::__2::allocator\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0>\2c\20void\20\28\29>::target\28std::type_info\20const&\29\20const +2160:std::__2::__function::__func\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0\2c\20std::__2::allocator\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const +2161:std::__2::__function::__func\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0\2c\20std::__2::allocator\2c\20std::__2::basic_string\2c\20std::__2::allocator>\2c\20int\29::$_0>\2c\20void\20\28\29>::__clone\28\29\20const +2162:std::__2::__function::__func\2c\20int\2c\20int\29::$_1\2c\20std::__2::allocator\2c\20int\2c\20int\29::$_1>\2c\20void\20\28\29>::~__func\28\29.1 +2163:std::__2::__function::__func\2c\20int\2c\20int\29::$_1\2c\20std::__2::allocator\2c\20int\2c\20int\29::$_1>\2c\20void\20\28\29>::~__func\28\29 +2164:std::__2::__function::__func\2c\20int\2c\20int\29::$_1\2c\20std::__2::allocator\2c\20int\2c\20int\29::$_1>\2c\20void\20\28\29>::target_type\28\29\20const +2165:std::__2::__function::__func\2c\20int\2c\20int\29::$_1\2c\20std::__2::allocator\2c\20int\2c\20int\29::$_1>\2c\20void\20\28\29>::target\28std::type_info\20const&\29\20const +2166:std::__2::__function::__func\2c\20int\2c\20int\29::$_1\2c\20std::__2::allocator\2c\20int\2c\20int\29::$_1>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const +2167:std::__2::__function::__func\2c\20int\2c\20int\29::$_1\2c\20std::__2::allocator\2c\20int\2c\20int\29::$_1>\2c\20void\20\28\29>::__clone\28\29\20const +2168:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2169:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2170:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2171:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2172:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2173:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2174:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2175:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2176:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2177:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2178:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2179:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2180:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2181:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2182:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2183:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2184:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2185:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2186:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2187:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2188:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::~__func\28\29.1 +2189:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::~__func\28\29 +2190:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2191:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2192:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2193:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2194:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2195:std::__2::__function::__func&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_1\2c\20std::__2::allocator&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2196:std::__2::__function::__func&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_1\2c\20std::__2::allocator&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2197:std::__2::__function::__func&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_1\2c\20std::__2::allocator&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2198:std::__2::__function::__func&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_1\2c\20std::__2::allocator&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2199:std::__2::__function::__func&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_1\2c\20std::__2::allocator&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2200:std::__2::__function::__func&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_0\2c\20std::__2::allocator&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2201:std::__2::__function::__func&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_0\2c\20std::__2::allocator&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2202:std::__2::__function::__func&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_0\2c\20std::__2::allocator&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2203:std::__2::__function::__func&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_0\2c\20std::__2::allocator&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2204:std::__2::__function::__func&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_0\2c\20std::__2::allocator&\2c\20M2Object*\2c\20M2MaterialInst&\2c\20M2Data*\2c\20M2SkinProfile*\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2205:std::__2::__function::__func\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14\2c\20std::__2::allocator\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14>\2c\20void\20\28\29>::~__func\28\29.1 +2206:std::__2::__function::__func\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14\2c\20std::__2::allocator\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14>\2c\20void\20\28\29>::~__func\28\29 +2207:std::__2::__function::__func\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14\2c\20std::__2::allocator\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14>\2c\20void\20\28\29>::target_type\28\29\20const +2208:std::__2::__function::__func\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14\2c\20std::__2::allocator\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14>\2c\20void\20\28\29>::target\28std::type_info\20const&\29\20const +2209:std::__2::__function::__func\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14\2c\20std::__2::allocator\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14>\2c\20void\20\28\29>::operator\28\29\28\29 +2210:std::__2::__function::__func\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14\2c\20std::__2::allocator\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14>\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const +2211:std::__2::__function::__func\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14\2c\20std::__2::allocator\20const&\2c\20unsigned\20int\2c\20unsigned\20int\29::$_14>\2c\20void\20\28\29>::__clone\28\29\20const +2212:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2213:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2214:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +2215:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2216:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2217:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2218:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2219:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +2220:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2221:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2222:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2223:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2224:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +2225:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2226:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2227:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2228:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2229:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +2230:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2231:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2232:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2233:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2234:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +2235:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2236:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2237:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2238:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2239:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +2240:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2241:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2242:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2243:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2244:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +2245:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2246:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2247:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2248:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2249:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +2250:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2251:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2252:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2253:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2254:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +2255:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2256:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2257:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2258:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2259:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +2260:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2261:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2262:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2263:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2264:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +2265:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2266:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2267:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2268:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2269:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +2270:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2271:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2272:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2273:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2274:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::operator\28\29\28M2Geom&\2c\20CChunkFileReader&\29 +2275:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2276:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2277:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2278:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2279:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2280:std::__2::__function::__func\2c\20void\20\28M2Geom&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2281:std::__2::__function::__func&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_1\2c\20std::__2::allocator&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2282:std::__2::__function::__func&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_1\2c\20std::__2::allocator&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2283:std::__2::__function::__func&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_1\2c\20std::__2::allocator&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2284:std::__2::__function::__func&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_1\2c\20std::__2::allocator&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2285:std::__2::__function::__func&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_1\2c\20std::__2::allocator&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2286:std::__2::__function::__func\2c\20void\20\28\29>::target_type\28\29\20const +2287:std::__2::__function::__func\2c\20void\20\28\29>::target\28std::type_info\20const&\29\20const +2288:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const +2289:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const +2290:std::__2::__function::__func\2c\20void\20\28\29>::target_type\28\29\20const +2291:std::__2::__function::__func\2c\20void\20\28\29>::target\28std::type_info\20const&\29\20const +2292:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const +2293:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const +2294:std::__2::__function::__func\2c\20void\20\28\29>::target_type\28\29\20const +2295:std::__2::__function::__func\2c\20void\20\28\29>::target\28std::type_info\20const&\29\20const +2296:std::__2::__function::__func\2c\20void\20\28\29>::operator\28\29\28\29 +2297:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const +2298:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const +2299:std::__2::__function::__func\2c\20void\20\28\29>::target_type\28\29\20const +2300:std::__2::__function::__func\2c\20void\20\28\29>::target\28std::type_info\20const&\29\20const +2301:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const +2302:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const +2303:std::__2::__function::__func\2c\20void\20\28\29>::target_type\28\29\20const +2304:std::__2::__function::__func\2c\20void\20\28\29>::target\28std::type_info\20const&\29\20const +2305:std::__2::__function::__func\2c\20void\20\28\29>::operator\28\29\28\29 +2306:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const +2307:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const +2308:std::__2::__function::__func\2c\20void\20\28\29>::target_type\28\29\20const +2309:std::__2::__function::__func\2c\20void\20\28\29>::target\28std::type_info\20const&\29\20const +2310:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28std::__2::__function::__base*\29\20const +2311:std::__2::__function::__func\2c\20void\20\28\29>::__clone\28\29\20const +2312:std::__2::__function::__func>&\2c\20std::__2::vector>&\29::$_0\2c\20std::__2::allocator>&\2c\20std::__2::vector>&\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2313:std::__2::__function::__func>&\2c\20std::__2::vector>&\29::$_0\2c\20std::__2::allocator>&\2c\20std::__2::vector>&\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2314:std::__2::__function::__func>&\2c\20std::__2::vector>&\29::$_0\2c\20std::__2::allocator>&\2c\20std::__2::vector>&\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2315:std::__2::__function::__func>&\2c\20std::__2::vector>&\29::$_0\2c\20std::__2::allocator>&\2c\20std::__2::vector>&\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2316:std::__2::__function::__func>&\2c\20std::__2::vector>&\29::$_0\2c\20std::__2::allocator>&\2c\20std::__2::vector>&\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2317:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2318:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2319:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AnimFile&\2c\20CChunkFileReader&\29 +2320:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2321:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2322:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2323:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2324:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AnimFile&\2c\20CChunkFileReader&\29 +2325:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2326:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2327:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2328:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2329:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AnimFile&\2c\20CChunkFileReader&\29 +2330:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2331:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2332:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2333:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2334:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2335:std::__2::__function::__func\2c\20void\20\28AnimFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2336:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::target_type\28\29\20const +2337:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::target\28std::type_info\20const&\29\20const +2338:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::operator\28\29\28bool&&\2c\20bool&&\2c\20double&&\29 +2339:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::__clone\28std::__2::__function::__base*\29\20const +2340:std::__2::__function::__func\2c\20bool\20\28bool\2c\20bool\2c\20double\29>::__clone\28\29\20const +2341:std::__2::__function::__func\29::$_1\2c\20std::__2::allocator\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2342:std::__2::__function::__func\29::$_1\2c\20std::__2::allocator\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2343:std::__2::__function::__func\29::$_1\2c\20std::__2::allocator\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2344:std::__2::__function::__func\29::$_1\2c\20std::__2::allocator\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2345:std::__2::__function::__func\29::$_1\2c\20std::__2::allocator\29::$_1>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2346:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2347:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2348:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2349:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2350:std::__2::__function::__func\29::$_0\2c\20std::__2::allocator\29::$_0>\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2351:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2352:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2353:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2354:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2355:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2356:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::~__func\28\29.1 +2357:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::~__func\28\29 +2358:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2359:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2360:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2361:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2362:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2363:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::~__func\28\29.1 +2364:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::~__func\28\29 +2365:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target_type\28\29\20const +2366:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::target\28std::type_info\20const&\29\20const +2367:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::operator\28\29\28IUniformBufferChunk*&&\2c\20std::__2::shared_ptr\20const&\29 +2368:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28std::__2::__function::__base\20const&\29>*\29\20const +2369:std::__2::__function::__func\2c\20void\20\28IUniformBufferChunk*\2c\20std::__2::shared_ptr\20const&\29>::__clone\28\29\20const +2370:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2371:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2372:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2373:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2374:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2375:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2376:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2377:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2378:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2379:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2380:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2381:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2382:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2383:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2384:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2385:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2386:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2387:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2388:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2389:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2390:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2391:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2392:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2393:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2394:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2395:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2396:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2397:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2398:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2399:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2400:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2401:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2402:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2403:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2404:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2405:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2406:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2407:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2408:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2409:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2410:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2411:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2412:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2413:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2414:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2415:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2416:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2417:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2418:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2419:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2420:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2421:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2422:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2423:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2424:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2425:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2426:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2427:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2428:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2429:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2430:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2431:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2432:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2433:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2434:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2435:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2436:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2437:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2438:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2439:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2440:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2441:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2442:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2443:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2444:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2445:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2446:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2447:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2448:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2449:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2450:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2451:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2452:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2453:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2454:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2455:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2456:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2457:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2458:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2459:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2460:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2461:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2462:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2463:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2464:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2465:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2466:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2467:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2468:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2469:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2470:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2471:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2472:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2473:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2474:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2475:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2476:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2477:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2478:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2479:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2480:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2481:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2482:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2483:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2484:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2485:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2486:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2487:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2488:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2489:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2490:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2491:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2492:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2493:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2494:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2495:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2496:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2497:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2498:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2499:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2500:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2501:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2502:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2503:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2504:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2505:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2506:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2507:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2508:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2509:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2510:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2511:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2512:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2513:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2514:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2515:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2516:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2517:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2518:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2519:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2520:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2521:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2522:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2523:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2524:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2525:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2526:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2527:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2528:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2529:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2530:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2531:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2532:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2533:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2534:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2535:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2536:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2537:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2538:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2539:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2540:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2541:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2542:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2543:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2544:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2545:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2546:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2547:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2548:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2549:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2550:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2551:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2552:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2553:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2554:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2555:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2556:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::operator\28\29\28AdtFile&\2c\20CChunkFileReader&\29 +2557:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2558:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2559:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target_type\28\29\20const +2560:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::target\28std::type_info\20const&\29\20const +2561:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28std::__2::__function::__base*\29\20const +2562:std::__2::__function::__func\2c\20void\20\28AdtFile&\2c\20CChunkFileReader&\29>::__clone\28\29\20const +2563:std::__2::__assoc_sub_state::~__assoc_sub_state\28\29.1 +2564:std::__2::__assoc_sub_state::__sub_wait\28std::__2::unique_lock&\29 +2565:std::__2::__assoc_sub_state::__make_ready\28\29 +2566:std::__2::__assoc_sub_state::__execute\28\29 +2567:stbi__resample_row_v_2\28unsigned\20char*\2c\20unsigned\20char*\2c\20unsigned\20char*\2c\20int\2c\20int\29 +2568:stbi__resample_row_hv_2\28unsigned\20char*\2c\20unsigned\20char*\2c\20unsigned\20char*\2c\20int\2c\20int\29 +2569:stbi__resample_row_h_2\28unsigned\20char*\2c\20unsigned\20char*\2c\20unsigned\20char*\2c\20int\2c\20int\29 +2570:stbi__resample_row_generic\28unsigned\20char*\2c\20unsigned\20char*\2c\20unsigned\20char*\2c\20int\2c\20int\29 +2571:stbi__idct_block\28unsigned\20char*\2c\20int\2c\20short*\29 +2572:stbi__YCbCr_to_RGB_row\28unsigned\20char*\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20unsigned\20char\20const*\2c\20int\2c\20int\29 +2573:startMovingForward +2574:startMovingBackwards +2575:startExport +2576:stackSave +2577:stackRestore +2578:sn_write +2579:setThrew +2580:setTextures +2581:setSceneSize +2582:setScenePos +2583:setSceneFileDataId +2584:setScene +2585:setReplaceParticleColors +2586:setNewUrls +2587:setMeshIdArray +2588:setMap +2589:setFarPlaneForCulling +2590:setFarPlane +2591:setClearColor +2592:setAnimationId +2593:scroll_callback\28GLFWwindow*\2c\20double\2c\20double\29 +2594:resetReplaceParticleColor +2595:resample_row_1\28unsigned\20char*\2c\20unsigned\20char*\2c\20unsigned\20char*\2c\20int\2c\20int\29 +2596:pop_arg_long_double +2597:onKey\28GLFWwindow*\2c\20int\2c\20int\2c\20int\2c\20int\29 +2598:non-virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29.1 +2599:non-virtual\20thunk\20to\20std::__2::basic_stringstream\2c\20std::__2::allocator>::~basic_stringstream\28\29 +2600:non-virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29.1 +2601:non-virtual\20thunk\20to\20std::__2::basic_iostream>::~basic_iostream\28\29 +2602:non-virtual\20thunk\20to\20Map::getWmoObject\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20SMMapObjDefObj1&\29 +2603:non-virtual\20thunk\20to\20Map::getWmoObject\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20SMMapObjDef&\29 +2604:non-virtual\20thunk\20to\20Map::getWmoObject\28int\2c\20SMMapObjDefObj1&\29 +2605:non-virtual\20thunk\20to\20Map::getWmoObject\28int\2c\20SMMapObjDef&\29 +2606:non-virtual\20thunk\20to\20Map::getM2Object\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20SMDoodadDef&\29 +2607:non-virtual\20thunk\20to\20Map::getM2Object\28int\2c\20SMDoodadDef&\29 +2608:non-virtual\20thunk\20to\20Map::getLightResultsFromDB\28mathfu::Vector&\2c\20Config\20const*\2c\20std::__2::vector>&\2c\20StateForConditions*\29 +2609:non-virtual\20thunk\20to\20Map::getCurrentSceneTime\28\29 +2610:nlohmann::detail::output_string_adapter\2c\20std::__2::allocator>>::write_characters\28char\20const*\2c\20unsigned\20long\29 +2611:nlohmann::detail::output_string_adapter\2c\20std::__2::allocator>>::write_character\28char\29 +2612:nlohmann::detail::exception::~exception\28\29 +2613:mouse_button_callback\28GLFWwindow*\2c\20int\2c\20int\2c\20int\29 +2614:m2TiedCamera::tick\28double\29 +2615:m2TiedCamera::getCameraPosition\28float*\29 +2616:m2TiedCamera::getCameraMatrices\28float\2c\20float\2c\20float\2c\20float\29 +2617:long\20std::__2::__num_get_signed_integral\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 +2618:long\20long\20std::__2::__num_get_signed_integral\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\2c\20int\29 +2619:long\20double\20std::__2::__num_get_float\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\29 +2620:legalstub$dynCall_viijii +2621:legalstub$dynCall_jiiii +2622:legalstub$dynCall_j +2623:int\20std::__2::\28anonymous\20namespace\29::as_integer\2c\20std::__2::allocator>>\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20unsigned\20long*\2c\20int\29 +2624:ghc::filesystem::filesystem_error::~filesystem_error\28\29.1 +2625:ghc::filesystem::filesystem_error::~filesystem_error\28\29 +2626:ghc::filesystem::filesystem_error::what\28\29\20const +2627:gameloop +2628:fwrite_file_func +2629:ftell64_file_func +2630:fseek64_file_func +2631:fread_file_func +2632:fopendisk64_file_func +2633:fopen64_file_func +2634:fmt_fp +2635:float\20std::__2::__num_get_float\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\29 +2636:ferror_file_func +2637:fclose_file_func +2638:enablePortalCulling +2639:downloadSucceeded\28emscripten_fetch_t*\29 +2640:downloadFailed\28emscripten_fetch_t*\29 +2641:double\20std::__2::__num_get_float\28char\20const*\2c\20char\20const*\2c\20unsigned\20int&\29 +2642:dlclose +2643:deflate_slow +2644:deflate_fast +2645:cursor_position_callback\28GLFWwindow*\2c\20double\2c\20double\29 +2646:createWebJsScene +2647:createScreenshot +2648:compare\28void\20const*\2c\20void\20const*\29 +2649:bool\20std::__2::operator==<__mbstate_t>\28std::__2::fpos<__mbstate_t>\20const&\2c\20std::__2::fpos<__mbstate_t>\20const&\29 +2650:addVerticalViewDir +2651:addHorizontalViewDir +2652:addCameraViewOffset +2653:_emscripten_yield +2654:_embind_initialize_bindings +2655:__wasm_call_ctors +2656:__uselocale +2657:__stdio_write +2658:__stdio_seek +2659:__stdio_read +2660:__stdio_close +2661:__pthread_self_internal +2662:__itt_track_group_create_init_3_0\28___itt_string_handle*\2c\20___itt_track_group_type\29 +2663:__itt_track_create_init_3_0\28___itt_track_group*\2c\20___itt_string_handle*\2c\20___itt_track_type\29 +2664:__itt_thread_set_name_init_3_0\28char\20const*\29 +2665:__itt_thr_name_set_init_3_0\28char\20const*\2c\20int\29 +2666:__itt_thr_mode_set_init_3_0\28__itt_thr_prop\2c\20__itt_thr_state\29 +2667:__itt_task_group_init_3_0\28___itt_domain\20const*\2c\20___itt_id\2c\20___itt_id\2c\20___itt_string_handle*\29 +2668:__itt_task_end_overlapped_init_3_0\28___itt_domain\20const*\2c\20___itt_id\29 +2669:__itt_task_end_overlapped_ex_init_3_0\28___itt_domain\20const*\2c\20___itt_clock_domain*\2c\20unsigned\20long\20long\2c\20___itt_id\29 +2670:__itt_task_end_init_3_0\28___itt_domain\20const*\29 +2671:__itt_task_end_ex_init_3_0\28___itt_domain\20const*\2c\20___itt_clock_domain*\2c\20unsigned\20long\20long\29 +2672:__itt_task_begin_overlapped_init_3_0\28___itt_domain\20const*\2c\20___itt_id\2c\20___itt_id\2c\20___itt_string_handle*\29 +2673:__itt_task_begin_overlapped_ex_init_3_0\28___itt_domain\20const*\2c\20___itt_clock_domain*\2c\20unsigned\20long\20long\2c\20___itt_id\2c\20___itt_id\2c\20___itt_string_handle*\29 +2674:__itt_task_begin_init_3_0\28___itt_domain\20const*\2c\20___itt_id\2c\20___itt_id\2c\20___itt_string_handle*\29 +2675:__itt_task_begin_fn_init_3_0\28___itt_domain\20const*\2c\20___itt_id\2c\20___itt_id\2c\20void*\29 +2676:__itt_task_begin_fn_ex_init_3_0\28___itt_domain\20const*\2c\20___itt_clock_domain*\2c\20unsigned\20long\20long\2c\20___itt_id\2c\20___itt_id\2c\20void*\29 +2677:__itt_task_begin_ex_init_3_0\28___itt_domain\20const*\2c\20___itt_clock_domain*\2c\20unsigned\20long\20long\2c\20___itt_id\2c\20___itt_id\2c\20___itt_string_handle*\29 +2678:__itt_sync_set_name_init_3_0\28void*\2c\20char\20const*\2c\20char\20const*\2c\20int\29 +2679:__itt_sync_rename_init_3_0\28void*\2c\20char\20const*\29 +2680:__itt_sync_releasing_init_3_0\28void*\29 +2681:__itt_sync_prepare_init_3_0\28void*\29 +2682:__itt_sync_destroy_init_3_0\28void*\29 +2683:__itt_sync_create_init_3_0\28void*\2c\20char\20const*\2c\20char\20const*\2c\20int\29 +2684:__itt_sync_cancel_init_3_0\28void*\29 +2685:__itt_sync_acquired_init_3_0\28void*\29 +2686:__itt_suppress_push_init_3_0\28unsigned\20int\29 +2687:__itt_suppress_pop_init_3_0\28\29 +2688:__itt_suppress_mark_range_init_3_0\28__itt_suppress_mode\2c\20unsigned\20int\2c\20void*\2c\20unsigned\20long\29 +2689:__itt_suppress_clear_range_init_3_0\28__itt_suppress_mode\2c\20unsigned\20int\2c\20void*\2c\20unsigned\20long\29 +2690:__itt_string_handle_create_init_3_0\28char\20const*\29 +2691:__itt_state_set_init_3_0\28int\29 +2692:__itt_state_get_init_3_0\28\29 +2693:__itt_stack_caller_destroy_init_3_0\28___itt_caller*\29 +2694:__itt_stack_caller_create_init_3_0\28\29 +2695:__itt_stack_callee_leave_init_3_0\28___itt_caller*\29 +2696:__itt_stack_callee_enter_init_3_0\28___itt_caller*\29 +2697:__itt_set_track_init_3_0\28___itt_track*\29 +2698:__itt_resume_init_3_0\28\29 +2699:__itt_relation_add_to_current_init_3_0\28___itt_domain\20const*\2c\20__itt_relation\2c\20___itt_id\29 +2700:__itt_relation_add_to_current_ex_init_3_0\28___itt_domain\20const*\2c\20___itt_clock_domain*\2c\20unsigned\20long\20long\2c\20__itt_relation\2c\20___itt_id\29 +2701:__itt_relation_add_init_3_0\28___itt_domain\20const*\2c\20___itt_id\2c\20__itt_relation\2c\20___itt_id\29 +2702:__itt_relation_add_ex_init_3_0\28___itt_domain\20const*\2c\20___itt_clock_domain*\2c\20unsigned\20long\20long\2c\20___itt_id\2c\20__itt_relation\2c\20___itt_id\29 +2703:__itt_region_end_init_3_0\28___itt_domain\20const*\2c\20___itt_id\29 +2704:__itt_region_begin_init_3_0\28___itt_domain\20const*\2c\20___itt_id\2c\20___itt_id\2c\20___itt_string_handle*\29 +2705:__itt_pt_region_create_init_3_0\28char\20const*\29 +2706:__itt_pause_init_3_0\28\29 +2707:__itt_obj_mode_set_init_3_0\28__itt_obj_prop\2c\20__itt_obj_state\29 +2708:__itt_notify_sync_releasing_init_3_0\28void*\29 +2709:__itt_notify_sync_prepare_init_3_0\28void*\29 +2710:__itt_notify_sync_name_init_3_0\28void*\2c\20char\20const*\2c\20int\2c\20char\20const*\2c\20int\2c\20int\29 +2711:__itt_notify_sync_cancel_init_3_0\28void*\29 +2712:__itt_notify_sync_acquired_init_3_0\28void*\29 +2713:__itt_module_unload_with_sections_init_3_0\28___itt_module_object*\29 +2714:__itt_module_unload_init_3_0\28void*\29 +2715:__itt_module_load_with_sections_init_3_0\28___itt_module_object*\29 +2716:__itt_module_load_init_3_0\28void*\2c\20void*\2c\20char\20const*\29 +2717:__itt_model_task_end_init_3_0\28void**\2c\20void**\29 +2718:__itt_model_task_end_2_init_3_0\28\29 +2719:__itt_model_task_begin_init_3_0\28void**\2c\20void**\2c\20char\20const*\29 +2720:__itt_model_task_beginA_init_3_0\28char\20const*\29 +2721:__itt_model_task_beginAL_init_3_0\28char\20const*\2c\20unsigned\20long\29 +2722:__itt_model_site_end_init_3_0\28void**\2c\20void**\29 +2723:__itt_model_site_end_2_init_3_0\28\29 +2724:__itt_model_site_begin_init_3_0\28void**\2c\20void**\2c\20char\20const*\29 +2725:__itt_model_site_beginA_init_3_0\28char\20const*\29 +2726:__itt_model_site_beginAL_init_3_0\28char\20const*\2c\20unsigned\20long\29 +2727:__itt_model_reduction_uses_init_3_0\28void*\2c\20unsigned\20long\29 +2728:__itt_model_record_deallocation_init_3_0\28void*\29 +2729:__itt_model_record_allocation_init_3_0\28void*\2c\20unsigned\20long\29 +2730:__itt_model_observe_uses_init_3_0\28void*\2c\20unsigned\20long\29 +2731:__itt_model_lock_release_init_3_0\28void*\29 +2732:__itt_model_lock_release_2_init_3_0\28void*\29 +2733:__itt_model_lock_acquire_init_3_0\28void*\29 +2734:__itt_model_lock_acquire_2_init_3_0\28void*\29 +2735:__itt_model_iteration_taskA_init_3_0\28char\20const*\29 +2736:__itt_model_iteration_taskAL_init_3_0\28char\20const*\2c\20unsigned\20long\29 +2737:__itt_model_induction_uses_init_3_0\28void*\2c\20unsigned\20long\29 +2738:__itt_model_disable_push_init_3_0\28__itt_model_disable\29 +2739:__itt_model_disable_pop_init_3_0\28\29 +2740:__itt_model_clear_uses_init_3_0\28void*\29 +2741:__itt_model_aggregate_task_init_3_0\28unsigned\20long\29 +2742:__itt_metadata_str_add_with_scope_init_3_0\28___itt_domain\20const*\2c\20__itt_scope\2c\20___itt_string_handle*\2c\20char\20const*\2c\20unsigned\20long\29 +2743:__itt_metadata_str_add_init_3_0\28___itt_domain\20const*\2c\20___itt_id\2c\20___itt_string_handle*\2c\20char\20const*\2c\20unsigned\20long\29 +2744:__itt_metadata_add_with_scope_init_3_0\28___itt_domain\20const*\2c\20__itt_scope\2c\20___itt_string_handle*\2c\20__itt_metadata_type\2c\20unsigned\20long\2c\20void*\29 +2745:__itt_metadata_add_init_3_0\28___itt_domain\20const*\2c\20___itt_id\2c\20___itt_string_handle*\2c\20__itt_metadata_type\2c\20unsigned\20long\2c\20void*\29 +2746:__itt_memory_write_init_3_0\28void*\2c\20unsigned\20long\29 +2747:__itt_memory_update_init_3_0\28void*\2c\20unsigned\20long\29 +2748:__itt_memory_read_init_3_0\28void*\2c\20unsigned\20long\29 +2749:__itt_marker_init_3_0\28___itt_domain\20const*\2c\20___itt_id\2c\20___itt_string_handle*\2c\20__itt_scope\29 +2750:__itt_marker_ex_init_3_0\28___itt_domain\20const*\2c\20___itt_clock_domain*\2c\20unsigned\20long\20long\2c\20___itt_id\2c\20___itt_string_handle*\2c\20__itt_scope\29 +2751:__itt_mark_off_init_3_0\28int\29 +2752:__itt_mark_init_3_0\28int\2c\20char\20const*\29 +2753:__itt_mark_global_off_init_3_0\28int\29 +2754:__itt_mark_global_init_3_0\28int\2c\20char\20const*\29 +2755:__itt_mark_create_init_3_0\28char\20const*\29 +2756:__itt_id_destroy_init_3_0\28___itt_domain\20const*\2c\20___itt_id\29 +2757:__itt_id_destroy_ex_init_3_0\28___itt_domain\20const*\2c\20___itt_clock_domain*\2c\20unsigned\20long\20long\2c\20___itt_id\29 +2758:__itt_id_create_init_3_0\28___itt_domain\20const*\2c\20___itt_id\29 +2759:__itt_id_create_ex_init_3_0\28___itt_domain\20const*\2c\20___itt_clock_domain*\2c\20unsigned\20long\20long\2c\20___itt_id\29 +2760:__itt_heap_reset_detection_init_3_0\28unsigned\20int\29 +2761:__itt_heap_record_memory_growth_end_init_3_0\28\29 +2762:__itt_heap_record_memory_growth_begin_init_3_0\28\29 +2763:__itt_heap_record_init_3_0\28unsigned\20int\29 +2764:__itt_heap_reallocate_end_init_3_0\28void*\2c\20void*\2c\20void**\2c\20unsigned\20long\2c\20int\29 +2765:__itt_heap_reallocate_begin_init_3_0\28void*\2c\20void*\2c\20unsigned\20long\2c\20int\29 +2766:__itt_heap_internal_access_end_init_3_0\28\29 +2767:__itt_heap_internal_access_begin_init_3_0\28\29 +2768:__itt_heap_function_create_init_3_0\28char\20const*\2c\20char\20const*\29 +2769:__itt_heap_free_end_init_3_0\28void*\2c\20void*\29 +2770:__itt_heap_free_begin_init_3_0\28void*\2c\20void*\29 +2771:__itt_heap_allocate_end_init_3_0\28void*\2c\20void**\2c\20unsigned\20long\2c\20int\29 +2772:__itt_heap_allocate_begin_init_3_0\28void*\2c\20unsigned\20long\2c\20int\29 +2773:__itt_get_timestamp_init_3_0\28\29 +2774:__itt_fsync_releasing_init_3_0\28void*\29 +2775:__itt_fsync_prepare_init_3_0\28void*\29 +2776:__itt_fsync_cancel_init_3_0\28void*\29 +2777:__itt_fsync_acquired_init_3_0\28void*\29 +2778:__itt_frame_submit_v3_init_3_0\28___itt_domain\20const*\2c\20___itt_id*\2c\20unsigned\20long\20long\2c\20unsigned\20long\20long\29 +2779:__itt_frame_end_v3_init_3_0\28___itt_domain\20const*\2c\20___itt_id*\29 +2780:__itt_frame_end_init_3_0\28__itt_frame_t*\29 +2781:__itt_frame_create_init_3_0\28char\20const*\29 +2782:__itt_frame_begin_v3_init_3_0\28___itt_domain\20const*\2c\20___itt_id*\29 +2783:__itt_frame_begin_init_3_0\28__itt_frame_t*\29 +2784:__itt_event_start_init_3_0\28int\29 +2785:__itt_event_end_init_3_0\28int\29 +2786:__itt_event_create_init_3_0\28char\20const*\2c\20int\29 +2787:__itt_domain_create_init_3_0\28char\20const*\29 +2788:__itt_detach_init_3_0\28\29 +2789:__itt_counter_set_value_init_3_0\28___itt_counter*\2c\20void*\29 +2790:__itt_counter_set_value_ex_init_3_0\28___itt_counter*\2c\20___itt_clock_domain*\2c\20unsigned\20long\20long\2c\20void*\29 +2791:__itt_counter_inc_v3_init_3_0\28___itt_domain\20const*\2c\20___itt_string_handle*\29 +2792:__itt_counter_inc_init_3_0\28___itt_counter*\29 +2793:__itt_counter_inc_delta_v3_init_3_0\28___itt_domain\20const*\2c\20___itt_string_handle*\2c\20unsigned\20long\20long\29 +2794:__itt_counter_inc_delta_init_3_0\28___itt_counter*\2c\20unsigned\20long\20long\29 +2795:__itt_counter_destroy_init_3_0\28___itt_counter*\29 +2796:__itt_counter_dec_v3_init_3_0\28___itt_domain\20const*\2c\20___itt_string_handle*\29 +2797:__itt_counter_dec_init_3_0\28___itt_counter*\29 +2798:__itt_counter_dec_delta_v3_init_3_0\28___itt_domain\20const*\2c\20___itt_string_handle*\2c\20unsigned\20long\20long\29 +2799:__itt_counter_dec_delta_init_3_0\28___itt_counter*\2c\20unsigned\20long\20long\29 +2800:__itt_counter_create_typed_init_3_0\28char\20const*\2c\20char\20const*\2c\20__itt_metadata_type\29 +2801:__itt_counter_create_init_3_0\28char\20const*\2c\20char\20const*\29 +2802:__itt_clock_domain_reset_init_3_0\28\29 +2803:__itt_clock_domain_create_init_3_0\28void\20\28*\29\28___itt_clock_info*\2c\20void*\29\2c\20void*\29 +2804:__itt_av_save_init_3_0\28void*\2c\20int\2c\20int\20const*\2c\20int\2c\20char\20const*\2c\20int\29 +2805:__itt_api_version_init_3_0\28\29 +2806:__isxdigit_l +2807:__isdigit_l +2808:__getTypeName +2809:__errno_location +2810:__emscripten_stdout_seek +2811:__cxxabiv1::__vmi_class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const +2812:__cxxabiv1::__vmi_class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const +2813:__cxxabiv1::__vmi_class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const +2814:__cxxabiv1::__si_class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const +2815:__cxxabiv1::__si_class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const +2816:__cxxabiv1::__si_class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const +2817:__cxxabiv1::__pointer_type_info::can_catch\28__cxxabiv1::__shim_type_info\20const*\2c\20void*&\29\20const +2818:__cxxabiv1::__fundamental_type_info::can_catch\28__cxxabiv1::__shim_type_info\20const*\2c\20void*&\29\20const +2819:__cxxabiv1::__class_type_info::search_below_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20int\2c\20bool\29\20const +2820:__cxxabiv1::__class_type_info::search_above_dst\28__cxxabiv1::__dynamic_cast_info*\2c\20void\20const*\2c\20void\20const*\2c\20int\2c\20bool\29\20const +2821:__cxxabiv1::__class_type_info::has_unambiguous_public_base\28__cxxabiv1::__dynamic_cast_info*\2c\20void*\2c\20int\29\20const +2822:__cxxabiv1::__class_type_info::can_catch\28__cxxabiv1::__shim_type_info\20const*\2c\20void*&\29\20const +2823:__cxx_global_array_dtor.91 +2824:__cxx_global_array_dtor.9 +2825:__cxx_global_array_dtor.85 +2826:__cxx_global_array_dtor.8 +2827:__cxx_global_array_dtor.70 +2828:__cxx_global_array_dtor.7 +2829:__cxx_global_array_dtor.6.1 +2830:__cxx_global_array_dtor.6 +2831:__cxx_global_array_dtor.55 +2832:__cxx_global_array_dtor.5 +2833:__cxx_global_array_dtor.467 +2834:__cxx_global_array_dtor.44 +2835:__cxx_global_array_dtor.42 +2836:__cxx_global_array_dtor.40 +2837:__cxx_global_array_dtor.4.4 +2838:__cxx_global_array_dtor.4.3 +2839:__cxx_global_array_dtor.4.2 +2840:__cxx_global_array_dtor.4.1 +2841:__cxx_global_array_dtor.4 +2842:__cxx_global_array_dtor.38 +2843:__cxx_global_array_dtor.36 +2844:__cxx_global_array_dtor.34 +2845:__cxx_global_array_dtor.32 +2846:__cxx_global_array_dtor.31 +2847:__cxx_global_array_dtor.30 +2848:__cxx_global_array_dtor.3.1 +2849:__cxx_global_array_dtor.3 +2850:__cxx_global_array_dtor.29 +2851:__cxx_global_array_dtor.277 +2852:__cxx_global_array_dtor.27 +2853:__cxx_global_array_dtor.23 +2854:__cxx_global_array_dtor.22 +2855:__cxx_global_array_dtor.21 +2856:__cxx_global_array_dtor.20 +2857:__cxx_global_array_dtor.2.2 +2858:__cxx_global_array_dtor.2.1 +2859:__cxx_global_array_dtor.2 +2860:__cxx_global_array_dtor.19 +2861:__cxx_global_array_dtor.18 +2862:__cxx_global_array_dtor.17 +2863:__cxx_global_array_dtor.16 +2864:__cxx_global_array_dtor.15 +2865:__cxx_global_array_dtor.14 +2866:__cxx_global_array_dtor.136 +2867:__cxx_global_array_dtor.133 +2868:__cxx_global_array_dtor.13 +2869:__cxx_global_array_dtor.12 +2870:__cxx_global_array_dtor.11 +2871:__cxx_global_array_dtor.109 +2872:__cxx_global_array_dtor.10 +2873:__cxx_global_array_dtor.1.1 +2874:__cxx_global_array_dtor.1 +2875:__cxx_global_array_dtor +2876:__cxa_pure_virtual +2877:__cxa_is_pointer_type +2878:__cxa_can_catch +2879:__cxa_atexit +2880:__ctype_toupper_loc +2881:__ctype_tolower_loc +2882:__ctype_get_mb_cur_max +2883:WoWFilesCacheStorage::rejectFile\28CacheHolderType\2c\20char\20const*\29 +2884:WmoScene::~WmoScene\28\29.1 +2885:WmoScene::~WmoScene\28\29 +2886:WmoScene::updateLightAndSkyboxData\28std::__2::shared_ptr\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29 +2887:WmoObject::updateBB\28\29 +2888:WmoObject::isLoaded\28\29 +2889:WmoObject::getWmoHeader\28\29 +2890:WmoObject::getTexture\28int\2c\20bool\29 +2891:WmoObject::getPortalInfos\28\29 +2892:WmoObject::getMaterials\28\29 +2893:WmoObject::getLightArray\28\29 +2894:WmoObject::getDoodad\28int\29 +2895:WmoObject::getAttenFunction\28\29 +2896:WmoObject::getAmbientColor\28\29 +2897:WmoMainGeom::process\28std::__2::shared_ptr>>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +2898:WmoGroupGeom::process\28std::__2::shared_ptr>>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +2899:WdtFile::process\28std::__2::shared_ptr>>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +2900:WdlFile::process\28std::__2::shared_ptr>>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +2901:SkinGeom::process\28std::__2::shared_ptr>>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +2902:SkelFile::process\28std::__2::shared_ptr>>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +2903:RequestProcessor::requestFile\28std::__2::basic_string\2c\20std::__2::allocator>&\2c\20CacheHolderType\2c\20std::__2::weak_ptr\29 +2904:PlanarCamera::zoomInFromTouch\28float\29 +2905:PlanarCamera::zoomInFromMouseScroll\28float\29 +2906:PlanarCamera::tick\28double\29 +2907:PlanarCamera::stopStrafingRight\28\29 +2908:PlanarCamera::stopStrafingLeft\28\29 +2909:PlanarCamera::stopMovingUp\28\29 +2910:PlanarCamera::stopMovingDown\28\29 +2911:PlanarCamera::stopMovingBackwards\28\29 +2912:PlanarCamera::startStrafingRight\28\29 +2913:PlanarCamera::startStrafingLeft\28\29 +2914:PlanarCamera::startMovingUp\28\29 +2915:PlanarCamera::startMovingDown\28\29 +2916:PlanarCamera::startMovingBackwards\28\29 +2917:PlanarCamera::setMovementSpeed\28float\29 +2918:PlanarCamera::setCameraPos\28float\2c\20float\2c\20float\29 +2919:PlanarCamera::setCameraOffset\28float\2c\20float\2c\20float\29 +2920:PlanarCamera::getCameraMatrices\28float\2c\20float\2c\20float\2c\20float\29 +2921:PlanarCamera::addVerticalViewDir\28float\29 +2922:PlanarCamera::addHorizontalViewDir\28float\29 +2923:PlanarCamera::addCameraViewOffset\28float\2c\20float\29 +2924:NullScene::produceDrawStage\28std::__2::shared_ptr\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29 +2925:Map::~Map\28\29.1 +2926:Map::updateBuffers\28std::__2::shared_ptr\29 +2927:Map::setMandatoryADTs\28std::__2::vector\2c\20std::__2::allocator>>\29 +2928:Map::setAdtBoundingBoxHolder\28std::__2::shared_ptr\2c\2064ul>>\29 +2929:Map::produceUpdateStage\28std::__2::shared_ptr\29 +2930:Map::produceDrawStage\28std::__2::shared_ptr\2c\20std::__2::shared_ptr\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29 +2931:Map::getPotentialEntities\28MathHelper::FrustumCullingData\20const&\2c\20mathfu::Vector\20const&\2c\20std::__2::shared_ptr&\2c\20M2ObjectListContainer&\2c\20WMOListContainer&\29 +2932:Map::getCurrentSceneTime\28\29 +2933:Map::getCandidatesEntities\28MathHelper::FrustumCullingData\20const&\2c\20mathfu::Vector\20const&\2c\20std::__2::shared_ptr&\2c\20M2ObjectListContainer&\2c\20WMOListContainer&\29 +2934:Map::getAdtAreaId\28mathfu::Vector\20const&\2c\20int&\2c\20int&\29 +2935:Map::checkCulling\28std::__2::shared_ptr\29 +2936:M2Scene::~M2Scene\28\29.1 +2937:M2Scene::~M2Scene\28\29 +2938:M2Scene::updateLightAndSkyboxData\28std::__2::shared_ptr\20const&\2c\20mathfu::Vector&\2c\20StateForConditions&\2c\20AreaRecord\20const&\29 +2939:M2Scene::setReplaceTextureArray\28std::__2::vector>&\29 +2940:M2Scene::setReplaceParticleColors\28std::__2::array\2c\203ul>\2c\203ul>&\29 +2941:M2Scene::setAnimationId\28int\29 +2942:M2Scene::resetReplaceParticleColor\28\29 +2943:M2Scene::resetAnimation\28\29 +2944:M2Scene::getCameraNum\28\29 +2945:M2Scene::exportScene\28IExporter*\29 +2946:M2Scene::doPostLoad\28std::__2::shared_ptr\29 +2947:M2Scene::createCamera\28int\29 +2948:M2Geom::process\28std::__2::shared_ptr>>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +2949:InteriorView::setM2Lights\28std::__2::shared_ptr&\29 +2950:IUniformBufferChunk::~IUniformBufferChunk\28\29.1 +2951:IUniformBufferChunk::~IUniformBufferChunk\28\29 +2952:IUniformBufferChunk::update\28std::__2::shared_ptr\20const&\29 +2953:IUniformBufferChunk::setUpdateHandler\28std::__2::function\20const&\29>\29 +2954:IScene::getAdtAreaId\28mathfu::Vector\20const&\2c\20int&\2c\20int&\29 +2955:IDevice::getWaitForUpdate\28\29 +2956:IDevice::getIsCompressedTexturesSupported\28\29 +2957:IDevice::getIsAnisFiltrationSupported\28\29 +2958:IDevice::createUniformBufferChunk\28unsigned\20long\29 +2959:HttpRequestProcessor::~HttpRequestProcessor\28\29.1 +2960:HttpRequestProcessor::~HttpRequestProcessor\28\29 +2961:HttpRequestProcessor::processFileRequest\28std::__2::basic_string\2c\20std::__2::allocator>&\2c\20CacheHolderType\2c\20std::__2::weak_ptr\29 +2962:GeneralView::setM2Lights\28std::__2::shared_ptr&\29 +2963:GeneralView::collectMeshes\28std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29 +2964:GWaterfallShaderGL33::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +2965:GWaterShaderGL33::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +2966:GWMOShaderPermutationGL33::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +2967:GWMOShaderPermutationGL20::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +2968:GVertexBufferGL33::~GVertexBufferGL33\28\29.1 +2969:GVertexBufferGL33::uploadData\28void*\2c\20int\29 +2970:GVertexBufferGL33::bind\28\29 +2971:GVertexBufferGL20::~GVertexBufferGL20\28\29.1 +2972:GVertexBufferGL20::uploadData\28void*\2c\20int\29 +2973:GVertexBufferGL20::bind\28\29 +2974:GVertexBufferDynamicGL33::~GVertexBufferDynamicGL33\28\29.1 +2975:GVertexBufferDynamicGL33::uploadData\28void*\2c\20int\29 +2976:GVertexBufferDynamicGL33::save\28unsigned\20long\29 +2977:GVertexBufferDynamicGL33::resize\28unsigned\20long\29 +2978:GVertexBufferDynamicGL33::bind\28\29 +2979:GVertexBufferDynamicGL20::~GVertexBufferDynamicGL20\28\29.1 +2980:GVertexBufferDynamicGL20::uploadData\28void*\2c\20int\29 +2981:GVertexBufferDynamicGL20::save\28unsigned\20long\29 +2982:GVertexBufferDynamicGL20::resize\28unsigned\20long\29 +2983:GVertexBufferDynamicGL20::bind\28\29 +2984:GVertexBufferBindingsGL33::~GVertexBufferBindingsGL33\28\29.1 +2985:GVertexBufferBindingsGL33::save\28\29 +2986:GVertexBufferBindingsGL20::~GVertexBufferBindingsGL20\28\29.1 +2987:GUniformBufferGL33::~GUniformBufferGL33\28\29.1 +2988:GUniformBufferGL33::createBuffer\28\29 +2989:GUniformBufferChunk33::~GUniformBufferChunk33\28\29.1 +2990:GUniformBufferChunk33::~GUniformBufferChunk33\28\29 +2991:GTextureGL33::~GTextureGL33\28\29.1 +2992:GTextureGL33::readData\28std::__2::vector>&\29 +2993:GTextureGL33::loadData\28int\2c\20int\2c\20void*\2c\20ITextureFormat\29 +2994:GTextureGL20::~GTextureGL20\28\29.1 +2995:GTextureGL20::loadData\28int\2c\20int\2c\20void*\2c\20ITextureFormat\29 +2996:GSkyConus::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +2997:GShaderPermutationGL20::~GShaderPermutationGL20\28\29 +2998:GParticleMeshGL33::~GParticleMeshGL33\28\29 +2999:GParticleMeshGL20::~GParticleMeshGL20\28\29 +3000:GOcclusionQueryGL33::~GOcclusionQueryGL33\28\29.1 +3001:GOcclusionQueryGL20::~GOcclusionQueryGL20\28\29.1 +3002:GMeshGL33::~GMeshGL33\28\29.1 +3003:GMeshGL33::getUniformBuffer\28int\29 +3004:GMeshGL33::getIsTransparent\28\29 +3005:GMeshGL33::getGxBlendMode\28\29 +3006:GMeshGL20::~GMeshGL20\28\29.1 +3007:GMeshGL20::getUniformBuffer\28int\29 +3008:GMeshGL20::getIsTransparent\28\29 +3009:GMeshGL20::getGxBlendMode\28\29 +3010:GM2ShaderPermutationGL33::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +3011:GM2ShaderPermutationGL20::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +3012:GM2ParticleShaderPermutationGL33::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +3013:GM2ParticleShaderPermutationGL20::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +3014:GM2MeshGL33::~GM2MeshGL33\28\29.1 +3015:GM2MeshGL33::~GM2MeshGL33\28\29 +3016:GM2MeshGL33::setQuery\28std::__2::shared_ptr\20const&\29 +3017:GM2MeshGL20::~GM2MeshGL20\28\29.1 +3018:GM2MeshGL20::~GM2MeshGL20\28\29 +3019:GM2MeshGL20::setQuery\28std::__2::shared_ptr\20const&\29 +3020:GLTFExporter::~GLTFExporter\28\29.1 +3021:GLTFExporter::~GLTFExporter\28\29 +3022:GLTFExporter::saveToFile\28std::__2::basic_string\2c\20std::__2::allocator>\29 +3023:GLTFExporter::addM2Object\28std::__2::shared_ptr&\29 +3024:GIndexBufferGL33::~GIndexBufferGL33\28\29.1 +3025:GIndexBufferGL33::uploadData\28void*\2c\20int\29 +3026:GIndexBufferGL20::~GIndexBufferGL20\28\29.1 +3027:GIndexBufferGL20::uploadData\28void*\2c\20int\29 +3028:GFrameBufferGL33::~GFrameBufferGL33\28\29.1 +3029:GFrameBufferGL33::readRGBAPixels\28int\2c\20int\2c\20int\2c\20int\2c\20void*\29 +3030:GFrameBufferGL33::getDepthTexture\28\29 +3031:GFrameBufferGL33::getAttachment\28int\29 +3032:GFrameBufferGL33::copyRenderBufferToTexture\28\29 +3033:GFrameBufferGL33::bindFrameBuffer\28\29 +3034:GFFXgauss4::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +3035:GFFXGlow::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +3036:GDeviceGL33::~GDeviceGL33\28\29.1 +3037:GDeviceGL33::wasTexturesUploaded\28\29 +3038:GDeviceGL33::uploadTextureForMeshes\28std::__2::vector\2c\20std::__2::allocator>>&\29 +3039:GDeviceGL33::updateBuffers\28std::__2::vector\2c\20std::__2::allocator>>*\2c\20std::__2::allocator\2c\20std::__2::allocator>>*>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29 +3040:GDeviceGL33::shrinkData\28\29 +3041:GDeviceGL33::setInvertZ\28bool\29 +3042:GDeviceGL33::setClearScreenColor\28float\2c\20float\2c\20float\29 +3043:GDeviceGL33::reset\28\29 +3044:GDeviceGL33::loadShader\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20IShaderType\29 +3045:GDeviceGL33::initialize\28\29 +3046:GDeviceGL33::increaseFrameNumber\28\29 +3047:GDeviceGL33::getWhiteTexturePixel\28\29 +3048:GDeviceGL33::getUploadSize\28\29 +3049:GDeviceGL33::getUpdateFrameNumber\28\29 +3050:GDeviceGL33::getShader\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20void*\29 +3051:GDeviceGL33::getOcclusionFrameNumber\28\29 +3052:GDeviceGL33::getMaxSamplesCnt\28\29 +3053:GDeviceGL33::getFrameNumber\28\29 +3054:GDeviceGL33::getDrawFrameNumber\28\29 +3055:GDeviceGL33::getCurrentTextureAllocated\28\29 +3056:GDeviceGL33::getCullingFrameNumber\28\29 +3057:GDeviceGL33::getBlackTexturePixel\28\29 +3058:GDeviceGL33::getBBVertexBinding\28\29 +3059:GDeviceGL33::getBBLinearBinding\28\29 +3060:GDeviceGL33::getAnisLevel\28\29 +3061:GDeviceGL33::drawStageAndDeps\28std::__2::shared_ptr\29 +3062:GDeviceGL33::drawMeshes\28std::__2::vector\2c\20std::__2::allocator>>&\29 +3063:GDeviceGL33::createVertexBuffer\28\29 +3064:GDeviceGL33::createVertexBufferDynamic\28unsigned\20long\29 +3065:GDeviceGL33::createVertexBufferBindings\28\29 +3066:GDeviceGL33::createUniformBuffer\28unsigned\20long\29 +3067:GDeviceGL33::createUniformBufferChunk\28unsigned\20long\29 +3068:GDeviceGL33::createTexture\28bool\2c\20bool\29 +3069:GDeviceGL33::createQuery\28std::__2::shared_ptr\29 +3070:GDeviceGL33::createParticleMesh\28gMeshTemplate&\29 +3071:GDeviceGL33::createMesh\28gMeshTemplate&\29 +3072:GDeviceGL33::createM2Mesh\28gMeshTemplate&\29 +3073:GDeviceGL33::createIndexBuffer\28\29 +3074:GDeviceGL33::createFrameBuffer\28int\2c\20int\2c\20std::__2::vector>\2c\20ITextureFormat\2c\20int\2c\20int\29 +3075:GDeviceGL33::createBlpTexture\28std::__2::shared_ptr&\2c\20bool\2c\20bool\29 +3076:GDeviceGL33::commitFrame\28\29 +3077:GDeviceGL33::clearScreen\28\29 +3078:GDeviceGL33::bindVertexBuffer\28IVertexBuffer*\29 +3079:GDeviceGL33::bindVertexBufferBindings\28IVertexBufferBindings*\29 +3080:GDeviceGL33::bindUniformBuffer\28IUniformBuffer*\2c\20int\2c\20int\2c\20int\29 +3081:GDeviceGL33::bindTexture\28ITexture*\2c\20int\29 +3082:GDeviceGL33::bindProgram\28IShaderPermutation*\29 +3083:GDeviceGL33::bindIndexBuffer\28IIndexBuffer*\29 +3084:GDeviceGL33::addDeallocationRecord\28std::__2::function\29 +3085:GDeviceGL20::~GDeviceGL20\28\29.1 +3086:GDeviceGL20::uploadTextureForMeshes\28std::__2::vector\2c\20std::__2::allocator>>&\29 +3087:GDeviceGL20::updateBuffers\28std::__2::vector\2c\20std::__2::allocator>>*\2c\20std::__2::allocator\2c\20std::__2::allocator>>*>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29 +3088:GDeviceGL20::shrinkData\28\29 +3089:GDeviceGL20::setInvertZ\28bool\29 +3090:GDeviceGL20::setClearScreenColor\28float\2c\20float\2c\20float\29 +3091:GDeviceGL20::reset\28\29 +3092:GDeviceGL20::loadShader\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20IShaderType\29 +3093:GDeviceGL20::initialize\28\29 +3094:GDeviceGL20::increaseFrameNumber\28\29 +3095:GDeviceGL20::getWhiteTexturePixel\28\29 +3096:GDeviceGL20::getUpdateFrameNumber\28\29 +3097:GDeviceGL20::getShader\28std::__2::basic_string\2c\20std::__2::allocator>\2c\20void*\29 +3098:GDeviceGL20::getOcclusionFrameNumber\28\29 +3099:GDeviceGL20::getFrameNumber\28\29 +3100:GDeviceGL20::getDrawFrameNumber\28\29 +3101:GDeviceGL20::getCullingFrameNumber\28\29 +3102:GDeviceGL20::getBlackTexturePixel\28\29 +3103:GDeviceGL20::getBBVertexBinding\28\29 +3104:GDeviceGL20::getBBLinearBinding\28\29 +3105:GDeviceGL20::getAnisLevel\28\29 +3106:GDeviceGL20::drawStageAndDeps\28std::__2::shared_ptr\29 +3107:GDeviceGL20::createVertexBuffer\28\29 +3108:GDeviceGL20::createVertexBufferDynamic\28unsigned\20long\29 +3109:GDeviceGL20::createVertexBufferBindings\28\29 +3110:GDeviceGL20::createUniformBuffer\28unsigned\20long\29 +3111:GDeviceGL20::createTexture\28bool\2c\20bool\29 +3112:GDeviceGL20::createQuery\28std::__2::shared_ptr\29 +3113:GDeviceGL20::createParticleMesh\28gMeshTemplate&\29 +3114:GDeviceGL20::createMesh\28gMeshTemplate&\29 +3115:GDeviceGL20::createM2Mesh\28gMeshTemplate&\29 +3116:GDeviceGL20::createIndexBuffer\28\29 +3117:GDeviceGL20::createFrameBuffer\28int\2c\20int\2c\20std::__2::vector>\2c\20ITextureFormat\2c\20int\2c\20int\29 +3118:GDeviceGL20::createBlpTexture\28std::__2::shared_ptr&\2c\20bool\2c\20bool\29 +3119:GDeviceGL20::clearScreen\28\29 +3120:GDeviceGL20::bindVertexBuffer\28IVertexBuffer*\29 +3121:GDeviceGL20::bindVertexBufferBindings\28IVertexBufferBindings*\29 +3122:GDeviceGL20::bindUniformBuffer\28IUniformBuffer*\2c\20int\2c\20int\2c\20int\29 +3123:GDeviceGL20::bindTexture\28ITexture*\2c\20int\29 +3124:GDeviceGL20::bindProgram\28IShaderPermutation*\29 +3125:GDeviceGL20::bindIndexBuffer\28IIndexBuffer*\29 +3126:GBlpTextureGL33::~GBlpTextureGL33\28\29.1 +3127:GBlpTextureGL33::postLoad\28\29 +3128:GBlpTextureGL33::getIsLoaded\28\29 +3129:GBlpTextureGL33::createGlTexture\28TextureFormat\2c\20std::__2::shared_ptr>>\20const&\29 +3130:GBlpTextureGL20::~GBlpTextureGL20\28\29.1 +3131:GBlpTextureGL20::postLoad\28\29 +3132:GBlpTextureGL20::createGlTexture\28TextureFormat\2c\20std::__2::shared_ptr>>\20const&\29 +3133:GAdtShaderPermutationGL33::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +3134:GAdtShaderPermutationGL20::compileShader\28std::__2::basic_string\2c\20std::__2::allocator>\20const&\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +3135:FirstPersonCamera::zoomInFromTouch\28float\29 +3136:FirstPersonCamera::tick\28double\29 +3137:FirstPersonCamera::stopStrafingRight\28\29 +3138:FirstPersonCamera::stopStrafingLeft\28\29 +3139:FirstPersonCamera::stopMovingUp\28\29 +3140:FirstPersonCamera::stopMovingForward\28\29 +3141:FirstPersonCamera::stopMovingBackwards\28\29 +3142:FirstPersonCamera::startStrafingRight\28\29 +3143:FirstPersonCamera::startStrafingLeft\28\29 +3144:FirstPersonCamera::startMovingUp\28\29 +3145:FirstPersonCamera::startMovingForward\28\29 +3146:FirstPersonCamera::startMovingBackwards\28\29 +3147:FirstPersonCamera::setMovementSpeed\28float\29 +3148:FirstPersonCamera::setCameraPos\28float\2c\20float\2c\20float\29 +3149:FirstPersonCamera::getCameraMatrices\28float\2c\20float\2c\20float\2c\20float\29 +3150:FirstPersonCamera::addVerticalViewDir\28float\29 +3151:FirstPersonCamera::addForwardDiff\28float\29 +3152:ExteriorView::collectMeshes\28std::__2::vector\2c\20std::__2::allocator>>&\2c\20std::__2::vector\2c\20std::__2::allocator>>&\29 +3153:CSplineGenerator::~CSplineGenerator\28\29.1 +3154:CSplineGenerator::~CSplineGenerator\28\29 +3155:CSplineGenerator::CreateParticle\28CParticle2&\2c\20double\29 +3156:CSphereGenerator::CreateParticle\28CParticle2&\2c\20double\29 +3157:CPlaneGenerator::CreateParticle\28CParticle2&\2c\20double\29 +3158:CParticleGenerator::Update\28double\2c\20mathfu::Matrix&\29 +3159:CParticleGenerator::GetEmissionRate\28\29 +3160:BlpTexture::process\28std::__2::shared_ptr>>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +3161:AnimFile::process\28std::__2::shared_ptr>>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 +3162:AdtFile::process\28std::__2::shared_ptr>>\2c\20std::__2::basic_string\2c\20std::__2::allocator>\20const&\29 diff --git a/wwwroot/project.wasm b/wwwroot/project.wasm new file mode 100644 index 0000000..48d8e18 Binary files /dev/null and b/wwwroot/project.wasm differ