")
+ t = replacetext(t, "\[td\]", "| ")
+ t = replacetext(t, "\[cell\]", " | ")
+ t = replacetext(t, "\[logo\]", " ")
+ return t
+
+
+/datum/computer_file/program/filemanager/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state)
+
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+ if (!ui)
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
+ ui = new(user, src, ui_key, "file_manager", "NTOS File Manage", 575, 700, state = state)
+ ui.open()
+ ui.set_autoupdate(state = 1)
+
+/datum/computer_file/program/filemanager/ui_data(mob/user)
+ var/list/data = get_header_data()
+
+ var/obj/item/weapon/computer_hardware/hard_drive/HDD
+ var/obj/item/weapon/computer_hardware/hard_drive/portable/RHDD
+ if(error)
+ data["error"] = error
+ if(open_file)
+ var/datum/computer_file/data/file
+
+ if(!computer || !computer.hard_drive)
+ data["error"] = "I/O ERROR: Unable to access hard drive."
+ else
+ HDD = computer.hard_drive
+ file = HDD.find_file_by_name(open_file)
+ if(!istype(file))
+ data["error"] = "I/O ERROR: Unable to open file."
+ else
+ data["filedata"] = parse_tags(file.stored_data)
+ data["filename"] = "[file.filename].[file.filetype]"
+ else
+ if(!computer || !computer.hard_drive)
+ data["error"] = "I/O ERROR: Unable to access hard drive."
+ else
+ HDD = computer.hard_drive
+ RHDD = computer.portable_drive
+ var/list/files[0]
+ for(var/datum/computer_file/F in HDD.stored_files)
+ files.Add(list(list(
+ "name" = F.filename,
+ "type" = F.filetype,
+ "size" = F.size,
+ "undeletable" = F.undeletable
+ )))
+ data["files"] = files
+ if(RHDD)
+ data["usbconnected"] = 1
+ var/list/usbfiles[0]
+ for(var/datum/computer_file/F in RHDD.stored_files)
+ usbfiles.Add(list(list(
+ "name" = F.filename,
+ "type" = F.filetype,
+ "size" = F.size,
+ "undeletable" = F.undeletable
+ )))
+ data["usbfiles"] = usbfiles
+
+ return data
\ No newline at end of file
diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm
new file mode 100644
index 00000000000..a34163f8eef
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm
@@ -0,0 +1,164 @@
+/datum/computer_file/program/ntnetdownload
+ filename = "ntndownloader"
+ filedesc = "NTNet Software Download Tool"
+ program_icon_state = "generic"
+ extended_desc = "This program allows downloads of software from official NT repositories"
+ unsendable = 1
+ undeletable = 1
+ size = 4
+ requires_ntnet = 1
+ requires_ntnet_feature = NTNET_SOFTWAREDOWNLOAD
+ available_on_ntnet = 0
+ ui_header = "downloader_finished.gif"
+ var/datum/computer_file/program/downloaded_file = null
+ var/hacked_download = 0
+ var/download_completion = 0 //GQ of downloaded data.
+ var/download_netspeed = 0
+ var/downloaderror = ""
+ var/obj/item/modular_computer/my_computer = null
+
+/datum/computer_file/program/ntnetdownload/proc/begin_file_download(filename)
+ if(downloaded_file)
+ return 0
+
+ var/datum/computer_file/program/PRG = ntnet_global.find_ntnet_file_by_name(filename)
+
+ if(!PRG || !istype(PRG))
+ return 0
+
+ // Attempting to download antag only program, but without having emagged computer. No.
+ if(PRG.available_on_syndinet && !computer_emagged)
+ return 0
+
+ if(!computer || !computer.hard_drive || !computer.hard_drive.try_store_file(PRG))
+ return 0
+
+ ui_header = "downloader_running.gif"
+
+ if(PRG in ntnet_global.available_station_software)
+ generate_network_log("Began downloading file [PRG.filename].[PRG.filetype] from NTNet Software Repository.")
+ hacked_download = 0
+ else if(PRG in ntnet_global.available_antag_software)
+ generate_network_log("Began downloading file **ENCRYPTED**.[PRG.filetype] from unspecified server.")
+ hacked_download = 1
+ else
+ generate_network_log("Began downloading file [PRG.filename].[PRG.filetype] from unspecified server.")
+ hacked_download = 0
+
+ downloaded_file = PRG.clone()
+
+/datum/computer_file/program/ntnetdownload/proc/abort_file_download()
+ if(!downloaded_file)
+ return
+ generate_network_log("Aborted download of file [hacked_download ? "**ENCRYPTED**" : downloaded_file.filename].[downloaded_file.filetype].")
+ downloaded_file = null
+ download_completion = 0
+ ui_header = "downloader_finished.gif"
+
+/datum/computer_file/program/ntnetdownload/proc/complete_file_download()
+ if(!downloaded_file)
+ return
+ generate_network_log("Completed download of file [hacked_download ? "**ENCRYPTED**" : downloaded_file.filename].[downloaded_file.filetype].")
+ if(!computer || !computer.hard_drive || !computer.hard_drive.store_file(downloaded_file))
+ // The download failed
+ downloaderror = "I/O ERROR - Unable to save file. Check whether you have enough free space on your hard drive and whether your hard drive is properly connected. If the issue persists contact your system administrator for assistance."
+ downloaded_file = null
+ download_completion = 0
+ ui_header = "downloader_finished.gif"
+
+/datum/computer_file/program/ntnetdownload/process_tick()
+ if(!downloaded_file)
+ return
+ if(download_completion >= downloaded_file.size)
+ complete_file_download()
+ // Download speed according to connectivity state. NTNet server is assumed to be on unlimited speed so we're limited by our local connectivity
+ download_netspeed = 0
+ // Speed defines are found in misc.dm
+ switch(ntnet_status)
+ if(1)
+ download_netspeed = NTNETSPEED_LOWSIGNAL
+ if(2)
+ download_netspeed = NTNETSPEED_HIGHSIGNAL
+ if(3)
+ download_netspeed = NTNETSPEED_ETHERNET
+ download_completion += download_netspeed
+
+/datum/computer_file/program/ntnetdownload/ui_act(action, params)
+ if(..())
+ return 1
+ switch(action)
+ if("PRG_downloadfile")
+ if(!downloaded_file)
+ begin_file_download(params["filename"])
+ return 1
+ if("PRG_reseterror")
+ if(downloaderror)
+ download_completion = 0
+ download_netspeed = 0
+ downloaded_file = null
+ downloaderror = ""
+ return 1
+ return 0
+
+/datum/computer_file/program/ntnetdownload/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state)
+
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+ if (!ui)
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
+ ui = new(user, src, ui_key, "ntnet_downloader", "NTNet Download Program", 575, 700, state = state)
+ ui.open()
+ ui.set_autoupdate(state = 1)
+
+/datum/computer_file/program/ntnetdownload/ui_data(mob/user)
+
+ my_computer = computer
+
+ if(!istype(my_computer))
+ return
+
+ var/list/data = get_header_data()
+
+ // This IF cuts on data transferred to client, so i guess it's worth it.
+ if(downloaderror) // Download errored. Wait until user resets the program.
+ data["error"] = downloaderror
+ else if(downloaded_file) // Download running. Wait please..
+ data["downloadname"] = downloaded_file.filename
+ data["downloaddesc"] = downloaded_file.filedesc
+ data["downloadsize"] = downloaded_file.size
+ data["downloadspeed"] = download_netspeed
+ data["downloadcompletion"] = round(download_completion, 0.1)
+ else // No download running, pick file.
+ data["disk_size"] = my_computer.hard_drive.max_capacity
+ data["disk_used"] = my_computer.hard_drive.used_capacity
+ var/list/all_entries[0]
+ for(var/A in ntnet_global.available_station_software)
+ var/datum/computer_file/program/P = A
+ // Only those programs our user can run will show in the list
+ if(!P.can_run(user,transfer = 1))
+ continue
+ all_entries.Add(list(list(
+ "filename" = P.filename,
+ "filedesc" = P.filedesc,
+ "fileinfo" = P.extended_desc,
+ "size" = P.size
+ )))
+ data["hackedavailable"] = 0
+ if(computer_emagged) // If we are running on emagged computer we have access to some "bonus" software
+ var/list/hacked_programs[0]
+ for(var/S in ntnet_global.available_antag_software)
+ var/datum/computer_file/program/P = S
+ data["hackedavailable"] = 1
+ hacked_programs.Add(list(list(
+ "filename" = P.filename,
+ "filedesc" = P.filedesc,
+ "fileinfo" = P.extended_desc,
+ "size" = P.size
+ )))
+ data["hacked_programs"] = hacked_programs
+
+ data["downloadable_programs"] = all_entries
+
+ return data
\ No newline at end of file
diff --git a/code/modules/modular_computers/file_system/programs/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/ntmonitor.dm
new file mode 100644
index 00000000000..e12299b250b
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/ntmonitor.dm
@@ -0,0 +1,94 @@
+/datum/computer_file/program/ntnetmonitor
+ filename = "ntmonitor"
+ filedesc = "NTNet Diagnostics and Monitoring"
+ program_icon_state = "comm_monitor"
+ extended_desc = "This program monitors stationwide NTNet network, provides access to logging systems, and allows for configuration changes"
+ size = 12
+ requires_ntnet = 1
+ required_access = access_network //Network control is a more secure program.
+ available_on_ntnet = 1
+
+/datum/computer_file/program/ntnetmonitor/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state)
+
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+ if (!ui)
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
+
+ ui = new(user, src, ui_key, "ntnet_monitor", "NTNet Diagnostics and Monitoring Tool", 575, 700, state = state)
+ ui.open()
+ ui.set_autoupdate(state = 1)
+
+
+/datum/computer_file/program/ntnetmonitor/ui_act(action, params)
+ if(..())
+ return 1
+ switch(action)
+ if("resetIDS")
+ . = 1
+ if(ntnet_global)
+ ntnet_global.resetIDS()
+ return 1
+ if("toggleIDS")
+ . = 1
+ if(ntnet_global)
+ ntnet_global.toggleIDS()
+ return 1
+ if("toggleWireless")
+ . = 1
+ if(!ntnet_global)
+ return 1
+
+ // NTNet is disabled. Enabling can be done without user prompt
+ if(ntnet_global.setting_disabled)
+ ntnet_global.setting_disabled = 0
+ return 1
+
+ // NTNet is enabled and user is about to shut it down. Let's ask them if they really want to do it, as wirelessly connected computers won't connect without NTNet being enabled (which may prevent people from turning it back on)
+ var/mob/user = usr
+ if(!user)
+ return 1
+ var/response = alert(user, "Really disable NTNet wireless? If your computer is connected wirelessly you won't be able to turn it back on! This will affect all connected wireless devices.", "NTNet shutdown", "Yes", "No")
+ if(response == "Yes")
+ ntnet_global.setting_disabled = 1
+ return 1
+ if("purgelogs")
+ . = 1
+ if(ntnet_global)
+ ntnet_global.purge_logs()
+ if("updatemaxlogs")
+ . = 1
+ var/mob/user = usr
+ var/logcount = text2num(input(user,"Enter amount of logs to keep in memory ([MIN_NTNET_LOGS]-[MAX_NTNET_LOGS]):"))
+ if(ntnet_global)
+ ntnet_global.update_max_log_count(logcount)
+ if("toggle_function")
+ . = 1
+ if(!ntnet_global)
+ return 1
+ ntnet_global.toggle_function(text2num(params["id"]))
+
+/datum/computer_file/program/ntnetmonitor/ui_data(mob/user)
+ if(!ntnet_global)
+ return
+ var/list/data = get_header_data()
+
+ data["ntnetstatus"] = ntnet_global.check_function()
+ data["ntnetrelays"] = ntnet_global.relays.len
+ data["idsstatus"] = ntnet_global.intrusion_detection_enabled
+ data["idsalarm"] = ntnet_global.intrusion_detection_alarm
+
+ data["config_softwaredownload"] = ntnet_global.setting_softwaredownload
+ data["config_peertopeer"] = ntnet_global.setting_peertopeer
+ data["config_communication"] = ntnet_global.setting_communication
+ data["config_systemcontrol"] = ntnet_global.setting_systemcontrol
+
+ data["ntnetlogs"] = list()
+
+ for(var/i in ntnet_global.logs)
+ data["ntnetlogs"] += list(list("entry" = i))
+ data["ntnetmaxlogs"] = ntnet_global.setting_maxlogcount
+
+ return data
\ No newline at end of file
diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm
new file mode 100644
index 00000000000..e8cbe357113
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm
@@ -0,0 +1,236 @@
+/datum/computer_file/program/chatclient
+ filename = "ntnrc_client"
+ filedesc = "NTNet Relay Chat Client"
+ program_icon_state = "command"
+ extended_desc = "This program allows communication over NTNRC network"
+ size = 8
+ requires_ntnet = 1
+ requires_ntnet_feature = NTNET_COMMUNICATION
+ network_destination = "NTNRC server"
+ ui_header = "ntnrc_idle.gif"
+ available_on_ntnet = 1
+ var/last_message = null // Used to generate the toolbar icon
+ var/username
+ var/datum/ntnet_conversation/channel = null
+ var/operator_mode = 0 // Channel operator mode
+ var/netadmin_mode = 0 // Administrator mode (invisible to other users + bypasses passwords)
+
+/datum/computer_file/program/chatclient/New()
+ username = "DefaultUser[rand(100, 999)]"
+
+/datum/computer_file/program/chatclient/ui_act(action, params)
+ if(..())
+ return 1
+
+ switch(action)
+ if("PRG_speak")
+ . = 1
+ if(!channel)
+ return 1
+ var/mob/living/user = usr
+ var/message = sanitize(input(user, "Enter message or leave blank to cancel: "))
+ if(!message || !channel)
+ return
+ channel.add_message(message, username)
+ log_chat("[user]/([user.ckey]) as [username] sent to [channel.title]: [message]")
+
+ if("PRG_joinchannel")
+ . = 1
+ var/datum/ntnet_conversation/C
+ for(var/datum/ntnet_conversation/chan in ntnet_global.chat_channels)
+ if(chan.id == text2num(params["id"]))
+ C = chan
+ break
+
+ if(!C)
+ return 1
+
+ if(netadmin_mode)
+ channel = C // Bypasses normal leave/join and passwords. Technically makes the user invisible to others.
+ return 1
+
+ if(C.password)
+ var/mob/living/user = usr
+ var/password = sanitize(input(user,"Access Denied. Enter password:"))
+ if(C && (password == C.password))
+ C.add_client(src)
+ channel = C
+ return 1
+ C.add_client(src)
+ channel = C
+ if("PRG_leavechannel")
+ . = 1
+ if(channel)
+ channel.remove_client(src)
+ channel = null
+ if("PRG_newchannel")
+ . = 1
+ var/mob/living/user = usr
+ var/channel_title = sanitize(input(user,"Enter channel name or leave blank to cancel:"))
+ if(!channel_title)
+ return
+ var/datum/ntnet_conversation/C = new/datum/ntnet_conversation()
+ C.add_client(src)
+ C.operator = src
+ channel = C
+ C.title = channel_title
+ if("PRG_toggleadmin")
+ . = 1
+ if(netadmin_mode)
+ netadmin_mode = 0
+ if(channel)
+ channel.remove_client(src) // We shouldn't be in channel's user list, but just in case...
+ channel = null
+ return 1
+ var/mob/living/user = usr
+ if(can_run(usr, 1, access_network))
+ if(channel)
+ var/response = alert(user, "Really engage admin-mode? You will be disconnected from your current channel!", "NTNRC Admin mode", "Yes", "No")
+ if(response == "Yes")
+ if(channel)
+ channel.remove_client(src)
+ channel = null
+ else
+ return
+ netadmin_mode = 1
+ if("PRG_changename")
+ . = 1
+ var/mob/living/user = usr
+ var/newname = sanitize(input(user,"Enter new nickname or leave blank to cancel:"))
+ if(!newname)
+ return 1
+ if(channel)
+ channel.add_status_message("[username] is now known as [newname].")
+ username = newname
+
+ if("PRG_savelog")
+ . = 1
+ if(!channel)
+ return
+ var/mob/living/user = usr
+ var/logname = input(user,"Enter desired logfile name (.log) or leave blank to cancel:")
+ if(!logname || !channel)
+ return 1
+ var/datum/computer_file/data/logfile = new/datum/computer_file/data/logfile()
+ // Now we will generate HTML-compliant file that can actually be viewed/printed.
+ logfile.filename = logname
+ logfile.stored_data = "\[b\]Logfile dump from NTNRC channel [channel.title]\[/b\]\[BR\]"
+ for(var/logstring in channel.messages)
+ logfile.stored_data += "[logstring]\[BR\]"
+ logfile.stored_data += "\[b\]Logfile dump completed.\[/b\]"
+ logfile.calculate_size()
+ if(!computer || !computer.hard_drive || !computer.hard_drive.store_file(logfile))
+ if(!computer)
+ // This program shouldn't even be runnable without computer.
+ CRASH("Var computer is null!")
+ return 1
+ if(!computer.hard_drive)
+ computer.visible_message("\The [computer] shows an \"I/O Error - Hard drive connection error\" warning.")
+ else // In 99.9% cases this will mean our HDD is full
+ computer.visible_message("\The [computer] shows an \"I/O Error - Hard drive may be full. Please free some space and try again. Required space: [logfile.size]GQ\" warning.")
+ if("PRG_renamechannel")
+ . = 1
+ if(!operator_mode || !channel)
+ return 1
+ var/mob/living/user = usr
+ var/newname = sanitize(input(user, "Enter new channel name or leave blank to cancel:"))
+ if(!newname || !channel)
+ return
+ channel.add_status_message("Channel renamed from [channel.title] to [newname] by operator.")
+ channel.title = newname
+ if("PRG_deletechannel")
+ . = 1
+ if(channel && ((channel.operator == src) || netadmin_mode))
+ qdel(channel)
+ channel = null
+ if("PRG_setpassword")
+ . = 1
+ if(!channel || ((channel.operator != src) && !netadmin_mode))
+ return 1
+
+ var/mob/living/user = usr
+ var/newpassword = sanitize(input(user, "Enter new password for this channel. Leave blank to cancel, enter 'nopassword' to remove password completely:"))
+ if(!channel || !newpassword || ((channel.operator != src) && !netadmin_mode))
+ return 1
+
+ if(newpassword == "nopassword")
+ channel.password = ""
+ else
+ channel.password = newpassword
+
+/datum/computer_file/program/chatclient/process_tick()
+ ..()
+ if(program_state != PROGRAM_STATE_KILLED)
+ ui_header = "ntnrc_idle.gif"
+ if(channel)
+ // Remember the last message. If there is no message in the channel remember null.
+ last_message = channel.messages.len ? channel.messages[channel.messages.len - 1] : null
+ else
+ last_message = null
+ return 1
+ if(channel && channel.messages && channel.messages.len)
+ ui_header = last_message == channel.messages[channel.messages.len - 1] ? "ntnrc_idle.gif" : "ntnrc_new.gif"
+ else
+ ui_header = "ntnrc_idle.gif"
+
+/datum/computer_file/program/chatclient/kill_program(forced = 0)
+ if(channel)
+ channel.remove_client(src)
+ channel = null
+ ..(forced)
+
+/datum/computer_file/program/chatclient/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state)
+
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+ if (!ui)
+
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
+
+ ui = new(user, src, ui_key, "ntnet_chat", "NTNet Relay Chat Client", 575, 700, state = state)
+ ui.open()
+ ui.set_autoupdate(state = 1)
+
+
+/datum/computer_file/program/chatclient/ui_data(mob/user)
+ if(!ntnet_global || !ntnet_global.chat_channels)
+ return
+
+ var/list/data = list()
+
+ data = get_header_data()
+
+
+ data["adminmode"] = netadmin_mode
+ if(channel)
+ data["title"] = channel.title
+ var/list/messages[0]
+ for(var/M in channel.messages)
+ messages.Add(list(list(
+ "msg" = M
+ )))
+ data["messages"] = messages
+ var/list/clients[0]
+ for(var/C in channel.clients)
+ var/datum/computer_file/program/chatclient/cl = C
+ clients.Add(list(list(
+ "name" = cl.username
+ )))
+ data["clients"] = clients
+ operator_mode = (channel.operator == src) ? 1 : 0
+ data["is_operator"] = operator_mode || netadmin_mode
+
+ else // Channel selection screen
+ var/list/all_channels[0]
+ for(var/C in ntnet_global.chat_channels)
+ var/datum/ntnet_conversation/conv = C
+ if(conv && conv.title)
+ all_channels.Add(list(list(
+ "chan" = conv.title,
+ "id" = conv.id
+ )))
+ data["all_channels"] = all_channels
+
+ return data
\ No newline at end of file
diff --git a/code/modules/modular_computers/file_system/programs/nttransfer.dm b/code/modules/modular_computers/file_system/programs/nttransfer.dm
new file mode 100644
index 00000000000..d9d0c6b8a30
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/nttransfer.dm
@@ -0,0 +1,195 @@
+var/global/nttransfer_uid = 0
+
+/datum/computer_file/program/nttransfer
+ filename = "nttransfer"
+ filedesc = "NTNet P2P Transfer Client"
+ extended_desc = "This program allows for simple file transfer via direct peer to peer connection."
+ program_icon_state = "comm_logs"
+ size = 7
+ requires_ntnet = 1
+ requires_ntnet_feature = NTNET_PEERTOPEER
+ network_destination = "other device via P2P tunnel"
+ available_on_ntnet = 1
+
+ var/error = "" // Error screen
+ var/server_password = "" // Optional password to download the file.
+ var/datum/computer_file/provided_file = null // File which is provided to clients.
+ var/datum/computer_file/downloaded_file = null // File which is being downloaded
+ var/list/connected_clients = list() // List of connected clients.
+ var/datum/computer_file/program/nttransfer/remote // Client var, specifies who are we downloading from.
+ var/download_completion = 0 // Download progress in GQ
+ var/download_netspeed = 0 // Our connectivity speed in GQ/s
+ var/actual_netspeed = 0 // Displayed in the UI, this is the actual transfer speed.
+ var/unique_token // UID of this program
+ var/upload_menu = 0 // Whether we show the program list and upload menu
+
+/datum/computer_file/program/nttransfer/New()
+ unique_token = nttransfer_uid
+ nttransfer_uid++
+ ..()
+
+/datum/computer_file/program/nttransfer/process_tick()
+ // Server mode
+ update_netspeed()
+ if(provided_file)
+ for(var/datum/computer_file/program/nttransfer/C in connected_clients)
+ // Transfer speed is limited by device which uses slower connectivity.
+ // We can have multiple clients downloading at same time, but let's assume we use some sort of multicast transfer
+ // so they can all run on same speed.
+ C.actual_netspeed = min(C.download_netspeed, download_netspeed)
+ C.download_completion += C.actual_netspeed
+ if(C.download_completion >= provided_file.size)
+ C.finish_download()
+ else if(downloaded_file) // Client mode
+ if(!remote)
+ crash_download("Connection to remote server lost")
+
+/datum/computer_file/program/nttransfer/kill_program(forced = 0)
+ if(downloaded_file) // Client mode, clean up variables for next use
+ finalize_download()
+
+ if(provided_file) // Server mode, disconnect all clients
+ for(var/datum/computer_file/program/nttransfer/P in connected_clients)
+ P.crash_download("Connection terminated by remote server")
+ downloaded_file = null
+ ..(forced)
+
+/datum/computer_file/program/nttransfer/proc/update_netspeed()
+ download_netspeed = 0
+ switch(ntnet_status)
+ if(1)
+ download_netspeed = NTNETSPEED_LOWSIGNAL
+ if(2)
+ download_netspeed = NTNETSPEED_HIGHSIGNAL
+ if(3)
+ download_netspeed = NTNETSPEED_ETHERNET
+
+// Finishes download and attempts to store the file on HDD
+/datum/computer_file/program/nttransfer/proc/finish_download()
+ if(!computer || !computer.hard_drive || !computer.hard_drive.store_file(downloaded_file))
+ error = "I/O Error: Unable to save file. Check your hard drive and try again."
+ finalize_download()
+
+// Crashes the download and displays specific error message
+/datum/computer_file/program/nttransfer/proc/crash_download(var/message)
+ error = message ? message : "An unknown error has occured during download"
+ finalize_download()
+
+// Cleans up variables for next use
+/datum/computer_file/program/nttransfer/proc/finalize_download()
+ if(remote)
+ remote.connected_clients.Remove(src)
+ downloaded_file = null
+ remote = null
+ download_completion = 0
+
+
+/datum/computer_file/program/nttransfer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state)
+
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+ if (!ui)
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
+
+ ui = new(user, src, ui_key, "ntnet_transfer", "NTNet P2P Transfer Client", 575, 700, state = state)
+ ui.open()
+ ui.set_autoupdate(state = 1)
+
+/datum/computer_file/program/nttransfer/ui_act(action, params)
+ if(..())
+ return 1
+ switch(action)
+ if("PRG_downloadfile")
+ for(var/datum/computer_file/program/nttransfer/P in ntnet_global.fileservers)
+ if("[P.unique_token]" == params["id"])
+ remote = P
+ break
+ if(!remote || !remote.provided_file)
+ return
+ if(remote.server_password)
+ var/pass = sanitize(input(usr, "Code 401 Unauthorized. Please enter password:", "Password required"))
+ if(pass != remote.server_password)
+ error = "Incorrect Password"
+ return
+ downloaded_file = remote.provided_file.clone()
+ remote.connected_clients.Add(src)
+ return 1
+ if("PRG_reset")
+ error = ""
+ upload_menu = 0
+ finalize_download()
+ if(src in ntnet_global.fileservers)
+ ntnet_global.fileservers.Remove(src)
+ for(var/datum/computer_file/program/nttransfer/T in connected_clients)
+ T.crash_download("Remote server has forcibly closed the connection")
+ provided_file = null
+ return 1
+ if("PRG_setpassword")
+ var/pass = sanitize(input(usr, "Enter new server password. Leave blank to cancel, input 'none' to disable password.", "Server security", "none"))
+ if(!pass)
+ return
+ if(pass == "none")
+ server_password = ""
+ return
+ server_password = pass
+ return 1
+ if("PRG_uploadfile")
+ for(var/datum/computer_file/F in computer.hard_drive.stored_files)
+ if("[F.uid]" == params["id"])
+ if(F.unsendable)
+ error = "I/O Error: File locked."
+ return
+ if(istype(F, /datum/computer_file/program))
+ var/datum/computer_file/program/P = F
+ if(!P.can_run(usr,transfer = 1))
+ error = "Access Error: Insufficient rights to upload file."
+ provided_file = F
+ ntnet_global.fileservers.Add(src)
+ return
+ error = "I/O Error: Unable to locate file on hard drive."
+ return 1
+ if("PRG_uploadmenu")
+ upload_menu = 1
+
+
+/datum/computer_file/program/nttransfer/ui_data(mob/user)
+
+ var/list/data = get_header_data()
+
+ if(error)
+ data["error"] = error
+ else if(downloaded_file)
+ data["downloading"] = 1
+ data["download_size"] = downloaded_file.size
+ data["download_progress"] = download_completion
+ data["download_netspeed"] = actual_netspeed
+ data["download_name"] = "[downloaded_file.filename].[downloaded_file.filetype]"
+ else if (provided_file)
+ data["uploading"] = 1
+ data["upload_uid"] = unique_token
+ data["upload_clients"] = connected_clients.len
+ data["upload_haspassword"] = server_password ? 1 : 0
+ data["upload_filename"] = "[provided_file.filename].[provided_file.filetype]"
+ else if (upload_menu)
+ var/list/all_files[0]
+ for(var/datum/computer_file/F in computer.hard_drive.stored_files)
+ all_files.Add(list(list(
+ "uid" = F.uid,
+ "filename" = "[F.filename].[F.filetype]",
+ "size" = F.size
+ )))
+ data["upload_filelist"] = all_files
+ else
+ var/list/all_servers[0]
+ for(var/datum/computer_file/program/nttransfer/P in ntnet_global.fileservers)
+ all_servers.Add(list(list(
+ "uid" = P.unique_token,
+ "filename" = "[P.provided_file.filename].[P.provided_file.filetype]",
+ "size" = P.provided_file.size,
+ "haspassword" = P.server_password ? 1 : 0
+ )))
+ data["servers"] = all_servers
+
+ return data
\ No newline at end of file
diff --git a/code/modules/modular_computers/file_system/programs/powermonitor.dm b/code/modules/modular_computers/file_system/programs/powermonitor.dm
new file mode 100644
index 00000000000..316b90ec00c
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/powermonitor.dm
@@ -0,0 +1,93 @@
+
+
+/datum/computer_file/program/power_monitor
+ filename = "powermonitor"
+ filedesc = "Power Monitoring"
+ program_icon_state = "power_monitor"
+ extended_desc = "This program connects to sensors around the station to provide information about electrical systems"
+ ui_header = "power_norm.gif"
+ transfer_access = access_engine
+ usage_flags = PROGRAM_CONSOLE
+ requires_ntnet = 0
+ network_destination = "power monitoring system"
+ size = 9
+ var/has_alert = 0
+ var/obj/structure/cable/attached
+ var/list/history = list()
+ var/record_size = 60
+ var/record_interval = 50
+ var/next_record = 0
+
+
+
+
+/datum/computer_file/program/power_monitor/run_program(mob/living/user)
+ . = ..(user)
+ search()
+ history["supply"] = list()
+ history["demand"] = list()
+
+
+/datum/computer_file/program/power_monitor/process_tick()
+ if(!attached)
+ search()
+ else
+ record()
+
+/datum/computer_file/program/power_monitor/proc/search()
+ var/turf/T = get_turf(computer)
+ attached = locate() in T
+
+/datum/computer_file/program/power_monitor/proc/record()
+ if(world.time >= next_record)
+ next_record = world.time + record_interval
+
+ var/list/supply = history["supply"]
+ supply += attached.powernet.viewavail
+ if(supply.len > record_size)
+ supply.Cut(1, 2)
+
+ var/list/demand = history["demand"]
+ demand += attached.powernet.viewload
+ if(demand.len > record_size)
+ demand.Cut(1, 2)
+
+/datum/computer_file/program/power_monitor/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
+ datum/tgui/master_ui = null, datum/ui_state/state = default_state)
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+ if(!ui)
+
+ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
+ assets.send(user)
+
+
+ ui = new(user, src, ui_key, "power_monitor_prog", "Power Monitoring", 1200, 1000, master_ui, state)
+ ui.open()
+
+/datum/computer_file/program/power_monitor/ui_data()
+ var/list/data = get_header_data()
+ data["stored"] = record_size
+ data["interval"] = record_interval / 10
+ data["attached"] = attached ? TRUE : FALSE
+ if(attached)
+ data["supply"] = attached.powernet.viewavail
+ data["demand"] = attached.powernet.viewload
+ data["history"] = history
+
+ data["areas"] = list()
+ if(attached)
+ for(var/obj/machinery/power/terminal/term in attached.powernet.nodes)
+ var/obj/machinery/power/apc/A = term.master
+ if(istype(A))
+ data["areas"] += list(list(
+ "name" = A.area.name,
+ "charge" = A.cell.percent(),
+ "load" = A.lastused_total,
+ "charging" = A.charging,
+ "eqp" = A.equipment,
+ "lgt" = A.lighting,
+ "env" = A.environ
+ ))
+
+ return data
+
diff --git a/code/modules/modular_computers/hardware/battery_module.dm b/code/modules/modular_computers/hardware/battery_module.dm
new file mode 100644
index 00000000000..c79df6c6dea
--- /dev/null
+++ b/code/modules/modular_computers/hardware/battery_module.dm
@@ -0,0 +1,79 @@
+// This device is wrapper for actual power cell. I have decided to not use power cells directly as even low-end cells available on station
+// have tremendeous capacity in comparsion. Higher tier cells would provide your device with nearly infinite battery life, which is something i want to avoid.
+/obj/item/weapon/computer_hardware/battery_module
+ name = "standard battery"
+ desc = "A standard power cell, commonly seen in high-end portable microcomputers or low-end laptops. It's rating is 750."
+ icon_state = "battery_normal"
+ critical = 1
+ malfunction_probability = 1
+ origin_tech = list("powerstorage" = 1, "engineering" = 1)
+ var/battery_rating = 750
+ var/obj/item/weapon/stock_parts/cell/battery = null
+
+/obj/item/weapon/computer_hardware/battery_module/advanced
+ name = "advanced battery"
+ desc = "An advanced power cell, often used in most laptops. It is too large to be fitted into smaller devices. It's rating is 1100."
+ icon_state = "battery_advanced"
+ origin_tech = list("powerstorage" = 2, "engineering" = 2)
+ hardware_size = 2
+ battery_rating = 1100
+
+/obj/item/weapon/computer_hardware/battery_module/super
+ name = "super battery"
+ desc = "A very advanced power cell, often used in high-end devices, or as uninterruptable power supply for important consoles or servers. It's rating is 1500."
+ icon_state = "battery_super"
+ origin_tech = list("powerstorage" = 3, "engineering" = 3)
+ hardware_size = 2
+ battery_rating = 1500
+
+/obj/item/weapon/computer_hardware/battery_module/ultra
+ name = "ultra battery"
+ desc = "A very advanced large power cell. It's often used as uninterruptable power supply for critical consoles or servers. It's rating is 2000."
+ icon_state = "battery_ultra"
+ origin_tech = list("powerstorage" = 5, "engineering" = 4)
+ hardware_size = 3
+ battery_rating = 2000
+
+/obj/item/weapon/computer_hardware/battery_module/micro
+ name = "micro battery"
+ desc = "A small power cell, commonly seen in most portable microcomputers. It's rating is 500."
+ icon_state = "battery_micro"
+ origin_tech = list("powerstorage" = 2, "engineering" = 2)
+ battery_rating = 500
+
+/obj/item/weapon/computer_hardware/battery_module/nano
+ name = "nano battery"
+ desc = "A tiny power cell, commonly seen in low-end portable microcomputers. It's rating is 300."
+ icon_state = "battery_nano"
+ origin_tech = list("powerstorage" = 1, "engineering" = 1)
+ battery_rating = 300
+
+// This is not intended to be obtainable in-game. Intended for adminbus and debugging purposes.
+/obj/item/weapon/computer_hardware/battery_module/lambda
+ name = "lambda coil"
+ desc = "A very complex device that creates it's own bluespace dimension. This dimension may be used to store massive amounts of energy."
+ icon_state = "battery_lambda"
+ hardware_size = 1
+ battery_rating = 1000000
+
+/obj/item/weapon/computer_hardware/battery_module/diagnostics(var/mob/user)
+ ..()
+ user << "Internal battery charge: [battery.charge]/[battery.maxcharge] CU"
+
+/obj/item/weapon/computer_hardware/battery_module/New()
+ battery = new/obj/item/weapon/stock_parts/cell(src)
+ battery.maxcharge = battery_rating
+ battery.charge = battery.maxcharge/2
+ ..()
+
+/obj/item/weapon/computer_hardware/battery_module/proc/charge_to_full()
+ if(battery)
+ battery.charge = battery.maxcharge
+
+/obj/item/weapon/computer_hardware/battery_module/try_install_component(mob/living/user, obj/item/modular_computer/M, found = 0)
+ if(M.battery_module)
+ user << "This computer's battery slot is already occupied by \the [M.battery_module]."
+ return
+ found = 1
+ M.battery_module = src
+ ..(user, M, found)
\ No newline at end of file
diff --git a/code/modules/modular_computers/hardware/card_slot.dm b/code/modules/modular_computers/hardware/card_slot.dm
new file mode 100644
index 00000000000..aba6bcae84c
--- /dev/null
+++ b/code/modules/modular_computers/hardware/card_slot.dm
@@ -0,0 +1,29 @@
+/obj/item/weapon/computer_hardware/card_slot
+ name = "RFID card slot"
+ desc = "Slot that allows this computer to write data on RFID cards. Necessary for some programs to run properly."
+ power_usage = 10 //W
+ critical = 0
+ icon_state = "cardreader"
+ hardware_size = 1
+ origin_tech = list("programming" = 2)
+
+ var/obj/item/weapon/card/id/stored_card = null
+ var/obj/item/weapon/card/id/stored_card2 = null
+
+/obj/item/weapon/computer_hardware/card_slot/Destroy()
+ if(holder2 && (holder2.card_slot == src))
+ holder2.card_slot = null
+ if(stored_card)
+ stored_card.forceMove(get_turf(holder2))
+ if(stored_card2)
+ stored_card2.forceMove(get_turf(holder2))
+ holder2 = null
+ ..()
+
+/obj/item/weapon/computer_hardware/card_slot/try_install_component(mob/living/user, obj/item/modular_computer/M, found = 0)
+ if(M.card_slot)
+ user << "This computer's card slot is already occupied by \the [M.card_slot]."
+ return
+ found = 1
+ M.card_slot = src
+ ..(user, M, found)
\ No newline at end of file
diff --git a/code/modules/modular_computers/hardware/hard_drive.dm b/code/modules/modular_computers/hardware/hard_drive.dm
new file mode 100644
index 00000000000..fcca93b2b69
--- /dev/null
+++ b/code/modules/modular_computers/hardware/hard_drive.dm
@@ -0,0 +1,175 @@
+/obj/item/weapon/computer_hardware/hard_drive/
+ name = "basic hard drive"
+ desc = "A small power efficient solid state drive, with 128GQ of storage capacity for use in basic computers where power efficiency is desired."
+ power_usage = 25 // SSD or something with low power usage
+ icon_state = "hdd_normal"
+ hardware_size = 1
+ origin_tech = list("programming" = 1, "engineering" = 1)
+ var/max_capacity = 128
+ var/used_capacity = 0
+ var/list/stored_files = list() // List of stored files on this drive. DO NOT MODIFY DIRECTLY!
+
+/obj/item/weapon/computer_hardware/hard_drive/advanced
+ name = "advanced hard drive"
+ desc = "A small hybrid hard drive with 256GQ of storage capacity for use in higher grade computers where balance between power efficiency and capacity is desired."
+ max_capacity = 256
+ origin_tech = list("programming" = 2, "engineering" = 2)
+ power_usage = 50 // Hybrid, medium capacity and medium power storage
+ icon_state = "hdd_advanced"
+ hardware_size = 2
+
+/obj/item/weapon/computer_hardware/hard_drive/super
+ name = "super hard drive"
+ desc = "A small hard drive with 512GQ of storage capacity for use in cluster storage solutions where capacity is more important than power efficiency."
+ max_capacity = 512
+ origin_tech = list("programming" = 3, "engineering" = 3)
+ power_usage = 100 // High-capacity but uses lots of power, shortening battery life. Best used with APC link.
+ icon_state = "hdd_super"
+ hardware_size = 2
+
+/obj/item/weapon/computer_hardware/hard_drive/cluster
+ name = "cluster hard drive"
+ desc = "A large storage cluster consisting of multiple hard drives for usage in high capacity storage systems. Has capacity of 2048 GQ."
+ power_usage = 500
+ origin_tech = list("programming" = 4, "engineering" = 4)
+ max_capacity = 2048
+ icon_state = "hdd_cluster"
+ hardware_size = 3
+
+// For tablets, etc. - highly power efficient.
+/obj/item/weapon/computer_hardware/hard_drive/small
+ name = "small hard drive"
+ desc = "A small highly efficient solid state drive for portable devices."
+ power_usage = 10
+ origin_tech = list("programming" = 2, "engineering" = 2)
+ max_capacity = 64
+ icon_state = "hdd_small"
+ hardware_size = 1
+
+/obj/item/weapon/computer_hardware/hard_drive/micro
+ name = "micro hard drive"
+ desc = "A small micro hard drive for portable devices."
+ power_usage = 2
+ origin_tech = list("programming" = 1, "engineering" = 1)
+ max_capacity = 32
+ icon_state = "hdd_micro"
+ hardware_size = 1
+
+/obj/item/weapon/computer_hardware/hard_drive/diagnostics(var/mob/user)
+ ..()
+ // 999 is a byond limit that is in place. It's unlikely someone will reach that many files anyway, since you would sooner run out of space.
+ user << "NT-NFS File Table Status: [stored_files.len]/999"
+ user << "Storage capacity: [used_capacity]/[max_capacity]GQ"
+
+// Use this proc to add file to the drive. Returns 1 on success and 0 on failure. Contains necessary sanity checks.
+/obj/item/weapon/computer_hardware/hard_drive/proc/store_file(var/datum/computer_file/F)
+ if(!F || !istype(F))
+ return 0
+
+ if(!can_store_file(F.size))
+ return 0
+
+ if(!check_functionality())
+ return 0
+
+ if(!stored_files)
+ return 0
+
+ // This file is already stored. Don't store it again.
+ if(F in stored_files)
+ return 0
+
+ F.holder = src
+ stored_files.Add(F)
+ recalculate_size()
+ return 1
+
+// Use this proc to add file to the drive. Returns 1 on success and 0 on failure. Contains necessary sanity checks.
+/obj/item/weapon/computer_hardware/hard_drive/proc/install_default_programs()
+ store_file(new/datum/computer_file/program/computerconfig(src)) // Computer configuration utility, allows hardware control and displays more info than status bar
+ store_file(new/datum/computer_file/program/ntnetdownload(src)) // NTNet Downloader Utility, allows users to download more software from NTNet repository
+ store_file(new/datum/computer_file/program/filemanager(src)) // File manager, allows text editor functions and basic file manipulation.
+
+
+// Use this proc to remove file from the drive. Returns 1 on success and 0 on failure. Contains necessary sanity checks.
+/obj/item/weapon/computer_hardware/hard_drive/proc/remove_file(var/datum/computer_file/F)
+ if(!F || !istype(F))
+ return 0
+
+ if(!stored_files)
+ return 0
+
+ if(!check_functionality())
+ return 0
+
+ if(F in stored_files)
+ stored_files -= F
+ recalculate_size()
+ return 1
+ else
+ return 0
+
+// Loops through all stored files and recalculates used_capacity of this drive
+/obj/item/weapon/computer_hardware/hard_drive/proc/recalculate_size()
+ var/total_size = 0
+ for(var/datum/computer_file/F in stored_files)
+ total_size += F.size
+
+ used_capacity = total_size
+
+// Checks whether file can be stored on the hard drive.
+/obj/item/weapon/computer_hardware/hard_drive/proc/can_store_file(var/size = 1)
+ // In the unlikely event someone manages to create that many files.
+ // BYOND is acting weird with numbers above 999 in loops (infinite loop prevention)
+ if(stored_files.len >= 999)
+ return 0
+ if(used_capacity + size > max_capacity)
+ return 0
+ else
+ return 1
+
+// Checks whether we can store the file. We can only store unique files, so this checks whether we wouldn't get a duplicity by adding a file.
+/obj/item/weapon/computer_hardware/hard_drive/proc/try_store_file(var/datum/computer_file/F)
+ if(!F || !istype(F))
+ return 0
+ var/name = F.filename + "." + F.filetype
+ for(var/datum/computer_file/file in stored_files)
+ if((file.filename + "." + file.filetype) == name)
+ return 0
+ return can_store_file(F.size)
+
+
+
+// Tries to find the file by filename. Returns null on failure
+/obj/item/weapon/computer_hardware/hard_drive/proc/find_file_by_name(var/filename)
+ if(!check_functionality())
+ return null
+
+ if(!filename)
+ return null
+
+ if(!stored_files)
+ return null
+
+ for(var/datum/computer_file/F in stored_files)
+ if(F.filename == filename)
+ return F
+ return null
+
+/obj/item/weapon/computer_hardware/hard_drive/Destroy()
+ if(holder2 && (holder2.hard_drive == src))
+ holder2.hard_drive = null
+ stored_files = null
+ ..()
+
+/obj/item/weapon/computer_hardware/hard_drive/New()
+ install_default_programs()
+ ..()
+
+/obj/item/weapon/computer_hardware/hard_drive/try_install_component(mob/living/user, obj/item/modular_computer/M, found = 0)
+ if(M.hard_drive)
+ user << "This computer's hard drive slot is already occupied by \the [M.hard_drive]."
+ return
+ found = 1
+ M.hard_drive = src
+ ..(user, M, found)
\ No newline at end of file
diff --git a/code/modules/modular_computers/hardware/hardware.dm b/code/modules/modular_computers/hardware/hardware.dm
new file mode 100644
index 00000000000..4b0d378286a
--- /dev/null
+++ b/code/modules/modular_computers/hardware/hardware.dm
@@ -0,0 +1,99 @@
+/obj/item/weapon/computer_hardware/
+ name = "Hardware"
+ desc = "Unknown Hardware."
+ icon = 'icons/obj/modular_components.dmi'
+ var/obj/item/modular_computer/holder2 = null
+ var/power_usage = 0 // If the hardware uses extra power, change this.
+ var/enabled = 1 // If the hardware is turned off set this to 0.
+ var/critical = 1 // Prevent disabling for important component, like the HDD.
+ var/hardware_size = 1 // Limits which devices can contain this component. 1: Tablets/Laptops/Consoles, 2: Laptops/Consoles, 3: Consoles only
+ var/damage = 0 // Current damage level
+ var/max_damage = 100 // Maximal damage level.
+ var/damage_malfunction = 20 // "Malfunction" threshold. When damage exceeds this value the hardware piece will semi-randomly fail and do !!FUN!! things
+ var/damage_failure = 50 // "Failure" threshold. When damage exceeds this value the hardware piece will not work at all.
+ var/malfunction_probability = 10// Chance of malfunction when the component is damaged
+
+/obj/item/weapon/computer_hardware/attackby(var/obj/item/W as obj, var/mob/living/user as mob)
+ // Multitool. Runs diagnostics
+ if(istype(W, /obj/item/device/multitool))
+ user << "***** DIAGNOSTICS REPORT *****"
+ diagnostics(user)
+ user << "******************************"
+ return 1
+ // Nanopaste. Repair all damage if present for a single unit.
+ var/obj/item/stack/S = W
+/*
+ if(istype(S, /obj/item/stack/sheet/glass))
+ if(!damage)
+ user << "\The [src] doesn't seem to require repairs."
+ return 1
+ if(S.use(1))
+ user << "You apply a bit of \the [W] to \the [src]. It immediately repairs all damage."
+ damage = 0
+ return 1
+*/
+ // Cable coil. Works as repair method, but will probably require multiple applications and more cable.
+ if(istype(S, /obj/item/stack/cable_coil))
+ if(!damage)
+ user << "\The [src] doesn't seem to require repairs."
+ return 1
+ if(S.use(1))
+ user << "You patch up \the [src] with a bit of \the [W]."
+ take_damage(-10)
+ return 1
+ return ..()
+
+
+// Called on multitool click, prints diagnostic information to the user.
+/obj/item/weapon/computer_hardware/proc/diagnostics(var/mob/user)
+ user << "Hardware Integrity Test... (Corruption: [damage]/[max_damage]) [damage > damage_failure ? "FAIL" : damage > damage_malfunction ? "WARN" : "PASS"]"
+
+/obj/item/weapon/computer_hardware/New(var/obj/L)
+ w_class = hardware_size
+ if(istype(L, /obj/machinery/modular_computer))
+ var/obj/machinery/modular_computer/C = L
+ if(C.cpu)
+ holder2 = C.cpu
+ return
+ if(istype(L, /obj/item/modular_computer))
+ holder2 = L
+ return
+
+/obj/item/weapon/computer_hardware/Destroy()
+ holder2 = null
+ return ..()
+
+// Handles damage checks
+/obj/item/weapon/computer_hardware/proc/check_functionality()
+ // Too damaged to work at all.
+ if(damage > damage_failure)
+ return 0
+ // Still working. Well, sometimes...
+ if(damage > damage_malfunction)
+ if(prob(malfunction_probability))
+ return 0
+ // Good to go.
+ return 1
+
+/obj/item/weapon/computer_hardware/examine(var/mob/user)
+ . = ..()
+ if(damage > damage_failure)
+ user << "It seems to be severely damaged!"
+ else if(damage > damage_malfunction)
+ user << "It seems to be damaged!"
+ else if(damage)
+ user << "It seems to be slightly damaged."
+
+// Damages the component. Contains necessary checks. Negative damage "heals" the component.
+/obj/item/weapon/computer_hardware/proc/take_damage(var/amount)
+ damage += round(amount) // We want nice rounded numbers here.
+ damage = max(0, min(damage, max_damage)) // Clamp the value.
+
+// Attempts to install the hardware into apropriate slot.
+/obj/item/weapon/computer_hardware/proc/try_install_component(mob/living/user, obj/item/modular_computer/M, found = 0)
+ if(found)
+ user << "You install \the [src] into \the [M]"
+ holder2 = M
+ if(!user.drop_item(src))
+ return
+ forceMove(M)
\ No newline at end of file
diff --git a/code/modules/modular_computers/hardware/nano_printer.dm b/code/modules/modular_computers/hardware/nano_printer.dm
new file mode 100644
index 00000000000..83b33418647
--- /dev/null
+++ b/code/modules/modular_computers/hardware/nano_printer.dm
@@ -0,0 +1,60 @@
+/obj/item/weapon/computer_hardware/nano_printer
+ name = "nano printer"
+ desc = "Small integrated printer with paper recycling module."
+ power_usage = 50
+ origin_tech = list("programming" = 2, "engineering" = 2)
+ critical = 0
+ icon_state = "printer"
+ hardware_size = 1
+ var/stored_paper = 5
+ var/max_paper = 10
+
+/obj/item/weapon/computer_hardware/nano_printer/diagnostics(var/mob/user)
+ ..()
+ user << "Paper buffer level: [stored_paper]/[max_paper]"
+
+/obj/item/weapon/computer_hardware/nano_printer/proc/print_text(var/text_to_print, var/paper_title = null)
+ if(!stored_paper)
+ return 0
+ if(!enabled)
+ return 0
+ if(!check_functionality())
+ return 0
+
+ var/obj/item/weapon/paper/P = new/obj/item/weapon/paper(get_turf(holder2))
+
+ // Damaged printer causes the resulting paper to be somewhat harder to read.
+ if(damage > damage_malfunction)
+ P.info = stars(text_to_print, 100-malfunction_probability)
+ else
+ P.info = text_to_print
+ if(paper_title)
+ P.name = paper_title
+ P.update_icon()
+ stored_paper--
+ P = null
+ return 1
+
+/obj/item/weapon/computer_hardware/nano_printer/attackby(obj/item/W as obj, mob/user as mob)
+ if(istype(W, /obj/item/weapon/paper))
+ if(stored_paper >= max_paper)
+ user << "You try to add \the [W] into [src], but it's paper bin is full"
+ return
+
+ user << "You insert \the [W] into [src]."
+ qdel(W)
+ stored_paper++
+
+/obj/item/weapon/computer_hardware/nano_printer/Destroy()
+ if(holder2 && (holder2.nano_printer == src))
+ holder2.nano_printer = null
+ holder2 = null
+ ..()
+
+/obj/item/weapon/computer_hardware/nano_printer/try_install_component(mob/living/user, obj/item/modular_computer/M, found = 0)
+ if(M.nano_printer)
+ user << "This computer's nano printer slot is already occupied by \the [M.nano_printer]."
+ return
+ found = 1
+ M.nano_printer = src
+ ..(user, M, found)
\ No newline at end of file
diff --git a/code/modules/modular_computers/hardware/network_card.dm b/code/modules/modular_computers/hardware/network_card.dm
new file mode 100644
index 00000000000..41a69042b4a
--- /dev/null
+++ b/code/modules/modular_computers/hardware/network_card.dm
@@ -0,0 +1,104 @@
+var/global/ntnet_card_uid = 1
+
+/obj/item/weapon/computer_hardware/network_card/
+ name = "basic NTNet network card"
+ desc = "A basic network card for usage with standard NTNet frequencies."
+ power_usage = 50
+ origin_tech = list("programming" = 2, TECH_ENGINEERING = 1)
+ critical = 0
+ icon_state = "netcard_basic"
+ hardware_size = 1
+ var/identification_id = null // Identification ID. Technically MAC address of this device. Can't be changed by user.
+ var/identification_string = "" // Identification string, technically nickname seen in the network. Can be set by user.
+ var/long_range = 0
+ var/ethernet = 0 // Hard-wired, therefore always on, ignores NTNet wireless checks.
+ malfunction_probability = 1
+
+/obj/item/weapon/computer_hardware/network_card/diagnostics(var/mob/user)
+ ..()
+ user << "NIX Unique ID: [identification_id]"
+ user << "NIX User Tag: [identification_string]"
+ user << "Supported protocols:"
+ user << "511.m SFS (Subspace) - Standard Frequency Spread"
+ if(long_range)
+ user << "511.n WFS/HB (Subspace) - Wide Frequency Spread/High Bandiwdth"
+ if(ethernet)
+ user << "OpenEth (Physical Connection) - Physical network connection port"
+
+/obj/item/weapon/computer_hardware/network_card/New(var/l)
+ ..(l)
+ identification_id = ntnet_card_uid
+ ntnet_card_uid++
+
+/obj/item/weapon/computer_hardware/network_card/advanced
+ name = "advanced NTNet network card"
+ desc = "An advanced network card for usage with standard NTNet frequencies. It's transmitter is strong enough to connect even off-station."
+ long_range = 1
+ origin_tech = list("programming" = 4, "engineering" = 2)
+ power_usage = 100 // Better range but higher power usage.
+ icon_state = "netcard_advanced"
+ hardware_size = 1
+
+/obj/item/weapon/computer_hardware/network_card/wired
+ name = "wired NTNet network card"
+ desc = "An advanced network card for usage with standard NTNet frequencies. This one also supports wired connection."
+ ethernet = 1
+ origin_tech = list("programming" = 5, "engineering" = 3)
+ power_usage = 100 // Better range but higher power usage.
+ icon_state = "netcard_ethernet"
+ hardware_size = 3
+
+/obj/item/weapon/computer_hardware/network_card/Destroy()
+ if(holder2 && (holder2.network_card == src))
+ holder2.network_card = null
+ holder2 = null
+ ..()
+
+// Returns a string identifier of this network card
+/obj/item/weapon/computer_hardware/network_card/proc/get_network_tag()
+ return "[identification_string] (NID [identification_id])"
+
+// 0 - No signal, 1 - Low signal, 2 - High signal. 3 - Wired Connection
+/obj/item/weapon/computer_hardware/network_card/proc/get_signal(var/specific_action = 0)
+ if(!holder2) // Hardware is not installed in anything. No signal. How did this even get called?
+ return 0
+
+ if(!enabled)
+ return 0
+
+ if(!check_functionality())
+ return 0
+
+ if(ethernet) // Computer is connected via wired connection.
+ return 3
+
+ if(!ntnet_global || !ntnet_global.check_function(specific_action)) // NTNet is down and we are not connected via wired connection. No signal.
+ return 0
+
+ if(holder2)
+
+ var/turf/T = get_turf(holder2)
+ if((T && istype(T)) && (T.z == ZLEVEL_STATION || T.z == ZLEVEL_MINING))
+ // Computer is on station. Low/High signal depending on what type of network card you have
+ if(long_range)
+ return 2
+ else
+ return 1
+
+ if(long_range) // Computer is not on station, but it has upgraded network card. Low signal.
+ return 1
+
+ return 0 // Computer is not on station and does not have upgraded network card. No signal.
+
+/obj/item/weapon/computer_hardware/network_card/Destroy()
+ if(holder2 && (holder2.network_card == src))
+ holder2.network_card = null
+ ..()
+
+/obj/item/weapon/computer_hardware/network_card/try_install_component(mob/living/user, obj/item/modular_computer/M, found = 0)
+ if(M.network_card)
+ user << "This computer's network card slot is already occupied by \the [M.network_card]."
+ return
+ found = 1
+ M.network_card = src
+ ..(user, M, found)
\ No newline at end of file
diff --git a/code/modules/modular_computers/hardware/portable_hard_drive.dm b/code/modules/modular_computers/hardware/portable_hard_drive.dm
new file mode 100644
index 00000000000..e4ff4d7d09e
--- /dev/null
+++ b/code/modules/modular_computers/hardware/portable_hard_drive.dm
@@ -0,0 +1,41 @@
+// These are basically USB data sticks and may be used to transfer files between devices
+/obj/item/weapon/computer_hardware/hard_drive/portable/
+ name = "basic data crystal"
+ desc = "Small crystal with imprinted photonic circuits that can be used to store data. It's capacity is 16 GQ."
+ power_usage = 10
+ icon_state = "flashdrive_basic"
+ hardware_size = 1
+ max_capacity = 16
+ origin_tech = list("programming" = 1)
+
+/obj/item/weapon/computer_hardware/hard_drive/portable/advanced
+ name = "advanced data crystal"
+ desc = "Small crystal with imprinted high-density photonic circuits that can be used to store data. It's capacity is 64 GQ."
+ power_usage = 20
+ icon_state = "flashdrive_advanced"
+ hardware_size = 1
+ max_capacity = 64
+ origin_tech = list("programming" = 2)
+
+/obj/item/weapon/computer_hardware/hard_drive/portable/super
+ name = "super data crystal"
+ desc = "Small crystal with imprinted ultra-density photonic circuits that can be used to store data. It's capacity is 256 GQ."
+ power_usage = 40
+ icon_state = "flashdrive_super"
+ hardware_size = 1
+ max_capacity = 256
+ origin_tech = list("programming" = 4)
+
+/obj/item/weapon/computer_hardware/hard_drive/portable/New()
+ ..()
+ stored_files = list()
+ recalculate_size()
+
+
+/obj/item/weapon/computer_hardware/hard_drive/portable/try_install_component(mob/living/user, obj/item/modular_computer/M, found = 0)
+ if(M.portable_drive)
+ user << "This computer's portable drive slot is already occupied by \the [M.portable_drive]."
+ return
+ found = 1
+ M.portable_drive = src
+ ..(user, M, found)
\ No newline at end of file
diff --git a/code/modules/modular_computers/hardware/processor_unit.dm b/code/modules/modular_computers/hardware/processor_unit.dm
new file mode 100644
index 00000000000..75037392160
--- /dev/null
+++ b/code/modules/modular_computers/hardware/processor_unit.dm
@@ -0,0 +1,49 @@
+// CPU that allows the computer to run programs.
+// Better CPUs are obtainable via research and can run more programs on background.
+
+/obj/item/weapon/computer_hardware/processor_unit
+ name = "standard processor"
+ desc = "A standard CPU used in most computers. It can run up to three programs simultaneously."
+ icon_state = "cpu_normal"
+ hardware_size = 2
+ power_usage = 50
+ critical = 1
+ malfunction_probability = 1
+ origin_tech = list("programming" = 3, "engineering" = 2)
+
+ var/max_idle_programs = 2 // 2 idle, + 1 active = 3 as said in description.
+
+/obj/item/weapon/computer_hardware/processor_unit/small
+ name = "standard microprocessor"
+ desc = "A standard miniaturised CPU used in portable devices. It can run up to two programs simultaneously."
+ icon_state = "cpu_small"
+ hardware_size = 1
+ power_usage = 25
+ max_idle_programs = 1
+ origin_tech = list("programming" = 2, "engineering" = 2)
+
+/obj/item/weapon/computer_hardware/processor_unit/photonic
+ name = "photonic processor"
+ desc = "An advanced experimental CPU that uses photonic core instead of regular circuitry. It can run up to five programs simultaneously, but uses a lot of power."
+ icon_state = "cpu_normal_photonic"
+ hardware_size = 2
+ power_usage = 250
+ max_idle_programs = 4
+ origin_tech = list("programming" = 5, "engineering" = 4)
+
+/obj/item/weapon/computer_hardware/processor_unit/photonic/small
+ name = "photonic microprocessor"
+ desc = "An advanced miniaturised CPU for use in portable devices. It uses photonic core instead of regular circuitry. It can run up to three programs simultaneously."
+ icon_state = "cpu_small_photonic"
+ hardware_size = 1
+ power_usage = 75
+ max_idle_programs = 2
+ origin_tech = list("programming" = 4, "engineering" = 3)
+
+/obj/item/weapon/computer_hardware/processor_unit/try_install_component(mob/living/user, obj/item/modular_computer/M, found = 0)
+ if(M.processor_unit)
+ user << "This computer's processor slot is already occupied by \the [M.processor_unit]."
+ return
+ found = 1
+ M.processor_unit = src
+ ..(user, M, found)
\ No newline at end of file
diff --git a/code/modules/modular_computers/hardware/tesla_link.dm b/code/modules/modular_computers/hardware/tesla_link.dm
new file mode 100644
index 00000000000..deae760d467
--- /dev/null
+++ b/code/modules/modular_computers/hardware/tesla_link.dm
@@ -0,0 +1,31 @@
+/obj/item/weapon/computer_hardware/tesla_link
+ name = "tesla link"
+ desc = "An advanced tesla link that wirelessly recharges connected device from nearby area power controller."
+ critical = 0
+ enabled = 1
+ icon_state = "teslalink"
+ hardware_size = 2 // Can't be installed into tablets
+ origin_tech = list("programming" = 2, "powerstorage" = 3, "engineering" = 2)
+ var/obj/machinery/modular_computer/holder
+
+/obj/item/weapon/computer_hardware/tesla_link/New(var/obj/L)
+ if(istype(L, /obj/machinery/modular_computer))
+ holder = L
+ return
+ ..(L)
+
+/obj/item/weapon/computer_hardware/tesla_link/Destroy()
+ if(holder && (holder.tesla_link == src))
+ holder.tesla_link = null
+ ..()
+
+/obj/item/weapon/computer_hardware/tesla_link/try_install_component(mob/living/user, obj/item/modular_computer/M, found = 0)
+ if(istype(M, /obj/item/modular_computer/processor))
+ var/obj/item/modular_computer/processor/P = M
+ if(P.machinery_computer.tesla_link)
+ user << "This computer's tesla link slot is already occupied by \the [P.machinery_computer.tesla_link]."
+ return
+ holder = P.machinery_computer
+ P.machinery_computer.tesla_link = src
+ found = 1
+ ..(user, M, found)
\ No newline at end of file
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index 41b58622d1b..010a4105883 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -23,12 +23,13 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
"Hydroponics Machinery",
"Subspace Telecomms",
"Research Machinery",
- "Misc. Machinery"
+ "Misc. Machinery",
+ "Computer Parts"
)
/obj/machinery/r_n_d/circuit_imprinter/New()
..()
- materials = new(src, list(MAT_GLASS, MAT_GOLD, MAT_DIAMOND))
+ materials = new(src, list(MAT_GLASS, MAT_GOLD, MAT_DIAMOND, MAT_METAL))
create_reagents(0)
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/circuit_imprinter(null)
B.apply_default_parts(src)
diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm
index 8e5bfa55e6d..565ec192dfb 100644
--- a/code/modules/research/designs/autolathe_designs.dm
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -728,3 +728,18 @@
build_path = /obj/item/conveyor_switch_construct
category = list("initial", "Construction")
+/datum/design/laptop
+ name = "Laptop Frame"
+ id = "laptop"
+ build_type = AUTOLATHE
+ materials = list(MAT_METAL = 1200, MAT_GLASS = 200)
+ build_path = /obj/machinery/modular_computer/laptop/buildable
+ category = list("initial","Misc")
+
+/datum/design/tablet
+ name = "Tablet Frame"
+ id = "tablet"
+ build_type = AUTOLATHE
+ materials = list(MAT_METAL = 500, MAT_GLASS = 1000)
+ build_path = /obj/item/modular_computer/tablet
+ category = list("initial","Misc")
\ No newline at end of file
diff --git a/code/modules/research/designs/computer_part_designs.dm b/code/modules/research/designs/computer_part_designs.dm
new file mode 100644
index 00000000000..ae91050960e
--- /dev/null
+++ b/code/modules/research/designs/computer_part_designs.dm
@@ -0,0 +1,245 @@
+////////////////////////////////////////
+///////////Computer Parts///////////////
+////////////////////////////////////////
+
+/datum/design/disk/normal
+ name = "basic hard drive"
+ id = "hdd_basic"
+ req_tech = list("programming" = 1, "engineering" = 1)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 400, MAT_GLASS = 100)
+ build_path = /obj/item/weapon/computer_hardware/hard_drive/
+ category = list("Computer Parts")
+
+/datum/design/disk/advanced
+ name = "advanced hard drive"
+ id = "hdd_advanced"
+ req_tech = list("programming" = 2, "engineering" = 2)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 800, MAT_GLASS = 200)
+ build_path = /obj/item/weapon/computer_hardware/hard_drive/advanced
+ category = list("Computer Parts")
+
+/datum/design/disk/super
+ name = "super hard drive"
+ id = "hdd_super"
+ req_tech = list("programming" = 3, "engineering" = 3)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 1600, MAT_GLASS = 400)
+ build_path = /obj/item/weapon/computer_hardware/hard_drive/super
+ category = list("Computer Parts")
+
+/datum/design/disk/cluster
+ name = "cluster hard drive"
+ id = "hdd_cluster"
+ req_tech = list("programming" = 4, "engineering" = 4)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 3200, MAT_GLASS = 800)
+ build_path = /obj/item/weapon/computer_hardware/hard_drive/cluster
+ category = list("Computer Parts")
+
+/datum/design/disk/small
+ name = "small hard drive"
+ id = "hdd_small"
+ req_tech = list("programming" = 2, "engineering" = 2)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 800, MAT_GLASS = 200)
+ build_path = /obj/item/weapon/computer_hardware/hard_drive/small
+ category = list("Computer Parts")
+
+/datum/design/disk/micro
+ name = "micro hard drive"
+ id = "hdd_micro"
+ req_tech = list("programming" = 1, "engineering" = 1)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 400, MAT_GLASS = 100)
+ build_path = /obj/item/weapon/computer_hardware/hard_drive/micro
+ category = list("Computer Parts")
+
+// Network cards
+/datum/design/netcard/basic
+ name = "basic network card"
+ id = "netcard_basic"
+ req_tech = list("programming" = 2, "engineering" = 1)
+ build_type = IMPRINTER
+ materials = list(MAT_METAL = 250, MAT_GLASS = 100)
+ reagents = list("sacid" = 20)
+ build_path = /obj/item/weapon/computer_hardware/network_card
+ category = list("Computer Parts")
+
+/datum/design/netcard/advanced
+ name = "advanced network card"
+ id = "netcard_advanced"
+ req_tech = list("programming" = 4, "engineering" = 2)
+ build_type = IMPRINTER
+ materials = list(MAT_METAL = 500, MAT_GLASS = 200)
+ reagents = list("sacid" = 20)
+ build_path = /obj/item/weapon/computer_hardware/network_card/advanced
+ category = list("Computer Parts")
+
+/datum/design/netcard/wired
+ name = "wired network card"
+ id = "netcard_wired"
+ req_tech = list("programming" = 5, "engineering" = 3)
+ build_type = IMPRINTER
+ materials = list(MAT_METAL = 2500, MAT_GLASS = 400)
+ reagents = list("sacid" = 20)
+ build_path = /obj/item/weapon/computer_hardware/network_card/wired
+ category = list("Computer Parts")
+
+// Data crystals (USB flash drives)
+/datum/design/portabledrive/basic
+ name = "basic data crystal"
+ id = "portadrive_basic"
+ req_tech = list("programming" = 1)
+ build_type = IMPRINTER
+ materials = list(MAT_GLASS = 800)
+ reagents = list("sacid" = 20)
+ build_path = /obj/item/weapon/computer_hardware/hard_drive/portable
+ category = list("Computer Parts")
+
+/datum/design/portabledrive/advanced
+ name = "advanced data crystal"
+ id = "portadrive_advanced"
+ req_tech = list("programming" = 2)
+ build_type = IMPRINTER
+ materials = list(MAT_GLASS = 1600)
+ reagents = list("sacid" = 20)
+ build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/advanced
+ category = list("Computer Parts")
+
+/datum/design/portabledrive/super
+ name = "super data crystal"
+ id = "portadrive_super"
+ req_tech = list("programming" = 4)
+ build_type = IMPRINTER
+ materials = list(MAT_GLASS = 3200)
+ reagents = list("sacid" = 20)
+ build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/super
+ category = list("Computer Parts")
+
+// Card slot
+/datum/design/cardslot
+ name = "RFID card slot"
+ id = "cardslot"
+ req_tech = list("programming" = 2)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 600)
+ build_path = /obj/item/weapon/computer_hardware/card_slot
+ category = list("Computer Parts")
+
+// Nano printer
+/datum/design/nanoprinter
+ name = "nano printer"
+ id = "nanoprinter"
+ req_tech = list("programming" = 2, "engineering" = 2)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 600)
+ build_path = /obj/item/weapon/computer_hardware/nano_printer
+ category = list("Computer Parts")
+
+// Tesla Link
+/datum/design/teslalink
+ name = "tesla link"
+ id = "teslalink"
+ req_tech = list("programming" = 2, "powerstorage" = 3, "engineering" = 2)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 2000)
+ build_path = /obj/item/weapon/computer_hardware/tesla_link
+ category = list("Computer Parts")
+
+// Batteries
+/datum/design/battery/normal
+ name = "standard battery module"
+ id = "bat_normal"
+ req_tech = list("powerstorage" = 1, "engineering" = 1)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 400)
+ build_path = /obj/item/weapon/computer_hardware/battery_module
+ category = list("Computer Parts")
+
+/datum/design/battery/advanced
+ name = "advanced battery module"
+ id = "bat_advanced"
+ req_tech = list("powerstorage" = 2, "engineering" = 2)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 800)
+ build_path = /obj/item/weapon/computer_hardware/battery_module/advanced
+ category = list("Computer Parts")
+
+/datum/design/battery/super
+ name = "super battery module"
+ id = "bat_super"
+ req_tech = list("powerstorage" = 3, "engineering" = 3)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 1600)
+ build_path = /obj/item/weapon/computer_hardware/battery_module/super
+ category = list("Computer Parts")
+
+/datum/design/battery/ultra
+ name = "ultra battery module"
+ id = "bat_ultra"
+ req_tech = list("powerstorage" = 5, "engineering" = 4)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 3200)
+ build_path = /obj/item/weapon/computer_hardware/battery_module/ultra
+ category = list("Computer Parts")
+
+/datum/design/battery/nano
+ name = "nano battery module"
+ id = "bat_nano"
+ req_tech = list("powerstorage" = 1, "engineering" = 1)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 200)
+ build_path = /obj/item/weapon/computer_hardware/battery_module/nano
+ category = list("Computer Parts")
+
+/datum/design/battery/micro
+ name = "micro battery module"
+ id = "bat_micro"
+ req_tech = list("powerstorage" = 2, "engineering" = 2)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 400)
+ build_path = /obj/item/weapon/computer_hardware/battery_module/micro
+ category = list("Computer Parts")
+
+// Processor unit
+/datum/design/cpu
+ name = "computer processor unit"
+ id = "cpu_normal"
+ req_tech = list("programming" = 3, "engineering" = 2)
+ build_type = IMPRINTER
+ materials = list(MAT_GLASS = 1600)
+ reagents = list("sacid" = 20)
+ build_path = /obj/item/weapon/computer_hardware/processor_unit
+ category = list("Computer Parts")
+
+/datum/design/cpu/small
+ name = "computer microprocessor unit"
+ id = "cpu_small"
+ req_tech = list("programming" = 2, "engineering" = 2)
+ build_type = IMPRINTER
+ materials = list(MAT_GLASS = 800)
+ reagents = list("sacid" = 20)
+ build_path = /obj/item/weapon/computer_hardware/processor_unit/small
+ category = list("Computer Parts")
+
+/datum/design/cpu/photonic
+ name = "computer photonic processor unit"
+ id = "pcpu_normal"
+ req_tech = list("programming" = 5, "engineering" = 4)
+ build_type = IMPRINTER
+ materials = list(MAT_GLASS= 6400, MAT_GOLD = 2000)
+ reagents = list("sacid" = 40)
+ build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic
+ category = list("Computer Parts")
+
+/datum/design/cpu/photonic/small
+ name = "computer photonic microprocessor unit"
+ id = "pcpu_small"
+ req_tech = list("programming" = 4, "engineering" = 3)
+ build_type = IMPRINTER
+ materials = list(MAT_GLASS = 3200, MAT_GOLD = 1000)
+ reagents = list("sacid" = 20)
+ build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic/small
+ category = list("Computer Parts")
\ No newline at end of file
diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm
index 3ed57ca5fea..3b510ae40ba 100644
--- a/code/modules/research/designs/machine_designs.dm
+++ b/code/modules/research/designs/machine_designs.dm
@@ -386,3 +386,11 @@
req_tech = list("programming" = 4, "biotech" = 3)
build_path = /obj/item/weapon/circuitboard/machine/plantgenes
category = list ("Misc. Machinery")
+
+/datum/design/board/ntnet_relay
+ name = "Machine Design (NTNet Relay Board)"
+ desc = "The circuit board for a wireless network relay."
+ id = "ntnet_relay"
+ req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 2)
+ build_path = /obj/item/weapon/circuitboard/machine/ntnet_relay
+ category = list("Subspace Telecomms")
\ No newline at end of file
diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm
index 6a02b6b0f3b..1b526830d0c 100644
--- a/code/modules/research/protolathe.dm
+++ b/code/modules/research/protolathe.dm
@@ -26,7 +26,8 @@ Note: Must be placed west/left of and R&D console to function.
"Electronics",
"Weapons",
"Ammo",
- "Firing Pins"
+ "Firing Pins",
+ "Computer Parts"
)
diff --git a/icons/obj/modular_components.dmi b/icons/obj/modular_components.dmi
new file mode 100644
index 00000000000..3594a12c17f
Binary files /dev/null and b/icons/obj/modular_components.dmi differ
diff --git a/icons/obj/modular_console.dmi b/icons/obj/modular_console.dmi
new file mode 100644
index 00000000000..a157462f57a
Binary files /dev/null and b/icons/obj/modular_console.dmi differ
diff --git a/icons/obj/modular_laptop.dmi b/icons/obj/modular_laptop.dmi
new file mode 100644
index 00000000000..b3e0cb53648
Binary files /dev/null and b/icons/obj/modular_laptop.dmi differ
diff --git a/icons/obj/modular_tablet.dmi b/icons/obj/modular_tablet.dmi
new file mode 100644
index 00000000000..1872315f49f
Binary files /dev/null and b/icons/obj/modular_tablet.dmi differ
diff --git a/icons/program_icons/alarm_green.gif b/icons/program_icons/alarm_green.gif
new file mode 100644
index 00000000000..7c2570c8ce3
Binary files /dev/null and b/icons/program_icons/alarm_green.gif differ
diff --git a/icons/program_icons/alarm_red.gif b/icons/program_icons/alarm_red.gif
new file mode 100644
index 00000000000..327d58e4db8
Binary files /dev/null and b/icons/program_icons/alarm_red.gif differ
diff --git a/icons/program_icons/batt_100.gif b/icons/program_icons/batt_100.gif
new file mode 100644
index 00000000000..ccdbd4333e9
Binary files /dev/null and b/icons/program_icons/batt_100.gif differ
diff --git a/icons/program_icons/batt_20.gif b/icons/program_icons/batt_20.gif
new file mode 100644
index 00000000000..1d5e38fc888
Binary files /dev/null and b/icons/program_icons/batt_20.gif differ
diff --git a/icons/program_icons/batt_40.gif b/icons/program_icons/batt_40.gif
new file mode 100644
index 00000000000..d5cedb99675
Binary files /dev/null and b/icons/program_icons/batt_40.gif differ
diff --git a/icons/program_icons/batt_5.gif b/icons/program_icons/batt_5.gif
new file mode 100644
index 00000000000..ceac8f3a945
Binary files /dev/null and b/icons/program_icons/batt_5.gif differ
diff --git a/icons/program_icons/batt_60.gif b/icons/program_icons/batt_60.gif
new file mode 100644
index 00000000000..d39534c8cb0
Binary files /dev/null and b/icons/program_icons/batt_60.gif differ
diff --git a/icons/program_icons/batt_80.gif b/icons/program_icons/batt_80.gif
new file mode 100644
index 00000000000..9c299773f01
Binary files /dev/null and b/icons/program_icons/batt_80.gif differ
diff --git a/icons/program_icons/charging.gif b/icons/program_icons/charging.gif
new file mode 100644
index 00000000000..cf19ca72876
Binary files /dev/null and b/icons/program_icons/charging.gif differ
diff --git a/icons/program_icons/downloader_finished.gif b/icons/program_icons/downloader_finished.gif
new file mode 100644
index 00000000000..f01b7c42af8
Binary files /dev/null and b/icons/program_icons/downloader_finished.gif differ
diff --git a/icons/program_icons/downloader_running.gif b/icons/program_icons/downloader_running.gif
new file mode 100644
index 00000000000..68fb977c86d
Binary files /dev/null and b/icons/program_icons/downloader_running.gif differ
diff --git a/icons/program_icons/ntnrc_idle.gif b/icons/program_icons/ntnrc_idle.gif
new file mode 100644
index 00000000000..d47c01d5800
Binary files /dev/null and b/icons/program_icons/ntnrc_idle.gif differ
diff --git a/icons/program_icons/ntnrc_new.gif b/icons/program_icons/ntnrc_new.gif
new file mode 100644
index 00000000000..af72a8b332f
Binary files /dev/null and b/icons/program_icons/ntnrc_new.gif differ
diff --git a/icons/program_icons/power_norm.gif b/icons/program_icons/power_norm.gif
new file mode 100644
index 00000000000..2b8d60edfa5
Binary files /dev/null and b/icons/program_icons/power_norm.gif differ
diff --git a/icons/program_icons/power_warn.gif b/icons/program_icons/power_warn.gif
new file mode 100644
index 00000000000..0c85b3a85a1
Binary files /dev/null and b/icons/program_icons/power_warn.gif differ
diff --git a/icons/program_icons/sig_high.gif b/icons/program_icons/sig_high.gif
new file mode 100644
index 00000000000..efb20f67306
Binary files /dev/null and b/icons/program_icons/sig_high.gif differ
diff --git a/icons/program_icons/sig_lan.gif b/icons/program_icons/sig_lan.gif
new file mode 100644
index 00000000000..07ba929f7f3
Binary files /dev/null and b/icons/program_icons/sig_lan.gif differ
diff --git a/icons/program_icons/sig_low.gif b/icons/program_icons/sig_low.gif
new file mode 100644
index 00000000000..08f98baea8e
Binary files /dev/null and b/icons/program_icons/sig_low.gif differ
diff --git a/icons/program_icons/sig_none.gif b/icons/program_icons/sig_none.gif
new file mode 100644
index 00000000000..79840d8a2bd
Binary files /dev/null and b/icons/program_icons/sig_none.gif differ
diff --git a/tgstation.dme b/tgstation.dme
index b243a94e793..27f90292ede 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1519,6 +1519,41 @@
#include "code\modules\mob\new_player\poll.dm"
#include "code\modules\mob\new_player\preferences_setup.dm"
#include "code\modules\mob\new_player\sprite_accessories.dm"
+#include "code\modules\modular_computers\computers\item\modular_computer.dm"
+#include "code\modules\modular_computers\computers\item\processor.dm"
+#include "code\modules\modular_computers\computers\item\tablet.dm"
+#include "code\modules\modular_computers\computers\item\tablet_presets.dm"
+#include "code\modules\modular_computers\computers\machinery\console_presets.dm"
+#include "code\modules\modular_computers\computers\machinery\modular_computer.dm"
+#include "code\modules\modular_computers\computers\machinery\modular_console.dm"
+#include "code\modules\modular_computers\computers\machinery\modular_laptop.dm"
+#include "code\modules\modular_computers\file_system\computer_file.dm"
+#include "code\modules\modular_computers\file_system\data.dm"
+#include "code\modules\modular_computers\file_system\program.dm"
+#include "code\modules\modular_computers\file_system\program_events.dm"
+#include "code\modules\modular_computers\file_system\programs\alarm.dm"
+#include "code\modules\modular_computers\file_system\programs\card.dm"
+#include "code\modules\modular_computers\file_system\programs\configurator.dm"
+#include "code\modules\modular_computers\file_system\programs\file_browser.dm"
+#include "code\modules\modular_computers\file_system\programs\ntdownloader.dm"
+#include "code\modules\modular_computers\file_system\programs\ntmonitor.dm"
+#include "code\modules\modular_computers\file_system\programs\ntnrc_client.dm"
+#include "code\modules\modular_computers\file_system\programs\nttransfer.dm"
+#include "code\modules\modular_computers\file_system\programs\powermonitor.dm"
+#include "code\modules\modular_computers\file_system\programs\antagonist\dos.dm"
+#include "code\modules\modular_computers\file_system\programs\antagonist\revelation.dm"
+#include "code\modules\modular_computers\hardware\battery_module.dm"
+#include "code\modules\modular_computers\hardware\card_slot.dm"
+#include "code\modules\modular_computers\hardware\hard_drive.dm"
+#include "code\modules\modular_computers\hardware\hardware.dm"
+#include "code\modules\modular_computers\hardware\nano_printer.dm"
+#include "code\modules\modular_computers\hardware\network_card.dm"
+#include "code\modules\modular_computers\hardware\portable_hard_drive.dm"
+#include "code\modules\modular_computers\hardware\processor_unit.dm"
+#include "code\modules\modular_computers\hardware\tesla_link.dm"
+#include "code\modules\modular_computers\NTNet\NTNet.dm"
+#include "code\modules\modular_computers\NTNet\NTNet_relay.dm"
+#include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm"
#include "code\modules\ninja\__ninjaDefines.dm"
#include "code\modules\ninja\admin_ninja_verbs.dm"
#include "code\modules\ninja\energy_katana.dm"
@@ -1704,6 +1739,7 @@
#include "code\modules\research\designs\autolathe_designs.dm"
#include "code\modules\research\designs\biogenerator_designs.dm"
#include "code\modules\research\designs\comp_board_designs.dm"
+#include "code\modules\research\designs\computer_part_designs.dm"
#include "code\modules\research\designs\machine_designs.dm"
#include "code\modules\research\designs\mecha_designs.dm"
#include "code\modules\research\designs\mechfabricator_designs.dm"
diff --git a/tgui/assets/tgui.css b/tgui/assets/tgui.css
index 6156a956a45..38c1495d003 100644
--- a/tgui/assets/tgui.css
+++ b/tgui/assets/tgui.css
@@ -1 +1 @@
-@charset "utf-8";body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgNDI1IDIwMCIgb3BhY2l0eT0iLjMzIj4NCiAgPHBhdGggZD0ibSAxNzguMDAzOTksMC4wMzg2OSAtNzEuMjAzOTMsMCBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTYuNzYxMzQsNi4wMjU1NSBsIDAsMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM0LDYuMDI1NTQgbCA1My4xMDcyLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xMDEuNTQ0MDE4IDcyLjIxNjI4LDEwNC42OTkzOTggYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDUuNzYwMTUsMi44NzAxNiBsIDczLjU1NDg3LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xODcuODcxNDcgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM1LC02LjAyNTU1IGwgLTU0LjcxNjQ0LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTMzLDYuMDI1NTUgbCAwLDEwMi42MTkzNSBMIDE4My43NjQxMywyLjkwODg2IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNS43NjAxNCwtMi44NzAxNyB6IiAvPg0KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPg0KICA8cGF0aCBkPSJtIDQyMC4xNTUzNSwxNzcuODkxMTkgYSAxMy40MTIwMzgsMTIuNTAxODQyIDAgMCAxIC04LjYzMjk1LDIyLjA2OTUxIGwgLTY2LjExODMyLDAgYSA1LjM2NDgxNTIsNS4wMDA3MzcgMCAwIDEgLTUuMzY0ODIsLTUuMDAwNzQgbCAwLC03OS44NzkzMSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input::-webkit-input-placeholder{color:#999}body.nanotrasen input::-moz-placeholder{color:#999}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(even){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgMjAwIDI4OS43NDIiIG9wYWNpdHk9Ii4zMyI+DQogIDxwYXRoIGQ9Im0gOTMuNTM3Njc3LDAgYyAtMTguMTEzMTI1LDAgLTM0LjIyMDEzMywzLjExMTY0IC00OC4zMjM0ODQsOS4zMzQzNyAtMTMuOTY1MDkyLDYuMjIxNjcgLTI0LjYxMjQ0MiwxNS4wNzExNCAtMzEuOTQwNjUxLDI2LjU0NzEgLTcuMTg5OTM5OCwxMS4zMzc4OSAtMTAuMzAxMjI2NiwyNC43NDkxMSAtMTAuMzAxMjI2Niw0MC4yMzQ3OCAwLDEwLjY0NjYyIDIuNzI1MDAyNiwyMC40NjQ2NSA4LjE3NTExMTYsMjkuNDUyNTggNS42MTUyNzcsOC45ODY4NiAxNC4wMzgyNzcsMTcuMzUyMDQgMjUuMjY4ODIxLDI1LjA5NDM2IDExLjIzMDU0NCw3LjYwNTMxIDI2LjUwNzQyMSwxNS40MTgzNSA0NS44MzA1MTQsMjMuNDM3ODIgMTkuOTgzNzQ4LDguMjk1NTcgMzQuODQ4ODQ4LDE1LjU1NDcxIDQ0LjU5Mjk5OCwyMS43NzYzOCA5Ljc0NDE0LDYuMjIyNzMgMTYuNzYxNywxMi44NTg1IDIxLjA1NTcyLDE5LjkwOTUxIDQuMjk0MDQsNy4wNTIwOCA2LjQ0MTkzLDE1Ljc2NDA4IDYuNDQxOTMsMjYuMTM0NTkgMCwxNi4xNzcwMiAtNS4yMDE5NiwyOC40ODIyMiAtMTUuNjA2NzMsMzYuOTE2ODIgLTEwLjIzOTYsOC40MzQ3IC0yNS4wMjIwMywxMi42NTIzIC00NC4zNDUxNjksMTIuNjUyMyAtMTQuMDM4MTcxLDAgLTI1LjUxNTI0NywtMS42NTk0IC0zNC40MzM2MTgsLTQuOTc3NyAtOC45MTgzNywtMy40NTY2IC0xNi4xODU1NzIsLTguNzExMyAtMjEuODAwODM5LC0xNS43NjMzIC01LjYxNTI3NywtNy4wNTIxIC0xMC4wNzQ3OTUsLTE2LjY2MDg4IC0xMy4zNzc4OTksLTI4LjgyODEyIGwgLTI0Ljc3MzE2MjYyOTM5NDUsMCAwLDU2LjgyNjMyIEMgMzMuODU2NzY5LDI4Ni4wNzYwMSA2My43NDkwNCwyODkuNzQyMDEgODkuNjc4MzgzLDI4OS43NDIwMSBjIDE2LjAyMDAyNywwIDMwLjcxOTc4NywtMS4zODI3IDQ0LjA5NzMzNywtNC4xNDc5IDEzLjU0MjcyLC0yLjkwNDMgMjUuMTA0MSwtNy40Njc2IDM0LjY4MzA5LC0xMy42ODkzIDkuNzQ0MTMsLTYuMzU5NyAxNy4zNDA0MiwtMTQuNTE5NSAyMi43OTA1MiwtMjQuNDc0OCA1LjQ1MDEsLTEwLjA5MzMyIDguMTc1MTEsLTIyLjM5OTU5IDguMTc1MTEsLTM2LjkxNjgyIDAsLTEyLjk5NzY0IC0zLjMwMjEsLTI0LjMzNTM5IC05LjkwODI5LC0zNC4wMTQ2IC02LjQ0MTA1LC05LjgxNzI1IC0xNS41MjU0NSwtMTguNTI3MDcgLTI3LjI1MTQ2LC0yNi4xMzEzMyAtMTEuNTYwODUsLTcuNjA0MjcgLTI3LjkxMDgzLC0xNS44MzE0MiAtNDkuMDUwNjYsLTI0LjY4MDIyIC0xNy41MDY0NCwtNy4xOTAxMiAtMzAuNzE5NjY4LC0xMy42ODk0OCAtMzkuNjM4MDM4LC0xOS40OTcwMSAtOC45MTgzNzEsLTUuODA3NTIgLTE4LjYwNzQ3NCwtMTIuNDM0MDkgLTI0LjA5NjUyNCwtMTguODc0MTcgLTUuNDI2MDQzLC02LjM2NjE2IC05LjY1ODgyNiwtMTUuMDcwMDMgLTkuNjU4ODI2LC0yNC44ODcyOSAwLC05LjI2NDAxIDIuMDc1NDE0LC0xNy4yMTM0NSA2LjIyMzQ1NCwtMjMuODUwMzMgMTEuMDk4Mjk4LC0xNC4zOTc0OCA0MS4yODY2MzgsLTEuNzk1MDcgNDUuMDc1NjA5LDI0LjM0NzYyIDQuODM5MzkyLDYuNzc0OTEgOC44NDkzNSwxNi4yNDcyOSAxMi4wMjk1MTUsMjguNDE1NiBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNC40NzgyNSwtNS45MjQ0OCAtOS45NTQ4OCwtMTAuNjMyMjIgLTE1LjkwODM3LC0xNC4zNzQxMSAxLjY0MDU1LDAuNDc5MDUgMy4xOTAzOSwxLjAyMzc2IDQuNjM4NjUsMS42NDAyNCA2LjQ5ODYxLDIuNjI2MDcgMTIuMTY3OTMsNy4zMjc0NyAxNy4wMDczLDE0LjEwMzQ1IDQuODM5MzksNi43NzQ5MSA4Ljg0OTM1LDE2LjI0NTY3IDEyLjAyOTUyLDI4LjQxMzk3IDAsMCA4LjQ4MTI4LC0wLjEyODk0IDguNDg5NzgsLTAuMDAyIDAuNDE3NzYsNi40MTQ5NCAtMS43NTMzOSw5LjQ1Mjg2IC00LjEyMzQyLDEyLjU2MTA0IC0yLjQxNzQsMy4xNjk3OCAtNS4xNDQ4Niw2Ljc4OTczIC00LjAwMjc4LDEzLjAwMjkgMS41MDc4Niw4LjIwMzE4IDEwLjE4MzU0LDEwLjU5NjQyIDE0LjYyMTk0LDkuMzExNTQgLTMuMzE4NDIsLTAuNDk5MTEgLTUuMzE4NTUsLTEuNzQ5NDggLTUuMzE4NTUsLTEuNzQ5NDggMCwwIDEuODc2NDYsMC45OTg2OCA1LjY1MTE3LC0xLjM1OTgxIC0zLjI3Njk1LDAuOTU1NzEgLTEwLjcwNTI5LC0wLjc5NzM4IC0xMS44MDEyNSwtNi43NjMxMyAtMC45NTc1MiwtNS4yMDg2MSAwLjk0NjU0LC03LjI5NTE0IDMuNDAxMTMsLTEwLjUxNDgyIDIuNDU0NjIsLTMuMjE5NjggNS4yODQyNiwtNi45NTgzMSA0LjY4NDMsLTE0LjQ4ODI0IGwgMC4wMDMsMC4wMDIgOC45MjY3NiwwIDAsLTU1Ljk5OTY3IGMgLTE1LjA3MTI1LC0zLjg3MTY4IC0yNy42NTMxNCwtNi4zNjA0MiAtMzcuNzQ2NzEsLTcuNDY1ODYgLTkuOTU1MzEsLTEuMTA3NTUgLTIwLjE4ODIzLC0xLjY1OTgxIC0zMC42OTY2MTMsLTEuNjU5ODEgeiBtIDcwLjMyMTYwMywxNy4zMDg5MyAwLjIzODA1LDQwLjMwNDkgYyAxLjMxODA4LDEuMjI2NjYgMi40Mzk2NSwyLjI3ODE1IDMuMzQwODEsMy4xMDYwMiA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNCwxNi4yNDU2NiAxMi4wMjk1MSwyOC40MTM5NyBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNi42NzczMSwtNC41OTM4MSAtMTkuODM2NDMsLTEwLjQ3MzA5IC0zNi4xNDA3MSwtMTUuODI1MjIgeiBtIC0yOC4xMjA0OSw1LjYwNTUxIDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzcsLTYuNDY2OTcgLTEzLjg0Njc4LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDUsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gMTUuMjIxOTUsMjQuMDA4NDggOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzOCwtNi40NjY5NyAtMTMuODQ2NzksLTkuNzE3MjYgLTguNTY0NzksLTE3LjcxNjU1IHogbSAyMi43OTcwNCwwIGMgMi43NzE1LDcuOTk5MjkgMS43ODc0MSwxMS4yNDk1OCAtNC40OTM1NCwxNy43MTY1NSBsIDQuNDkzNTQsLTE3LjcxNjU1IHogbSAtOTkuMTEzODQsMi4yMDc2NCA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM4MiwtNi40NjY5NyAtMTMuODQ2NzgyLC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk1NDIsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff750000',endColorstr='#ff340404',GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input::-webkit-input-placeholder{color:#999}body.syndicate input::-moz-placeholder{color:#999}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(even){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px}.no-icons header.titlebar .statusicon{font-size:20px}.no-icons header.titlebar .statusicon:after{content:"O"}.no-icons header.titlebar .minimize{top:-2px;font-size:20px}.no-icons header.titlebar .minimize:after{content:"—"}.no-icons header.titlebar .close{font-size:20px}.no-icons header.titlebar .close:after{content:"X"}
\ No newline at end of file
+@charset "utf-8";body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgNDI1IDIwMCIgb3BhY2l0eT0iLjMzIj4NCiAgPHBhdGggZD0ibSAxNzguMDAzOTksMC4wMzg2OSAtNzEuMjAzOTMsMCBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTYuNzYxMzQsNi4wMjU1NSBsIDAsMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM0LDYuMDI1NTQgbCA1My4xMDcyLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xMDEuNTQ0MDE4IDcyLjIxNjI4LDEwNC42OTkzOTggYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDUuNzYwMTUsMi44NzAxNiBsIDczLjU1NDg3LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xODcuODcxNDcgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM1LC02LjAyNTU1IGwgLTU0LjcxNjQ0LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTMzLDYuMDI1NTUgbCAwLDEwMi42MTkzNSBMIDE4My43NjQxMywyLjkwODg2IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNS43NjAxNCwtMi44NzAxNyB6IiAvPg0KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPg0KICA8cGF0aCBkPSJtIDQyMC4xNTUzNSwxNzcuODkxMTkgYSAxMy40MTIwMzgsMTIuNTAxODQyIDAgMCAxIC04LjYzMjk1LDIyLjA2OTUxIGwgLTY2LjExODMyLDAgYSA1LjM2NDgxNTIsNS4wMDA3MzcgMCAwIDEgLTUuMzY0ODIsLTUuMDAwNzQgbCAwLC03OS44NzkzMSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.toggle{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.toggle.active:focus,body.nanotrasen span.button.toggle.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input::-webkit-input-placeholder{color:#999}body.nanotrasen input::-moz-placeholder{color:#999}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(even){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgMjAwIDI4OS43NDIiIG9wYWNpdHk9Ii4zMyI+DQogIDxwYXRoIGQ9Im0gOTMuNTM3Njc3LDAgYyAtMTguMTEzMTI1LDAgLTM0LjIyMDEzMywzLjExMTY0IC00OC4zMjM0ODQsOS4zMzQzNyAtMTMuOTY1MDkyLDYuMjIxNjcgLTI0LjYxMjQ0MiwxNS4wNzExNCAtMzEuOTQwNjUxLDI2LjU0NzEgLTcuMTg5OTM5OCwxMS4zMzc4OSAtMTAuMzAxMjI2NiwyNC43NDkxMSAtMTAuMzAxMjI2Niw0MC4yMzQ3OCAwLDEwLjY0NjYyIDIuNzI1MDAyNiwyMC40NjQ2NSA4LjE3NTExMTYsMjkuNDUyNTggNS42MTUyNzcsOC45ODY4NiAxNC4wMzgyNzcsMTcuMzUyMDQgMjUuMjY4ODIxLDI1LjA5NDM2IDExLjIzMDU0NCw3LjYwNTMxIDI2LjUwNzQyMSwxNS40MTgzNSA0NS44MzA1MTQsMjMuNDM3ODIgMTkuOTgzNzQ4LDguMjk1NTcgMzQuODQ4ODQ4LDE1LjU1NDcxIDQ0LjU5Mjk5OCwyMS43NzYzOCA5Ljc0NDE0LDYuMjIyNzMgMTYuNzYxNywxMi44NTg1IDIxLjA1NTcyLDE5LjkwOTUxIDQuMjk0MDQsNy4wNTIwOCA2LjQ0MTkzLDE1Ljc2NDA4IDYuNDQxOTMsMjYuMTM0NTkgMCwxNi4xNzcwMiAtNS4yMDE5NiwyOC40ODIyMiAtMTUuNjA2NzMsMzYuOTE2ODIgLTEwLjIzOTYsOC40MzQ3IC0yNS4wMjIwMywxMi42NTIzIC00NC4zNDUxNjksMTIuNjUyMyAtMTQuMDM4MTcxLDAgLTI1LjUxNTI0NywtMS42NTk0IC0zNC40MzM2MTgsLTQuOTc3NyAtOC45MTgzNywtMy40NTY2IC0xNi4xODU1NzIsLTguNzExMyAtMjEuODAwODM5LC0xNS43NjMzIC01LjYxNTI3NywtNy4wNTIxIC0xMC4wNzQ3OTUsLTE2LjY2MDg4IC0xMy4zNzc4OTksLTI4LjgyODEyIGwgLTI0Ljc3MzE2MjYyOTM5NDUsMCAwLDU2LjgyNjMyIEMgMzMuODU2NzY5LDI4Ni4wNzYwMSA2My43NDkwNCwyODkuNzQyMDEgODkuNjc4MzgzLDI4OS43NDIwMSBjIDE2LjAyMDAyNywwIDMwLjcxOTc4NywtMS4zODI3IDQ0LjA5NzMzNywtNC4xNDc5IDEzLjU0MjcyLC0yLjkwNDMgMjUuMTA0MSwtNy40Njc2IDM0LjY4MzA5LC0xMy42ODkzIDkuNzQ0MTMsLTYuMzU5NyAxNy4zNDA0MiwtMTQuNTE5NSAyMi43OTA1MiwtMjQuNDc0OCA1LjQ1MDEsLTEwLjA5MzMyIDguMTc1MTEsLTIyLjM5OTU5IDguMTc1MTEsLTM2LjkxNjgyIDAsLTEyLjk5NzY0IC0zLjMwMjEsLTI0LjMzNTM5IC05LjkwODI5LC0zNC4wMTQ2IC02LjQ0MTA1LC05LjgxNzI1IC0xNS41MjU0NSwtMTguNTI3MDcgLTI3LjI1MTQ2LC0yNi4xMzEzMyAtMTEuNTYwODUsLTcuNjA0MjcgLTI3LjkxMDgzLC0xNS44MzE0MiAtNDkuMDUwNjYsLTI0LjY4MDIyIC0xNy41MDY0NCwtNy4xOTAxMiAtMzAuNzE5NjY4LC0xMy42ODk0OCAtMzkuNjM4MDM4LC0xOS40OTcwMSAtOC45MTgzNzEsLTUuODA3NTIgLTE4LjYwNzQ3NCwtMTIuNDM0MDkgLTI0LjA5NjUyNCwtMTguODc0MTcgLTUuNDI2MDQzLC02LjM2NjE2IC05LjY1ODgyNiwtMTUuMDcwMDMgLTkuNjU4ODI2LC0yNC44ODcyOSAwLC05LjI2NDAxIDIuMDc1NDE0LC0xNy4yMTM0NSA2LjIyMzQ1NCwtMjMuODUwMzMgMTEuMDk4Mjk4LC0xNC4zOTc0OCA0MS4yODY2MzgsLTEuNzk1MDcgNDUuMDc1NjA5LDI0LjM0NzYyIDQuODM5MzkyLDYuNzc0OTEgOC44NDkzNSwxNi4yNDcyOSAxMi4wMjk1MTUsMjguNDE1NiBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNC40NzgyNSwtNS45MjQ0OCAtOS45NTQ4OCwtMTAuNjMyMjIgLTE1LjkwODM3LC0xNC4zNzQxMSAxLjY0MDU1LDAuNDc5MDUgMy4xOTAzOSwxLjAyMzc2IDQuNjM4NjUsMS42NDAyNCA2LjQ5ODYxLDIuNjI2MDcgMTIuMTY3OTMsNy4zMjc0NyAxNy4wMDczLDE0LjEwMzQ1IDQuODM5MzksNi43NzQ5MSA4Ljg0OTM1LDE2LjI0NTY3IDEyLjAyOTUyLDI4LjQxMzk3IDAsMCA4LjQ4MTI4LC0wLjEyODk0IDguNDg5NzgsLTAuMDAyIDAuNDE3NzYsNi40MTQ5NCAtMS43NTMzOSw5LjQ1Mjg2IC00LjEyMzQyLDEyLjU2MTA0IC0yLjQxNzQsMy4xNjk3OCAtNS4xNDQ4Niw2Ljc4OTczIC00LjAwMjc4LDEzLjAwMjkgMS41MDc4Niw4LjIwMzE4IDEwLjE4MzU0LDEwLjU5NjQyIDE0LjYyMTk0LDkuMzExNTQgLTMuMzE4NDIsLTAuNDk5MTEgLTUuMzE4NTUsLTEuNzQ5NDggLTUuMzE4NTUsLTEuNzQ5NDggMCwwIDEuODc2NDYsMC45OTg2OCA1LjY1MTE3LC0xLjM1OTgxIC0zLjI3Njk1LDAuOTU1NzEgLTEwLjcwNTI5LC0wLjc5NzM4IC0xMS44MDEyNSwtNi43NjMxMyAtMC45NTc1MiwtNS4yMDg2MSAwLjk0NjU0LC03LjI5NTE0IDMuNDAxMTMsLTEwLjUxNDgyIDIuNDU0NjIsLTMuMjE5NjggNS4yODQyNiwtNi45NTgzMSA0LjY4NDMsLTE0LjQ4ODI0IGwgMC4wMDMsMC4wMDIgOC45MjY3NiwwIDAsLTU1Ljk5OTY3IGMgLTE1LjA3MTI1LC0zLjg3MTY4IC0yNy42NTMxNCwtNi4zNjA0MiAtMzcuNzQ2NzEsLTcuNDY1ODYgLTkuOTU1MzEsLTEuMTA3NTUgLTIwLjE4ODIzLC0xLjY1OTgxIC0zMC42OTY2MTMsLTEuNjU5ODEgeiBtIDcwLjMyMTYwMywxNy4zMDg5MyAwLjIzODA1LDQwLjMwNDkgYyAxLjMxODA4LDEuMjI2NjYgMi40Mzk2NSwyLjI3ODE1IDMuMzQwODEsMy4xMDYwMiA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNCwxNi4yNDU2NiAxMi4wMjk1MSwyOC40MTM5NyBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNi42NzczMSwtNC41OTM4MSAtMTkuODM2NDMsLTEwLjQ3MzA5IC0zNi4xNDA3MSwtMTUuODI1MjIgeiBtIC0yOC4xMjA0OSw1LjYwNTUxIDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzcsLTYuNDY2OTcgLTEzLjg0Njc4LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDUsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gMTUuMjIxOTUsMjQuMDA4NDggOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzOCwtNi40NjY5NyAtMTMuODQ2NzksLTkuNzE3MjYgLTguNTY0NzksLTE3LjcxNjU1IHogbSAyMi43OTcwNCwwIGMgMi43NzE1LDcuOTk5MjkgMS43ODc0MSwxMS4yNDk1OCAtNC40OTM1NCwxNy43MTY1NSBsIDQuNDkzNTQsLTE3LjcxNjU1IHogbSAtOTkuMTEzODQsMi4yMDc2NCA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM4MiwtNi40NjY5NyAtMTMuODQ2NzgyLC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk1NDIsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff750000',endColorstr='#ff340404',GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;min-height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.toggle{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.toggle.active:focus,body.syndicate span.button.toggle.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input::-webkit-input-placeholder{color:#999}body.syndicate input::-moz-placeholder{color:#999}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(even){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px}.no-icons header.titlebar .statusicon{font-size:20px}.no-icons header.titlebar .statusicon:after{content:"O"}.no-icons header.titlebar .minimize{top:-2px;font-size:20px}.no-icons header.titlebar .minimize:after{content:"—"}.no-icons header.titlebar .close{font-size:20px}.no-icons header.titlebar .close:after{content:"X"}
\ No newline at end of file
diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js
index cb9ce9a5be8..cf1467ea3e4 100644
--- a/tgui/assets/tgui.js
+++ b/tgui/assets/tgui.js
@@ -1,13 +1,15 @@
-require=function t(e,n,r){function a(o,s){if(!n[o]){if(!e[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(i)return i(o,!0);var c=Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var p=n[o]={exports:{}};e[o][0].call(p.exports,function(t){var n=e[o][1][t];return a(n?n:t)},p,p.exports,t,e,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o2?c[2]:void 0,l=Math.min((void 0===p?o:a(p,o))-u,o-s),f=1;for(s>u&&u+l>s&&(f=-1,u+=l-1,s+=l-1);l-- >0;)u in n?n[s]=n[u]:delete n[s],s+=f,u+=f;return n}},{76:76,79:79,80:80}],6:[function(t,e,n){"use strict";var r=t(80),a=t(76),i=t(79);e.exports=[].fill||function(t){for(var e=r(this),n=i(e.length),o=arguments,s=o.length,u=a(s>1?o[1]:void 0,n),c=s>2?o[2]:void 0,p=void 0===c?n:a(c,n);p>u;)e[u++]=t;return e}},{76:76,79:79,80:80}],7:[function(t,e,n){var r=t(78),a=t(79),i=t(76);e.exports=function(t){return function(e,n,o){var s,u=r(e),c=a(u.length),p=i(o,c);if(t&&n!=n){for(;c>p;)if(s=u[p++],s!=s)return!0}else for(;c>p;p++)if((t||p in u)&&u[p]===n)return t||p;return!t&&-1}}},{76:76,78:78,79:79}],8:[function(t,e,n){var r=t(17),a=t(34),i=t(80),o=t(79),s=t(9);e.exports=function(t){var e=1==t,n=2==t,u=3==t,c=4==t,p=6==t,l=5==t||p;return function(f,d,h){for(var m,v,g=i(f),b=a(g),y=r(d,h,3),x=o(b.length),_=0,w=e?s(f,x):n?s(f,0):void 0;x>_;_++)if((l||_ in b)&&(m=b[_],v=y(m,_,g),t))if(e)w[_]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return _;case 2:w.push(m)}else if(c)return!1;return p?-1:u||c?c:w}}},{17:17,34:34,79:79,80:80,9:9}],9:[function(t,e,n){var r=t(38),a=t(36),i=t(83)("species");e.exports=function(t,e){var n;return a(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!a(n.prototype)||(n=void 0),r(n)&&(n=n[i],null===n&&(n=void 0))),new(void 0===n?Array:n)(e)}},{36:36,38:38,83:83}],10:[function(t,e,n){var r=t(11),a=t(83)("toStringTag"),i="Arguments"==r(function(){return arguments}());e.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=(e=Object(t))[a])?n:i?r(e):"Object"==(o=r(e))&&"function"==typeof e.callee?"Arguments":o}},{11:11,83:83}],11:[function(t,e,n){var r={}.toString;e.exports=function(t){return r.call(t).slice(8,-1)}},{}],12:[function(t,e,n){"use strict";var r=t(46),a=t(31),i=t(60),o=t(17),s=t(69),u=t(18),c=t(27),p=t(42),l=t(44),f=t(82)("id"),d=t(30),h=t(38),m=t(65),v=t(19),g=Object.isExtensible||h,b=v?"_s":"size",y=0,x=function(t,e){if(!h(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!d(t,f)){if(!g(t))return"F";if(!e)return"E";a(t,f,++y)}return"O"+t[f]},_=function(t,e){var n,r=x(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};e.exports={getConstructor:function(t,e,n,a){var p=t(function(t,i){s(t,p,e),t._i=r.create(null),t._f=void 0,t._l=void 0,t[b]=0,void 0!=i&&c(i,n,t[a],t)});return i(p.prototype,{clear:function(){for(var t=this,e=t._i,n=t._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete e[n.i];t._f=t._l=void 0,t[b]=0},"delete":function(t){var e=this,n=_(e,t);if(n){var r=n.n,a=n.p;delete e._i[n.i],n.r=!0,a&&(a.n=r),r&&(r.p=a),e._f==n&&(e._f=r),e._l==n&&(e._l=a),e[b]--}return!!n},forEach:function(t){for(var e,n=o(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(n(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!_(this,t)}}),v&&r.setDesc(p.prototype,"size",{get:function(){return u(this[b])}}),p},def:function(t,e,n){var r,a,i=_(t,e);return i?i.v=n:(t._l=i={i:a=x(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=i),r&&(r.n=i),t[b]++,"F"!==a&&(t._i[a]=i)),t},getEntry:_,setStrong:function(t,e,n){p(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?l(0,n.k):"values"==e?l(0,n.v):l(0,[n.k,n.v]):(t._t=void 0,l(1))},n?"entries":"values",!n,!0),m(e)}}},{17:17,18:18,19:19,27:27,30:30,31:31,38:38,42:42,44:44,46:46,60:60,65:65,69:69,82:82}],13:[function(t,e,n){var r=t(27),a=t(10);e.exports=function(t){return function(){if(a(this)!=t)throw TypeError(t+"#toJSON isn't generic");var e=[];return r(this,!1,e.push,e),e}}},{10:10,27:27}],14:[function(t,e,n){"use strict";var r=t(31),a=t(60),i=t(4),o=t(38),s=t(69),u=t(27),c=t(8),p=t(30),l=t(82)("weak"),f=Object.isExtensible||o,d=c(5),h=c(6),m=0,v=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},b=function(t,e){return d(t.a,function(t){return t[0]===e})};g.prototype={get:function(t){var e=b(this,t);return e?e[1]:void 0},has:function(t){return!!b(this,t)},set:function(t,e){var n=b(this,t);n?n[1]=e:this.a.push([t,e])},"delete":function(t){var e=h(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},e.exports={getConstructor:function(t,e,n,r){var i=t(function(t,a){s(t,i,e),t._i=m++,t._l=void 0,void 0!=a&&u(a,n,t[r],t)});return a(i.prototype,{"delete":function(t){return o(t)?f(t)?p(t,l)&&p(t[l],this._i)&&delete t[l][this._i]:v(this)["delete"](t):!1},has:function(t){return o(t)?f(t)?p(t,l)&&p(t[l],this._i):v(this).has(t):!1}}),i},def:function(t,e,n){return f(i(e))?(p(e,l)||r(e,l,{}),e[l][t._i]=n):v(t).set(e,n),t},frozenStore:v,WEAK:l}},{27:27,30:30,31:31,38:38,4:4,60:60,69:69,8:8,82:82}],15:[function(t,e,n){"use strict";var r=t(29),a=t(22),i=t(61),o=t(60),s=t(27),u=t(69),c=t(38),p=t(24),l=t(43),f=t(66);e.exports=function(t,e,n,d,h,m){var v=r[t],g=v,b=h?"set":"add",y=g&&g.prototype,x={},_=function(t){var e=y[t];i(y,t,"delete"==t?function(t){return m&&!c(t)?!1:e.call(this,0===t?0:t)}:"has"==t?function(t){return m&&!c(t)?!1:e.call(this,0===t?0:t)}:"get"==t?function(t){return m&&!c(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof g&&(m||y.forEach&&!p(function(){(new g).entries().next()}))){var w,k=new g,E=k[b](m?{}:-0,1)!=k,S=p(function(){k.has(1)}),O=l(function(t){new g(t)});O||(g=e(function(e,n){u(e,g,t);var r=new v;return void 0!=n&&s(n,h,r[b],r),r}),g.prototype=y,y.constructor=g),m||k.forEach(function(t,e){w=1/e===-(1/0)}),(S||w)&&(_("delete"),_("has"),h&&_("get")),(w||E)&&_(b),m&&y.clear&&delete y.clear}else g=d.getConstructor(e,t,h,b),o(g.prototype,n);return f(g,t),x[t]=g,a(a.G+a.W+a.F*(g!=v),x),m||d.setStrong(g,t,h),g}},{22:22,24:24,27:27,29:29,38:38,43:43,60:60,61:61,66:66,69:69}],16:[function(t,e,n){var r=e.exports={version:"1.2.6"};"number"==typeof __e&&(__e=r)},{}],17:[function(t,e,n){var r=t(2);e.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,a){return t.call(e,n,r,a)}}return function(){return t.apply(e,arguments)}}},{2:2}],18:[function(t,e,n){e.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],19:[function(t,e,n){e.exports=!t(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{24:24}],20:[function(t,e,n){var r=t(38),a=t(29).document,i=r(a)&&r(a.createElement);e.exports=function(t){return i?a.createElement(t):{}}},{29:29,38:38}],21:[function(t,e,n){var r=t(46);e.exports=function(t){var e=r.getKeys(t),n=r.getSymbols;if(n)for(var a,i=n(t),o=r.isEnum,s=0;i.length>s;)o.call(t,a=i[s++])&&e.push(a);return e}},{46:46}],22:[function(t,e,n){var r=t(29),a=t(16),i=t(31),o=t(61),s=t(17),u="prototype",c=function(t,e,n){var p,l,f,d,h=t&c.F,m=t&c.G,v=t&c.S,g=t&c.P,b=t&c.B,y=m?r:v?r[e]||(r[e]={}):(r[e]||{})[u],x=m?a:a[e]||(a[e]={}),_=x[u]||(x[u]={});m&&(n=e);for(p in n)l=!h&&y&&p in y,f=(l?y:n)[p],d=b&&l?s(f,r):g&&"function"==typeof f?s(Function.call,f):f,y&&!l&&o(y,p,f),x[p]!=f&&i(x,p,d),g&&_[p]!=f&&(_[p]=f)};r.core=a,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,e.exports=c},{16:16,17:17,29:29,31:31,61:61}],23:[function(t,e,n){var r=t(83)("match");e.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(a){}}return!0}},{83:83}],24:[function(t,e,n){e.exports=function(t){try{return!!t()}catch(e){return!0}}},{}],25:[function(t,e,n){"use strict";var r=t(31),a=t(61),i=t(24),o=t(18),s=t(83);e.exports=function(t,e,n){var u=s(t),c=""[t];i(function(){var e={};return e[u]=function(){return 7},7!=""[t](e)})&&(a(String.prototype,t,n(o,u,c)),r(RegExp.prototype,u,2==e?function(t,e){return c.call(t,this,e)}:function(t){return c.call(t,this)}))}},{18:18,24:24,31:31,61:61,83:83}],26:[function(t,e,n){"use strict";var r=t(4);e.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},{4:4}],27:[function(t,e,n){var r=t(17),a=t(40),i=t(35),o=t(4),s=t(79),u=t(84);e.exports=function(t,e,n,c){var p,l,f,d=u(t),h=r(n,c,e?2:1),m=0;if("function"!=typeof d)throw TypeError(t+" is not iterable!");if(i(d))for(p=s(t.length);p>m;m++)e?h(o(l=t[m])[0],l[1]):h(t[m]);else for(f=d.call(t);!(l=f.next()).done;)a(f,h,l.value,e)}},{17:17,35:35,4:4,40:40,79:79,84:84}],28:[function(t,e,n){var r=t(78),a=t(46).getNames,i={}.toString,o="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return a(t)}catch(e){return o.slice()}};e.exports.get=function(t){return o&&"[object Window]"==i.call(t)?s(t):a(r(t))}},{46:46,78:78}],29:[function(t,e,n){var r=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},{}],30:[function(t,e,n){var r={}.hasOwnProperty;e.exports=function(t,e){return r.call(t,e)}},{}],31:[function(t,e,n){var r=t(46),a=t(59);e.exports=t(19)?function(t,e,n){return r.setDesc(t,e,a(1,n))}:function(t,e,n){return t[e]=n,t}},{19:19,46:46,59:59}],32:[function(t,e,n){e.exports=t(29).document&&document.documentElement},{29:29}],33:[function(t,e,n){e.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},{}],34:[function(t,e,n){var r=t(11);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},{11:11}],35:[function(t,e,n){var r=t(45),a=t(83)("iterator"),i=Array.prototype;e.exports=function(t){return void 0!==t&&(r.Array===t||i[a]===t)}},{45:45,83:83}],36:[function(t,e,n){var r=t(11);e.exports=Array.isArray||function(t){return"Array"==r(t)}},{11:11}],37:[function(t,e,n){var r=t(38),a=Math.floor;e.exports=function(t){return!r(t)&&isFinite(t)&&a(t)===t}},{38:38}],38:[function(t,e,n){e.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],39:[function(t,e,n){var r=t(38),a=t(11),i=t(83)("match");e.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==a(t))}},{11:11,38:38,83:83}],40:[function(t,e,n){var r=t(4);e.exports=function(t,e,n,a){try{return a?e(r(n)[0],n[1]):e(n)}catch(i){var o=t["return"];throw void 0!==o&&r(o.call(t)),i}}},{4:4}],41:[function(t,e,n){"use strict";var r=t(46),a=t(59),i=t(66),o={};t(31)(o,t(83)("iterator"),function(){return this}),e.exports=function(t,e,n){t.prototype=r.create(o,{next:a(1,n)}),i(t,e+" Iterator")}},{31:31,46:46,59:59,66:66,83:83}],42:[function(t,e,n){"use strict";var r=t(48),a=t(22),i=t(61),o=t(31),s=t(30),u=t(45),c=t(41),p=t(66),l=t(46).getProto,f=t(83)("iterator"),d=!([].keys&&"next"in[].keys()),h="@@iterator",m="keys",v="values",g=function(){return this};e.exports=function(t,e,n,b,y,x,_){c(n,e,b);var w,k,E=function(t){if(!d&&t in A)return A[t];switch(t){case m:return function(){return new n(this,t)};case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",O=y==v,C=!1,A=t.prototype,P=A[f]||A[h]||y&&A[y],T=P||E(y);if(P){var j=l(T.call(new t));p(j,S,!0),!r&&s(A,h)&&o(j,f,g),O&&P.name!==v&&(C=!0,T=function(){return P.call(this)})}if(r&&!_||!d&&!C&&A[f]||o(A,f,T),u[e]=T,u[S]=g,y)if(w={values:O?T:E(v),keys:x?T:E(m),entries:O?E("entries"):T},_)for(k in w)k in A||i(A,k,w[k]);else a(a.P+a.F*(d||C),e,w);return w}},{22:22,30:30,31:31,41:41,45:45,46:46,48:48,61:61,66:66,83:83}],43:[function(t,e,n){var r=t(83)("iterator"),a=!1;try{var i=[7][r]();i["return"]=function(){a=!0},Array.from(i,function(){throw 2})}catch(o){}e.exports=function(t,e){if(!e&&!a)return!1;var n=!1;try{var i=[7],o=i[r]();o.next=function(){return{done:n=!0}},i[r]=function(){return o},t(i)}catch(s){}return n}},{83:83}],44:[function(t,e,n){e.exports=function(t,e){return{value:e,done:!!t}}},{}],45:[function(t,e,n){e.exports={}},{}],46:[function(t,e,n){var r=Object;e.exports={create:r.create,getProto:r.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:r.getOwnPropertyDescriptor,setDesc:r.defineProperty,setDescs:r.defineProperties,getKeys:r.keys,getNames:r.getOwnPropertyNames,getSymbols:r.getOwnPropertySymbols,each:[].forEach}},{}],47:[function(t,e,n){var r=t(46),a=t(78);e.exports=function(t,e){for(var n,i=a(t),o=r.getKeys(i),s=o.length,u=0;s>u;)if(i[n=o[u++]]===e)return n}},{46:46,78:78}],48:[function(t,e,n){e.exports=!1},{}],49:[function(t,e,n){e.exports=Math.expm1||function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}},{}],50:[function(t,e,n){e.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],51:[function(t,e,n){e.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],52:[function(t,e,n){var r,a,i,o=t(29),s=t(75).set,u=o.MutationObserver||o.WebKitMutationObserver,c=o.process,p=o.Promise,l="process"==t(11)(c),f=function(){var t,e,n;for(l&&(t=c.domain)&&(c.domain=null,t.exit());r;)e=r.domain,n=r.fn,e&&e.enter(),n(),e&&e.exit(),r=r.next;a=void 0,t&&t.enter()};if(l)i=function(){c.nextTick(f)};else if(u){var d=1,h=document.createTextNode("");new u(f).observe(h,{characterData:!0}),i=function(){h.data=d=-d}}else i=p&&p.resolve?function(){p.resolve().then(f)}:function(){s.call(o,f)};e.exports=function(t){var e={fn:t,next:void 0,domain:l&&c.domain};a&&(a.next=e),r||(r=e,i()),a=e}},{11:11,29:29,75:75}],53:[function(t,e,n){var r=t(46),a=t(80),i=t(34);e.exports=t(24)(function(){var t=Object.assign,e={},n={},r=Symbol(),a="abcdefghijklmnopqrst";return e[r]=7,a.split("").forEach(function(t){n[t]=t}),7!=t({},e)[r]||Object.keys(t({},n)).join("")!=a})?function(t,e){for(var n=a(t),o=arguments,s=o.length,u=1,c=r.getKeys,p=r.getSymbols,l=r.isEnum;s>u;)for(var f,d=i(o[u++]),h=p?c(d).concat(p(d)):c(d),m=h.length,v=0;m>v;)l.call(d,f=h[v++])&&(n[f]=d[f]);return n}:Object.assign},{24:24,34:34,46:46,80:80}],54:[function(t,e,n){var r=t(22),a=t(16),i=t(24);e.exports=function(t,e){var n=(a.Object||{})[t]||Object[t],o={};o[t]=e(n),r(r.S+r.F*i(function(){n(1)}),"Object",o)}},{16:16,22:22,24:24}],55:[function(t,e,n){var r=t(46),a=t(78),i=r.isEnum;e.exports=function(t){return function(e){for(var n,o=a(e),s=r.getKeys(o),u=s.length,c=0,p=[];u>c;)i.call(o,n=s[c++])&&p.push(t?[n,o[n]]:o[n]);return p}}},{46:46,78:78}],56:[function(t,e,n){var r=t(46),a=t(4),i=t(29).Reflect;e.exports=i&&i.ownKeys||function(t){var e=r.getNames(a(t)),n=r.getSymbols;return n?e.concat(n(t)):e}},{29:29,4:4,46:46}],57:[function(t,e,n){"use strict";var r=t(58),a=t(33),i=t(2);e.exports=function(){for(var t=i(this),e=arguments.length,n=Array(e),o=0,s=r._,u=!1;e>o;)(n[o]=arguments[o++])===s&&(u=!0);return function(){var r,i=this,o=arguments,c=o.length,p=0,l=0;if(!u&&!c)return a(t,n,i);if(r=n.slice(),u)for(;e>p;p++)r[p]===s&&(r[p]=o[l++]);for(;c>l;)r.push(o[l++]);return a(t,r,i)}}},{2:2,33:33,58:58}],58:[function(t,e,n){e.exports=t(29)},{29:29}],59:[function(t,e,n){e.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},{}],60:[function(t,e,n){var r=t(61);e.exports=function(t,e){for(var n in e)r(t,n,e[n]);return t}},{61:61}],61:[function(t,e,n){var r=t(29),a=t(31),i=t(82)("src"),o="toString",s=Function[o],u=(""+s).split(o);t(16).inspectSource=function(t){return s.call(t)},(e.exports=function(t,e,n,o){"function"==typeof n&&(n.hasOwnProperty(i)||a(n,i,t[e]?""+t[e]:u.join(e+"")),n.hasOwnProperty("name")||a(n,"name",e)),t===r?t[e]=n:(o||delete t[e],a(t,e,n))})(Function.prototype,o,function(){return"function"==typeof this&&this[i]||s.call(this)})},{16:16,29:29,31:31,82:82}],62:[function(t,e,n){e.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return(e+"").replace(t,n)}}},{}],63:[function(t,e,n){e.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},{}],64:[function(t,e,n){var r=t(46).getDesc,a=t(38),i=t(4),o=function(t,e){if(i(t),!a(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,a){try{a=t(17)(Function.call,r(Object.prototype,"__proto__").set,2),a(e,[]),n=!(e instanceof Array)}catch(i){n=!0}return function(t,e){return o(t,e),n?t.__proto__=e:a(t,e),t}}({},!1):void 0),check:o}},{17:17,38:38,4:4,46:46}],65:[function(t,e,n){"use strict";var r=t(29),a=t(46),i=t(19),o=t(83)("species");e.exports=function(t){var e=r[t];i&&e&&!e[o]&&a.setDesc(e,o,{configurable:!0,get:function(){return this}})}},{19:19,29:29,46:46,83:83}],66:[function(t,e,n){var r=t(46).setDesc,a=t(30),i=t(83)("toStringTag");e.exports=function(t,e,n){t&&!a(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},{30:30,46:46,83:83}],67:[function(t,e,n){var r=t(29),a="__core-js_shared__",i=r[a]||(r[a]={});e.exports=function(t){return i[t]||(i[t]={})}},{29:29}],68:[function(t,e,n){var r=t(4),a=t(2),i=t(83)("species");e.exports=function(t,e){var n,o=r(t).constructor;return void 0===o||void 0==(n=r(o)[i])?e:a(n)}},{2:2,4:4,83:83}],69:[function(t,e,n){e.exports=function(t,e,n){if(!(t instanceof e))throw TypeError(n+": use the 'new' operator!");return t}},{}],70:[function(t,e,n){var r=t(77),a=t(18);e.exports=function(t){return function(e,n){var i,o,s=a(e)+"",u=r(n),c=s.length;return 0>u||u>=c?t?"":void 0:(i=s.charCodeAt(u),55296>i||i>56319||u+1===c||(o=s.charCodeAt(u+1))<56320||o>57343?t?s.charAt(u):i:t?s.slice(u,u+2):(i-55296<<10)+(o-56320)+65536)}}},{18:18,77:77}],71:[function(t,e,n){var r=t(39),a=t(18);e.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return a(t)+""}},{18:18,39:39}],72:[function(t,e,n){var r=t(79),a=t(73),i=t(18);e.exports=function(t,e,n,o){var s=i(t)+"",u=s.length,c=void 0===n?" ":n+"",p=r(e);if(u>=p)return s;""==c&&(c=" ");var l=p-u,f=a.call(c,Math.ceil(l/c.length));return f.length>l&&(f=f.slice(0,l)),o?f+s:s+f}},{18:18,73:73,79:79}],73:[function(t,e,n){"use strict";var r=t(77),a=t(18);e.exports=function(t){var e=a(this)+"",n="",i=r(t);if(0>i||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},{18:18,77:77}],74:[function(t,e,n){var r=t(22),a=t(18),i=t(24),o=" \n\x0B\f\r \u2028\u2029\ufeff",s="["+o+"]",u="
",c=RegExp("^"+s+s+"*"),p=RegExp(s+s+"*$"),l=function(t,e){var n={};n[t]=e(f),r(r.P+r.F*i(function(){return!!o[t]()||u[t]()!=u}),"String",n)},f=l.trim=function(t,e){return t=a(t)+"",1&e&&(t=t.replace(c,"")),2&e&&(t=t.replace(p,"")),t};e.exports=l},{18:18,22:22,24:24}],75:[function(t,e,n){var r,a,i,o=t(17),s=t(33),u=t(32),c=t(20),p=t(29),l=p.process,f=p.setImmediate,d=p.clearImmediate,h=p.MessageChannel,m=0,v={},g="onreadystatechange",b=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},y=function(t){b.call(t.data)};f&&d||(f=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return v[++m]=function(){s("function"==typeof t?t:Function(t),e)},r(m),m},d=function(t){delete v[t]},"process"==t(11)(l)?r=function(t){l.nextTick(o(b,t,1))}:h?(a=new h,i=a.port2,a.port1.onmessage=y,r=o(i.postMessage,i,1)):p.addEventListener&&"function"==typeof postMessage&&!p.importScripts?(r=function(t){p.postMessage(t+"","*")},p.addEventListener("message",y,!1)):r=g in c("script")?function(t){u.appendChild(c("script"))[g]=function(){u.removeChild(this),b.call(t)}}:function(t){setTimeout(o(b,t,1),0)}),e.exports={set:f,clear:d}},{11:11,17:17,20:20,29:29,32:32,33:33}],76:[function(t,e,n){var r=t(77),a=Math.max,i=Math.min;e.exports=function(t,e){return t=r(t),0>t?a(t+e,0):i(t,e)}},{77:77}],77:[function(t,e,n){var r=Math.ceil,a=Math.floor;e.exports=function(t){return isNaN(t=+t)?0:(t>0?a:r)(t)}},{}],78:[function(t,e,n){var r=t(34),a=t(18);e.exports=function(t){return r(a(t))}},{18:18,34:34}],79:[function(t,e,n){var r=t(77),a=Math.min;e.exports=function(t){return t>0?a(r(t),9007199254740991):0}},{77:77}],80:[function(t,e,n){var r=t(18);e.exports=function(t){return Object(r(t))}},{18:18}],81:[function(t,e,n){var r=t(38);e.exports=function(t,e){if(!r(t))return t;var n,a;if(e&&"function"==typeof(n=t.toString)&&!r(a=n.call(t)))return a;if("function"==typeof(n=t.valueOf)&&!r(a=n.call(t)))return a;if(!e&&"function"==typeof(n=t.toString)&&!r(a=n.call(t)))return a;throw TypeError("Can't convert object to primitive value")}},{38:38}],82:[function(t,e,n){var r=0,a=Math.random();e.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++r+a).toString(36))}},{}],83:[function(t,e,n){var r=t(67)("wks"),a=t(82),i=t(29).Symbol;e.exports=function(t){return r[t]||(r[t]=i&&i[t]||(i||a)("Symbol."+t))}},{29:29,67:67,82:82}],84:[function(t,e,n){var r=t(10),a=t(83)("iterator"),i=t(45);e.exports=t(16).getIteratorMethod=function(t){return void 0!=t?t[a]||t["@@iterator"]||i[r(t)]:void 0}},{10:10,16:16,45:45,83:83}],85:[function(t,e,n){"use strict";var r,a=t(46),i=t(22),o=t(19),s=t(59),u=t(32),c=t(20),p=t(30),l=t(11),f=t(33),d=t(24),h=t(4),m=t(2),v=t(38),g=t(80),b=t(78),y=t(77),x=t(76),_=t(79),w=t(34),k=t(82)("__proto__"),E=t(8),S=t(7)(!1),O=Object.prototype,C=Array.prototype,A=C.slice,P=C.join,T=a.setDesc,j=a.getDesc,M=a.setDescs,L={};o||(r=!d(function(){return 7!=T(c("div"),"a",{get:function(){return 7}}).a}),a.setDesc=function(t,e,n){if(r)try{return T(t,e,n)}catch(a){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(h(t)[e]=n.value),t},a.getDesc=function(t,e){if(r)try{return j(t,e)}catch(n){}return p(t,e)?s(!O.propertyIsEnumerable.call(t,e),t[e]):void 0},a.setDescs=M=function(t,e){h(t);for(var n,r=a.getKeys(e),i=r.length,o=0;i>o;)a.setDesc(t,n=r[o++],e[n]);return t}),i(i.S+i.F*!o,"Object",{getOwnPropertyDescriptor:a.getDesc,defineProperty:a.setDesc,defineProperties:M});var F="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),N=F.concat("length","prototype"),R=F.length,D=function(){var t,e=c("iframe"),n=R,r=">";for(e.style.display="none",u.appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write("i;)p(a,r=t[i++])&&(~S(o,r)||o.push(r));return o}},q=function(){};i(i.S,"Object",{getPrototypeOf:a.getProto=a.getProto||function(t){return t=g(t),p(t,k)?t[k]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?O:null},getOwnPropertyNames:a.getNames=a.getNames||I(N,N.length,!0),create:a.create=a.create||function(t,e){var n;return null!==t?(q.prototype=h(t),n=new q,q.prototype=null,n[k]=t):n=D(),void 0===e?n:M(n,e)},keys:a.getKeys=a.getKeys||I(F,R,!1)});var B=function(t,e,n){if(!(e in L)){for(var r=[],a=0;e>a;a++)r[a]="a["+a+"]";L[e]=Function("F,a","return new F("+r.join(",")+")")}return L[e](t,n)};i(i.P,"Function",{bind:function(t){var e=m(this),n=A.call(arguments,1),r=function(){var a=n.concat(A.call(arguments));return this instanceof r?B(e,a.length,a):f(e,a,t)};return v(e.prototype)&&(r.prototype=e.prototype),r}}),i(i.P+i.F*d(function(){u&&A.call(u)}),"Array",{slice:function(t,e){var n=_(this.length),r=l(this);if(e=void 0===e?n:e,"Array"==r)return A.call(this,t,e);for(var a=x(t,n),i=x(e,n),o=_(i-a),s=Array(o),u=0;o>u;u++)s[u]="String"==r?this.charAt(a+u):this[a+u];return s}}),i(i.P+i.F*(w!=Object),"Array",{join:function(t){return P.call(w(this),void 0===t?",":t)}}),i(i.S,"Array",{isArray:t(36)});var V=function(t){return function(e,n){m(e);var r=w(this),a=_(r.length),i=t?a-1:0,o=t?-1:1;if(arguments.length<2)for(;;){if(i in r){n=r[i],i+=o;break}if(i+=o,t?0>i:i>=a)throw TypeError("Reduce of empty array with no initial value")}for(;t?i>=0:a>i;i+=o)i in r&&(n=e(n,r[i],i,this));return n}},U=function(t){return function(e){return t(this,e,arguments[1])}};i(i.P,"Array",{forEach:a.each=a.each||U(E(0)),map:U(E(1)),filter:U(E(2)),some:U(E(3)),every:U(E(4)),reduce:V(!1),reduceRight:V(!0),indexOf:U(S),lastIndexOf:function(t,e){var n=b(this),r=_(n.length),a=r-1;for(arguments.length>1&&(a=Math.min(a,y(e))),0>a&&(a=_(r+a));a>=0;a--)if(a in n&&n[a]===t)return a;return-1}}),i(i.S,"Date",{now:function(){return+new Date}});var z=function(t){return t>9?t:"0"+t};i(i.P+i.F*(d(function(){return"0385-07-25T07:06:39.999Z"!=new Date(-5e13-1).toISOString()})||!d(function(){new Date(NaN).toISOString()})),"Date",{toISOString:function(){if(!isFinite(this))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),r=0>e?"-":e>9999?"+":"";return r+("00000"+Math.abs(e)).slice(r?-6:-4)+"-"+z(t.getUTCMonth()+1)+"-"+z(t.getUTCDate())+"T"+z(t.getUTCHours())+":"+z(t.getUTCMinutes())+":"+z(t.getUTCSeconds())+"."+(n>99?n:"0"+z(n))+"Z"}})},{11:11,19:19,2:2,20:20,22:22,24:24,30:30,32:32,33:33,34:34,36:36,38:38,4:4,46:46,59:59,7:7,76:76,77:77,78:78,79:79,8:8,80:80,82:82}],86:[function(t,e,n){var r=t(22);r(r.P,"Array",{copyWithin:t(5)}),t(3)("copyWithin")},{22:22,3:3,5:5}],87:[function(t,e,n){var r=t(22);r(r.P,"Array",{fill:t(6)}),t(3)("fill")},{22:22,3:3,6:6}],88:[function(t,e,n){"use strict";var r=t(22),a=t(8)(6),i="findIndex",o=!0;i in[]&&Array(1)[i](function(){o=!1}),r(r.P+r.F*o,"Array",{findIndex:function(t){return a(this,t,arguments.length>1?arguments[1]:void 0)}}),t(3)(i)},{22:22,3:3,8:8}],89:[function(t,e,n){"use strict";var r=t(22),a=t(8)(5),i="find",o=!0;i in[]&&Array(1)[i](function(){o=!1}),r(r.P+r.F*o,"Array",{find:function(t){return a(this,t,arguments.length>1?arguments[1]:void 0)}}),t(3)(i)},{22:22,3:3,8:8}],90:[function(t,e,n){"use strict";var r=t(17),a=t(22),i=t(80),o=t(40),s=t(35),u=t(79),c=t(84);a(a.S+a.F*!t(43)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,a,p,l=i(t),f="function"==typeof this?this:Array,d=arguments,h=d.length,m=h>1?d[1]:void 0,v=void 0!==m,g=0,b=c(l);if(v&&(m=r(m,h>2?d[2]:void 0,2)),void 0==b||f==Array&&s(b))for(e=u(l.length),n=new f(e);e>g;g++)n[g]=v?m(l[g],g):l[g];else for(p=b.call(l),n=new f;!(a=p.next()).done;g++)n[g]=v?o(p,m,[a.value,g],!0):a.value;return n.length=g,n}})},{17:17,22:22,35:35,40:40,43:43,79:79,80:80,84:84}],91:[function(t,e,n){"use strict";var r=t(3),a=t(44),i=t(45),o=t(78);e.exports=t(42)(Array,"Array",function(t,e){this._t=o(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,a(1)):"keys"==e?a(0,n):"values"==e?a(0,t[n]):a(0,[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},{3:3,42:42,44:44,45:45,78:78}],92:[function(t,e,n){"use strict";var r=t(22);r(r.S+r.F*t(24)(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,e=arguments,n=e.length,r=new("function"==typeof this?this:Array)(n);n>t;)r[t]=e[t++];return r.length=n,r}})},{22:22,24:24}],93:[function(t,e,n){t(65)("Array")},{65:65}],94:[function(t,e,n){"use strict";var r=t(46),a=t(38),i=t(83)("hasInstance"),o=Function.prototype;i in o||r.setDesc(o,i,{value:function(t){if("function"!=typeof this||!a(t))return!1;if(!a(this.prototype))return t instanceof this;for(;t=r.getProto(t);)if(this.prototype===t)return!0;return!1}})},{38:38,46:46,83:83}],95:[function(t,e,n){var r=t(46).setDesc,a=t(59),i=t(30),o=Function.prototype,s=/^\s*function ([^ (]*)/,u="name";u in o||t(19)&&r(o,u,{configurable:!0,get:function(){var t=(""+this).match(s),e=t?t[1]:"";return i(this,u)||r(this,u,a(5,e)),e}})},{19:19,30:30,46:46,59:59}],96:[function(t,e,n){"use strict";var r=t(12);t(15)("Map",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=r.getEntry(this,t);return e&&e.v},set:function(t,e){return r.def(this,0===t?0:t,e)}},r,!0)},{12:12,15:15}],97:[function(t,e,n){var r=t(22),a=t(50),i=Math.sqrt,o=Math.acosh;r(r.S+r.F*!(o&&710==Math.floor(o(Number.MAX_VALUE))),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:a(t-1+i(t-1)*i(t+1))}})},{22:22,50:50}],98:[function(t,e,n){function r(t){return isFinite(t=+t)&&0!=t?0>t?-r(-t):Math.log(t+Math.sqrt(t*t+1)):t}var a=t(22);a(a.S,"Math",{asinh:r})},{22:22}],99:[function(t,e,n){var r=t(22);r(r.S,"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},{22:22}],100:[function(t,e,n){var r=t(22),a=t(51);r(r.S,"Math",{cbrt:function(t){return a(t=+t)*Math.pow(Math.abs(t),1/3)}})},{22:22,51:51}],101:[function(t,e,n){var r=t(22);r(r.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},{22:22}],102:[function(t,e,n){var r=t(22),a=Math.exp;r(r.S,"Math",{cosh:function(t){return(a(t=+t)+a(-t))/2}})},{22:22}],103:[function(t,e,n){var r=t(22);r(r.S,"Math",{expm1:t(49)})},{22:22,49:49}],104:[function(t,e,n){var r=t(22),a=t(51),i=Math.pow,o=i(2,-52),s=i(2,-23),u=i(2,127)*(2-s),c=i(2,-126),p=function(t){return t+1/o-1/o};r(r.S,"Math",{fround:function(t){var e,n,r=Math.abs(t),i=a(t);return c>r?i*p(r/c/s)*c*s:(e=(1+s/o)*r,n=e-(e-r),n>u||n!=n?i*(1/0):i*n)}})},{22:22,51:51}],105:[function(t,e,n){var r=t(22),a=Math.abs;r(r.S,"Math",{hypot:function(t,e){for(var n,r,i=0,o=0,s=arguments,u=s.length,c=0;u>o;)n=a(s[o++]),n>c?(r=c/n,i=i*r*r+1,c=n):n>0?(r=n/c,i+=r*r):i+=n;return c===1/0?1/0:c*Math.sqrt(i)}})},{22:22}],106:[function(t,e,n){var r=t(22),a=Math.imul;r(r.S+r.F*t(24)(function(){return-5!=a(4294967295,5)||2!=a.length}),"Math",{imul:function(t,e){var n=65535,r=+t,a=+e,i=n&r,o=n&a;return 0|i*o+((n&r>>>16)*o+i*(n&a>>>16)<<16>>>0)}})},{22:22,24:24}],107:[function(t,e,n){var r=t(22);r(r.S,"Math",{log10:function(t){return Math.log(t)/Math.LN10}})},{22:22}],108:[function(t,e,n){var r=t(22);r(r.S,"Math",{log1p:t(50)})},{22:22,50:50}],109:[function(t,e,n){var r=t(22);r(r.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},{22:22}],110:[function(t,e,n){var r=t(22);r(r.S,"Math",{sign:t(51)})},{22:22,51:51}],111:[function(t,e,n){var r=t(22),a=t(49),i=Math.exp;r(r.S+r.F*t(24)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(a(t)-a(-t))/2:(i(t-1)-i(-t-1))*(Math.E/2)}})},{22:22,24:24,49:49}],112:[function(t,e,n){var r=t(22),a=t(49),i=Math.exp;r(r.S,"Math",{tanh:function(t){var e=a(t=+t),n=a(-t);return e==1/0?1:n==1/0?-1:(e-n)/(i(t)+i(-t))}})},{22:22,49:49}],113:[function(t,e,n){var r=t(22);r(r.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},{22:22}],114:[function(t,e,n){"use strict";var r=t(46),a=t(29),i=t(30),o=t(11),s=t(81),u=t(24),c=t(74).trim,p="Number",l=a[p],f=l,d=l.prototype,h=o(r.create(d))==p,m="trim"in String.prototype,v=function(t){
-var e=s(t,!1);if("string"==typeof e&&e.length>2){e=m?e.trim():c(e,3);var n,r,a,i=e.charCodeAt(0);if(43===i||45===i){if(n=e.charCodeAt(2),88===n||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:r=2,a=49;break;case 79:case 111:r=8,a=55;break;default:return+e}for(var o,u=e.slice(2),p=0,l=u.length;l>p;p++)if(o=u.charCodeAt(p),48>o||o>a)return NaN;return parseInt(u,r)}}return+e};l(" 0o1")&&l("0b1")&&!l("+0x1")||(l=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof l&&(h?u(function(){d.valueOf.call(n)}):o(n)!=p)?new f(v(e)):v(e)},r.each.call(t(19)?r.getNames(f):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),function(t){i(f,t)&&!i(l,t)&&r.setDesc(l,t,r.getDesc(f,t))}),l.prototype=d,d.constructor=l,t(61)(a,p,l))},{11:11,19:19,24:24,29:29,30:30,46:46,61:61,74:74,81:81}],115:[function(t,e,n){var r=t(22);r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},{22:22}],116:[function(t,e,n){var r=t(22),a=t(29).isFinite;r(r.S,"Number",{isFinite:function(t){return"number"==typeof t&&a(t)}})},{22:22,29:29}],117:[function(t,e,n){var r=t(22);r(r.S,"Number",{isInteger:t(37)})},{22:22,37:37}],118:[function(t,e,n){var r=t(22);r(r.S,"Number",{isNaN:function(t){return t!=t}})},{22:22}],119:[function(t,e,n){var r=t(22),a=t(37),i=Math.abs;r(r.S,"Number",{isSafeInteger:function(t){return a(t)&&i(t)<=9007199254740991}})},{22:22,37:37}],120:[function(t,e,n){var r=t(22);r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{22:22}],121:[function(t,e,n){var r=t(22);r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},{22:22}],122:[function(t,e,n){var r=t(22);r(r.S,"Number",{parseFloat:parseFloat})},{22:22}],123:[function(t,e,n){var r=t(22);r(r.S,"Number",{parseInt:parseInt})},{22:22}],124:[function(t,e,n){var r=t(22);r(r.S+r.F,"Object",{assign:t(53)})},{22:22,53:53}],125:[function(t,e,n){var r=t(38);t(54)("freeze",function(t){return function(e){return t&&r(e)?t(e):e}})},{38:38,54:54}],126:[function(t,e,n){var r=t(78);t(54)("getOwnPropertyDescriptor",function(t){return function(e,n){return t(r(e),n)}})},{54:54,78:78}],127:[function(t,e,n){t(54)("getOwnPropertyNames",function(){return t(28).get})},{28:28,54:54}],128:[function(t,e,n){var r=t(80);t(54)("getPrototypeOf",function(t){return function(e){return t(r(e))}})},{54:54,80:80}],129:[function(t,e,n){var r=t(38);t(54)("isExtensible",function(t){return function(e){return r(e)?t?t(e):!0:!1}})},{38:38,54:54}],130:[function(t,e,n){var r=t(38);t(54)("isFrozen",function(t){return function(e){return r(e)?t?t(e):!1:!0}})},{38:38,54:54}],131:[function(t,e,n){var r=t(38);t(54)("isSealed",function(t){return function(e){return r(e)?t?t(e):!1:!0}})},{38:38,54:54}],132:[function(t,e,n){var r=t(22);r(r.S,"Object",{is:t(63)})},{22:22,63:63}],133:[function(t,e,n){var r=t(80);t(54)("keys",function(t){return function(e){return t(r(e))}})},{54:54,80:80}],134:[function(t,e,n){var r=t(38);t(54)("preventExtensions",function(t){return function(e){return t&&r(e)?t(e):e}})},{38:38,54:54}],135:[function(t,e,n){var r=t(38);t(54)("seal",function(t){return function(e){return t&&r(e)?t(e):e}})},{38:38,54:54}],136:[function(t,e,n){var r=t(22);r(r.S,"Object",{setPrototypeOf:t(64).set})},{22:22,64:64}],137:[function(t,e,n){"use strict";var r=t(10),a={};a[t(83)("toStringTag")]="z",a+""!="[object z]"&&t(61)(Object.prototype,"toString",function(){return"[object "+r(this)+"]"},!0)},{10:10,61:61,83:83}],138:[function(t,e,n){"use strict";var r,a=t(46),i=t(48),o=t(29),s=t(17),u=t(10),c=t(22),p=t(38),l=t(4),f=t(2),d=t(69),h=t(27),m=t(64).set,v=t(63),g=t(83)("species"),b=t(68),y=t(52),x="Promise",_=o.process,w="process"==u(_),k=o[x],E=function(){},S=function(t){var e,n=new k(E);return t&&(n.constructor=function(t){t(E,E)}),(e=k.resolve(n))["catch"](E),e===n},O=function(){function e(t){var n=new k(t);return m(n,e.prototype),n}var n=!1;try{if(n=k&&k.resolve&&S(),m(e,k),e.prototype=a.create(k.prototype,{constructor:{value:e}}),e.resolve(5).then(function(){})instanceof e||(n=!1),n&&t(19)){var r=!1;k.resolve(a.setDesc({},"then",{get:function(){r=!0}})),n=r}}catch(i){n=!1}return n}(),C=function(t,e){return i&&t===k&&e===r?!0:v(t,e)},A=function(t){var e=l(t)[g];return void 0!=e?e:t},P=function(t){var e;return p(t)&&"function"==typeof(e=t.then)?e:!1},T=function(t){var e,n;this.promise=new t(function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r}),this.resolve=f(e),this.reject=f(n)},j=function(t){try{t()}catch(e){return{error:e}}},M=function(t,e){if(!t.n){t.n=!0;var n=t.c;y(function(){for(var r=t.v,a=1==t.s,i=0,s=function(e){var n,i,o=a?e.ok:e.fail,s=e.resolve,u=e.reject;try{o?(a||(t.h=!0),n=o===!0?r:o(r),n===e.promise?u(TypeError("Promise-chain cycle")):(i=P(n))?i.call(n,s,u):s(n)):u(r)}catch(c){u(c)}};n.length>i;)s(n[i++]);n.length=0,t.n=!1,e&&setTimeout(function(){var e,n,a=t.p;L(a)&&(w?_.emit("unhandledRejection",r,a):(e=o.onunhandledrejection)?e({promise:a,reason:r}):(n=o.console)&&n.error&&n.error("Unhandled promise rejection",r)),t.a=void 0},1)})}},L=function(t){var e,n=t._d,r=n.a||n.c,a=0;if(n.h)return!1;for(;r.length>a;)if(e=r[a++],e.fail||!L(e.promise))return!1;return!0},F=function(t){var e=this;e.d||(e.d=!0,e=e.r||e,e.v=t,e.s=2,e.a=e.c.slice(),M(e,!0))},N=function(t){var e,n=this;if(!n.d){n.d=!0,n=n.r||n;try{if(n.p===t)throw TypeError("Promise can't be resolved itself");(e=P(t))?y(function(){var r={r:n,d:!1};try{e.call(t,s(N,r,1),s(F,r,1))}catch(a){F.call(r,a)}}):(n.v=t,n.s=1,M(n,!1))}catch(r){F.call({r:n,d:!1},r)}}};O||(k=function(t){f(t);var e=this._d={p:d(this,k,x),c:[],a:void 0,s:0,d:!1,v:void 0,h:!1,n:!1};try{t(s(N,e,1),s(F,e,1))}catch(n){F.call(e,n)}},t(60)(k.prototype,{then:function(t,e){var n=new T(b(this,k)),r=n.promise,a=this._d;return n.ok="function"==typeof t?t:!0,n.fail="function"==typeof e&&e,a.c.push(n),a.a&&a.a.push(n),a.s&&M(a,!1),r},"catch":function(t){return this.then(void 0,t)}})),c(c.G+c.W+c.F*!O,{Promise:k}),t(66)(k,x),t(65)(x),r=t(16)[x],c(c.S+c.F*!O,x,{reject:function(t){var e=new T(this),n=e.reject;return n(t),e.promise}}),c(c.S+c.F*(!O||S(!0)),x,{resolve:function(t){if(t instanceof k&&C(t.constructor,this))return t;var e=new T(this),n=e.resolve;return n(t),e.promise}}),c(c.S+c.F*!(O&&t(43)(function(t){k.all(t)["catch"](function(){})})),x,{all:function(t){var e=A(this),n=new T(e),r=n.resolve,i=n.reject,o=[],s=j(function(){h(t,!1,o.push,o);var n=o.length,s=Array(n);n?a.each.call(o,function(t,a){var o=!1;e.resolve(t).then(function(t){o||(o=!0,s[a]=t,--n||r(s))},i)}):r(s)});return s&&i(s.error),n.promise},race:function(t){var e=A(this),n=new T(e),r=n.reject,a=j(function(){h(t,!1,function(t){e.resolve(t).then(n.resolve,r)})});return a&&r(a.error),n.promise}})},{10:10,16:16,17:17,19:19,2:2,22:22,27:27,29:29,38:38,4:4,43:43,46:46,48:48,52:52,60:60,63:63,64:64,65:65,66:66,68:68,69:69,83:83}],139:[function(t,e,n){var r=t(22),a=Function.apply,i=t(4);r(r.S,"Reflect",{apply:function(t,e,n){return a.call(t,e,i(n))}})},{22:22,4:4}],140:[function(t,e,n){var r=t(46),a=t(22),i=t(2),o=t(4),s=t(38),u=Function.bind||t(16).Function.prototype.bind;a(a.S+a.F*t(24)(function(){function t(){}return!(Reflect.construct(function(){},[],t)instanceof t)}),"Reflect",{construct:function(t,e){i(t),o(e);var n=arguments.length<3?t:i(arguments[2]);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var a=[null];return a.push.apply(a,e),new(u.apply(t,a))}var c=n.prototype,p=r.create(s(c)?c:Object.prototype),l=Function.apply.call(t,p,e);return s(l)?l:p}})},{16:16,2:2,22:22,24:24,38:38,4:4,46:46}],141:[function(t,e,n){var r=t(46),a=t(22),i=t(4);a(a.S+a.F*t(24)(function(){Reflect.defineProperty(r.setDesc({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(t,e,n){i(t);try{return r.setDesc(t,e,n),!0}catch(a){return!1}}})},{22:22,24:24,4:4,46:46}],142:[function(t,e,n){var r=t(22),a=t(46).getDesc,i=t(4);r(r.S,"Reflect",{deleteProperty:function(t,e){var n=a(i(t),e);return n&&!n.configurable?!1:delete t[e]}})},{22:22,4:4,46:46}],143:[function(t,e,n){"use strict";var r=t(22),a=t(4),i=function(t){this._t=a(t),this._i=0;var e,n=this._k=[];for(e in t)n.push(e)};t(41)(i,"Object",function(){var t,e=this,n=e._k;do if(e._i>=n.length)return{value:void 0,done:!0};while(!((t=n[e._i++])in e._t));return{value:t,done:!1}}),r(r.S,"Reflect",{enumerate:function(t){return new i(t)}})},{22:22,4:4,41:41}],144:[function(t,e,n){var r=t(46),a=t(22),i=t(4);a(a.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return r.getDesc(i(t),e)}})},{22:22,4:4,46:46}],145:[function(t,e,n){var r=t(22),a=t(46).getProto,i=t(4);r(r.S,"Reflect",{getPrototypeOf:function(t){return a(i(t))}})},{22:22,4:4,46:46}],146:[function(t,e,n){function r(t,e){var n,o,c=arguments.length<3?t:arguments[2];return u(t)===c?t[e]:(n=a.getDesc(t,e))?i(n,"value")?n.value:void 0!==n.get?n.get.call(c):void 0:s(o=a.getProto(t))?r(o,e,c):void 0}var a=t(46),i=t(30),o=t(22),s=t(38),u=t(4);o(o.S,"Reflect",{get:r})},{22:22,30:30,38:38,4:4,46:46}],147:[function(t,e,n){var r=t(22);r(r.S,"Reflect",{has:function(t,e){return e in t}})},{22:22}],148:[function(t,e,n){var r=t(22),a=t(4),i=Object.isExtensible;r(r.S,"Reflect",{isExtensible:function(t){return a(t),i?i(t):!0}})},{22:22,4:4}],149:[function(t,e,n){var r=t(22);r(r.S,"Reflect",{ownKeys:t(56)})},{22:22,56:56}],150:[function(t,e,n){var r=t(22),a=t(4),i=Object.preventExtensions;r(r.S,"Reflect",{preventExtensions:function(t){a(t);try{return i&&i(t),!0}catch(e){return!1}}})},{22:22,4:4}],151:[function(t,e,n){var r=t(22),a=t(64);a&&r(r.S,"Reflect",{setPrototypeOf:function(t,e){a.check(t,e);try{return a.set(t,e),!0}catch(n){return!1}}})},{22:22,64:64}],152:[function(t,e,n){function r(t,e,n){var o,p,l=arguments.length<4?t:arguments[3],f=a.getDesc(u(t),e);if(!f){if(c(p=a.getProto(t)))return r(p,e,n,l);f=s(0)}return i(f,"value")?f.writable!==!1&&c(l)?(o=a.getDesc(l,e)||s(0),o.value=n,a.setDesc(l,e,o),!0):!1:void 0===f.set?!1:(f.set.call(l,n),!0)}var a=t(46),i=t(30),o=t(22),s=t(59),u=t(4),c=t(38);o(o.S,"Reflect",{set:r})},{22:22,30:30,38:38,4:4,46:46,59:59}],153:[function(t,e,n){var r=t(46),a=t(29),i=t(39),o=t(26),s=a.RegExp,u=s,c=s.prototype,p=/a/g,l=/a/g,f=new s(p)!==p;!t(19)||f&&!t(24)(function(){return l[t(83)("match")]=!1,s(p)!=p||s(l)==l||"/a/i"!=s(p,"i")})||(s=function(t,e){var n=i(t),r=void 0===e;return this instanceof s||!n||t.constructor!==s||!r?f?new u(n&&!r?t.source:t,e):u((n=t instanceof s)?t.source:t,n&&r?o.call(t):e):t},r.each.call(r.getNames(u),function(t){t in s||r.setDesc(s,t,{configurable:!0,get:function(){return u[t]},set:function(e){u[t]=e}})}),c.constructor=s,s.prototype=c,t(61)(a,"RegExp",s)),t(65)("RegExp")},{19:19,24:24,26:26,29:29,39:39,46:46,61:61,65:65,83:83}],154:[function(t,e,n){var r=t(46);t(19)&&"g"!=/./g.flags&&r.setDesc(RegExp.prototype,"flags",{configurable:!0,get:t(26)})},{19:19,26:26,46:46}],155:[function(t,e,n){t(25)("match",1,function(t,e){return function(n){"use strict";var r=t(this),a=void 0==n?void 0:n[e];return void 0!==a?a.call(n,r):RegExp(n)[e](r+"")}})},{25:25}],156:[function(t,e,n){t(25)("replace",2,function(t,e,n){return function(r,a){"use strict";var i=t(this),o=void 0==r?void 0:r[e];return void 0!==o?o.call(r,i,a):n.call(i+"",r,a)}})},{25:25}],157:[function(t,e,n){t(25)("search",1,function(t,e){return function(n){"use strict";var r=t(this),a=void 0==n?void 0:n[e];return void 0!==a?a.call(n,r):RegExp(n)[e](r+"")}})},{25:25}],158:[function(t,e,n){t(25)("split",2,function(t,e,n){return function(r,a){"use strict";var i=t(this),o=void 0==r?void 0:r[e];return void 0!==o?o.call(r,i,a):n.call(i+"",r,a)}})},{25:25}],159:[function(t,e,n){"use strict";var r=t(12);t(15)("Set",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return r.def(this,t=0===t?0:t,t)}},r)},{12:12,15:15}],160:[function(t,e,n){"use strict";var r=t(22),a=t(70)(!1);r(r.P,"String",{codePointAt:function(t){return a(this,t)}})},{22:22,70:70}],161:[function(t,e,n){"use strict";var r=t(22),a=t(79),i=t(71),o="endsWith",s=""[o];r(r.P+r.F*t(23)(o),"String",{endsWith:function(t){var e=i(this,t,o),n=arguments,r=n.length>1?n[1]:void 0,u=a(e.length),c=void 0===r?u:Math.min(a(r),u),p=t+"";return s?s.call(e,p,c):e.slice(c-p.length,c)===p}})},{22:22,23:23,71:71,79:79}],162:[function(t,e,n){var r=t(22),a=t(76),i=String.fromCharCode,o=String.fromCodePoint;r(r.S+r.F*(!!o&&1!=o.length),"String",{fromCodePoint:function(t){for(var e,n=[],r=arguments,o=r.length,s=0;o>s;){if(e=+r[s++],a(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(65536>e?i(e):i(((e-=65536)>>10)+55296,e%1024+56320))}return n.join("")}})},{22:22,76:76}],163:[function(t,e,n){"use strict";var r=t(22),a=t(71),i="includes";r(r.P+r.F*t(23)(i),"String",{includes:function(t){return!!~a(this,t,i).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},{22:22,23:23,71:71}],164:[function(t,e,n){"use strict";var r=t(70)(!0);t(42)(String,"String",function(t){this._t=t+"",this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},{42:42,70:70}],165:[function(t,e,n){var r=t(22),a=t(78),i=t(79);r(r.S,"String",{raw:function(t){for(var e=a(t.raw),n=i(e.length),r=arguments,o=r.length,s=[],u=0;n>u;)s.push(e[u++]+""),o>u&&s.push(r[u]+"");return s.join("")}})},{22:22,78:78,79:79}],166:[function(t,e,n){var r=t(22);r(r.P,"String",{repeat:t(73)})},{22:22,73:73}],167:[function(t,e,n){"use strict";var r=t(22),a=t(79),i=t(71),o="startsWith",s=""[o];r(r.P+r.F*t(23)(o),"String",{startsWith:function(t){var e=i(this,t,o),n=arguments,r=a(Math.min(n.length>1?n[1]:void 0,e.length)),u=t+"";return s?s.call(e,u,r):e.slice(r,r+u.length)===u}})},{22:22,23:23,71:71,79:79}],168:[function(t,e,n){"use strict";t(74)("trim",function(t){return function(){return t(this,3)}})},{74:74}],169:[function(t,e,n){"use strict";var r=t(46),a=t(29),i=t(30),o=t(19),s=t(22),u=t(61),c=t(24),p=t(67),l=t(66),f=t(82),d=t(83),h=t(47),m=t(28),v=t(21),g=t(36),b=t(4),y=t(78),x=t(59),_=r.getDesc,w=r.setDesc,k=r.create,E=m.get,S=a.Symbol,O=a.JSON,C=O&&O.stringify,A=!1,P=d("_hidden"),T=r.isEnum,j=p("symbol-registry"),M=p("symbols"),L="function"==typeof S,F=Object.prototype,N=o&&c(function(){return 7!=k(w({},"a",{get:function(){return w(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=_(F,e);r&&delete F[e],w(t,e,n),r&&t!==F&&w(F,e,r)}:w,R=function(t){var e=M[t]=k(S.prototype);return e._k=t,o&&A&&N(F,t,{configurable:!0,set:function(e){i(this,P)&&i(this[P],t)&&(this[P][t]=!1),N(this,t,x(1,e))}}),e},D=function(t){return"symbol"==typeof t},I=function(t,e,n){return n&&i(M,e)?(n.enumerable?(i(t,P)&&t[P][e]&&(t[P][e]=!1),n=k(n,{enumerable:x(0,!1)})):(i(t,P)||w(t,P,x(1,{})),t[P][e]=!0),N(t,e,n)):w(t,e,n)},q=function(t,e){b(t);for(var n,r=v(e=y(e)),a=0,i=r.length;i>a;)I(t,n=r[a++],e[n]);return t},B=function(t,e){return void 0===e?k(t):q(k(t),e)},V=function(t){var e=T.call(this,t);return e||!i(this,t)||!i(M,t)||i(this,P)&&this[P][t]?e:!0},U=function(t,e){var n=_(t=y(t),e);return!n||!i(M,e)||i(t,P)&&t[P][e]||(n.enumerable=!0),n},z=function(t){for(var e,n=E(y(t)),r=[],a=0;n.length>a;)i(M,e=n[a++])||e==P||r.push(e);return r},W=function(t){for(var e,n=E(y(t)),r=[],a=0;n.length>a;)i(M,e=n[a++])&&r.push(M[e]);return r},H=function(t){if(void 0!==t&&!D(t)){for(var e,n,r=[t],a=1,i=arguments;i.length>a;)r.push(i[a++]);return e=r[1],"function"==typeof e&&(n=e),(n||!g(e))&&(e=function(t,e){return n&&(e=n.call(this,t,e)),D(e)?void 0:e}),r[1]=e,C.apply(O,r)}},G=c(function(){var t=S();return"[null]"!=C([t])||"{}"!=C({a:t})||"{}"!=C(Object(t))});L||(S=function(){if(D(this))throw TypeError("Symbol is not a constructor");return R(f(arguments.length>0?arguments[0]:void 0))},u(S.prototype,"toString",function(){return this._k}),D=function(t){return t instanceof S},r.create=B,r.isEnum=V,r.getDesc=U,r.setDesc=I,r.setDescs=q,r.getNames=m.get=z,r.getSymbols=W,o&&!t(48)&&u(F,"propertyIsEnumerable",V,!0));var K={"for":function(t){return i(j,t+="")?j[t]:j[t]=S(t)},keyFor:function(t){return h(j,t)},useSetter:function(){A=!0},useSimple:function(){A=!1}};r.each.call("hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),function(t){var e=d(t);K[t]=L?e:R(e)}),A=!0,s(s.G+s.W,{Symbol:S}),s(s.S,"Symbol",K),s(s.S+s.F*!L,"Object",{create:B,defineProperty:I,defineProperties:q,getOwnPropertyDescriptor:U,getOwnPropertyNames:z,getOwnPropertySymbols:W}),O&&s(s.S+s.F*(!L||G),"JSON",{stringify:H}),l(S,"Symbol"),l(Math,"Math",!0),l(a.JSON,"JSON",!0)},{19:19,21:21,22:22,24:24,28:28,29:29,30:30,36:36,4:4,46:46,47:47,48:48,59:59,61:61,66:66,67:67,78:78,82:82,83:83}],170:[function(t,e,n){"use strict";var r=t(46),a=t(61),i=t(14),o=t(38),s=t(30),u=i.frozenStore,c=i.WEAK,p=Object.isExtensible||o,l={},f=t(15)("WeakMap",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){if(o(t)){if(!p(t))return u(this).get(t);if(s(t,c))return t[c][this._i]}},set:function(t,e){return i.def(this,t,e)}},i,!0,!0);7!=(new f).set((Object.freeze||Object)(l),7).get(l)&&r.each.call(["delete","has","get","set"],function(t){var e=f.prototype,n=e[t];a(e,t,function(e,r){if(o(e)&&!p(e)){var a=u(this)[t](e,r);return"set"==t?this:a}return n.call(this,e,r)})})},{14:14,15:15,30:30,38:38,46:46,61:61}],171:[function(t,e,n){"use strict";var r=t(14);t(15)("WeakSet",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return r.def(this,t,!0)}},r,!1,!0)},{14:14,15:15}],172:[function(t,e,n){"use strict";var r=t(22),a=t(7)(!0);r(r.P,"Array",{includes:function(t){return a(this,t,arguments.length>1?arguments[1]:void 0)}}),t(3)("includes")},{22:22,3:3,7:7}],173:[function(t,e,n){var r=t(22);r(r.P,"Map",{toJSON:t(13)("Map")})},{13:13,22:22}],174:[function(t,e,n){var r=t(22),a=t(55)(!0);r(r.S,"Object",{entries:function(t){return a(t)}})},{22:22,55:55}],175:[function(t,e,n){var r=t(46),a=t(22),i=t(56),o=t(78),s=t(59);a(a.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,n,a=o(t),u=r.setDesc,c=r.getDesc,p=i(a),l={},f=0;p.length>f;)n=c(a,e=p[f++]),e in l?u(l,e,s(0,n)):l[e]=n;return l}})},{22:22,46:46,56:56,59:59,78:78}],176:[function(t,e,n){var r=t(22),a=t(55)(!1);r(r.S,"Object",{values:function(t){return a(t)}})},{22:22,55:55}],177:[function(t,e,n){var r=t(22),a=t(62)(/[\\^$*+?.()|[\]{}]/g,"\\$&");r(r.S,"RegExp",{escape:function(t){return a(t)}})},{22:22,62:62}],178:[function(t,e,n){var r=t(22);r(r.P,"Set",{toJSON:t(13)("Set")})},{13:13,22:22}],179:[function(t,e,n){"use strict";var r=t(22),a=t(70)(!0);r(r.P,"String",{at:function(t){return a(this,t)}})},{22:22,70:70}],180:[function(t,e,n){"use strict";var r=t(22),a=t(72);r(r.P,"String",{padLeft:function(t){return a(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},{22:22,72:72}],181:[function(t,e,n){"use strict";var r=t(22),a=t(72);r(r.P,"String",{padRight:function(t){return a(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},{22:22,72:72}],182:[function(t,e,n){"use strict";t(74)("trimLeft",function(t){return function(){return t(this,1)}})},{74:74}],183:[function(t,e,n){"use strict";t(74)("trimRight",function(t){return function(){return t(this,2)}})},{74:74}],184:[function(t,e,n){var r=t(46),a=t(22),i=t(17),o=t(16).Array||Array,s={},u=function(t,e){r.each.call(t.split(","),function(t){void 0==e&&t in o?s[t]=o[t]:t in[]&&(s[t]=i(Function.call,[][t],e))})};u("pop,reverse,shift,keys,values,entries",1),u("indexOf,every,some,forEach,map,filter,find,findIndex,includes",3),u("join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill"),a(a.S,"Array",s)},{16:16,17:17,22:22,46:46}],185:[function(t,e,n){t(91);var r=t(29),a=t(31),i=t(45),o=t(83)("iterator"),s=r.NodeList,u=r.HTMLCollection,c=s&&s.prototype,p=u&&u.prototype,l=i.NodeList=i.HTMLCollection=i.Array;c&&!c[o]&&a(c,o,l),p&&!p[o]&&a(p,o,l)},{29:29,31:31,45:45,83:83,91:91}],186:[function(t,e,n){var r=t(22),a=t(75);r(r.G+r.B,{setImmediate:a.set,clearImmediate:a.clear})},{22:22,75:75}],187:[function(t,e,n){var r=t(29),a=t(22),i=t(33),o=t(57),s=r.navigator,u=!!s&&/MSIE .\./.test(s.userAgent),c=function(t){return u?function(e,n){return t(i(o,[].slice.call(arguments,2),"function"==typeof e?e:Function(e)),n)}:t};a(a.G+a.B+a.F*u,{setTimeout:c(r.setTimeout),setInterval:c(r.setInterval)})},{22:22,29:29,33:33,57:57}],188:[function(t,e,n){t(85),t(169),t(124),t(132),t(136),t(137),t(125),t(135),t(134),t(130),t(131),t(129),t(126),t(128),t(133),t(127),t(95),t(94),t(114),t(115),t(116),t(117),t(118),t(119),t(120),t(121),t(122),t(123),t(97),t(98),t(99),t(100),t(101),t(102),t(103),t(104),t(105),t(106),t(107),t(108),t(109),t(110),t(111),t(112),t(113),t(162),t(165),t(168),t(164),t(160),t(161),t(163),t(166),t(167),t(90),t(92),t(91),t(93),t(86),t(87),t(89),t(88),t(153),t(154),t(155),t(156),t(157),t(158),t(138),t(96),t(159),t(170),t(171),t(139),t(140),t(141),t(142),t(143),t(146),t(144),t(145),t(147),t(148),t(149),t(150),t(152),t(151),t(172),t(179),t(180),t(181),t(182),t(183),t(177),t(175),t(176),t(174),t(173),t(178),t(184),t(187),t(186),t(185),e.exports=t(16)},{100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,128:128,129:129,130:130,131:131,132:132,133:133,134:134,135:135,136:136,137:137,138:138,139:139,140:140,141:141,142:142,143:143,144:144,145:145,146:146,147:147,148:148,149:149,150:150,151:151,152:152,153:153,154:154,155:155,156:156,157:157,158:158,159:159,16:16,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99}],189:[function(t,e,n){(function(n){(function(t,n){!function(n){"use strict";function r(t,e,n,r){var a=Object.create((e||i).prototype),o=new h(r||[]);return a._invoke=l(t,n,o),a}function a(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(r){return{type:"throw",arg:r}}}function i(){}function o(){}function s(){}function u(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function c(t){this.arg=t}function p(e){function n(t,n){var r=e[t](n),a=r.value;return a instanceof c?Promise.resolve(a.arg).then(i,o):Promise.resolve(a).then(function(t){return r.value=t,r})}function r(t,e){function r(){return n(t,e)}return a=a?a.then(r,r):new Promise(function(t){t(r())})}"object"==typeof t&&t.domain&&(n=t.domain.bind(n));var a,i=n.bind(e,"next"),o=n.bind(e,"throw");n.bind(e,"return");this._invoke=r}function l(t,e,n){var r=w;return function(i,o){if(r===E)throw Error("Generator is already running");if(r===S){if("throw"===i)throw o;return v()}for(;;){var s=n.delegate;if(s){if("return"===i||"throw"===i&&s.iterator[i]===g){n.delegate=null;var u=s.iterator["return"];if(u){var c=a(u,s.iterator,o);if("throw"===c.type){i="throw",o=c.arg;continue}}if("return"===i)continue}var c=a(s.iterator[i],s.iterator,o);if("throw"===c.type){n.delegate=null,i="throw",o=c.arg;continue}i="next",o=g;var p=c.arg;if(!p.done)return r=k,p;n[s.resultName]=p.value,n.next=s.nextLoc,n.delegate=null}if("next"===i)n._sent=o,r===k?n.sent=o:n.sent=g;else if("throw"===i){if(r===w)throw r=S,o;n.dispatchException(o)&&(i="next",o=g)}else"return"===i&&n.abrupt("return",o);r=E;var c=a(t,e,n);if("normal"===c.type){r=n.done?S:k;var p={value:c.arg,done:n.done};if(c.arg!==O)return p;n.delegate&&"next"===i&&(o=g)}else"throw"===c.type&&(r=S,i="throw",o=c.arg)}}}function f(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function d(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function h(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(f,this),this.reset(!0)}function m(t){if(t){var e=t[y];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,r=function a(){for(;++n=0;--r){var a=this.tryEntries[r],i=a.completion;if("root"===a.tryLoc)return e("end");if(a.tryLoc<=this.prev){var o=b.call(a,"catchLoc"),s=b.call(a,"finallyLoc");if(o&&s){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&b.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),d(n),O}},"catch":function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var a=r.arg;d(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:m(t),resultName:e,nextLoc:n},O}}}("object"==typeof n?n:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,t(202),void 0!==n?n:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{202:202}],190:[function(t,e,n){!function(t){"use strict";function e(){return p.createDocumentFragment()}function n(t){return p.createElement(t)}function r(t){if(1===t.length)return a(t[0]);for(var n=e(),r=q.call(t),i=0;i-1}}([].indexOf||function(t){for(B=this.length;B--&&this[B]!==t;);return B}),item:function(t){return this[t]||null},remove:function(){for(var t,e=0;e=u?e(i):document.fonts.load(c(i,i.family),s).then(function(e){1<=e.length?t(i):setTimeout(f,25)},function(){e(i)})};f()}else n(function(){function n(){var e;(e=-1!=v&&-1!=g||-1!=v&&-1!=b||-1!=g&&-1!=b)&&((e=v!=g&&v!=b&&g!=b)||(null===l&&(e=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),l=!!e&&(536>parseInt(e[1],10)||536===parseInt(e[1],10)&&11>=parseInt(e[2],10))),e=l&&(v==y&&g==y&&b==y||v==x&&g==x&&b==x||v==_&&g==_&&b==_)),e=!e),e&&(null!==w.parentNode&&w.parentNode.removeChild(w),clearTimeout(k),t(i))}function f(){if((new Date).getTime()-p>=u)null!==w.parentNode&&w.parentNode.removeChild(w),e(i);else{var t=document.hidden;(!0===t||void 0===t)&&(v=d.a.offsetWidth,g=h.a.offsetWidth,b=m.a.offsetWidth,n()),k=setTimeout(f,50)}}var d=new r(s),h=new r(s),m=new r(s),v=-1,g=-1,b=-1,y=-1,x=-1,_=-1,w=document.createElement("div"),k=0;w.dir="ltr",a(d,c(i,"sans-serif")),a(h,c(i,"serif")),a(m,c(i,"monospace")),w.appendChild(d.a),w.appendChild(h.a),w.appendChild(m.a),document.body.appendChild(w),y=d.a.offsetWidth,x=h.a.offsetWidth,_=m.a.offsetWidth,f(),o(d,function(t){v=t,n()}),a(d,c(i,'"'+i.family+'",sans-serif')),o(h,function(t){g=t,n()}),a(h,c(i,'"'+i.family+'",serif')),o(m,function(t){b=t,n()}),a(m,c(i,'"'+i.family+'",monospace'))})})},window.FontFaceObserver=s,window.FontFaceObserver.prototype.check=s.prototype.a,void 0!==e&&(e.exports=window.FontFaceObserver)}()},{}],193:[function(t,e,n){!function(t,n){function r(t,e){var n=t.createElement("p"),r=t.getElementsByTagName("head")[0]||t.documentElement;return n.innerHTML="x",r.insertBefore(n.lastChild,r.firstChild)}function a(){var t=x.elements;return"string"==typeof t?t.split(" "):t}function i(t,e){var n=x.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof t&&(t=t.join(" ")),x.elements=n+" "+t,p(e)}function o(t){var e=y[t[g]];return e||(e={},b++,t[g]=b,y[b]=e),e}function s(t,e,r){if(e||(e=n),f)return e.createElement(t);r||(r=o(e));var a;return a=r.cache[t]?r.cache[t].cloneNode():v.test(t)?(r.cache[t]=r.createElem(t)).cloneNode():r.createElem(t),!a.canHaveChildren||m.test(t)||a.tagUrn?a:r.frag.appendChild(a)}function u(t,e){if(t||(t=n),f)return t.createDocumentFragment();e=e||o(t);for(var r=e.frag.cloneNode(),i=0,s=a(),u=s.length;u>i;i++)r.createElement(s[i]);return r}function c(t,e){e.cache||(e.cache={},e.createElem=t.createElement,e.createFrag=t.createDocumentFragment,e.frag=e.createFrag()),t.createElement=function(n){return x.shivMethods?s(n,t,e):e.createElem(n)},t.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+a().join().replace(/[\w\-:]+/g,function(t){return e.createElem(t),e.frag.createElement(t),'c("'+t+'")'})+");return n}")(x,e.frag)}function p(t){t||(t=n);var e=o(t);return!x.shivCSS||l||e.hasCSS||(e.hasCSS=!!r(t,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),f||c(t,e),t}var l,f,d="3.7.3-pre",h=t.html5||{},m=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,v=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g="_html5shiv",b=0,y={};!function(){try{var t=n.createElement("a");t.innerHTML="",l="hidden"in t,f=1==t.childNodes.length||function(){n.createElement("a");var t=n.createDocumentFragment();return void 0===t.cloneNode||void 0===t.createDocumentFragment||void 0===t.createElement}()}catch(e){l=!0,f=!0}}();var x={elements:h.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:d,shivCSS:h.shivCSS!==!1,supportsUnknownElements:f,shivMethods:h.shivMethods!==!1,type:"default",shivDocument:p,createElement:s,createDocumentFragment:u,addElements:i};t.html5=x,p(n),"object"==typeof e&&e.exports&&(e.exports=x)}("undefined"!=typeof window?window:this,document)},{}],194:[function(t,e,n){(function(t){(function(t){!function(t){function e(t,e,n,r){for(var i,o=n.slice(),s=a(e,t),u=0,c=o.length;c>u&&(handler=o[u],"object"==typeof handler?"function"==typeof handler.handleEvent&&handler.handleEvent(s):handler.call(t,s),!s.stoppedImmediatePropagation);u++);return i=!s.stoppedPropagation,r&&i&&t.parentNode?t.parentNode.dispatchEvent(s):!s.defaultPrevented}function n(t,e){return{configurable:!0,get:t,set:e}}function r(t,e,r){var a=b(e||t,r);v(t,"textContent",n(function(){return a.get.call(this)},function(t){a.set.call(this,t)}))}function a(t,e){return t.currentTarget=e,t.eventPhase=t.target===t.currentTarget?2:3,t}function i(t,e){for(var n=t.length;n--&&t[n]!==e;);return n}function o(){if("BR"===this.tagName)return"\n";for(var t=this.firstChild,e=[];t;)8!==t.nodeType&&7!==t.nodeType&&e.push(t.textContent),t=t.nextSibling;return e.join("")}function s(t){var e=document.createEvent("Event");e.initEvent("input",!0,!0),(t.srcElement||t.fromElement||document).dispatchEvent(e)}function u(t){!f&&k.test(document.readyState)&&(f=!f,document.detachEvent(d,u),t=document.createEvent("Event"),t.initEvent(h,!0,!0),document.dispatchEvent(t))}function c(t){for(var e;e=this.lastChild;)this.removeChild(e);null!=t&&this.appendChild(document.createTextNode(t))}function p(e,n){return n||(n=t.event),n.target||(n.target=n.srcElement||n.fromElement||document),n.timeStamp||(n.timeStamp=(new Date).getTime()),n}if(!document.createEvent){var l=!0,f=!1,d="onreadystatechange",h="DOMContentLoaded",m="__IE8__"+Math.random(),v=Object.defineProperty||function(t,e,n){t[e]=n.value},g=Object.defineProperties||function(e,n){for(var r in n)if(y.call(n,r))try{v(e,r,n[r])}catch(a){t.console&&console.log(r+" failed on object:",e,a.message)}},b=Object.getOwnPropertyDescriptor,y=Object.prototype.hasOwnProperty,x=t.Element.prototype,_=t.Text.prototype,w=/^[a-z]+$/,k=/loaded|complete/,E={},S=document.createElement("div"),O=document.documentElement,C=O.removeAttribute,A=O.setAttribute;r(t.HTMLCommentElement.prototype,x,"nodeValue"),r(t.HTMLScriptElement.prototype,null,"text"),r(_,null,"nodeValue"),r(t.HTMLTitleElement.prototype,null,"text"),v(t.HTMLStyleElement.prototype,"textContent",function(t){return n(function(){return t.get.call(this.styleSheet)},function(e){t.set.call(this.styleSheet,e)})}(b(t.CSSStyleSheet.prototype,"cssText"))),g(x,{textContent:{get:o,set:c},firstElementChild:{get:function(){for(var t=this.childNodes||[],e=0,n=t.length;n>e;e++)if(1==t[e].nodeType)return t[e]}},lastElementChild:{get:function(){for(var t=this.childNodes||[],e=t.length;e--;)if(1==t[e].nodeType)return t[e]}},oninput:{get:function(){return this._oninput||null},set:function(t){this._oninput&&(this.removeEventListener("input",this._oninput),this._oninput=t,t&&this.addEventListener("input",t))}},previousElementSibling:{get:function(){for(var t=this.previousSibling;t&&1!=t.nodeType;)t=t.previousSibling;return t}},nextElementSibling:{get:function(){for(var t=this.nextSibling;t&&1!=t.nodeType;)t=t.nextSibling;return t}},childElementCount:{get:function(){for(var t=0,e=this.childNodes||[],n=e.length;n--;t+=1==e[n].nodeType);return t}},addEventListener:{value:function(t,n,r){if("function"==typeof n||"object"==typeof n){var a,o,u=this,c="on"+t,l=u[m]||v(u,m,{value:{}})[m],f=l[c]||(l[c]={}),d=f.h||(f.h=[]);if(!y.call(f,"w")){if(f.w=function(t){return t[m]||e(u,p(u,t),d,!1)},!y.call(E,c))if(w.test(t)){try{a=document.createEventObject(),a[m]=!0,9!=u.nodeType&&(null==u.parentNode&&S.appendChild(u),(o=u.getAttribute(c))&&C.call(u,c)),u.fireEvent(c,a),E[c]=!0}catch(a){for(E[c]=!1;S.hasChildNodes();)S.removeChild(S.firstChild)}null!=o&&A.call(u,c,o)}else E[c]=!1;(f.n=E[c])&&u.attachEvent(c,f.w)}i(d,n)<0&&d[r?"unshift":"push"](n),"input"===t&&u.attachEvent("onkeyup",s)}}},dispatchEvent:{value:function(t){var n,r=this,a="on"+t.type,i=r[m],o=i&&i[a],s=!!o;return t.target||(t.target=r),s?o.n?r.fireEvent(a,t):e(r,t,o.h,!0):(n=r.parentNode)?n.dispatchEvent(t):!0,!t.defaultPrevented}},removeEventListener:{value:function(t,e,n){if("function"==typeof e||"object"==typeof e){var r=this,a="on"+t,o=r[m],s=o&&o[a],u=s&&s.h,c=u?i(u,e):-1;c>-1&&u.splice(c,1)}}}}),g(_,{addEventListener:{value:x.addEventListener},dispatchEvent:{value:x.dispatchEvent},removeEventListener:{value:x.removeEventListener}}),g(t.XMLHttpRequest.prototype,{addEventListener:{value:function(t,e,n){var r=this,a="on"+t,o=r[m]||v(r,m,{value:{}})[m],s=o[a]||(o[a]={}),u=s.h||(s.h=[]);i(u,e)<0&&(r[a]||(r[a]=function(){var e=document.createEvent("Event");e.initEvent(t,!0,!0),r.dispatchEvent(e)}),u[n?"unshift":"push"](e))}},dispatchEvent:{value:function(t){var n=this,r="on"+t.type,a=n[m],i=a&&a[r],o=!!i;return o&&(i.n?n.fireEvent(r,t):e(n,t,i.h,!0))}},removeEventListener:{value:x.removeEventListener}}),g(t.Event.prototype,{bubbles:{value:!0,writable:!0},cancelable:{value:!0,writable:!0},preventDefault:{value:function(){this.cancelable&&(this.defaultPrevented=!0,this.returnValue=!1)}},stopPropagation:{value:function(){this.stoppedPropagation=!0,this.cancelBubble=!0}},stopImmediatePropagation:{value:function(){this.stoppedImmediatePropagation=!0,this.stopPropagation()}},initEvent:{value:function(t,e,n){this.type=t,this.bubbles=!!e,this.cancelable=!!n,this.bubbles||this.stopPropagation()}}}),g(t.HTMLDocument.prototype,{defaultView:{get:function(){return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType?o.call(this):null},set:function(t){11===this.nodeType&&c.call(this,t)}},addEventListener:{value:function(e,n,r){var a=this;x.addEventListener.call(a,e,n,r),l&&e===h&&!k.test(a.readyState)&&(l=!1,a.attachEvent(d,u),t==top&&!function i(t){try{a.documentElement.doScroll("left"),u()}catch(e){setTimeout(i,50)}}())}},dispatchEvent:{value:x.dispatchEvent},removeEventListener:{value:x.removeEventListener},createEvent:{value:function(t){var e;if("Event"!==t)throw Error("unsupported "+t);return e=document.createEventObject(),e.timeStamp=(new Date).getTime(),e}}}),g(t.Window.prototype,{getComputedStyle:{value:function(){function t(t){this._=t}function e(){}var n=/^(?:[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/,r=/^(top|right|bottom|left)$/,a=/\-([a-z])/g,i=function(t,e){return e.toUpperCase()};return t.prototype.getPropertyValue=function(t){var e,o,s,u=this._,c=u.style,p=u.currentStyle,l=u.runtimeStyle;return t=("float"===t?"style-float":t).replace(a,i),e=p?p[t]:c[t],n.test(e)&&!r.test(t)&&(o=c.left,s=l&&l.left,s&&(l.left=p.left),c.left="fontSize"===t?"1em":e,e=c.pixelLeft+"px",c.left=o,s&&(l.left=s)),null==e?e:e+""||"auto"},e.prototype.getPropertyValue=function(){return null},function(n,r){return r?new e(n):new t(n)}}()},addEventListener:{value:function(n,r,a){var o,s=t,u="on"+n;s[u]||(s[u]=function(t){return e(s,p(s,t),o,!1)}),o=s[u][m]||(s[u][m]=[]),i(o,r)<0&&o[a?"unshift":"push"](r)}},dispatchEvent:{value:function(e){var n=t["on"+e.type];return n?n.call(t,e)!==!1&&!e.defaultPrevented:!0}},removeEventListener:{value:function(e,n,r){var a="on"+e,o=(t[a]||Object)[m],s=o?i(o,n):-1;s>-1&&o.splice(s,1)}}}),function(t,e,n){for(n=0;n=s)return(0,u["default"])({points:n});for(var l=1;s-1>=l;l++)i.push((0,c.times)(r,(0,c.minus)(n[l],n[l-1])));for(var f=[(0,c.plus)(n[0],p(i[0],i[1]))],l=1;s-2>=l;l++)f.push((0,c.minus)(n[l],(0,c.average)([i[l],i[l-1]])));f.push((0,c.minus)(n[s-1],p(i[s-2],i[s-3])));var d=f[0],h=f[1],m=n[0],v=n[1],g=(e=(0,o["default"])()).moveto.apply(e,a(m)).curveto(d[0],d[1],h[0],h[1],v[0],v[1]);return{path:(0,c.range)(2,s).reduce(function(t,e){var r=f[e],a=n[e];return t.smoothcurveto(r[0],r[1],a[0],a[1])},g),centroid:(0,c.average)(n)}},e.exports=n["default"]},{198:198,199:199,200:200}],196:[function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);r=!0);}catch(u){a=!0,i=u}finally{try{!r&&s["return"]&&s["return"]()}finally{if(a)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),i=t(197),o=r(i),s=t(198),u=1e-5,c=function(t,e){var n=t.map(e),r=n.sort(function(t,e){var n=a(t,2),r=n[0],i=(n[1],a(e,2)),o=i[0];i[1];return r-o}),i=r.length,o=r[0][0],c=r[i-1][0],p=(0,s.minBy)(r,function(t){return t[1]}),l=(0,s.maxBy)(r,function(t){return t[1]});return o==c&&(c+=u),p==l&&(l+=u),{points:r,xmin:o,xmax:c,ymin:p,ymax:l}};n["default"]=function(t){var e=t.data,n=t.xaccessor,r=t.yaccessor,i=t.width,u=t.height,p=t.closed,l=t.min,f=t.max;n||(n=function(t){var e=a(t,2),n=e[0];e[1];return n}),r||(r=function(t){var e=a(t,2),n=(e[0],e[1]);return n});var d=function(t){return[n(t),r(t)]},h=e.map(function(t){return c(t,d)}),m=(0,s.minBy)(h,function(t){return t.xmin}),v=(0,s.maxBy)(h,function(t){return t.xmax}),g=null==l?(0,s.minBy)(h,function(t){return t.ymin}):l,b=null==f?(0,s.maxBy)(h,function(t){return t.ymax}):f;p&&(g=Math.min(g,0),b=Math.max(b,0));var y=p?0:g,x=(0,o["default"])([m,v],[0,i]),_=(0,o["default"])([g,b],[u,0]),w=function(t){var e=a(t,2),n=e[0],r=e[1];return[x(n),_(r)]};return{arranged:h,scale:w,xscale:x,yscale:_,base:y}},e.exports=n["default"]},{197:197,198:198}],197:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function t(t,e){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);r=!0);}catch(u){a=!0,i=u}finally{try{!r&&s["return"]&&s["return"]()}finally{if(a)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=function i(t,e){var n=r(t,2),a=n[0],o=n[1],s=r(e,2),u=s[0],c=s[1],p=function(t){return u+(c-u)*(t-a)/(o-a)};return p.inverse=function(){return i([u,c],[a,o])},p};n["default"]=a,e.exports=n["default"]},{}],198:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function t(t,e){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);r=!0);}catch(u){a=!0,i=u}finally{try{!r&&s["return"]&&s["return"]()}finally{if(a)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=function(t){return t.reduce(function(t,e){return t+e},0)},i=function(t){return t.reduce(function(t,e){return Math.min(t,e)})},o=function(t){return t.reduce(function(t,e){return Math.max(t,e)})},s=function(t,e){return t.reduce(function(t,n){return t+e(n)},0)},u=function(t,e){return t.reduce(function(t,n){return Math.min(t,e(n))},1/0)},c=function(t,e){return t.reduce(function(t,n){return Math.max(t,e(n))},-(1/0))},p=function(t,e){var n=r(t,2),a=n[0],i=n[1],o=r(e,2),s=o[0],u=o[1];return[a+s,i+u]},l=function(t,e){var n=r(t,2),a=n[0],i=n[1],o=r(e,2),s=o[0],u=o[1];return[a-s,i-u]},f=function(t,e){var n=r(e,2),a=n[0],i=n[1];return[t*a,t*i]},d=function(t){var e=r(t,2),n=e[0],a=e[1];return Math.sqrt(n*n+a*a)},h=function(t){return t.reduce(p,[0,0])},m=function(t){return f(1/t.length,t.reduce(p))},v=function(t,e){return f(t,[Math.sin(e),-Math.cos(e)])},g=function(t,e){var n=t||{};for(var r in n){var a=n[r];e[r]=a(e.index,e.item,e.group)}return e},b=function(t,e,n){for(var r=[],a=t;e>a;a++)r.push(a);return n&&r.push(e),r},y=function(t,e){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=Object.keys(t)[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var u=o.value,c=t[u];n.push(e(u,c))}}catch(p){a=!0,i=p}finally{try{!r&&s["return"]&&s["return"]()}finally{if(a)throw i}}return n},x=function(t){return y(t,function(t,e){return[t,e]})},_=function(t){return t};n.sum=a,n.min=i,n.max=o,n.sumBy=s,n.minBy=u,n.maxBy=c,n.plus=p,n.minus=l,n.times=f,n.id=_,n.length=d,n.sumVectors=h,n.average=m,n.onCircle=v,n.enhance=g,n.range=b,n.mapObject=y,n.pairs=x,n["default"]={sum:a,min:i,max:o,sumBy:s,minBy:u,maxBy:c,plus:p,minus:l,times:f,id:_,length:d,sumVectors:h,average:m,onCircle:v,enhance:g,range:b,mapObject:y,pairs:x}},{}],199:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function t(t,e){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);r=!0);}catch(u){a=!0,i=u}finally{try{!r&&s["return"]&&s["return"]()}finally{if(a)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=function i(t){var e=t||[],n=function(t,e){var n=t.slice(0,t.length);return n.push(e),n},a=function(t,e){var n=r(t,2),a=n[0],i=n[1],o=r(e,2),s=o[0],u=o[1];return a===s&&i===u},o=function(t,e){for(var n=t.length;"0"===t.charAt(n-1);)n-=1;return"."===t.charAt(n-1)&&(n-=1),t.substr(0,n)},s=function(t,e){var n=t.toFixed(e);return o(n)},u=function(t){var e=t.command,n=t.params,r=n.map(function(t){return s(t,6)});return e+" "+r.join(" ")},c=function(t,e){var n=t.command,a=t.params,i=r(e,2),o=i[0],s=i[1];switch(n){case"M":return[a[0],a[1]];case"L":return[a[0],a[1]];case"H":return[a[0],s];case"V":return[o,a[0]];case"Z":return null;case"C":return[a[4],a[5]];case"S":return[a[2],a[3]];case"Q":return[a[2],a[3]];case"T":return[a[0],a[1]];case"A":return[a[5],a[6]]}},p=function(t,e){return function(n){var r="object"==typeof n?t.map(function(t){return n[t]}):arguments;return e.apply(null,r)}},l=function(t){return i(n(e,t))};return{moveto:p(["x","y"],function(t,e){return l({command:"M",params:[t,e]})}),lineto:p(["x","y"],function(t,e){return l({command:"L",params:[t,e]})}),hlineto:p(["x"],function(t){return l({command:"H",params:[t]})}),vlineto:p(["y"],function(t){return l({command:"V",params:[t]})}),closepath:function(){return l({command:"Z",params:[]})},curveto:p(["x1","y1","x2","y2","x","y"],function(t,e,n,r,a,i){return l({command:"C",params:[t,e,n,r,a,i]})}),smoothcurveto:p(["x2","y2","x","y"],function(t,e,n,r){return l({command:"S",params:[t,e,n,r]})}),qcurveto:p(["x1","y1","x","y"],function(t,e,n,r){return l({command:"Q",params:[t,e,n,r]})}),smoothqcurveto:p(["x","y"],function(t,e){return l({command:"T",params:[t,e]})}),arc:p(["rx","ry","xrot","largeArcFlag","sweepFlag","x","y"],function(t,e,n,r,a,i,o){return l({command:"A",params:[t,e,n,r,a,i,o]})}),print:function(){return e.map(u).join(" ")},points:function(){var t=[],n=[0,0],r=!0,a=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var u=o.value,p=c(u,n);n=p,p&&t.push(p)}}catch(l){a=!0,i=l}finally{try{!r&&s["return"]&&s["return"]()}finally{if(a)throw i}}return t},instructions:function(){return e.slice(0,e.length)},connect:function(t){var e=this.points(),n=e[e.length-1],r=t.points()[0],o=t.instructions().slice(1);return a(n,r)||o.unshift({command:"L",params:r}),i(this.instructions().concat(o))}}};n["default"]=function(){return a()},e.exports=n["default"]},{}],200:[function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function a(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1)for(var n=1;n1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];for(var a,i;i=n.shift();)for(a in i)Mo.call(i,a)&&(t[a]=i[a]);return t}function a(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];return n.forEach(function(e){for(var n in e)!e.hasOwnProperty(n)||n in t||(t[n]=e[n])}),t}function i(t){return"[object Array]"===Lo.call(t)}function o(t){return Fo.test(Lo.call(t))}function s(t,e){return null===t&&null===e?!0:"object"==typeof t||"object"==typeof e?!1:t===e}function u(t){return!isNaN(parseFloat(t))&&isFinite(t)}function c(t){return t&&"[object Object]"===Lo.call(t)}function p(t,e){return t.replace(/%s/g,function(){return e.shift()})}function l(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];throw t=p(t,n),Error(t)}function f(){Mv.DEBUG&&Po.apply(null,arguments)}function d(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];t=p(t,n),To(t,n)}function h(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];t=p(t,n),No[t]||(No[t]=!0,To(t,n))}function m(){Mv.DEBUG&&d.apply(null,arguments)}function v(){Mv.DEBUG&&h.apply(null,arguments)}function g(t,e,n){var r=b(t,e,n);return r?r[t][n]:null}function b(t,e,n){for(;e;){if(n in e[t])return e;if(e.isolated)return null;e=e.parent}}function y(t){return function(){return t}}function x(t){var e,n,r,a,i,o;for(e=t.split("."),(n=Wo[e.length])||(n=_(e.length)),i=[],r=function(t,n){return t?"*":e[n]},a=n.length;a--;)o=n[a].map(r).join("."),i.hasOwnProperty(o)||(i.push(o),i[o]=!0);return i}function _(t){var e,n,r,a,i,o,s,u,c="";if(!Wo[t]){for(r=[];c.length=i;i+=1){for(n=i.toString(2);n.lengtho;o++)u.push(a(n[o]));r[i]=u}Wo[t]=r}return Wo[t]}function w(t,e,n,r){var a=t[e];if(!a||!a.equalsOrStartsWith(r)&&a.equalsOrStartsWith(n))return t[e]=a?a.replace(n,r):r,!0}function k(t){var e=t.slice(2);return"i"===t[1]&&u(e)?+e:e}function E(t){return null==t?t:(Ko.hasOwnProperty(t)||(Ko[t]=new $o(t)),Ko[t])}function S(t,e){function n(e,n){var r,a,o;return n.isRoot?o=[].concat(Object.keys(t.viewmodel.data),Object.keys(t.viewmodel.mappings),Object.keys(t.viewmodel.computations)):(r=t.viewmodel.wrapped[n.str],a=r?r.get():t.viewmodel.get(n),o=a?Object.keys(a):null),o&&o.forEach(function(t){"_ractive"===t&&i(a)||e.push(n.join(t))}),e}var r,a,o;for(r=e.str.split("."),o=[Yo];a=r.shift();)"*"===a?o=o.reduce(n,[]):o[0]===Yo?o[0]=E(a):o=o.map(O(a));return o}function O(t){return function(e){return e.join(t)}}function C(t){return t?t.replace(Ho,".$1"):""}function A(t,e,n){if("string"!=typeof e||!u(n))throw Error("Bad arguments");var r=void 0,a=void 0;if(/\*/.test(e))return a={},S(t,E(C(e))).forEach(function(e){var r=t.viewmodel.get(e);if(!u(r))throw Error(Zo);a[e.str]=r+n}),t.set(a);if(r=t.get(e),!u(r))throw Error(Zo);return t.set(e,+r+n)}function P(t,e){return Jo(this,t,void 0===e?1:+e)}function T(t){this.event=t,this.method="on"+t,this.deprecate=rs[t]}function j(t,e){var n=t.indexOf(e);-1===n&&t.push(e)}function M(t,e){for(var n=0,r=t.length;r>n;n++)if(t[n]==e)return!0;return!1}function L(t,e){var n;if(!i(t)||!i(e))return!1;if(t.length!==e.length)return!1;for(n=t.length;n--;)if(t[n]!==e[n])return!1;return!0}function F(t){return"string"==typeof t?[t]:void 0===t?[]:t;
-}function N(t){return t[t.length-1]}function R(t,e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}function D(t){for(var e=[],n=t.length;n--;)e[n]=t[n];return e}function I(t){setTimeout(t,0)}function q(t,e){return function(){for(var n;n=t.shift();)n(e)}}function B(t,e,n,r){var a;if(e===t)throw new TypeError("A promise's fulfillment handler cannot return the same promise");if(e instanceof as)e.then(n,r);else if(!e||"object"!=typeof e&&"function"!=typeof e)n(e);else{try{a=e.then}catch(i){return void r(i)}if("function"==typeof a){var o,s,u;s=function(e){o||(o=!0,B(t,e,n,r))},u=function(t){o||(o=!0,r(t))};try{a.call(e,s,u)}catch(i){if(!o)return r(i),void(o=!0)}}else n(e)}}function V(t,e,n){var r;return e=C(e),"~/"===e.substr(0,2)?(r=E(e.substring(2)),W(t,r.firstKey,n)):"."===e[0]?(r=U(ps(n),e),r&&W(t,r.firstKey,n)):r=z(t,E(e),n),r}function U(t,e){var n;if(void 0!=t&&"string"!=typeof t&&(t=t.str),"."===e)return E(t);if(n=t?t.split("."):[],"../"===e.substr(0,3)){for(;"../"===e.substr(0,3);){if(!n.length)throw Error('Could not resolve reference - too many "../" prefixes');n.pop(),e=e.substring(3)}return n.push(e),E(n.join("."))}return E(t?t+e.replace(/^\.\//,"."):e.replace(/^\.\/?/,""))}function z(t,e,n,r){var a,i,o,s,u;if(e.isRoot)return e;for(i=e.firstKey;n;)if(a=n.context,n=n.parent,a&&(s=!0,o=t.viewmodel.get(a),o&&("object"==typeof o||"function"==typeof o)&&i in o))return a.join(e.str);return H(t.viewmodel,i)?e:t.parent&&!t.isolated&&(s=!0,n=t.component.parentFragment,i=E(i),u=z(t.parent,i,n,!0))?(t.viewmodel.map(i,{origin:t.parent.viewmodel,keypath:u}),e):r||s?void 0:(t.viewmodel.set(e,void 0),e)}function W(t,e){var n;!t.parent||t.isolated||H(t.viewmodel,e)||(e=E(e),(n=z(t.parent,e,t.component.parentFragment,!0))&&t.viewmodel.map(e,{origin:t.parent.viewmodel,keypath:n}))}function H(t,e){return""===e||e in t.data||e in t.computations||e in t.mappings}function G(t){t.teardown()}function K(t){t.unbind()}function $(t){t.unrender()}function Q(t){t.cancel()}function Y(t){t.detach()}function J(t){t.detachNodes()}function Z(t){!t.ready||t.outros.length||t.outroChildren||(t.outrosComplete||(t.parent?t.parent.decrementOutros(t):t.detachNodes(),t.outrosComplete=!0),t.intros.length||t.totalChildren||("function"==typeof t.callback&&t.callback(),t.parent&&t.parent.decrementTotal()))}function X(){for(var t,e,n;ds.ractives.length;)e=ds.ractives.pop(),n=e.viewmodel.applyChanges(),n&&gs.fire(e,n);for(tt(),t=0;t=0;i--)a=t._subs[e[i]],a&&(s=gt(t,a,n,r)&&s);if(zs.dequeue(t),t.parent&&s){if(o&&t.component){var u=t.component.name+"."+e[e.length-1];e=E(u).wildcardMatches(),n&&(n.component=t)}vt(t.parent,e,n,r)}}function gt(t,e,n,r){var a=null,i=!1;n&&!n._noArg&&(r=[n].concat(r)),e=e.slice();for(var o=0,s=e.length;s>o;o+=1)e[o].apply(t,r)===!1&&(i=!0);return n&&!n._noArg&&i&&(a=n.original)&&(a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation()),!i}function bt(t){var e={args:Array.prototype.slice.call(arguments,1)};Ws(this,t,e)}function yt(t){var e;return t=E(C(t)),e=this.viewmodel.get(t,Ks),void 0===e&&this.parent&&!this.isolated&&ls(this,t.str,this.component.parentFragment)&&(e=this.viewmodel.get(t)),e}function xt(e,n){if(!this.fragment.rendered)throw Error("The API has changed - you must call `ractive.render(target[, anchor])` to render your Ractive instance. Once rendered you can use `ractive.insert()`.");if(e=t(e),n=t(n)||null,!e)throw Error("You must specify a valid target to insert into");e.insertBefore(this.detach(),n),this.el=e,(e.__ractive_instances__||(e.__ractive_instances__=[])).push(this),this.detached=null,_t(this)}function _t(t){Qs.fire(t),t.findAllComponents("*").forEach(function(t){_t(t.instance)})}function wt(t,e,n){var r,a;return t=E(C(t)),r=this.viewmodel.get(t),i(r)&&i(e)?(a=bs.start(this,!0),this.viewmodel.merge(t,r,e,n),bs.end(),a):this.set(t,e,n&&n.complete)}function kt(t,e){var n,r;return n=S(t,e),r={},n.forEach(function(e){r[e.str]=t.get(e.str)}),r}function Et(t,e,n,r){var a,i,o;e=E(C(e)),r=r||pu,e.isPattern?(a=new uu(t,e,n,r),t.viewmodel.patternObservers.push(a),i=!0):a=new Xs(t,e,n,r),a.init(r.init),t.viewmodel.register(e,a,i?"patternObservers":"observers"),a.ready=!0;var s={cancel:function(){var n;o||(i?(n=t.viewmodel.patternObservers.indexOf(a),t.viewmodel.patternObservers.splice(n,1),t.viewmodel.unregister(e,a,"patternObservers")):t.viewmodel.unregister(e,a,"observers"),o=!0)}};return t._observers.push(s),s}function St(t,e,n){var r,a,i,o;if(c(t)){n=e,a=t,r=[];for(t in a)a.hasOwnProperty(t)&&(e=a[t],r.push(this.observe(t,e,n)));return{cancel:function(){for(;r.length;)r.pop().cancel()}}}if("function"==typeof t)return n=e,e=t,t="",cu(this,t,e,n);if(i=t.split(" "),1===i.length)return cu(this,t,e,n);for(r=[],o=i.length;o--;)t=i[o],t&&r.push(cu(this,t,e,n));return{cancel:function(){for(;r.length;)r.pop().cancel()}}}function Ot(t,e,n){var r=this.observe(t,function(){e.apply(this,arguments),r.cancel()},{init:!1,defer:n&&n.defer});return r}function Ct(t,e){var n,r=this;if(t)n=t.split(" ").map(du).filter(hu),n.forEach(function(t){var n,a;(n=r._subs[t])&&(e?(a=n.indexOf(e),-1!==a&&n.splice(a,1)):r._subs[t]=[])});else for(t in this._subs)delete this._subs[t];return this}function At(t,e){var n,r,a,i=this;if("object"==typeof t){n=[];for(r in t)t.hasOwnProperty(r)&&n.push(this.on(r,t[r]));return{cancel:function(){for(var t;t=n.pop();)t.cancel()}}}return a=t.split(" ").map(du).filter(hu),a.forEach(function(t){(i._subs[t]||(i._subs[t]=[])).push(e)}),{cancel:function(){return i.off(t,e)}}}function Pt(t,e){var n=this.on(t,function(){e.apply(this,arguments),n.cancel()});return n}function Tt(t,e,n){var r,a,i,o,s,u,c=[];if(r=jt(t,e,n),!r)return null;for(a=t.length,s=r.length-2-r[1],i=Math.min(a,r[0]),o=i+r[1],u=0;i>u;u+=1)c.push(u);for(;o>u;u+=1)c.push(-1);for(;a>u;u+=1)c.push(u+s);return 0!==s?c.touchedFrom=r[0]:c.touchedFrom=t.length,c}function jt(t,e,n){switch(e){case"splice":for(void 0!==n[0]&&n[0]<0&&(n[0]=t.length+Math.max(n[0],-t.length));n.length<2;)n.push(0);return n[1]=Math.min(n[1],t.length-n[0]),n;case"sort":case"reverse":return null;case"pop":return t.length?[t.length-1,1]:[0,0];case"push":return[t.length,0].concat(n);case"shift":return[0,t.length?1:0];case"unshift":return[0,0].concat(n)}}function Mt(e,n){var r,a,i,o=this;if(i=this.transitionsEnabled,this.noIntro&&(this.transitionsEnabled=!1),r=bs.start(this,!0),bs.scheduleTask(function(){return ju.fire(o)},!0),this.fragment.rendered)throw Error("You cannot call ractive.render() on an already rendered instance! Call ractive.unrender() first");if(e=t(e)||this.el,n=t(n)||this.anchor,this.el=e,this.anchor=n,!this.append&&e){var s=e.__ractive_instances__;s&&s.length&&Lt(s),e.innerHTML=""}return this.cssId&&Pu.apply(),e&&((a=e.__ractive_instances__)?a.push(this):e.__ractive_instances__=[this],n?e.insertBefore(this.fragment.render(),n):e.appendChild(this.fragment.render())),bs.end(),this.transitionsEnabled=i,r.then(function(){return Mu.fire(o)})}function Lt(t){t.splice(0,t.length).forEach(G)}function Ft(t,e){for(var n=t.slice(),r=e.length;r--;)~n.indexOf(e[r])||n.push(e[r]);return n}function Nt(t,e){var n,r,a;return r='[data-ractive-css~="{'+e+'}"]',a=function(t){var e,n,a,i,o,s,u,c=[];for(e=[];n=Iu.exec(t);)e.push({str:n[0],base:n[1],modifiers:n[2]});for(i=e.map(Dt),u=e.length;u--;)s=i.slice(),a=e[u],s[u]=a.base+r+a.modifiers||"",o=i.slice(),o[u]=r+" "+o[u],c.push(s.join(" "),o.join(" "));return c.join(", ")},n=Bu.test(t)?t.replace(Bu,r):t.replace(Du,"").replace(Ru,function(t,e){var n,r;return qu.test(e)?t:(n=e.split(",").map(Rt),r=n.map(a).join(", ")+" ",t.replace(e,r))})}function Rt(t){return t.trim?t.trim():t.replace(/^\s+/,"").replace(/\s+$/,"")}function Dt(t){return t.str}function It(t){t&&t.constructor!==Object&&("function"==typeof t||("object"!=typeof t?l("data option must be an object or a function, `"+t+"` is not valid"):m("If supplied, options.data should be a plain JavaScript object - using a non-POJO as the root object may work, but is discouraged")))}function qt(t,e){It(e);var n="function"==typeof t,r="function"==typeof e;return e||n||(e={}),n||r?function(){var a=r?Bt(e,this):e,i=n?Bt(t,this):t;return Vt(a,i)}:Vt(e,t)}function Bt(t,e){var n=t.call(e);if(n)return"object"!=typeof n&&l("Data function must return an object"),n.constructor!==Object&&v("Data function returned something other than a plain JavaScript object. This might work, but is strongly discouraged"),n}function Vt(t,e){if(t&&e){for(var n in e)n in t||(t[n]=e[n]);return t}return t||e}function Ut(t){var e=Eo($u);return e.parse=function(e,n){return zt(e,n||t)},e}function zt(t,e){if(!Gu)throw Error("Missing Ractive.parse - cannot parse template. Either preparse or use the version that includes the parser");return Gu(t,e||this.options)}function Wt(t,e){var n;if(!Zi){if(e&&e.noThrow)return;throw Error("Cannot retrieve template #"+t+" as Ractive is not running in a browser.")}if(Ht(t)&&(t=t.substring(1)),!(n=document.getElementById(t))){if(e&&e.noThrow)return;throw Error("Could not find template element with id #"+t)}if("SCRIPT"!==n.tagName.toUpperCase()){if(e&&e.noThrow)return;throw Error("Template element with id #"+t+", must be a i;)c(r,a=t[i++])&&(~P(o,a)||o.push(a));return o}},B=function(){};i(i.S,"Object",{getPrototypeOf:r.getProto=r.getProto||function(t){return t=g(t),c(t,k)?t[k]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?C:null},getOwnPropertyNames:r.getNames=r.getNames||I(N,N.length,!0),create:r.create=r.create||function(t,e){var n;return null!==t?(B.prototype=h(t),n=new B,B.prototype=null,n[k]=t):n=F(),void 0===e?n:R(n,e)},keys:r.getKeys=r.getKeys||I(L,D,!1)});var q=function(t,e,n){if(!(e in j)){for(var a=[],r=0;e>r;r++)a[r]="a["+r+"]";j[e]=Function("F,a","return new F("+a.join(",")+")")}return j[e](t,n)};i(i.P,"Function",{bind:function(t){var e=m(this),n=O.call(arguments,1),a=function(){var r=n.concat(O.call(arguments));return this instanceof a?q(e,r.length,r):f(e,r,t)};return v(e.prototype)&&(a.prototype=e.prototype),a}}),i(i.P+i.F*d(function(){u&&O.call(u)}),"Array",{slice:function(t,e){var n=x(this.length),a=l(this);if(e=void 0===e?n:e,"Array"==a)return O.call(this,t,e);for(var r=_(t,n),i=_(e,n),o=x(i-r),s=Array(o),u=0;o>u;u++)s[u]="String"==a?this.charAt(r+u):this[r+u];return s}}),i(i.P+i.F*(w!=Object),"Array",{join:function(t){return A.call(w(this),void 0===t?",":t)}}),i(i.S,"Array",{isArray:t(36)});var G=function(t){return function(e,n){m(e);var a=w(this),r=x(a.length),i=t?r-1:0,o=t?-1:1;if(arguments.length<2)for(;;){if(i in a){n=a[i],i+=o;break}if(i+=o,t?0>i:i>=r)throw TypeError("Reduce of empty array with no initial value")}for(;t?i>=0:r>i;i+=o)i in a&&(n=e(n,a[i],i,this));return n}},U=function(t){return function(e){return t(this,e,arguments[1])}};i(i.P,"Array",{forEach:r.each=r.each||U(E(0)),map:U(E(1)),filter:U(E(2)),some:U(E(3)),every:U(E(4)),reduce:G(!1),reduceRight:G(!0),indexOf:U(P),lastIndexOf:function(t,e){var n=b(this),a=x(n.length),r=a-1;for(arguments.length>1&&(r=Math.min(r,y(e))),0>r&&(r=x(a+r));r>=0;r--)if(r in n&&n[r]===t)return r;return-1}}),i(i.S,"Date",{now:function(){return+new Date}});var V=function(t){return t>9?t:"0"+t};i(i.P+i.F*(d(function(){return"0385-07-25T07:06:39.999Z"!=new Date(-5e13-1).toISOString()})||!d(function(){new Date(NaN).toISOString()})),"Date",{toISOString:function(){if(!isFinite(this))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),a=0>e?"-":e>9999?"+":"";return a+("00000"+Math.abs(e)).slice(a?-6:-4)+"-"+V(t.getUTCMonth()+1)+"-"+V(t.getUTCDate())+"T"+V(t.getUTCHours())+":"+V(t.getUTCMinutes())+":"+V(t.getUTCSeconds())+"."+(n>99?n:"0"+V(n))+"Z"}})},{11:11,19:19,2:2,20:20,22:22,24:24,30:30,32:32,33:33,34:34,36:36,38:38,4:4,46:46,59:59,7:7,76:76,77:77,78:78,79:79,8:8,80:80,82:82}],86:[function(t,e,n){var a=t(22);a(a.P,"Array",{copyWithin:t(5)}),t(3)("copyWithin")},{22:22,3:3,5:5}],87:[function(t,e,n){var a=t(22);a(a.P,"Array",{fill:t(6)}),t(3)("fill")},{22:22,3:3,6:6}],88:[function(t,e,n){"use strict";var a=t(22),r=t(8)(6),i="findIndex",o=!0;i in[]&&Array(1)[i](function(){o=!1}),a(a.P+a.F*o,"Array",{findIndex:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(3)(i)},{22:22,3:3,8:8}],89:[function(t,e,n){"use strict";var a=t(22),r=t(8)(5),i="find",o=!0;i in[]&&Array(1)[i](function(){o=!1}),a(a.P+a.F*o,"Array",{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(3)(i)},{22:22,3:3,8:8}],90:[function(t,e,n){"use strict";var a=t(17),r=t(22),i=t(80),o=t(40),s=t(35),u=t(79),p=t(84);r(r.S+r.F*!t(43)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,r,c,l=i(t),f="function"==typeof this?this:Array,d=arguments,h=d.length,m=h>1?d[1]:void 0,v=void 0!==m,g=0,b=p(l);if(v&&(m=a(m,h>2?d[2]:void 0,2)),void 0==b||f==Array&&s(b))for(e=u(l.length),n=new f(e);e>g;g++)n[g]=v?m(l[g],g):l[g];else for(c=b.call(l),n=new f;!(r=c.next()).done;g++)n[g]=v?o(c,m,[r.value,g],!0):r.value;return n.length=g,n}})},{17:17,22:22,35:35,40:40,43:43,79:79,80:80,84:84}],91:[function(t,e,n){"use strict";var a=t(3),r=t(44),i=t(45),o=t(78);e.exports=t(42)(Array,"Array",function(t,e){this._t=o(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,r(1)):"keys"==e?r(0,n):"values"==e?r(0,t[n]):r(0,[n,t[n]])},"values"),i.Arguments=i.Array,a("keys"),a("values"),a("entries")},{3:3,42:42,44:44,45:45,78:78}],92:[function(t,e,n){"use strict";var a=t(22);a(a.S+a.F*t(24)(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,e=arguments,n=e.length,a=new("function"==typeof this?this:Array)(n);n>t;)a[t]=e[t++];return a.length=n,a}})},{22:22,24:24}],93:[function(t,e,n){t(65)("Array")},{65:65}],94:[function(t,e,n){"use strict";var a=t(46),r=t(38),i=t(83)("hasInstance"),o=Function.prototype;i in o||a.setDesc(o,i,{value:function(t){if("function"!=typeof this||!r(t))return!1;if(!r(this.prototype))return t instanceof this;for(;t=a.getProto(t);)if(this.prototype===t)return!0;return!1}})},{38:38,46:46,83:83}],95:[function(t,e,n){var a=t(46).setDesc,r=t(59),i=t(30),o=Function.prototype,s=/^\s*function ([^ (]*)/,u="name";u in o||t(19)&&a(o,u,{configurable:!0,get:function(){var t=(""+this).match(s),e=t?t[1]:"";return i(this,u)||a(this,u,r(5,e)),e}})},{19:19,30:30,46:46,59:59}],96:[function(t,e,n){"use strict";var a=t(12);t(15)("Map",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=a.getEntry(this,t);return e&&e.v},set:function(t,e){return a.def(this,0===t?0:t,e)}},a,!0)},{12:12,15:15}],97:[function(t,e,n){var a=t(22),r=t(50),i=Math.sqrt,o=Math.acosh;a(a.S+a.F*!(o&&710==Math.floor(o(Number.MAX_VALUE))),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:r(t-1+i(t-1)*i(t+1))}})},{22:22,50:50}],98:[function(t,e,n){function a(t){return isFinite(t=+t)&&0!=t?0>t?-a(-t):Math.log(t+Math.sqrt(t*t+1)):t}var r=t(22);r(r.S,"Math",{asinh:a})},{22:22}],99:[function(t,e,n){var a=t(22);a(a.S,"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},{22:22}],100:[function(t,e,n){var a=t(22),r=t(51);a(a.S,"Math",{cbrt:function(t){return r(t=+t)*Math.pow(Math.abs(t),1/3)}})},{22:22,51:51}],101:[function(t,e,n){var a=t(22);a(a.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},{22:22}],102:[function(t,e,n){var a=t(22),r=Math.exp;a(a.S,"Math",{cosh:function(t){return(r(t=+t)+r(-t))/2}})},{22:22}],103:[function(t,e,n){var a=t(22);a(a.S,"Math",{expm1:t(49)})},{22:22,49:49}],104:[function(t,e,n){var a=t(22),r=t(51),i=Math.pow,o=i(2,-52),s=i(2,-23),u=i(2,127)*(2-s),p=i(2,-126),c=function(t){return t+1/o-1/o};a(a.S,"Math",{fround:function(t){var e,n,a=Math.abs(t),i=r(t);return p>a?i*c(a/p/s)*p*s:(e=(1+s/o)*a,n=e-(e-a),n>u||n!=n?i*(1/0):i*n)}})},{22:22,51:51}],105:[function(t,e,n){var a=t(22),r=Math.abs;a(a.S,"Math",{hypot:function(t,e){for(var n,a,i=0,o=0,s=arguments,u=s.length,p=0;u>o;)n=r(s[o++]),n>p?(a=p/n,i=i*a*a+1,p=n):n>0?(a=n/p,i+=a*a):i+=n;return p===1/0?1/0:p*Math.sqrt(i)}})},{22:22}],106:[function(t,e,n){var a=t(22),r=Math.imul;a(a.S+a.F*t(24)(function(){return-5!=r(4294967295,5)||2!=r.length}),"Math",{imul:function(t,e){var n=65535,a=+t,r=+e,i=n&a,o=n&r;return 0|i*o+((n&a>>>16)*o+i*(n&r>>>16)<<16>>>0)}})},{22:22,24:24}],107:[function(t,e,n){var a=t(22);a(a.S,"Math",{log10:function(t){return Math.log(t)/Math.LN10}})},{22:22}],108:[function(t,e,n){var a=t(22);a(a.S,"Math",{log1p:t(50)})},{22:22,50:50}],109:[function(t,e,n){var a=t(22);a(a.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},{22:22}],110:[function(t,e,n){var a=t(22);a(a.S,"Math",{sign:t(51)})},{22:22,51:51}],111:[function(t,e,n){var a=t(22),r=t(49),i=Math.exp;a(a.S+a.F*t(24)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(r(t)-r(-t))/2:(i(t-1)-i(-t-1))*(Math.E/2)}})},{22:22,24:24,49:49}],112:[function(t,e,n){var a=t(22),r=t(49),i=Math.exp;a(a.S,"Math",{tanh:function(t){var e=r(t=+t),n=r(-t);return e==1/0?1:n==1/0?-1:(e-n)/(i(t)+i(-t))}})},{22:22,49:49}],113:[function(t,e,n){var a=t(22);a(a.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},{22:22}],114:[function(t,e,n){"use strict";var a=t(46),r=t(29),i=t(30),o=t(11),s=t(81),u=t(24),p=t(74).trim,c="Number",l=r[c],f=l,d=l.prototype,h=o(a.create(d))==c,m="trim"in String.prototype,v=function(t){
+var e=s(t,!1);if("string"==typeof e&&e.length>2){e=m?e.trim():p(e,3);var n,a,r,i=e.charCodeAt(0);if(43===i||45===i){if(n=e.charCodeAt(2),88===n||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:a=2,r=49;break;case 79:case 111:a=8,r=55;break;default:return+e}for(var o,u=e.slice(2),c=0,l=u.length;l>c;c++)if(o=u.charCodeAt(c),48>o||o>r)return NaN;return parseInt(u,a)}}return+e};l(" 0o1")&&l("0b1")&&!l("+0x1")||(l=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof l&&(h?u(function(){d.valueOf.call(n)}):o(n)!=c)?new f(v(e)):v(e)},a.each.call(t(19)?a.getNames(f):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),function(t){i(f,t)&&!i(l,t)&&a.setDesc(l,t,a.getDesc(f,t))}),l.prototype=d,d.constructor=l,t(61)(r,c,l))},{11:11,19:19,24:24,29:29,30:30,46:46,61:61,74:74,81:81}],115:[function(t,e,n){var a=t(22);a(a.S,"Number",{EPSILON:Math.pow(2,-52)})},{22:22}],116:[function(t,e,n){var a=t(22),r=t(29).isFinite;a(a.S,"Number",{isFinite:function(t){return"number"==typeof t&&r(t)}})},{22:22,29:29}],117:[function(t,e,n){var a=t(22);a(a.S,"Number",{isInteger:t(37)})},{22:22,37:37}],118:[function(t,e,n){var a=t(22);a(a.S,"Number",{isNaN:function(t){return t!=t}})},{22:22}],119:[function(t,e,n){var a=t(22),r=t(37),i=Math.abs;a(a.S,"Number",{isSafeInteger:function(t){return r(t)&&i(t)<=9007199254740991}})},{22:22,37:37}],120:[function(t,e,n){var a=t(22);a(a.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{22:22}],121:[function(t,e,n){var a=t(22);a(a.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},{22:22}],122:[function(t,e,n){var a=t(22);a(a.S,"Number",{parseFloat:parseFloat})},{22:22}],123:[function(t,e,n){var a=t(22);a(a.S,"Number",{parseInt:parseInt})},{22:22}],124:[function(t,e,n){var a=t(22);a(a.S+a.F,"Object",{assign:t(53)})},{22:22,53:53}],125:[function(t,e,n){var a=t(38);t(54)("freeze",function(t){return function(e){return t&&a(e)?t(e):e}})},{38:38,54:54}],126:[function(t,e,n){var a=t(78);t(54)("getOwnPropertyDescriptor",function(t){return function(e,n){return t(a(e),n)}})},{54:54,78:78}],127:[function(t,e,n){t(54)("getOwnPropertyNames",function(){return t(28).get})},{28:28,54:54}],128:[function(t,e,n){var a=t(80);t(54)("getPrototypeOf",function(t){return function(e){return t(a(e))}})},{54:54,80:80}],129:[function(t,e,n){var a=t(38);t(54)("isExtensible",function(t){return function(e){return a(e)?t?t(e):!0:!1}})},{38:38,54:54}],130:[function(t,e,n){var a=t(38);t(54)("isFrozen",function(t){return function(e){return a(e)?t?t(e):!1:!0}})},{38:38,54:54}],131:[function(t,e,n){var a=t(38);t(54)("isSealed",function(t){return function(e){return a(e)?t?t(e):!1:!0}})},{38:38,54:54}],132:[function(t,e,n){var a=t(22);a(a.S,"Object",{is:t(63)})},{22:22,63:63}],133:[function(t,e,n){var a=t(80);t(54)("keys",function(t){return function(e){return t(a(e))}})},{54:54,80:80}],134:[function(t,e,n){var a=t(38);t(54)("preventExtensions",function(t){return function(e){return t&&a(e)?t(e):e}})},{38:38,54:54}],135:[function(t,e,n){var a=t(38);t(54)("seal",function(t){return function(e){return t&&a(e)?t(e):e}})},{38:38,54:54}],136:[function(t,e,n){var a=t(22);a(a.S,"Object",{setPrototypeOf:t(64).set})},{22:22,64:64}],137:[function(t,e,n){"use strict";var a=t(10),r={};r[t(83)("toStringTag")]="z",r+""!="[object z]"&&t(61)(Object.prototype,"toString",function(){return"[object "+a(this)+"]"},!0)},{10:10,61:61,83:83}],138:[function(t,e,n){"use strict";var a,r=t(46),i=t(48),o=t(29),s=t(17),u=t(10),p=t(22),c=t(38),l=t(4),f=t(2),d=t(69),h=t(27),m=t(64).set,v=t(63),g=t(83)("species"),b=t(68),y=t(52),_="Promise",x=o.process,w="process"==u(x),k=o[_],E=function(){},P=function(t){var e,n=new k(E);return t&&(n.constructor=function(t){t(E,E)}),(e=k.resolve(n))["catch"](E),e===n},C=function(){function e(t){var n=new k(t);return m(n,e.prototype),n}var n=!1;try{if(n=k&&k.resolve&&P(),m(e,k),e.prototype=r.create(k.prototype,{constructor:{value:e}}),e.resolve(5).then(function(){})instanceof e||(n=!1),n&&t(19)){var a=!1;k.resolve(r.setDesc({},"then",{get:function(){a=!0}})),n=a}}catch(i){n=!1}return n}(),S=function(t,e){return i&&t===k&&e===a?!0:v(t,e)},O=function(t){var e=l(t)[g];return void 0!=e?e:t},A=function(t){var e;return c(t)&&"function"==typeof(e=t.then)?e:!1},T=function(t){var e,n;this.promise=new t(function(t,a){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=a}),this.resolve=f(e),this.reject=f(n)},M=function(t){try{t()}catch(e){return{error:e}}},R=function(t,e){if(!t.n){t.n=!0;var n=t.c;y(function(){for(var a=t.v,r=1==t.s,i=0,s=function(e){var n,i,o=r?e.ok:e.fail,s=e.resolve,u=e.reject;try{o?(r||(t.h=!0),n=o===!0?a:o(a),n===e.promise?u(TypeError("Promise-chain cycle")):(i=A(n))?i.call(n,s,u):s(n)):u(a)}catch(p){u(p)}};n.length>i;)s(n[i++]);n.length=0,t.n=!1,e&&setTimeout(function(){var e,n,r=t.p;j(r)&&(w?x.emit("unhandledRejection",a,r):(e=o.onunhandledrejection)?e({promise:r,reason:a}):(n=o.console)&&n.error&&n.error("Unhandled promise rejection",a)),t.a=void 0},1)})}},j=function(t){var e,n=t._d,a=n.a||n.c,r=0;if(n.h)return!1;for(;a.length>r;)if(e=a[r++],e.fail||!j(e.promise))return!1;return!0},L=function(t){var e=this;e.d||(e.d=!0,e=e.r||e,e.v=t,e.s=2,e.a=e.c.slice(),R(e,!0))},N=function(t){var e,n=this;if(!n.d){n.d=!0,n=n.r||n;try{if(n.p===t)throw TypeError("Promise can't be resolved itself");(e=A(t))?y(function(){var a={r:n,d:!1};try{e.call(t,s(N,a,1),s(L,a,1))}catch(r){L.call(a,r)}}):(n.v=t,n.s=1,R(n,!1))}catch(a){L.call({r:n,d:!1},a)}}};C||(k=function(t){f(t);var e=this._d={p:d(this,k,_),c:[],a:void 0,s:0,d:!1,v:void 0,h:!1,n:!1};try{t(s(N,e,1),s(L,e,1))}catch(n){L.call(e,n)}},t(60)(k.prototype,{then:function(t,e){var n=new T(b(this,k)),a=n.promise,r=this._d;return n.ok="function"==typeof t?t:!0,n.fail="function"==typeof e&&e,r.c.push(n),r.a&&r.a.push(n),r.s&&R(r,!1),a},"catch":function(t){return this.then(void 0,t)}})),p(p.G+p.W+p.F*!C,{Promise:k}),t(66)(k,_),t(65)(_),a=t(16)[_],p(p.S+p.F*!C,_,{reject:function(t){var e=new T(this),n=e.reject;return n(t),e.promise}}),p(p.S+p.F*(!C||P(!0)),_,{resolve:function(t){if(t instanceof k&&S(t.constructor,this))return t;var e=new T(this),n=e.resolve;return n(t),e.promise}}),p(p.S+p.F*!(C&&t(43)(function(t){k.all(t)["catch"](function(){})})),_,{all:function(t){var e=O(this),n=new T(e),a=n.resolve,i=n.reject,o=[],s=M(function(){h(t,!1,o.push,o);var n=o.length,s=Array(n);n?r.each.call(o,function(t,r){var o=!1;e.resolve(t).then(function(t){o||(o=!0,s[r]=t,--n||a(s))},i)}):a(s)});return s&&i(s.error),n.promise},race:function(t){var e=O(this),n=new T(e),a=n.reject,r=M(function(){h(t,!1,function(t){e.resolve(t).then(n.resolve,a)})});return r&&a(r.error),n.promise}})},{10:10,16:16,17:17,19:19,2:2,22:22,27:27,29:29,38:38,4:4,43:43,46:46,48:48,52:52,60:60,63:63,64:64,65:65,66:66,68:68,69:69,83:83}],139:[function(t,e,n){var a=t(22),r=Function.apply,i=t(4);a(a.S,"Reflect",{apply:function(t,e,n){return r.call(t,e,i(n))}})},{22:22,4:4}],140:[function(t,e,n){var a=t(46),r=t(22),i=t(2),o=t(4),s=t(38),u=Function.bind||t(16).Function.prototype.bind;r(r.S+r.F*t(24)(function(){function t(){}return!(Reflect.construct(function(){},[],t)instanceof t)}),"Reflect",{construct:function(t,e){i(t),o(e);var n=arguments.length<3?t:i(arguments[2]);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var r=[null];return r.push.apply(r,e),new(u.apply(t,r))}var p=n.prototype,c=a.create(s(p)?p:Object.prototype),l=Function.apply.call(t,c,e);return s(l)?l:c}})},{16:16,2:2,22:22,24:24,38:38,4:4,46:46}],141:[function(t,e,n){var a=t(46),r=t(22),i=t(4);r(r.S+r.F*t(24)(function(){Reflect.defineProperty(a.setDesc({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(t,e,n){i(t);try{return a.setDesc(t,e,n),!0}catch(r){return!1}}})},{22:22,24:24,4:4,46:46}],142:[function(t,e,n){var a=t(22),r=t(46).getDesc,i=t(4);a(a.S,"Reflect",{deleteProperty:function(t,e){var n=r(i(t),e);return n&&!n.configurable?!1:delete t[e]}})},{22:22,4:4,46:46}],143:[function(t,e,n){"use strict";var a=t(22),r=t(4),i=function(t){this._t=r(t),this._i=0;var e,n=this._k=[];for(e in t)n.push(e)};t(41)(i,"Object",function(){var t,e=this,n=e._k;do if(e._i>=n.length)return{value:void 0,done:!0};while(!((t=n[e._i++])in e._t));return{value:t,done:!1}}),a(a.S,"Reflect",{enumerate:function(t){return new i(t)}})},{22:22,4:4,41:41}],144:[function(t,e,n){var a=t(46),r=t(22),i=t(4);r(r.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return a.getDesc(i(t),e)}})},{22:22,4:4,46:46}],145:[function(t,e,n){var a=t(22),r=t(46).getProto,i=t(4);a(a.S,"Reflect",{getPrototypeOf:function(t){return r(i(t))}})},{22:22,4:4,46:46}],146:[function(t,e,n){function a(t,e){var n,o,p=arguments.length<3?t:arguments[2];return u(t)===p?t[e]:(n=r.getDesc(t,e))?i(n,"value")?n.value:void 0!==n.get?n.get.call(p):void 0:s(o=r.getProto(t))?a(o,e,p):void 0}var r=t(46),i=t(30),o=t(22),s=t(38),u=t(4);o(o.S,"Reflect",{get:a})},{22:22,30:30,38:38,4:4,46:46}],147:[function(t,e,n){var a=t(22);a(a.S,"Reflect",{has:function(t,e){return e in t}})},{22:22}],148:[function(t,e,n){var a=t(22),r=t(4),i=Object.isExtensible;a(a.S,"Reflect",{isExtensible:function(t){return r(t),i?i(t):!0}})},{22:22,4:4}],149:[function(t,e,n){var a=t(22);a(a.S,"Reflect",{ownKeys:t(56)})},{22:22,56:56}],150:[function(t,e,n){var a=t(22),r=t(4),i=Object.preventExtensions;a(a.S,"Reflect",{preventExtensions:function(t){r(t);try{return i&&i(t),!0}catch(e){return!1}}})},{22:22,4:4}],151:[function(t,e,n){var a=t(22),r=t(64);r&&a(a.S,"Reflect",{setPrototypeOf:function(t,e){r.check(t,e);try{return r.set(t,e),!0}catch(n){return!1}}})},{22:22,64:64}],152:[function(t,e,n){function a(t,e,n){var o,c,l=arguments.length<4?t:arguments[3],f=r.getDesc(u(t),e);if(!f){if(p(c=r.getProto(t)))return a(c,e,n,l);f=s(0)}return i(f,"value")?f.writable!==!1&&p(l)?(o=r.getDesc(l,e)||s(0),o.value=n,r.setDesc(l,e,o),!0):!1:void 0===f.set?!1:(f.set.call(l,n),!0)}var r=t(46),i=t(30),o=t(22),s=t(59),u=t(4),p=t(38);o(o.S,"Reflect",{set:a})},{22:22,30:30,38:38,4:4,46:46,59:59}],153:[function(t,e,n){var a=t(46),r=t(29),i=t(39),o=t(26),s=r.RegExp,u=s,p=s.prototype,c=/a/g,l=/a/g,f=new s(c)!==c;!t(19)||f&&!t(24)(function(){return l[t(83)("match")]=!1,s(c)!=c||s(l)==l||"/a/i"!=s(c,"i")})||(s=function(t,e){var n=i(t),a=void 0===e;return this instanceof s||!n||t.constructor!==s||!a?f?new u(n&&!a?t.source:t,e):u((n=t instanceof s)?t.source:t,n&&a?o.call(t):e):t},a.each.call(a.getNames(u),function(t){t in s||a.setDesc(s,t,{configurable:!0,get:function(){return u[t]},set:function(e){u[t]=e}})}),p.constructor=s,s.prototype=p,t(61)(r,"RegExp",s)),t(65)("RegExp")},{19:19,24:24,26:26,29:29,39:39,46:46,61:61,65:65,83:83}],154:[function(t,e,n){var a=t(46);t(19)&&"g"!=/./g.flags&&a.setDesc(RegExp.prototype,"flags",{configurable:!0,get:t(26)})},{19:19,26:26,46:46}],155:[function(t,e,n){t(25)("match",1,function(t,e){return function(n){"use strict";var a=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,a):RegExp(n)[e](a+"")}})},{25:25}],156:[function(t,e,n){t(25)("replace",2,function(t,e,n){return function(a,r){"use strict";var i=t(this),o=void 0==a?void 0:a[e];return void 0!==o?o.call(a,i,r):n.call(i+"",a,r)}})},{25:25}],157:[function(t,e,n){t(25)("search",1,function(t,e){return function(n){"use strict";var a=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,a):RegExp(n)[e](a+"")}})},{25:25}],158:[function(t,e,n){t(25)("split",2,function(t,e,n){return function(a,r){"use strict";var i=t(this),o=void 0==a?void 0:a[e];return void 0!==o?o.call(a,i,r):n.call(i+"",a,r)}})},{25:25}],159:[function(t,e,n){"use strict";var a=t(12);t(15)("Set",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return a.def(this,t=0===t?0:t,t)}},a)},{12:12,15:15}],160:[function(t,e,n){"use strict";var a=t(22),r=t(70)(!1);a(a.P,"String",{codePointAt:function(t){return r(this,t)}})},{22:22,70:70}],161:[function(t,e,n){"use strict";var a=t(22),r=t(79),i=t(71),o="endsWith",s=""[o];a(a.P+a.F*t(23)(o),"String",{endsWith:function(t){var e=i(this,t,o),n=arguments,a=n.length>1?n[1]:void 0,u=r(e.length),p=void 0===a?u:Math.min(r(a),u),c=t+"";return s?s.call(e,c,p):e.slice(p-c.length,p)===c}})},{22:22,23:23,71:71,79:79}],162:[function(t,e,n){var a=t(22),r=t(76),i=String.fromCharCode,o=String.fromCodePoint;a(a.S+a.F*(!!o&&1!=o.length),"String",{fromCodePoint:function(t){for(var e,n=[],a=arguments,o=a.length,s=0;o>s;){if(e=+a[s++],r(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(65536>e?i(e):i(((e-=65536)>>10)+55296,e%1024+56320))}return n.join("")}})},{22:22,76:76}],163:[function(t,e,n){"use strict";var a=t(22),r=t(71),i="includes";a(a.P+a.F*t(23)(i),"String",{includes:function(t){return!!~r(this,t,i).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},{22:22,23:23,71:71}],164:[function(t,e,n){"use strict";var a=t(70)(!0);t(42)(String,"String",function(t){this._t=t+"",this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=a(e,n),this._i+=t.length,{value:t,done:!1})})},{42:42,70:70}],165:[function(t,e,n){var a=t(22),r=t(78),i=t(79);a(a.S,"String",{raw:function(t){for(var e=r(t.raw),n=i(e.length),a=arguments,o=a.length,s=[],u=0;n>u;)s.push(e[u++]+""),o>u&&s.push(a[u]+"");return s.join("")}})},{22:22,78:78,79:79}],166:[function(t,e,n){var a=t(22);a(a.P,"String",{repeat:t(73)})},{22:22,73:73}],167:[function(t,e,n){"use strict";var a=t(22),r=t(79),i=t(71),o="startsWith",s=""[o];a(a.P+a.F*t(23)(o),"String",{startsWith:function(t){var e=i(this,t,o),n=arguments,a=r(Math.min(n.length>1?n[1]:void 0,e.length)),u=t+"";return s?s.call(e,u,a):e.slice(a,a+u.length)===u}})},{22:22,23:23,71:71,79:79}],168:[function(t,e,n){"use strict";t(74)("trim",function(t){return function(){return t(this,3)}})},{74:74}],169:[function(t,e,n){"use strict";var a=t(46),r=t(29),i=t(30),o=t(19),s=t(22),u=t(61),p=t(24),c=t(67),l=t(66),f=t(82),d=t(83),h=t(47),m=t(28),v=t(21),g=t(36),b=t(4),y=t(78),_=t(59),x=a.getDesc,w=a.setDesc,k=a.create,E=m.get,P=r.Symbol,C=r.JSON,S=C&&C.stringify,O=!1,A=d("_hidden"),T=a.isEnum,M=c("symbol-registry"),R=c("symbols"),j="function"==typeof P,L=Object.prototype,N=o&&p(function(){return 7!=k(w({},"a",{get:function(){return w(this,"a",{value:7}).a}})).a})?function(t,e,n){var a=x(L,e);a&&delete L[e],w(t,e,n),a&&t!==L&&w(L,e,a)}:w,D=function(t){var e=R[t]=k(P.prototype);return e._k=t,o&&O&&N(L,t,{configurable:!0,set:function(e){i(this,A)&&i(this[A],t)&&(this[A][t]=!1),N(this,t,_(1,e))}}),e},F=function(t){return"symbol"==typeof t},I=function(t,e,n){return n&&i(R,e)?(n.enumerable?(i(t,A)&&t[A][e]&&(t[A][e]=!1),n=k(n,{enumerable:_(0,!1)})):(i(t,A)||w(t,A,_(1,{})),t[A][e]=!0),N(t,e,n)):w(t,e,n)},B=function(t,e){b(t);for(var n,a=v(e=y(e)),r=0,i=a.length;i>r;)I(t,n=a[r++],e[n]);return t},q=function(t,e){return void 0===e?k(t):B(k(t),e)},G=function(t){var e=T.call(this,t);return e||!i(this,t)||!i(R,t)||i(this,A)&&this[A][t]?e:!0},U=function(t,e){var n=x(t=y(t),e);return!n||!i(R,e)||i(t,A)&&t[A][e]||(n.enumerable=!0),n},V=function(t){for(var e,n=E(y(t)),a=[],r=0;n.length>r;)i(R,e=n[r++])||e==A||a.push(e);return a},z=function(t){for(var e,n=E(y(t)),a=[],r=0;n.length>r;)i(R,e=n[r++])&&a.push(R[e]);return a},W=function(t){if(void 0!==t&&!F(t)){for(var e,n,a=[t],r=1,i=arguments;i.length>r;)a.push(i[r++]);return e=a[1],"function"==typeof e&&(n=e),(n||!g(e))&&(e=function(t,e){return n&&(e=n.call(this,t,e)),F(e)?void 0:e}),a[1]=e,S.apply(C,a)}},H=p(function(){var t=P();return"[null]"!=S([t])||"{}"!=S({a:t})||"{}"!=S(Object(t))});j||(P=function(){if(F(this))throw TypeError("Symbol is not a constructor");return D(f(arguments.length>0?arguments[0]:void 0))},u(P.prototype,"toString",function(){return this._k}),F=function(t){return t instanceof P},a.create=q,a.isEnum=G,a.getDesc=U,a.setDesc=I,a.setDescs=B,a.getNames=m.get=V,a.getSymbols=z,o&&!t(48)&&u(L,"propertyIsEnumerable",G,!0));var Q={"for":function(t){return i(M,t+="")?M[t]:M[t]=P(t)},keyFor:function(t){return h(M,t)},useSetter:function(){O=!0},useSimple:function(){O=!1}};a.each.call("hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),function(t){var e=d(t);Q[t]=j?e:D(e)}),O=!0,s(s.G+s.W,{Symbol:P}),s(s.S,"Symbol",Q),s(s.S+s.F*!j,"Object",{create:q,defineProperty:I,defineProperties:B,getOwnPropertyDescriptor:U,getOwnPropertyNames:V,getOwnPropertySymbols:z}),C&&s(s.S+s.F*(!j||H),"JSON",{stringify:W}),l(P,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},{19:19,21:21,22:22,24:24,28:28,29:29,30:30,36:36,4:4,46:46,47:47,48:48,59:59,61:61,66:66,67:67,78:78,82:82,83:83}],170:[function(t,e,n){"use strict";var a=t(46),r=t(61),i=t(14),o=t(38),s=t(30),u=i.frozenStore,p=i.WEAK,c=Object.isExtensible||o,l={},f=t(15)("WeakMap",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){if(o(t)){if(!c(t))return u(this).get(t);if(s(t,p))return t[p][this._i]}},set:function(t,e){return i.def(this,t,e)}},i,!0,!0);7!=(new f).set((Object.freeze||Object)(l),7).get(l)&&a.each.call(["delete","has","get","set"],function(t){var e=f.prototype,n=e[t];r(e,t,function(e,a){if(o(e)&&!c(e)){var r=u(this)[t](e,a);return"set"==t?this:r}return n.call(this,e,a)})})},{14:14,15:15,30:30,38:38,46:46,61:61}],171:[function(t,e,n){"use strict";var a=t(14);t(15)("WeakSet",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return a.def(this,t,!0)}},a,!1,!0)},{14:14,15:15}],172:[function(t,e,n){"use strict";var a=t(22),r=t(7)(!0);a(a.P,"Array",{includes:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(3)("includes")},{22:22,3:3,7:7}],173:[function(t,e,n){var a=t(22);a(a.P,"Map",{toJSON:t(13)("Map")})},{13:13,22:22}],174:[function(t,e,n){var a=t(22),r=t(55)(!0);a(a.S,"Object",{entries:function(t){return r(t)}})},{22:22,55:55}],175:[function(t,e,n){var a=t(46),r=t(22),i=t(56),o=t(78),s=t(59);r(r.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,n,r=o(t),u=a.setDesc,p=a.getDesc,c=i(r),l={},f=0;c.length>f;)n=p(r,e=c[f++]),e in l?u(l,e,s(0,n)):l[e]=n;return l}})},{22:22,46:46,56:56,59:59,78:78}],176:[function(t,e,n){var a=t(22),r=t(55)(!1);a(a.S,"Object",{values:function(t){return r(t)}})},{22:22,55:55}],177:[function(t,e,n){var a=t(22),r=t(62)(/[\\^$*+?.()|[\]{}]/g,"\\$&");a(a.S,"RegExp",{escape:function(t){return r(t)}})},{22:22,62:62}],178:[function(t,e,n){var a=t(22);a(a.P,"Set",{toJSON:t(13)("Set")})},{13:13,22:22}],179:[function(t,e,n){"use strict";var a=t(22),r=t(70)(!0);a(a.P,"String",{at:function(t){return r(this,t)}})},{22:22,70:70}],180:[function(t,e,n){"use strict";var a=t(22),r=t(72);a(a.P,"String",{padLeft:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},{22:22,72:72}],181:[function(t,e,n){"use strict";var a=t(22),r=t(72);a(a.P,"String",{padRight:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},{22:22,72:72}],182:[function(t,e,n){"use strict";t(74)("trimLeft",function(t){return function(){return t(this,1)}})},{74:74}],183:[function(t,e,n){"use strict";t(74)("trimRight",function(t){return function(){return t(this,2)}})},{74:74}],184:[function(t,e,n){var a=t(46),r=t(22),i=t(17),o=t(16).Array||Array,s={},u=function(t,e){a.each.call(t.split(","),function(t){void 0==e&&t in o?s[t]=o[t]:t in[]&&(s[t]=i(Function.call,[][t],e))})};u("pop,reverse,shift,keys,values,entries",1),u("indexOf,every,some,forEach,map,filter,find,findIndex,includes",3),u("join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill"),r(r.S,"Array",s)},{16:16,17:17,22:22,46:46}],185:[function(t,e,n){t(91);var a=t(29),r=t(31),i=t(45),o=t(83)("iterator"),s=a.NodeList,u=a.HTMLCollection,p=s&&s.prototype,c=u&&u.prototype,l=i.NodeList=i.HTMLCollection=i.Array;p&&!p[o]&&r(p,o,l),c&&!c[o]&&r(c,o,l)},{29:29,31:31,45:45,83:83,91:91}],186:[function(t,e,n){var a=t(22),r=t(75);a(a.G+a.B,{setImmediate:r.set,clearImmediate:r.clear})},{22:22,75:75}],187:[function(t,e,n){var a=t(29),r=t(22),i=t(33),o=t(57),s=a.navigator,u=!!s&&/MSIE .\./.test(s.userAgent),p=function(t){return u?function(e,n){return t(i(o,[].slice.call(arguments,2),"function"==typeof e?e:Function(e)),n)}:t};r(r.G+r.B+r.F*u,{setTimeout:p(a.setTimeout),setInterval:p(a.setInterval)})},{22:22,29:29,33:33,57:57}],188:[function(t,e,n){t(85),t(169),t(124),t(132),t(136),t(137),t(125),t(135),t(134),t(130),t(131),t(129),t(126),t(128),t(133),t(127),t(95),t(94),t(114),t(115),t(116),t(117),t(118),t(119),t(120),t(121),t(122),t(123),t(97),t(98),t(99),t(100),t(101),t(102),t(103),t(104),t(105),t(106),t(107),t(108),t(109),t(110),t(111),t(112),t(113),t(162),t(165),t(168),t(164),t(160),t(161),t(163),t(166),t(167),t(90),t(92),t(91),t(93),t(86),t(87),t(89),t(88),t(153),t(154),t(155),t(156),t(157),t(158),t(138),t(96),t(159),t(170),t(171),t(139),t(140),t(141),t(142),t(143),t(146),t(144),t(145),t(147),t(148),t(149),t(150),t(152),t(151),t(172),t(179),t(180),t(181),t(182),t(183),t(177),t(175),t(176),t(174),t(173),t(178),t(184),t(187),t(186),t(185),e.exports=t(16)},{100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,127:127,128:128,129:129,130:130,131:131,132:132,133:133,134:134,135:135,136:136,137:137,138:138,139:139,140:140,141:141,142:142,143:143,144:144,145:145,146:146,147:147,148:148,149:149,150:150,151:151,152:152,153:153,154:154,155:155,156:156,157:157,158:158,159:159,16:16,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99}],189:[function(t,e,n){(function(n){(function(t,n){!function(n){"use strict";function a(t,e,n,a){var r=Object.create((e||i).prototype),o=new h(a||[]);return r._invoke=l(t,n,o),r}function r(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(a){return{type:"throw",arg:a}}}function i(){}function o(){}function s(){}function u(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function p(t){this.arg=t}function c(e){function n(t,n){var a=e[t](n),r=a.value;return r instanceof p?Promise.resolve(r.arg).then(i,o):Promise.resolve(r).then(function(t){return a.value=t,a})}function a(t,e){function a(){return n(t,e)}return r=r?r.then(a,a):new Promise(function(t){t(a())})}"object"==typeof t&&t.domain&&(n=t.domain.bind(n));var r,i=n.bind(e,"next"),o=n.bind(e,"throw");n.bind(e,"return");this._invoke=a}function l(t,e,n){var a=w;return function(i,o){if(a===E)throw Error("Generator is already running");if(a===P){if("throw"===i)throw o;return v()}for(;;){var s=n.delegate;if(s){if("return"===i||"throw"===i&&s.iterator[i]===g){n.delegate=null;var u=s.iterator["return"];if(u){var p=r(u,s.iterator,o);if("throw"===p.type){i="throw",o=p.arg;continue}}if("return"===i)continue}var p=r(s.iterator[i],s.iterator,o);if("throw"===p.type){n.delegate=null,i="throw",o=p.arg;continue}i="next",o=g;var c=p.arg;if(!c.done)return a=k,c;n[s.resultName]=c.value,n.next=s.nextLoc,n.delegate=null}if("next"===i)n._sent=o,a===k?n.sent=o:n.sent=g;else if("throw"===i){if(a===w)throw a=P,o;n.dispatchException(o)&&(i="next",o=g)}else"return"===i&&n.abrupt("return",o);a=E;var p=r(t,e,n);if("normal"===p.type){a=n.done?P:k;var c={value:p.arg,done:n.done};if(p.arg!==C)return c;n.delegate&&"next"===i&&(o=g)}else"throw"===p.type&&(a=P,i="throw",o=p.arg)}}}function f(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function d(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function h(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(f,this),this.reset(!0)}function m(t){if(t){var e=t[y];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,a=function r(){for(;++n=0;--a){var r=this.tryEntries[a],i=r.completion;if("root"===r.tryLoc)return e("end");if(r.tryLoc<=this.prev){var o=b.call(r,"catchLoc"),s=b.call(r,"finallyLoc");if(o&&s){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&b.call(a,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),d(n),C}},"catch":function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var a=n.completion;if("throw"===a.type){var r=a.arg;d(n)}return r}}throw Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:m(t),resultName:e,nextLoc:n},C}}}("object"==typeof n?n:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,t(202),void 0!==n?n:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{202:202}],190:[function(t,e,n){!function(t){"use strict";function e(){return c.createDocumentFragment()}function n(t){return c.createElement(t)}function a(t){if(1===t.length)return r(t[0]);for(var n=e(),a=B.call(t),i=0;i-1}}([].indexOf||function(t){for(q=this.length;q--&&this[q]!==t;);return q}),item:function(t){return this[t]||null},remove:function(){for(var t,e=0;e=u?e(i):document.fonts.load(p(i,i.family),s).then(function(e){1<=e.length?t(i):setTimeout(f,25)},function(){e(i)})};f()}else n(function(){function n(){var e;(e=-1!=v&&-1!=g||-1!=v&&-1!=b||-1!=g&&-1!=b)&&((e=v!=g&&v!=b&&g!=b)||(null===l&&(e=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),l=!!e&&(536>parseInt(e[1],10)||536===parseInt(e[1],10)&&11>=parseInt(e[2],10))),e=l&&(v==y&&g==y&&b==y||v==_&&g==_&&b==_||v==x&&g==x&&b==x)),e=!e),e&&(null!==w.parentNode&&w.parentNode.removeChild(w),clearTimeout(k),t(i))}function f(){if((new Date).getTime()-c>=u)null!==w.parentNode&&w.parentNode.removeChild(w),e(i);else{var t=document.hidden;(!0===t||void 0===t)&&(v=d.a.offsetWidth,g=h.a.offsetWidth,b=m.a.offsetWidth,n()),k=setTimeout(f,50)}}var d=new a(s),h=new a(s),m=new a(s),v=-1,g=-1,b=-1,y=-1,_=-1,x=-1,w=document.createElement("div"),k=0;w.dir="ltr",r(d,p(i,"sans-serif")),r(h,p(i,"serif")),r(m,p(i,"monospace")),w.appendChild(d.a),w.appendChild(h.a),w.appendChild(m.a),document.body.appendChild(w),y=d.a.offsetWidth,_=h.a.offsetWidth,x=m.a.offsetWidth,f(),o(d,function(t){v=t,n()}),r(d,p(i,'"'+i.family+'",sans-serif')),o(h,function(t){g=t,n()}),r(h,p(i,'"'+i.family+'",serif')),o(m,function(t){b=t,n()}),r(m,p(i,'"'+i.family+'",monospace'))})})},window.FontFaceObserver=s,window.FontFaceObserver.prototype.check=s.prototype.a,void 0!==e&&(e.exports=window.FontFaceObserver)}()},{}],193:[function(t,e,n){!function(t,n){function a(t,e){var n=t.createElement("p"),a=t.getElementsByTagName("head")[0]||t.documentElement;return n.innerHTML="x",a.insertBefore(n.lastChild,a.firstChild)}function r(){var t=_.elements;return"string"==typeof t?t.split(" "):t}function i(t,e){var n=_.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof t&&(t=t.join(" ")),_.elements=n+" "+t,c(e)}function o(t){var e=y[t[g]];return e||(e={},b++,t[g]=b,y[b]=e),e}function s(t,e,a){if(e||(e=n),f)return e.createElement(t);a||(a=o(e));var r;return r=a.cache[t]?a.cache[t].cloneNode():v.test(t)?(a.cache[t]=a.createElem(t)).cloneNode():a.createElem(t),!r.canHaveChildren||m.test(t)||r.tagUrn?r:a.frag.appendChild(r)}function u(t,e){if(t||(t=n),f)return t.createDocumentFragment();e=e||o(t);for(var a=e.frag.cloneNode(),i=0,s=r(),u=s.length;u>i;i++)a.createElement(s[i]);return a}function p(t,e){e.cache||(e.cache={},e.createElem=t.createElement,e.createFrag=t.createDocumentFragment,e.frag=e.createFrag()),t.createElement=function(n){return _.shivMethods?s(n,t,e):e.createElem(n)},t.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(t){return e.createElem(t),e.frag.createElement(t),'c("'+t+'")'})+");return n}")(_,e.frag)}function c(t){t||(t=n);var e=o(t);return!_.shivCSS||l||e.hasCSS||(e.hasCSS=!!a(t,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),f||p(t,e),t}var l,f,d="3.7.3-pre",h=t.html5||{},m=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,v=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g="_html5shiv",b=0,y={};!function(){try{var t=n.createElement("a");t.innerHTML="",l="hidden"in t,f=1==t.childNodes.length||function(){n.createElement("a");var t=n.createDocumentFragment();return void 0===t.cloneNode||void 0===t.createDocumentFragment||void 0===t.createElement}()}catch(e){l=!0,f=!0}}();var _={elements:h.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:d,shivCSS:h.shivCSS!==!1,supportsUnknownElements:f,shivMethods:h.shivMethods!==!1,type:"default",shivDocument:c,createElement:s,createDocumentFragment:u,addElements:i};t.html5=_,c(n),"object"==typeof e&&e.exports&&(e.exports=_)}("undefined"!=typeof window?window:this,document)},{}],194:[function(t,e,n){(function(t){(function(t){!function(t){function e(t,e,n,a){for(var i,o=n.slice(),s=r(e,t),u=0,p=o.length;p>u&&(handler=o[u],"object"==typeof handler?"function"==typeof handler.handleEvent&&handler.handleEvent(s):handler.call(t,s),!s.stoppedImmediatePropagation);u++);return i=!s.stoppedPropagation,a&&i&&t.parentNode?t.parentNode.dispatchEvent(s):!s.defaultPrevented}function n(t,e){return{configurable:!0,get:t,set:e}}function a(t,e,a){var r=b(e||t,a);v(t,"textContent",n(function(){return r.get.call(this)},function(t){r.set.call(this,t)}))}function r(t,e){return t.currentTarget=e,t.eventPhase=t.target===t.currentTarget?2:3,t}function i(t,e){for(var n=t.length;n--&&t[n]!==e;);return n}function o(){if("BR"===this.tagName)return"\n";for(var t=this.firstChild,e=[];t;)8!==t.nodeType&&7!==t.nodeType&&e.push(t.textContent),t=t.nextSibling;return e.join("")}function s(t){var e=document.createEvent("Event");e.initEvent("input",!0,!0),(t.srcElement||t.fromElement||document).dispatchEvent(e)}function u(t){!f&&k.test(document.readyState)&&(f=!f,document.detachEvent(d,u),t=document.createEvent("Event"),t.initEvent(h,!0,!0),document.dispatchEvent(t))}function p(t){for(var e;e=this.lastChild;)this.removeChild(e);null!=t&&this.appendChild(document.createTextNode(t))}function c(e,n){return n||(n=t.event),n.target||(n.target=n.srcElement||n.fromElement||document),n.timeStamp||(n.timeStamp=(new Date).getTime()),n}if(!document.createEvent){var l=!0,f=!1,d="onreadystatechange",h="DOMContentLoaded",m="__IE8__"+Math.random(),v=Object.defineProperty||function(t,e,n){t[e]=n.value},g=Object.defineProperties||function(e,n){for(var a in n)if(y.call(n,a))try{v(e,a,n[a])}catch(r){t.console&&console.log(a+" failed on object:",e,r.message)}},b=Object.getOwnPropertyDescriptor,y=Object.prototype.hasOwnProperty,_=t.Element.prototype,x=t.Text.prototype,w=/^[a-z]+$/,k=/loaded|complete/,E={},P=document.createElement("div"),C=document.documentElement,S=C.removeAttribute,O=C.setAttribute;a(t.HTMLCommentElement.prototype,_,"nodeValue"),a(t.HTMLScriptElement.prototype,null,"text"),a(x,null,"nodeValue"),a(t.HTMLTitleElement.prototype,null,"text"),v(t.HTMLStyleElement.prototype,"textContent",function(t){return n(function(){return t.get.call(this.styleSheet)},function(e){t.set.call(this.styleSheet,e)})}(b(t.CSSStyleSheet.prototype,"cssText"))),g(_,{textContent:{get:o,set:p},firstElementChild:{get:function(){for(var t=this.childNodes||[],e=0,n=t.length;n>e;e++)if(1==t[e].nodeType)return t[e]}},lastElementChild:{get:function(){for(var t=this.childNodes||[],e=t.length;e--;)if(1==t[e].nodeType)return t[e]}},oninput:{get:function(){return this._oninput||null},set:function(t){this._oninput&&(this.removeEventListener("input",this._oninput),this._oninput=t,t&&this.addEventListener("input",t))}},previousElementSibling:{get:function(){for(var t=this.previousSibling;t&&1!=t.nodeType;)t=t.previousSibling;return t}},nextElementSibling:{get:function(){for(var t=this.nextSibling;t&&1!=t.nodeType;)t=t.nextSibling;return t}},childElementCount:{get:function(){for(var t=0,e=this.childNodes||[],n=e.length;n--;t+=1==e[n].nodeType);return t}},addEventListener:{value:function(t,n,a){if("function"==typeof n||"object"==typeof n){var r,o,u=this,p="on"+t,l=u[m]||v(u,m,{value:{}})[m],f=l[p]||(l[p]={}),d=f.h||(f.h=[]);if(!y.call(f,"w")){if(f.w=function(t){return t[m]||e(u,c(u,t),d,!1)},!y.call(E,p))if(w.test(t)){try{r=document.createEventObject(),r[m]=!0,9!=u.nodeType&&(null==u.parentNode&&P.appendChild(u),(o=u.getAttribute(p))&&S.call(u,p)),u.fireEvent(p,r),E[p]=!0}catch(r){for(E[p]=!1;P.hasChildNodes();)P.removeChild(P.firstChild)}null!=o&&O.call(u,p,o)}else E[p]=!1;(f.n=E[p])&&u.attachEvent(p,f.w)}i(d,n)<0&&d[a?"unshift":"push"](n),"input"===t&&u.attachEvent("onkeyup",s)}}},dispatchEvent:{value:function(t){var n,a=this,r="on"+t.type,i=a[m],o=i&&i[r],s=!!o;return t.target||(t.target=a),s?o.n?a.fireEvent(r,t):e(a,t,o.h,!0):(n=a.parentNode)?n.dispatchEvent(t):!0,!t.defaultPrevented}},removeEventListener:{value:function(t,e,n){if("function"==typeof e||"object"==typeof e){var a=this,r="on"+t,o=a[m],s=o&&o[r],u=s&&s.h,p=u?i(u,e):-1;p>-1&&u.splice(p,1)}}}}),g(x,{addEventListener:{value:_.addEventListener},dispatchEvent:{value:_.dispatchEvent},removeEventListener:{value:_.removeEventListener}}),g(t.XMLHttpRequest.prototype,{addEventListener:{value:function(t,e,n){var a=this,r="on"+t,o=a[m]||v(a,m,{value:{}})[m],s=o[r]||(o[r]={}),u=s.h||(s.h=[]);i(u,e)<0&&(a[r]||(a[r]=function(){var e=document.createEvent("Event");e.initEvent(t,!0,!0),a.dispatchEvent(e)}),u[n?"unshift":"push"](e))}},dispatchEvent:{value:function(t){var n=this,a="on"+t.type,r=n[m],i=r&&r[a],o=!!i;return o&&(i.n?n.fireEvent(a,t):e(n,t,i.h,!0))}},removeEventListener:{value:_.removeEventListener}}),g(t.Event.prototype,{bubbles:{value:!0,writable:!0},cancelable:{value:!0,writable:!0},preventDefault:{value:function(){this.cancelable&&(this.defaultPrevented=!0,this.returnValue=!1)}},stopPropagation:{value:function(){this.stoppedPropagation=!0,this.cancelBubble=!0}},stopImmediatePropagation:{value:function(){this.stoppedImmediatePropagation=!0,this.stopPropagation()}},initEvent:{value:function(t,e,n){this.type=t,this.bubbles=!!e,this.cancelable=!!n,this.bubbles||this.stopPropagation()}}}),g(t.HTMLDocument.prototype,{defaultView:{get:function(){return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType?o.call(this):null},set:function(t){11===this.nodeType&&p.call(this,t)}},addEventListener:{value:function(e,n,a){var r=this;_.addEventListener.call(r,e,n,a),l&&e===h&&!k.test(r.readyState)&&(l=!1,r.attachEvent(d,u),t==top&&!function i(t){try{r.documentElement.doScroll("left"),u()}catch(e){setTimeout(i,50)}}())}},dispatchEvent:{value:_.dispatchEvent},removeEventListener:{value:_.removeEventListener},createEvent:{value:function(t){var e;if("Event"!==t)throw Error("unsupported "+t);return e=document.createEventObject(),e.timeStamp=(new Date).getTime(),e}}}),g(t.Window.prototype,{getComputedStyle:{value:function(){function t(t){this._=t}function e(){}var n=/^(?:[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/,a=/^(top|right|bottom|left)$/,r=/\-([a-z])/g,i=function(t,e){return e.toUpperCase()};return t.prototype.getPropertyValue=function(t){var e,o,s,u=this._,p=u.style,c=u.currentStyle,l=u.runtimeStyle;return t=("float"===t?"style-float":t).replace(r,i),e=c?c[t]:p[t],n.test(e)&&!a.test(t)&&(o=p.left,s=l&&l.left,s&&(l.left=c.left),p.left="fontSize"===t?"1em":e,e=p.pixelLeft+"px",p.left=o,s&&(l.left=s)),null==e?e:e+""||"auto"},e.prototype.getPropertyValue=function(){return null},function(n,a){return a?new e(n):new t(n)}}()},addEventListener:{value:function(n,a,r){var o,s=t,u="on"+n;s[u]||(s[u]=function(t){return e(s,c(s,t),o,!1)}),o=s[u][m]||(s[u][m]=[]),i(o,a)<0&&o[r?"unshift":"push"](a)}},dispatchEvent:{value:function(e){var n=t["on"+e.type];return n?n.call(t,e)!==!1&&!e.defaultPrevented:!0}},removeEventListener:{value:function(e,n,a){var r="on"+e,o=(t[r]||Object)[m],s=o?i(o,n):-1;s>-1&&o.splice(s,1)}}}),function(t,e,n){for(n=0;n=s)return(0,u["default"])({points:n});for(var l=1;s-1>=l;l++)i.push((0,p.times)(a,(0,p.minus)(n[l],n[l-1])));for(var f=[(0,p.plus)(n[0],c(i[0],i[1]))],l=1;s-2>=l;l++)f.push((0,p.minus)(n[l],(0,p.average)([i[l],i[l-1]])));f.push((0,p.minus)(n[s-1],c(i[s-2],i[s-3])));var d=f[0],h=f[1],m=n[0],v=n[1],g=(e=(0,o["default"])()).moveto.apply(e,r(m)).curveto(d[0],d[1],h[0],h[1],v[0],v[1]);return{path:(0,p.range)(2,s).reduce(function(t,e){var a=f[e],r=n[e];return t.smoothcurveto(a[0],a[1],r[0],r[1])},g),centroid:(0,p.average)(n)}},e.exports=n["default"]},{198:198,199:199,200:200}],196:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(u){r=!0,i=u}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),i=t(197),o=a(i),s=t(198),u=1e-5,p=function(t,e){var n=t.map(e),a=n.sort(function(t,e){var n=r(t,2),a=n[0],i=(n[1],r(e,2)),o=i[0];i[1];return a-o}),i=a.length,o=a[0][0],p=a[i-1][0],c=(0,s.minBy)(a,function(t){return t[1]}),l=(0,s.maxBy)(a,function(t){return t[1]});return o==p&&(p+=u),c==l&&(l+=u),{points:a,xmin:o,xmax:p,ymin:c,ymax:l}};n["default"]=function(t){var e=t.data,n=t.xaccessor,a=t.yaccessor,i=t.width,u=t.height,c=t.closed,l=t.min,f=t.max;n||(n=function(t){var e=r(t,2),n=e[0];e[1];return n}),a||(a=function(t){var e=r(t,2),n=(e[0],e[1]);return n});var d=function(t){return[n(t),a(t)]},h=e.map(function(t){return p(t,d)}),m=(0,s.minBy)(h,function(t){return t.xmin}),v=(0,s.maxBy)(h,function(t){return t.xmax}),g=null==l?(0,s.minBy)(h,function(t){return t.ymin}):l,b=null==f?(0,s.maxBy)(h,function(t){return t.ymax}):f;c&&(g=Math.min(g,0),b=Math.max(b,0));var y=c?0:g,_=(0,o["default"])([m,v],[0,i]),x=(0,o["default"])([g,b],[u,0]),w=function(t){var e=r(t,2),n=e[0],a=e[1];return[_(n),x(a)]};return{arranged:h,scale:w,xscale:_,yscale:x,base:y}},e.exports=n["default"]},{197:197,198:198}],197:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(u){r=!0,i=u}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function i(t,e){var n=a(t,2),r=n[0],o=n[1],s=a(e,2),u=s[0],p=s[1],c=function(t){return u+(p-u)*(t-r)/(o-r)};return c.inverse=function(){return i([u,p],[r,o])},c};n["default"]=r,e.exports=n["default"]},{}],198:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(u){r=!0,i=u}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function(t){return t.reduce(function(t,e){return t+e},0)},i=function(t){return t.reduce(function(t,e){return Math.min(t,e)})},o=function(t){return t.reduce(function(t,e){return Math.max(t,e)})},s=function(t,e){return t.reduce(function(t,n){return t+e(n)},0)},u=function(t,e){return t.reduce(function(t,n){return Math.min(t,e(n))},1/0)},p=function(t,e){return t.reduce(function(t,n){return Math.max(t,e(n))},-(1/0))},c=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],u=o[1];return[r+s,i+u]},l=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],u=o[1];return[r-s,i-u]},f=function(t,e){var n=a(e,2),r=n[0],i=n[1];return[t*r,t*i]},d=function(t){var e=a(t,2),n=e[0],r=e[1];return Math.sqrt(n*n+r*r)},h=function(t){return t.reduce(c,[0,0])},m=function(t){return f(1/t.length,t.reduce(c))},v=function(t,e){return f(t,[Math.sin(e),-Math.cos(e)])},g=function(t,e){var n=t||{};for(var a in n){var r=n[a];e[a]=r(e.index,e.item,e.group)}return e},b=function(t,e,n){for(var a=[],r=t;e>r;r++)a.push(r);return n&&a.push(e),a},y=function(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=Object.keys(t)[Symbol.iterator]();!(a=(o=s.next()).done);a=!0){var u=o.value,p=t[u];n.push(e(u,p))}}catch(c){r=!0,i=c}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n},_=function(t){return y(t,function(t,e){return[t,e]})},x=function(t){return t};n.sum=r,n.min=i,n.max=o,n.sumBy=s,n.minBy=u,n.maxBy=p,n.plus=c,n.minus=l,n.times=f,n.id=x,n.length=d,n.sumVectors=h,n.average=m,n.onCircle=v,n.enhance=g,n.range=b,n.mapObject=y,n.pairs=_,n["default"]={sum:r,min:i,max:o,sumBy:s,minBy:u,maxBy:p,plus:c,minus:l,times:f,id:x,length:d,sumVectors:h,average:m,onCircle:v,enhance:g,range:b,mapObject:y,pairs:_}},{}],199:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(u){r=!0,i=u}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function i(t){var e=t||[],n=function(t,e){var n=t.slice(0,t.length);return n.push(e),n},r=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],u=o[1];return r===s&&i===u},o=function(t,e){for(var n=t.length;"0"===t.charAt(n-1);)n-=1;return"."===t.charAt(n-1)&&(n-=1),t.substr(0,n)},s=function(t,e){var n=t.toFixed(e);return o(n)},u=function(t){var e=t.command,n=t.params,a=n.map(function(t){return s(t,6)});return e+" "+a.join(" ")},p=function(t,e){var n=t.command,r=t.params,i=a(e,2),o=i[0],s=i[1];switch(n){case"M":return[r[0],r[1]];case"L":return[r[0],r[1]];case"H":return[r[0],s];case"V":return[o,r[0]];case"Z":return null;case"C":return[r[4],r[5]];case"S":return[r[2],r[3]];case"Q":return[r[2],r[3]];case"T":return[r[0],r[1]];case"A":return[r[5],r[6]]}},c=function(t,e){return function(n){var a="object"==typeof n?t.map(function(t){return n[t]}):arguments;return e.apply(null,a)}},l=function(t){return i(n(e,t))};return{moveto:c(["x","y"],function(t,e){return l({command:"M",params:[t,e]})}),lineto:c(["x","y"],function(t,e){return l({command:"L",params:[t,e]})}),hlineto:c(["x"],function(t){return l({command:"H",params:[t]})}),vlineto:c(["y"],function(t){return l({command:"V",params:[t]})}),closepath:function(){return l({command:"Z",params:[]})},curveto:c(["x1","y1","x2","y2","x","y"],function(t,e,n,a,r,i){return l({command:"C",params:[t,e,n,a,r,i]})}),smoothcurveto:c(["x2","y2","x","y"],function(t,e,n,a){return l({command:"S",params:[t,e,n,a]})}),qcurveto:c(["x1","y1","x","y"],function(t,e,n,a){return l({command:"Q",params:[t,e,n,a]})}),smoothqcurveto:c(["x","y"],function(t,e){return l({command:"T",params:[t,e]})}),arc:c(["rx","ry","xrot","largeArcFlag","sweepFlag","x","y"],function(t,e,n,a,r,i,o){return l({command:"A",params:[t,e,n,a,r,i,o]})}),print:function(){return e.map(u).join(" ")},points:function(){var t=[],n=[0,0],a=!0,r=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(a=(o=s.next()).done);a=!0){var u=o.value,c=p(u,n);n=c,c&&t.push(c)}}catch(l){r=!0,i=l}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return t},instructions:function(){return e.slice(0,e.length)},connect:function(t){var e=this.points(),n=e[e.length-1],a=t.points()[0],o=t.instructions().slice(1);return r(n,a)||o.unshift({command:"L",params:a}),i(this.instructions().concat(o))}}};n["default"]=function(){return r()},e.exports=n["default"]},{}],200:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}function r(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1)for(var n=1;n1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];for(var r,i;i=n.shift();)for(r in i)Ro.call(i,r)&&(t[r]=i[r]);return t}function r(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];return n.forEach(function(e){for(var n in e)!e.hasOwnProperty(n)||n in t||(t[n]=e[n])}),t}function i(t){return"[object Array]"===jo.call(t)}function o(t){return Lo.test(jo.call(t))}function s(t,e){return null===t&&null===e?!0:"object"==typeof t||"object"==typeof e?!1:t===e}function u(t){return!isNaN(parseFloat(t))&&isFinite(t)}function p(t){return t&&"[object Object]"===jo.call(t)}function c(t,e){return t.replace(/%s/g,function(){return e.shift()})}function l(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];throw t=c(t,n),Error(t)}function f(){Rv.DEBUG&&Ao.apply(null,arguments)}function d(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];t=c(t,n),To(t,n)}function h(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];t=c(t,n),No[t]||(No[t]=!0,To(t,n))}function m(){Rv.DEBUG&&d.apply(null,arguments)}function v(){Rv.DEBUG&&h.apply(null,arguments)}function g(t,e,n){var a=b(t,e,n);return a?a[t][n]:null}function b(t,e,n){for(;e;){if(n in e[t])return e;if(e.isolated)return null;e=e.parent}}function y(t){return function(){return t}}function _(t){var e,n,a,r,i,o;for(e=t.split("."),(n=zo[e.length])||(n=x(e.length)),i=[],a=function(t,n){return t?"*":e[n]},r=n.length;r--;)o=n[r].map(a).join("."),i.hasOwnProperty(o)||(i.push(o),i[o]=!0);return i}function x(t){var e,n,a,r,i,o,s,u,p="";if(!zo[t]){for(a=[];p.length=i;i+=1){for(n=i.toString(2);n.lengtho;o++)u.push(r(n[o]));a[i]=u}zo[t]=a}return zo[t]}function w(t,e,n,a){var r=t[e];if(!r||!r.equalsOrStartsWith(a)&&r.equalsOrStartsWith(n))return t[e]=r?r.replace(n,a):a,!0}function k(t){var e=t.slice(2);return"i"===t[1]&&u(e)?+e:e}function E(t){return null==t?t:(Qo.hasOwnProperty(t)||(Qo[t]=new Ko(t)),Qo[t])}function P(t,e){function n(e,n){var a,r,o;return n.isRoot?o=[].concat(Object.keys(t.viewmodel.data),Object.keys(t.viewmodel.mappings),Object.keys(t.viewmodel.computations)):(a=t.viewmodel.wrapped[n.str],r=a?a.get():t.viewmodel.get(n),o=r?Object.keys(r):null),o&&o.forEach(function(t){"_ractive"===t&&i(r)||e.push(n.join(t))}),e}var a,r,o;for(a=e.str.split("."),o=[Yo];r=a.shift();)"*"===r?o=o.reduce(n,[]):o[0]===Yo?o[0]=E(r):o=o.map(C(r));return o}function C(t){return function(e){return e.join(t)}}function S(t){return t?t.replace(Wo,".$1"):""}function O(t,e,n){if("string"!=typeof e||!u(n))throw Error("Bad arguments");var a=void 0,r=void 0;if(/\*/.test(e))return r={},P(t,E(S(e))).forEach(function(e){var a=t.viewmodel.get(e);if(!u(a))throw Error(Jo);r[e.str]=a+n}),t.set(r);if(a=t.get(e),!u(a))throw Error(Jo);return t.set(e,+a+n)}function A(t,e){return Xo(this,t,void 0===e?1:+e)}function T(t){this.event=t,this.method="on"+t,this.deprecate=as[t]}function M(t,e){var n=t.indexOf(e);-1===n&&t.push(e)}function R(t,e){for(var n=0,a=t.length;a>n;n++)if(t[n]==e)return!0;return!1}function j(t,e){var n;if(!i(t)||!i(e))return!1;if(t.length!==e.length)return!1;for(n=t.length;n--;)if(t[n]!==e[n])return!1;return!0}function L(t){return"string"==typeof t?[t]:void 0===t?[]:t;
+}function N(t){return t[t.length-1]}function D(t,e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}function F(t){for(var e=[],n=t.length;n--;)e[n]=t[n];return e}function I(t){setTimeout(t,0)}function B(t,e){return function(){for(var n;n=t.shift();)n(e)}}function q(t,e,n,a){var r;if(e===t)throw new TypeError("A promise's fulfillment handler cannot return the same promise");if(e instanceof rs)e.then(n,a);else if(!e||"object"!=typeof e&&"function"!=typeof e)n(e);else{try{r=e.then}catch(i){return void a(i)}if("function"==typeof r){var o,s,u;s=function(e){o||(o=!0,q(t,e,n,a))},u=function(t){o||(o=!0,a(t))};try{r.call(e,s,u)}catch(i){if(!o)return a(i),void(o=!0)}}else n(e)}}function G(t,e,n){var a;return e=S(e),"~/"===e.substr(0,2)?(a=E(e.substring(2)),z(t,a.firstKey,n)):"."===e[0]?(a=U(cs(n),e),a&&z(t,a.firstKey,n)):a=V(t,E(e),n),a}function U(t,e){var n;if(void 0!=t&&"string"!=typeof t&&(t=t.str),"."===e)return E(t);if(n=t?t.split("."):[],"../"===e.substr(0,3)){for(;"../"===e.substr(0,3);){if(!n.length)throw Error('Could not resolve reference - too many "../" prefixes');n.pop(),e=e.substring(3)}return n.push(e),E(n.join("."))}return E(t?t+e.replace(/^\.\//,"."):e.replace(/^\.\/?/,""))}function V(t,e,n,a){var r,i,o,s,u;if(e.isRoot)return e;for(i=e.firstKey;n;)if(r=n.context,n=n.parent,r&&(s=!0,o=t.viewmodel.get(r),o&&("object"==typeof o||"function"==typeof o)&&i in o))return r.join(e.str);return W(t.viewmodel,i)?e:t.parent&&!t.isolated&&(s=!0,n=t.component.parentFragment,i=E(i),u=V(t.parent,i,n,!0))?(t.viewmodel.map(i,{origin:t.parent.viewmodel,keypath:u}),e):a||s?void 0:(t.viewmodel.set(e,void 0),e)}function z(t,e){var n;!t.parent||t.isolated||W(t.viewmodel,e)||(e=E(e),(n=V(t.parent,e,t.component.parentFragment,!0))&&t.viewmodel.map(e,{origin:t.parent.viewmodel,keypath:n}))}function W(t,e){return""===e||e in t.data||e in t.computations||e in t.mappings}function H(t){t.teardown()}function Q(t){t.unbind()}function K(t){t.unrender()}function $(t){t.cancel()}function Y(t){t.detach()}function X(t){t.detachNodes()}function J(t){!t.ready||t.outros.length||t.outroChildren||(t.outrosComplete||(t.parent?t.parent.decrementOutros(t):t.detachNodes(),t.outrosComplete=!0),t.intros.length||t.totalChildren||("function"==typeof t.callback&&t.callback(),t.parent&&t.parent.decrementTotal()))}function Z(){for(var t,e,n;ds.ractives.length;)e=ds.ractives.pop(),n=e.viewmodel.applyChanges(),n&&gs.fire(e,n);for(tt(),t=0;t=0;i--)r=t._subs[e[i]],r&&(s=gt(t,r,n,a)&&s);if(Vs.dequeue(t),t.parent&&s){if(o&&t.component){var u=t.component.name+"."+e[e.length-1];e=E(u).wildcardMatches(),n&&(n.component=t)}vt(t.parent,e,n,a)}}function gt(t,e,n,a){var r=null,i=!1;n&&!n._noArg&&(a=[n].concat(a)),e=e.slice();for(var o=0,s=e.length;s>o;o+=1)e[o].apply(t,a)===!1&&(i=!0);return n&&!n._noArg&&i&&(r=n.original)&&(r.preventDefault&&r.preventDefault(),r.stopPropagation&&r.stopPropagation()),!i}function bt(t){var e={args:Array.prototype.slice.call(arguments,1)};zs(this,t,e)}function yt(t){var e;return t=E(S(t)),e=this.viewmodel.get(t,Qs),void 0===e&&this.parent&&!this.isolated&&ls(this,t.str,this.component.parentFragment)&&(e=this.viewmodel.get(t)),e}function _t(e,n){if(!this.fragment.rendered)throw Error("The API has changed - you must call `ractive.render(target[, anchor])` to render your Ractive instance. Once rendered you can use `ractive.insert()`.");if(e=t(e),n=t(n)||null,!e)throw Error("You must specify a valid target to insert into");e.insertBefore(this.detach(),n),this.el=e,(e.__ractive_instances__||(e.__ractive_instances__=[])).push(this),this.detached=null,xt(this)}function xt(t){$s.fire(t),t.findAllComponents("*").forEach(function(t){xt(t.instance)})}function wt(t,e,n){var a,r;return t=E(S(t)),a=this.viewmodel.get(t),i(a)&&i(e)?(r=bs.start(this,!0),this.viewmodel.merge(t,a,e,n),bs.end(),r):this.set(t,e,n&&n.complete)}function kt(t,e){var n,a;return n=P(t,e),a={},n.forEach(function(e){a[e.str]=t.get(e.str)}),a}function Et(t,e,n,a){var r,i,o;e=E(S(e)),a=a||cu,e.isPattern?(r=new uu(t,e,n,a),t.viewmodel.patternObservers.push(r),i=!0):r=new Zs(t,e,n,a),r.init(a.init),t.viewmodel.register(e,r,i?"patternObservers":"observers"),r.ready=!0;var s={cancel:function(){var n;o||(i?(n=t.viewmodel.patternObservers.indexOf(r),t.viewmodel.patternObservers.splice(n,1),t.viewmodel.unregister(e,r,"patternObservers")):t.viewmodel.unregister(e,r,"observers"),o=!0)}};return t._observers.push(s),s}function Pt(t,e,n){var a,r,i,o;if(p(t)){n=e,r=t,a=[];for(t in r)r.hasOwnProperty(t)&&(e=r[t],a.push(this.observe(t,e,n)));return{cancel:function(){for(;a.length;)a.pop().cancel()}}}if("function"==typeof t)return n=e,e=t,t="",pu(this,t,e,n);if(i=t.split(" "),1===i.length)return pu(this,t,e,n);for(a=[],o=i.length;o--;)t=i[o],t&&a.push(pu(this,t,e,n));return{cancel:function(){for(;a.length;)a.pop().cancel()}}}function Ct(t,e,n){var a=this.observe(t,function(){e.apply(this,arguments),a.cancel()},{init:!1,defer:n&&n.defer});return a}function St(t,e){var n,a=this;if(t)n=t.split(" ").map(du).filter(hu),n.forEach(function(t){var n,r;(n=a._subs[t])&&(e?(r=n.indexOf(e),-1!==r&&n.splice(r,1)):a._subs[t]=[])});else for(t in this._subs)delete this._subs[t];return this}function Ot(t,e){var n,a,r,i=this;if("object"==typeof t){n=[];for(a in t)t.hasOwnProperty(a)&&n.push(this.on(a,t[a]));return{cancel:function(){for(var t;t=n.pop();)t.cancel()}}}return r=t.split(" ").map(du).filter(hu),r.forEach(function(t){(i._subs[t]||(i._subs[t]=[])).push(e)}),{cancel:function(){return i.off(t,e)}}}function At(t,e){var n=this.on(t,function(){e.apply(this,arguments),n.cancel()});return n}function Tt(t,e,n){var a,r,i,o,s,u,p=[];if(a=Mt(t,e,n),!a)return null;for(r=t.length,s=a.length-2-a[1],i=Math.min(r,a[0]),o=i+a[1],u=0;i>u;u+=1)p.push(u);for(;o>u;u+=1)p.push(-1);for(;r>u;u+=1)p.push(u+s);return 0!==s?p.touchedFrom=a[0]:p.touchedFrom=t.length,p}function Mt(t,e,n){switch(e){case"splice":for(void 0!==n[0]&&n[0]<0&&(n[0]=t.length+Math.max(n[0],-t.length));n.length<2;)n.push(0);return n[1]=Math.min(n[1],t.length-n[0]),n;case"sort":case"reverse":return null;case"pop":return t.length?[t.length-1,1]:[0,0];case"push":return[t.length,0].concat(n);case"shift":return[0,t.length?1:0];case"unshift":return[0,0].concat(n)}}function Rt(e,n){var a,r,i,o=this;if(i=this.transitionsEnabled,this.noIntro&&(this.transitionsEnabled=!1),a=bs.start(this,!0),bs.scheduleTask(function(){return Mu.fire(o)},!0),this.fragment.rendered)throw Error("You cannot call ractive.render() on an already rendered instance! Call ractive.unrender() first");if(e=t(e)||this.el,n=t(n)||this.anchor,this.el=e,this.anchor=n,!this.append&&e){var s=e.__ractive_instances__;s&&s.length&&jt(s),e.innerHTML=""}return this.cssId&&Au.apply(),e&&((r=e.__ractive_instances__)?r.push(this):e.__ractive_instances__=[this],n?e.insertBefore(this.fragment.render(),n):e.appendChild(this.fragment.render())),bs.end(),this.transitionsEnabled=i,a.then(function(){return Ru.fire(o)})}function jt(t){t.splice(0,t.length).forEach(H)}function Lt(t,e){for(var n=t.slice(),a=e.length;a--;)~n.indexOf(e[a])||n.push(e[a]);return n}function Nt(t,e){var n,a,r;return a='[data-ractive-css~="{'+e+'}"]',r=function(t){var e,n,r,i,o,s,u,p=[];for(e=[];n=Iu.exec(t);)e.push({str:n[0],base:n[1],modifiers:n[2]});for(i=e.map(Ft),u=e.length;u--;)s=i.slice(),r=e[u],s[u]=r.base+a+r.modifiers||"",o=i.slice(),o[u]=a+" "+o[u],p.push(s.join(" "),o.join(" "));return p.join(", ")},n=qu.test(t)?t.replace(qu,a):t.replace(Fu,"").replace(Du,function(t,e){var n,a;return Bu.test(e)?t:(n=e.split(",").map(Dt),a=n.map(r).join(", ")+" ",t.replace(e,a))})}function Dt(t){return t.trim?t.trim():t.replace(/^\s+/,"").replace(/\s+$/,"")}function Ft(t){return t.str}function It(t){t&&t.constructor!==Object&&("function"==typeof t||("object"!=typeof t?l("data option must be an object or a function, `"+t+"` is not valid"):m("If supplied, options.data should be a plain JavaScript object - using a non-POJO as the root object may work, but is discouraged")))}function Bt(t,e){It(e);var n="function"==typeof t,a="function"==typeof e;return e||n||(e={}),n||a?function(){var r=a?qt(e,this):e,i=n?qt(t,this):t;return Gt(r,i)}:Gt(e,t)}function qt(t,e){var n=t.call(e);if(n)return"object"!=typeof n&&l("Data function must return an object"),n.constructor!==Object&&v("Data function returned something other than a plain JavaScript object. This might work, but is strongly discouraged"),n}function Gt(t,e){if(t&&e){for(var n in e)n in t||(t[n]=e[n]);return t}return t||e}function Ut(t){var e=Eo(Ku);return e.parse=function(e,n){return Vt(e,n||t)},e}function Vt(t,e){if(!Hu)throw Error("Missing Ractive.parse - cannot parse template. Either preparse or use the version that includes the parser");return Hu(t,e||this.options)}function zt(t,e){var n;if(!Ji){if(e&&e.noThrow)return;throw Error("Cannot retrieve template #"+t+" as Ractive is not running in a browser.")}if(Wt(t)&&(t=t.substring(1)),!(n=document.getElementById(t))){if(e&&e.noThrow)return;throw Error("Could not find template element with id #"+t)}if("SCRIPT"!==n.tagName.toUpperCase()){if(e&&e.noThrow)return;throw Error("Template element with id #"+t+", must be a
+
+
+
+
+ | Shutdown
+ {{#if data.PC_showexitprogram}}
+ | EXIT PROGRAM
+ | Minimize Program
+ {{/if}}
+ |
+
+
+
+ Welcome to computer configuration utility. Please consult your system administrator if you have any questions about your device.
+
+ {{#if data.battery}}
+
+ Active
+
+
+ {{data.battery.max}}
+
+
+ {{Math.round(adata.battery.charge)}}/{{adata.battery.max}}
+
+ {{else}}
+
+ Not Available
+
+ {{/if}}
+
+
+ {{data.power_usage}}W
+
+
+
+
+
+ {{Math.round(adata.disk_used)}}GQ/{{adata.disk_size}}GQ
+
+
+
+
+
+ {{#each data.hardware}}
+
+
+ {{desc}}
+
+
+
+ {{enabled ? "Enabled" : "Disabled"}}
+
+
+
+ {{powerusage}}W
+
+ {{#if !critical}}
+
+
+ {{enabled ? "On" : "Off"}}
+
+
+ {{/if}}
+
+ {{/each}}
+
+
\ No newline at end of file
diff --git a/tgui/src/interfaces/ntnet_chat.ract b/tgui/src/interfaces/ntnet_chat.ract
new file mode 100644
index 00000000000..03be35d39de
--- /dev/null
+++ b/tgui/src/interfaces/ntnet_chat.ract
@@ -0,0 +1,103 @@
+
+
+
+
+ | Shutdown
+ {{#if data.PC_showexitprogram}}
+ | EXIT PROGRAM
+ | Minimize Program
+ {{/if}}
+ |
+
+
+
+ {{#if data.adminmode}}
+ ADMINISTRATIVE MODE
+ {{/if}}
+
+ {{#if data.title}}
+
+ Current channel:
+
+
+ {{data.title}}
+
+
+ Operator access:
+
+
+ {{#if data.is_operator}}
+ Enabled
+ {{else}}
+ Disabled
+ {{/if}}
+
+
+ Controls:
+
+
+
+ | Send message
+ | | Change nickname
+ | | Toggle administration mode
+ | | Leave channel
+ | | Save log to local drive
+ {{#if data.is_operator}}
+ | | Rename channel
+ | | Set password
+ | | Delete channel
+ {{/if}}
+ |
+
+ Chat Window
+
+
+
+ {{#each data.messages}}
+ {{msg}}
+ {{/each}}
+
+
+
+ Connected Users
+ {{#each data.clients}}
+ {{name}}
+ {{/each}}
+ {{else}}
+ Controls:
+
+ | Change nickname
+ | | New Channel
+ | | Toggle administration mode
+ |
+ Available channels:
+
+ {{#each data.all_channels}}
+ {{chan}}
+ {{/each}}
+ |
+ {{/if}}
+
\ No newline at end of file
diff --git a/tgui/src/interfaces/ntnet_dos.ract b/tgui/src/interfaces/ntnet_dos.ract
new file mode 100644
index 00000000000..afff153814d
--- /dev/null
+++ b/tgui/src/interfaces/ntnet_dos.ract
@@ -0,0 +1,58 @@
+
+
+
+
+ | Shutdown
+ {{#if data.PC_showexitprogram}}
+ | EXIT PROGRAM
+ | Minimize Program
+ {{/if}}
+ |
+
+
+
+ {{#if data.error}}
+ ##SYSTEM ERROR: {{data.error}}RESET
+ {{elseif data.target}}
+ ##DoS traffic generator active. Tx: {{data.speed}}GQ/s
+ {{#each data.dos_strings}}
+ {{nums}}
+ {{/each}}
+ ABORT
+ {{else}}
+ ##DoS traffic generator ready. Select target device.
+ {{#if data.focus}}
+ Targeted device ID: {{data.focus}}
+ {{else}}
+ Targeted device ID: None
+ {{/if}}
+ EXECUTE
+ Detected devices on network:
+ {{#each data.relays}}
+ {{id}}
+ {{/each}}
+ {{/if}}
+
diff --git a/tgui/src/interfaces/ntnet_downloader.ract b/tgui/src/interfaces/ntnet_downloader.ract
new file mode 100644
index 00000000000..da100b50e5a
--- /dev/null
+++ b/tgui/src/interfaces/ntnet_downloader.ract
@@ -0,0 +1,119 @@
+
+
+
+
+ | Shutdown
+ {{#if data.PC_showexitprogram}}
+ | EXIT PROGRAM
+ | Minimize Program
+ {{/if}}
+ |
+
+
+
+
+ Welcome to software download utility. Please select which software you wish to download.
+ {{#if data.error}}
+
+
+ {{data.error}}
+
+
+
+ RESET
+
+
+
+ {{else}}
+ {{#if data.downloadname}}
+
+ Please wait...
+
+ {{data.downloadname}}
+
+
+ {{data.downloaddesc}}
+
+
+ {{data.downloadcompletion}}GQ / {{data.downloadsize}}GQ
+
+
+ {{data.downloadspeed}} GQ/s
+
+
+ {{Math.round(adata.downloadcompletion)}}/{{adata.downloadsize}}
+
+
+ {{/if}}
+ {{/if}}
+ {{#if !data.downloadname}}
+ {{#if !data.error}}
+
+
+ {{Math.round(adata.disk_used)}}GQ/{{adata.disk_size}}GQ
+
+ {{#each data.downloadable_programs}}
+
+ {{filename}} ({{size}} GQ)
+
+
+ {{filedesc}}
+
+
+ {{fileinfo}}
+
+
+
+ DOWNLOAD
+
+
+ {{/each}}
+
+ {{#if data.hackedavailable}}
+
+ Please note that NanoTrasen does not recommend download of software from non-official servers.
+ {{#each data.hacked_programs}}
+
+ {{filename}} ({{size}} GQ)
+
+
+ {{filedesc}}
+
+
+ {{fileinfo}}
+
+
+
+ DOWNLOAD
+
+
+ {{/each}}
+
+ {{/if}}
+ {{/if}}
+ {{/if}}
+
NTOS v2.0.4b Copyright NanoTrasen 2557 - 2559
+
\ No newline at end of file
diff --git a/tgui/src/interfaces/ntnet_monitor.ract b/tgui/src/interfaces/ntnet_monitor.ract
new file mode 100644
index 00000000000..67943650afe
--- /dev/null
+++ b/tgui/src/interfaces/ntnet_monitor.ract
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+ | Shutdown
+ {{#if data.PC_showexitprogram}}
+ | EXIT PROGRAM
+ | Minimize Program
+ {{/if}}
+ |
+
+
+
+
+
+
+ {{data.ntnetrelays}}
+
+ {{#if data.ntnetrelays}}
+
+ {{data.ntnetstatus ? "ENABLED" : "DISABLED"}}
+
+
+
+
+ TOGGLE
+
+
+
+ Caution - Disabling wireless transmitters when using wireless device may prevent you from re-enabling them again!
+ {{else}}
+
Wireless coverage unavailable, no relays are connected.
+ {{/if}}
+
+
+
+
+
+
+
+ | PROTOCOL
+ | STATUS
+ | CONTROL
+ |
+ | Software Downloads
+ | {{data.config_softwaredownload ? 'ENABLED' : 'DISABLED'}}
+ | TOGGLE
+ |
+ | Peer to Peer Traffic
+ | {{data.config_peertopeer ? 'ENABLED' : 'DISABLED'}}
+ | TOGGLE
+ |
+ | Communication Systems
+ | {{data.config_communication ? 'ENABLED' : 'DISABLED'}}
+ | TOGGLE
+ |
+ | Remote System Control
+ | {{data.config_systemcontrol ? 'ENABLED' : 'DISABLED'}}
+ | TOGGLE
+ |
+
+
+
+
+ {{#if data.idsalarm}}
+
+ NETWORK INCURSION DETECTED
+
+ An abnormal activity has been detected in the network. Please verify system logs for more information
+
+ {{/if}}
+
+ {{data.idsstatus ? 'ENABLED' : 'DISABLED'}}
+
+
+
+ {{data.ntnetmaxlogs}}
+
+
+
+
+
+ | RESET IDS
+ | | TOGGLE IDS
+ | | SET LOG LIMIT
+ | | PURGE LOGS
+ |
+
+
+
+
+
+ {{#each data.ntnetlogs}}
+ {{entry}}
+ {{/each}}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tgui/src/interfaces/ntnet_relay.ract b/tgui/src/interfaces/ntnet_relay.ract
new file mode 100644
index 00000000000..592d235164e
--- /dev/null
+++ b/tgui/src/interfaces/ntnet_relay.ract
@@ -0,0 +1,22 @@
+
+ {{#if data.dos_crashed}}
+ NETWORK BUFFERS OVERLOADED
+ Overload Recovery Mode
+ This system is suffering temporary outage due to overflow of traffic buffers. Until buffered traffic is processed, all further requests will be dropped. Frequent occurences of this error may indicate insufficient hardware capacity of your network. Please contact your network planning department for instructions on how to resolve this issue.
+ ADMINISTRATIVE OVERRIDE
+ CAUTION - Data loss may occur
+
+ Purge buffered traffic
+
+ {{else}}
+
+
+ {{data.enabled ? "ENABLED" : "DISABLED"}}
+
+
+
+
+ {{data.dos_overload}} / {{data.dos_capacity}} GQ
+
+ {{/if}}
+
\ No newline at end of file
diff --git a/tgui/src/interfaces/ntnet_transfer.ract b/tgui/src/interfaces/ntnet_transfer.ract
new file mode 100644
index 00000000000..f0c499f8de0
--- /dev/null
+++ b/tgui/src/interfaces/ntnet_transfer.ract
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+ | Shutdown
+ {{#if data.PC_showexitprogram}}
+ | EXIT PROGRAM
+ | Minimize Program
+ {{/if}}
+ |
+
+
+
+ {{#if data.error}}
+
+ An error has occured during operation...
+ Additional information: {{data.error}}
+ Clear
+
+ {{elseif data.downloading}}
+ Download in progress...
+
+ Downloaded file:
+
+
+ {{data.download_name}}
+
+
+ Download progress:
+
+
+ {{data.download_progress}} / {{data.download_size}} GQ
+
+
+ Transfer speed:
+
+
+ {{data.download_netspeed}}GQ/s
+
+
+ Controls:
+
+
+ Abort download
+
+ {{elseif data.uploading}}
+ Server enabled
+
+ Connected clients:
+
+
+ {{data.upload_clients}}
+
+
+ Provided file:
+
+
+ {{data.upload_filename}}
+
+
+ Server password:
+
+
+ {{#if data.haspassword}}
+ ENABLED
+ {{else}}
+ DISABLED
+ {{/if}}
+
+
+ Commands:
+
+
+ Set password
+ Exit server
+
+ {{elseif data.upload_filelist}}
+ File transfer server ready. Select file to upload:
+
+ | File name | File size | Controls
+ {{#each data.upload_filelist}}
+ |
|---|
| {{filename}}
+ | {{size}}GQ
+ | Select
+ {{/each}}
+ |
+
+ Set password
+ Return
+ {{else}}
+ Available files:
+ | Server UID | File Name | File Size | Password Protection | Operations
+ {{#each data.servers}}
+ |
|---|
| {{uid}}
+ | {{filename}}
+ | {{size}}GQ
+ {{#if haspassword}}
+ | Enabled
+ {{/if}}
+ {{#if !haspassword}}
+ | Disabled
+ {{/if}}
+
+ | Download
+ {{/each}}
+ |
+
+ Send file
+ {{/if}}
+
+
\ No newline at end of file
diff --git a/tgui/src/interfaces/power_monitor_prog.ract b/tgui/src/interfaces/power_monitor_prog.ract
new file mode 100644
index 00000000000..ba40f27ec07
--- /dev/null
+++ b/tgui/src/interfaces/power_monitor_prog.ract
@@ -0,0 +1,112 @@
+
+
+
+
+
+ | Shutdown
+ {{#if data.PC_showexitprogram}}
+ | EXIT PROGRAM
+ | Minimize Program
+ {{/if}}
+ |
+
+
+
+
+ {{#if config.fancy}}
+
+ {{else}}
+
+ {{data.supply}} W
+
+
+ {{data.demand}} W
+
+ {{/if}}
+
+
+
+ Area
+ Charge
+ Load
+ Status
+ Equipment
+ Lighting
+ Environment
+
+ {{#each data.areas}}
+
+ {{Math.round(adata.areas[@index].charge)}} %
+ {{Math.round(adata.areas[@index].load)}} W
+ {{chargingMode(charging)}}
+ {{channelPower(eqp)}} [{{channelMode(eqp)}}]
+ {{channelPower(lgt)}} [{{channelMode(lgt)}}]
+ {{channelPower(env)}} [{{channelMode(env)}}]
+
+ {{/each}}
+
\ No newline at end of file
diff --git a/tgui/src/interfaces/revelation.ract b/tgui/src/interfaces/revelation.ract
new file mode 100644
index 00000000000..d4bbd89b403
--- /dev/null
+++ b/tgui/src/interfaces/revelation.ract
@@ -0,0 +1,60 @@
+
+
+
+
+ | Shutdown
+ {{#if data.PC_showexitprogram}}
+ | EXIT PROGRAM
+ | Minimize Program
+ {{/if}}
+ |
+
+
+
+
+
+
+ Payload status:
+
+
+ {{#if data.armed}}
+ ARMED
+ {{else}}
+ DISARMED
+ {{/if}}
+
+
+ Controls:
+
+
+
+ | OBFUSCATE PROGRAM NAME
+ | | {{data.armed ? "DISARM" : "ARM"}}
+ ACTIVATE
+ |
+
+
+
\ No newline at end of file
diff --git a/tgui/src/interfaces/station_alert_prog.ract b/tgui/src/interfaces/station_alert_prog.ract
new file mode 100644
index 00000000000..5ba78cdb91e
--- /dev/null
+++ b/tgui/src/interfaces/station_alert_prog.ract
@@ -0,0 +1,47 @@
+
+
+
+
+ | Shutdown
+ {{#if data.PC_showexitprogram}}
+ | EXIT PROGRAM
+ | Minimize Program
+ {{/if}}
+ |
+
+
+
+{{#each data.alarms:class}}
+
+
+ {{#each .}}
+ - {{.}}
+ {{else}}
+ - System Nominal
+ {{/each}}
+
+
+{{/each}}
\ No newline at end of file
|