diff --git a/.editorconfig b/.editorconfig index 13dcd5e029..c44572fbf9 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,11 +1,14 @@ [*] -insert_final_newline = true indent_style = tab indent_size = 4 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +#end_of_line = lf [*.yml] indent_style = space indent_size = 2 -[*.txt] -insert_final_newline = false +[*.py] +indent_style = space diff --git a/.gitattributes b/.gitattributes index a0a624af04..c447869d3e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,9 +1,42 @@ -# merger hooks, run tools/hooks/install.bat or install.sh to set up -*.dmm merge=dmm -*.dmi merge=dmi - -# force changelog merging to use union -html/changelog.html merge=union - -# force all files to be LF * text=auto + +## Enforce text mode and LF line breaks +## porter note: not yet LFing dm. +# *.bat text eol=lf +*.css text eol=lf +# *.dm text eol=lf +# *.dme text eol=lf +# *.dmf text eol=lf +*.htm text eol=lf +*.html text eol=lf +*.js text eol=lf +*.json text eol=lf +*.jsx text eol=lf +# *.md text eol=lf +*.py text eol=lf +*.scss text eol=lf +# *.sh text eol=lf +# *.sql text eol=lf +*.svg text eol=lf +*.ts text eol=lf +*.tsx text eol=lf +# *.txt text eol=lf +*.yaml text eol=lf +*.yml text eol=lf + +## Enforce binary mode +*.bmp binary +*.dll binary +*.dmb binary +*.exe binary +*.gif binary +*.jpg binary +*.png binary +*.so binary + +## Merger hooks, run tools/hooks/install.bat or install.sh to set up +*.dmm text eol=lf merge=dmm +*.dmi binary merge=dmi + +## Force changelog merging to use union +html/changelog.html text eol=lf merge=union diff --git a/.github/workflows/autobuild_tgui.yml b/.github/workflows/autobuild_tgui.yml deleted file mode 100644 index 226ea2b7ce..0000000000 --- a/.github/workflows/autobuild_tgui.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Autobuild TGUI - -on: - push: - branches: - - 'master' - paths: - - 'tgui/**.js' - - 'tgui/**.scss' - -jobs: - build: - name: Rebuild TGUI - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v1 - with: - fetch-depth: 25 - - name: Setup Node - uses: actions/setup-node@v1 - with: - node-version: '>=12.13' - - name: Build TGUI - run: bin/tgui --ci - working-directory: ./tgui - - name: Commit Artifacts - run: | - git config --local user.email "action@github.com" - git config --local user.name "TGUI" - git pull origin master - git commit -m "Automatic TGUI Rebuild [ci skip]" -a || true - - name: Push Artifacts - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.GITHUB_MASTER_KEY }} diff --git a/.github/workflows/compile_changelogs.yml b/.github/workflows/compile_changelogs.yml index f8098df66e..4fd396f133 100644 --- a/.github/workflows/compile_changelogs.yml +++ b/.github/workflows/compile_changelogs.yml @@ -9,32 +9,47 @@ jobs: name: "Compile changelogs" runs-on: ubuntu-latest steps: + - name: "Check for CHANGELOG_ENABLER secret and pass true to output if it exists to be checked by later steps" + id: value_holder + env: + CHANGELOG_ENABLER: ${{ secrets.CHANGELOG_ENABLER }} + run: | + unset SECRET_EXISTS + if [-n $CHANGELOG_ENABLER]; then SECRET_EXISTS='true' ; fi + echo ::set-output name=CL_ENABLED::${SECRET_EXISTS} - name: "Setup python" + if: steps.value_holder.outputs.CL_ENABLED uses: actions/setup-python@v1 with: python-version: '3.x' - name: "Install deps" + if: steps.value_holder.outputs.CL_ENABLED run: | python -m pip install --upgrade pip python -m pip install pyyaml sudo apt-get install dos2unix - name: "Checkout" + if: steps.value_holder.outputs.CL_ENABLED uses: actions/checkout@v1 with: fetch-depth: 25 - name: "Compile" + if: steps.value_holder.outputs.CL_ENABLED run: | python tools/ss13_genchangelog.py html/changelog.html html/changelogs - name: "Convert Lineendings" + if: steps.value_holder.outputs.CL_ENABLED run: | unix2dos html/changelogs/.all_changelog.yml - name: Commit + if: steps.value_holder.outputs.CL_ENABLED run: | git config --local user.email "action@github.com" git config --local user.name "Changelogs" git pull origin master git commit -m "Automatic changelog compile [ci skip]" -a || true - name: "Push" + if: steps.value_holder.outputs.CL_ENABLED uses: ad-m/github-push-action@master with: github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/round_id_linker.yml b/.github/workflows/round_id_linker.yml new file mode 100644 index 0000000000..37998a93eb --- /dev/null +++ b/.github/workflows/round_id_linker.yml @@ -0,0 +1,12 @@ +name: "Round ID Linker" +on: + issues: + types: [opened] + +jobs: + link_rounds: + runs-on: ubuntu-latest + steps: + - uses: Cidatel-Station-13/round_linker@master #notice: fork the round linkies from tg!! + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index f65245c021..e885761104 100644 --- a/.gitignore +++ b/.gitignore @@ -198,13 +198,36 @@ Temporary Items !/.vscode/extensions.json tools/MapAtmosFixer/MapAtmosFixer/obj/* tools/MapAtmosFixer/MapAtmosFixer/bin/* +tools/CreditsTool/bin/* +tools/CreditsTool/obj/* #GitHub Atom .atom-build.json -#Jukebox audio files -/config/jukebox_music/**/* +#KDevelop and Kate +*.kdev4* +*.kate-swp #extra map stuff /_maps/**/backup/ /_maps/templates.dm + +#dmdoc default folder +/dmdoc + +# Ignore custom music and title screens (amend as appropriate) +/config/jukebox_music/sounds/* +!/config/jukebox_music/sounds/exclude +/config/title_music/sounds/* +!/config/title_music/sounds/exclude +/config/title_screens/images/* +!/config/title_screens/images/exclude + +#Linux docker +tools/LinuxOneShot/SetupProgram/obj/* +tools/LinuxOneShot/SetupProgram/bin/* +tools/LinuxOneShot/SetupProgram/.vs +tools/LinuxOneShot/Database +tools/LinuxOneShot/TGS_Config +tools/LinuxOneShot/TGS_Instances +tools/LinuxOneShot/TGS_Logs diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000..11d27b55d3 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,11 @@ +build: + stage: build + rules: + - if: $CI_MERGE_REQUEST_IID || $CI_COMMIT_REF_NAME == "master" + changes: + - tgui/**/*.js + - tgui/**/*.scss + when: always + image: node:lts + script: + - tgui/bin/tgui --ci diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/.travis.yml b/.travis.yml index 2214df3aee..83ef6fa8ff 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,13 +1,13 @@ language: generic +os: linux dist: xenial -sudo: false branches: except: - ___TGS3TempBranch - ___TGSTempBranch -matrix: +jobs: include: - name: "Run Linters" addons: @@ -16,9 +16,15 @@ matrix: - python3 - python3-pip - python3-setuptools + - pcregrep + - rustc + - cargo + cache: + directories: + - $HOME/SpacemanDMM install: - tools/travis/install_build_tools.sh - - tools/travis/install_dreamchecker.sh + - tools/travis/install_spaceman_dmm.sh dreamchecker script: - tools/travis/check_filedirs.sh tgstation.dme - tools/travis/check_changelogs.sh @@ -76,3 +82,21 @@ matrix: script: - tools/travis/dm.sh -DTRAVISBUILDING tgstation.dme || travis_terminate 1 - tools/travis/run_server.sh + + # - name: "Generate Documentation" + # # Only run for non-PR commits to the real master branch. + # if: branch = master AND head_branch IS blank + # install: + # - tools/travis/install_spaceman_dmm.sh dmdoc + # before_script: + # # Travis checks out a hash, try to get back on a branch. + # - git checkout $TRAVIS_BRANCH || true + # script: + # - ~/dmdoc + # - touch dmdoc/.nojekyll + # deploy: + # provider: pages + # skip_cleanup: true + # local_dir: dmdoc + # token: $DMDOC_GITHUB_TOKEN + # fqdn: codedocs.tgstation13.org diff --git a/_maps/RandomRuins/SpaceRuins/skelter.dmm b/_maps/RandomRuins/SpaceRuins/skelter.dmm index f6e6584f10..f6e56a6348 100644 --- a/_maps/RandomRuins/SpaceRuins/skelter.dmm +++ b/_maps/RandomRuins/SpaceRuins/skelter.dmm @@ -1529,6 +1529,7 @@ icon_state = "warningline"; dir = 1 }, +/obj/item/paper/fluff/ruins/skelter/cloner, /turf/open/floor/plasteel, /area/ruin/space/has_grav/skelter/med) "dJ" = ( @@ -2485,10 +2486,13 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/skelter/engine/powerstorage) "fR" = ( -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/item/ammo_casing/c45, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/item/kitchen/knife/combat, /turf/open/floor/plating, /area/ruin/space/has_grav/skelter/engine/powerstorage) "fS" = ( @@ -2826,10 +2830,12 @@ /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/skelter/sec) "gI" = ( -/obj/structure/rack, -/obj/item/gun/ballistic/automatic/pistol/m1911, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/skelter/sec) +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/item/ammo_casing/c10mm, +/turf/open/floor/plating, +/area/ruin/space/has_grav/skelter/engine/powerstorage) "gJ" = ( /obj/machinery/power/terminal{ dir = 1 @@ -3285,17 +3291,10 @@ /turf/open/floor/plasteel/showroomfloor, /area/ruin/space/has_grav/skelter/comms) "hJ" = ( -/obj/effect/turf_decal/trimline/blue/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/item/ammo_casing/c45, -/turf/open/floor/plasteel/showroomfloor, -/area/ruin/space/has_grav/skelter/comms) +/obj/structure/rack, +/obj/item/ammo_box/magazine/m10mm, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/skelter/sec) "hK" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ icon_state = "trimline_fill"; @@ -3843,19 +3842,10 @@ /turf/open/floor/plasteel/showroomfloor, /area/ruin/space/has_grav/skelter/comms) "iP" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/item/gun/ballistic/automatic/pistol/m1911/no_mag, -/turf/open/floor/plasteel/showroomfloor, -/area/ruin/space/has_grav/skelter/comms) +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/pistol, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/skelter/sec) "iQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/mineral/titanium, @@ -3934,17 +3924,15 @@ /turf/open/floor/plasteel/showroomfloor, /area/ruin/space/has_grav/skelter/comms) "iX" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ +/obj/effect/turf_decal/trimline/blue/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/item/ammo_casing/c45, +/obj/item/ammo_casing/c10mm, /turf/open/floor/plasteel/showroomfloor, /area/ruin/space/has_grav/skelter/comms) "iY" = ( @@ -4149,16 +4137,39 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/skelter/admin) "jv" = ( -/obj/structure/rack, -/obj/item/ammo_box/magazine/m45, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/skelter/sec) +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/item/gun/ballistic/automatic/pistol/no_mag, +/turf/open/floor/plasteel/showroomfloor, +/area/ruin/space/has_grav/skelter/comms) "jw" = ( /turf/open/space/basic, /area/space/nearstation) "jx" = ( /turf/open/space/basic, /area/template_noop) +"jy" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/item/ammo_casing/c10mm, +/turf/open/floor/plasteel/showroomfloor, +/area/ruin/space/has_grav/skelter/comms) (1,1,1) = {" ah @@ -4479,7 +4490,7 @@ eW cF fN gj -jv +hJ gl hw hU @@ -4539,7 +4550,7 @@ eX fx fN gj -gI +iP gl hx hx @@ -4657,7 +4668,7 @@ dI bI fc fA -fR +gI go gL iC @@ -4715,7 +4726,7 @@ bI bI bI eA -fd +fR fA fA fA @@ -4991,10 +5002,10 @@ ju gw dO hk -hJ +iX ij iF -iP +jv iW jh jl @@ -5025,7 +5036,7 @@ hK ii jm jn -iX +jy ii jl ah diff --git a/_maps/RandomZLevels/away_mission/SnowCabin.dmm b/_maps/RandomZLevels/away_mission/SnowCabin.dmm index 249cb68b5d..844a134d27 100644 --- a/_maps/RandomZLevels/away_mission/SnowCabin.dmm +++ b/_maps/RandomZLevels/away_mission/SnowCabin.dmm @@ -428,7 +428,7 @@ /area/awaymission/cabin) "bm" = ( /obj/machinery/door/airlock/wood{ - id_tag = "snowdinbutworse5"; + id_tag = "snowdorm5"; name = "Cabin 5" }, /obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto, @@ -3318,7 +3318,7 @@ /area/awaymission/cabin) "iV" = ( /obj/machinery/door/airlock/wood{ - id_tag = "snowdinbutworse1"; + id_tag = "snowdorm1"; name = "Cabin 1" }, /obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto, @@ -3326,7 +3326,7 @@ /area/awaymission/cabin) "iW" = ( /obj/machinery/door/airlock/wood{ - id_tag = "snowdinbutworse2"; + id_tag = "snowdorm2"; name = "Cabin 2" }, /obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto, @@ -3334,7 +3334,7 @@ /area/awaymission/cabin) "iX" = ( /obj/machinery/door/airlock/wood{ - id_tag = "snowdinbutworse3"; + id_tag = "snowdorm3"; name = "Cabin 3" }, /obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto, @@ -3342,7 +3342,7 @@ /area/awaymission/cabin) "iY" = ( /obj/machinery/door/airlock/wood{ - id_tag = "snowdinbutworse4"; + id_tag = "snowdorm4"; name = "Cabin 4" }, /obj/effect/mapping_helpers/network_builder/power_cable/yellow/auto, @@ -3419,31 +3419,37 @@ /area/awaymission/cabin) "jg" = ( /obj/machinery/button/door{ - id = "snowdinbutworse2"; - name = "airlock button"; - pixel_y = -27 + id = "snowdorm2"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 }, /turf/open/floor/wood, /area/awaymission/cabin) "jh" = ( /obj/machinery/button/door{ - id = "snowdinbutworse1"; - name = "airlock button"; - pixel_y = -27 + id = "snowdorm1"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 }, /turf/open/floor/wood, /area/awaymission/cabin) "ji" = ( /obj/machinery/button/door{ - id = "snowdinbutworse3"; - name = "airlock button"; - pixel_y = -27 + id = "snowdorm3"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 }, /turf/open/floor/wood, /area/awaymission/cabin) "jj" = ( /obj/machinery/button/door{ - id = "snowdinbutworse4"; + id = "snowdorm4"; name = "airlock button"; pixel_y = -27 }, @@ -3451,7 +3457,7 @@ /area/awaymission/cabin) "jk" = ( /obj/machinery/button/door{ - id = "snowdinbutworse5"; + id = "snowdorm5"; name = "airlock button"; pixel_y = -27 }, @@ -4024,8 +4030,8 @@ pixel_y = -2 }, /obj/item/clothing/head/christmashatg{ - pixel_y = 12; - pixel_x = 3 + pixel_x = 3; + pixel_y = 12 }, /turf/open/floor/plating/asteroid/snow, /area/awaymission/cabin/caves) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 17253e2665..943aa85efd 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -12556,15 +12556,11 @@ /area/engine/atmospherics_engine) "aAb" = ( /turf/closed/wall, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aAc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aAd" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral{ @@ -13138,9 +13134,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aBh" = ( /obj/item/kirbyplants/random, /obj/machinery/light/small{ @@ -13149,25 +13143,19 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aBi" = ( /obj/structure/table, /obj/item/clothing/suit/apron/overalls, /obj/item/cultivator, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aBj" = ( /obj/machinery/biogenerator, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aBk" = ( /obj/structure/table, /obj/item/reagent_containers/food/snacks/grown/wheat, @@ -13182,18 +13170,14 @@ pixel_y = 4 }, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aBl" = ( /obj/machinery/hydroponics/soil, /obj/item/seeds/tea, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aBm" = ( /obj/item/kirbyplants/random, /obj/machinery/status_display/evac{ @@ -13201,9 +13185,7 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aBn" = ( /obj/structure/table, /obj/item/stack/packageWrap, @@ -13213,9 +13195,7 @@ /obj/item/reagent_containers/food/snacks/grown/cherries, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aBo" = ( /obj/item/kirbyplants/random, /obj/machinery/light/small{ @@ -13225,18 +13205,14 @@ /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aBp" = ( /obj/machinery/hydroponics/soil, /obj/item/seeds/poppy, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aBq" = ( /obj/structure/cable/white{ icon_state = "2-4" @@ -13817,33 +13793,25 @@ /area/engine/atmospherics_engine) "aCv" = ( /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aCw" = ( /obj/effect/turf_decal/delivery, /obj/machinery/hydroponics/soil, /obj/item/seeds/watermelon, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aCx" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aCy" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aCz" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -14459,21 +14427,15 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aDy" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aDz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aDA" = ( /obj/structure/sink{ dir = 4; @@ -14484,9 +14446,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aDB" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -14968,34 +14928,26 @@ icon_state = "2-4" }, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aEC" = ( /obj/structure/cable/white{ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aED" = ( /obj/structure/cable/white{ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aEE" = ( /obj/structure/cable/white{ icon_state = "2-8" }, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aEG" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -15628,18 +15580,14 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aFK" = ( /obj/machinery/hydroponics/soil, /obj/item/seeds/harebell, /obj/machinery/light/small, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aFL" = ( /obj/structure/table, /obj/item/shovel/spade, @@ -15658,9 +15606,7 @@ }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aFM" = ( /obj/machinery/status_display/evac{ pixel_y = -32 @@ -15669,34 +15615,26 @@ /obj/machinery/hydroponics/soil, /obj/item/seeds/poppy/geranium, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aFN" = ( /obj/structure/table, /obj/item/plant_analyzer, /obj/item/hatchet, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aFO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aFP" = ( /obj/structure/cable/white{ icon_state = "1-2" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aFQ" = ( /obj/structure/table, /obj/item/crowbar, @@ -15704,9 +15642,7 @@ /obj/item/reagent_containers/glass/bucket, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aFR" = ( /obj/machinery/hydroponics/soil, /obj/item/seeds/tower, @@ -15715,9 +15651,7 @@ /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aFS" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -16707,9 +16641,7 @@ "aHl" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aHm" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; @@ -16721,9 +16653,7 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aHn" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; @@ -16737,16 +16667,12 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aHo" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "aHp" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -125347,9 +125273,7 @@ /obj/item/reagent_containers/glass/bucket, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "etO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -125474,9 +125398,7 @@ /obj/machinery/hydroponics/soil, /obj/item/seeds/grape, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "faI" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -126395,9 +126317,7 @@ pixel_x = 6 }, /turf/open/floor/plasteel, -/area/hydroponics/garden/abandoned{ - name = "Maintenance Garden" - }) +/area/hydroponics/garden/abandoned) "loH" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index f426ad8e97..51bfe5038e 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -75352,9 +75352,7 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 }, -/obj/machinery/airalarm{ - pixel_z = 24 - }, +/obj/machinery/airalarm, /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating{ diff --git a/_maps/map_files/LambdaStation/dorms.dmm b/_maps/map_files/LambdaStation/dorms.dmm index e5003965ed..a38d2b9e1d 100644 --- a/_maps/map_files/LambdaStation/dorms.dmm +++ b/_maps/map_files/LambdaStation/dorms.dmm @@ -25,6 +25,9 @@ /obj/structure/closet, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"ae" = ( +/turf/open/floor/wood, +/area/hydroponics/garden/monastery) "af" = ( /obj/effect/landmark/carpspawn, /turf/open/space/basic, @@ -216,9 +219,6 @@ }, /turf/open/floor/plasteel, /area/gateway) -"ay" = ( -/turf/closed/wall/r_wall, -/area/construction/mining/aux_base) "az" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, @@ -386,16 +386,6 @@ "aT" = ( /turf/closed/wall/r_wall, /area/chapel/main) -"aU" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "aV" = ( /obj/structure/cable{ icon_state = "4-8" @@ -577,6 +567,13 @@ }, /turf/open/floor/plating, /area/hydroponics/garden/abandoned) +"br" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) "bu" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -600,6 +597,10 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"bv" = ( +/obj/structure/railing, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "bw" = ( /obj/structure/cable{ icon_state = "2-8" @@ -775,6 +776,15 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"bN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/maintenance/central) "bO" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -804,6 +814,15 @@ /obj/machinery/light, /turf/open/floor/carpet, /area/chapel/main) +"bT" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics/garden/monastery) "bU" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -926,6 +945,21 @@ /obj/item/clothing/mask/horsehead, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"cp" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness/recreation) "cq" = ( /turf/open/space, /area/space) @@ -1006,6 +1040,7 @@ dir = 4 }, /obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass, /turf/open/floor/plasteel, /area/hallway/secondary/service) "cC" = ( @@ -1090,14 +1125,14 @@ icon_state = "L6"; layer = 2.04 }, -/mob/living/simple_animal/bot/medbot{ - auto_patrol = 1; - name = "Dr. Heals" - }, /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=dorms9"; location = "dorms8" }, +/mob/living/simple_animal/bot/medbot{ + auto_patrol = 1; + name = "Dr. Heals" + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "cN" = ( @@ -1116,6 +1151,14 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"cO" = ( +/turf/closed/mineral{ + baseturfs = /turf/open/floor/plating/asteroid; + initial_gas_mix = "o2=22;n2=82;TEMP=293.15"; + name = "asteroid"; + turf_type = /turf/open/floor/plating/asteroid + }, +/area/space) "cP" = ( /obj/item/kirbyplants/random, /turf/open/floor/plasteel, @@ -1197,6 +1240,14 @@ }, /turf/open/floor/wood, /area/crew_quarters/dorms) +"db" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness/pool) "dc" = ( /obj/effect/landmark/blobstart, /turf/open/floor/plating, @@ -1226,10 +1277,6 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"di" = ( -/obj/docking_port/stationary/public_mining_dock, -/turf/open/floor/plating, -/area/construction/mining/aux_base) "dk" = ( /obj/machinery/door/airlock/public/glass{ name = "Public Minning Access" @@ -1303,6 +1350,12 @@ }, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet) +"ds" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) "dt" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -1362,6 +1415,10 @@ }, /turf/open/floor/wood, /area/crew_quarters/dorms) +"dB" = ( +/obj/structure/railing, +/turf/open/floor/plating, +/area/maintenance/central) "dC" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -1426,13 +1483,6 @@ }, /turf/open/floor/wood, /area/maintenance/bar) -"dK" = ( -/obj/machinery/door/airlock/external{ - name = "Construction Zone" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/plating, -/area/construction/mining/aux_base) "dM" = ( /obj/machinery/vending/autodrobe, /turf/open/floor/wood, @@ -1522,6 +1572,10 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, /turf/open/floor/plasteel, /area/hallway/secondary/service) +"ea" = ( +/obj/machinery/light/floor, +/turf/open/floor/wood, +/area/hydroponics/garden/monastery) "eb" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1954,12 +2008,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/carpet, /area/chapel/office) -"fn" = ( -/obj/machinery/computer/camera_advanced/base_construction{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/construction/mining/aux_base) "fo" = ( /obj/effect/turf_decal/vg_decals/department/sec, /obj/effect/turf_decal/tile/neutral, @@ -2178,10 +2226,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/crew_quarters/locker) -"fR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer1, -/turf/open/floor/plasteel, -/area/construction/mining/aux_base) "fS" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, @@ -2378,6 +2422,14 @@ }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) +"go" = ( +/obj/machinery/camera/autoname, +/obj/structure/railing{ + icon_state = "railing"; + dir = 8 + }, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "gp" = ( /obj/effect/turf_decal/vg_decals/department/sci, /obj/effect/turf_decal/tile/neutral, @@ -2427,6 +2479,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer1{ dir = 4 }, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/plasteel, /area/hydroponics/garden/monastery) "gw" = ( @@ -2486,6 +2541,11 @@ "gI" = ( /turf/open/floor/plating, /area/maintenance/bar) +"gJ" = ( +/obj/structure/closet, +/obj/structure/railing/corner, +/turf/open/floor/plating, +/area/maintenance/central) "gK" = ( /obj/structure/table, /obj/machinery/camera{ @@ -2509,6 +2569,14 @@ }, /turf/open/floor/wood, /area/maintenance/bar) +"gO" = ( +/obj/machinery/space_heater, +/obj/structure/railing/corner{ + icon_state = "railing_corner"; + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/central) "gP" = ( /obj/machinery/light/small{ dir = 8; @@ -2560,14 +2628,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/crew_quarters/bar) -"gV" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/pipe_dispenser, -/turf/open/floor/plasteel, -/area/construction/mining/aux_base) "gX" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -2754,6 +2814,16 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"hv" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Aux Base Maintenance"; + req_access_txt = "48" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/central) "hw" = ( /obj/structure/chair/stool, /obj/structure/cable{ @@ -2937,13 +3007,6 @@ icon_state = "wood-broken6" }, /area/maintenance/bar) -"hW" = ( -/obj/machinery/computer/shuttle/mining{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/plasteel, -/area/construction/mining/aux_base) "hX" = ( /obj/structure/closet/firecloset, /obj/effect/turf_decal/bot, @@ -2976,13 +3039,6 @@ /obj/effect/spawner/lootdrop/glowstick, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"ic" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/construction/mining/aux_base) "id" = ( /obj/structure/chair/sofa/corp/corner{ dir = 4 @@ -2996,35 +3052,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/cafeteria) -"if" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 4 - }, -/obj/machinery/button/door{ - id = "aux_base_shutters"; - name = "Public Shutters Control"; - pixel_y = -24; - req_one_access_txt = "32;47;48" - }, -/obj/machinery/camera{ - c_tag = "Auxillary Base Construction"; - dir = 10 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/construction/mining/aux_base) -"ig" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/construction/mining/aux_base) "ih" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ @@ -3091,30 +3118,10 @@ }, /turf/open/floor/plasteel/grimy, /area/chapel/office) -"iq" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for the Auxillary Mining Base."; - dir = 1; - name = "Auxillary Base Monitor"; - network = list("auxbase"); - pixel_y = -28 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/construction/mining/aux_base) "ir" = ( /obj/item/coin/silver, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"is" = ( -/obj/machinery/light, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/construction/mining/aux_base) "it" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, /obj/structure/cable{ @@ -3218,17 +3225,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"iH" = ( -/obj/machinery/power/apc{ - areastring = "/area/construction/mining/aux_base"; - name = "Auxillary Base Construction APC"; - pixel_y = -24 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel, -/area/construction/mining/aux_base) "iI" = ( /obj/structure/table, /obj/item/stack/sheet/plasteel{ @@ -3733,6 +3729,13 @@ }, /turf/open/floor/carpet, /area/chapel/office) +"jO" = ( +/obj/machinery/light/small{ + dir = 8; + pixel_x = 5 + }, +/turf/open/floor/plating, +/area/maintenance/central) "jP" = ( /obj/item/storage/bag/plants/portaseeder, /obj/item/storage/bag/plants/portaseeder, @@ -3860,14 +3863,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) -"kc" = ( -/obj/machinery/door/poddoor/shutters{ - id = "aux_base_shutters"; - name = "Auxillary Base Shutters" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/construction/mining/aux_base) "kd" = ( /obj/structure/cable{ icon_state = "0-2" @@ -3982,21 +3977,6 @@ /obj/item/organ/heart, /turf/open/floor/carpet, /area/chapel/office) -"kp" = ( -/obj/machinery/door/airlock/engineering{ - name = "Auxillary Base Construction"; - req_one_access_txt = "32;47;48" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/construction/mining/aux_base) "kq" = ( /obj/effect/turf_decal/bot_white/left, /obj/effect/turf_decal/tile/neutral{ @@ -4099,24 +4079,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/maintenance/central) -"kC" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/button/door{ - id = "aux_base_shutters"; - name = "Public Shutters Control"; - pixel_y = 24; - req_one_access_txt = "32;47;48" - }, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "kD" = ( /obj/effect/turf_decal/tile/green{ dir = 8 @@ -4141,24 +4103,6 @@ /obj/machinery/vending/snack/random, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) -"kK" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "kL" = ( /obj/structure/table, /obj/item/extinguisher/mini, @@ -4444,27 +4388,6 @@ }, /turf/open/floor/plasteel, /area/hydroponics/garden/monastery) -"lu" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "lv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, @@ -4558,6 +4481,14 @@ icon_state = "wood-broken3" }, /area/maintenance/bar) +"lJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/central) "lK" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ dir = 4 @@ -4843,6 +4774,12 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"ms" = ( +/turf/open/floor/plating, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/maintenance/central) "mt" = ( /obj/structure/sign/poster/contraband/random{ pixel_x = -32 @@ -4858,6 +4795,13 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"mv" = ( +/obj/machinery/computer/shuttle/mining, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) "mw" = ( /obj/structure/lattice/catwalk, /obj/item/stack/cable_coil, @@ -4925,6 +4869,10 @@ /obj/item/toy/cards/deck, /turf/open/floor/wood, /area/maintenance/bar) +"mI" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/central) "mK" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -5349,10 +5297,6 @@ }, /turf/open/floor/carpet, /area/chapel/office) -"nH" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel, -/area/hydroponics/garden/monastery) "nI" = ( /obj/machinery/door/airlock/maintenance{ req_one_access_txt = "12;5;39;6" @@ -5648,6 +5592,13 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard) +"oy" = ( +/obj/structure/railing{ + icon_state = "railing"; + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/central) "oA" = ( /obj/structure/bodycontainer/morgue{ dir = 1 @@ -6183,6 +6134,13 @@ /obj/effect/turf_decal/tile/green, /turf/open/floor/plasteel, /area/hallway/primary/central) +"pS" = ( +/obj/effect/spawner/lootdrop/glowstick, +/turf/open/floor/plating, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/maintenance/central) "pT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -6579,6 +6537,9 @@ }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) +"qO" = ( +/turf/open/transparent/openspace, +/area/maintenance/central) "qP" = ( /obj/effect/spawner/lootdrop/glowstick, /turf/open/floor/plating, @@ -6786,6 +6747,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, /turf/open/floor/plasteel/white, /area/medical/medbay/zone2) +"rC" = ( +/obj/machinery/biogenerator, +/turf/open/floor/wood, +/area/hydroponics/garden/monastery) "rD" = ( /obj/structure/lattice, /turf/open/space/basic, @@ -6815,6 +6780,9 @@ dir = 4; layer = 3.2 }, +/obj/structure/curtain{ + icon_state = "closed" + }, /turf/open/floor/mineral/titanium/blue, /area/crew_quarters/dorms) "rH" = ( @@ -7088,6 +7056,13 @@ }, /turf/open/floor/plasteel, /area/hydroponics) +"sn" = ( +/obj/structure/railing/corner{ + icon_state = "railing_corner"; + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/central) "so" = ( /obj/structure/cable{ icon_state = "1-2" @@ -7103,6 +7078,16 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/cafeteria) +"sq" = ( +/turf/closed/wall, +/area/asteroid/nearstation) +"sr" = ( +/obj/structure/railing/corner{ + icon_state = "railing_corner"; + dir = 4 + }, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "ss" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 1 @@ -7556,6 +7541,14 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/bar) +"tw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/central) "tx" = ( /obj/effect/turf_decal/plaque{ icon_state = "L13"; @@ -7807,13 +7800,6 @@ /obj/structure/pool/Lboard, /turf/open/pool, /area/crew_quarters/fitness/pool) -"ui" = ( -/obj/machinery/light/floor, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hydroponics/garden/monastery) "uj" = ( /turf/open/floor/plasteel, /area/crew_quarters/locker) @@ -7974,6 +7960,10 @@ icon_state = "panelscorched" }, /area/maintenance/department/crew_quarters/dorms) +"uH" = ( +/obj/structure/railing/corner, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "uI" = ( /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, @@ -7985,6 +7975,9 @@ /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 }, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/plasteel, /area/hydroponics/garden/monastery) "uK" = ( @@ -8680,6 +8673,9 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/zone2) +"ww" = ( +/turf/closed/wall, +/area/construction/mining/aux_base) "wx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sink{ @@ -9100,6 +9096,10 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main) +"xN" = ( +/obj/machinery/seed_extractor, +/turf/open/floor/wood, +/area/hydroponics/garden/monastery) "xO" = ( /obj/machinery/door/airlock/external{ name = "Solar Maintenance"; @@ -9862,9 +9862,6 @@ }, /turf/open/floor/plating, /area/maintenance/central) -"zG" = ( -/turf/closed/wall/r_wall, -/area/asteroid/nearstation) "zH" = ( /obj/machinery/vending/wallmed{ pixel_x = -28 @@ -10126,6 +10123,14 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"An" = ( +/obj/machinery/light{ + dir = 4; + light_color = "#c1caff" + }, +/obj/structure/railing/corner, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "Ao" = ( /turf/closed/wall, /area/tcommsat/chamber) @@ -10172,6 +10177,13 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/hallway/secondary/service) +"Ax" = ( +/obj/machinery/light{ + dir = 1; + light_color = "#cee5d2" + }, +/turf/open/floor/wood, +/area/hydroponics/garden/monastery) "Ay" = ( /obj/machinery/vending/wardrobe/bar_wardrobe, /turf/open/floor/wood, @@ -10406,10 +10418,6 @@ "Be" = ( /turf/closed/wall, /area/storage/tools) -"Bf" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/hydroponics/garden/monastery) "Bg" = ( /obj/structure/cable{ icon_state = "1-2" @@ -10593,9 +10601,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) -"BB" = ( -/turf/closed/wall/r_wall, -/area/crew_quarters/dorms) "BC" = ( /obj/structure/chair{ dir = 4 @@ -10606,6 +10611,9 @@ /obj/structure/dresser, /turf/open/floor/wood, /area/crew_quarters/dorms) +"BE" = ( +/turf/open/transparent/openspace, +/area/construction/mining/aux_base) "BF" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel, @@ -10798,6 +10806,14 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"Ci" = ( +/obj/structure/closet/toolcloset, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 5 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) "Ck" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -11099,15 +11115,15 @@ /area/crew_quarters/kitchen) "Da" = ( /obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/lizard{ - name = "Wags-His-Tail"; - real_name = "Wags-His-Tail" - }, /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, +/mob/living/simple_animal/hostile/lizard{ + name = "Wags-His-Tail"; + real_name = "Wags-His-Tail" + }, /turf/open/floor/plating, /area/janitor) "Dc" = ( @@ -11256,6 +11272,10 @@ /obj/machinery/light, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/cafeteria) +"Dz" = ( +/obj/structure/railing/corner, +/turf/open/floor/plating, +/area/maintenance/central) "DB" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -12018,6 +12038,14 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main) +"Fi" = ( +/obj/machinery/light{ + dir = 4; + light_color = "#c1caff" + }, +/obj/structure/flora/grass/jungle, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "Fk" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -12100,6 +12128,13 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/service) +"Fw" = ( +/obj/structure/railing{ + icon_state = "railing"; + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/central) "Fx" = ( /obj/structure/girder, /obj/structure/grille, @@ -12236,6 +12271,10 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"FP" = ( +/obj/machinery/computer/camera_advanced/base_construction, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) "FQ" = ( /obj/item/storage/box/bodybags{ pixel_y = 5 @@ -13156,6 +13195,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/door/airlock/public/glass, /turf/open/floor/plasteel, /area/hallway/secondary/service) "Il" = ( @@ -13614,6 +13654,16 @@ }, /turf/open/floor/plasteel, /area/janitor) +"IY" = ( +/obj/structure/railing{ + icon_state = "railing"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) "IZ" = ( /obj/machinery/light{ dir = 4; @@ -13705,6 +13755,11 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/bar) +"Jn" = ( +/obj/structure/flora/tree/jungle/small, +/obj/structure/railing, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "Jo" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ dir = 4 @@ -13764,7 +13819,6 @@ /turf/open/floor/carpet, /area/chapel/main) "Jz" = ( -/obj/structure/curtain, /turf/open/floor/mineral/titanium/blue, /area/crew_quarters/dorms) "JA" = ( @@ -13947,6 +14001,13 @@ /obj/item/hand_labeler, /turf/open/floor/plasteel, /area/vacant_room/commissary) +"JT" = ( +/obj/docking_port/stationary/public_mining_dock{ + icon_state = "pinonfar"; + dir = 2 + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) "JU" = ( /obj/structure/chair/office/dark, /turf/open/floor/carpet/blue, @@ -14136,6 +14197,12 @@ }, /turf/open/floor/plating, /area/maintenance/central) +"Ky" = ( +/obj/machinery/door/airlock/external{ + name = "Construction Zone" + }, +/turf/open/floor/plating, +/area/construction/mining/aux_base) "KB" = ( /obj/machinery/door/airlock/maintenance{ name = "Janitor Maintenance"; @@ -14353,6 +14420,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/white, /area/crew_quarters/kitchen) +"KX" = ( +/obj/structure/railing/corner{ + icon_state = "railing_corner"; + dir = 1 + }, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "KZ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -14392,6 +14466,13 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/service) +"Le" = ( +/obj/structure/railing{ + icon_state = "railing"; + dir = 5 + }, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "Lf" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ dir = 8 @@ -14409,6 +14490,25 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"Lg" = ( +/obj/structure/railing{ + icon_state = "railing"; + dir = 8 + }, +/obj/machinery/power/apc{ + areastring = "/area/hallway/secondary/construction"; + dir = 1; + name = "Auxiliary Construction Zone APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) "Lh" = ( /obj/machinery/airalarm/directional/west, /obj/machinery/seed_extractor, @@ -14775,6 +14875,10 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/office) +"Mb" = ( +/obj/structure/flora/grass/jungle, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "Mc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{ dir = 4 @@ -15371,6 +15475,17 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"NG" = ( +/obj/structure/railing{ + icon_state = "railing"; + dir = 9 + }, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) +"NH" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/maintenance/solars/starboard/fore) "NI" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ dir = 4 @@ -15937,6 +16052,11 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, /turf/open/floor/plasteel/chapel, /area/chapel/main) +"Pl" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "Pm" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{ dir = 6 @@ -16238,6 +16358,9 @@ dir = 8; layer = 3.2 }, +/obj/structure/curtain{ + icon_state = "closed" + }, /turf/open/floor/mineral/titanium/blue, /area/crew_quarters/dorms) "PY" = ( @@ -16328,6 +16451,15 @@ }, /turf/open/floor/plasteel/dark, /area/gateway) +"Qj" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/central) "Ql" = ( /obj/machinery/light/small/built, /turf/open/floor/plating, @@ -16389,11 +16521,6 @@ /obj/machinery/camera/autoname, /turf/open/floor/plasteel/dark, /area/chapel/main) -"Qw" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plating, -/area/hallway/secondary/construction) "Qx" = ( /obj/structure/table, /obj/item/reagent_containers/food/condiment/peppermill{ @@ -16457,9 +16584,6 @@ }, /turf/open/floor/carpet, /area/crew_quarters/theatre) -"QE" = ( -/turf/closed/wall/r_wall, -/area/hydroponics/garden/monastery) "QH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/effect/turf_decal/tile/neutral, @@ -16596,6 +16720,13 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"QT" = ( +/obj/structure/railing{ + icon_state = "railing"; + dir = 8 + }, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "QU" = ( /turf/open/floor/wood, /area/crew_quarters/bar) @@ -16754,10 +16885,21 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/kitchen) +"Rv" = ( +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "Rw" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/gateway) +"Rx" = ( +/obj/structure/railing/corner{ + icon_state = "railing_corner"; + dir = 8 + }, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "Ry" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -16784,6 +16926,13 @@ }, /turf/open/floor/plasteel, /area/gateway) +"RA" = ( +/obj/structure/railing{ + icon_state = "railing"; + dir = 4 + }, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "RB" = ( /obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 @@ -17002,6 +17151,12 @@ /obj/machinery/camera/autoname, /turf/open/floor/plasteel, /area/hallway/secondary/service) +"Sa" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) "Sc" = ( /obj/machinery/cryopod{ dir = 8 @@ -17367,6 +17522,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/crew_quarters/bar) +"Tc" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/hydroponics/garden/monastery) "Td" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -17825,7 +17985,6 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/effect/turf_decal/vg_decals/numbers/two, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "Ui" = ( @@ -17900,6 +18059,14 @@ }, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet) +"Up" = ( +/obj/structure/table, +/obj/item/pipe_dispenser, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/mining/aux_base) "Ur" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/effect/turf_decal/tile/neutral, @@ -18195,6 +18362,17 @@ /obj/structure/kitchenspike, /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen) +"Vd" = ( +/obj/machinery/hydroponics/soil, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) +"Vf" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/central) "Vg" = ( /mob/living/simple_animal/hostile/retaliate/goat{ name = "Pete" @@ -18408,6 +18586,15 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/bar) +"VA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/maintenance/central) "VB" = ( /obj/structure/window/reinforced{ dir = 4 @@ -18458,8 +18645,8 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "VH" = ( -/mob/living/simple_animal/crab/Coffee, /obj/machinery/camera/autoname, +/mob/living/simple_animal/crab/Coffee, /turf/open/floor/plating/beach/sand, /area/crew_quarters/fitness/pool) "VI" = ( @@ -18521,6 +18708,7 @@ pixel_y = 32 }, /obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass, /turf/open/floor/plasteel, /area/hallway/secondary/service) "VR" = ( @@ -18608,10 +18796,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/dorms) -"Wa" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/construction/mining/aux_base) "Wb" = ( /obj/effect/landmark/start/mime, /turf/open/floor/carpet, @@ -19007,9 +19191,6 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard) -"Xc" = ( -/turf/open/floor/plating/airless, -/area/asteroid/nearstation) "Xd" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/wood, @@ -45997,7 +46178,7 @@ qo qo qo qo -qo +sq qo qo qo @@ -46797,7 +46978,7 @@ Xh qo qo qo -qo +sq qo qo qo @@ -47577,7 +47758,7 @@ qo qo qo qo -qo +sq UX UX UX @@ -47817,7 +47998,7 @@ Xh Xh Xh Xh -qo +sq qo qo qo @@ -48066,7 +48247,7 @@ qo qo qo qo -qo +sq qo qo qo @@ -48609,7 +48790,7 @@ qo qo qo qo -qo +sq Xh Xh Xh @@ -50186,7 +50367,7 @@ lO Fo Fo pW -qo +sq Xh Xh Xh @@ -51709,7 +51890,7 @@ qo FN FN qo -qo +sq UX UX UX @@ -53186,7 +53367,7 @@ fl fl fl fl -KN +fl Xx Xx Xx @@ -53256,7 +53437,7 @@ qo qo qo Xh -Xc +sq qo qo qo @@ -53443,7 +53624,7 @@ Gy BU gk aM -KN +fl Xx Xx Xx @@ -53513,7 +53694,7 @@ qo qo qo qo -gx +qo qo qo qo @@ -53700,7 +53881,7 @@ qS ZG Bs Bs -KN +fl Xx Xx Xx @@ -53957,7 +54138,7 @@ ln SA Bs Bs -KN +fl Xx Xx Xx @@ -54214,42 +54395,42 @@ PO PO PO Bs -KN +fl Xx Xx Xx +cn JV JV JV JV +cn JV JV JV JV +cn +JV +JV +JV +cn +JV +JV +cn +JV +JV +JV +cn JV JV JV JV +cn JV JV JV JV -JV -JV -JV -JV -JV -JV -JV -JV -JV -JV -JV -JV -JV -JV -JV -JV +cn Xx Xx Xx @@ -54471,11 +54652,11 @@ fl fl fl rl -KN -KN -KN -KN -QE +fl +fl +fl +fl +cn Iz Iz OR @@ -54504,7 +54685,7 @@ Iz Iz OR Iz -Iz +Rv Iz JV Xx @@ -54734,11 +54915,11 @@ Bs PW cn Iz +Mb Iz -Iz -Iz -Iz -Iz +Vd +ae +Vd Iz Iz Iz @@ -54748,6 +54929,7 @@ uM Iz Iz Iz +Mb Iz Iz Iz @@ -54755,11 +54937,10 @@ Iz Iz Iz Iz +uM Iz -Iz -Iz -Iz -Iz +Mb +Rv Iz Iz Iz @@ -54989,20 +55170,20 @@ pK pK pK Bs -cn +fN PE uM Iz +Vd +ae +Vd +Iz +Sd Iz Iz Iz Iz -Iz -Iz -Iz -Iz -Iz -Iz +Mb Iz Iz Iz @@ -55016,7 +55197,7 @@ Iz Iz Iz Iz -Iz +Mb Iz uM Yz @@ -55250,12 +55431,9 @@ cn Iz Iz Iz -Iz -Iz -Iz -Iz -Iz -Sd +Vd +ae +Vd Iz Iz Iz @@ -55271,6 +55449,9 @@ Iz Iz Iz Iz +Rv +Iz +Iz Iz Iz Sd @@ -55282,9 +55463,9 @@ Xx Xx Xx Xx -BB -BB -BB +Sz +Sz +Sz sC sC AE @@ -55504,25 +55685,26 @@ Bh pK Bs cn +rC +ae Iz +Vd +ae +Vd Iz -Iz -Iz -Iz -Iz +cn qn Iz Iz Iz Iz Iz -Iz -Iz Sd Iz Iz Iz Iz +Mb Iz Iz Iz @@ -55533,13 +55715,12 @@ Iz Iz Iz Iz -Iz -JV +cn Xx Xx Xx Xx -BB +Sz jf rG WM @@ -55761,16 +55942,16 @@ lG pK Bs cn +xN +ae Iz -Iz -Iz -Sd -Iz -Iz +Vd +ae +Vd Iz pq Iz -Iz +uM Iz Iz pq @@ -55796,7 +55977,7 @@ Xx Xx Xx Xx -BB +Sz KS Jz WM @@ -55806,7 +55987,7 @@ eJ qM FA FA -FA +db FA FA FA @@ -56018,14 +56199,11 @@ lZ pK Bs cn -PE -Iz -Iz -Iz -Iz -Iz -Iz -Iz +Ax +ae +Iz +Iz +ae Iz Iz Iz @@ -56033,6 +56211,9 @@ Iz Iz Iz Iz +ae +ae +ae Iz Iz uM @@ -56051,9 +56232,9 @@ Sd JV Xx Xx -BB -BB -BB +Sz +Sz +Sz ke Sz WM @@ -56275,40 +56456,40 @@ FC pK Bs cn -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -uM -Iz -Iz -Iz -Iz +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae Sd -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae aE JV Xx Xx -BB +Sz IQ zj zj @@ -56544,13 +56725,13 @@ Iz Iz Iz Iz +ae +ae +ae Iz Iz -Iz -Iz -Iz -Iz -Iz +ae +ae Iz Iz Iz @@ -56562,10 +56743,10 @@ Iz Iz Iz Iz -JV +cn Xx Xx -BB +Sz fP FM yg @@ -56798,6 +56979,7 @@ Iz Iz Iz Iz +Mb Iz Iz Iz @@ -56805,11 +56987,10 @@ Iz Iz Iz Iz -Iz -Iz -Iz +ae +ae Sd -Iz +Rv Iz Iz Iz @@ -56822,7 +57003,7 @@ Yz JV Xx Xx -BB +Sz SX zj lo @@ -57053,7 +57234,7 @@ Iz Iz Iz Iz -Iz +Mb Iz Iz Iz @@ -57063,8 +57244,8 @@ uM Iz Iz Iz -pq -Iz +ea +ae Iz Iz Iz @@ -57074,12 +57255,12 @@ Iz Iz Iz Iz -Iz -Iz +Mb +Rv JV Xx Xx -BB +Sz kh zj lo @@ -57318,13 +57499,13 @@ uM Iz Iz Iz +Mb Iz +ae +ae Iz -Iz -Iz -Iz -Iz -Iz +Mb +Rv Iz Iz Iz @@ -57336,7 +57517,7 @@ Iz JV Xx Xx -BB +Sz zj JZ DJ @@ -57562,12 +57743,23 @@ ZX cn Iz Iz -DN +Fi Iz Iz Iz Iz -DN +An +RA +sr +Iz +Iz +ga +Iz +Iz +Iz +Iz +ae +ae Iz Iz Iz @@ -57576,24 +57768,13 @@ ga Iz Iz Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -ga -Iz -Iz -Iz -Iz +Mb Iz Iz JV Xx Xx -BB +Sz BD lc Kt @@ -57816,41 +57997,41 @@ pK ra OA OA -Vh -Vh -Vh -Vh -Vh -Vh +OA +Tl +Tl +Tl +Tl +Tl OA OA OA dV -Iz -Iz -Iz -Bf +Le +RA +RA +cn Iz Iz Iz Iz +ae +ae Iz Iz Iz Iz -Iz -Iz -Bf -Iz -Iz -Iz -Iz -Iz -Iz -JV +cn +RA +RA +RA +RA +RA +RA +cn wq wq -BB +Sz Sz Sz nt @@ -58083,25 +58264,25 @@ vf PH mK wf -ui +mj mj mj uJ mj lt -ui +mj mj CY mj mj -ui +mj mj mj gv mj mj mj -ui +mj mj iy eB @@ -58349,9 +58530,9 @@ gT eE eE Ud -Yh -iV eE +iV +Yh eE eE gT @@ -58600,18 +58781,18 @@ zB zB zB hL -zB +bT zB zB zB zB kN -oe +zB hL +oe zB zB -zB -zB +bT zB zB zB @@ -58853,32 +59034,32 @@ PD Ej aA OA -qn +go +QT +QT +QT +cn Iz Iz Iz Iz Iz -Iz -Iz -Yd pq +Yd fK Iz Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -JV +cn +QT +QT +QT +QT +QT +QT +cn wq wq -BB +Sz Sz Sz te @@ -59114,6 +59295,8 @@ Iz Iz Iz Iz +OR +Iz Iz Iz Iz @@ -59123,9 +59306,7 @@ Yd fK Iz Iz -Iz -Iz -Iz +OR Iz Iz Iz @@ -59135,7 +59316,7 @@ Iz JV Xx Xx -BB +Sz BD JB Ab @@ -59374,14 +59555,14 @@ Iz pq Iz Iz +Sd +Rv Iz Yd Yd fK Iz Iz -Iz -Iz pq Iz Sd @@ -59392,7 +59573,7 @@ Iz JV Xx Xx -BB +Sz zj FM Lb @@ -59630,26 +59811,26 @@ Iz Iz Iz Iz -Sd +Iz +Iz +Iz Iz Yd OX jJ Iz -Iz -Iz Sd Iz Iz Iz Iz -Iz -Iz +Rv +Mb Iz JV Xx Xx -BB +Sz SX zj DP @@ -59885,10 +60066,12 @@ Iz Iz Iz Iz -Iz -Iz -Iz -Iz +Rv +uH +RA +RA +RA +sr Yd Yd Yd @@ -59900,13 +60083,11 @@ Iz Iz Iz Iz -Iz -Iz Yz JV Xx Xx -BB +Sz kh JZ oC @@ -60140,15 +60321,17 @@ vP Tl Iz Iz +Mb Iz Iz -Iz -Iz -Iz -Iz -Yd +bv +aZ +aZ +aZ +Le pq Yd +Yd Iz Iz Iz @@ -60158,12 +60341,10 @@ Iz Iz Iz Iz -Iz -Iz -JV +cn Xx Xx -BB +Sz fP zj zj @@ -60397,22 +60578,22 @@ vP Tl Iz Iz -Iz +Mb Iz pq -Iz -Iz -Bf -Yd +bv +aZ +aZ +aZ aZ Yd -Iz -Iz +Yd +Yd Iz Iz oF Iz -Iz +Mb Iz Iz uM @@ -60420,7 +60601,7 @@ Iz JV Xx Xx -BB +Sz IQ zj zj @@ -60657,14 +60838,14 @@ Iz Iz Iz Iz -Iz -Yz -Bf -nH +bv +aZ +aZ +aZ aZ Yd -Iz -Iz +Tc +Yd Iz Iz Sd @@ -60677,8 +60858,8 @@ aE JV Xx Xx -BB -BB +Sz +Sz ke Sz Sz @@ -60700,7 +60881,7 @@ Dk VI VI VI -VI +cp uC VI VI @@ -60896,7 +61077,7 @@ KG RN YL Rf -oQ +CA yo yo Rk @@ -60914,14 +61095,14 @@ Iz Iz Iz Iz -uM -Iz -Bf -Yd +Jn +aZ +aZ +aZ aZ Yd -Iz -Iz +Yd +Yd Iz Iz Iz @@ -60935,7 +61116,7 @@ JV Xx Xx Xx -BB +Sz KS Jz Sz @@ -61171,14 +61352,14 @@ Iz Iz Sd Iz -Iz -Iz -Iz -Yd +bv +aZ +aZ +aZ +NG pq Yd -Iz -Iz +Yd Iz Iz Iz @@ -61188,11 +61369,11 @@ Iz Iz Iz Iz -JV +cn Xx Xx Xx -BB +Sz yv PX Sz @@ -61428,33 +61609,33 @@ Iz Iz Iz Iz +Rx +QT +QT +QT +KX +Iz +Iz +Iz +Rv Iz Iz Iz Iz Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz -Iz +Mb Iz Yz JV Xx Xx Xx -BB -BB -BB -BB -zG -BB +Sz +Sz +Sz +Sz +sq +Sz Sz Sz kY @@ -61693,7 +61874,7 @@ Sd Iz Iz Iz -Iz +Rv Iz Iz Iz @@ -61709,9 +61890,9 @@ Xx qo qo qo -zG +sq uX -BB +Sz yL lE lE @@ -61966,7 +62147,7 @@ pW pW pW qo -zG +sq uX Vi fp @@ -62197,7 +62378,7 @@ OA Iz Iz Iz -Iz +Mb DN Pa Iz @@ -62223,7 +62404,7 @@ iT xe pW qo -zG +sq uX Vi It @@ -62453,34 +62634,34 @@ vP OA fN cn -QE -JV -JV -JV -JV +cn JV JV JV JV +cn JV JV JV JV +cn JV JV JV JV +cn JV JV JV JV +cn Xx pW ir po pW pW -dw +pW uX Vi YC @@ -62710,7 +62891,7 @@ Wj OA Pu Bs -KN +fl Xx Xx Xx @@ -62737,9 +62918,9 @@ pY Fo YP Fo -dw +pW uX -BB +Sz Sc Sc Sc @@ -62966,10 +63147,10 @@ mg bD Go TJ -Bs -KN -Xx -Xx +gJ +fl +fl +fl Xx Xx Xx @@ -62994,9 +63175,9 @@ pW pW pW Fo -dw -dw -BB +pW +pW +Sz Sz Sz Sz @@ -63185,7 +63366,7 @@ qo qo qo qo -qo +fl fl Bs OA @@ -63223,10 +63404,10 @@ hd vP OA Yt -ZX -KN -Xx -Xx +dB +qO +ms +fl Xx Xx Xx @@ -63442,10 +63623,10 @@ qo qo qo qo -qo fl Bs Bs +mI OA oR lk @@ -63479,11 +63660,11 @@ He hd vP OA -Yt +tw +sn +Fw Bs -KN -Xx -Xx +fl Xx Xx Xx @@ -63696,12 +63877,12 @@ qo FN qo qo -qo fl fl fl fl Bs +Bs tP OA PD @@ -63737,10 +63918,10 @@ uc vP OA Yt -nN -KN -Xx -Xx +Dz +oy +Bs +fl Xx Xx Xx @@ -63953,12 +64134,12 @@ qo FN FN qo -qo fl CH JX fl Bs +fl OA OA Qr @@ -63994,10 +64175,10 @@ hd Fa OA Yt -Bs -KN -Xx -Xx +dB +qO +fl +fl Xx Xx Xx @@ -64210,13 +64391,13 @@ qo FN FN qo -qo fl fv Li rl BW -OA +dB +Wq Wq gp jx @@ -64251,9 +64432,9 @@ jH vP OA Yt -Bs -KN -Xx +dB +qO +fl Xx Xx Xx @@ -64281,7 +64462,7 @@ qo qo qo qo -dw +pW Uk rV pW @@ -64467,13 +64648,13 @@ qo qo FN qo -qo fl kL DQ fl Bs -OA +dB +Wq Wq fo RR @@ -64508,10 +64689,10 @@ MO vP OA Yt -cx -KN -KN -KN +gO +fl +fl +fl qo qo qo @@ -64724,13 +64905,13 @@ FN qo FN qo -qo fl fl fl fl Bs -OA +dB +Wq Wq OG mA @@ -64981,12 +65162,12 @@ qo FN FN qo -qo fl um um fl Bs +fl OA OA Bu @@ -65027,7 +65208,7 @@ PI PI PI PI -PI +lJ PI Of oP @@ -65238,13 +65419,13 @@ FN FN FN qo -qo fl Bs kA rl BW Bs +Bs OA PD lk @@ -65495,12 +65676,12 @@ qo qo qo qo -qo fl fl fl fl PW +PW Bs OA PD @@ -65755,7 +65936,7 @@ qo qo qo qo -qo +fl fl ZX kA @@ -66012,7 +66193,7 @@ qo qo qo qo -qo +fl fl PW Bs @@ -66058,7 +66239,7 @@ Um Rz yr gf -Yt +bN fl qo qo @@ -66260,19 +66441,19 @@ FN qo qo qo -ay -ay -ay -ay -ay -ay -ay -ay -ay -ay -ay -ay -ay +FN +qo +qo +qo +qo +FN +qo +qo +qo +fl +Bs +Bs +fl OA oR lk @@ -66517,19 +66698,19 @@ FN qo qo qo -ay -bb -bb -bb -bb -bb -bb -bb -bb -bb -dt -fn -hW +FN +qo +qo +qo +qo +FN +qo +qo +qo +fl +Bs +Bs +fl OA cJ ij @@ -66773,21 +66954,21 @@ FN qo qo qo +FN qo -ay -bb -bb -bb -bb -bb -bb -bb -bb -bb -dt -fO -Wa -kc +qo +qo +qo +qo +FN +qo +qo +qo +fl +Bs +Bs +fl +OA PG MJ pg @@ -67031,21 +67212,21 @@ qo qo qo qo -ay -bb -bb -bb -bb -bb -bb -bb -bb -bb -dt -fO -ic -kc -aU +qo +FN +FN +qo +FN +qo +qo +qo +qo +fl +Bs +Bs +fl +OA +PD lk pg Gx @@ -67287,22 +67468,22 @@ FN qo qo qo +FN +FN qo -ay -bb -bb -bb -bb -bb -bb -bb -bb -bb -dt -LK -if +FN +FN +qo +qo +qo +qo +qo +fl +PW +Bs +fl OA -kC +PD lk pg rN @@ -67544,23 +67725,23 @@ FN qo qo qo +FN qo -ay -bb -bb -bb -bb -bF -bb -bb -bb -di -dK -fR -ig -kp -kK -lu +qo +qo +qo +FN +qo +qo +qo +qo +fl +Bs +Bs +fl +OA +PD +Fd pg ID OA @@ -67801,22 +67982,22 @@ FN FN qo qo +FN +FN qo -ay -bb -bb -bb -bb -bb -bb -bb -bb -bb -dt -fO -iq +qo +qo +FN +qo +qo +qo +qo +fl +fl +Bs +fl OA -mq +PD Fd pg ew @@ -68058,20 +68239,20 @@ FN qo qo qo +FN qo -ay -bb -bb -bb -bb -bb -bb -bb -bb -bb -dt -gi -is +qo +qo +qo +qo +qo +qo +qo +qo +fl +Bs +mI +fl OA ml Fd @@ -68105,7 +68286,7 @@ PD MW vP OA -qP +pS Bs Bs Bs @@ -68314,21 +68495,21 @@ qo qo FN qo +FN qo qo -ay -bb -bb -bb -bb -bb -bb -bb -bb -bb -dt -gj -iH +qo +FN +qo +qo +qo +qo +qo +qo +fl +Bs +PW +fl OA PD wh @@ -68573,19 +68754,19 @@ FN qo qo qo -ay -bb -bb -bb -bb -bb -bb -bb -bb -bb -dt -gV -iI +qo +qo +FN +FN +qo +FN +qo +qo +qo +fl +Bs +Bs +fl OA TW XN @@ -68604,7 +68785,7 @@ Je YX uw Tl -Av +Pl Ik OA OA @@ -68830,19 +69011,19 @@ qo qo qo qo -ay -ay -ay -ay -ay -ay -ay -ay -ay -ay -ay -ay -ay +qo +ct +ct +ct +ct +ct +ct +ct +ct +ct +Bs +Bs +fl OA PD Fd @@ -68881,7 +69062,7 @@ fl er JX rl -BW +VA fl qo qo @@ -69096,7 +69277,7 @@ fD mh Cu bA -fl +ct oE tT fq @@ -69610,7 +69791,7 @@ Ew du vl lA -fl +ct Yt fl qo @@ -69864,10 +70045,10 @@ hX HB HB wc -Qw +HB vl YT -fl +ct Yt fl qo @@ -70381,7 +70562,7 @@ CO FJ ur fg -fl +ct Yt fl qo @@ -70887,7 +71068,7 @@ YV IB PI Fr -oP +Vf fl jS fl @@ -71153,8 +71334,8 @@ fl fl fl fl -fl -fl +Bs +Bs Yt gw gw @@ -71394,7 +71575,7 @@ yM zh Dv GQ -Jg +NH Sx UV PI @@ -71409,9 +71590,9 @@ gH fl qo qo -qo -qo fl +fl +Bs jk PI oP @@ -71667,13 +71848,13 @@ fl qo qo qo -qo +fl fl Fz -fl +Bs Yt fl -qo +fl fl Yt fl @@ -71929,9 +72110,9 @@ fl fl fl Yt -fl -fl -fl +Bs +jO +Bs Yt fl fl @@ -72188,7 +72369,7 @@ fl fC PI PI -PI +Qj gH fl qo @@ -72445,7 +72626,7 @@ fl fl fl fl -fl +Yt fl fl qo @@ -72700,10 +72881,10 @@ qo qo qo qo -qo -qo -qo -qo +fl +Bs +Yt +fl qo qo qo @@ -72957,10 +73138,10 @@ qo qo qo qo -qo -qo -qo -qo +fl +Bs +Yt +fl qo qo qo @@ -73214,9 +73395,9 @@ FN qo qo qo -qo -qo -qo +fl +Bs +Yt qo qo qo @@ -73472,9 +73653,9 @@ FN qo FN qo -qo -FN -FN +Bs +Yt +fl qo qo qo @@ -73729,9 +73910,9 @@ FN FN qo FN -qo -FN -FN +Bs +Yt +fl FN qo qo @@ -73985,10 +74166,10 @@ qo FN qo qo -FN qo -FN -FN +Bs +Yt +fl FN qo qo @@ -74242,10 +74423,10 @@ FN FN qo FN -FN -FN -FN qo +Bs +Yt +fl qo qo qo @@ -74500,9 +74681,9 @@ qo qo qo qo -qo -FN -qo +Bs +Yt +fl qo qo qo @@ -74756,9 +74937,9 @@ qo FN qo FN -qo -qo -qo +fl +Bs +Yt qo FN qo @@ -75013,10 +75194,10 @@ qo qo qo qo -FN -qo -FN -qo +fl +Bs +Yt +fl FN qo FN @@ -75270,10 +75451,10 @@ qo FN qo qo -FN -qo -qo -qo +fl +Bs +Yt +fl qo qo qo @@ -75284,7 +75465,7 @@ qo FN qo qo -Xh +cO KN DZ KN @@ -75525,23 +75706,23 @@ FN qo FN qo -qo -qo -FN -FN -FN -qo -FN -qo -qo -qo -qo -FN -qo -FN -qo -qo -Xh +ww +ww +ww +ww +hv +ww +ww +ww +ww +ww +ww +ww +ww +ww +ww +ww +ww UX LU UX @@ -75782,23 +75963,23 @@ qo FN qo FN -FN -qo -qo -qo -FN -FN -FN -qo -qo -qo -qo -qo -qo -FN -qo -Xh -Xh +ww +BE +BE +BE +ds +Ci +dt +bb +bb +bb +bb +bb +bb +bb +bb +bb +ww Xh LU Xh @@ -76039,25 +76220,25 @@ qo qo FN FN -qo -qo -qo -FN -qo -qo -qo -qo -qo -FN -qo -qo -FN -qo -qo -Xh -Xh -Xh +ww +Lg +IY +IY +Sa +LK +dt +bb +bb +bb +bb +bb +bb +bb +bb +bb +ww Xh +LU Xh Xh qo @@ -76296,25 +76477,25 @@ FN qo qo qo -qo -qo -qo -qo -qo -qo -FN -qo -qo -qo -qo -FN -qo -qo -qo -Xh -Xh -Xh +ww +ww +ww +gj +fO +fO +dt +bb +bb +bb +bb +bb +bb +bb +bb +bb +ww Xh +LU Xh Xh qo @@ -76555,23 +76736,23 @@ FN qo FN qo -FN -qo -qo -qo -qo -qo -FN -qo -qo -qo -FN -qo -qo -Xh -Xh -Xh +ww +FP +fO +fO +dt +bb +bb +bb +bb +bb +bb +bb +bb +bb +ww Xh +LU Xh Xh qo @@ -76812,23 +76993,23 @@ qo qo qo FN -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -Xh -Xh -Xh +ww +mv +fO +fO +Ky +JT +bb +bb +bb +bF +bb +bb +bb +bb +ww Xh +LU Xh Xh qo @@ -77069,23 +77250,23 @@ qo qo qo FN -FN -qo -FN -qo -FN -qo -qo -qo -FN -FN -qo -qo -qo -Xh -Xh -Xh +ww +gi +fO +fO +dt +bb +bb +bb +bb +bb +bb +bb +bb +bb +ww Xh +LU Xh Xh qo @@ -77326,26 +77507,26 @@ qo qo FN qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -Xh -Xh -Xh -Xh -Xh -Xh -qo +ww +fO +fO +fO +dt +bb +bb +bb +bb +bb +bb +bb +bb +bb +ww +UX +LU +UX +UX +ww qo qo qo @@ -77583,23 +77764,23 @@ qo qo qo qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -Xh -Xh -Xh +ww +br +Up +iI +dt +bb +bb +bb +bb +bb +bb +bb +bb +bb +ww Xh +LU Xh Xh qo @@ -77840,21 +78021,21 @@ Xh qo qo qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -qo -Xh -Xh +ww +ww +ww +ww +ww +bb +bb +bb +bb +bb +bb +bb +bb +bb +ww Xh Xh Xh @@ -78101,17 +78282,17 @@ Xh Xh Xh Xh -Xh -Xh -Xh -Xh -Xh -Xh -Xh -Xh -Xh -Xh -Xh +ww +ww +ww +ww +ww +ww +ww +ww +ww +ww +ww Xh Xh Xh diff --git a/_maps/map_files/LambdaStation/lambda.dmm b/_maps/map_files/LambdaStation/lambda.dmm index fdcc0fa7c1..a0d54edb91 100644 --- a/_maps/map_files/LambdaStation/lambda.dmm +++ b/_maps/map_files/LambdaStation/lambda.dmm @@ -11825,8 +11825,8 @@ dir = 8 }, /obj/effect/turf_decal/tile/neutral, -/mob/living/simple_animal/hostile/retaliate/bat/secbat, /obj/effect/turf_decal/loading_area/red, +/mob/living/simple_animal/hostile/retaliate/bat/secbat, /turf/open/floor/plasteel/dark, /area/security/brig) "avX" = ( @@ -21222,9 +21222,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/miningoffice) -"aMg" = ( -/turf/closed/wall/r_wall, -/area/quartermaster/miningoffice) "aMh" = ( /turf/closed/wall/r_wall, /area/crew_quarters/heads/captain/private) @@ -23448,11 +23445,14 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "aQy" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Maintenance"; - req_access_txt = "48" +/obj/machinery/door/airlock/engineering{ + name = "Auxillary Base Construction"; + req_one_access_txt = "32;47;48" }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{ + dir = 4 + }, +/turf/open/floor/plasteel, /area/quartermaster/miningoffice) "aQz" = ( /turf/closed/wall, @@ -23735,12 +23735,6 @@ "aRj" = ( /turf/open/floor/plating, /area/maintenance/department/cargo) -"aRk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "aRl" = ( /obj/structure/cable{ icon_state = "4-8" @@ -23752,10 +23746,6 @@ }, /turf/open/floor/plating, /area/maintenance/fore) -"aRm" = ( -/obj/structure/sign/warning/vacuum/external, -/turf/closed/wall/r_wall, -/area/maintenance/department/cargo) "aRn" = ( /obj/structure/cable{ icon_state = "4-8" @@ -24108,12 +24098,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"aSm" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "aSn" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -24128,15 +24112,6 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, /area/maintenance/fore) -"aSo" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/external{ - req_access_txt = "13" - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "aSp" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -27268,6 +27243,9 @@ name = "Bridge"; req_access_txt = "19" }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/command) "baa" = ( @@ -37337,6 +37315,9 @@ req_access_txt = "19" }, /obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, /turf/open/floor/plasteel, /area/hallway/secondary/command) "bAH" = ( @@ -37882,6 +37863,9 @@ dir = 4 }, /obj/effect/turf_decal/tile/neutral, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/command) "bCA" = ( @@ -37896,6 +37880,9 @@ name = "Command Hallway"; req_access_txt = "19" }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, /turf/open/floor/plasteel, /area/hallway/secondary/command) "bCB" = ( @@ -46902,10 +46889,6 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"cat" = ( -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "cau" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -49432,15 +49415,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"chE" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 3; - name = "3maintenance loot spawner" - }, -/obj/item/storage/toolbox/emergency, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "chG" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -55016,8 +54990,9 @@ "cxw" = ( /obj/machinery/power/apc{ areastring = "/area/construction"; + dir = 1; name = "Construction Area APC"; - pixel_y = -24 + pixel_y = 24 }, /obj/structure/cable{ icon_state = "0-4" @@ -59865,6 +59840,9 @@ /area/medical/abandoned) "cMq" = ( /obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/central/secondary) "cMr" = ( @@ -63507,13 +63485,6 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) -"dRD" = ( -/obj/machinery/status_display/ai{ - pixel_y = 32 - }, -/obj/machinery/vending/cigarette, -/turf/open/floor/plasteel/grimy, -/area/hallway/primary/aft) "dRM" = ( /obj/structure/cable{ icon_state = "1-4" @@ -64284,6 +64255,9 @@ }, /turf/open/floor/plasteel, /area/engine/break_room) +"eYV" = ( +/turf/open/floor/plasteel, +/area/maintenance/department/cargo) "eZq" = ( /obj/machinery/gravity_generator/main/station, /obj/effect/turf_decal/bot_white, @@ -64413,10 +64387,6 @@ /obj/structure/chair, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"fqq" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/grimy, -/area/hallway/primary/aft) "fqL" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -64948,6 +64918,10 @@ }, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) +"gbW" = ( +/obj/structure/stairs/south, +/turf/open/floor/plasteel, +/area/maintenance/department/cargo) "gcM" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -65849,11 +65823,9 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "hDs" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/turf/open/floor/plasteel/grimy, -/area/hallway/primary/aft) +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/department/medical) "hEj" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -65961,12 +65933,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"hTm" = ( -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/hallway/primary/aft) "hVb" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 1 @@ -66553,6 +66519,10 @@ }, /turf/open/space/basic, /area/space/nearstation) +"jjQ" = ( +/obj/effect/spawner/lootdrop/crate_spawner, +/turf/open/floor/plating, +/area/maintenance/department/medical) "jld" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -67036,12 +67006,16 @@ /turf/open/floor/plating/airless, /area/engine/atmos) "kgv" = ( -/obj/structure/table, -/obj/item/flashlight/lamp/green{ - pixel_y = 3 +/obj/structure/railing{ + icon_state = "railing"; + dir = 4 }, -/turf/open/floor/plasteel/grimy, -/area/hallway/primary/aft) +/obj/structure/railing{ + icon_state = "railing"; + dir = 8 + }, +/turf/open/floor/plasteel/stairs/old, +/area/maintenance/department/medical) "khi" = ( /obj/machinery/light{ dir = 4; @@ -67431,10 +67405,6 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"leD" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/carpet, -/area/hallway/primary/aft) "lfg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -68436,15 +68406,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/closed/wall, /area/maintenance/disposal/incinerator) -"nab" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/airlock/external{ - req_access_txt = "13" - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "nek" = ( /obj/docking_port/stationary{ dir = 8; @@ -69505,6 +69466,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, /turf/open/floor/plating, /area/maintenance/aft) +"peD" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/maintenance/department/cargo) "pgc" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ @@ -69944,13 +69911,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel/white, /area/medical/medbay/lobby) -"pXR" = ( -/obj/machinery/status_display/evac{ - pixel_y = 32 - }, -/obj/machinery/vending/coffee, -/turf/open/floor/plasteel/grimy, -/area/hallway/primary/aft) "pXT" = ( /obj/machinery/light{ dir = 4 @@ -70170,8 +70130,11 @@ }, /area/maintenance/department/electrical) "qIN" = ( -/turf/open/floor/carpet, -/area/hallway/primary/aft) +/turf/open/floor/plating, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/maintenance/department/medical) "qLB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, /turf/closed/wall/r_wall, @@ -70312,6 +70275,17 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"rcP" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/department/medical) "rcU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{ dir = 4 @@ -70668,6 +70642,13 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat/foyer) +"rMw" = ( +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/central/secondary) "rNH" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -70949,10 +70930,12 @@ /turf/closed/wall, /area/maintenance/starboard/aft) "sHs" = ( -/obj/machinery/vending/snack/random, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/grimy, -/area/hallway/primary/aft) +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/department/medical) "sJs" = ( /obj/structure/cable{ icon_state = "1-2" @@ -71043,14 +71026,6 @@ }, /turf/open/space, /area/solar/starboard/aft) -"sYf" = ( -/obj/item/kirbyplants/random, -/obj/machinery/light{ - dir = 4; - light_color = "#e8eaff" - }, -/turf/open/floor/plasteel/grimy, -/area/hallway/primary/aft) "sYO" = ( /obj/structure/window/reinforced/spawner/north, /obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{ @@ -71125,12 +71100,17 @@ /turf/open/floor/carpet, /area/hallway/secondary/entry) "tcW" = ( -/obj/item/kirbyplants/random, -/obj/machinery/light{ +/obj/structure/stairs/west, +/obj/structure/railing{ + icon_state = "railing"; + dir = 4 + }, +/obj/structure/railing{ + icon_state = "railing"; dir = 8 }, -/turf/open/floor/plasteel/grimy, -/area/hallway/primary/aft) +/turf/open/floor/plating, +/area/maintenance/department/medical) "tdt" = ( /obj/machinery/power/port_gen/pacman, /turf/open/floor/plating, @@ -71621,11 +71601,6 @@ }, /turf/open/floor/plasteel, /area/security/prison) -"uaS" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/snacks/chips, -/turf/open/floor/plasteel/grimy, -/area/hallway/primary/aft) "ubl" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -71756,10 +71731,6 @@ /obj/item/flashlight/lamp, /turf/open/floor/carpet/orange, /area/crew_quarters/heads/chief/private) -"uqr" = ( -/obj/machinery/holopad, -/turf/open/floor/carpet, -/area/hallway/primary/aft) "urx" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/rock/jungle, @@ -71781,9 +71752,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"usZ" = ( -/turf/open/floor/plasteel/grimy, -/area/hallway/primary/aft) "utp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ @@ -71826,6 +71794,13 @@ }, /turf/open/floor/plasteel, /area/engine/break_room) +"uyX" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Aux Base Maintenance"; + req_access_txt = "48" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) "uBL" = ( /obj/structure/cable{ icon_state = "4-8" @@ -73132,6 +73107,9 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/fore) +"xbr" = ( +/turf/closed/wall/r_wall, +/area/space/nearstation) "xfQ" = ( /obj/machinery/atmospherics/pipe/manifold/green/visible{ dir = 4 @@ -73527,10 +73505,6 @@ "ycq" = ( /turf/open/floor/engine/plasma, /area/engine/atmos) -"yeB" = ( -/obj/structure/table, -/turf/open/floor/plasteel/grimy, -/area/hallway/primary/aft) "yfq" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -105141,7 +105115,7 @@ bpg cDz aSt biL -cMq +rMw biL biL biL @@ -115949,7 +115923,7 @@ cVr cVr cVr cVr -cVt +rcP bDx bDx bDx @@ -116464,12 +116438,12 @@ ctY cxq cza cBF -boU -boU -boU -boU -boU -boU +bDx +bDx +aaA +bDx +aaA +aaA boU bZM ccx @@ -116721,13 +116695,13 @@ cuc cxC cVr cBI -boU +bpw +kgv kgv -hTm tcW -hTm -yeB -bIL +bDx +aaA +boU bZT ccB cgC @@ -116978,13 +116952,13 @@ cud cxD cVr cVt +bqa +bpw +bpw +bRI +bDx +aaA boU -pXR -qIN -qIN -qIN -usZ -bIL luG cdM hST @@ -117235,13 +117209,13 @@ cue cxE cVr cVt -boU +bpw sHs qIN -uqr -leD -usZ -fqq +aaA +aaA +aaA +boU cgY cWO cAj @@ -117492,13 +117466,13 @@ cVr cVr cVr cVt +bpw +bpw +bpw +jjQ +aaA +aaA boU -dRD -qIN -qIN -qIN -usZ -fqq cgY cWO sNh @@ -117749,13 +117723,13 @@ cuS cxS cVr cBK +bhg +biZ +hDs +bDx +aaA +aaA boU -yeB -hDs -sYf -hDs -uaS -bIL mdh cWO cgK @@ -118006,12 +117980,12 @@ cud cxT cVr cVt -boU -boU -boU -boU -boU -boU +bpw +bDx +bDx +aaA +aaA +aaA boU bZX cWO @@ -118263,7 +118237,7 @@ cuc cxC cVr cVt -aaA +bpw aaA aaA aaA @@ -118520,7 +118494,7 @@ ctY cxU cza cBF -aaA +bpw aaA aaA aaA @@ -118779,7 +118753,7 @@ cVr cVt bDx aaA -aco +aaA aaA aaA boU @@ -128253,7 +128227,7 @@ aOD aPv aPF aMe -cat +aRj aRj aRj aRj @@ -128510,7 +128484,7 @@ aNX aNa aPG aMe -cQS +aRj aRj aQz aQz @@ -128767,23 +128741,23 @@ aOa aNa aPH aMe -aRj aQz +uyX aQz aaA -aaR -aaR -aaR -aaR -aaA -aaA -aaA -aaA -aaA -aco aaA aaA aaA +aac +aaa +aaa +aaa +aaa +aac +aaa +aaa +aaa +aaa aab bjw bkJ @@ -129024,25 +128998,25 @@ aNZ aNa cLS aMe -aRj -lQP +eYV +eYV +aQz +aQz +aQz aQz -aaR -aaR -aaR -aaR -aaR aaA -aaA -aco -aaA -aaA -aaA -aaA -cce -aaA -aaa -aaa +xbr +aac +aac +aac +aac +xbr +aac +aac +aac +aac +xbr +aac aac aaa aab @@ -129281,24 +129255,24 @@ aNZ aOO aQp aQy -aRk -aRj +eYV +eYV +peD +eYV +gbW aQz -aaR -aaR -aaR aaA -aaR -aaA -aaA -aaA -aaA -aab -aab -aab aac +aaa +aaa +aaa +aab +aab +aab +aab aab aaa +aac aaa aac aaa @@ -129538,24 +129512,24 @@ aPy aNa aQq aMe -bIH -aRj aQz -aaR +aQz +aQz +aQz +aQz +aQz aaA -aaA -aaA -aaA -aaA -aaA -aab -aab -aaa -aaa -aaa aac -aaa -aaa +aab +aab +aab +aab +aab +aab +aab +aab +aab +aac aaa aac aaa @@ -129795,25 +129769,25 @@ aOb aNa aQq aMe -bIH -aRj -aQz -aaR -aaA -aco aaA aaA aaA aaA -aaa -aaa -aaa -aaa -aaa +aaA +aaA +aaA aac aaa aaa aaa +aab +aab +aab +aab +aab +aaa +aac +aaa aac aaa aab @@ -130046,31 +130020,31 @@ aMd aMd aMd aMd -aMg +aMe aLo aOE aPw aQr aMe -aRj -cQS -aQz -aaR aaA aaA aaA aaA +aaA +aaA +aaA +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac aab -aab -aaa -aaa -aaa -aab -aaa -aac -aac -aac -aac aac aac aav @@ -130303,31 +130277,31 @@ aav aab aab aab -aMg -aMg -aMg -aMg -aMg -aMg -aRj -aRj -aQA -aaR +aMe +aMe +aMe +aMe +aMe +aMe aaA aaA aaA aaA +aaA +aaA +aaA +xbr aaa aaa aaa -aab -aab -aab -aab -aab -aab -aab -aab +aaa +aaa +aaa +aaa +aaa +aaa +xbr +aac aac aab aab @@ -130565,15 +130539,15 @@ aaA aaA aaA aaA -aQA -chE -aSm -aQA +aaA +aaA +aaA +aaA aaA aaA aab aab -aab +aac aaa aaa aaa @@ -130582,8 +130556,8 @@ aab aab aab aab -aab -aab +aaa +aac aaa aac aaa @@ -130822,25 +130796,25 @@ aab aaA aaA aaA -aQA -aRm -aSo -aQA +aaA +aaA +aaA +aaA aaA aab aaa aaa +aac aaa aaa aaa +aab +aab +aab +aab +aab aaa -aab -aab -aab -aab -aab -aab -aab +aac aaa aac aaa @@ -131080,24 +131054,24 @@ aab aab aaA aaA -aQA -aRj -aQA +aaA +aaA +aaA aaA aaa aaa aaa +aac aaa aaa aaa aaa -aab -aab -aab -aab -aab -aab -aab +aaa +aaa +aaa +aaa +aaa +aac aaa aac aaa @@ -131335,12 +131309,16 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aaa +aaa aab -aab -aQA -aRj -aQA -aab +aaa +aaa +aaa +aac aaa aaa aaa @@ -131348,13 +131326,9 @@ aaa aaa aaa aaa -aab -aab -aab -aab -aab -aab -aab +aaa +aaa +aac aaa aac aac @@ -131593,10 +131567,6 @@ aaa aaa aaa aaa -aab -aQA -nab -aQA aaa aaa aaa @@ -131605,14 +131575,18 @@ aaa aaa aaa aaa -aab -aab -aab -aab -aab -aaa -aaa -aaa +xbr +aac +aac +aac +aac +xbr +aac +aac +aac +aac +xbr +aac aac aaa aaa @@ -131847,13 +131821,13 @@ aaa aaa aaa aab -aab -aab -aab aaa -aav -acv -aac +aaa +aaa +aaa +aab +aab +aab aaa aaa aaa @@ -132109,7 +132083,7 @@ aab aab aab aaa -aSp +aaa aaa aab aab diff --git a/_maps/map_files/PubbyStation/job_changes.dm b/_maps/map_files/PubbyStation/job_changes.dm deleted file mode 100644 index 726601725b..0000000000 --- a/_maps/map_files/PubbyStation/job_changes.dm +++ /dev/null @@ -1,20 +0,0 @@ -#define JOB_MODIFICATION_MAP_NAME "PubbyStation" - -/datum/job/hos/New() - ..() - MAP_JOB_CHECK - access += ACCESS_CREMATORIUM - minimal_access += ACCESS_CREMATORIUM - -/datum/job/warden/New() - ..() - MAP_JOB_CHECK - access += ACCESS_CREMATORIUM - minimal_access += ACCESS_CREMATORIUM - -/datum/job/officer/New() - ..() - MAP_JOB_CHECK - access += ACCESS_CREMATORIUM - minimal_access += ACCESS_CREMATORIUM - diff --git a/_maps/pubbystation.json b/_maps/pubbystation.json index f99cca57c5..acf49b773b 100644 --- a/_maps/pubbystation.json +++ b/_maps/pubbystation.json @@ -7,5 +7,10 @@ "whiteship": "whiteship_pubby", "ferry": "ferry_fancy", "cargo": "cargo_box" - } + }, + "job_access_add": { + "/datum/job/hos": [27], + "/datum/job/officer": [27], + "/datum/job/detective": [27] + } } diff --git a/_maps/shuttles/emergency_nature.dmm b/_maps/shuttles/emergency_nature.dmm new file mode 100644 index 0000000000..9639e37852 --- /dev/null +++ b/_maps/shuttles/emergency_nature.dmm @@ -0,0 +1,2040 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"as" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/shuttle/escape) +"au" = ( +/obj/structure/sink/puddle, +/turf/open/floor/grass, +/area/shuttle/escape) +"ay" = ( +/obj/structure/flora/ausbushes/leafybush, +/turf/open/floor/grass, +/area/shuttle/escape) +"aA" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 6 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"aJ" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/grass, +/area/shuttle/escape) +"bd" = ( +/obj/structure/flora/rock/pile/largejungle, +/turf/open/floor/grass, +/area/shuttle/escape) +"bg" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 8; + pixel_x = -2 + }, +/obj/item/storage/toolbox/electrical, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/shuttle/escape) +"bS" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/lights/mixed{ + pixel_y = 9; + pixel_x = -5 + }, +/obj/item/storage/box/matches{ + pixel_y = 5 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"cm" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plating, +/area/shuttle/escape) +"cL" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 3 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"cR" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 5 + }, +/obj/structure/sign/warning/nosmoking{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"cZ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/computer/emergency_shuttle, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"dj" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 3 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -31 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"dP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"dT" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/shuttle/escape) +"eq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/shuttle/escape) +"ev" = ( +/obj/effect/turf_decal/trimline/green/filled/corner, +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"ex" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/structure/flora/ausbushes/leafybush, +/turf/open/floor/grass, +/area/shuttle/escape) +"eB" = ( +/obj/item/rack_parts, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"eS" = ( +/obj/effect/turf_decal/trimline/red/filled/end{ + dir = 1 + }, +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"eY" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/emergency{ + pixel_y = 3 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"fD" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/computer/security, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"fG" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/genericbush, +/turf/open/floor/grass, +/area/shuttle/escape) +"fJ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/machinery/computer/communications, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"fT" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/machinery/door/window/westleft{ + name = "Infirmary" + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/shuttle/escape) +"gg" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/structure/chair/comfy/shuttle, +/obj/item/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_y = 27 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"gj" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/turf/open/floor/plating, +/area/shuttle/escape) +"gl" = ( +/obj/structure/flora/junglebush/large, +/turf/open/floor/grass, +/area/shuttle/escape) +"gu" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"gx" = ( +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"gI" = ( +/obj/item/shovel, +/turf/open/floor/grass, +/area/shuttle/escape) +"gM" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/structure/table/reinforced, +/obj/item/storage/fancy/donut_box, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"gR" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/machinery/hydroponics/soil, +/turf/open/floor/grass, +/area/shuttle/escape) +"ht" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/obj/structure/chair/comfy/shuttle, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = 28 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"hC" = ( +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"hJ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/item/storage/box/monkeycubes{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/storage/box/monkeycubes{ + pixel_x = -6; + pixel_y = 2 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"ib" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/grass, +/area/shuttle/escape) +"it" = ( +/mob/living/carbon/monkey, +/obj/structure/flora/grass/jungle/b{ + icon_state = "bushb3" + }, +/turf/open/floor/grass, +/area/shuttle/escape) +"iD" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/structure/table/reinforced, +/obj/item/restraints/handcuffs{ + pixel_y = 3 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"iF" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/flora/ausbushes/brflowers, +/turf/open/floor/grass, +/area/shuttle/escape) +"iO" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/shuttle/escape) +"iV" = ( +/obj/effect/decal/cleanable/robot_debris, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"jO" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/stockparts{ + pixel_y = 7 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/shuttle/escape) +"jX" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"jZ" = ( +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"ke" = ( +/obj/item/shovel/spade, +/turf/open/floor/grass, +/area/shuttle/escape) +"ku" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 4 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"lo" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/flora/ausbushes/leafybush, +/turf/open/floor/grass, +/area/shuttle/escape) +"lH" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"lN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/grille/broken, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/shuttle/escape) +"lS" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"lT" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/item/cigbutt{ + pixel_x = 8 + }, +/obj/machinery/recharger, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"lV" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 5 + }, +/obj/structure/table/glass, +/obj/item/reagent_containers/food/snacks/soup/monkeysdelight{ + pixel_y = 4 + }, +/obj/item/reagent_containers/food/drinks/soda_cans/monkey_energy{ + pixel_y = 5; + pixel_x = 6 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"me" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 9 + }, +/obj/structure/sign/warning/nosmoking{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"mq" = ( +/mob/living/carbon/monkey, +/obj/machinery/light/floor, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/shuttle/escape) +"mw" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/item/reagent_containers/food/snacks/grown/banana, +/turf/open/floor/grass, +/area/shuttle/escape) +"nA" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"nD" = ( +/obj/structure/flora/ausbushes/fernybush, +/turf/open/floor/grass, +/area/shuttle/escape) +"nQ" = ( +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"og" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"os" = ( +/obj/effect/turf_decal/trimline/green/filled/end{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/window/westleft{ + name = "Nature pen" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"oE" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/structure/table/reinforced, +/obj/item/storage/firstaid/regular, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"qD" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/shuttle/escape) +"rg" = ( +/obj/item/clothing/glasses/welding{ + pixel_y = 8; + pixel_x = 3 + }, +/obj/item/weldingtool/largetank{ + pixel_x = -3 + }, +/obj/structure/rack, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"rI" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"sm" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/shuttle/escape) +"su" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/obj/structure/table/optable, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/shuttle/escape) +"sF" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/item/storage/backpack/duffelbag/med/surgery{ + pixel_y = 5 + }, +/obj/structure/rack, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/shuttle/escape) +"sN" = ( +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"sV" = ( +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/green/filled/corner, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"tL" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"uc" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/grass, +/area/shuttle/escape) +"ui" = ( +/obj/structure/extinguisher_cabinet, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/escape) +"ur" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"uI" = ( +/obj/structure/flora/rock/jungle{ + icon_state = "rock3" + }, +/turf/open/floor/grass, +/area/shuttle/escape) +"vt" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 10 + }, +/obj/structure/table/reinforced, +/obj/item/restraints/handcuffs{ + pixel_y = 7 + }, +/obj/item/storage/fancy/donut_box, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"vx" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"vP" = ( +/obj/effect/turf_decal/trimline/red/filled/line, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"vW" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, +/obj/structure/table/reinforced, +/obj/item/storage/box/handcuffs{ + pixel_y = 5 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"wg" = ( +/obj/effect/turf_decal/trimline/green/filled/end{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/window/northleft, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"wX" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/light, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"xA" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/flora/ausbushes/fernybush, +/turf/open/floor/grass, +/area/shuttle/escape) +"xZ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/structure/tank_dispenser/oxygen{ + layer = 2.7; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"yt" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"yI" = ( +/obj/item/reagent_containers/food/snacks/grown/banana, +/turf/open/floor/grass, +/area/shuttle/escape) +"yR" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"yZ" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 6 + }, +/obj/structure/sign/poster/official/pda_ad{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"zf" = ( +/obj/structure/flora/ausbushes/pointybush, +/turf/open/floor/grass, +/area/shuttle/escape) +"zr" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 10 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"zs" = ( +/obj/machinery/light/floor, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/shuttle/escape) +"zD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"zE" = ( +/obj/machinery/door/airlock/security{ + name = "Brig"; + req_access_txt = "63; 42" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"Ai" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/shuttle/escape) +"Aw" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/machinery/status_display/evac{ + dir = 8; + pixel_x = 32 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"AM" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/open/floor/grass, +/area/shuttle/escape) +"Bm" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Cockpit"; + req_access_txt = "19" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"Bo" = ( +/obj/structure/flora/ausbushes/sunnybush, +/turf/open/floor/grass, +/area/shuttle/escape) +"Bt" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/grass, +/area/shuttle/escape) +"Bv" = ( +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"BA" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/structure/table/glass, +/obj/item/defibrillator/loaded{ + pixel_y = 5 + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/shuttle/escape) +"BG" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 10 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"BM" = ( +/obj/structure/flora/ausbushes/ppflowers, +/turf/open/floor/grass, +/area/shuttle/escape) +"Cb" = ( +/obj/structure/flora/rock/jungle{ + icon_state = "bushc2" + }, +/turf/open/floor/grass, +/area/shuttle/escape) +"Co" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"CA" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 9 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"CE" = ( +/obj/structure/flora/tree/jungle/small, +/turf/open/floor/grass, +/area/shuttle/escape) +"CQ" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/vending/cola/space_up, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"Db" = ( +/obj/structure/sign/poster/official/help_others, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/escape) +"DD" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/mob/living/simple_animal/bot/medbot{ + name = "\improper emergency medibot"; + pixel_x = -3; + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/shuttle/escape) +"DQ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"EI" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/vending/snack/green, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"Fo" = ( +/obj/item/cultivator, +/mob/living/simple_animal/hostile/lizard, +/turf/open/floor/grass, +/area/shuttle/escape) +"Fp" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/grass, +/area/shuttle/escape) +"Gf" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/shuttle/escape) +"GO" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/structure/table/glass, +/obj/item/storage/box/monkeycubes{ + pixel_y = 10; + pixel_x = 5 + }, +/obj/item/reagent_containers/food/snacks/cube/monkey{ + pixel_x = 5 + }, +/obj/item/paicard{ + pixel_x = -6; + pixel_y = 1 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"GV" = ( +/obj/structure/shuttle/engine/huge, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"He" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "floorscorched1" + }, +/area/shuttle/escape) +"Hi" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/shuttle/escape) +"Hq" = ( +/obj/structure/flora/rock/pile, +/turf/open/floor/grass, +/area/shuttle/escape) +"HV" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"Ia" = ( +/mob/living/carbon/monkey, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/shuttle/escape) +"Io" = ( +/obj/effect/turf_decal/trimline/green/filled/corner, +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"Iw" = ( +/obj/item/reagent_containers/glass/bucket, +/mob/living/simple_animal/hostile/retaliate/frog, +/turf/open/floor/grass, +/area/shuttle/escape) +"Iz" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/vomit, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/shuttle/escape) +"IB" = ( +/obj/effect/decal/cleanable/oil, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"Jw" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"JD" = ( +/obj/effect/turf_decal/trimline/blue/filled/end{ + dir = 1 + }, +/obj/structure/table/glass, +/obj/item/storage/firstaid/brute{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/storage/firstaid/regular{ + pixel_x = -3 + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/shuttle/escape) +"JR" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"Ka" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/grass, +/area/shuttle/escape) +"Kv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/sign/poster/contraband/tools{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"Kx" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 3 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"KT" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"Lm" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/ausbushes/pointybush, +/turf/open/floor/grass, +/area/shuttle/escape) +"LG" = ( +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/filled/corner, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"LO" = ( +/obj/structure/flora/rock/jungle{ + icon_state = "grassa4" + }, +/turf/open/floor/grass, +/area/shuttle/escape) +"LW" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"LY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/escape) +"MJ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/structure/flora/ausbushes/leafybush, +/turf/open/floor/grass, +/area/shuttle/escape) +"MS" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"Nu" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/item/hatchet, +/turf/open/floor/grass, +/area/shuttle/escape) +"Ob" = ( +/obj/effect/turf_decal/trimline/green/filled/end, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/window/southleft{ + name = "Nature pen" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"OS" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 3 + }, +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"Ps" = ( +/obj/structure/flora/ausbushes/brflowers, +/turf/open/floor/grass, +/area/shuttle/escape) +"PG" = ( +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"PP" = ( +/obj/structure/flora/ausbushes/genericbush, +/turf/open/floor/grass, +/area/shuttle/escape) +"QC" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/grass, +/area/shuttle/escape) +"QM" = ( +/obj/item/bodypart, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/shuttle/escape) +"QO" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/shuttle/escape) +"QZ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/obj/structure/chair, +/obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6{ + pixel_x = 30 + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/shuttle/escape) +"Ru" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/machinery/vending/hydroseeds, +/turf/open/floor/grass, +/area/shuttle/escape) +"Sl" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/computer/operating{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/shuttle/escape) +"Sr" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 6 + }, +/obj/structure/table/glass, +/obj/item/clothing/suit/monkeysuit{ + pixel_y = 4; + pixel_x = -2 + }, +/obj/item/clothing/mask/gas/monkeymask{ + pixel_x = 5; + pixel_y = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"SS" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"ST" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/shuttle/escape) +"Ti" = ( +/obj/structure/flora/rock/jungle{ + icon_state = "busha3" + }, +/turf/open/floor/grass, +/area/shuttle/escape) +"Ts" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/machinery/hydroponics/soil, +/turf/open/floor/grass, +/area/shuttle/escape) +"TH" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 5 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"TK" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/item/hatchet, +/turf/open/floor/grass, +/area/shuttle/escape) +"TT" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/grass, +/area/shuttle/escape) +"Um" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"Uy" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/item/reagent_containers/food/snacks/grown/banana, +/turf/open/floor/grass, +/area/shuttle/escape) +"UE" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/machinery/vending/hydronutrients, +/turf/open/floor/grass, +/area/shuttle/escape) +"UO" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"Vu" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/mob/living/carbon/monkey, +/turf/open/floor/grass, +/area/shuttle/escape) +"Vv" = ( +/mob/living/carbon/monkey, +/turf/open/floor/grass, +/area/shuttle/escape) +"VI" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/escape) +"VM" = ( +/obj/structure/flora/tree/jungle, +/turf/open/floor/grass, +/area/shuttle/escape) +"VU" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/escape) +"Wa" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"Wr" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/structure/flora/ausbushes/reedbush, +/turf/open/floor/grass, +/area/shuttle/escape) +"Wz" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/recharge_station, +/turf/open/floor/plating, +/area/shuttle/escape) +"WE" = ( +/turf/template_noop, +/area/template_noop) +"WH" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/sunnybush, +/turf/open/floor/grass, +/area/shuttle/escape) +"WL" = ( +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"Xm" = ( +/obj/structure/flora/rock, +/turf/open/floor/grass, +/area/shuttle/escape) +"XK" = ( +/turf/open/floor/grass, +/area/shuttle/escape) +"XY" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/shuttle/escape) +"Ym" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/rock/pile, +/turf/open/floor/grass, +/area/shuttle/escape) +"Yp" = ( +/obj/machinery/door/airlock/titanium{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/mobile/emergency, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"Yu" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/escape) +"YH" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/grass, +/area/shuttle/escape) +"YP" = ( +/obj/effect/turf_decal/trimline/green/filled/end{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/window/eastleft{ + name = "Nature pen" + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"YW" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 3 + }, +/obj/machinery/vending/wardrobe/hydro_wardrobe, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"Zd" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 3 + }, +/obj/machinery/light, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"Zg" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/turf/open/floor/plasteel/dark, +/area/shuttle/escape) +"Zl" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/shuttle/escape) +"Zm" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/ausbushes/fernybush, +/turf/open/floor/grass, +/area/shuttle/escape) +"Zt" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"ZD" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"ZL" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/banana, +/turf/open/floor/grass, +/area/shuttle/escape) +"ZT" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) + +(1,1,1) = {" +WE +WE +WE +WE +WE +WE +WE +WE +WE +VU +SS +Yu +Yp +Yu +Yu +Yu +Yu +Yu +SS +Yu +SS +Yu +Yu +Yu +Yu +Yu +Yu +VU +WE +WE +WE +"} +(2,1,1) = {" +WE +WE +WE +WE +WE +WE +WE +WE +VU +Yu +nA +UO +yt +ZT +UO +GO +UO +ZT +yt +UO +zr +Yu +Yu +lH +eB +lN +bS +Yu +VU +WE +WE +"} +(3,1,1) = {" +WE +WE +WE +WE +WE +WE +WE +VU +Yu +me +Io +Wa +Wa +Wa +Wa +ev +Wa +Wa +Wa +Wa +Bv +zr +Yu +Yu +rg +iV +jO +Jw +gx +gx +GV +"} +(4,1,1) = {" +WE +WE +VU +VI +VI +VI +VU +Yu +nA +Io +MS +VI +VI +VI +VI +YP +VI +VI +VI +VI +KT +Bv +zr +Yu +Yu +eq +bg +Jw +gx +gx +gx +"} +(5,1,1) = {" +WE +VU +Yu +jX +tL +vt +Yu +CA +Io +MS +VI +VI +YH +iF +xA +Gf +lo +Gf +Zm +VI +VI +KT +Bv +BG +Yu +Kv +DQ +Jw +gx +gx +gx +"} +(6,1,1) = {" +VU +Yu +ht +jZ +WL +vP +zE +HV +Zt +VI +VI +Wr +Vv +Ti +Fo +PP +Xm +ZL +LO +mw +VI +VI +HV +Zd +Yu +IB +iO +Jw +gu +WE +WE +"} +(7,1,1) = {" +VI +eS +hC +lS +lS +vW +Yu +Co +Zt +VI +Ru +zs +Bt +qD +Bo +aJ +fG +CE +Vv +zs +uc +VI +HV +Kx +Yu +dP +dT +Jw +gu +WE +WE +"} +(8,1,1) = {" +Yu +Yu +VI +VI +ui +Yu +Db +Co +Zt +VI +Ym +XK +au +XK +VM +Hq +QC +XK +BM +Bt +Ka +VI +HV +YW +Yu +LY +sm +Jw +gu +WE +WE +"} +(9,1,1) = {" +VI +eY +hJ +lT +ur +xZ +Yu +CQ +Zt +VI +Ts +WH +XK +XK +Ps +gl +Bt +it +AM +gI +TT +VI +HV +Zd +Yu +Um +DQ +Jw +gx +gx +GV +"} +(10,1,1) = {" +VI +fD +LW +WL +WL +Zg +Bm +HV +LG +Ob +Uy +Xm +Vv +Fp +qD +zs +XK +XK +PP +Bt +ST +wg +PG +cL +gj +Um +cm +Jw +gx +gx +gx +"} +(11,1,1) = {" +VI +cZ +LW +WL +WL +Zg +VI +EI +Zt +VI +Lm +as +XK +VM +Iw +au +XK +bd +Bt +XK +Nu +VI +HV +Zd +Yu +Um +Hi +Jw +gx +gx +gx +"} +(12,1,1) = {" +VI +fJ +LW +WL +WL +Zg +VI +Co +Zt +VI +Vu +nD +qD +PP +Bt +yI +QC +Bt +XK +uI +gR +VI +HV +OS +Yu +Um +Wz +Jw +gu +WE +WE +"} +(13,1,1) = {" +VI +gM +ku +WL +WL +wX +Yu +gg +Zt +VI +UE +zs +zf +ke +zf +ay +XK +ay +AM +mq +ex +VI +HV +dj +Yu +QM +DQ +Jw +gu +WE +WE +"} +(14,1,1) = {" +VU +Yu +iD +og +WL +Zg +ui +Co +Zt +VI +VI +TK +Cb +Bt +qD +BM +Bo +Ia +XK +Ai +VI +VI +HV +Zd +Yu +zD +vx +Jw +gu +WE +WE +"} +(15,1,1) = {" +WE +VU +Yu +oE +JR +yR +Yu +TH +sN +zr +VI +VI +Zl +QO +MJ +QO +ib +MJ +Ai +VI +VI +nA +sV +aA +Yu +DD +fT +Jw +gx +gx +GV +"} +(16,1,1) = {" +WE +WE +VU +Yu +Yu +Yu +VU +Yu +KT +sN +zr +VI +VI +VI +VI +os +VI +VI +VI +VI +nA +sV +MS +Yu +Yu +XY +sF +Jw +gx +gx +gx +"} +(17,1,1) = {" +WE +WE +WE +WE +WE +WE +WE +VU +Yu +cR +sN +yt +yt +yt +yt +nQ +yt +yt +yt +yt +sV +yZ +Yu +Yu +BA +He +Sl +Jw +gx +gx +gx +"} +(18,1,1) = {" +WE +WE +WE +WE +WE +WE +WE +WE +VU +Yu +lV +rI +ZD +rI +rI +Aw +rI +rI +ZD +rI +Sr +Yu +Yu +JD +QZ +Iz +su +Yu +VU +WE +WE +"} +(19,1,1) = {" +WE +WE +WE +WE +WE +WE +WE +WE +WE +VU +Yu +VI +VI +VI +VI +Yu +VI +VI +VI +VI +Yu +Yu +Yu +Yu +Yu +Yu +Yu +VU +WE +WE +WE +"} diff --git a/_maps/templates/hilbertshotel.dmm b/_maps/templates/hilbertshotel.dmm index 4e4d8f8267..da5d13d93e 100644 --- a/_maps/templates/hilbertshotel.dmm +++ b/_maps/templates/hilbertshotel.dmm @@ -7,7 +7,7 @@ /area/hilbertshotel) "c" = ( /obj/machinery/jukebox{ - req_access = null + req_one_access = null }, /turf/open/indestructible/hotelwood, /area/hilbertshotel) diff --git a/code/__DEFINES/_flags/item_flags.dm b/code/__DEFINES/_flags/item_flags.dm index 26e764c45b..7da71e22cb 100644 --- a/code/__DEFINES/_flags/item_flags.dm +++ b/code/__DEFINES/_flags/item_flags.dm @@ -22,12 +22,10 @@ #define SURGICAL_TOOL (1<<10) ///Can be worn on certain slots (currently belt and id) that would otherwise require an uniform. #define NO_UNIFORM_REQUIRED (1<<11) -///Damage when attacking people is not affected by combat mode. -#define NO_COMBAT_MODE_FORCE_MODIFIER (1<<12) /// This item can be used to parry. Only a basic check used to determine if we should proceed with parry chain at all. -#define ITEM_CAN_PARRY (1<<13) +#define ITEM_CAN_PARRY (1<<12) /// This item can be used in the directional blocking system. Only a basic check used to determine if we should proceed with directional block handling at all. -#define ITEM_CAN_BLOCK (1<<14) +#define ITEM_CAN_BLOCK (1<<13) // Flags for the clothing_flags var on /obj/item/clothing diff --git a/code/__DEFINES/_flags/obj_flags.dm b/code/__DEFINES/_flags/obj_flags.dm index a936a5cef5..ce1e126f12 100644 --- a/code/__DEFINES/_flags/obj_flags.dm +++ b/code/__DEFINES/_flags/obj_flags.dm @@ -9,8 +9,11 @@ #define UNIQUE_RENAME (1<<6) //can you customize the description/name of the thing? #define USES_TGUI (1<<7) //put on things that use tgui on ui_interact instead of custom/old UI. #define FROZEN (1<<8) -#define SHOVABLE_ONTO (1<<9) //called on turf.shove_act() to consider whether an object should have a niche effect (defined in their own shove_act()) when someone is pushed onto it, or do a sanity CanPass() check. -#define BLOCK_Z_FALL (1<<10) +#define BLOCK_Z_OUT_DOWN (1<<9) // Should this object block z falling from loc? +#define BLOCK_Z_OUT_UP (1<<10) // Should this object block z uprise from loc? +#define BLOCK_Z_IN_DOWN (1<<11) // Should this object block z falling from above? +#define BLOCK_Z_IN_UP (1<<12) // Should this object block z uprise from below? +#define SHOVABLE_ONTO (1<<13) //called on turf.shove_act() to consider whether an object should have a niche effect (defined in their own shove_act()) when someone is pushed onto it, or do a sanity CanPass() check. /// Integrity defines for clothing (not flags but close enough) #define CLOTHING_PRISTINE 0 // We have no damage on the clothing @@ -18,3 +21,6 @@ #define CLOTHING_SHREDDED 2 // The clothing is useless and cannot be equipped unless repaired first // If you add new ones, be sure to add them to /obj/Initialize as well for complete mapping support + +/// Flags for the pod_flags var on /obj/structure/closet/supplypod +#define FIRST_SOUNDS (1<<0) // If it shouldn't play sounds the first time it lands, used for reverse mode diff --git a/code/__DEFINES/actionspeed_modifiers.dm b/code/__DEFINES/actionspeed_modifiers.dm new file mode 100644 index 0000000000..40fbd3fe26 --- /dev/null +++ b/code/__DEFINES/actionspeed_modifiers.dm @@ -0,0 +1,2 @@ +//ids +#define ACTIONSPEED_ID_SANITY "sanity_component" diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index a3e5423753..1d47549685 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -63,6 +63,10 @@ #define CONTRACT_UPLINK_PAGE_CONTRACTS "CONTRACTS" #define CONTRACT_UPLINK_PAGE_HUB "HUB" +//Lingblood stuff +#define LINGBLOOD_DETECTION_THRESHOLD 1 +#define LINGBLOOD_EXPLOSION_MULT 2 +#define LINGBLOOD_EXPLOSION_THRESHOLD (LINGBLOOD_DETECTION_THRESHOLD * LINGBLOOD_EXPLOSION_MULT) //Hey, important to note here: the explosion threshold is explicitly more than, rather than more than or equal to. This stops a single loud ability from triggering the explosion threshold. ///Heretics -- #define IS_HERETIC(mob) (mob.mind?.has_antag_datum(/datum/antagonist/heretic)) diff --git a/code/__DEFINES/cargo.dm b/code/__DEFINES/cargo.dm index bba5b5c5ed..ac5272057a 100644 --- a/code/__DEFINES/cargo.dm +++ b/code/__DEFINES/cargo.dm @@ -13,27 +13,43 @@ #define STYLE_GONDOLA 13 #define STYLE_SEETHROUGH 14 -#define POD_ICON_STATE 1 -#define POD_NAME 2 -#define POD_DESC 3 +#define POD_SHAPE 1 +#define POD_BASE 2 +#define POD_DOOR 3 +#define POD_DECAL 4 +#define POD_GLOW 5 +#define POD_RUBBLE_TYPE 6 +#define POD_NAME 7 +#define POD_DESC 8 -#define POD_STYLES list(\ - list("supplypod", "supply pod", "A Nanotrasen supply drop pod."),\ - list("bluespacepod", "bluespace supply pod" , "A Nanotrasen Bluespace supply pod. Teleports back to CentCom after delivery."),\ - list("centcompod", "\improper Centcom supply pod", "A Nanotrasen supply pod, this one has been marked with Central Command's designations. Teleports back to Centcom after delivery."),\ - list("syndiepod", "blood-red supply pod", "A dark, intimidating supply pod, covered in the blood-red markings of the Syndicate. It's probably best to stand back from this."),\ - list("squadpod", "\improper MK. II supply pod", "A Nanotrasen supply pod. This one has been marked the markings of some sort of elite strike team."),\ - list("cultpod", "bloody supply pod", "A Nanotrasen supply pod covered in scratch-marks, blood, and strange runes."),\ - list("missilepod", "cruise missile", "A big ass missile that didn't seem to fully detonate. It was likely launched from some far-off deep space missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\ - list("smissilepod", "\improper Syndicate cruise missile", "A big ass, blood-red missile that didn't seem to fully detonate. It was likely launched from some deep space Syndicate missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\ - list("boxpod", "\improper Aussec supply crate", "An incredibly sturdy supply crate, designed to withstand orbital re-entry. Has 'Aussec Armory - 2532' engraved on the side."),\ - list("honkpod", "\improper HONK pod", "A brightly-colored supply pod. It likely originated from the Clown Federation."),\ - list("fruitpod", "\improper Orange", "An angry orange."),\ - list("", "\improper S.T.E.A.L.T.H. pod MKVII", "A supply pod that, under normal circumstances, is completely invisible to conventional methods of detection. How are you even seeing this?"),\ - list("gondolapod", "gondola", "The silent walker. This one seems to be part of a delivery agency."),\ - list("", "", "")\ -) +#define RUBBLE_NONE 1 +#define RUBBLE_NORMAL 2 +#define RUBBLE_WIDE 3 +#define RUBBLE_THIN 4 +#define POD_SHAPE_NORML 1 +#define POD_SHAPE_OTHER 2 + +#define SUPPLYPOD_X_OFFSET -16 + +GLOBAL_LIST_EMPTY(supplypod_loading_bays) + +GLOBAL_LIST_INIT(podstyles, list(\ + list(POD_SHAPE_NORML, "pod", TRUE, "default", "yellow", RUBBLE_NORMAL, "supply pod", "A Nanotrasen supply drop pod."),\ + list(POD_SHAPE_NORML, "advpod", TRUE, "bluespace", "blue", RUBBLE_NORMAL, "bluespace supply pod" , "A Nanotrasen Bluespace supply pod. Teleports back to CentCom after delivery."),\ + list(POD_SHAPE_NORML, "advpod", TRUE, "centcom", "blue", RUBBLE_NORMAL, "\improper CentCom supply pod", "A Nanotrasen supply pod, this one has been marked with Central Command's designations. Teleports back to CentCom after delivery."),\ + list(POD_SHAPE_NORML, "darkpod", TRUE, "syndicate", "red", RUBBLE_NORMAL, "blood-red supply pod", "An intimidating supply pod, covered in the blood-red markings of the Syndicate. It's probably best to stand back from this."),\ + list(POD_SHAPE_NORML, "darkpod", TRUE, "deathsquad", "blue", RUBBLE_NORMAL, "\improper Deathsquad drop pod", "A Nanotrasen drop pod. This one has been marked the markings of Nanotrasen's elite strike team."),\ + list(POD_SHAPE_NORML, "pod", TRUE, "cultist", "red", RUBBLE_NORMAL, "bloody supply pod", "A Nanotrasen supply pod covered in scratch-marks, blood, and strange runes."),\ + list(POD_SHAPE_OTHER, "missile", FALSE, FALSE, FALSE, RUBBLE_THIN, "cruise missile", "A big ass missile that didn't seem to fully detonate. It was likely launched from some far-off deep space missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\ + list(POD_SHAPE_OTHER, "smissile", FALSE, FALSE, FALSE, RUBBLE_THIN, "\improper Syndicate cruise missile", "A big ass, blood-red missile that didn't seem to fully detonate. It was likely launched from some deep space Syndicate missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\ + list(POD_SHAPE_OTHER, "box", TRUE, FALSE, FALSE, RUBBLE_WIDE, "\improper Aussec supply crate", "An incredibly sturdy supply crate, designed to withstand orbital re-entry. Has 'Aussec Armory - 2532' engraved on the side."),\ + list(POD_SHAPE_NORML, "clownpod", TRUE, "clown", "green", RUBBLE_NORMAL, "\improper HONK pod", "A brightly-colored supply pod. It likely originated from the Clown Federation."),\ + list(POD_SHAPE_OTHER, "orange", TRUE, FALSE, FALSE, RUBBLE_NONE, "\improper Orange", "An angry orange."),\ + list(POD_SHAPE_OTHER, FALSE, FALSE, FALSE, FALSE, RUBBLE_NONE, "\improper S.T.E.A.L.T.H. pod MKVII", "A supply pod that, under normal circumstances, is completely invisible to conventional methods of detection. How are you even seeing this?"),\ + list(POD_SHAPE_OTHER, "gondola", FALSE, FALSE, FALSE, RUBBLE_NONE, "gondola", "The silent walker. This one seems to be part of a delivery agency."),\ + list(POD_SHAPE_OTHER, FALSE, FALSE, FALSE, FALSE, RUBBLE_NONE, FALSE, FALSE, "rl_click", "give_po")\ +)) #define PACK_GOODY_NONE 0 #define PACK_GOODY_PUBLIC 1 //can be bought by both privates and cargo -#define PACK_GOODY_PRIVATE 2 //can be bought only by privates \ No newline at end of file +#define PACK_GOODY_PRIVATE 2 //can be bought only by privates diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 58125b5497..923355b340 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -105,3 +105,12 @@ //belly sound pref things #define NORMIE_HEARCHECK 4 + +//icon states for the default eyes and for a state for no eye +#define DEFAULT_EYES_TYPE "normal" +#define DEFAULT_LEFT_EYE_STATE "normal_left_eye" +#define DEFAULT_RIGHT_EYE_STATE "normal_right_eye" +#define DEFAULT_NO_EYE_STATE "no_eye" + +//special species definitions +#define MINIMUM_MUTANT_COLOR "#202020" //this is how dark players mutant parts and skin can be diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index 2273d34c82..fb461acfa4 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -1,54 +1,54 @@ // This is eventually for wjohn to add more color standardization stuff like I keep asking him >:( -#define COLOR_INPUT_DISABLED "#F0F0F0" -#define COLOR_INPUT_ENABLED "#D3B5B5" -#define COLOR_FLOORTILE_GRAY "#8D8B8B" -#define COLOR_ALMOST_BLACK "#333333" -#define COLOR_BLACK "#000000" -#define COLOR_RED "#FF0000" -#define COLOR_RED_LIGHT "#FF3333" -#define COLOR_MAROON "#800000" -#define COLOR_YELLOW "#FFFF00" -#define COLOR_OLIVE "#808000" -#define COLOR_LIME "#32CD32" -#define COLOR_GREEN "#008000" -#define COLOR_CYAN "#00FFFF" -#define COLOR_TEAL "#008080" -#define COLOR_BLUE "#0000FF" -#define COLOR_BLUE_LIGHT "#33CCFF" -#define COLOR_NAVY "#000080" -#define COLOR_PINK "#FFC0CB" -#define COLOR_MAGENTA "#FF00FF" -#define COLOR_PURPLE "#800080" -#define COLOR_ORANGE "#FF9900" -#define COLOR_BEIGE "#CEB689" -#define COLOR_BLUE_GRAY "#75A2BB" -#define COLOR_BROWN "#BA9F6D" -#define COLOR_DARK_BROWN "#997C4F" -#define COLOR_DARK_ORANGE "#C3630C" -#define COLOR_GREEN_GRAY "#99BB76" -#define COLOR_RED_GRAY "#B4696A" -#define COLOR_PALE_BLUE_GRAY "#98C5DF" -#define COLOR_PALE_GREEN_GRAY "#B7D993" -#define COLOR_PALE_ORANGE "#FFC066" -#define COLOR_PALE_RED_GRAY "#D59998" -#define COLOR_PALE_PURPLE_GRAY "#CBB1CA" -#define COLOR_PURPLE_GRAY "#AE8CA8" +#define COLOR_INPUT_DISABLED "#F0F0F0" +#define COLOR_INPUT_ENABLED "#D3B5B5" +#define COLOR_FLOORTILE_GRAY "#8D8B8B" +#define COLOR_ALMOST_BLACK "#333333" +#define COLOR_BLACK "#000000" +#define COLOR_RED "#FF0000" +#define COLOR_RED_LIGHT "#FF3333" +#define COLOR_MAROON "#800000" +#define COLOR_YELLOW "#FFFF00" +#define COLOR_OLIVE "#808000" +#define COLOR_LIME "#32CD32" +#define COLOR_GREEN "#008000" +#define COLOR_CYAN "#00FFFF" +#define COLOR_TEAL "#008080" +#define COLOR_BLUE "#0000FF" +#define COLOR_BLUE_LIGHT "#33CCFF" +#define COLOR_NAVY "#000080" +#define COLOR_PINK "#FFC0CB" +#define COLOR_MAGENTA "#FF00FF" +#define COLOR_PURPLE "#800080" +#define COLOR_ORANGE "#FF9900" +#define COLOR_BEIGE "#CEB689" +#define COLOR_BLUE_GRAY "#75A2BB" +#define COLOR_BROWN "#BA9F6D" +#define COLOR_DARK_BROWN "#997C4F" +#define COLOR_DARK_ORANGE "#C3630C" +#define COLOR_GREEN_GRAY "#99BB76" +#define COLOR_RED_GRAY "#B4696A" +#define COLOR_PALE_BLUE_GRAY "#98C5DF" +#define COLOR_PALE_GREEN_GRAY "#B7D993" +#define COLOR_PALE_ORANGE "#FFC066" +#define COLOR_PALE_RED_GRAY "#D59998" +#define COLOR_PALE_PURPLE_GRAY "#CBB1CA" +#define COLOR_PURPLE_GRAY "#AE8CA8" -//Color defines used by the assembly detailer. -#define COLOR_ASSEMBLY_BLACK "#545454" -#define COLOR_ASSEMBLY_BGRAY "#9497AB" -#define COLOR_ASSEMBLY_WHITE "#E2E2E2" -#define COLOR_ASSEMBLY_RED "#CC4242" -#define COLOR_ASSEMBLY_ORANGE "#E39751" -#define COLOR_ASSEMBLY_BEIGE "#AF9366" -#define COLOR_ASSEMBLY_BROWN "#97670E" -#define COLOR_ASSEMBLY_GOLD "#AA9100" -#define COLOR_ASSEMBLY_YELLOW "#CECA2B" -#define COLOR_ASSEMBLY_GURKHA "#999875" -#define COLOR_ASSEMBLY_LGREEN "#789876" -#define COLOR_ASSEMBLY_GREEN "#44843C" -#define COLOR_ASSEMBLY_LBLUE "#5D99BE" -#define COLOR_ASSEMBLY_BLUE "#38559E" -#define COLOR_ASSEMBLY_PURPLE "#6F6192" -#define COLOR_ASSEMBLY_PINK "#ff4adc" +// Color defines used by the assembly detailer. +#define COLOR_ASSEMBLY_BLACK "#545454" +#define COLOR_ASSEMBLY_BGRAY "#9497AB" +#define COLOR_ASSEMBLY_WHITE "#E2E2E2" +#define COLOR_ASSEMBLY_RED "#CC4242" +#define COLOR_ASSEMBLY_ORANGE "#E39751" +#define COLOR_ASSEMBLY_BEIGE "#AF9366" +#define COLOR_ASSEMBLY_BROWN "#97670E" +#define COLOR_ASSEMBLY_GOLD "#AA9100" +#define COLOR_ASSEMBLY_YELLOW "#CECA2B" +#define COLOR_ASSEMBLY_GURKHA "#999875" +#define COLOR_ASSEMBLY_LGREEN "#789876" +#define COLOR_ASSEMBLY_GREEN "#44843C" +#define COLOR_ASSEMBLY_LBLUE "#5D99BE" +#define COLOR_ASSEMBLY_BLUE "#38559E" +#define COLOR_ASSEMBLY_PURPLE "#6F6192" +#define COLOR_ASSEMBLY_PINK "#ff4adc" diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index eff5d9eca9..5f5a76b58d 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -34,6 +34,8 @@ #define COMBAT_FLAGS_DEFAULT (COMBAT_FLAG_PARRY_CAPABLE | COMBAT_FLAG_BLOCK_CAPABLE) /// Default combat flags for everyone else (so literally everyone but humans). #define COMBAT_FLAGS_SPRINT_EXEMPT (COMBAT_FLAG_SPRINT_ACTIVE | COMBAT_FLAG_SPRINT_TOGGLED | COMBAT_FLAG_SPRINT_FORCED | COMBAT_FLAG_PARRY_CAPABLE | COMBAT_FLAG_BLOCK_CAPABLE) +/// Default combat flags for those in stamina combat system +#define COMBAT_FLAGS_STAMINA_COMBAT (COMBAT_FLAG_PARRY_CAPABLE | COMBAT_FLAG_BLOCK_CAPABLE | COMBAT_FLAG_STAMINA_BUFFER) /// The user wants sprint mode on #define COMBAT_FLAG_SPRINT_TOGGLED (1<<0) @@ -47,8 +49,8 @@ #define COMBAT_FLAG_RESISTING_REST (1<<4) /// Intentionally resting #define COMBAT_FLAG_INTENTIONALLY_RESTING (1<<5) -/// Currently stamcritted but not as violently -#define COMBAT_FLAG_SOFT_STAMCRIT (1<<6) +/// This mob requires stamina buffer to do things that require stamina buffer. Not having this exempts the mob from stamina combat. +#define COMBAT_FLAG_STAMINA_BUFFER (1<<6) /// Force sprint mode on at all times, overrides everything including sprint disable traits. #define COMBAT_FLAG_SPRINT_FORCED (1<<7) /// This mob is capable of using the active parrying system. @@ -64,26 +66,17 @@ // Helpers for getting someone's stamcrit state. Cast to living. #define NOT_STAMCRIT 0 -#define SOFT_STAMCRIT 1 -#define HARD_STAMCRIT 2 +#define HARD_STAMCRIT 1 // Stamcrit check helpers #define IS_STAMCRIT(mob) (CHECK_STAMCRIT(mob) != NOT_STAMCRIT) -#define CHECK_STAMCRIT(mob) ((mob.combat_flags & COMBAT_FLAG_HARD_STAMCRIT)? HARD_STAMCRIT : ((mob.combat_flags & COMBAT_FLAG_SOFT_STAMCRIT)? SOFT_STAMCRIT : NOT_STAMCRIT)) +#define CHECK_STAMCRIT(mob) (mob.combat_flags & COMBAT_FLAG_HARD_STAMCRIT) //stamina stuff -///Threshold over which attacks start being hindered. -#define STAMINA_NEAR_SOFTCRIT 90 -///softcrit for stamina damage. prevents standing up, some actions that cost stamina, etc, but doesn't force a rest or stop movement -#define STAMINA_SOFTCRIT 100 -///sanity cap to prevent stamina actions (that are still performable) from sending you into crit. -#define STAMINA_NEAR_CRIT 130 -///crit for stamina damage. forces a rest, and stops movement until stamina goes back to stamina softcrit +/// crit for stamina damage. forces a rest, and stops movement until stamina goes back to stamina softcrit #define STAMINA_CRIT 140 -///same as STAMINA_SOFTCRIT except for the more traditional health calculations -#define STAMINA_SOFTCRIT_TRADITIONAL 0 -///ditto, but for STAMINA_CRIT -#define STAMINA_CRIT_TRADITIONAL -40 +/// Threshold under for which you are unable to draw from stamina health to replace stamina buffer +#define STAMINA_NO_OVERDRAW_THRESHOLD 100 #define CRAWLUNDER_DELAY 30 //Delay for crawling under a standing mob @@ -252,36 +245,6 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( //We will round to this value in damage calculations. #define DAMAGE_PRECISION 0.01 -//items total mass, used to calculate their attacks' stamina costs. If not defined, the cost will be (w_class * 1.25) -#define TOTAL_MASS_TINY_ITEM 1.25 -#define TOTAL_MASS_SMALL_ITEM 2.5 -#define TOTAL_MASS_NORMAL_ITEM 3.75 -#define TOTAL_MASS_BULKY_ITEM 5 -#define TOTAL_MASS_HUGE_ITEM 6.25 -#define TOTAL_MASS_GIGANTIC_ITEM 7.5 - -#define TOTAL_MASS_HAND_REPLACEMENT 5 //standard punching stamina cost. most hand replacements are huge items anyway. -#define TOTAL_MASS_MEDIEVAL_WEAPON 3.6 //very, very generic average sword/warpick/etc. weight in pounds. -#define TOTAL_MASS_TOY_SWORD 1.5 - -//stamina cost defines. -#define STAM_COST_ATTACK_OBJ_MULT 1.2 -#define STAM_COST_ATTACK_MOB_MULT 1 -#define STAM_COST_BATON_MOB_MULT 1 -#define STAM_COST_NO_COMBAT_MULT 1.25 -#define STAM_COST_W_CLASS_MULT 1.25 -#define STAM_COST_THROW_MULT 2 -#define STAM_COST_THROW_MOB 2.5 //multiplied by (mob size + 1)^2. - -///Multiplier of the (STAMINA_NEAR_CRIT - user current stamina loss) : (STAMINA_NEAR_CRIT - STAMINA_SOFTCRIT) ratio used in damage penalties when stam soft-critted. -#define STAM_CRIT_ITEM_ATTACK_PENALTY 0.66 -/// changeNext_move penalty multiplier of the above. -#define STAM_CRIT_ITEM_ATTACK_DELAY 1.75 -/// Damage penalty when fighting prone. -#define LYING_DAMAGE_PENALTY 0.7 -/// Added delay when firing guns stam-softcritted. Summed with a hardset CLICK_CD_RANGE delay, similar to STAM_CRIT_DAMAGE_DELAY otherwise. -#define STAM_CRIT_GUN_DELAY 2.75 - //stamina recovery defines. Blocked if combat mode is on. #define STAM_RECOVERY_STAM_CRIT -7.5 #define STAM_RECOVERY_RESTING -6 diff --git a/code/__DEFINES/combat/stamina_combat.dm b/code/__DEFINES/combat/stamina_combat.dm new file mode 100644 index 0000000000..1f781ca3e0 --- /dev/null +++ b/code/__DEFINES/combat/stamina_combat.dm @@ -0,0 +1,35 @@ +// Stamina Buffer + +// Standard amounts for stamina usage + +// Multipliers +/// Base stamina cost for an item of a certain w_class without total_mass set. +#define STAM_COST_W_CLASS_MULT 1.25 + +// Flat amounts +/// Usage for eyestabbing with a screwdriver +#define STAMINA_COST_ITEM_EYESTAB 7.5 +/// Usage for shoving yourself off the ground instantly +#define STAMINA_COST_SHOVE_UP 10 + +//items total mass, used to calculate their attacks' stamina costs. If not defined, the cost will be (w_class * 1.25) +#define TOTAL_MASS_TINY_ITEM 1.25 +#define TOTAL_MASS_SMALL_ITEM 2.5 +#define TOTAL_MASS_NORMAL_ITEM 3.75 +#define TOTAL_MASS_BULKY_ITEM 5 +#define TOTAL_MASS_HUGE_ITEM 6.25 +#define TOTAL_MASS_GIGANTIC_ITEM 7.5 + +#define TOTAL_MASS_HAND_REPLACEMENT 5 //standard punching stamina cost. most hand replacements are huge items anyway. +#define TOTAL_MASS_MEDIEVAL_WEAPON 3.6 //very, very generic average sword/warpick/etc. weight in pounds. +#define TOTAL_MASS_TOY_SWORD 1.5 + +//stamina cost defines. +#define STAM_COST_ATTACK_OBJ_MULT 0.75 +#define STAM_COST_ATTACK_MOB_MULT 1 +#define STAM_COST_BATON_MOB_MULT 0.85 +#define STAM_COST_THROW_MULT 0.75 +#define STAM_COST_THROW_MOB 1.25 //multiplied by (mob size + 1)^2. + +/// Damage penalty when fighting prone. +#define LYING_DAMAGE_PENALTY 0.7 diff --git a/code/__DEFINES/configuration.dm b/code/__DEFINES/configuration.dm index 20c1df2ec7..0428a16828 100644 --- a/code/__DEFINES/configuration.dm +++ b/code/__DEFINES/configuration.dm @@ -3,6 +3,8 @@ #define CONFIG_SET(X, Y) global.config.Set(/datum/config_entry/##X, ##Y) /// Gets the datum of the object, for when editing a const define. #define CONFIG_GET_ENTRY(X) global.config.GetEntryDatum(/datum/config_entry/##X) +/// Caches an entry in the proc +#define CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(X, varname) var/static/datum/config_entry/##X/entrycache_##varname;if(!entrycache_##varname){entrycache_##varname=CONFIG_GET_ENTRY(##X);};var/##varname=entrycache_##varname.config_entry_value #define CONFIG_MAPS_FILE "maps.txt" diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 02e3fe6f3d..7b214df421 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -5,9 +5,21 @@ // global signals // These are signals which can be listened to by any component on any parent // start global signals with "!", this used to be necessary but now it's just a formatting choice -#define COMSIG_GLOB_NEW_Z "!new_z" //from base of datum/controller/subsystem/mapping/proc/add_new_zlevel(): (list/args) -#define COMSIG_GLOB_VAR_EDIT "!var_edit" //called after a successful var edit somewhere in the world: (list/args) -#define COMSIG_GLOB_LIVING_SAY_SPECIAL "!say_special" //global living say plug - use sparingly: (mob/speaker , message) +/// from base of datum/controller/subsystem/mapping/proc/add_new_zlevel(): (list/args) +#define COMSIG_GLOB_NEW_Z "!new_z" +/// called after a successful var edit somewhere in the world: (list/args) +#define COMSIG_GLOB_VAR_EDIT "!var_edit" +/// called after an explosion happened : (epicenter, devastation_range, heavy_impact_range, light_impact_range, took, orig_dev_range, orig_heavy_range, orig_light_range) +#define COMSIG_GLOB_EXPLOSION "!explosion" +/// mob was created somewhere : (mob) +#define COMSIG_GLOB_MOB_CREATED "!mob_created" +/// mob died somewhere : (mob , gibbed) +#define COMSIG_GLOB_MOB_DEATH "!mob_death" +/// global living say plug - use sparingly: (mob/speaker , message) +#define COMSIG_GLOB_LIVING_SAY_SPECIAL "!say_special" +/// called by datum/cinematic/play() : (datum/cinematic/new_cinematic) +#define COMSIG_GLOB_PLAY_CINEMATIC "!play_cinematic" + #define COMPONENT_GLOB_BLOCK_CINEMATIC 1 // signals from globally accessible objects /// from SSsun when the sun changes position : (azimuth) @@ -73,7 +85,7 @@ #define COMSIG_ATOM_EMP_ACT "atom_emp_act" ///from base of atom/fire_act(): (exposed_temperature, exposed_volume) #define COMSIG_ATOM_FIRE_ACT "atom_fire_act" -///from base of atom/bullet_act(): (/obj/projectile, def_zone) +///from base of atom/bullet_act(): (/obj/item/projectile, def_zone) #define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" ///from base of atom/blob_act(): (/obj/structure/blob) #define COMSIG_ATOM_BLOB_ACT "atom_blob_act" @@ -369,6 +381,8 @@ #define COMSIG_MINE_TRIGGERED "minegoboom" ///from [/obj/effect/mine/proc/triggermine]: // Uncovered information #define COMPONENT_DEEPSCAN_UNCOVERED_INFORMATION 1 +///from [/obj/structure/closet/supplypod/proc/endlaunch]: +#define COMSIG_SUPPLYPOD_LANDED "supplypodgoboom" // /obj/item/grenade signals #define COMSIG_GRENADE_PRIME "grenade_prime" //called in /obj/item/gun/process_fire (user, target, params, zone_override) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 508bb64a62..3407b3342b 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -44,7 +44,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define isplatingturf(A) (istype(A, /turf/open/floor/plating)) -#define istransparentturf(A) (istype(A, /turf/open/transparent)) +#define istransparentturf(A) (istype(A, /turf/open/transparent)||istype(A, /turf/open/space/transparent)) //Mobs #define isliving(A) (istype(A, /mob/living)) @@ -236,3 +236,5 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( #define isblobmonster(O) (istype(O, /mob/living/simple_animal/hostile/blob)) #define isshuttleturf(T) (length(T.baseturfs) && (/turf/baseturf_skipover/shuttle in T.baseturfs)) + +#define isProbablyWallMounted(O) (O.pixel_x > 20 || O.pixel_x < -20 || O.pixel_y > 20 || O.pixel_y < -20) diff --git a/code/__DEFINES/layers_planes.dm b/code/__DEFINES/layers_planes.dm index 9188efacfd..8ab33689d3 100644 --- a/code/__DEFINES/layers_planes.dm +++ b/code/__DEFINES/layers_planes.dm @@ -37,7 +37,9 @@ #define FIELD_OF_VISION_VISUAL_RENDER_TARGET "FIELD_OF_VISION_VISUAL_PLANE" #define CHAT_PLANE -1 //We don't want heard messages to be hidden by FoV. -#define CHAT_LAYER 12.1 //Legacy, it doesn't matter that much because we are displayed above the game plane anyway. + +#define CHAT_LAYER 12.0001 // Do not insert layers between these two values +#define CHAT_LAYER_MAX 12.9999 #define BLACKNESS_PLANE 0 //To keep from conflicts with SEE_BLACKNESS internals #define BLACKNESS_PLANE_RENDER_TARGET "BLACKNESS_PLANE" diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index c5c2dd58c2..854b6c9dcf 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -20,11 +20,6 @@ Multi-Z stations are supported and multi-Z mining and away missions would require only minor tweaks. */ -// helpers for modifying jobs, used in various job_changes.dm files -#define MAP_JOB_CHECK if(SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) { return; } -#define MAP_JOB_CHECK_BASE if(SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) { return ..(); } -#define MAP_REMOVE_JOB(jobpath) /datum/job/##jobpath/map_check() { return (SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) && ..() } - #define SPACERUIN_MAP_EDGE_PAD 15 // traits diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 586fce3e0c..d39b8641ba 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -1,17 +1,17 @@ /*ALL MOB-RELATED DEFINES THAT DON'T BELONG IN ANOTHER FILE GO HERE*/ -//Misc mob defines +// Misc mob defines -//Ready states at roundstart for mob/dead/new_player +// Ready states at roundstart for mob/dead/new_player #define PLAYER_NOT_READY 0 #define PLAYER_READY_TO_PLAY 1 #define PLAYER_READY_TO_OBSERVE 2 -//movement intent defines for the m_intent var +// movement intent defines for the m_intent var #define MOVE_INTENT_WALK "walk" #define MOVE_INTENT_RUN "run" -//Blood levels +// Blood levels #define BLOOD_VOLUME_MAX_LETHAL 2150 #define BLOOD_VOLUME_EXCESS 2100 #define BLOOD_VOLUME_MAXIMUM 2000 @@ -22,34 +22,34 @@ #define BLOOD_VOLUME_BAD 224 #define BLOOD_VOLUME_SURVIVE 122 -//Sizes of mobs, used by mob/living/var/mob_size +// Sizes of mobs, used by mob/living/var/mob_size #define MOB_SIZE_TINY 0 #define MOB_SIZE_SMALL 1 #define MOB_SIZE_HUMAN 2 #define MOB_SIZE_LARGE 3 -//Ventcrawling defines +// Ventcrawling defines #define VENTCRAWLER_NONE 0 #define VENTCRAWLER_NUDE 1 #define VENTCRAWLER_ALWAYS 2 -//Bloodcrawling defines +// Bloodcrawling defines #define BLOODCRAWL 1 #define BLOODCRAWL_EAT 2 -//Mob bio-types flags -#define MOB_ORGANIC (1 << 0) +// Mob bio-types flags +#define MOB_ORGANIC (1 << 0) #define MOB_MINERAL (1 << 1) -#define MOB_ROBOTIC (1 << 2) +#define MOB_ROBOTIC (1 << 2) #define MOB_UNDEAD (1 << 3) -#define MOB_HUMANOID (1 << 4) -#define MOB_BUG (1 << 5) +#define MOB_HUMANOID (1 << 4) +#define MOB_BUG (1 << 5) #define MOB_BEAST (1 << 6) -#define MOB_EPIC (1 << 7) //megafauna +#define MOB_EPIC (1 << 7) // Megafauna #define MOB_REPTILE (1 << 8) #define MOB_SPIRIT (1 << 9) -//Organ defines for carbon mobs +// Organ defines for carbon mobs #define ORGAN_ORGANIC 1 #define ORGAN_ROBOTIC 2 @@ -66,194 +66,194 @@ #define DEFAULT_BODYPART_ICON_ROBOTIC 'icons/mob/augmentation/augments.dmi' #define MONKEY_BODYPART "monkey" -#define ALIEN_BODYPART "alien" -#define LARVA_BODYPART "larva" -#define DEVIL_BODYPART "devil" +#define ALIEN_BODYPART "alien" +#define LARVA_BODYPART "larva" +#define DEVIL_BODYPART "devil" /*see __DEFINES/inventory.dm for bodypart bitflag defines*/ // Health/damage defines for carbon mobs #define HUMAN_MAX_OXYLOSS 3 #define HUMAN_CRIT_MAX_OXYLOSS (SSmobs.wait/30) -#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point -#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point -#define HEAT_DAMAGE_LEVEL_3 8 //Amount of damage applied when your body temperature passes the 460K point and you are on fire +#define HEAT_DAMAGE_LEVEL_1 2 // Amount of damage applied when your body temperature just passes the 360.15k safety point +#define HEAT_DAMAGE_LEVEL_2 3 // Amount of damage applied when your body temperature passes the 400K point +#define HEAT_DAMAGE_LEVEL_3 8 // Amount of damage applied when your body temperature passes the 460K point and you are on fire -#define COLD_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when your body temperature just passes the 260.15k safety point -#define COLD_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when your body temperature passes the 200K point -#define COLD_DAMAGE_LEVEL_3 3 //Amount of damage applied when your body temperature passes the 120K point +#define COLD_DAMAGE_LEVEL_1 0.5 // Amount of damage applied when your body temperature just passes the 260.15k safety point +#define COLD_DAMAGE_LEVEL_2 1.5 // Amount of damage applied when your body temperature passes the 200K point +#define COLD_DAMAGE_LEVEL_3 3 // Amount of damage applied when your body temperature passes the 120K point -//Note that gas heat damage is only applied once every FOUR ticks. -#define HEAT_GAS_DAMAGE_LEVEL_1 2 //Amount of damage applied when the current breath's temperature just passes the 360.15k safety point -#define HEAT_GAS_DAMAGE_LEVEL_2 4 //Amount of damage applied when the current breath's temperature passes the 400K point -#define HEAT_GAS_DAMAGE_LEVEL_3 8 //Amount of damage applied when the current breath's temperature passes the 1000K point +// Note that gas heat damage is only applied once every FOUR ticks. +#define HEAT_GAS_DAMAGE_LEVEL_1 2 // Amount of damage applied when the current breath's temperature just passes the 360.15k safety point +#define HEAT_GAS_DAMAGE_LEVEL_2 4 // Amount of damage applied when the current breath's temperature passes the 400K point +#define HEAT_GAS_DAMAGE_LEVEL_3 8 // Amount of damage applied when the current breath's temperature passes the 1000K point -#define COLD_GAS_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when the current breath's temperature just passes the 260.15k safety point -#define COLD_GAS_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when the current breath's temperature passes the 200K point -#define COLD_GAS_DAMAGE_LEVEL_3 3 //Amount of damage applied when the current breath's temperature passes the 120K point +#define COLD_GAS_DAMAGE_LEVEL_1 0.5 // Amount of damage applied when the current breath's temperature just passes the 260.15k safety point +#define COLD_GAS_DAMAGE_LEVEL_2 1.5 // Amount of damage applied when the current breath's temperature passes the 200K point +#define COLD_GAS_DAMAGE_LEVEL_3 3 // Amount of damage applied when the current breath's temperature passes the 120K point -//Brain Damage defines -#define BRAIN_DAMAGE_MILD 20 +// Brain Damage defines +#define BRAIN_DAMAGE_MILD 20 #define BRAIN_DAMAGE_SEVERE 100 -#define BRAIN_DAMAGE_DEATH 200 +#define BRAIN_DAMAGE_DEATH 200 #define BRAIN_TRAUMA_MILD /datum/brain_trauma/mild #define BRAIN_TRAUMA_SEVERE /datum/brain_trauma/severe #define BRAIN_TRAUMA_SPECIAL /datum/brain_trauma/special #define BRAIN_TRAUMA_MAGIC /datum/brain_trauma/magic -#define TRAUMA_RESILIENCE_BASIC 1 //Curable with chems -#define TRAUMA_RESILIENCE_SURGERY 2 //Curable with brain surgery -#define TRAUMA_RESILIENCE_LOBOTOMY 3 //Curable with lobotomy -#define TRAUMA_RESILIENCE_WOUND 4 //Curable by healing the head wound -#define TRAUMA_RESILIENCE_MAGIC 5 //Curable only with magic -#define TRAUMA_RESILIENCE_ABSOLUTE 6 //This is here to stay +#define TRAUMA_RESILIENCE_BASIC 1 // Curable with chems +#define TRAUMA_RESILIENCE_SURGERY 2 // Curable with brain surgery +#define TRAUMA_RESILIENCE_LOBOTOMY 3 // Curable with lobotomy +#define TRAUMA_RESILIENCE_WOUND 4 // Curable by healing the head wound +#define TRAUMA_RESILIENCE_MAGIC 5 // Curable only with magic +#define TRAUMA_RESILIENCE_ABSOLUTE 6 // This is here to stay -//Limit of traumas for each resilience tier -#define TRAUMA_LIMIT_BASIC 3 -#define TRAUMA_LIMIT_SURGERY 2 -#define TRAUMA_LIMIT_WOUND 2 +// Limit of traumas for each resilience tier +#define TRAUMA_LIMIT_BASIC 3 +#define TRAUMA_LIMIT_SURGERY 2 +#define TRAUMA_LIMIT_WOUND 2 #define TRAUMA_LIMIT_LOBOTOMY 3 -#define TRAUMA_LIMIT_MAGIC 3 +#define TRAUMA_LIMIT_MAGIC 3 #define TRAUMA_LIMIT_ABSOLUTE INFINITY #define BRAIN_DAMAGE_INTEGRITY_MULTIPLIER 0.5 -//Surgery Defines +// Surgery Defines #define BIOWARE_GENERIC "generic" #define BIOWARE_NERVES "nerves" #define BIOWARE_CIRCULATION "circulation" #define BIOWARE_LIGAMENTS "ligaments" -//Health hud screws for carbon mobs -#define SCREWYHUD_NONE 0 -#define SCREWYHUD_CRIT 1 -#define SCREWYHUD_DEAD 2 +// Health hud screws for carbon mobs +#define SCREWYHUD_NONE 0 +#define SCREWYHUD_CRIT 1 +#define SCREWYHUD_DEAD 2 #define SCREWYHUD_HEALTHY 3 -//Threshold levels for beauty for humans +// Threshold levels for beauty for humans #define BEAUTY_LEVEL_HORRID -66 -#define BEAUTY_LEVEL_BAD -33 -#define BEAUTY_LEVEL_DECENT 33 -#define BEAUTY_LEVEL_GOOD 66 -#define BEAUTY_LEVEL_GREAT 100 +#define BEAUTY_LEVEL_BAD -33 +#define BEAUTY_LEVEL_DECENT 33 +#define BEAUTY_LEVEL_GOOD 66 +#define BEAUTY_LEVEL_GREAT 100 -//Moods levels for humans -#define MOOD_LEVEL_HAPPY4 15 -#define MOOD_LEVEL_HAPPY3 10 -#define MOOD_LEVEL_HAPPY2 6 -#define MOOD_LEVEL_HAPPY1 2 -#define MOOD_LEVEL_NEUTRAL 0 -#define MOOD_LEVEL_SAD1 -3 -#define MOOD_LEVEL_SAD2 -12 -#define MOOD_LEVEL_SAD3 -18 -#define MOOD_LEVEL_SAD4 -25 +// Moods levels for humans +#define MOOD_LEVEL_HAPPY4 15 +#define MOOD_LEVEL_HAPPY3 10 +#define MOOD_LEVEL_HAPPY2 6 +#define MOOD_LEVEL_HAPPY1 2 +#define MOOD_LEVEL_NEUTRAL 0 +#define MOOD_LEVEL_SAD1 -3 +#define MOOD_LEVEL_SAD2 -12 +#define MOOD_LEVEL_SAD3 -18 +#define MOOD_LEVEL_SAD4 -25 -//Sanity levels for humans -#define SANITY_AMAZING 150 -#define SANITY_GREAT 125 -#define SANITY_NEUTRAL 100 +// Sanity levels for humans +#define SANITY_AMAZING 150 +#define SANITY_GREAT 125 +#define SANITY_NEUTRAL 100 #define SANITY_DISTURBED 75 -#define SANITY_UNSTABLE 50 -#define SANITY_CRAZY 25 -#define SANITY_INSANE 0 +#define SANITY_UNSTABLE 50 +#define SANITY_CRAZY 25 +#define SANITY_INSANE 0 -//Nutrition levels for humans -#define NUTRITION_LEVEL_FAT 600 -#define NUTRITION_LEVEL_FULL 550 +// Nutrition levels for humans +#define NUTRITION_LEVEL_FAT 600 +#define NUTRITION_LEVEL_FULL 550 #define NUTRITION_LEVEL_WELL_FED 450 -#define NUTRITION_LEVEL_FED 350 -#define NUTRITION_LEVEL_HUNGRY 250 +#define NUTRITION_LEVEL_FED 350 +#define NUTRITION_LEVEL_HUNGRY 250 #define NUTRITION_LEVEL_STARVING 150 #define NUTRITION_LEVEL_START_MIN 250 #define NUTRITION_LEVEL_START_MAX 400 -//Disgust levels for humans -#define DISGUST_LEVEL_MAXEDOUT 150 -#define DISGUST_LEVEL_DISGUSTED 75 -#define DISGUST_LEVEL_VERYGROSS 50 -#define DISGUST_LEVEL_GROSS 25 +// Disgust levels for humans +#define DISGUST_LEVEL_MAXEDOUT 150 +#define DISGUST_LEVEL_DISGUSTED 75 +#define DISGUST_LEVEL_VERYGROSS 50 +#define DISGUST_LEVEL_GROSS 25 -//Charge levels for Ethereals -#define ETHEREAL_CHARGE_NONE 0 -#define ETHEREAL_CHARGE_LOWPOWER 20 -#define ETHEREAL_CHARGE_NORMAL 50 +// Charge levels for Ethereals +#define ETHEREAL_CHARGE_NONE 0 +#define ETHEREAL_CHARGE_LOWPOWER 20 +#define ETHEREAL_CHARGE_NORMAL 50 #define ETHEREAL_CHARGE_ALMOSTFULL 75 -#define ETHEREAL_CHARGE_FULL 100 -#define ETHEREAL_CHARGE_OVERLOAD 125 +#define ETHEREAL_CHARGE_FULL 100 +#define ETHEREAL_CHARGE_OVERLOAD 125 #define ETHEREAL_CHARGE_DANGEROUS 150 -//Slime evolution threshold. Controls how fast slimes can split/grow +// Slime evolution threshold. Controls how fast slimes can split/grow #define SLIME_EVOLUTION_THRESHOLD 10 -//Slime extract crossing. Controls how many extracts is required to feed to a slime to core-cross. +// Slime extract crossing. Controls how many extracts is required to feed to a slime to core-cross. #define SLIME_EXTRACT_CROSSING_REQUIRED 10 -//Slime commands defines -#define SLIME_FRIENDSHIP_FOLLOW 3 //Min friendship to order it to follow -#define SLIME_FRIENDSHIP_STOPEAT 5 //Min friendship to order it to stop eating someone -#define SLIME_FRIENDSHIP_STOPEAT_NOANGRY 7 //Min friendship to order it to stop eating someone without it losing friendship -#define SLIME_FRIENDSHIP_STOPCHASE 4 //Min friendship to order it to stop chasing someone (their target) -#define SLIME_FRIENDSHIP_STOPCHASE_NOANGRY 6 //Min friendship to order it to stop chasing someone (their target) without it losing friendship -#define SLIME_FRIENDSHIP_STAY 3 //Min friendship to order it to stay -#define SLIME_FRIENDSHIP_ATTACK 8 //Min friendship to order it to attack +// Slime commands defines +#define SLIME_FRIENDSHIP_FOLLOW 3 // Min friendship to order it to follow +#define SLIME_FRIENDSHIP_STOPEAT 5 // Min friendship to order it to stop eating someone +#define SLIME_FRIENDSHIP_STOPEAT_NOANGRY 7 // Min friendship to order it to stop eating someone without it losing friendship +#define SLIME_FRIENDSHIP_STOPCHASE 4 // Min friendship to order it to stop chasing someone (their target) +#define SLIME_FRIENDSHIP_STOPCHASE_NOANGRY 6 // Min friendship to order it to stop chasing someone (their target) without it losing friendship +#define SLIME_FRIENDSHIP_STAY 3 // Min friendship to order it to stay +#define SLIME_FRIENDSHIP_ATTACK 8 // Min friendship to order it to attack -//Sentience types, to prevent things like sentience potions from giving bosses sentience -#define SENTIENCE_ORGANIC 1 +// Sentience types, to prevent things like sentience potions from giving bosses sentience +#define SENTIENCE_ORGANIC 1 #define SENTIENCE_ARTIFICIAL 2 -// #define SENTIENCE_OTHER 3 unused -#define SENTIENCE_MINEBOT 4 -#define SENTIENCE_BOSS 5 +//#define SENTIENCE_OTHER 3 // Unused +#define SENTIENCE_MINEBOT 4 +#define SENTIENCE_BOSS 5 -//Mob AI Status +// Mob AI Status -//Hostile simple animals -//If you add a new status, be sure to add a list for it to the simple_animals global in _globalvars/lists/mobs.dm +// Hostile simple animals +// If you add a new status, be sure to add a list for it to the simple_animals global in _globalvars/lists/mobs.dm #define AI_ON 1 #define AI_IDLE 2 #define AI_OFF 3 #define AI_Z_OFF 4 -//determines if a mob can smash through it -#define ENVIRONMENT_SMASH_NONE 0 -#define ENVIRONMENT_SMASH_STRUCTURES (1<<0) //crates, lockers, ect -#define ENVIRONMENT_SMASH_WALLS (1<<1) //walls -#define ENVIRONMENT_SMASH_RWALLS (1<<2) //rwalls +// determines if a mob can smash through it +#define ENVIRONMENT_SMASH_NONE 0 +#define ENVIRONMENT_SMASH_STRUCTURES (1<<0) // crates, lockers, ect +#define ENVIRONMENT_SMASH_WALLS (1<<1) // walls +#define ENVIRONMENT_SMASH_RWALLS (1<<2) // rwalls -#define NO_SLIP_WHEN_WALKING (1<<0) -#define SLIDE (1<<1) -#define GALOSHES_DONT_HELP (1<<2) -#define FLYING_DOESNT_HELP (1<<3) -#define SLIDE_ICE (1<<4) -#define SLIP_WHEN_CRAWLING (1<<5) //clown planet ruin amongst others -#define SLIP_WHEN_JOGGING (1<<6) //slips prevented by walking are also dodged if the mob is nor sprinting or fatigued... unless this flag is on. +#define NO_SLIP_WHEN_WALKING (1<<0) +#define SLIDE (1<<1) +#define GALOSHES_DONT_HELP (1<<2) +#define FLYING_DOESNT_HELP (1<<3) +#define SLIDE_ICE (1<<4) +#define SLIP_WHEN_CRAWLING (1<<5) // clown planet ruin amongst others +#define SLIP_WHEN_JOGGING (1<<6) // slips prevented by walking are also dodged if the mob is nor sprinting or fatigued... unless this flag is on. #define MAX_CHICKENS 50 -///Flags used by the flags parameter of electrocute act. +// /Flags used by the flags parameter of electrocute act. -///Makes it so that the shock doesn't take gloves into account. -#define SHOCK_NOGLOVES (1 << 0) -///Used when the shock is from a tesla bolt. -#define SHOCK_TESLA (1 << 1) -///Used when an illusion shocks something. Makes the shock deal stamina damage and not trigger certain secondary effects. -#define SHOCK_ILLUSION (1 << 2) -///The shock doesn't stun. -#define SHOCK_NOSTUN (1 << 3) +// /Makes it so that the shock doesn't take gloves into account. +#define SHOCK_NOGLOVES (1 << 0) +// /Used when the shock is from a tesla bolt. +#define SHOCK_TESLA (1 << 1) +// /Used when an illusion shocks something. Makes the shock deal stamina damage and not trigger certain secondary effects. +#define SHOCK_ILLUSION (1 << 2) +// /The shock doesn't stun. +#define SHOCK_NOSTUN (1 << 3) -#define INCORPOREAL_MOVE_BASIC 1 -#define INCORPOREAL_MOVE_SHADOW 2 // leaves a trail of shadows -#define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt +#define INCORPOREAL_MOVE_BASIC 1 +#define INCORPOREAL_MOVE_SHADOW 2 // leaves a trail of shadows +#define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt -//Secbot and ED209 judgement criteria bitflag values +// Secbot and ED209 judgement criteria bitflag values #define JUDGE_EMAGGED (1<<0) #define JUDGE_IDCHECK (1<<1) #define JUDGE_WEAPONCHECK (1<<2) #define JUDGE_RECORDCHECK (1<<3) -//ED209's ignore monkeys +// ED209's ignore monkeys #define JUDGE_IGNOREMONKEYS (1<<4) #define MEGAFAUNA_DEFAULT_RECOVERY_TIME 5 @@ -262,45 +262,45 @@ // Offsets defines -#define OFFSET_UNIFORM "uniform" -#define OFFSET_ID "id" -#define OFFSET_GLOVES "gloves" -#define OFFSET_GLASSES "glasses" -#define OFFSET_EARS "ears" -#define OFFSET_SHOES "shoes" -#define OFFSET_S_STORE "s_store" -#define OFFSET_FACEMASK "mask" -#define OFFSET_HEAD "head" -#define OFFSET_EYES "eyes" -#define OFFSET_LIPS "lips" -#define OFFSET_BELT "belt" -#define OFFSET_BACK "back" -#define OFFSET_SUIT "suit" -#define OFFSET_NECK "neck" -#define OFFSET_HAIR "hair" -#define OFFSET_FHAIR "fhair" -#define OFFSET_MUTPARTS "mutantparts" +#define OFFSET_UNIFORM "uniform" +#define OFFSET_ID "id" +#define OFFSET_GLOVES "gloves" +#define OFFSET_GLASSES "glasses" +#define OFFSET_EARS "ears" +#define OFFSET_SHOES "shoes" +#define OFFSET_S_STORE "s_store" +#define OFFSET_FACEMASK "mask" +#define OFFSET_HEAD "head" +#define OFFSET_EYES "eyes" +#define OFFSET_LIPS "lips" +#define OFFSET_BELT "belt" +#define OFFSET_BACK "back" +#define OFFSET_SUIT "suit" +#define OFFSET_NECK "neck" +#define OFFSET_HAIR "hair" +#define OFFSET_FHAIR "fhair" +#define OFFSET_MUTPARTS "mutantparts" -//MINOR TWEAKS/MISC -#define AGE_MIN 18 //youngest a character can be //CITADEL EDIT - 17 --> 18 -#define AGE_MAX 85 //oldest a character can be -#define WIZARD_AGE_MIN 30 //youngest a wizard can be -#define APPRENTICE_AGE_MIN 29 //youngest an apprentice can be -#define SHOES_SLOWDOWN 0 //How much shoes slow you down by default. Negative values speed you up -#define SHOES_SPEED_SLIGHT SHOES_SLOWDOWN - 1 // slightest speed boost to movement -#define POCKET_STRIP_DELAY 40 //time taken (in deciseconds) to search somebody's pockets -#define DOOR_CRUSH_DAMAGE 15 //the amount of damage that airlocks deal when they crush you +// MINOR TWEAKS/MISC +#define AGE_MIN 18 // youngest a character can be // CITADEL EDIT - 17 --> 18 +#define AGE_MAX 85 // oldest a character can be +#define WIZARD_AGE_MIN 30 // youngest a wizard can be +#define APPRENTICE_AGE_MIN 29 // youngest an apprentice can be +#define SHOES_SLOWDOWN 0 // How much shoes slow you down by default. Negative values speed you up +#define SHOES_SPEED_SLIGHT SHOES_SLOWDOWN - 1 // slightest speed boost to movement +#define POCKET_STRIP_DELAY 40 // time taken (in deciseconds) to search somebody's pockets +#define DOOR_CRUSH_DAMAGE 15 // the amount of damage that airlocks deal when they crush you -#define HUNGER_FACTOR 0.1 //factor at which mob nutrition decreases -#define ETHEREAL_CHARGE_FACTOR 0.08 //factor at which ethereal's charge decreases -#define REAGENTS_METABOLISM 0.4 //How many units of reagent are consumed per tick, by default. +#define HUNGER_FACTOR 0.1 // factor at which mob nutrition decreases +#define ETHEREAL_CHARGE_FACTOR 0.08 // factor at which ethereal's charge decreases +#define REAGENTS_METABOLISM 0.4 // How many units of reagent are consumed per tick, by default. #define REAGENTS_EFFECT_MULTIPLIER (REAGENTS_METABOLISM / 0.4) // By defining the effect multiplier this way, it'll exactly adjust all effects according to how they originally were with the 0.4 metabolism // Roundstart trait system -#define MAX_QUIRKS 6 //The maximum amount of quirks one character can have at roundstart +#define MAX_QUIRKS 6 // The maximum amount of quirks one character can have at roundstart -#define MAX_REVIVE_FIRE_DAMAGE 180 +#define MAX_REVIVE_FIRE_DAMAGE 180 #define MAX_REVIVE_BRUTE_DAMAGE 180 // AI Toggles @@ -308,28 +308,28 @@ #define AI_VOX // Comment out if you don't want VOX to be enabled and have players download the voice sounds. // /obj/item/bodypart on_mob_life() retval flag -#define BODYPART_LIFE_UPDATE_HEALTH (1<<0) +#define BODYPART_LIFE_UPDATE_HEALTH (1<<0) #define HUMAN_FIRE_STACK_ICON_NUM 3 #define TYPING_INDICATOR_TIMEOUT 20 MINUTES -#define GRAB_PIXEL_SHIFT_PASSIVE 6 -#define GRAB_PIXEL_SHIFT_AGGRESSIVE 12 -#define GRAB_PIXEL_SHIFT_NECK 16 +#define GRAB_PIXEL_SHIFT_PASSIVE 6 +#define GRAB_PIXEL_SHIFT_AGGRESSIVE 12 +#define GRAB_PIXEL_SHIFT_NECK 16 #define SLEEP_CHECK_DEATH(X) sleep(X); if(QDELETED(src) || stat == DEAD) return; #define INTERACTING_WITH(X, Y) (Y in X.do_afters) -/// Field of vision defines. +// / Field of vision defines. #define FOV_90_DEGREES 90 #define FOV_180_DEGREES 180 #define FOV_270_DEGREES 270 -/// How far away you can be to make eye contact with someone while examining +// / How far away you can be to make eye contact with someone while examining #define EYE_CONTACT_RANGE 5 -/// If you examine the same atom twice in this timeframe, we call examine_more() instead of examine() +// / If you examine the same atom twice in this timeframe, we call examine_more() instead of examine() #define EXAMINE_MORE_TIME 1 SECONDS -#define SILENCE_RANGED_MESSAGE (1<<0) +#define SILENCE_RANGED_MESSAGE (1<<0) diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 84eed5483a..aef77e7b57 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -40,6 +40,16 @@ #define PARALLAX_LOW 2 #define PARALLAX_DISABLE 3 //this option must be the highest number +#define PIXEL_SCALING_AUTO 0 +#define PIXEL_SCALING_1X 1 +#define PIXEL_SCALING_1_2X 1.5 +#define PIXEL_SCALING_2X 2 +#define PIXEL_SCALING_3X 3 + +#define SCALING_METHOD_NORMAL "normal" +#define SCALING_METHOD_DISTORT "distort" +#define SCALING_METHOD_BLUR "blur" + #define PARALLAX_DELAY_DEFAULT world.tick_lag #define PARALLAX_DELAY_MED 1 #define PARALLAX_DELAY_LOW 2 diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm index 80983b34be..a188bf8363 100644 --- a/code/__DEFINES/shuttles.dm +++ b/code/__DEFINES/shuttles.dm @@ -31,6 +31,11 @@ #define EARLY_LAUNCHED 2 #define ENDGAME_TRANSIT 3 +//positive value = cannot puchase +#define SHUTTLEPURCHASE_PURCHASABLE 0 //station can buy a shuttle +#define SHUTTLEPURCHASE_PURCHASED 1 //station has already bought a shuttle, so cannot +#define SHUTTLEPURCHASE_FORCED 2 //station was given a new shuttle through events or other shenanigans + // Ripples, effects that signal a shuttle's arrival #define SHUTTLE_RIPPLE_TIME 100 diff --git a/code/__DEFINES/skills/defines.dm b/code/__DEFINES/skills/defines.dm index 47aaeeb1dc..a0b34895df 100644 --- a/code/__DEFINES/skills/defines.dm +++ b/code/__DEFINES/skills/defines.dm @@ -40,7 +40,6 @@ #define SKILL_TRAIN_ATTACK_OBJ "train_attack_obj" #define SKILL_STAMINA_COST "stamina_cost" //Influences the stamina cost from weapon usage. #define SKILL_THROW_STAM_COST "throw_stam_cost" -#define SKILL_COMBAT_MODE "combat_mode" //The user must have combat mode on. #define SKILL_SANITY "sanity" //Is the skill affected by (in)sanity. #define SKILL_INTELLIGENCE "intelligence" //Is the skill affected by brain damage? diff --git a/code/__DEFINES/species.dm b/code/__DEFINES/species.dm new file mode 100644 index 0000000000..c6cc6a5037 --- /dev/null +++ b/code/__DEFINES/species.dm @@ -0,0 +1,50 @@ + +// Species ID Defines --------------------------- + +#define SPECIES_ABDUCTOR "abductor" +#define SPECIES_ANDROID "android" +#define SPECIES_ANGEL "angel" +#define SPECIES_MAMMAL "mammal" +#define SPECIES_INSECT "insect" +#define SPECIES_DULLAHAN "dullahan" +#define SPECIES_DWARF "dwarf" +#define SPECIES_ETHEREAL "ethereal" +#define SPECIES_FELINID "felinid" +#define SPECIES_FLY "fly" +#define SPECIES_GOLEM "golem" +#define SPECIES_HUMAN "human" +#define SPECIES_IPC "ipc" +#define SPECIES_JELLY "jelly" + #define SPECIES_SLIME "slime" + #define SPECIES_SLIME_HYBRID "slimeperson" + #define SPECIES_SLIME_LUMI "slimelumi" + #define SPECIES_STARGAZER "stargazer" +#define SPECIES_LIZARD "lizard" + #define SPECIES_ASHWALKER "ashlizard" +#define SPECIES_MUSHROOM "mush" +#define SPECIES_PLASMAMAN "plasmaman" +#define SPECIES_POD "pod" + #define SPECIES_POD_WEAK "podweak" +#define SPECIES_SHADOW "shadow" + #define SPECIES_NIGHTMARE "nightmare" +#define SPECIES_SKELETON "skeleton" + #define SPECIES_SKELETON_SPACE "spaceskeleton" +#define SPECIES_SYNTH_LIZARD "synthliz" +#define SPECIES_SYNTH "synth" + #define SPECIES_SYNTH_MIL "military_synth" +#define SPECIES_VAMPIRE "vampire" +#define SPECIES_XENOHYBRID "xeno" + +// Species Category Defines --------------------- + +#define SPECIES_CATEGORY_ALIEN "alien" +#define SPECIES_CATEGORY_BASIC "human" +#define SPECIES_CATEGORY_FURRY "furry" // Weird Category, but okay. +#define SPECIES_CATEGORY_GOLEM "golem" +#define SPECIES_CATEGORY_INSECT "insect" +#define SPECIES_CATEGORY_PLANT "plant" +#define SPECIES_CATEGORY_ROBOT "robotic" +#define SPECIES_CATEGORY_JELLY "jelly" +#define SPECIES_CATEGORY_SHADOW "shadow" +#define SPECIES_CATEGORY_SKELETON "skeleton" +#define SPECIES_CATEGORY_UNDEAD "undead" diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 9deddd4b46..b405db83b0 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -124,6 +124,7 @@ #define FIRE_PRIORITY_ATMOS_ADJACENCY 300 #define FIRE_PRIORITY_STATPANEL 390 #define FIRE_PRIORITY_CHAT 400 +#define FIRE_PRIORITY_RUNECHAT 410 #define FIRE_PRIORITY_OVERLAYS 500 #define FIRE_PRIORITY_INPUT 1000 // This must always always be the max highest priority. Player input must never be lost. diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index f054f163b5..520f205381 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -164,6 +164,7 @@ #define TRAIT_NO_MIDROUND_ANTAG "no-midround-antag" //can't be turned into an antag by random events #define TRAIT_PUGILIST "pugilist" //This guy punches people for a living #define TRAIT_KI_VAMPIRE "ki-vampire" //when someone with this trait rolls maximum damage on a punch and stuns the target, they regain some stamina and do clone damage +#define TRAIT_MAULER "mauler" // this guy punches the shit out of people to hurt them, not to drain their stamina #define TRAIT_PASSTABLE "passtable" #define TRAIT_GIANT "giant" #define TRAIT_DWARF "dwarf" @@ -207,6 +208,10 @@ #define TRAIT_FAST_PUMP "fast_pump" #define TRAIT_NO_PROCESS_FOOD "no-process-food" // You don't get benefits from nutriment, nor nutrition from reagent consumables #define TRAIT_NICE_SHOT "nice_shot" //hnnnnnnnggggg..... you're pretty good... +/// Prevents stamina buffer regeneration +#define TRAIT_NO_STAMINA_BUFFER_REGENERATION "block_stamina_buffer_regen" +/// Prevents stamina regeneration +#define TRAIT_NO_STAMINA_REGENERATION "block_stamina_regen" // mobility flag traits // IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it) @@ -219,6 +224,8 @@ #define TRAIT_MOBILITY_NOPICKUP "mobility_nopickup" /// Disallow item use #define TRAIT_MOBILITY_NOUSE "mobility_nouse" +///Disallow resting/unresting +#define TRAIT_MOBILITY_NOREST "mobility_norest" #define TRAIT_SWIMMING "swimming" //only applied by /datum/element/swimming, for checking @@ -311,6 +318,7 @@ #define CLOWNOP_TRAIT "clown-op" #define MEGAFAUNA_TRAIT "megafauna" #define DEATHSQUAD_TRAIT "deathsquad" +#define SLIMEPUDDLE_TRAIT "slimepuddle" /// This trait is added by the active directional block system. #define ACTIVE_BLOCK_TRAIT "active_block" /// This trait is added by the parry system. diff --git a/code/__HELPERS/do_after.dm b/code/__HELPERS/do_after.dm index 30d40f3867..c65cd80394 100644 --- a/code/__HELPERS/do_after.dm +++ b/code/__HELPERS/do_after.dm @@ -38,11 +38,11 @@ return FALSE if((do_after_flags & DO_AFTER_REQUIRES_USER_ON_TURF) && !isturf(user.loc)) return FALSE + if(!(do_after_flags & DO_AFTER_NO_COEFFICIENT) && living_user) + delay *= living_user.cached_multiplicative_actions_slowdown var/starttime = world.time var/endtime = world.time + delay var/obj/item/initially_held_item = mob_redirect?.get_active_held_item() - if(!(do_after_flags & DO_AFTER_NO_COEFFICIENT) && living_user) - delay *= living_user.do_after_coefficent() var/atom/movable/AM_user = ismovable(user) && user var/drifting = AM_user?.Process_Spacemove(NONE) && AM_user.inertia_dir var/initial_dx = targetturf.x - userturf.x @@ -245,7 +245,7 @@ if(holding) holdingnull = 0 //Users hand started holding something, check to see if it's still holding that - delay *= user.do_after_coefficent() + delay *= user.cached_multiplicative_actions_slowdown var/datum/progressbar/progbar if (progress) @@ -300,10 +300,6 @@ LAZYREMOVE(user.do_afters, target) LAZYREMOVE(target.targeted_by, user) -/mob/proc/do_after_coefficent() // This gets added to the delay on a do_after, default 1 - . = 1 - return - /proc/do_after_mob(mob/user, var/list/targets, time = 30, uninterruptible = 0, progress = 1, datum/callback/extra_checks) if(!user || !targets) return 0 @@ -326,6 +322,8 @@ if(progress) progbar = new(user, time, targets[1]) + time *= user.cached_multiplicative_actions_slowdown + var/endtime = world.time + time var/starttime = world.time . = 1 diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 4723577fad..90864cf359 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -1186,6 +1186,8 @@ GLOBAL_DATUM_INIT(dummySave, /savefile, new("tmp/dummySave.sav")) //Cache of ico SSassets.transport.register_asset(key, I) for (var/thing2 in targets) SSassets.transport.send_assets(thing2, key) + if(sourceonly) + return SSassets.transport.get_asset_url(key) return "" diff --git a/code/__HELPERS/radiation.dm b/code/__HELPERS/radiation.dm index 1570eededb..d527d0ac51 100644 --- a/code/__HELPERS/radiation.dm +++ b/code/__HELPERS/radiation.dm @@ -12,15 +12,17 @@ )) var/list/processing_list = list(location) . = list() - while(processing_list.len) - var/atom/thing = processing_list[1] - processing_list -= thing + var/i = 0 + var/lim = 1 + while(i < lim) + var/atom/thing = processing_list[++i] if(ignored_things[thing.type]) continue . += thing if((thing.rad_flags & RAD_PROTECT_CONTENTS) || (SEND_SIGNAL(thing, COMSIG_ATOM_RAD_PROBE) & COMPONENT_BLOCK_RADIATION)) continue processing_list += thing.contents + lim = processing_list.len /proc/radiation_pulse(atom/source, intensity, range_modifier, log=FALSE, can_contaminate=TRUE) if(!SSradiation.can_fire) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 92bd726641..794a495ae3 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -457,21 +457,23 @@ Turf and target are separate in case you want to teleport some distance from a t /atom/proc/GetAllContents(var/T) var/list/processing_list = list(src) + var/i = 0 + var/lim = 1 if(T) . = list() - var/i = 0 - while(i < length(processing_list)) + while(i < lim) var/atom/A = processing_list[++i] //Byond does not allow things to be in multiple contents, or double parent-child hierarchies, so only += is needed //This is also why we don't need to check against assembled as we go along processing_list += A.contents + lim = processing_list.len if(istype(A,T)) . += A else - var/i = 0 - while(i < length(processing_list)) + while(i < lim) var/atom/A = processing_list[++i] processing_list += A.contents + lim = processing_list.len return processing_list /atom/proc/GetAllContentsIgnoring(list/ignore_typecache) @@ -480,10 +482,12 @@ Turf and target are separate in case you want to teleport some distance from a t var/list/processing = list(src) . = list() var/i = 0 - while(i < length(processing)) + var/lim = 1 + while(i < lim) var/atom/A = processing[++i] if(!ignore_typecache[A.type]) processing += A.contents + lim = processing.len . += A diff --git a/code/__HELPERS/view.dm b/code/__HELPERS/view.dm index 48e68be20f..1c92971802 100644 --- a/code/__HELPERS/view.dm +++ b/code/__HELPERS/view.dm @@ -2,7 +2,7 @@ var/viewX var/viewY if(isnum(view)) - var/totalviewrange = 1 + 2 * view + var/totalviewrange = (view < 0 ? -1 : 1) + 2 * view viewX = totalviewrange viewY = totalviewrange else diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 85f5e4fd9b..b558b28cf2 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -252,7 +252,6 @@ GLOBAL_LIST_INIT(bitfields, list( "COMBAT_FLAG_SPRINT_ACTIVE" = COMBAT_FLAG_SPRINT_ACTIVE, "COMBAT_FLAG_ATTEMPTING_CRAWL" = COMBAT_FLAG_ATTEMPTING_CRAWL, "COMBAT_FLAG_HARD_STAMCRIT" = COMBAT_FLAG_HARD_STAMCRIT, - "COMBAT_FLAG_SOFT_STAMCRIT" = COMBAT_FLAG_SOFT_STAMCRIT, "COMBAT_FLAG_INTENTIONALLY_RESTING" = COMBAT_FLAG_INTENTIONALLY_RESTING, "COMBAT_FLAG_RESISTING_REST" = COMBAT_FLAG_RESISTING_REST, "COMBAT_FLAG_SPRINT_FORCED" = COMBAT_FLAG_SPRINT_FORCED diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 717a0b1dbf..0444e42e91 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -273,20 +273,62 @@ GLOBAL_LIST_INIT(redacted_strings, list("\[REDACTED\]", "\[CLASSIFIED\]", "\[ARC GLOBAL_LIST_INIT(wisdoms, world.file2list("strings/wisdoms.txt")) +//LANGUAGE CHARACTER CUSTOMIZATION GLOBAL_LIST_INIT(speech_verbs, list("default","says","gibbers", "states", "chitters", "chimpers", "declares", "bellows", "buzzes" ,"beeps", "chirps", "clicks", "hisses" ,"poofs" , "puffs", "rattles", "mewls" ,"barks", "blorbles", "squeaks", "squawks", "flutters", "warbles")) - GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/organ/tongue, "lizard tongue" = /obj/item/organ/tongue/lizard, "skeleton tongue" = /obj/item/organ/tongue/bone, "fly tongue" = /obj/item/organ/tongue/fly, "ipc tongue" = /obj/item/organ/tongue/robot/ipc)) +//SPECIES BODYPART LISTS //locked parts are those that your picked species requires to have //unlocked parts are those that anyone can choose on customisation regardless //parts not in unlocked, but in all, are thus locked GLOBAL_LIST_INIT(all_mutant_parts, list("tail_lizard" = "Tail", "mam_tail" = "Tail", "tail_human" = "Tail", "snout" = "Snout", "frills" = "Frills", "spines" = "Spines", "body_markings" = "Body Markings", "mam_body_markings" = "Species Markings" , "mam_ears" = "Ears", "ears" = "Ears", "mam_snouts" = "Snout", "legs" = "Legs", "deco_wings" = "Decorative Wings", "insect_wings" = "Insect Wings", "insect_fluff" = "Insect Fluff", "taur" = "Tauric Body", "insect_markings" = "Insect Markings", "wings" = "Wings", "arachnid_legs" = "Arachnid Legs", "arachnid_spinneret" = "Spinneret", "arachnid_mandibles" = "Mandibles", "xenohead" = "Caste Head", "xenotail" = "Tail", "xenodorsal" = "Dorsal Spines", "ipc_screen" = "Screen", "ipc_antenna" = "Antenna", "meat_type" = "Meat Type", "horns" = "Horns")) GLOBAL_LIST_INIT(unlocked_mutant_parts, list("horns", "insect_fluff")) + //parts in either of the above two lists that require a second option that allows them to be coloured GLOBAL_LIST_INIT(colored_mutant_parts, list("insect_wings" = "wings_color", "deco_wings" = "wings_color", "horns" = "horns_color")) //body ids that have greyscale sprites -GLOBAL_LIST_INIT(greyscale_limb_types, list("human","moth","lizard","pod","plant","jelly","slime","golem","lum","stargazer","mush","ethereal","snail","c_golem","b_golem","mammal","xeno","ipc","insect","synthliz","avian","aquatic")) +GLOBAL_LIST_INIT(greyscale_limb_types, list("human","moth","lizard","pod","plant","jelly","slime","golem","slimelumi","stargazer","mush","ethereal","snail","c_golem","b_golem","mammal","xeno","ipc","insect","synthliz","avian","aquatic")) //body ids that have prosthetic sprites GLOBAL_LIST_INIT(prosthetic_limb_types, list("xion","bishop","cybersolutions","grayson","hephaestus","nanotrasen","talon")) + +//FAMILY HEIRLOOM LIST +//this works by using the first number for the species as a probability to choose one of the items in the following list for their family heirloom +//if the probability fails, or the species simply isn't in the list, then it defaults to the next global list, which has its own list of items for each job +//the first item in the list is for if your job isn't in that list + +//species-heirloom list (we categorise them by the species id var) +GLOBAL_LIST_INIT(species_heirlooms, list( + "dwarf" = list(25, list(/obj/item/reagent_containers/food/drinks/dwarf_mug)), //example: 25% chance for dwarves to get a dwarf mug as their heirloom (normal container but has manly dorf icon) + "insect" = list(25, list(/obj/item/flashlight/lantern/heirloom_moth)), + "ipc" = list(25, list(/obj/item/stock_parts/cell/family)), //gives a broken powercell for flavor text! + "synthliz" = list(25, list(/obj/item/stock_parts/cell/family)), //they're also robots + "slimeperson" = list(25, list(/obj/item/toy/plush/slimeplushie)), + "lizard" = list(25, list(/obj/item/toy/plush/lizardplushie)), + )) + +//job-heirloom list +GLOBAL_LIST_INIT(job_heirlooms, list( + "NO_JOB" = list(/obj/item/toy/cards/deck, /obj/item/lighter, /obj/item/dice/d20), + "Clown" = list(/obj/item/paint/anycolor, /obj/item/bikehorn/golden), + "Mime" = list(/obj/item/paint/anycolor, /obj/item/toy/dummy), + "Cook" = list(/obj/item/kitchen/knife/scimitar), + "Botanist" = list(/obj/item/cultivator, /obj/item/reagent_containers/glass/bucket, /obj/item/storage/bag/plants, /obj/item/toy/plush/beeplushie), + "Medical Doctor" = list(/obj/item/healthanalyzer), + "Paramedic" = list(/obj/item/lighter), //..why? + "Station Engineer" = list(/obj/item/wirecutters/brass/family, /obj/item/crowbar/brass/family, /obj/item/screwdriver/brass/family, /obj/item/wrench/brass/family), //brass tools but without the tool speed modifier + "Atmospheric Technician" = list(/obj/item/extinguisher/mini/family), + "Lawyer" = list(/obj/item/storage/briefcase/lawyer/family), + "Janitor" = list(/obj/item/mop), + "Scientist" = list(/obj/item/toy/plush/slimeplushie), + "Assistant" = list(/obj/item/clothing/gloves/cut/family), + "Chaplain" = list(/obj/item/camera/spooky/family), + "Head of Personnel" = list(/obj/item/pinpointer/ian) + )) + +//body ids that have non-gendered bodyparts +GLOBAL_LIST_INIT(nongendered_limb_types, list("fly", "zombie" ,"synth", "shadow", "cultgolem", "agent", "plasmaman", "clockgolem", "clothgolem")) + +//list of eye types, corresponding to a respective left and right icon state for the set of eyes +GLOBAL_LIST_INIT(eye_types, list("normal", "insect", "moth", "double", "double2", "double3", "cyclops")) diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 134f9d9cbe..64bac1f9af 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -40,6 +40,7 @@ GLOBAL_LIST_EMPTY(sentient_disease_instances) GLOBAL_LIST_EMPTY(latejoin_ai_cores) GLOBAL_LIST_EMPTY(mob_config_movespeed_type_lookup) +GLOBAL_LIST_EMPTY(mob_config_movespeed_type_lookup_floating) GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traitor-target purposes. @@ -47,14 +48,22 @@ GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traito // NOTE: This is entirely based on the fact that byond typesof/subtypesof gets longer/deeper paths before shallower ones. // If that ever breaks this entire proc breaks. var/list/mob_types = typesof(/mob) - var/list/entry_value = CONFIG_GET(keyed_list/multiplicative_movespeed) + var/list/mob_types_floating = typesof(/mob) + var/list/entry_value = CONFIG_GET(keyed_list/multiplicative_movespeed/normal) + var/list/entry_value_floating = CONFIG_GET(keyed_list/multiplicative_movespeed/floating) var/list/configured_types = list() + var/list/configured_types_floating = list() for(var/path in entry_value) var/value = entry_value[path] if(isnull(value)) continue // associative list sets for elements that already exist preserve order mob_types[path] = value + for(var/path in entry_value_floating) + var/value = entry_value_floating[path] + if(isnull(value)) + continue + mob_types_floating[path] = value // now go back up through it to set everything, making absolute sure that base paths are overridden by child paths all the way down the path tree. for(var/i in length(mob_types) to 1 step -1) var/path = mob_types[i] @@ -63,7 +72,14 @@ GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traito // we're going from bottom to top so it should be safe to do this without further checks.. for(var/subpath in typesof(path)) configured_types[subpath] = mob_types[path] + for(var/i in length(mob_types_floating) to 1 step -1) + var/path = mob_types_floating[i] + if(isnull(mob_types_floating[path])) + continue + for(var/subpath in typesof(path)) + configured_types_floating[subpath] = mob_types_floating[path] GLOB.mob_config_movespeed_type_lookup = configured_types + GLOB.mob_config_movespeed_type_lookup_floating = configured_types_floating if(update_mobs) update_mob_config_movespeeds() diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 706a5ed955..9abc37c7e4 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -43,5 +43,4 @@ GLOBAL_LIST_EMPTY(ai_status_displays) GLOBAL_LIST_EMPTY(mob_spawners) // All mob_spawn objects GLOBAL_LIST_EMPTY(alert_consoles) // Station alert consoles, /obj/machinery/computer/station_alert -//list of everyone playing rock paper scissors -GLOBAL_LIST_EMPTY(rockpaperscissors_players) +GLOBAL_LIST_EMPTY(rockpaperscissors_players) // List of everyone playing rock paper scissors diff --git a/code/_onclick/hud/map_popups.dm b/code/_onclick/hud/map_popups.dm index 777ebb0718..2ecfe80ab5 100644 --- a/code/_onclick/hud/map_popups.dm +++ b/code/_onclick/hud/map_popups.dm @@ -1,30 +1,11 @@ -/client - /** - * Assoc list with all the active maps - when a screen obj is added to - * a map, it's put in here as well. - * - * Format: list( = list(/obj/screen)) - */ - var/list/screen_maps = list() - /** * A screen object, which acts as a container for turfs and other things * you want to show on the map, which you usually attach to "vis_contents". */ -/obj/screen - /** - * Map name assigned to this object. - * Automatically set by /client/proc/add_obj_to_map. - */ - var/assigned_map - /** - * Mark this object as garbage-collectible after you clean the map - * it was registered on. - * - * This could probably be changed to be a proc, for conditional removal. - * But for now, this works. - */ - var/del_on_map_removal = TRUE +/obj/screen/map_view + // Map view has to be on the lowest plane to enable proper lighting + layer = GAME_PLANE + plane = GAME_PLANE /** * A generic background object. diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index 1ead41d513..929e01c6d9 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -318,4 +318,4 @@ GLOBAL_LIST_EMPTY(radial_menus) if(istype(custom_check)) if(!custom_check.Invoke()) return - return answer \ No newline at end of file + return answer diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 126cc18907..2ed8c81ba2 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -15,6 +15,19 @@ appearance_flags = APPEARANCE_UI var/obj/master = null //A reference to the object in the slot. Grabs or items, generally. var/datum/hud/hud = null // A reference to the owner HUD, if any. + /** + * Map name assigned to this object. + * Automatically set by /client/proc/add_obj_to_map. + */ + var/assigned_map + /** + * Mark this object as garbage-collectible after you clean the map + * it was registered on. + * + * This could probably be changed to be a proc, for conditional removal. + * But for now, this works. + */ + var/del_on_map_removal = TRUE /obj/screen/take_damage() return diff --git a/code/_onclick/hud/screen_objects/stamina.dm b/code/_onclick/hud/screen_objects/stamina.dm index 5484014f8f..98a387d32d 100644 --- a/code/_onclick/hud/screen_objects/stamina.dm +++ b/code/_onclick/hud/screen_objects/stamina.dm @@ -11,7 +11,9 @@ /obj/screen/staminas/Click(location,control,params) if(isliving(usr)) var/mob/living/L = usr - to_chat(L, "You have [L.getStaminaLoss()] stamina loss.
Your stamina buffer can take [L.stambuffer] stamina loss, and recharges at no cost.
Your stamina buffer is [(L.stambuffer*(100/L.stambuffer))-(L.bufferedstam*(100/L.stambuffer))]% full.
") + CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/buffer_max, buffer_max) + to_chat(L, "You have [L.getStaminaLoss()] stamina loss.
\ +
Your stamina buffer is [round((L.stamina_buffer / buffer_max) * 100, 0.1)]% full.
") /obj/screen/staminas/update_icon_state() var/mob/living/carbon/user = hud?.mymob @@ -24,6 +26,19 @@ else icon_state = "stamina[clamp(FLOOR(user.getStaminaLoss() /20, 1), 0, 6)]" +/obj/screen/staminas/update_overlays() + . = ..() + var/mob/living/carbon/user = hud?.mymob + if(!user) + return + var/percent = user.getStaminaLoss() / STAMINA_CRIT + if((user.stat == DEAD) || (user.combat_flags & COMBAT_FLAG_HARD_STAMCRIT) || (user.hal_screwyhud in 1 to 2)) + . += list("stamina_alert3") + else if(percent >= 0.85) + . += list("stamina_alert2") + else if(percent >= 0.7) + . += list("stamina_alert1") + //stam buffer /obj/screen/staminabuffer icon = 'modular_citadel/icons/ui/screen_gen.dmi' @@ -33,29 +48,33 @@ layer = ABOVE_HUD_LAYER + 0.1 mouse_opacity = 0 -/obj/screen/staminabuffer/update_icon_state() +/obj/screen/staminabuffer/proc/mark_dirty() + if(update_to_mob()) + START_PROCESSING(SShuds, src) + +/obj/screen/staminabuffer/process() + if(!update_to_mob()) + return PROCESS_KILL + +/obj/screen/staminabuffer/Destroy() + STOP_PROCESSING(SShuds, src) + return ..() + +/obj/screen/staminabuffer/proc/update_to_mob() var/mob/living/carbon/user = hud?.mymob - if(!user) - return + user.UpdateStaminaBuffer(FALSE) + CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/buffer_max, buffer_max) + if(!user?.client) + return FALSE if(user.stat == DEAD || (user.combat_flags & COMBAT_FLAG_HARD_STAMCRIT) || (user.hal_screwyhud in 1 to 2)) - icon_state = "stambuffer7" - else if(user.hal_screwyhud == 5) icon_state = "stambuffer0" + return FALSE + else if(user.hal_screwyhud == 5) + icon_state = "stambuffer29" + return FALSE + else if(user.stamina_buffer >= buffer_max) + icon_state = "stambuffer29" + return FALSE else - switch(user.bufferedstam / user.stambuffer) - if(0.95 to INFINITY) - icon_state = "stambuffer7" - if(0.9 to 0.95) - icon_state = "stambuffer6" - if(0.8 to 0.9) - icon_state = "stambuffer5" - if(0.6 to 0.8) - icon_state = "stambuffer4" - if(0.4 to 0.6) - icon_state = "stambuffer3" - if(0.2 to 0.4) - icon_state = "stambuffer2" - if(0.05 to 0.2) - icon_state = "stambuffer1" - else - icon_state = "stambuffer0" + icon_state = "stambuffer[FLOOR((user.stamina_buffer / buffer_max) * 29, 1)]" + return TRUE diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 9e88476513..cd1ee56848 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -85,6 +85,9 @@ if(force && damtype != STAMINA && HAS_TRAIT(user, TRAIT_PACIFISM)) to_chat(user, "You don't want to harm other living beings!") return + + if(!UseStaminaBufferStandard(user, STAM_COST_ATTACK_MOB_MULT, null, TRUE)) + return DISCARD_LAST_ACTION if(!force) playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1) @@ -100,10 +103,6 @@ log_combat(user, M, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") add_fingerprint(user) - var/weight = getweight(user, STAM_COST_ATTACK_MOB_MULT) //CIT CHANGE - makes attacking things cause stamina loss - if(weight) - user.adjustStaminaLossBuffered(weight) - // CIT SCREENSHAKE if(force >= 15) shake_camera(user, ((force - 10) * 0.01 + 1), ((force - 10) * 0.01)) @@ -120,31 +119,21 @@ if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_OBJ, O, user) & COMPONENT_NO_ATTACK_OBJ) return if(item_flags & NOBLUDGEON) - return + return DISCARD_LAST_ACTION + if(!UseStaminaBufferStandard(user, STAM_COST_ATTACK_OBJ_MULT, warn = TRUE)) + return DISCARD_LAST_ACTION user.do_attack_animation(O) O.attacked_by(src, user) - var/weight = getweight(user, STAM_COST_ATTACK_OBJ_MULT) - if(weight) - user.adjustStaminaLossBuffered(weight)//CIT CHANGE - makes attacking things cause stamina loss /atom/movable/proc/attacked_by() return /obj/attacked_by(obj/item/I, mob/living/user, attackchain_flags = NONE, damage_multiplier = 1) var/totitemdamage = I.force * damage_multiplier - var/bad_trait - - var/stamloss = user.getStaminaLoss() - if(stamloss > STAMINA_NEAR_SOFTCRIT) //The more tired you are, the less damage you do. - var/penalty = (stamloss - STAMINA_NEAR_SOFTCRIT)/(STAMINA_NEAR_CRIT - STAMINA_NEAR_SOFTCRIT)*STAM_CRIT_ITEM_ATTACK_PENALTY - totitemdamage *= 1 - penalty - - if(SEND_SIGNAL(user, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_INACTIVE)) - bad_trait = SKILL_COMBAT_MODE //blacklist combat skills. if(I.used_skills && user.mind) if(totitemdamage) - totitemdamage = user.mind.item_action_skills_mod(I, totitemdamage, I.skill_difficulty, SKILL_ATTACK_OBJ, bad_trait) + totitemdamage = user.mind.item_action_skills_mod(I, totitemdamage, I.skill_difficulty, SKILL_ATTACK_OBJ) for(var/skill in I.used_skills) if(!(SKILL_TRAIN_ATTACK_OBJ in I.used_skills[skill])) continue @@ -187,28 +176,15 @@ if(!.) return - var/stamloss = user.getStaminaLoss() var/stam_mobility_mult = 1 - if(stamloss > STAMINA_NEAR_SOFTCRIT) //The more tired you are, the less damage you do. - var/penalty = (stamloss - STAMINA_NEAR_SOFTCRIT)/(STAMINA_NEAR_CRIT - STAMINA_NEAR_SOFTCRIT)*STAM_CRIT_ITEM_ATTACK_PENALTY - stam_mobility_mult -= penalty if(stam_mobility_mult > LYING_DAMAGE_PENALTY && !CHECK_MOBILITY(user, MOBILITY_STAND)) //damage penalty for fighting prone, doesn't stack with the above. stam_mobility_mult = LYING_DAMAGE_PENALTY . *= stam_mobility_mult - var/bad_trait - if(!(I.item_flags & NO_COMBAT_MODE_FORCE_MODIFIER)) - if(SEND_SIGNAL(user, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_INACTIVE)) - bad_trait = SKILL_COMBAT_MODE //blacklist combat skills. - if(SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE)) - . *= 0.8 - else if(SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_INACTIVE)) - . *= 1.2 - if(!user.mind || !I.used_skills) return if(.) - . = user.mind.item_action_skills_mod(I, ., I.skill_difficulty, SKILL_ATTACK_MOB, bad_trait) + . = user.mind.item_action_skills_mod(I, ., I.skill_difficulty, SKILL_ATTACK_MOB) for(var/skill in I.used_skills) if(!(SKILL_TRAIN_ATTACK_MOB in I.used_skills[skill])) continue @@ -263,21 +239,23 @@ . = (total_mass || w_class * STAM_COST_W_CLASS_MULT) * multiplier if(!user) return - var/bad_trait - if(SEND_SIGNAL(user, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_INACTIVE)) - . *= STAM_COST_NO_COMBAT_MULT - bad_trait = SKILL_COMBAT_MODE if(used_skills && user.mind) - . = user.mind.item_action_skills_mod(src, ., skill_difficulty, trait, bad_trait, FALSE) - var/total_health = user.getStaminaLoss() - . = clamp(., 0, STAMINA_NEAR_CRIT - total_health) + . = user.mind.item_action_skills_mod(src, ., skill_difficulty, trait, null, FALSE) + +/** + * Uses the amount of stamina required for a standard hit + */ +/obj/item/proc/UseStaminaBufferStandard(mob/living/user, multiplier = 1, trait = SKILL_STAMINA_COST, warn = TRUE) + ASSERT(user) + var/cost = getweight(user, multiplier, trait) + return user.UseStaminaBuffer(cost, warn) /// How long this staggers for. 0 and negatives supported. /obj/item/proc/melee_stagger_duration(force_override) if(!isnull(stagger_force)) return stagger_force /// totally not an untested, arbitrary equation. - return clamp((1.5 + (w_class/7.5)) * ((force_override || force) / 2), 0, 10 SECONDS) + return clamp((1.5 + (w_class/5)) * ((force_override || force) / 1.5), 0, 10 SECONDS) /obj/item/proc/do_stagger_action(mob/living/target, mob/living/user, force_override) if(!CHECK_BITFIELD(target.status_flags, CANSTAGGER)) diff --git a/code/controllers/admin.dm b/code/controllers/admin.dm index 28803f0979..3782d8be94 100644 --- a/code/controllers/admin.dm +++ b/code/controllers/admin.dm @@ -3,7 +3,9 @@ name = "Initializing..." var/target -/obj/effect/statclick/New(loc, text, target) //Don't port this to Initialize it's too critical +INITIALIZE_IMMEDIATE(/obj/effect/statclick) //it's new, but rebranded. + +/obj/effect/statclick/Initialize(mapload, text, target) //Don't port this to Initialize it's too critical . = ..() name = text src.target = target diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 8f55293820..c91ac2e0d4 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -230,14 +230,6 @@ /datum/config_entry/keyed_list/multiplicative_movespeed key_mode = KEY_MODE_TYPE value_mode = VALUE_MODE_NUM - config_entry_value = list( //DEFAULTS - /mob/living/simple_animal = 1, - /mob/living/silicon/pai = 1, - /mob/living/carbon/alien/humanoid/sentinel = 0.25, - /mob/living/carbon/alien/humanoid/drone = 0.5, - /mob/living/carbon/alien/humanoid/royal/praetorian = 1, - /mob/living/carbon/alien/humanoid/royal/queen = 3 - ) /datum/config_entry/keyed_list/multiplicative_movespeed/ValidateAndSet() . = ..() @@ -249,6 +241,24 @@ if(. && (var_name == NAMEOF(src, config_entry_value))) update_config_movespeed_type_lookup(TRUE) +/datum/config_entry/keyed_list/multiplicative_movespeed/normal + config_entry_value = list( //DEFAULTS + /mob/living/simple_animal = 1, + /mob/living/silicon/pai = 1, + /mob/living/carbon/alien/humanoid/sentinel = 0.25, + /mob/living/carbon/alien/humanoid/drone = 0.5, + /mob/living/carbon/alien/humanoid/royal/praetorian = 1, + /mob/living/carbon/alien/humanoid/royal/queen = 3 + ) + +/datum/config_entry/keyed_list/multiplicative_movespeed/floating + config_entry_value = list( + /mob/living = 0, + /mob/living/carbon/alien/humanoid = 0, + /mob/living/carbon/alien/humanoid/royal/praetorian = 0, + /mob/living/carbon/alien/humanoid/royal/queen = 2 + ) + /datum/config_entry/number/movedelay //Used for modifying movement speed for mobs. abstract_type = /datum/config_entry/number/movedelay integer = FALSE @@ -280,6 +290,12 @@ /datum/config_entry/number/movedelay/sprint_speed_increase config_entry_value = 1 +/datum/config_entry/number/movedelay/sprint_max_tiles_increase + config_entry_value = 5 + +/datum/config_entry/number/movedelay/sprint_absolute_max_tiles + config_entry_value = 13 + /datum/config_entry/number/movedelay/sprint_buffer_max config_entry_value = 24 @@ -291,7 +307,7 @@ /////////////////////////////////////////////////Outdated move delay /datum/config_entry/number/outdated_movedelay - deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed + deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed/normal abstract_type = /datum/config_entry/number/outdated_movedelay var/movedelay_type diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index 273ac7fd3e..b3e00af458 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -468,6 +468,9 @@ /datum/config_entry/string/default_view config_entry_value = "15x15" +/datum/config_entry/string/default_view_square + config_entry_value = "15x15" + /datum/config_entry/flag/log_pictures /datum/config_entry/flag/picture_logging_camera diff --git a/code/controllers/configuration/entries/stamina_combat.dm b/code/controllers/configuration/entries/stamina_combat.dm new file mode 100644 index 0000000000..65580899f1 --- /dev/null +++ b/code/controllers/configuration/entries/stamina_combat.dm @@ -0,0 +1,35 @@ +/datum/config_entry/number/stamina_combat + integer = FALSE + abstract_type = /datum/config_entry/number/stamina_combat + +/// Maximum stamina buffer +/datum/config_entry/number/stamina_combat/buffer_max + config_entry_value = 25 + +/// Seconds until percent_regeneration_out_of_combat kicks in +/datum/config_entry/number/stamina_combat/out_of_combat_timer + config_entry_value = 15 + +/// Base regeneration per second +/datum/config_entry/number/stamina_combat/base_regeneration + config_entry_value = 0.5 + +/// Combat mode regeneration per second +/datum/config_entry/number/stamina_combat/combat_regeneration + config_entry_value = 5 + +/// After out_of_combat_timer elapses, additionally regenerate this percent of total stamina per second. Unaffected by combat mode. +/datum/config_entry/number/stamina_combat/percent_regeneration_out_of_combat + config_entry_value = 30 + +/// Seconds after an action for which your regeneration is penalized +/datum/config_entry/number/stamina_combat/post_action_penalty_delay + config_entry_value = 5 + +/// Factor to multiply by for penalizing post-action-stamina-regen +/datum/config_entry/number/stamina_combat/post_action_penalty_factor + config_entry_value = 0.25 + +/// Factor to multiply by for stamina usage past buffer into health +/datum/config_entry/number/stamina_combat/overdraw_penalty_factor + config_entry_value = 1.5 diff --git a/code/controllers/failsafe.dm b/code/controllers/failsafe.dm index 148822cdd1..22f047a297 100644 --- a/code/controllers/failsafe.dm +++ b/code/controllers/failsafe.dm @@ -1,4 +1,4 @@ - /** +/** * Failsafe * * Pretty much pokes the MC to make sure it's still alive. @@ -31,7 +31,7 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe) Initialize() /datum/controller/failsafe/Initialize() - set waitfor = 0 + set waitfor = FALSE Failsafe.Loop() if(!QDELETED(src)) qdel(src) //when Loop() returns, we delete ourselves and let the mc recreate us @@ -97,4 +97,4 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe) /datum/controller/failsafe/stat_entry(msg) msg = "Defcon: [defcon_pretty()] (Interval: [Failsafe.processing_interval] | Iteration: [Failsafe.master_iteration])" - return msg + return msg \ No newline at end of file diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm index 6b5fb294ea..21f022acfd 100644 --- a/code/controllers/globals.dm +++ b/code/controllers/globals.dm @@ -20,8 +20,9 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) Initialize() -/datum/controller/global_vars/Destroy() - //fuck off kevinz +/datum/controller/global_vars/Destroy(force) + // This is done to prevent an exploit where admins can get around protected vars + SHOULD_CALL_PARENT(FALSE) return QDEL_HINT_IWILLGC /datum/controller/global_vars/stat_entry(msg) diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index bb8ce951f5..e49da32557 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -97,9 +97,9 @@ return //This is used so the mc knows when the subsystem sleeps. do not override. -/datum/controller/subsystem/proc/ignite(resumed = 0) +/datum/controller/subsystem/proc/ignite(resumed = FALSE) SHOULD_NOT_OVERRIDE(TRUE) - set waitfor = 0 + set waitfor = FALSE . = SS_SLEEPING fire(resumed) . = state diff --git a/code/controllers/subsystem/dcs.dm b/code/controllers/subsystem/dcs.dm index 3243a8d8c8..6be5a4bdfa 100644 --- a/code/controllers/subsystem/dcs.dm +++ b/code/controllers/subsystem/dcs.dm @@ -1,6 +1,7 @@ PROCESSING_SUBSYSTEM_DEF(dcs) name = "Datum Component System" flags = SS_NO_INIT + wait = 1 SECONDS var/list/elements_by_type = list() diff --git a/code/controllers/subsystem/economy.dm b/code/controllers/subsystem/economy.dm index 078d122aa6..47b00d1125 100644 --- a/code/controllers/subsystem/economy.dm +++ b/code/controllers/subsystem/economy.dm @@ -60,9 +60,9 @@ SUBSYSTEM_DEF(economy) secmedsrv_payout() // Payout based on crew safety, health, and mood. civ_payout() // Payout based on ??? Profit car_payout() // Cargo's natural gain in the cash moneys. - for(var/A in bank_accounts) - var/datum/bank_account/B = A - B.payday(1) + for(var/account in bank_accounts) + var/datum/bank_account/bank_account = account + bank_account.payday(1) /datum/controller/subsystem/economy/proc/get_dep_account(dep_id) diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index 2e4e728191..9bc8a631c1 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -100,7 +100,7 @@ SUBSYSTEM_DEF(events) // REEEEEEEEE /client/proc/forceEvent() set name = "Trigger Event" - set category = "Fun" + set category = "Admin.Events" if(!holder ||!check_rights(R_FUN)) return diff --git a/code/controllers/subsystem/input.dm b/code/controllers/subsystem/input.dm index 32936af9e9..bc3f6cf51b 100644 --- a/code/controllers/subsystem/input.dm +++ b/code/controllers/subsystem/input.dm @@ -64,10 +64,10 @@ SUBSYSTEM_DEF(input) // Misc macroset_classic_input["Tab"] = "\".winset \\\"mainwindow.macro=[SKIN_MACROSET_CLASSIC_HOTKEYS] map.focus=true input.background-color=[COLOR_INPUT_DISABLED]\\\"\"" macroset_classic_input["Escape"] = "\".winset \\\"input.text=\\\"\\\"\\\"\"" - + // FINALLY, WE CAN DO SOMETHING MORE NORMAL FOR THE SNOWFLAKE-BUT-LESS KEYSET. - - // HAHA - SIKE. Because of BYOND weirdness (tl;dr not specifically binding this way results in potentially duplicate chatboxes when + + // HAHA - SIKE. Because of BYOND weirdness (tl;dr not specifically binding this way results in potentially duplicate chatboxes when // conflicts occur with something like say indicator vs say), we're going to snowflake this anyways var/list/hard_binds = list( "O" = "ooc", @@ -80,7 +80,7 @@ SUBSYSTEM_DEF(input) for(var/key in hard_binds) for(var/modifier in anti_collision_modifiers) hard_bind_anti_collision["[modifier]+[key]"] = ".NONSENSICAL_VERB_THAT_DOES_NOTHING" - + macroset_classic_hotkey = list( "Any" = "\"KeyDown \[\[*\]\]\"", "Any+UP" = "\"KeyUp \[\[*\]\]\"", @@ -88,7 +88,7 @@ SUBSYSTEM_DEF(input) "Escape" = "\".winset \\\"input.text=\\\"\\\"\\\"\"", "Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"", ) - + macroset_classic_hotkey |= hard_binds macroset_classic_hotkey |= hard_bind_anti_collision @@ -100,7 +100,7 @@ SUBSYSTEM_DEF(input) "Escape" = "\".winset \\\"input.text=\\\"\\\"\\\"\"", "Back" = "\".winset \\\"input.text=\\\"\\\"\\\"\"", ) - + macroset_hotkey |= hard_binds macroset_hotkey |= hard_bind_anti_collision diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 4f59992ace..0f936bdeff 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -55,9 +55,10 @@ SUBSYSTEM_DEF(job) continue if(!job.config_check()) continue - if(!job.map_check()) //Even though we initialize before mapping, this is fine because the config is loaded at new + if(!job.map_check(SSmapping.config)) //Even though we initialize before mapping, this is fine because the config is loaded at new testing("Removed [job.type] due to map config"); continue + job.process_map_overrides(SSmapping.config) occupations += job name_occupations[job.title] = job type_occupations[J] = job @@ -665,7 +666,7 @@ SUBSYSTEM_DEF(job) message_admins(msg) CRASH(msg) -/datum/controller/subsystem/job/proc/equip_loadout(mob/dead/new_player/N, mob/living/M, equipbackpackstuff, bypass_prereqs = FALSE) +/datum/controller/subsystem/job/proc/equip_loadout(mob/dead/new_player/N, mob/living/M, equipbackpackstuff, bypass_prereqs = FALSE, can_drop = TRUE) var/mob/the_mob = N if(!the_mob) the_mob = M // cause this doesn't get assigned if player is a latejoiner @@ -694,9 +695,15 @@ SUBSYSTEM_DEF(job) var/mob/living/carbon/C = M var/obj/item/storage/backpack/B = C.back if(!B || !SEND_SIGNAL(B, COMSIG_TRY_STORAGE_INSERT, I, null, TRUE, TRUE)) // Otherwise, try to put it in the backpack, for carbons. - I.forceMove(get_turf(C)) + if(can_drop) + I.forceMove(get_turf(C)) + else + qdel(I) else if(!M.equip_to_slot_if_possible(I, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // Otherwise, try to put it in the backpack - I.forceMove(get_turf(M)) // If everything fails, just put it on the floor under the mob. + if(can_drop) + I.forceMove(get_turf(M)) // If everything fails, just put it on the floor under the mob. + else + qdel(I) /datum/controller/subsystem/job/proc/FreeRole(rank) if(!rank) diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 617004646a..2ea3b29c91 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -447,7 +447,7 @@ GLOBAL_LIST_EMPTY(the_station_areas) //Manual loading of away missions. /client/proc/admin_away() set name = "Load Away Mission / Virtual Reality" - set category = "Fun" + set category = "Admin.Events" if(!holder ||!check_rights(R_FUN)) return diff --git a/code/controllers/subsystem/minimum_spawns.dm b/code/controllers/subsystem/minimum_spawns.dm new file mode 100644 index 0000000000..caab2b1949 --- /dev/null +++ b/code/controllers/subsystem/minimum_spawns.dm @@ -0,0 +1,144 @@ +SUBSYSTEM_DEF(min_spawns) + name = "Minimum Spawns" /// this hot steaming pile of garbage makes sure theres a minimum of tendrils scattered around + init_order = INIT_ORDER_DEFAULT + flags = SS_BACKGROUND | SS_NO_FIRE | SS_ALWAYS_SHOW_STAT + wait = 2 + var/where_we_droppin_boys_iterations = 0 + var/snaxi_snowflake_check = FALSE + var/list/active_spawns = list() // lavaland, snaxi, etc. primary spawn list + var/list/active_spawns_2 = list() // snaxi underground, etc. secondary spawn list + var/list/valid_mining_turfs = list() // lavaland/snaxi turfs + var/list/valid_mining_turfs_2 = list() // snaxi underground turfs + +GLOBAL_LIST_INIT(minimum_lavaland_spawns, list( + /obj/structure/spawner/lavaland, + /obj/structure/spawner/lavaland/goliath, + /obj/structure/spawner/lavaland/legion, + /mob/living/simple_animal/hostile/megafauna/dragon, + /mob/living/simple_animal/hostile/megafauna/colossus, + /mob/living/simple_animal/hostile/megafauna/bubblegum +)) + +GLOBAL_LIST_INIT(minimum_snow_surface_spawns, list( + /obj/structure/spawner/ice_moon, + /obj/structure/spawner/ice_moon/polarbear +)) +GLOBAL_LIST_INIT(minimum_snow_under_spawns, list( + /obj/structure/spawner/ice_moon/demonic_portal, + /obj/structure/spawner/ice_moon/demonic_portal/ice_whelp, + /obj/structure/spawner/ice_moon/demonic_portal/snowlegion +)) + +// step 1: check for which list(s) to use - done +// step 2: check for caves - done +// step 3: check for mobs - done +// step 4: start throwing shit down - done +// step 5: snaxi support - done? + +/datum/controller/subsystem/min_spawns/Initialize(start_timeofday) + var/list/snaxi_zs_list = SSmapping.levels_by_trait(ZTRAIT_ICE_RUINS) // boy if these things arent mutually exclusive + var/list/lavaland_zs_list = SSmapping.levels_by_trait(ZTRAIT_LAVA_RUINS) // i'm gonna fuckin scream + if(snaxi_zs_list.len) + active_spawns = GLOB.minimum_snow_surface_spawns + active_spawns_2 = GLOB.minimum_snow_under_spawns + snaxi_snowflake_check = TRUE + else if(lavaland_zs_list.len) //todo: recognizing maps that aren't lavaland mining but are also not snaxi + active_spawns = GLOB.minimum_lavaland_spawns + else + return ..() // call it a day i guess + // borrowing this from auxbase code - see code\modules\mining\aux_base.dm + if(snaxi_snowflake_check) + for(var/z_level in SSmapping.levels_by_trait(ZTRAIT_ICE_RUINS)) + for(var/turf/TT in Z_TURFS(z_level)) + if(!isarea(TT.loc)) + continue + var/area/A = TT.loc + if(!A.mob_spawn_allowed) + continue + if(!istype(TT, /turf/open/floor/plating/asteroid)) + continue + if(typesof(/turf/open/lava) in orange(9, TT)) + continue + valid_mining_turfs.Add(TT) + for(var/z_level in SSmapping.levels_by_trait(ZTRAIT_ICE_RUINS_UNDERGROUND)) + for(var/turf/TT in Z_TURFS(z_level)) + if(!isarea(TT.loc)) + continue + var/area/A = TT.loc + if(!A.mob_spawn_allowed) + continue + if(!istype(TT, /turf/open/floor/plating/asteroid)) + continue + if(typesof(/turf/open/lava) in orange(9, TT)) + continue + valid_mining_turfs_2.Add(TT) + else + for(var/z_level in SSmapping.levels_by_trait(ZTRAIT_LAVA_RUINS)) + for(var/turf/TT in Z_TURFS(z_level)) + if(!isarea(TT.loc)) + continue + var/area/A = TT.loc + if(!A.mob_spawn_allowed) + continue + if(!istype(TT, /turf/open/floor/plating/asteroid)) + continue + if(typesof(/turf/open/lava) in orange(9, TT)) + continue + valid_mining_turfs.Add(TT) + if(!valid_mining_turfs.len) + return ..() // call it a day i guess + // if we're at this point we might as well fucking hit it + where_we_droppin_boys() + return ..() + +/datum/controller/subsystem/min_spawns/proc/where_we_droppin_boys() + while(active_spawns.len) + where_we_droppin_boys_iterations++ + CHECK_TICK + if(where_we_droppin_boys_iterations >= 1250) + INIT_ANNOUNCE("Minimum Spawns subsystem stopped early on spawns list 1 - too many iterations!") + break + var/turf/RT = pick_n_take(valid_mining_turfs) //Pick a random mining Z-level turf + var/MS_tospawn = pick_n_take(active_spawns) + for(var/mob/living/simple_animal/hostile/megafauna/H in urange(70,RT)) //prevents mob clumps + if((istype(MS_tospawn, /mob/living/simple_animal/hostile/megafauna)) && get_dist(RT, H) <= 70) + active_spawns.Add(MS_tospawn) + continue //let's try not to dump megas too close to each other? + if((istype(MS_tospawn, /obj/structure/spawner)) && get_dist(RT, H) <= 40) + active_spawns.Add(MS_tospawn) + continue //let's at least /try/ to space these out? + for(var/obj/structure/spawner/LT in urange(70,RT)) //prevents tendril/mega clumps + if((istype(MS_tospawn, /mob/living/simple_animal/hostile/megafauna)) && get_dist(RT, LT) <= 70) + active_spawns.Add(MS_tospawn) + continue //let's try not to dump megas too close to each other? + if((istype(MS_tospawn, /obj/structure/spawner)) && get_dist(RT, LT) <= 40) + active_spawns.Add(MS_tospawn) + continue //let's at least /try/ to space these out? + // man the overhead on this is gonna SUCK + new MS_tospawn(RT) + while(active_spawns_2.len) + where_we_droppin_boys_iterations++ + CHECK_TICK + if(where_we_droppin_boys_iterations >= 1250) + INIT_ANNOUNCE("Minimum Spawns subsystem stopped early on active list 2 - too many iterations!") + break + var/turf/RT2 = pick_n_take(valid_mining_turfs_2) //Pick a random mining Z-level turf + var/MS2_tospawn = pick_n_take(active_spawns_2) + for(var/mob/living/simple_animal/hostile/H in urange(70,RT2)) //prevents mob clumps + if((istype(MS2_tospawn, /mob/living/simple_animal/hostile/megafauna) || ismegafauna(H)) && get_dist(RT2, H) <= 70) + active_spawns_2.Add(MS2_tospawn) + continue //let's try not to dump megas too close to each other? + if((istype(MS2_tospawn, /obj/structure/spawner)) && get_dist(RT2, H) <= 40) + active_spawns_2.Add(MS2_tospawn) + continue //let's at least /try/ to space these out? + for(var/obj/structure/spawner/LT in urange(70,RT2)) //prevents tendril/mega clumps + if((istype(MS2_tospawn, /mob/living/simple_animal/hostile/megafauna)) && get_dist(RT2, LT) <= 70) + active_spawns_2.Add(MS2_tospawn) + continue //let's try not to dump megas too close to each other? + if((istype(MS2_tospawn, /obj/structure/spawner)) && get_dist(RT2, LT) <= 40) + active_spawns_2.Add(MS2_tospawn) + continue //let's at least /try/ to space these out? + // man the overhead on this is gonna SUCK + new MS2_tospawn(RT2) + if(!active_spawns.len && !active_spawns_2.len) + return // we're done here diff --git a/code/controllers/subsystem/npcpool.dm b/code/controllers/subsystem/npcpool.dm index c67deaede1..c20820c092 100644 --- a/code/controllers/subsystem/npcpool.dm +++ b/code/controllers/subsystem/npcpool.dm @@ -5,6 +5,10 @@ SUBSYSTEM_DEF(npcpool) runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME var/list/currentrun = list() + /// catches sleeping + var/invoking = FALSE + /// Invoke start time + var/invoke_start = 0 /datum/controller/subsystem/npcpool/stat_entry(msg) var/list/activelist = GLOB.simple_animals[AI_ON] @@ -12,7 +16,6 @@ SUBSYSTEM_DEF(npcpool) return ..() /datum/controller/subsystem/npcpool/fire(resumed = FALSE) - if (!resumed) var/list/activelist = GLOB.simple_animals[AI_ON] src.currentrun = activelist.Copy() @@ -24,12 +27,22 @@ SUBSYSTEM_DEF(npcpool) var/mob/living/simple_animal/SA = currentrun[currentrun.len] --currentrun.len - if(!SA.ckey && !SA.mob_transforming) - if(SA.stat != DEAD) - SA.handle_automated_movement() - if(SA.stat != DEAD) - SA.handle_automated_action() - if(SA.stat != DEAD) - SA.handle_automated_speech() + invoking = TRUE + invoke_start = world.time + INVOKE_ASYNC(src, .proc/invoke_process, SA) + if(invoking) + stack_trace("WARNING: [SA] ([SA.type]) slept during NPCPool processing.") + invoking = FALSE + if (MC_TICK_CHECK) return + +/datum/controller/subsystem/npcpool/proc/invoke_process(mob/living/simple_animal/SA) + if(!SA.ckey && !SA.mob_transforming) + if(SA.stat != DEAD) + SA.handle_automated_movement() + if(SA.stat != DEAD) + SA.handle_automated_action() + if(SA.stat != DEAD) + SA.handle_automated_speech() + invoking = FALSE diff --git a/code/controllers/subsystem/runechat.dm b/code/controllers/subsystem/runechat.dm new file mode 100644 index 0000000000..ec296e7d32 --- /dev/null +++ b/code/controllers/subsystem/runechat.dm @@ -0,0 +1,238 @@ +/// Controls how many buckets should be kept, each representing a tick. (30 seconds worth) +#define BUCKET_LEN (world.fps * 1 * 30) +/// Helper for getting the correct bucket for a given chatmessage +#define BUCKET_POS(scheduled_destruction) (((round((scheduled_destruction - SSrunechat.head_offset) / world.tick_lag) + 1) % BUCKET_LEN) || BUCKET_LEN) +/// Gets the maximum time at which messages will be handled in buckets, used for deferring to secondary queue +#define BUCKET_LIMIT (world.time + TICKS2DS(min(BUCKET_LEN - (SSrunechat.practical_offset - DS2TICKS(world.time - SSrunechat.head_offset)) - 1, BUCKET_LEN - 1))) + +/** + * # Runechat Subsystem + * + * Maintains a timer-like system to handle destruction of runechat messages. Much of this code is modeled + * after or adapted from the timer subsystem. + * + * Note that this has the same structure for storing and queueing messages as the timer subsystem does + * for handling timers: the bucket_list is a list of chatmessage datums, each of which are the head + * of a circularly linked list. Any given index in bucket_list could be null, representing an empty bucket. + */ +SUBSYSTEM_DEF(runechat) + name = "Runechat" + flags = SS_TICKER | SS_NO_INIT + wait = 1 + priority = FIRE_PRIORITY_RUNECHAT + + /// world.time of the first entry in the bucket list, effectively the 'start time' of the current buckets + var/head_offset = 0 + /// Index of the first non-empty bucket + var/practical_offset = 1 + /// world.tick_lag the bucket was designed for + var/bucket_resolution = 0 + /// How many messages are in the buckets + var/bucket_count = 0 + /// List of buckets, each bucket holds every message that has to be killed that byond tick + var/list/bucket_list = list() + /// Queue used for storing messages that are scheduled for deletion too far in the future for the buckets + var/list/datum/chatmessage/second_queue = list() + +/datum/controller/subsystem/runechat/PreInit() + bucket_list.len = BUCKET_LEN + head_offset = world.time + bucket_resolution = world.tick_lag + +/datum/controller/subsystem/runechat/stat_entry(msg) + msg = "ActMsgs:[bucket_count] SecQueue:[length(second_queue)]" + return msg + +/datum/controller/subsystem/runechat/fire(resumed = FALSE) + // Store local references to datum vars as it is faster to access them this way + var/list/bucket_list = src.bucket_list + + if (MC_TICK_CHECK) + return + + + // Check for when we need to loop the buckets, this occurs when + // the head_offset is approaching BUCKET_LEN ticks in the past + if (practical_offset > BUCKET_LEN) + head_offset += TICKS2DS(BUCKET_LEN) + practical_offset = 1 + resumed = FALSE + + // Check for when we have to reset buckets, typically from auto-reset + if ((length(bucket_list) != BUCKET_LEN) || (world.tick_lag != bucket_resolution)) + reset_buckets() + bucket_list = src.bucket_list + resumed = FALSE + // Store a reference to the 'working' chatmessage so that we can resume if the MC + // has us stop mid-way through processing + var/static/datum/chatmessage/cm + if (!resumed) + cm = null + + // Iterate through each bucket starting from the practical offset + while (practical_offset <= BUCKET_LEN && head_offset + ((practical_offset - 1) * world.tick_lag) <= world.time) + var/datum/chatmessage/bucket_head = bucket_list[practical_offset] + if (!cm || !bucket_head || cm == bucket_head) + bucket_head = bucket_list[practical_offset] + cm = bucket_head + + while (cm) + // If the chatmessage hasn't yet had its life ended then do that now + var/datum/chatmessage/next = cm.next + if (!cm.eol_complete) + cm.end_of_life() + else if (!QDELETED(cm)) // otherwise if we haven't deleted it yet, do so (this is after EOL completion) + qdel(cm) + + if (MC_TICK_CHECK) + return + + // Break once we've processed the entire bucket + cm = next + if (cm == bucket_head) + break + + // Empty the bucket, check if anything in the secondary queue should be shifted to this bucket + bucket_list[practical_offset++] = null + var/i = 0 + for (i in 1 to length(second_queue)) + cm = second_queue[i] + if (cm.scheduled_destruction >= BUCKET_LIMIT) + i-- + break + + // Transfer the message into the bucket, performing necessary circular doubly-linked list operations + bucket_count++ + var/bucket_pos = max(1, BUCKET_POS(cm.scheduled_destruction)) + var/datum/timedevent/head = bucket_list[bucket_pos] + if (!head) + bucket_list[bucket_pos] = cm + cm.next = null + cm.prev = null + continue + + if (!head.prev) + head.prev = head + cm.next = head + cm.prev = head.prev + cm.next.prev = cm + cm.prev.next = cm + if (i) + second_queue.Cut(1, i + 1) + cm = null + +/datum/controller/subsystem/runechat/Recover() + bucket_list |= SSrunechat.bucket_list + second_queue |= SSrunechat.second_queue + +/datum/controller/subsystem/runechat/proc/reset_buckets() + bucket_list.len = BUCKET_LEN + head_offset = world.time + bucket_resolution = world.tick_lag + +/** + * Enters the runechat subsystem with this chatmessage, inserting it into the end-of-life queue + * + * This will also account for a chatmessage already being registered, and in which case + * the position will be updated to remove it from the previous location if necessary + * + * Arguments: + * * new_sched_destruction Optional, when provided is used to update an existing message with the new specified time + */ +/datum/chatmessage/proc/enter_subsystem(new_sched_destruction = 0) + // Get local references from subsystem as they are faster to access than the datum references + var/list/bucket_list = SSrunechat.bucket_list + var/list/second_queue = SSrunechat.second_queue + + // When necessary, de-list the chatmessage from its previous position + if (new_sched_destruction) + if (scheduled_destruction >= BUCKET_LIMIT) + second_queue -= src + else + SSrunechat.bucket_count-- + var/bucket_pos = BUCKET_POS(scheduled_destruction) + if (bucket_pos > 0) + var/datum/chatmessage/bucket_head = bucket_list[bucket_pos] + if (bucket_head == src) + bucket_list[bucket_pos] = next + if (prev != next) + prev.next = next + next.prev = prev + else + prev?.next = null + next?.prev = null + prev = next = null + scheduled_destruction = new_sched_destruction + + // Ensure the scheduled destruction time is properly bound to avoid missing a scheduled event + scheduled_destruction = max(CEILING(scheduled_destruction, world.tick_lag), world.time + world.tick_lag) + + // Handle insertion into the secondary queue if the required time is outside our tracked amounts + if (scheduled_destruction >= BUCKET_LIMIT) + BINARY_INSERT(src, SSrunechat.second_queue, datum/chatmessage, src, scheduled_destruction, COMPARE_KEY) + return + + // Get bucket position and a local reference to the datum var, it's faster to access this way + var/bucket_pos = BUCKET_POS(scheduled_destruction) + + // Get the bucket head for that bucket, increment the bucket count + var/datum/chatmessage/bucket_head = bucket_list[bucket_pos] + SSrunechat.bucket_count++ + + // If there is no existing head of this bucket, we can set this message to be that head + if (!bucket_head) + bucket_list[bucket_pos] = src + return + + // Otherwise it's a simple insertion into the circularly doubly-linked list + if (!bucket_head.prev) + bucket_head.prev = bucket_head + next = bucket_head + prev = bucket_head.prev + next.prev = src + prev.next = src + + +/** + * Removes this chatmessage datum from the runechat subsystem + */ +/datum/chatmessage/proc/leave_subsystem() + // Attempt to find the bucket that contains this chat message + var/bucket_pos = BUCKET_POS(scheduled_destruction) + + // Get local references to the subsystem's vars, faster than accessing on the datum + var/list/bucket_list = SSrunechat.bucket_list + var/list/second_queue = SSrunechat.second_queue + + // Attempt to get the head of the bucket + var/datum/chatmessage/bucket_head + if (bucket_pos > 0) + bucket_head = bucket_list[bucket_pos] + + // Decrement the number of messages in buckets if the message is + // the head of the bucket, or has a SD less than BUCKET_LIMIT implying it fits + // into an existing bucket, or is otherwise not present in the secondary queue + if(bucket_head == src) + bucket_list[bucket_pos] = next + SSrunechat.bucket_count-- + else if(scheduled_destruction < BUCKET_LIMIT) + SSrunechat.bucket_count-- + else + var/l = length(second_queue) + second_queue -= src + if(l == length(second_queue)) + SSrunechat.bucket_count-- + + // Remove the message from the bucket, ensuring to maintain + // the integrity of the bucket's list if relevant + if(prev != next) + prev.next = next + next.prev = prev + else + prev?.next = null + next?.prev = null + prev = next = null + +#undef BUCKET_LEN +#undef BUCKET_POS +#undef BUCKET_LIMIT diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index c802448536..b74f1d46d3 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -47,7 +47,7 @@ SUBSYSTEM_DEF(shuttle) var/datum/round_event/shuttle_loan/shuttle_loan - var/shuttle_purchased = FALSE //If the station has purchased a replacement escape shuttle this round + var/shuttle_purchased = SHUTTLEPURCHASE_PURCHASABLE //If the station has purchased a replacement escape shuttle this round var/list/shuttle_purchase_requirements_met = list() //For keeping track of ingame events that would unlock new shuttles, such as defeating a boss or discovering a secret item var/lockdown = FALSE //disallow transit after nuke goes off diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm index cf7d4ba533..161fd92f77 100644 --- a/code/controllers/subsystem/statpanel.dm +++ b/code/controllers/subsystem/statpanel.dm @@ -27,28 +27,6 @@ SUBSYSTEM_DEF(statpanels) var/ETA = SSshuttle.emergency.getModeStr() if(ETA) global_data += "[ETA] [SSshuttle.emergency.getTimerStr()]" -/* Please fix - if(SSvote.mode) - var/static/list/supported = list(PLURALITY_VOTING, APPROVAL_VOTING) - global_data += "Vote active!, There is currently a vote running. Question: [SSvote.question]" - if(!(SSvote.vote_system in supported)) - global_data += ", The current vote system is not supported by statpanel rendering. Please vote manually by opening the vote popup using the action button or chat link." - return - global_data += "Time Left:, [round(SSvote.end_time - world.time)] seconds" - - global_data += "Choices:" - for(var/i in 1 to SSvote.choice_statclicks.len) - var/choice = SSvote.choice_statclicks[i] - var/ivotedforthis = FALSE - if(usr.ckey) - switch(SSvote.vote_system) - if(APPROVAL_VOTING) - ivotedforthis = SSvote.voted[usr.ckey] && (i in SSvote.voted[usr.ckey]) - if(PLURALITY_VOTING) - ivotedforthis = SSvote.voted[usr.ckey] == i - - global_data += (ivotedforthis? "\[X\]" : "\[ \]", SSvote.choice_statclicks[choice]) -*/ encoded_global_data = url_encode(json_encode(global_data)) src.currentrun = GLOB.clients.Copy() @@ -63,6 +41,31 @@ SUBSYSTEM_DEF(statpanels) var/ping_str = url_encode("Ping: [round(target.lastping, 1)]ms (Average: [round(target.avgping, 1)]ms)") var/other_str = url_encode(json_encode(target.mob.get_status_tab_items())) target << output("[encoded_global_data];[ping_str];[other_str]", "statbrowser:update") + if(SSvote.mode) + var/list/vote_arry = list( + list("Vote active!", "There is currently a vote running. Question: [SSvote.question]") + ) //see the MC on how this works. + if(!(SSvote.vote_system in list(PLURALITY_VOTING, APPROVAL_VOTING))) + vote_arry[++vote_arry.len] += list("STATPANEL VOTING DISABLED!", "The current vote system is not supported by statpanel rendering. Please vote manually by opening the vote popup using the action button or chat link.", "disabled") + //does not return. + else + vote_arry[++vote_arry.len] += list("Time Left:", " [round(SSvote.end_time - world.time)] seconds") + vote_arry[++vote_arry.len] += list("Choices:", "") + for(var/choice in SSvote.choice_statclicks) + var/choice_id = SSvote.choice_statclicks[choice] + var/ivotedforthis = FALSE + if(target.ckey) + switch(SSvote.vote_system) + if(APPROVAL_VOTING) + ivotedforthis = SSvote.voted[target.ckey] && (text2num(choice_id) in SSvote.voted[usr.ckey]) + if(PLURALITY_VOTING) + ivotedforthis = (SSvote.voted[target.ckey] == text2num(choice_id)) + vote_arry[++vote_arry.len] += list(ivotedforthis ? "\[X\]" : "\[ \]", choice, "[REF(SSvote)];vote=[choice_id];statpannel=1") + var/vote_str = url_encode(json_encode(vote_arry)) + target << output("[vote_str]", "statbrowser:update_voting") + else + var/null_bullet = url_encode(json_encode(list(list(null)))) + target << output("[null_bullet]", "statbrowser:update_voting") if(!target.holder) target << output("", "statbrowser:remove_admin_tabs") else diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index a93aff7d2b..06b76718c1 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -16,6 +16,7 @@ SUBSYSTEM_DEF(vote) var/question = null var/list/choices = list() /// List of choice = object for statclick objects for statpanel voting + /// statclick rework? 2: list("name"="id") var/list/choice_statclicks = list() var/list/scores = list() var/list/choice_descs = list() // optional descriptions @@ -49,34 +50,6 @@ SUBSYSTEM_DEF(vote) client_popup.open(0) next_pop = world.time+VOTE_COOLDOWN -/** - * Renders a statpanel. Directly uses statpanel/stat calls since this is called from base of mob/Stat(). - */ -/datum/controller/subsystem/vote/proc/render_statpanel(mob/M) - if(!mode) // check if vote is running - return - if(!statpanel("Status")) // don't bother if they're not focused on this panel - return - var/static/list/supported = list(PLURALITY_VOTING, APPROVAL_VOTING) - stat("Vote active!", "There is currently a vote running. Question: [question]") - if(!(vote_system in supported)) - stat("", "The current vote system is not supported by statpanel rendering. Please vote manually by opening the vote popup using the action button or chat link.") - return - stat("Time Left:", "[round(end_time - world.time)] seconds") - stat(null, null) - stat("Choices:", null) - stat(null, null) - for(var/i in 1 to choice_statclicks.len) - var/choice = choice_statclicks[i] - var/ivotedforthis = FALSE - switch(vote_system) - if(APPROVAL_VOTING) - ivotedforthis = voted[usr.ckey] && (i in voted[usr.ckey]) - if(PLURALITY_VOTING) - ivotedforthis = voted[usr.ckey] == i - stat(ivotedforthis? "\[X\]" : "\[ \]", choice_statclicks[choice]) - stat(null, null) - /datum/controller/subsystem/vote/proc/reset() initiator = null end_time = 0 @@ -87,26 +60,10 @@ SUBSYSTEM_DEF(vote) voted.Cut() voting.Cut() scores.Cut() - cleanup_statclicks() + choice_statclicks = list() display_votes = initial(display_votes) //CIT CHANGE - obfuscated votes remove_action_buttons() -/datum/controller/subsystem/vote/proc/cleanup_statclicks() - for(var/choice in choice_statclicks) - qdel(choice_statclicks[choice]) - choice_statclicks = list() - -/obj/effect/statclick/vote - name = "ERROR" - var/choice - -/obj/effect/statclick/vote/Click() - SSvote.submit_vote(choice) - -/obj/effect/statclick/vote/New(loc, choice, name) - src.choice = choice - src.name = name - /datum/controller/subsystem/vote/proc/get_result() //get the highest number of votes var/greatest_votes = 0 @@ -582,10 +539,10 @@ SUBSYSTEM_DEF(vote) to_chat(world, "\n[text]\nType vote or click here to place your votes.\nYou have [DisplayTimeText(vp)] to vote.") end_time = started_time+vp // generate statclick list - cleanup_statclicks() + choice_statclicks = list() for(var/i in 1 to choices.len) var/choice = choices[i] - choice_statclicks[choice] = new /obj/effect/statclick/vote(null, i, choice) + choice_statclicks[choice] = "[i]" // for(var/c in GLOB.clients) SEND_SOUND(c, sound('sound/misc/server-ready.ogg')) @@ -785,7 +742,8 @@ SUBSYSTEM_DEF(vote) submit_vote(round(text2num(href_list["vote"])),round(text2num(href_list["score"]))) else submit_vote(round(text2num(href_list["vote"]))) - usr.vote() + if(!href_list["statpannel"]) + usr.vote() /datum/controller/subsystem/vote/proc/remove_action_buttons() for(var/v in generated_actions) diff --git a/code/datums/browser.dm b/code/datums/browser.dm index dbe60817bd..2057cbb21a 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -451,7 +451,7 @@ // otherwise, just reset the client mob's machine var. // /client/verb/windowclose(atomref as text) - set hidden = 1 // hide this verb from the user's panel + set hidden = TRUE // hide this verb from the user's panel set name = ".windowclose" // no autocomplete on cmd line if(atomref!="null") // if passed a real atomref diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm index 73d3e69ac4..669e3ddd77 100644 --- a/code/datums/chatmessage.dm +++ b/code/datums/chatmessage.dm @@ -1,12 +1,25 @@ +/// How long the chat message's spawn-in animation will occur for #define CHAT_MESSAGE_SPAWN_TIME 0.2 SECONDS +/// How long the chat message will exist prior to any exponential decay #define CHAT_MESSAGE_LIFESPAN 5 SECONDS +/// How long the chat message's end of life fading animation will occur for #define CHAT_MESSAGE_EOL_FADE 0.7 SECONDS -#define CHAT_MESSAGE_EXP_DECAY 0.7 // Messages decay at pow(factor, idx in stack) -#define CHAT_MESSAGE_HEIGHT_DECAY 0.9 // Increase message decay based on the height of the message -#define CHAT_MESSAGE_APPROX_LHEIGHT 11 // Approximate height in pixels of an 'average' line, used for height decay -#define CHAT_MESSAGE_WIDTH 96 // pixels -#define CHAT_MESSAGE_MAX_LENGTH 110 // characters -#define WXH_TO_HEIGHT(x) text2num(copytext((x), findtextEx((x), "x") + 1)) // thanks lummox +/// Factor of how much the message index (number of messages) will account to exponential decay +#define CHAT_MESSAGE_EXP_DECAY 0.7 +/// Factor of how much height will account to exponential decay +#define CHAT_MESSAGE_HEIGHT_DECAY 0.9 +/// Approximate height in pixels of an 'average' line, used for height decay +#define CHAT_MESSAGE_APPROX_LHEIGHT 11 +/// Max width of chat message in pixels +#define CHAT_MESSAGE_WIDTH 96 +/// Max length of chat message in characters +#define CHAT_MESSAGE_MAX_LENGTH 110 +/// Maximum precision of float before rounding errors occur (in this context) +#define CHAT_LAYER_Z_STEP 0.0001 +/// The number of z-layer 'slices' usable by the chat message layering +#define CHAT_LAYER_MAX_Z (CHAT_LAYER_MAX - CHAT_LAYER) / CHAT_LAYER_Z_STEP +/// Macro from Lummox used to get height from a MeasureText proc +#define WXH_TO_HEIGHT(x) text2num(copytext(x, findtextEx(x, "x") + 1)) /** * # Chat Message Overlay @@ -20,10 +33,18 @@ var/atom/message_loc /// The client who heard this message var/client/owned_by - /// Contains the scheduled destruction time + /// Contains the scheduled destruction time, used for scheduling EOL var/scheduled_destruction + /// Contains the time that the EOL for the message will be complete, used for qdel scheduling + var/eol_complete /// Contains the approximate amount of lines for height decay var/approx_lines + /// Contains the reference to the next chatmessage in the bucket, used by runechat subsystem + var/datum/chatmessage/next + /// Contains the reference to the previous chatmessage in the bucket, used by runechat subsystem + var/datum/chatmessage/prev + /// The current index used for adjusting the layer of each sequential chat message such that recent messages will overlay older ones + var/static/current_z_idx = 0 /** * Constructs a chat message overlay @@ -53,6 +74,7 @@ owned_by = null message_loc = null message = null + leave_subsystem() return ..() /** @@ -109,17 +131,12 @@ // We dim italicized text to make it more distinguishable from regular text var/tgt_color = extra_classes.Find("italics") ? target.chat_color_darkened : target.chat_color - // Approximate text height - // Note we have to replace HTML encoded metacharacters otherwise MeasureText will return a zero height - // BYOND Bug #2563917 - // Construct text - var/static/regex/html_metachars = new(@"&[A-Za-z]{1,7};", "g") var/complete_text = "[owner.say_emphasis(text)]" - var/mheight = WXH_TO_HEIGHT(owned_by.MeasureText(replacetext(complete_text, html_metachars, "m"), null, CHAT_MESSAGE_WIDTH)) + var/mheight = WXH_TO_HEIGHT(owned_by.MeasureText(complete_text, null, CHAT_MESSAGE_WIDTH)) approx_lines = max(1, mheight / CHAT_MESSAGE_APPROX_LHEIGHT) // Translate any existing messages upwards, apply exponential decay factors to timers - message_loc = target + message_loc = get_atom_on_turf(target) if (owned_by.seen_messages) var/idx = 1 var/combined_height = approx_lines @@ -127,14 +144,20 @@ var/datum/chatmessage/m = msg animate(m.message, pixel_y = m.message.pixel_y + mheight, time = CHAT_MESSAGE_SPAWN_TIME) combined_height += m.approx_lines + + // When choosing to update the remaining time we have to be careful not to update the + // scheduled time once the EOL completion time has been set. var/sched_remaining = m.scheduled_destruction - world.time - if (sched_remaining > CHAT_MESSAGE_SPAWN_TIME) + if (!m.eol_complete) var/remaining_time = (sched_remaining) * (CHAT_MESSAGE_EXP_DECAY ** idx++) * (CHAT_MESSAGE_HEIGHT_DECAY ** combined_height) - m.scheduled_destruction = world.time + remaining_time - addtimer(CALLBACK(m, .proc/end_of_life), remaining_time, TIMER_UNIQUE|TIMER_OVERRIDE) + m.enter_subsystem(world.time + remaining_time) // push updated time to runechat SS + + // Reset z index if relevant + if (current_z_idx >= CHAT_LAYER_MAX_Z) + current_z_idx = 0 // Build message image - message = image(loc = message_loc, layer = CHAT_LAYER) + message = image(loc = message_loc, layer = CHAT_LAYER + CHAT_LAYER_Z_STEP * current_z_idx++) message.plane = CHAT_PLANE message.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA | KEEP_APART message.alpha = 0 @@ -149,16 +172,19 @@ owned_by.images |= message animate(message, alpha = 255, time = CHAT_MESSAGE_SPAWN_TIME) - // Prepare for destruction + // Register with the runechat SS to handle EOL and destruction scheduled_destruction = world.time + (lifespan - CHAT_MESSAGE_EOL_FADE) - addtimer(CALLBACK(src, .proc/end_of_life), lifespan - CHAT_MESSAGE_EOL_FADE, TIMER_UNIQUE|TIMER_OVERRIDE) + enter_subsystem() /** * Applies final animations to overlay CHAT_MESSAGE_EOL_FADE deciseconds prior to message deletion + * Arguments: + * * fadetime - The amount of time to animate the message's fadeout for */ /datum/chatmessage/proc/end_of_life(fadetime = CHAT_MESSAGE_EOL_FADE) + eol_complete = scheduled_destruction + fadetime animate(message, alpha = 0, time = fadetime, flags = ANIMATION_PARALLEL) - QDEL_IN(src, fadetime) + enter_subsystem(eol_complete) // re-enter the runechat SS with the EOL completion time to QDEL self /** * Creates a message overlay at a defined location for a given speaker diff --git a/code/datums/cinematic.dm b/code/datums/cinematic.dm index df2c15e9c8..7b3081cb33 100644 --- a/code/datums/cinematic.dm +++ b/code/datums/cinematic.dm @@ -1,5 +1,3 @@ -GLOBAL_LIST_EMPTY(cinematics) - // Use to play cinematics. // Watcher can be world,mob, or a list of mobs // Blocks until sequence is done. @@ -18,6 +16,7 @@ GLOBAL_LIST_EMPTY(cinematics) playing.is_global = TRUE watcher = GLOB.mob_list playing.play(watcher) + qdel(playing) /obj/screen/cinematic icon = 'icons/effects/station_explosion.dmi' @@ -25,12 +24,13 @@ GLOBAL_LIST_EMPTY(cinematics) plane = SPLASHSCREEN_PLANE layer = SPLASHSCREEN_LAYER mouse_opacity = MOUSE_OPACITY_TRANSPARENT - screen_loc = "1,1" + screen_loc = "BOTTOM,LEFT+50%" + appearance_flags = APPEARANCE_UI | TILE_BOUND /datum/cinematic var/id = CINEMATIC_DEFAULT var/list/watching = list() //List of clients watching this - var/list/locked = list() //Who had mob_transforming set during the cinematic + var/list/locked = list() //Who had mob_transforming set during the cinematic var/is_global = FALSE //Global cinematics will override mob-specific ones var/obj/screen/cinematic/screen var/datum/callback/special_callback //For special effects synced with animation (explosions after the countdown etc) @@ -38,28 +38,35 @@ GLOBAL_LIST_EMPTY(cinematics) var/stop_ooc = TRUE //Turns off ooc when played globally. /datum/cinematic/New() - GLOB.cinematics += src screen = new(src) /datum/cinematic/Destroy() - GLOB.cinematics -= src + for(var/CC in watching) + if(!CC) + continue + var/client/C = CC + //C.mob.clear_fullscreen("cinematic") + C.screen -= screen + watching = null QDEL_NULL(screen) - for(var/mob/M in locked) - M.mob_transforming = FALSE + QDEL_NULL(special_callback) + for(var/MM in locked) + if(!MM) + continue + var/mob/M = MM + M.mob_transforming = FALSE + locked = null return ..() /datum/cinematic/proc/play(watchers) - //Check if you can actually play it (stop mob cinematics for global ones) and create screen objects - for(var/A in GLOB.cinematics) - var/datum/cinematic/C = A - if(C == src) - continue - if(C.is_global || !is_global) - return //Can't play two global or local cinematics at the same time + //Check if cinematic can actually play (stop mob cinematics for global ones) + if(SEND_GLOBAL_SIGNAL(COMSIG_GLOB_PLAY_CINEMATIC, src) & COMPONENT_GLOB_BLOCK_CINEMATIC) + return - //Close all open windows if global - if(is_global) - SStgui.close_all_uis() + //We are now playing this cinematic + + //Handle what happens when a different cinematic tries to play over us + RegisterSignal(SSdcs, COMSIG_GLOB_PLAY_CINEMATIC, .proc/replacement_cinematic) //Pause OOC var/ooc_toggled = FALSE @@ -67,24 +74,17 @@ GLOBAL_LIST_EMPTY(cinematics) ooc_toggled = TRUE toggle_ooc(FALSE) - - for(var/mob/M in GLOB.mob_list) - if(M in watchers) - M.mob_transforming = TRUE //Should this be done for non-global cinematics or even at all ? - locked += M - //Close watcher ui's - SStgui.close_user_uis(M) - if(M.client) - watching += M.client - M.client.screen += screen - else - if(is_global) - M.mob_transforming = TRUE - locked += M + //Place /obj/screen/cinematic into everyone's screens, prevent them from moving + for(var/MM in watchers) + var/mob/M = MM + show_to(M, M.client) + RegisterSignal(M, COMSIG_MOB_CLIENT_LOGIN, .proc/show_to) + //Close watcher ui's + SStgui.close_user_uis(M) //Actually play it content() - + //Cleanup sleep(cleanup_time) @@ -92,7 +92,17 @@ GLOBAL_LIST_EMPTY(cinematics) if(ooc_toggled) toggle_ooc(TRUE) - qdel(src) +/datum/cinematic/proc/show_to(mob/M, client/C) + //SIGNAL_HANDLER //must not wait. + + if(!M.mob_transforming) + locked += M + M.mob_transforming = TRUE //Should this be done for non-global cinematics or even at all ? + if(!C) + return + watching += C + //M.overlay_fullscreen("cinematic",/obj/screen/fullscreen/cinematic_backdrop) + C.screen += screen //Sound helper /datum/cinematic/proc/cinematic_sound(s) @@ -111,6 +121,13 @@ GLOBAL_LIST_EMPTY(cinematics) /datum/cinematic/proc/content() sleep(50) +/datum/cinematic/proc/replacement_cinematic(datum/source, datum/cinematic/other) + //SIGNAL_HANDLER + + if(!is_global && other.is_global) //Allow it to play if we're local and it's global + return NONE + return COMPONENT_GLOB_BLOCK_CINEMATIC + /datum/cinematic/nuke_win id = CINEMATIC_NUKE_WIN diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index 87bc681651..203414b47c 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -189,26 +189,32 @@ if(-INFINITY to SANITY_CRAZY) setInsanityEffect(MAJOR_INSANITY_PEN) master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/insane) + master.add_actionspeed_modifier(/datum/actionspeed_modifier/low_sanity) sanity_level = 6 if(SANITY_CRAZY to SANITY_UNSTABLE) setInsanityEffect(MINOR_INSANITY_PEN) master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/crazy) + master.add_actionspeed_modifier(/datum/actionspeed_modifier/low_sanity) sanity_level = 5 if(SANITY_UNSTABLE to SANITY_DISTURBED) setInsanityEffect(SLIGHT_INSANITY_PEN) master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/disturbed) + master.add_actionspeed_modifier(/datum/actionspeed_modifier/low_sanity) sanity_level = 4 if(SANITY_DISTURBED to SANITY_NEUTRAL) setInsanityEffect(0) master.remove_movespeed_modifier(MOVESPEED_ID_SANITY) + master.remove_actionspeed_modifier(ACTIONSPEED_ID_SANITY) sanity_level = 3 if(SANITY_NEUTRAL+1 to SANITY_GREAT+1) //shitty hack but +1 to prevent it from responding to super small differences setInsanityEffect(0) master.remove_movespeed_modifier(MOVESPEED_ID_SANITY) + master.add_actionspeed_modifier(/datum/actionspeed_modifier/high_sanity) sanity_level = 2 if(SANITY_GREAT+1 to INFINITY) setInsanityEffect(ECSTATIC_SANITY_PEN) //It's not a penalty but w/e master.remove_movespeed_modifier(MOVESPEED_ID_SANITY) + master.add_actionspeed_modifier(/datum/actionspeed_modifier/high_sanity) sanity_level = 1 if(sanity_level != old_sanity_level) diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 747dd8ca61..973ca7463e 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -141,7 +141,7 @@ buckled_mob.pixel_x = 0 buckled_mob.pixel_y = 0 if(buckled_mob.client) - buckled_mob.client.change_view(CONFIG_GET(string/default_view)) + buckled_mob.client.view_size.resetToDefault() //MOVEMENT /datum/component/riding/proc/turf_check(turf/next, turf/current) diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm index df44aef4de..36faba256e 100644 --- a/code/datums/components/squeak.dm +++ b/code/datums/components/squeak.dm @@ -11,11 +11,11 @@ // This is to stop squeak spam from inhand usage var/last_use = 0 var/use_delay = 20 - + // squeak cooldowns var/last_squeak = 0 var/squeak_delay = 5 - + /// chance we'll be stopped from squeaking by cooldown when something crossing us squeaks var/cross_squeak_delay_chance = 33 // about 3 things can squeak at a time @@ -25,7 +25,7 @@ RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY), .proc/play_squeak) if(ismovable(parent)) RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), .proc/play_squeak) - RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ITEM_WEARERCROSSED), .proc/play_squeak_crossed) + RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ITEM_WEARERCROSSED, COMSIG_MOVABLE_CROSS), .proc/play_squeak_crossed) RegisterSignal(parent, COMSIG_CROSS_SQUEAKED, .proc/delay_squeak) RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react) if(isitem(parent)) diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 7756cfd906..d11532a883 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -15,22 +15,32 @@ * If this is non zero then the object has been garbage collected and is awaiting either * a hard del by the GC subsystme, or to be autocollected (if it has no references) */ - var/gc_destroyed //Time when this object was destroyed. + var/gc_destroyed /// Active timers with this datum as the target var/list/active_timers /// Status traits attached to this datum var/list/status_traits - /// Components attached to this datum - /// Lazy associated list in the structure of `type:component/list of components` + + /** + * Components attached to this datum + * + * Lazy associated list in the structure of `type:component/list of components` + */ var/list/datum_components - /// Any datum registered to receive signals from this datum is in this list - /// Lazy associated list in the structure of `signal:registree/list of registrees` - var/list/comp_lookup //it used to be for looking up components which had registered a signal but now anything can register + /** + * Any datum registered to receive signals from this datum is in this list + * + * Lazy associated list in the structure of `signal:registree/list of registrees` + */ + var/list/comp_lookup /// Lazy associated list in the structure of `signals:proctype` that are run when the datum receives that signal var/list/list/datum/callback/signal_procs - /// Is this datum capable of sending signals? - /// Set to true when a signal has been registered + /** + * Is this datum capable of sending signals? + * + * Set to true when a signal has been registered + */ var/signal_enabled = FALSE /// Datum level flags @@ -39,7 +49,12 @@ /// A weak reference to another datum var/datum/weakref/weak_reference - ///Lazy associative list of currently active cooldowns. + /* + * Lazy associative list of currently active cooldowns. + * + * cooldowns [ COOLDOWN_INDEX ] = add_timer() + * add_timer() returns the truthy value of -1 when not stoppable, and else a truthy numeric index + */ var/list/cooldowns #ifdef TESTING @@ -51,23 +66,34 @@ var/list/cached_vars #endif +/** + * Called when a href for this datum is clicked + * + * Sends a [COMSIG_TOPIC] signal + */ +/datum/Topic(href, href_list[]) + ..() + SEND_SIGNAL(src, COMSIG_TOPIC, usr, href_list) + + /** * Default implementation of clean-up code. * * This should be overridden to remove all references pointing to the object being destroyed, if * you do override it, make sure to call the parent and return it's return value by default * - * Return an appropriate QDEL_HINT to modify handling of your deletion; - * in most cases this is QDEL_HINT_QUEUE. + * Return an appropriate [QDEL_HINT][QDEL_HINT_QUEUE] to modify handling of your deletion; + * in most cases this is [QDEL_HINT_QUEUE]. * * The base case is responsible for doing the following * * Erasing timers pointing to this datum * * Erasing compenents on this datum * * Notifying datums listening to signals from this datum that we are going away * - * Returns QDEL_HINT_QUEUE + * Returns [QDEL_HINT_QUEUE] */ /datum/proc/Destroy(force=FALSE, ...) + SHOULD_CALL_PARENT(TRUE) tag = null datum_flags &= ~DF_USE_TAG //In case something tries to REF us weak_reference = null //ensure prompt GCing of weakref. @@ -112,7 +138,7 @@ UnregisterSignal(target, signal_procs[target]) //END: ECS SHIT - SSsounds.free_datum_channels(src) + SSsounds.free_datum_channels(src) //?? (not on tg) return QDEL_HINT_QUEUE @@ -143,15 +169,15 @@ to_chat(target, txt_changed_vars()) #endif -//Return a LIST for serialize_datum to encode! Not the actual json! +///Return a LIST for serialize_datum to encode! Not the actual json! /datum/proc/serialize_list(list/options) CRASH("Attempted to serialize datum [src] of type [type] without serialize_list being implemented!") -//Accepts a LIST from deserialize_datum. Should return src or another datum. +///Accepts a LIST from deserialize_datum. Should return src or another datum. /datum/proc/deserialize_list(json, list/options) CRASH("Attempted to deserialize datum [src] of type [type] without deserialize_list being implemented!") -//Serializes into JSON. Does not encode type. +///Serializes into JSON. Does not encode type. /datum/proc/serialize_json(list/options) . = serialize_list(options) if(!islist(.)) @@ -159,13 +185,14 @@ else . = json_encode(.) -//Deserializes from JSON. Does not parse type. +///Deserializes from JSON. Does not parse type. /datum/proc/deserialize_json(list/input, list/options) var/list/jsonlist = json_decode(input) . = deserialize_list(jsonlist) if(!istype(., /datum)) . = null +///Convert a datum into a json blob /proc/json_serialize_datum(datum/D, list/options) if(!istype(D)) return @@ -174,6 +201,7 @@ jsonlist["DATUM_TYPE"] = D.type return json_encode(jsonlist) +/// Convert a list of json to datum /proc/json_deserialize_datum(list/jsonlist, list/options, target_type, strict_target_type = FALSE) if(!islist(jsonlist)) if(!istext(jsonlist)) diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index e90eededd9..f952307685 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -236,12 +236,12 @@ switch(stage) if(1) if(ishuman(affected_mob) && affected_mob.dna) - if(affected_mob.dna.species.id == "slime" || affected_mob.dna.species.id == "stargazer" || affected_mob.dna.species.id == "lum") + if(affected_mob.dna.species.id == "slime" || affected_mob.dna.species.id == "stargazer" || affected_mob.dna.species.id == "slimelumi") stage = 5 if(3) if(ishuman(affected_mob)) var/mob/living/carbon/human/human = affected_mob - if(human.dna.species.id != "slime" && affected_mob.dna.species.id != "stargazer" && affected_mob.dna.species.id != "lum") + if(human.dna.species.id != "slime" && affected_mob.dna.species.id != "stargazer" && affected_mob.dna.species.id != "slimelumi") human.set_species(/datum/species/jelly/slime) /datum/disease/transformation/corgi diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm index 246226ceba..ca65186063 100644 --- a/code/datums/explosion.dm +++ b/code/datums/explosion.dm @@ -89,6 +89,8 @@ GLOBAL_LIST_EMPTY(explosions) if(adminlog) message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [ADMIN_VERBOSEJMP(epicenter)]") log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [loc_name(epicenter)]") + + deadchat_broadcast("An explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) has occured at ([get_area(epicenter)])", turf_target = get_turf(epicenter)) var/x0 = epicenter.x var/y0 = epicenter.y diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 7d884344f1..81b7ea0628 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -130,7 +130,7 @@ playsound(get_turf(A), pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, TRUE) P.firer = A P.setAngle(rand(0, 360))//SHING - A.adjustStaminaLossBuffered (3) //Citadel change to stop infinite bullet sponging as you run away, but it is buffered! + A.adjustStaminaLoss(3) return BULLET_ACT_FORCE_PIERCE return BULLET_ACT_HIT diff --git a/code/datums/position_point_vector.dm b/code/datums/position_point_vector.dm index 482e15c57d..b4e483ae2b 100644 --- a/code/datums/position_point_vector.dm +++ b/code/datums/position_point_vector.dm @@ -214,6 +214,7 @@ /datum/point/vector/processed/Destroy() STOP_PROCESSING(SSprojectiles, src) + return ..() /datum/point/vector/processed/proc/start() last_process = world.time diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index 933eaf082e..a08b535aff 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -114,14 +114,12 @@ description = "..." suffix = "lavaland_surface_sloth.dmm" // Generates nothing but atmos runtimes and salt - cost = 0 /datum/map_template/ruin/lavaland/ratvar name = "Dead God" id = "ratvar" - description = "Ratvars final resting place." + description = "Ratvar's final resting place." suffix = "lavaland_surface_dead_ratvar.dmm" - cost = 0 allow_duplicates = FALSE /datum/map_template/ruin/lavaland/hierophant @@ -137,7 +135,7 @@ id = "blooddrunk" description = "A strange arrangement of stone tiles and an insane, beastly miner contemplating them." suffix = "lavaland_surface_blooddrunk1.dmm" - cost = 0 + always_place = TRUE allow_duplicates = FALSE //will only spawn one variant of the ruin /datum/map_template/ruin/lavaland/blood_drunk_miner/guidance diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index d6b73f96ed..e2e6a05b08 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -409,6 +409,13 @@ return TRUE return FALSE +/datum/map_template/shuttle/emergency/cruise + suffix = "nature" + name = "Dynamic Environmental Interaction Shuttle" + description = "A large shuttle with a center biodome that is flourishing with life. Frolick with the monkeys! (Extra monkeys are stored on the bridge.)" + admin_notes = "Pretty freakin' large, almost as big as Raven or Cere. Excercise caution with it." + credit_cost = 8000 + /datum/map_template/shuttle/ferry/base suffix = "base" name = "transport ferry" diff --git a/code/datums/skills/_skill.dm b/code/datums/skills/_skill.dm index eecf416b1b..a7d7df72e4 100644 --- a/code/datums/skills/_skill.dm +++ b/code/datums/skills/_skill.dm @@ -171,6 +171,7 @@ GLOBAL_LIST_INIT_TYPED(skill_datums, /datum/skill, init_skill_datums()) continue max_assoc = levels[lvl-1] levels["[max_assoc] +[max_assoc_start++]"] = value + continue levels[key] = value /datum/skill/level/sanitize_value(new_value) diff --git a/code/datums/skills/blacksmithing.dm b/code/datums/skills/blacksmithing.dm index 0bddae5562..1f8eae357a 100644 --- a/code/datums/skills/blacksmithing.dm +++ b/code/datums/skills/blacksmithing.dm @@ -1,6 +1,7 @@ -/datum/skill/level/dorfy/blacksmithing +/datum/skill/level/dwarfy/blacksmithing name = "Blacksmithing" desc = "Making metal into fancy shapes using heat and force. Higher levels increase both your working speed at an anvil as well as the quality of your works." name_color = COLOR_FLOORTILE_GRAY skill_traits = list(SKILL_SANITY, SKILL_INTELLIGENCE, SKILL_USE_TOOL, SKILL_TRAINING_TOOL) ui_category = SKILL_UI_CAT_MISC + standard_xp_lvl_up = 100 //Effectively 200xp for level 1 because of how this code works. 300 more for 2, Etc, diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index d46694d89c..cabdd7cfb8 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -1046,7 +1046,7 @@ datum/status_effect/pacify id = "fake_virus" duration = 1800//3 minutes status_type = STATUS_EFFECT_REPLACE - tick_interval = 1 + tick_interval = 20 alert_type = null var/msg_stage = 0//so you dont get the most intense messages immediately diff --git a/code/datums/status_effects/status_effect.dm b/code/datums/status_effects/status_effect.dm index 461ae9c65d..7f1009d035 100644 --- a/code/datums/status_effects/status_effect.dm +++ b/code/datums/status_effects/status_effect.dm @@ -278,7 +278,3 @@ /datum/status_effect/grouped/before_remove(source) sources -= source return !length(sources) - -//do_after modifier! -/datum/status_effect/proc/interact_speed_modifier() - return 1 diff --git a/code/datums/status_effects/wound_effects.dm b/code/datums/status_effects/wound_effects.dm index 045b1b257d..2ead3e6e19 100644 --- a/code/datums/status_effects/wound_effects.dm +++ b/code/datums/status_effects/wound_effects.dm @@ -141,22 +141,23 @@ // bones /datum/status_effect/wound/blunt -/datum/status_effect/wound/blunt/interact_speed_modifier() - var/mob/living/carbon/C = owner +/datum/status_effect/wound/blunt/on_apply() + . = ..() + RegisterSignal(owner, COMSIG_MOB_SWAP_HANDS, .proc/on_swap_hands) + on_swap_hands() - if(C.get_active_hand() == linked_limb) - to_chat(C, "The [lowertext(linked_wound)] in your [linked_limb.name] slows your progress!") - return linked_wound.interaction_efficiency_penalty +/datum/status_effect/wound/blunt/on_remove() + . = ..() + UnregisterSignal(owner, COMSIG_MOB_SWAP_HANDS) + var/mob/living/carbon/wound_owner = owner + wound_owner.remove_actionspeed_modifier(/datum/actionspeed_modifier/blunt_wound) - return 1 - -/datum/status_effect/wound/blunt/action_cooldown_mod() - var/mob/living/carbon/C = owner - - if(C.get_active_hand() == linked_limb) - return linked_wound.interaction_efficiency_penalty - - return 1 +/datum/status_effect/wound/blunt/proc/on_swap_hands() + var/mob/living/carbon/wound_owner = owner + if(wound_owner.get_active_hand() == linked_limb) + wound_owner.add_actionspeed_modifier(/datum/actionspeed_modifier/blunt_wound, (linked_wound.interaction_efficiency_penalty - 1)) + else + wound_owner.remove_actionspeed_modifier(/datum/actionspeed_modifier/blunt_wound) /datum/status_effect/wound/blunt/moderate id = "disjoint" diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 322fba0a33..fe27cc2baf 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -44,42 +44,16 @@ GLOBAL_LIST_EMPTY(family_heirlooms) /datum/quirk/family_heirloom/on_spawn() var/mob/living/carbon/human/H = quirk_holder var/obj/item/heirloom_type - switch(quirk_holder.mind.assigned_role) - if("Clown") - heirloom_type = pick(/obj/item/paint/anycolor, /obj/item/bikehorn/golden) - if("Mime") - heirloom_type = pick(/obj/item/paint/anycolor, /obj/item/toy/dummy) - if("Cook") - heirloom_type = /obj/item/kitchen/knife/scimitar - if("Botanist") - heirloom_type = pick(/obj/item/cultivator, /obj/item/reagent_containers/glass/bucket, /obj/item/storage/bag/plants, /obj/item/toy/plush/beeplushie) - if("Medical Doctor") - heirloom_type = /obj/item/healthanalyzer - if("Paramedic") - heirloom_type = /obj/item/lighter - if("Station Engineer") - heirloom_type = /obj/item/wirecutters/brass - if("Atmospheric Technician") - heirloom_type = /obj/item/extinguisher/mini/family - if("Lawyer") - heirloom_type = /obj/item/storage/briefcase/lawyer/family - if("Janitor") - heirloom_type = /obj/item/mop - if("Security Officer") - heirloom_type = /obj/item/clothing/accessory/medal/silver/valor - if("Scientist") - heirloom_type = /obj/item/toy/plush/slimeplushie - if("Assistant") - heirloom_type = /obj/item/clothing/gloves/cut/family - if("Chaplain") - heirloom_type = /obj/item/camera/spooky/family - if("Captain") - heirloom_type = /obj/item/clothing/accessory/medal/gold/captain/family + var/species_heirloom_entry = GLOB.species_heirlooms[H.dna.species.id] + if(species_heirloom_entry) + if(prob(species_heirloom_entry[1])) + heirloom_type = pick(species_heirloom_entry[2]) if(!heirloom_type) - heirloom_type = pick( - /obj/item/toy/cards/deck, - /obj/item/lighter, - /obj/item/dice/d20) + var/job_heirloom_entry = GLOB.job_heirlooms[quirk_holder.mind.assigned_role] + if(!job_heirloom_entry) + heirloom_type = pick(GLOB.job_heirlooms["NO_JOB"]) //consider: should this be a define? + else + heirloom_type = pick(job_heirloom_entry) heirloom = new heirloom_type(get_turf(quirk_holder)) GLOB.family_heirlooms += heirloom var/list/slots = list( diff --git a/code/datums/view.dm b/code/datums/view.dm new file mode 100644 index 0000000000..8eb06c2bd2 --- /dev/null +++ b/code/datums/view.dm @@ -0,0 +1,127 @@ +//This is intended to be a full wrapper. DO NOT directly modify its values +///Container for client viewsize +/datum/viewData + var/width = 0 + var/height = 0 + var/default = "" + var/is_suppressed = FALSE + var/client/chief = null + +/datum/viewData/New(client/owner, view_string) + default = view_string + chief = owner + apply() + +/datum/viewData/proc/setDefault(string) + default = string + apply() + +/datum/viewData/proc/safeApplyFormat() + if(isZooming()) + assertFormat() + return + resetFormat() + +/datum/viewData/proc/assertFormat()//T-Pose + // winset(chief, "mapwindow.map", "zoom=0") + // Citadel Edit - We're using icon dropdown instead + +/datum/viewData/proc/resetFormat()//Cuck + // winset(chief, "mapwindow.map", "zoom=[chief.prefs.pixel_size]") + // Citadel Edit - We're using icon dropdown instead + +/datum/viewData/proc/setZoomMode() + // winset(chief, "mapwindow.map", "zoom-mode=[chief.prefs.scaling_method]") + // Citadel Edit - We're using icon dropdown instead + +/datum/viewData/proc/isZooming() + return (width || height) + +/datum/viewData/proc/resetToDefault() + width = 0 + height = 0 + apply() + +/datum/viewData/proc/add(toAdd) + width += toAdd + height += toAdd + apply() + +/datum/viewData/proc/addTo(toAdd) + var/list/shitcode = getviewsize(toAdd) + width += shitcode[1] + height += shitcode[2] + apply() + +/datum/viewData/proc/setTo(toAdd) + var/list/shitcode = getviewsize(toAdd) //Backward compatability to account + width = shitcode[1] //for a change in how sizes get calculated. we used to include world.view in + height = shitcode[2] //this, but it was jank, so I had to move it + apply() + +/datum/viewData/proc/setBoth(wid, hei) + width = wid + height = hei + apply() + +/datum/viewData/proc/setWidth(wid) + width = wid + apply() + +/datum/viewData/proc/setHeight(hei) + width = hei + apply() + +/datum/viewData/proc/addToWidth(toAdd) + width += toAdd + apply() + +/datum/viewData/proc/addToHeight(screen, toAdd) + height += toAdd + apply() + +/datum/viewData/proc/apply() + chief.change_view(getView()) + safeApplyFormat() + if(chief.prefs.auto_fit_viewport) + chief.fit_viewport() + +/datum/viewData/proc/supress() + is_suppressed = TRUE + apply() + +/datum/viewData/proc/unsupress() + is_suppressed = FALSE + apply() + +/datum/viewData/proc/getView() + var/list/temp = getviewsize(default) + if(is_suppressed) + return "[temp[1]]x[temp[2]]" + return "[width + temp[1]]x[height + temp[2]]" + +/datum/viewData/proc/zoomIn() + resetToDefault() + animate(chief, pixel_x = 0, pixel_y = 0, 0, FALSE, LINEAR_EASING, ANIMATION_END_NOW) + +/datum/viewData/proc/zoomOut(radius = 0, offset = 0, direction = FALSE) + if(direction) + var/_x = 0 + var/_y = 0 + switch(direction) + if(NORTH) + _y = offset + if(EAST) + _x = offset + if(SOUTH) + _y = -offset + if(WEST) + _x = -offset + animate(chief, pixel_x = world.icon_size*_x, pixel_y = world.icon_size*_y, 0, FALSE, LINEAR_EASING, ANIMATION_END_NOW) + //Ready for this one? + setTo(radius) + +/proc/getScreenSize(widescreen) + if(widescreen) + return CONFIG_GET(string/default_view) + return CONFIG_GET(string/default_view_square) diff --git a/code/datums/weakrefs.dm b/code/datums/weakrefs.dm index fbe9036ea7..31e0c3501b 100644 --- a/code/datums/weakrefs.dm +++ b/code/datums/weakrefs.dm @@ -16,8 +16,12 @@ /datum/weakref/New(datum/thing) reference = REF(thing) -/datum/weakref/Destroy() - return QDEL_HINT_LETMELIVE //Let BYOND autoGC thiswhen nothing is using it anymore. +/datum/weakref/Destroy(force) + if(!force) + return QDEL_HINT_LETMELIVE //Let BYOND autoGC thiswhen nothing is using it anymore. + var/datum/target = resolve() + target?.weak_reference = null + return ..() /datum/weakref/proc/resolve() var/datum/D = locate(reference) diff --git a/code/datums/weather/weather_types/ash_storm.dm b/code/datums/weather/weather_types/ash_storm.dm index 43190ef50c..6248be0de5 100644 --- a/code/datums/weather/weather_types/ash_storm.dm +++ b/code/datums/weather/weather_types/ash_storm.dm @@ -95,8 +95,8 @@ if(is_ash_immune(L)) return if(is_species(L, /datum/species/lizard/ashwalker)) - if(!IS_STAMCRIT(L)) - L.adjustStaminaLossBuffered(4) + if(L.getStaminaLoss() < (STAMINA_CRIT - 40)) + L.adjustStaminaLoss(4) return L.adjustFireLoss(4) diff --git a/code/datums/wounds/_scars.dm b/code/datums/wounds/_scars.dm index 8cd0d8a047..85589976e6 100644 --- a/code/datums/wounds/_scars.dm +++ b/code/datums/wounds/_scars.dm @@ -79,7 +79,7 @@ /// Used to "load" a persistent scar /datum/scar/proc/load(obj/item/bodypart/BP, version, description, specific_location, severity=WOUND_SEVERITY_SEVERE) - if(!(BP.body_zone in applicable_zones) || !BP.is_organic_limb()) + if(!(BP.body_zone in applicable_zones) || !(BP.is_organic_limb() || BP.render_like_organic)) qdel(src) return diff --git a/code/datums/wounds/_wounds.dm b/code/datums/wounds/_wounds.dm index 29c87b32d4..1ed0d98543 100644 --- a/code/datums/wounds/_wounds.dm +++ b/code/datums/wounds/_wounds.dm @@ -110,7 +110,7 @@ * * smited- If this is a smite, we don't care about this wound for stat tracking purposes (not yet implemented) */ /datum/wound/proc/apply_wound(obj/item/bodypart/L, silent = FALSE, datum/wound/old_wound = null, smited = FALSE) - if(!istype(L) || !L.owner || !(L.body_zone in viable_zones) || isalien(L.owner) || !L.is_organic_limb()) + if(!istype(L) || !L.owner || !(L.body_zone in viable_zones) || isalien(L.owner) || !(L.is_organic_limb() || L.render_like_organic)) qdel(src) return diff --git a/code/game/area/areas/centcom.dm b/code/game/area/areas/centcom.dm index 96b621acd8..18d239328f 100644 --- a/code/game/area/areas/centcom.dm +++ b/code/game/area/areas/centcom.dm @@ -37,6 +37,10 @@ name = "winterball Zone" dynamic_lighting = DYNAMIC_LIGHTING_DISABLED +/area/centcom/supplypod/supplypod_temp_holding + name = "Supplypod Shipping lane" + icon_state = "supplypod_flight" + /area/centcom/supplypod name = "Supplypod Facility" icon_state = "supplypod" @@ -49,18 +53,35 @@ /area/centcom/supplypod/loading name = "Supplypod Loading Facility" icon_state = "supplypod_loading" + var/loading_id = "" + +/area/centcom/supplypod/loading/Initialize() + . = ..() + if(!loading_id) + CRASH("[type] created without a loading_id") + if(GLOB.supplypod_loading_bays[loading_id]) + CRASH("Duplicate loading bay area: [type] ([loading_id])") + GLOB.supplypod_loading_bays[loading_id] = src /area/centcom/supplypod/loading/one - name = "Supplypod Loading Bay #1" + name = "Bay #1" + loading_id = "1" /area/centcom/supplypod/loading/two - name = "Supplypod Loading Bay #2" + name = "Bay #2" + loading_id = "2" /area/centcom/supplypod/loading/three - name = "Supplypod Loading Bay #3" + name = "Bay #3" + loading_id = "3" /area/centcom/supplypod/loading/four - name = "Supplypod Loading Bay #4" + name = "Bay #4" + loading_id = "4" + +/area/centcom/supplypod/loading/ert + name = "ERT Bay" + loading_id = "5" //THUNDERDOME /area/tdome diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 98b502122c..9607dc4dce 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -1128,6 +1128,22 @@ /atom/proc/rust_heretic_act() return +/** + * Used to set something as 'open' if it's being used as a supplypod + * + * Override this if you want an atom to be usable as a supplypod. + */ +/atom/proc/setOpened() + return + +/** + * Used to set something as 'closed' if it's being used as a supplypod + * + * Override this if you want an atom to be usable as a supplypod. + */ +/atom/proc/setClosed() + return + ///Passes Stat Browser Panel clicks to the game and calls client click on an atom /atom/Topic(href, list/href_list) . = ..() diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 0a6c2b9eca..4715c3bed3 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -36,6 +36,7 @@ var/grab_state = 0 var/throwforce = 0 var/datum/component/orbiter/orbiting + /// Used for space ztransit stuff var/can_be_z_moved = TRUE ///If we were without gravity and another animation happened, the bouncing will stop, and we need to restart it in next life(). var/floating_need_update = FALSE diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 1b1fa949a2..da82b0afc7 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -18,9 +18,10 @@ GLOBAL_LIST_EMPTY(announcement_systems) var/obj/item/radio/headset/radio var/arrival = "%PERSON has signed up as %RANK" - var/arrivalToggle = 1 + var/arrivalToggle = TRUE var/newhead = "%PERSON, %RANK, is the department head." - var/newheadToggle = 1 + var/newheadToggle = TRUE + var/cryostorage = "%PERSON, %RANK, has been moved into cryogenic storage." // this shouldnt be changed var/greenlight = "Light_Green" var/pinklight = "Light_Pink" @@ -84,6 +85,8 @@ GLOBAL_LIST_EMPTY(announcement_systems) message = CompileText(arrival, user, rank) else if(message_type == "NEWHEAD" && newheadToggle) message = CompileText(newhead, user, rank) + else if(message_type == "CRYOSTORAGE") + message = CompileText(cryostorage, user, rank) else if(message_type == "ARRIVALS_BROKEN") message = "The arrivals shuttle has been damaged. Docking for repairs..." diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 4b5806b8fd..7d2c851206 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -11,6 +11,8 @@ var/datum/action/innate/camera_off/off_action = new var/datum/action/innate/camera_jump/jump_action = new var/list/actions = list() + /// Should we suppress the user's view? + var/should_supress_view_changes = TRUE light_color = LIGHT_COLOR_RED @@ -77,6 +79,7 @@ current_user = null user.unset_machine() + user.client.view_size.unsupress() playsound(src, 'sound/machines/terminal_off.ogg', 25, 0) /obj/machinery/computer/camera_advanced/check_eye(mob/user) @@ -157,6 +160,8 @@ user.remote_control = eyeobj user.reset_perspective(eyeobj) eyeobj.setLoc(eyeobj.loc) + if(should_supress_view_changes) + user.client.view_size.supress() /mob/camera/aiEye/remote name = "Inactive Camera Eye" @@ -273,4 +278,4 @@ C.overlay_fullscreen("flash", /obj/screen/fullscreen/flash/static) C.clear_fullscreen("flash", 3) //Shorter flash than normal since it's an ~~advanced~~ console! else - playsound(origin, 'sound/machines/terminal_prompt_deny.ogg', 25, 0) \ No newline at end of file + playsound(origin, 'sound/machines/terminal_prompt_deny.ogg', 25, 0) diff --git a/code/game/machinery/computer/mechlaunchpad.dm b/code/game/machinery/computer/mechlaunchpad.dm new file mode 100644 index 0000000000..88d3c765cb --- /dev/null +++ b/code/game/machinery/computer/mechlaunchpad.dm @@ -0,0 +1,163 @@ +/obj/machinery/computer/mechpad + name = "orbital mech pad console" + desc = "A computer designed to handle the calculations and routing required for sending and receiving mechs from orbit. Requires a link to a nearby Orbital Mech Pad to function." + icon_screen = "mechpad" + icon_keyboard = "teleport_key" + circuit = /obj/item/circuitboard/computer/mechpad + ///ID of the mechpad, used for linking up + var/id = "roboticsmining" + ///Selected mechpad in the console + var/selected_id + ///Mechpads that it can send mechs through to other mechpads + var/obj/machinery/mechpad/connected_mechpad + ///List of mechpads connected + var/list/obj/machinery/mechpad/mechpads = list() + ///Maximum amount of pads connected at once + var/maximum_pads = 3 + +/obj/machinery/computer/mechpad/Initialize(mapload) + . = ..() + if(mapload) + connected_mechpad = connect_to_pad() + connected_mechpad.connected_console = src + connected_mechpad.id = id + return INITIALIZE_HINT_LATELOAD + else + id ="handmade" + +/obj/machinery/computer/mechpad/LateInitialize() + for(var/obj/machinery/mechpad/pad in GLOB.mechpad_list) + if(pad == connected_mechpad) + continue + if(pad.id != id) + continue + mechpads += pad + LAZYADD(pad.consoles, src) + if(mechpads.len > maximum_pads) + break + +/obj/machinery/computer/mechpad/Destroy() + if(connected_mechpad) + connected_mechpad.connected_console = null + connected_mechpad = null + for(var/obj/machinery/mechpad/mechpad in mechpads) + LAZYREMOVE(mechpad.consoles, src) + return ..() + +///Tries to locate a pad in the cardinal directions, if it finds one it returns it +/obj/machinery/computer/mechpad/proc/connect_to_pad() + if(connected_mechpad) + return + for(var/direction in GLOB.cardinals) + connected_mechpad = locate(/obj/machinery/mechpad, get_step(src, direction)) + if(connected_mechpad) + break + return connected_mechpad + +/obj/machinery/computer/mechpad/multitool_act(mob/living/user, obj/item/tool) + if(!multitool_check_buffer(user, tool)) + return + var/obj/item/multitool/multitool = tool + if(istype(multitool.buffer, /obj/machinery/mechpad)) + var/obj/machinery/mechpad/buffered_console = multitool.buffer + if(!(mechpads.len < maximum_pads)) + to_chat(user, "[src] cannot handle any more connections!") + return + if(buffered_console == connected_mechpad) + to_chat(user, "[src] cannot connect to its own mechpad!") + else if(!connected_mechpad && buffered_console == connect_to_pad()) + connected_mechpad = buffered_console + connected_mechpad.connected_console = src + connected_mechpad.id = id + multitool.buffer = null + to_chat(user, "You connect the console to the pad with data from the [multitool.name]'s buffer.") + else + mechpads += buffered_console + LAZYADD(buffered_console.consoles, src) + multitool.buffer = null + to_chat(user, "You upload the data from the [multitool.name]'s buffer.") + +/** + * Tries to call the launch proc on the connected mechpad, returns if there is no connected mechpad or there is no mecha on the pad + * Arguments: + * * user - The user of the proc + * * where - The mechpad that the connected mechpad will try to send a supply pod to + */ +/obj/machinery/computer/mechpad/proc/try_launch(var/mob/user, var/obj/machinery/mechpad/where) + if(!connected_mechpad) + to_chat(user, "[src] has no connected pad!") + return + if(connected_mechpad.panel_open) + to_chat(user, "[src]'s pad has its' panel open! It won't work!") + return + if(!(locate(/obj/vehicle/sealed/mecha) in get_turf(connected_mechpad))) + to_chat(user, "[src] detects no mecha on the pad!") + return + connected_mechpad.launch(where) + +///Checks if the pad of a certain number has been QDELETED, if yes returns FALSE, otherwise returns TRUE +/obj/machinery/computer/mechpad/proc/pad_exists(number) + var/obj/machinery/mechpad/pad = mechpads[number] + if(QDELETED(pad)) + return FALSE + return TRUE + +///Returns the pad of the value specified +/obj/machinery/computer/mechpad/proc/get_pad(number) + var/obj/machinery/mechpad/pad = mechpads[number] + return pad + +/obj/machinery/computer/mechpad/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "MechpadConsole", name) + ui.open() + +/obj/machinery/computer/mechpad/ui_data(mob/user) + var/list/data = list() + var/list/pad_list = list() + for(var/i in 1 to LAZYLEN(mechpads)) + if(pad_exists(i)) + var/obj/machinery/mechpad/pad = get_pad(i) + var/list/this_pad = list() + this_pad["name"] = pad.display_name + this_pad["id"] = i + if(pad.machine_stat & NOPOWER) + this_pad["inactive"] = TRUE + pad_list += list(this_pad) + else + mechpads -= get_pad(i) + data["mechpads"] = pad_list + data["selected_id"] = selected_id + data["connected_mechpad"] = !!connected_mechpad + if(selected_id) + var/obj/machinery/mechpad/current_pad = mechpads[selected_id] + data["pad_name"] = current_pad.display_name + data["selected_pad"] = current_pad + if(QDELETED(current_pad) || (current_pad.machine_stat & NOPOWER)) + data["pad_active"] = FALSE + return data + data["pad_active"] = TRUE + return data + +/obj/machinery/computer/mechpad/ui_act(action, params) + . = ..() + if(.) + return + var/obj/machinery/mechpad/current_pad = mechpads[selected_id] + switch(action) + if("select_pad") + selected_id = text2num(params["id"]) + if("rename") + var/new_name = params["name"] + if(!new_name) + return + current_pad.display_name = new_name + if("remove") + if(usr && alert(usr, "Are you sure?", "Unlink Orbital Pad", "I'm Sure", "Abort") != "Abort") + mechpads -= current_pad + LAZYREMOVE(current_pad.consoles, src) + selected_id = null + if("launch") + try_launch(usr, current_pad) + . = TRUE diff --git a/code/game/machinery/mechlaunchpad.dm b/code/game/machinery/mechlaunchpad.dm new file mode 100644 index 0000000000..049f3e7d3e --- /dev/null +++ b/code/game/machinery/mechlaunchpad.dm @@ -0,0 +1,76 @@ +/obj/machinery/mechpad + name = "orbital mech pad" + desc = "A slab of heavy plating designed to withstand orbital-drop impacts. Through some sort of advanced bluespace tech, this one seems able to send and receive Mechs. Requires linking to a console to function." + icon = 'icons/obj/telescience.dmi' + icon_state = "mechpad" + circuit = /obj/item/circuitboard/machine/mechpad + ///ID of the console, used for linking up + var/id = "roboticsmining" + ///Name of the mechpad in a mechpad console + var/display_name = "Orbital Pad" + ///The console the pad is linked to + var/obj/machinery/computer/mechpad/connected_console + ///List of consoles that can access the pad + var/list/obj/machinery/computer/mechpad/consoles + +/obj/machinery/mechpad/Initialize() + . = ..() + display_name = "Orbital Pad - [get_area_name(src)]" + GLOB.mechpad_list += src + +/obj/machinery/mechpad/Destroy() + if(connected_console) + connected_console.connected_mechpad = null + connected_console = null + for(var/obj/machinery/computer/mechpad/console in consoles) + console.mechpads -= src + return ..() + +/obj/machinery/mechpad/screwdriver_act(mob/user, obj/item/tool) + . = ..() + if(!.) + return default_deconstruction_screwdriver(user, "mechpad-o", "mechpad", tool) + +/obj/machinery/mechpad/crowbar_act(mob/user, obj/item/tool) + ..() + if(default_deconstruction_crowbar(tool)) + return TRUE + +/obj/machinery/mechpad/multitool_act(mob/living/user, obj/item/tool) + if(!panel_open) + return + if(!multitool_check_buffer(user, tool)) + return + var/obj/item/multitool/multitool = tool + multitool.buffer = src + to_chat(user, "You save the data in the [multitool.name]'s buffer.") + return TRUE + +/** + * Spawns a special supply pod whitelisted to only accept mechs and have its drop off location be another mechpad + * Arguments: + * * where - where the supply pod will land after grabbing the mech + */ +/obj/machinery/mechpad/proc/launch(obj/machinery/mechpad/where) + var/obj/structure/closet/supplypod/mechpod/pod = new() + var/turf/target_turf = get_turf(where) + pod.reverse_dropoff_coords = list(target_turf.x, target_turf.y, target_turf.z) + new /obj/effect/pod_landingzone(get_turf(src), pod) + +/obj/structure/closet/supplypod/mechpod + style = STYLE_SEETHROUGH + explosionSize = list(0,0,0,0) + reversing = TRUE + landingDelay = 0 + openingDelay = 0 + departureDelay = 0 + effectOrgans = TRUE + effectQuiet = TRUE + leavingSound = 'sound/vehicles/rocketlaunch.ogg' + close_sound = null + pod_flags = FIRST_SOUNDS + +/obj/structure/closet/supplypod/mechpod/insertion_allowed(atom/movable/AM) + if(!ismecha(AM)) + return FALSE + . = ..() diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm index 12fdc2193b..6aeef4b6ac 100644 --- a/code/game/machinery/wishgranter.dm +++ b/code/game/machinery/wishgranter.dm @@ -84,7 +84,7 @@ if(is_station_level(T.z)) destinations += B var/chosen_beacon = pick(destinations) - var/obj/effect/portal/jaunt_tunnel/J = new (get_turf(src), src, 100, null, FALSE, get_turf(chosen_beacon)) + var/obj/effect/portal/jaunt_tunnel/J = new (get_turf(src), 100, null, FALSE, get_turf(chosen_beacon)) try_move_adjacent(J) playsound(src,'sound/effects/sparks4.ogg',50,1) charges-- diff --git a/code/game/mecha/combat/neovgre.dm b/code/game/mecha/combat/neovgre.dm index 1bd68546c8..584a2d007e 100644 --- a/code/game/mecha/combat/neovgre.dm +++ b/code/game/mecha/combat/neovgre.dm @@ -64,6 +64,8 @@ /obj/mecha/combat/neovgre/process() ..() + if(!obj_integrity) //Integrity is zero but we would heal out of that state if we went into this before it recognises it being zero + return if(GLOB.ratvar_awakens) // At this point only timley intervention by lord singulo could hope to stop the superweapon cell.charge = INFINITY max_integrity = INFINITY diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 8039aabd1f..4dbb57479f 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -56,7 +56,7 @@ var/turf/target_turf = pick(L) if(!target_turf) return - var/list/obj/effect/portal/created = create_portal_pair(get_turf(src), target_turf, src, 300, 1, /obj/effect/portal/anom) + var/list/obj/effect/portal/created = create_portal_pair(get_turf(src), target_turf, 300, 1, /obj/effect/portal/anom) var/turf/T = get_turf(target) message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Wormhole Generator in [ADMIN_VERBOSEJMP(T)]") log_game("[key_name(chassis.occupant)] used a Wormhole Generator in [AREACOORD(T)]") diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index f16a5f9292..88a5c3f20f 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1007,7 +1007,7 @@ if(L && L.client) L.update_mouse_pointer() - L.client.change_view(CONFIG_GET(string/default_view)) + L.client.view_size.resetToDefault() zoom_mode = 0 ///////////////////////// diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm index 68d05e6a65..ee43e3f770 100644 --- a/code/game/mecha/mecha_actions.dm +++ b/code/game/mecha/mecha_actions.dm @@ -243,10 +243,10 @@ chassis.mecha_log_message("Toggled zoom mode.") chassis.occupant_message("Zoom mode [chassis.zoom_mode?"en":"dis"]abled.") if(chassis.zoom_mode) - owner.client.change_view(12) + owner.client.view_size.setTo(4.5) SEND_SOUND(owner, sound('sound/mecha/imag_enh.ogg',volume=50)) else - owner.client.change_view(CONFIG_GET(string/default_view)) //world.view - default mob view size + owner.client.view_size.resetToDefault() UpdateButtonIcon() /datum/action/innate/mecha/mech_switch_damtype diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 9a498c9a70..2d28d3a041 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -9,12 +9,19 @@ icon = 'icons/obj/lighting.dmi' icon_state = "glowshroom" //replaced in New layer = ABOVE_NORMAL_TURF_LAYER - max_integrity = 5 - var/delay = 1200 + /// Time interval between glowshroom "spreads" + var/delay_spread = 2 MINUTES + /// Time interval between glowshroom decay checks + var/delay_decay = 30 SECONDS + /// Boolean to indicate if the shroom is on the floor/wall var/floor = 0 + /// Mushroom generation number var/generation = 1 - var/spreadIntoAdjacentChance = 60 + /// Chance to spread into adjacent tiles (0-100) + var/spreadIntoAdjacentChance = 75 + /// Internal seed of the glowshroom, stats are stored here var/obj/item/seeds/myseed = /obj/item/seeds/glowshroom + /// Turfs where the glowshroom cannot spread to var/static/list/blacklisted_glowshroom_turfs = typecacheof(list( /turf/open/lava, /turf/open/floor/plating/beach/water)) @@ -43,21 +50,30 @@ QDEL_NULL(myseed) return ..() -/obj/structure/glowshroom/New(loc, obj/item/seeds/newseed, mutate_stats) - ..() +/** + * Creates a new glowshroom structure. + * + * Arguments: + * * newseed - Seed of the shroom + * * mutate_stats - If the plant needs to mutate their stats + * * spread - If the plant is a result of spreading, reduce its stats + */ + +/obj/structure/glowshroom/Initialize(mapload, obj/item/seeds/newseed, mutate_stats, spread) + . = ..() if(newseed) myseed = newseed.Copy() myseed.forceMove(src) else myseed = new myseed(src) + if(spread) + myseed.potency -= round(myseed.potency * 0.25) // Reduce potency of the little mushie if it's spreading if(mutate_stats) //baby mushrooms have different stats :3 - myseed.adjust_potency(rand(-3,6)) - myseed.adjust_yield(rand(-1,2)) - myseed.adjust_production(rand(-3,6)) - myseed.adjust_endurance(rand(-3,6)) - delay = delay - myseed.production * 100 //So the delay goes DOWN with better stats instead of up. :I - obj_integrity = myseed.endurance / 7 - max_integrity = myseed.endurance / 7 + myseed.adjust_potency(rand(-4,3)) + myseed.adjust_yield(rand(-3,2)) + myseed.adjust_production(rand(-3,3)) + myseed.endurance = clamp(myseed.endurance + rand(-3,2), 0, 100) // adjust_endurance has a min value of 10, need to edit directly + delay_spread = delay_spread - myseed.production * 100 //So the delay goes DOWN with better stats instead of up. :I var/datum/plant_gene/trait/glow/G = myseed.get_gene(/datum/plant_gene/trait/glow) if(ispath(G)) // Seeds were ported to initialize so their genes are still typepaths here, luckily their initializer is smart enough to handle us doing this myseed.genes -= G @@ -80,13 +96,20 @@ else //if on the floor, glowshroom on-floor sprite icon_state = base_icon_state - addtimer(CALLBACK(src, .proc/Spread), delay) + addtimer(CALLBACK(src, .proc/Spread), delay_spread) + addtimer(CALLBACK(src, .proc/Decay), delay_decay, FALSE) // Start decaying the plant + +/** + * Causes glowshroom spreading across the floor/walls. + */ /obj/structure/glowshroom/proc/Spread() var/turf/ownturf = get_turf(src) var/shrooms_planted = 0 for(var/i in 1 to myseed.yield) - if(prob(1/(generation * generation) * 100))//This formula gives you diminishing returns based on generation. 100% with 1st gen, decreasing to 25%, 11%, 6, 4, 2... + var/chance_stats = ((myseed.potency + myseed.endurance * 2) * 0.2) // Chance of generating a new mushroom based on stats + var/chance_generation = (100 / (generation * generation)) // This formula gives you diminishing returns based on generation. 100% with 1st gen, decreasing to 25%, 11%, 6, 4, 2... + if(prob(max(chance_stats, chance_generation))) // Whatever is the higher chance we use it var/list/possibleLocs = list() var/spreadsIntoAdjacent = FALSE @@ -96,7 +119,7 @@ for(var/turf/open/floor/earth in view(3,src)) if(is_type_in_typecache(earth, blacklisted_glowshroom_turfs)) continue - if(!disease_air_spread_walk(ownturf, earth)) + if(!ownturf.CanAtmosPass(earth)) continue if(spreadsIntoAdjacent || !locate(/obj/structure/glowshroom) in view(1,earth)) possibleLocs += earth @@ -118,16 +141,15 @@ if(shroomCount >= placeCount) continue - var/obj/structure/glowshroom/child = new type(newLoc, myseed, TRUE) + Decay(TRUE, 2) // Decay before spawning new mushrooms to reduce their endurance + var/obj/structure/glowshroom/child = new type(newLoc, myseed, TRUE, TRUE) child.generation = generation + 1 shrooms_planted++ CHECK_TICK - else - shrooms_planted++ //if we failed due to generation, don't try to plant one later - if(shrooms_planted < myseed.yield) //if we didn't get all possible shrooms planted, try again later - myseed.yield -= shrooms_planted - addtimer(CALLBACK(src, .proc/Spread), delay) + if(shrooms_planted <= myseed.yield) //if we didn't get all possible shrooms planted, try again later + myseed.adjust_yield(-shrooms_planted) + addtimer(CALLBACK(src, .proc/Spread), delay_spread) /obj/structure/glowshroom/proc/CalcDir(turf/location = loc) var/direction = 16 @@ -161,9 +183,27 @@ floor = 1 return 1 +/** + * Causes the glowshroom to decay by decreasing its endurance. + * + * Arguments: + * * spread - Boolean to indicate if the decay is due to spreading or natural decay. + * * amount - Amount of endurance to be reduced due to spread decay. + */ +/obj/structure/glowshroom/proc/Decay(spread, amount) + if (spread) // Decay due to spread + myseed.endurance -= amount + else // Timed decay + myseed.endurance -= 1 + if (myseed.endurance > 0) + addtimer(CALLBACK(src, .proc/Decay), delay_decay, FALSE) // Recall decay timer + return + if (myseed.endurance < 1) // Plant is gone + qdel(src) + /obj/structure/glowshroom/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) if(damage_type == BURN && damage_amount) - playsound(src.loc, 'sound/items/welder.ogg', 100, 1) + playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE) /obj/structure/glowshroom/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) @@ -175,3 +215,8 @@ var/obj/effect/decal/cleanable/molten_object/I = new (get_turf(src)) I.desc = "Looks like this was \an [src] some time ago." qdel(src) + +/obj/structure/glowshroom/attackby(obj/item/I, mob/living/user, params) + if (istype(I, /obj/item/plant_analyzer)) + return myseed.attackby(I, user, params) // Hacky I guess + return ..() // Attack normally diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index c2cfab0f7c..3bd43e44fb 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -40,10 +40,6 @@ density = TRUE layer = FLY_LAYER -/obj/effect/supplypod_selector - icon_state = "supplypod_selector" - layer = FLY_LAYER - //Makes a tile fully lit no matter what /obj/effect/fullbright icon = 'icons/effects/alphacolors.dmi' @@ -91,4 +87,4 @@ /obj/effect/dummy/lighting_obj/moblight/Initialize(mapload, _color, _range, _power, _duration) . = ..() if(!ismob(loc)) - return INITIALIZE_HINT_QDEL \ No newline at end of file + return INITIALIZE_HINT_QDEL diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 8d5458333c..44fa231c07 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -515,3 +515,12 @@ /obj/effect/temp_visual/dir_setting/space_wind/Initialize(mapload, set_dir, set_alpha = 255) . = ..() alpha = set_alpha + +/obj/effect/temp_visual/slime_puddle + icon = 'icons/mob/mob.dmi' + duration = 12 + icon_state = "to_puddle" + +/obj/effect/temp_visual/slime_puddle/reverse + icon_state = "from_puddle" + duration = 7 diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm index 235fbf6a9f..c467cbd4e8 100644 --- a/code/game/objects/empulse.dm +++ b/code/game/objects/empulse.dm @@ -10,6 +10,7 @@ if(log) message_admins("EMP with power [power], max distance [max_distance] in area [epicenter.loc.name] ") log_game("EMP with power [power], max distance [max_distance] in area [epicenter.loc.name] ") + deadchat_broadcast("EMP with power ([power]), max distance ([max_distance]) in [epicenter.loc.name]", turf_target = epicenter) if(power > 100) new /obj/effect/temp_visual/emp/pulse(epicenter) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index b4c114eb6a..1c75f1e533 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -315,7 +315,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb return if(loc == user && current_equipped_slot && current_equipped_slot != SLOT_HANDS) if(current_equipped_slot in user.check_obscured_slots()) - to_chat(src, "You are unable to unequip that while wearing other garments over it!") + to_chat(user, "You are unable to unequip that while wearing other garments over it!") return FALSE if(resistance_flags & ON_FIRE) @@ -383,7 +383,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb return if(loc == user && current_equipped_slot && current_equipped_slot != SLOT_HANDS) if(current_equipped_slot in user.check_obscured_slots()) - to_chat(src, "You are unable to unequip that while wearing other garments over it!") + to_chat(user, "You are unable to unequip that while wearing other garments over it!") return FALSE @@ -565,7 +565,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb to_chat(user, "You cannot locate any organic eyes on this brain!") return - if(IS_STAMCRIT(user))//CIT CHANGE - makes eyestabbing impossible if you're in stamina softcrit + if(IS_STAMCRIT(user) || !user.UseStaminaBuffer(STAMINA_COST_ITEM_EYESTAB, warn = TRUE))//CIT CHANGE - makes eyestabbing impossible if you're in stamina softcrit to_chat(user, "You're too exhausted for that.")//CIT CHANGE - ditto return //CIT CHANGE - ditto @@ -575,8 +575,6 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb user.do_attack_animation(M) - user.adjustStaminaLossBuffered(10)//CIT CHANGE - makes eyestabbing cost stamina - if(M != user) M.visible_message("[user] has stabbed [M] in the eye with [src]!", \ "[user] stabs you in the eye with [src]!") diff --git a/code/game/objects/items/binoculars.dm b/code/game/objects/items/binoculars.dm index 347f0ad3a7..01295204a8 100644 --- a/code/game/objects/items/binoculars.dm +++ b/code/game/objects/items/binoculars.dm @@ -25,41 +25,32 @@ return ..() /obj/item/binoculars/proc/on_wield(obj/item/source, mob/user) - RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/unwield) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_walk) + RegisterSignal(user, COMSIG_ATOM_DIR_CHANGE, .proc/rotate) listeningTo = user user.visible_message("[user] holds [src] up to [user.p_their()] eyes.", "You hold [src] up to your eyes.") item_state = "binoculars_wielded" user.regenerate_icons() - if(!user?.client) - return - var/client/C = user.client - var/_x = 0 - var/_y = 0 - switch(user.dir) - if(NORTH) - _y = zoom_amt - if(EAST) - _x = zoom_amt - if(SOUTH) - _y = -zoom_amt - if(WEST) - _x = -zoom_amt - C.change_view(world.view + zoom_out_amt) - C.pixel_x = world.icon_size*_x - C.pixel_y = world.icon_size*_y + user.client.view_size.zoomOut(zoom_out_amt, zoom_amt, user.dir) + +/obj/item/binoculars/proc/rotate(atom/thing, old_dir, new_dir) + if(ismob(thing)) + var/mob/lad = thing + lad.regenerate_icons() + lad.client.view_size.zoomOut(zoom_out_amt, zoom_amt, new_dir) + +/obj/item/binoculars/proc/on_walk() + attack_self(listeningTo) //Yes I have sinned, why do you ask? + /obj/item/binoculars/proc/on_unwield(obj/item/source, mob/user) unwield(user) /obj/item/binoculars/proc/unwield(mob/user) if(listeningTo) - UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) + UnregisterSignal(user, COMSIG_MOVABLE_MOVED) + UnregisterSignal(user, COMSIG_ATOM_DIR_CHANGE) listeningTo = null user.visible_message("[user] lowers [src].", "You lower [src].") item_state = "binoculars" user.regenerate_icons() - if(user && user.client) - user.regenerate_icons() - var/client/C = user.client - C.change_view(CONFIG_GET(string/default_view)) - user.client.pixel_x = 0 - user.client.pixel_y = 0 + user.client.view_size.zoomIn() diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 484901990a..4777796331 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -4,7 +4,7 @@ /obj/item/defibrillator name = "defibrillator" desc = "A device that delivers powerful shocks to detachable paddles that resuscitate incapacitated patients." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/defibrillators.dmi' icon_state = "defibunit" item_state = "defibunit" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' @@ -23,8 +23,8 @@ var/obj/item/stock_parts/cell/cell var/combat = FALSE //can we revive through space suits? var/grab_ghost = FALSE // Do we pull the ghost back into their body? - var/healdisk = FALSE // Will we shock people dragging the body? - var/pullshocksafely = FALSE //Dose the unit have the healdisk upgrade? + var/healdisk = FALSE // Does the unit have the healdisk upgrade? + var/pullshocksafely = FALSE // Will we shock people dragging the body? var/primetime = 0 // is the defib faster var/timedeath = 10 var/disarm_shock_time = 10 @@ -261,7 +261,7 @@ /obj/item/shockpaddles name = "defibrillator paddles" desc = "A pair of plastic-gripped paddles with flat metal surfaces that are used to deliver powerful electric shocks." - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/defibrillators.dmi' icon_state = "defibpaddles0" item_state = "defibpaddles0" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' @@ -682,7 +682,7 @@ /obj/item/shockpaddles/cyborg name = "cyborg defibrillator paddles" - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/defibrillators.dmi' icon_state = "defibpaddles0" item_state = "defibpaddles0" req_defib = FALSE @@ -703,7 +703,7 @@ name = "syndicate defibrillator paddles" desc = "A pair of paddles used to revive deceased operatives. It possesses both the ability to penetrate armor and to deliver powerful shocks offensively." combat = TRUE - icon = 'icons/obj/items_and_weapons.dmi' + icon = 'icons/obj/defibrillators.dmi' icon_state = "defibpaddles0" item_state = "defibpaddles0" req_defib = FALSE diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 035375fdaf..a2459bce9f 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -366,6 +366,11 @@ flashlight_power = 0.8 custom_price = PRICE_CHEAP +/obj/item/flashlight/lantern/heirloom_moth + name = "old lantern" + desc = "An old lantern that has seen plenty of use." + light_range = 4 + /obj/item/flashlight/lantern/jade name = "jade lantern" desc = "An ornate, green lantern." diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index cef06bfde8..687b3ed771 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -19,7 +19,8 @@ var/starting_tape_type = /obj/item/tape/random var/open_panel = 0 var/canprint = 1 - + var/list/icons_available = list() + var/icon_directory = 'icons/radials/taperecorder.dmi' /obj/item/taperecorder/Initialize(mapload) . = ..() @@ -32,6 +33,29 @@ . = ..() . += "The wire panel is [open_panel ? "opened" : "closed"]." +/obj/item/taperecorder/AltClick(mob/user) + . = ..() + play() + +/obj/item/taperecorder/proc/update_available_icons() + icons_available = list() + + if(recording) + icons_available += list("Stop Recording" = image(icon = icon_directory, icon_state = "record_stop")) + else + if(!playing) + icons_available += list("Record" = image(icon = icon_directory, icon_state = "record")) + + if(playing) + icons_available += list("Pause" = image(icon = icon_directory, icon_state = "pause")) + else + if(!recording) + icons_available += list("Play" = image(icon = icon_directory, icon_state = "play")) + + if(canprint && !recording && !playing) + icons_available += list("Print Transcript" = image(icon = icon_directory, icon_state = "print")) + if(mytape) + icons_available += list("Eject" = image(icon = icon_directory, icon_state = "eject")) /obj/item/taperecorder/attackby(obj/item/I, mob/user, params) if(!mytape && istype(I, /obj/item/tape)) @@ -69,7 +93,6 @@ return TRUE return FALSE - /obj/item/taperecorder/verb/ejectverb() set name = "Eject Tape" set category = "Object" @@ -81,7 +104,6 @@ eject(usr) - /obj/item/taperecorder/update_icon_state() if(!mytape) icon_state = "taperecorder_empty" @@ -92,7 +114,6 @@ else icon_state = "taperecorder_idle" - /obj/item/taperecorder/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mode, atom/movable/source) . = ..() if(mytape && recording) @@ -193,13 +214,31 @@ /obj/item/taperecorder/attack_self(mob/user) - if(!mytape || mytape.ruined) + if(!mytape) + to_chat(user, "The [src] does not have a tape inside.") + return + if(mytape.ruined) + to_chat(user, "The tape inside the [src] appears to be broken.") return - if(recording) - stop() - else - record() + update_available_icons() + if(icons_available) + var/selection = show_radial_menu(user, src, icons_available, radius = 38, require_near = TRUE, tooltips = TRUE) + if(!selection) + return + switch(selection) + if("Pause") + stop() + if("Stop Recording") // yes we actually need 2 seperate stops for the same proc- Hopek + stop() + if("Record") + record() + if("Play") + play() + if("Print Transcript") + print_transcript() + if("Eject") + eject(user) /obj/item/taperecorder/verb/print_transcript() set name = "Print Transcript" diff --git a/code/game/objects/items/electrostaff.dm b/code/game/objects/items/electrostaff.dm index 65d2fdd699..31aaff12b5 100644 --- a/code/game/objects/items/electrostaff.dm +++ b/code/game/objects/items/electrostaff.dm @@ -21,12 +21,11 @@ var/can_block_projectiles = FALSE //can't block guns var/lethal_cost = 400 //10000/400*20 = 500. decent enough? var/lethal_damage = 20 - var/lethal_stam_cost = 4 var/stun_cost = 333 //10000/333*25 = 750. stunbatons are at time of writing 10000/1000*49 = 490. var/stun_status_effect = STATUS_EFFECT_ELECTROSTAFF //a small slowdown effect var/stun_stamdmg = 40 var/stun_status_duration = 25 - var/stun_stam_cost = 3.5 + var/stam_cost = 3.5 var/wielded = FALSE // track wielded status on item // haha security desword time /s @@ -171,7 +170,7 @@ turn_off() /obj/item/electrostaff/attack(mob/living/target, mob/living/user) - if(IS_STAMCRIT(user))//CIT CHANGE - makes it impossible to baton in stamina softcrit + if(IS_STAMCRIT(user) || !user.UseStaminaBuffer(stam_cost))//CIT CHANGE - makes it impossible to baton in stamina softcrit to_chat(user, "You're too exhausted to use [src] properly.")//CIT CHANGE - ditto return //CIT CHANGE - ditto if(on && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)) @@ -186,13 +185,11 @@ if(user.a_intent != INTENT_HARM) if(stun_act(target, user, null, return_list)) user.do_attack_animation(target) - user.adjustStaminaLossBuffered(stun_stam_cost) return else if(!harm_act(target, user, null, return_list)) return ..() //if you can't fry them just beat them with it else //we did harm act them user.do_attack_animation(target) - user.adjustStaminaLossBuffered(lethal_stam_cost) /obj/item/electrostaff/proc/stun_act(mob/living/target, mob/living/user, no_charge_and_force = FALSE, list/block_return = list()) var/stunforce = block_calculate_resultant_damage(stun_stamdmg, block_return) diff --git a/code/game/objects/items/implants/implant.dm b/code/game/objects/items/implants/implant.dm index cc2ae3631e..f8e02eaf03 100644 --- a/code/game/objects/items/implants/implant.dm +++ b/code/game/objects/items/implants/implant.dm @@ -40,11 +40,11 @@ //What does the implant do upon injection? //return 1 if the implant injects //return 0 if there is no room for implant / it fails -/obj/item/implant/proc/implant(mob/living/target, mob/user, silent = FALSE) +/obj/item/implant/proc/implant(mob/living/target, mob/user, silent = FALSE, force = FALSE) if(SEND_SIGNAL(src, COMSIG_IMPLANT_IMPLANTING, args) & COMPONENT_STOP_IMPLANTING) return LAZYINITLIST(target.implants) - if(!target.can_be_implanted() || !can_be_implanted_in(target)) + if(!force && (!target.can_be_implanted() || !can_be_implanted_in(target))) return FALSE for(var/X in target.implants) var/obj/item/implant/imp_e = X diff --git a/code/game/objects/items/implants/implant_misc.dm b/code/game/objects/items/implants/implant_misc.dm index 36f82b599c..83e9b21e0b 100644 --- a/code/game/objects/items/implants/implant_misc.dm +++ b/code/game/objects/items/implants/implant_misc.dm @@ -40,17 +40,80 @@ /obj/item/implant/warp name = "warp implant" - desc = "Saves your position somewhere, and then warps you back to it after five seconds." + desc = "Warps you to where you were 10 seconds before when activated." icon_state = "warp" - uses = 15 + uses = -1 + var/total_delay = 10 SECONDS + var/cooldown = 10 SECONDS + var/last_use = 0 + var/list/positions = list() + var/next_prune = 0 + +/obj/item/implant/warp/Destroy() + positions = null + return ..() + +/obj/item/implant/warp/implant(mob/living/target, mob/user, silent, force) + . = ..() + if(.) + update_position() + RegisterSignal(imp_in, COMSIG_MOVABLE_MOVED, .proc/update_position) + +/obj/item/implant/warp/removed(mob/living/source, silent, special) + . = ..() + clear_positions() + +/obj/item/implant/warp/proc/update_position(datum/source) + if(!isatom(imp_in.loc)) + return + positions[num2text(world.time)] = imp_in.loc + if(!((++next_prune) % 10)) + prune() + +/obj/item/implant/warp/proc/clear_positions() + positions = list() + +/obj/item/implant/warp/proc/get_tele_position() + prune() + return positions[positions[1]] + +/obj/item/implant/warp/proc/do_teleport_effects() + var/safety = 100 + var/list/done = list() + var/time + var/turf/target + for(var/i in 1 to positions.len) + if(!--safety) + break + time = positions[i] + target = positions[time] + if(done[target]) + continue + done[target] = TRUE + if(!istype(target)) + continue + new /obj/effect/temp_visual/dir_setting/ninja(target) /obj/item/implant/warp/activate() . = ..() - uses-- - imp_in.do_adrenaline(20, TRUE, 0, 0, TRUE, list(/datum/reagent/fermi/eigenstate = 1.2), "You feel an internal prick as as the bluespace starts ramping up!") - to_chat(imp_in, "You feel an internal prick as as the bluespace starts ramping up!") - if(!uses) - qdel(src) + if(last_use + cooldown > world.time) + to_chat(imp_in, "[src] is still recharging!") + return + last_use = world.time + prune() + do_teleport_effects() //first. + do_teleport(imp_in, get_tele_position(), 0, TRUE, null, null, null, null, null, TELEPORT_CHANNEL_QUANTUM, TRUE) + +/obj/item/implant/warp/proc/prune() + var/minimum_time = world.time - total_delay + var/remove = 0 + for(var/i in 1 to length(positions)) + if(text2num(positions[i]) < minimum_time) + remove++ + else + break + if(remove) + positions.Cut(1, remove + 1) /obj/item/implanter/warp name = "implanter (warp)" diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index e7cf8defc9..e2e0779b53 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -165,6 +165,30 @@ throwforce = 15 bayonet = TRUE +/obj/item/kitchen/knife/combat/survival/knuckledagger + name = "survival dagger" + icon_state = "glaive-dagger" + desc = "An enhanced hunting grade survival dagger, with a bright light and a handguard that makes it better for efficient butchery." + actions_types = list(/datum/action/item_action/toggle_light) + var/light_on = FALSE + var/brightness_on = 7 + +/obj/item/kitchen/knife/combat/survival/knuckledagger/Initialize() + . = ..() + AddComponent(/datum/component/butchering, 50, 120, 5) // it's good for butchering stuff + +/obj/item/kitchen/knife/combat/survival/knuckledagger/ui_action_click(mob/user, actiontype) + light_on = !light_on + playsound(user, 'sound/weapons/empty.ogg', 100, TRUE) + update_brightness(user) + update_icon() + +/obj/item/kitchen/knife/combat/survival/knuckledagger/proc/update_brightness(mob/user = null) + if(light_on) + set_light(brightness_on) + else + set_light(0) + /obj/item/kitchen/knife/combat/bone name = "bone dagger" item_state = "bone_dagger" @@ -222,10 +246,10 @@ /* Trays moved to /obj/item/storage/bag */ /obj/item/kitchen/knife/scimitar - name = "Scimitar knife" + name = "scimitar knife" desc = "A knife used to cleanly butcher. Its razor-sharp edge has been honed for butchering, but has been poorly maintained over the years." attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") -/obj/item/kitchen/knife/scimiar/Initialize() +/obj/item/kitchen/knife/scimitar/Initialize() . = ..() AddComponent(/datum/component/butchering, 90 - force, 100, force - 60) //bonus chance increases depending on force diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 679491aeb6..7d95b8e736 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -190,12 +190,53 @@ /obj/item/melee/transforming/energy/sword/saber possible_colors = list("red" = LIGHT_COLOR_RED, "blue" = LIGHT_COLOR_LIGHT_CYAN, "green" = LIGHT_COLOR_GREEN, "purple" = LIGHT_COLOR_LAVENDER) + unique_reskin = list("Sword" = "sword0", "saber" = "esaber0") var/hacked = FALSE + var/saber = FALSE -/obj/item/melee/transforming/energy/sword/saber/set_sword_color() - if(LAZYLEN(possible_colors)) +/obj/item/melee/transforming/energy/sword/saber/transform_weapon(mob/living/user, supress_message_text) + . = ..() + if(.) + if(active) + if(sword_color) + if(saber) + icon_state = "esaber[sword_color]" + else + icon_state = "sword[sword_color]" + else + if(saber) + icon_state = "esaber0" + else + icon_state = "sword0" + +/obj/item/melee/transforming/energy/sword/saber/reskin_obj(mob/M) + . = ..() + if(icon_state == "esaber0") + saber = TRUE + if(active) + if(saber) + icon_state = "esaber[sword_color]" + else + icon_state = "sword[sword_color]" + +/obj/item/melee/transforming/energy/sword/saber/set_sword_color(var/color_forced) + if(color_forced) // wow i really do not like this at fucking all holy SHIT + if(color_forced == "red") + sword_color = "red" + light_color = LIGHT_COLOR_RED + else if(color_forced == "blue") + sword_color = "blue" + light_color = LIGHT_COLOR_LIGHT_CYAN + else if(color_forced == "green") + sword_color = "green" + light_color = LIGHT_COLOR_GREEN + else if(color_forced == "purple") + sword_color = "purple" + light_color = LIGHT_COLOR_LAVENDER + else if(LAZYLEN(possible_colors)) sword_color = pick(possible_colors) light_color = possible_colors[sword_color] + return /obj/item/melee/transforming/energy/sword/saber/process() . = ..() @@ -204,30 +245,59 @@ light_color = possible_colors[set_color] update_light() -/obj/item/melee/transforming/energy/sword/saber/red - possible_colors = list("red" = LIGHT_COLOR_RED) +/obj/item/melee/transforming/energy/sword/saber/red/Initialize(mapload) + . = ..() + set_sword_color("red") -/obj/item/melee/transforming/energy/sword/saber/blue - possible_colors = list("blue" = LIGHT_COLOR_LIGHT_CYAN) +/obj/item/melee/transforming/energy/sword/saber/blue/Initialize(mapload) + . = ..() + set_sword_color("blue") -/obj/item/melee/transforming/energy/sword/saber/green - possible_colors = list("green" = LIGHT_COLOR_GREEN) +/obj/item/melee/transforming/energy/sword/saber/green/Initialize(mapload) + . = ..() + set_sword_color("green") -/obj/item/melee/transforming/energy/sword/saber/purple - possible_colors = list("purple" = LIGHT_COLOR_LAVENDER) +/obj/item/melee/transforming/energy/sword/saber/purple/Initialize(mapload) + . = ..() + set_sword_color("purple") + +/obj/item/melee/transforming/energy/sword/saber/proc/select_sword_color(mob/user) /// this is for the radial + if(!istype(user) || user.incapacitated()) + return + + var/static/list/options = list( + "red" = image(icon = 'icons/obj/items_and_weapons.dmi', icon_state = "swordred-blade"), + "blue" = image(icon = 'icons/obj/items_and_weapons.dmi', icon_state = "swordblue-blade"), + "green" = image(icon = 'icons/obj/items_and_weapons.dmi', icon_state = "swordgreen-blade"), + "purple" = image(icon = 'icons/obj/items_and_weapons.dmi', icon_state = "swordpurple-blade") + ) + + var/choice = show_radial_menu(user, src, options, custom_check = FALSE, radius = 36, require_near = TRUE) + + if(src && choice && !user.incapacitated() && in_range(user,src)) + set_sword_color(choice) + to_chat(user, "[src] is now [choice].") /obj/item/melee/transforming/energy/sword/saber/attackby(obj/item/W, mob/living/user, params) if(istype(W, /obj/item/multitool)) + if(user.a_intent == INTENT_DISARM) + if(!active) + to_chat(user, "COLOR_SET") + hacked = FALSE + select_sword_color(user) + return + else + to_chat(user, "Turn it off first - getting that close to an active sword is not a great idea.") + return if(!hacked) hacked = TRUE sword_color = "rainbow" to_chat(user, "RNBW_ENGAGE") - if(active) icon_state = "swordrainbow" user.update_inv_hands() else - to_chat(user, "It's already fabulous!") + to_chat(user, "It's already fabulous! If you wanted to reset the color, though, try a disarming intent while it's off.") else return ..() diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 52ff0f740e..15d10c4d11 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -352,6 +352,8 @@ return else if(cooldown_check < world.time) + if(!UseStaminaBufferStandard(user, STAM_COST_BATON_MOB_MULT, warn = TRUE)) + return DISCARD_LAST_ACTION if(target.mob_run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user, null, null) & BLOCK_SUCCESS) playsound(target, 'sound/weapons/genhit.ogg', 50, 1) return @@ -373,7 +375,6 @@ else target.LAssailant = WEAKREF(user) cooldown_check = world.time + cooldown - user.adjustStaminaLossBuffered(getweight(user, STAM_COST_BATON_MOB_MULT)) else var/wait_desc = get_wait_description() if(wait_desc) diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index 7e14fb9d35..2d2c0f31b6 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -62,7 +62,7 @@ msg = "You hear something crackle in your ears for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows: Item request received. Your package is inbound, please stand back from the landing site. Message ends.\"" to_chat(M, msg) - new /obj/effect/abstract/DPtarget(get_turf(src), pod) + new /obj/effect/pod_landingzone(get_turf(src), pod) /obj/item/choice_beacon/ingredients name = "ingredient box delivery beacon" diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm index b420bfc002..01ef96b7e8 100644 --- a/code/game/objects/items/mop.dm +++ b/code/game/objects/items/mop.dm @@ -56,22 +56,20 @@ return if(T) + if(!L.UseStaminaBuffer(stamusage, warn = TRUE)) + return user.visible_message("[user] cleans \the [T] with [src].", "You clean \the [T] with [src].") clean(T) user.DelayNextAction(CLICK_CD_MELEE) user.do_attack_animation(T, used_item = src) - if(istype(L)) - L.adjustStaminaLossBuffered(stamusage) playsound(T, "slosh", 50, 1) - /obj/effect/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/mop) || istype(I, /obj/item/soap)) return else return ..() - /obj/item/mop/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) if(insertable) J.put_in_cart(src, user) diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index 3420e72c72..abd9cec950 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -199,4 +199,12 @@ /obj/item/pinpointer/shuttle/Destroy() shuttleport = null - . = ..() \ No newline at end of file + . = ..() + +/obj/item/pinpointer/ian + name = "ian pinpointer" + desc = "A handheld tracking device that locates Ian. Made with real corgis!" + icon_state = "pinpointer_ian" + +/obj/item/pinpointer/ian/scan_for_target() + target = locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in GLOB.mob_living_list diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 9a8f1214f0..9bc20565a6 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -150,6 +150,7 @@ if(squeak_override) var/datum/component/squeak/S = GetComponent(/datum/component/squeak) S?.override_squeak_sounds = squeak_override + snowflake_id = id /obj/item/toy/plush/handle_atom_del(atom/A) if(A == grenade) @@ -827,12 +828,16 @@ GLOBAL_LIST_INIT(valid_plushie_paths, valid_plushie_paths()) if(!victim) return visible_message("[src] gruesomely mutilliates [victim], leaving nothing more than dust!") - name = victim.name - desc = victim.desc + " Wait, did it just move..?" - icon_state = victim.icon_state - item_state = victim.item_state - squeak_override = victim.squeak_override - attack_verb = victim.attack_verb + if(victim.snowflake_id) //Snowflake code for snowflake plushies. + set_snowflake_from_config(victim.snowflake_id) + desc += " Wait, did it just move..?" + else + name = victim.name + desc = victim.desc + " Wait, did it just move..?" + icon_state = victim.icon_state + item_state = victim.item_state + squeak_override = victim.squeak_override + attack_verb = victim.attack_verb new /obj/effect/decal/cleanable/ash(get_turf(victim)) qdel(victim) diff --git a/code/game/objects/items/powerfist.dm b/code/game/objects/items/powerfist.dm index 2834b3b758..bd83404356 100644 --- a/code/game/objects/items/powerfist.dm +++ b/code/game/objects/items/powerfist.dm @@ -6,7 +6,7 @@ lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' flags_1 = CONDUCT_1 - item_flags = NEEDS_PERMIT | NO_COMBAT_MODE_FORCE_MODIFIER //To avoid ambushing and oneshotting healthy crewmembers on force setting 3. + item_flags = NEEDS_PERMIT attack_verb = list("whacked", "fisted", "power-punched") force = 20 throwforce = 10 @@ -76,6 +76,9 @@ if(!tank) to_chat(user, "\The [src] can't operate without a source of gas!") return FALSE + var/weight = getweight(user, STAM_COST_ATTACK_MOB_MULT) + if(!user.UseStaminaBuffer(weight, warn = TRUE)) + return FALSE var/datum/gas_mixture/gasused = tank.air_contents.remove(gasperfist * fisto_setting) var/turf/T = get_turf(src) if(!T) @@ -108,8 +111,4 @@ target.throw_at(throw_target, 5 * fisto_setting, 0.5 + (fisto_setting / 2)) log_combat(user, target, "power fisted", src) - - var/weight = getweight(user, STAM_COST_ATTACK_MOB_MULT) - if(weight) - user.adjustStaminaLossBuffered(weight) return TRUE diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 80fd177d84..9f098bc16c 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -27,6 +27,13 @@ return FALSE return TRUE +/* +This proc gets called by upgrades after installing them. Use this for things that for example need to be moved into a specific borg item, +as performing this in action() will cause the upgrade to end up in the borg instead of its intended location due to forceMove() being called afterwards.. +*/ +/obj/item/borg/upgrade/proc/afterInstall(mob/living/silicon/robot/R, user = usr) + return + /obj/item/borg/upgrade/proc/deactivate(mob/living/silicon/robot/R, user = usr) if (!(src in R.upgrades)) return FALSE diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 4952c93928..d1d57fe375 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -136,15 +136,17 @@ if(!(shield_flags & SHIELD_BASH_GROUND_SLAM)) to_chat(user, "You can't ground slam with [src]!") return FALSE + if(!user.UseStaminaBuffer(shieldbash_stamcost, warn = TRUE)) + return FALSE bash_target(user, target, NONE, harmful) user.do_attack_animation(target, used_item = src) playsound(src, harmful? "swing_hit" : 'sound/weapons/thudswoosh.ogg', 75, 1) last_shieldbash = world.time - user.adjustStaminaLossBuffered(shieldbash_stamcost) return TRUE // Directional sweep! last_shieldbash = world.time - user.adjustStaminaLossBuffered(shieldbash_stamcost) + if(!user.UseStaminaBuffer(shieldbash_stamcost, warn = TRUE)) + return FALSE // Since we are in combat mode, we can probably safely use the user's dir instead of getting their mouse pointing cardinal dir. var/bashdir = user.dir do_shieldbash_effect(user, bashdir, harmful) diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 7a33134afd..0f338383c0 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -211,6 +211,12 @@ turf_type = /turf/open/floor/carpet/black tableVariant = /obj/structure/table/wood/fancy/black +/obj/item/stack/tile/carpet/arcade + name = "arcade carpet" + icon_state = "tile-carpet-arcade" + turf_type = /turf/open/floor/carpet/arcade + tableVariant = null + /obj/item/stack/tile/carpet/blackred name = "red carpet" icon_state = "tile-carpet-blackred" @@ -297,6 +303,15 @@ /obj/item/stack/tile/carpet/black/fifty amount = 50 +/obj/item/stack/tile/carpet/arcade/ten + amount = 10 + +/obj/item/stack/tile/carpet/arcade/twenty + amount = 20 + +/obj/item/stack/tile/carpet/arcade/fifty + amount = 50 + /obj/item/stack/tile/carpet/blackred/ten amount = 10 diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index b64aa60cac..ab1aab32a0 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -234,7 +234,7 @@ STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 100 STR.max_items = 100 - STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/grown, /obj/item/seeds, /obj/item/grown, /obj/item/reagent_containers/honeycomb)) + STR.can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/grown, /obj/item/seeds, /obj/item/grown, /obj/item/reagent_containers/honeycomb, /obj/item/disk/plantgene)) //////// diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 590df34cde..28af52a646 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -830,3 +830,28 @@ var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 2 STR.max_w_class = WEIGHT_CLASS_BULKY + WEIGHT_CLASS_NORMAL //katana and waki. + +/obj/item/storage/belt/plant + name = "botanical belt" + desc = "A belt used to hold most hydroponics supplies. Suprisingly, not green." + icon_state = "plantbelt" + item_state = "plantbelt" + content_overlays = TRUE + +/obj/item/storage/belt/plant/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_items = 6 + STR.max_w_class = WEIGHT_CLASS_NORMAL + STR.can_hold = typecacheof(list( + /obj/item/reagent_containers/spray/plantbgone, + /obj/item/plant_analyzer, + /obj/item/seeds, + /obj/item/reagent_containers/glass/bottle, + /obj/item/reagent_containers/glass/beaker, + /obj/item/cultivator, + /obj/item/reagent_containers/spray/pestspray, + /obj/item/hatchet, + /obj/item/shovel/spade, + /obj/item/gun/energy/floragun + )) diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index 5e76d506ba..a7d96fe6eb 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -166,13 +166,12 @@ if(turned_on) if(baton_stun(M, user, disarming)) user.do_attack_animation(M) - user.adjustStaminaLossBuffered(getweight(user, STAM_COST_BATON_MOB_MULT)) else if(user.a_intent != INTENT_HARM) //they'll try to bash in the last proc. M.visible_message("[user] has prodded [M] with [src]. Luckily it was off.", \ "[user] has prodded you with [src]. Luckily it was off") return disarming || (user.a_intent != INTENT_HARM) -/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user, disarming = FALSE) +/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/living/user, disarming = FALSE) var/list/return_list = list() if(L.mob_run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user, null, return_list) & BLOCK_SUCCESS) //No message; check_shields() handles that playsound(L, 'sound/weapons/genhit.ogg', 50, 1) @@ -194,6 +193,9 @@ return FALSE stunpwr *= round(stuncharge/hitcost, 0.1) + if(!user.UseStaminaBuffer(getweight(user, STAM_COST_BATON_MOB_MULT), warn = TRUE)) + return FALSE + if(!disarming) if(knockdown) L.DefaultCombatKnockdown(50, override_stamdmg = 0) //knockdown diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index 7cf25098e1..29961d12b4 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -55,6 +55,8 @@ RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/move_react) if(full_speed) user.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed) + else + user.add_movespeed_modifier(/datum/movespeed_modifier/jetpack) /obj/item/tank/jetpack/proc/turn_off(mob/user) on = FALSE @@ -63,6 +65,7 @@ ion_trail.stop() UnregisterSignal(user, COMSIG_MOVABLE_MOVED) user.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed) + user.remove_movespeed_modifier(/datum/movespeed_modifier/jetpack) /obj/item/tank/jetpack/proc/move_react(mob/user) allow_thrust(0.01, user) diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index 6159ab7ba0..0dd9885c29 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -37,6 +37,9 @@ icon_state = "crowbar_clock" toolspeed = 0.5 +/obj/item/crowbar/brass/family + toolspeed = 1 + /obj/item/crowbar/bronze name = "bronze plated crowbar" desc = "A bronze plated crowbar." diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 86c223606d..bf767af2ed 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -89,6 +89,9 @@ toolspeed = 0.5 random_color = FALSE +/obj/item/screwdriver/brass/family + toolspeed = 1 + /obj/item/screwdriver/bronze name = "bronze screwdriver" desc = "A screwdriver plated with bronze." @@ -158,4 +161,4 @@ item_state = "screwdriver_nuke" usesound = 'sound/items/pshoom.ogg' toolspeed = 0.2 - random_color = FALSE \ No newline at end of file + random_color = FALSE diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm index 53a578a45d..000b816d70 100644 --- a/code/game/objects/items/tools/wirecutters.dm +++ b/code/game/objects/items/tools/wirecutters.dm @@ -69,6 +69,9 @@ random_color = FALSE toolspeed = 0.5 +/obj/item/wirecutters/brass/family + toolspeed = 1 + /obj/item/wirecutters/bronze name = "bronze plated wirecutters" desc = "A pair of wirecutters plated with bronze." diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index e1c09f394e..e8b77199d7 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -40,6 +40,9 @@ icon_state = "wrench_clock" toolspeed = 0.5 +/obj/item/wrench/brass/family + toolspeed = 1 + /obj/item/wrench/bronze name = "bronze plated wrench" desc = "A bronze plated wrench." diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 3abee4db33..8a14d99776 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -304,18 +304,36 @@ /obj/proc/reskin_obj(mob/M) if(!LAZYLEN(unique_reskin)) return - var/list/skins = list() - for(var/S in unique_reskin) - skins[S] = image(icon = icon, icon_state = unique_reskin[S]) - var/choice = show_radial_menu(M, src, skins, custom_check = CALLBACK(src, .proc/check_skinnable, M), radius = 40, require_near = TRUE) - if(!choice) - return FALSE - icon_state = unique_reskin[choice] - current_skin = choice - return -/obj/proc/check_skinnable(/mob/M) - if(current_skin || !always_reskinnable) + var/list/items = list() + for(var/reskin_option in unique_reskin) + var/image/item_image = image(icon = src.icon, icon_state = unique_reskin[reskin_option]) + items += list("[reskin_option]" = item_image) + sortList(items) + + var/pick = show_radial_menu(M, src, items, custom_check = CALLBACK(src, .proc/check_reskin_menu, M), radius = 38, require_near = TRUE) + if(!pick) + return + if(!unique_reskin[pick]) + return + current_skin = pick + icon_state = unique_reskin[pick] + to_chat(M, "[src] is now skinned as '[pick].'") + +/** + * Checks if we are allowed to interact with a radial menu for reskins + * + * Arguments: + * * user The mob interacting with the menu + */ +/obj/proc/check_reskin_menu(mob/user) + if(QDELETED(src)) + return FALSE + if(current_skin) + return FALSE + if(!istype(user)) + return FALSE + if(user.incapacitated()) return FALSE return TRUE diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm index 1e278a9f88..d996f86df7 100644 --- a/code/game/objects/structures/holosign.dm +++ b/code/game/objects/structures/holosign.dm @@ -98,6 +98,10 @@ /obj/structure/holosign/barrier/firelock/BlockSuperconductivity() return TRUE +/obj/structure/holosign/barrier/firelock/Initialize() + . = ..() + air_update_turf(TRUE) + /obj/structure/holosign/barrier/combifan name = "holo combifan" desc = "A holographic barrier resembling a blue-accented tiny fan. Though it does not prevent solid objects from passing through, gas and temperature changes are kept out." diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 6e497cff60..17c90e1444 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -100,7 +100,7 @@ number_of_rods = 2 smooth = SMOOTH_TRUE canSmoothWith = null - obj_flags = CAN_BE_HIT | BLOCK_Z_FALL + obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP /obj/structure/lattice/catwalk/deconstruction_hints(mob/user) to_chat(user, "The supporting rods look like they could be cut.") @@ -159,7 +159,7 @@ color = "#5286b9ff" smooth = SMOOTH_TRUE canSmoothWith = null - obj_flags = CAN_BE_HIT | BLOCK_Z_FALL + obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP resistance_flags = FIRE_PROOF | LAVA_PROOF /obj/structure/lattice/lava/deconstruction_hints(mob/user) diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm index e8fbafa42b..d89606417f 100644 --- a/code/game/objects/structures/manned_turret.dm +++ b/code/game/objects/structures/manned_turret.dm @@ -11,7 +11,7 @@ max_integrity = 100 buckle_lying = FALSE layer = ABOVE_MOB_LAYER - var/view_range = 10 + var/view_range = 3 var/cooldown = 0 var/projectile_type = /obj/item/projectile/bullet/manned_turret var/rate_of_fire = 1 @@ -38,7 +38,7 @@ buckled_mob.pixel_x = 0 buckled_mob.pixel_y = 0 if(buckled_mob.client) - buckled_mob.client.change_view(CONFIG_GET(string/default_view)) + buckled_mob.client.view_size.resetToDefault() anchored = FALSE . = ..() STOP_PROCESSING(SSfastprocess, src) @@ -65,7 +65,7 @@ playsound(src,'sound/mecha/mechmove01.ogg', 50, 1) anchored = TRUE if(M.client) - M.client.change_view(view_range) + M.client.view_size.setTo(view_range) START_PROCESSING(SSfastprocess, src) /obj/machinery/manned_turret/process() diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 758685ede7..fa6bab0fcc 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -163,7 +163,7 @@ var/custom_tone = input(user, "Choose your custom skin tone:", "Race change", default) as color|null if(custom_tone) var/temp_hsv = RGBtoHSV(new_s_tone) - if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) to_chat(H,"Invalid color. Your color is not bright enough.") else H.skin_tone = custom_tone @@ -177,7 +177,7 @@ if(new_mutantcolor) var/temp_hsv = RGBtoHSV(new_mutantcolor) - if(ReadHSV(temp_hsv)[3] >= ReadHSV("#7F7F7F")[3]) // mutantcolors must be bright + if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) // mutantcolors must be bright H.dna.features["mcolor"] = sanitize_hexcolor(new_mutantcolor) else diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 9f91d2c5e0..31f11a199c 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -73,7 +73,7 @@ if(user.grab_state < GRAB_AGGRESSIVE) to_chat(user, "You need a better grip to do that!") return - if(user.grab_state >= GRAB_NECK) + if(user.grab_state >= GRAB_NECK || HAS_TRAIT(user, TRAIT_MAULER)) tablelimbsmash(user, pushed_mob) else tablepush(user, pushed_mob) @@ -147,7 +147,7 @@ pushed_mob.Knockdown(30) var/obj/item/bodypart/banged_limb = pushed_mob.get_bodypart(user.zone_selected) || pushed_mob.get_bodypart(BODY_ZONE_HEAD) var/extra_wound = 0 - if(HAS_TRAIT(user, TRAIT_HULK)) + if(HAS_TRAIT(user, TRAIT_HULK) || HAS_TRAIT(user, TRAIT_MAULER)) extra_wound = 20 banged_limb.receive_damage(30, wound_bonus = extra_wound) pushed_mob.apply_damage(60, STAMINA) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index c52249686a..2214f9e4bb 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -131,15 +131,12 @@ return ..() /obj/structure/toilet/secret - var/obj/item/secret var/secret_type = null -/obj/structure/toilet/secret/Initialize(mapload) +/obj/structure/toilet/secret/Initialize() . = ..() if (secret_type) - secret = new secret_type(src) - secret.desc += "" //In case you want to add something to the item that spawns - contents += secret + new secret_type(src) /obj/structure/toilet/secret/LateInitialize() . = ..() diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 1ff056c572..493e88d442 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -18,11 +18,21 @@ //direction is direction of travel of A /turf/open/zPassIn(atom/movable/A, direction, turf/source) - return (direction == DOWN) + if(direction == DOWN) + for(var/obj/O in contents) + if(O.obj_flags & BLOCK_Z_IN_DOWN) + return FALSE + return TRUE + return FALSE //direction is direction of travel of A /turf/open/zPassOut(atom/movable/A, direction, turf/destination) - return (direction == UP) + if(direction == UP) + for(var/obj/O in contents) + if(O.obj_flags & BLOCK_Z_OUT_UP) + return FALSE + return TRUE + return FALSE //direction is direction of travel of air /turf/open/zAirIn(direction, turf/source) diff --git a/code/game/turfs/openspace/openspace.dm b/code/game/turfs/openspace/openspace.dm index ea539ce5b5..0607f19dd3 100644 --- a/code/game/turfs/openspace/openspace.dm +++ b/code/game/turfs/openspace/openspace.dm @@ -49,15 +49,32 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr return TRUE /turf/open/transparent/openspace/zPassIn(atom/movable/A, direction, turf/source) - return TRUE + if(direction == DOWN) + for(var/obj/O in contents) + if(O.obj_flags & BLOCK_Z_IN_DOWN) + return FALSE + return TRUE + if(direction == UP) + for(var/obj/O in contents) + if(O.obj_flags & BLOCK_Z_IN_UP) + return FALSE + return TRUE + return FALSE /turf/open/transparent/openspace/zPassOut(atom/movable/A, direction, turf/destination) if(A.anchored) return FALSE - for(var/obj/O in contents) - if(O.obj_flags & BLOCK_Z_FALL) - return FALSE - return TRUE + if(direction == DOWN) + for(var/obj/O in contents) + if(O.obj_flags & BLOCK_Z_OUT_DOWN) + return FALSE + return TRUE + if(direction == UP) + for(var/obj/O in contents) + if(O.obj_flags & BLOCK_Z_OUT_UP) + return FALSE + return TRUE + return FALSE /turf/open/transparent/openspace/proc/CanCoverUp() return can_cover_up diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 877d236e84..ddec9750d9 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -46,7 +46,7 @@ "basalt0","basalt1","basalt2","basalt3","basalt4", "basalt5","basalt6","basalt7","basalt8","basalt9","basalt10","basalt11","basalt12", "oldburning","light-on-r","light-on-y","light-on-g","light-on-b", "wood", "carpetsymbol", "carpetstar", - "carpetcorner", "carpetside", "carpet", "ironsand1", "ironsand2", "ironsand3", "ironsand4", "ironsand5", + "carpetcorner", "carpetside", "carpet", "arcade", "ironsand1", "ironsand2", "ironsand3", "ironsand4", "ironsand5", "ironsand6", "ironsand7", "ironsand8", "ironsand9", "ironsand10", "ironsand11", "ironsand12", "ironsand13", "ironsand14", "ironsand15", "snow", "snow0", "snow1", "snow2", "snow3", "snow4", "snow5", "snow6", "snow7", "snow8", "snow9", "snow10", "snow11", "snow12", "snow-ice", "snow_dug", diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm index eae45bfd76..3cf6cc7511 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -273,6 +273,13 @@ smooth = SMOOTH_MORE canSmoothWith = list(/turf/open/floor/carpet/black, /turf/open/floor/carpet/blackred, /turf/open/floor/carpet/monochrome) +/turf/open/floor/carpet/arcade + icon = 'icons/turf/floors.dmi' + icon_state = "arcade" + floor_tile = /obj/item/stack/tile/carpet/arcade + smooth = SMOOTH_FALSE + canSmoothWith = list() + /turf/open/floor/carpet/blackred icon = 'icons/turf/floors/carpet_blackred.dmi' floor_tile = /obj/item/stack/tile/carpet/blackred diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm index 6e7dbaf904..d9dbf3aa3b 100644 --- a/code/game/turfs/simulated/floor/plating/asteroid.dm +++ b/code/game/turfs/simulated/floor/plating/asteroid.dm @@ -204,7 +204,8 @@ digResult = /obj/item/stack/sheet/mineral/snow mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/wolf = 50, /obj/structure/spawner/ice_moon = 3, \ /mob/living/simple_animal/hostile/asteroid/polarbear = 30, /obj/structure/spawner/ice_moon/polarbear = 3, \ - /mob/living/simple_animal/hostile/asteroid/hivelord/legion/snow = 50, /mob/living/simple_animal/hostile/asteroid/goldgrub = 10) + /mob/living/simple_animal/hostile/asteroid/hivelord/legion/snow = 50, /mob/living/simple_animal/hostile/asteroid/goldgrub = 10, \ + /mob/living/simple_animal/hostile/asteroid/lobstrosity = 15) flora_spawn_list = list(/obj/structure/flora/tree/pine = 2, /obj/structure/flora/grass/both = 12, /obj/structure/flora/rock/icy = 6, /obj/structure/flora/rock/pile/icy = 6) data_having_type = /turf/open/floor/plating/asteroid/airless/cave/snow/has_data turf_type = /turf/open/floor/plating/asteroid/snow/icemoon diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 0e028ed4af..b150d4930e 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -133,13 +133,10 @@ else to_chat(user, "The plating is going to need some support! Place metal rods first.") -/turf/open/space/Entered(atom/movable/A, atom/OldLoc) - . = ..() - - var/turf/old = get_turf(OldLoc) - if(!isspaceturf(old) && ismob(A)) - var/mob/M = A - M.update_gravity(M.mob_has_gravity()) +/turf/open/space/Entered(atom/movable/A) + ..() + if ((!(A) || src != A.loc)) + return if(destination_z && destination_x && destination_y && !(A.pulledby || !A.can_be_z_moved)) var/tx = destination_x @@ -160,18 +157,27 @@ ty-- DT = locate(tx, ty, destination_z) - var/atom/movable/AM = A.pulling + var/atom/movable/pulling = A.pulling + var/atom/movable/puller = A A.forceMove(DT) - if(AM) - var/turf/T = get_step(A.loc,turn(A.dir, 180)) - AM.can_be_z_moved = FALSE - AM.forceMove(T) - A.start_pulling(AM) - AM.can_be_z_moved = TRUE + + while (pulling != null) + var/next_pulling = pulling.pulling + + var/turf/T = get_step(puller.loc, turn(puller.dir, 180)) + pulling.can_be_z_moved = FALSE + pulling.forceMove(T) + puller.start_pulling(pulling) + pulling.can_be_z_moved = TRUE + + puller = pulling + pulling = next_pulling //now we're on the new z_level, proceed the space drifting stoplag()//Let a diagonal move finish, if necessary A.newtonian_move(A.inertia_dir) + A.inertia_moving = TRUE + /turf/open/space/Exited(atom/movable/AM, atom/OldLoc) . = ..() @@ -235,3 +241,110 @@ destination_x = dest_x destination_y = dest_y destination_z = dest_z + + +/turf/open/space/transparent + baseturfs = /turf/open/space/transparent/openspace + intact = FALSE //this means wires go on top + +/turf/open/space/transparent/Initialize() // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker + ..() + plane = OPENSPACE_PLANE + layer = OPENSPACE_LAYER + icon_state = "transparent" + + return INITIALIZE_HINT_LATELOAD + +/turf/open/space/transparent/LateInitialize() + update_multiz(TRUE, TRUE) + +/turf/open/space/transparent/Destroy() + vis_contents.len = 0 + return ..() + +/turf/open/space/transparent/update_multiz(prune_on_fail = FALSE, init = FALSE) + . = ..() + var/turf/T = below() + if(!T) + vis_contents.len = 0 + if(!show_bottom_level() && prune_on_fail) //If we cant show whats below, and we prune on fail, change the turf to space as a fallback + ChangeTurf(/turf/open/space) + return FALSE + if(init) + vis_contents += T + return TRUE + +/turf/open/space/transparent/multiz_turf_del(turf/T, dir) + if(dir != DOWN) + return + update_multiz() + +/turf/open/space/transparent/multiz_turf_new(turf/T, dir) + if(dir != DOWN) + return + update_multiz() + +///Called when there is no real turf below this turf +/turf/open/space/transparent/proc/show_bottom_level() + var/turf/path = SSmapping.level_trait(z, ZTRAIT_BASETURF) || /turf/open/space + if(!ispath(path)) + path = text2path(path) + if(!ispath(path)) + warning("Z-level [z] has invalid baseturf '[SSmapping.level_trait(z, ZTRAIT_BASETURF)]'") + path = /turf/open/space + var/mutable_appearance/underlay_appearance = mutable_appearance(initial(path.icon), initial(path.icon_state), layer = TURF_LAYER, plane = PLANE_SPACE) + underlays += underlay_appearance + return TRUE + +/turf/open/space/transparent/openspace + name = "open space" + desc = "Watch your step!" + icon_state = "transparent" + baseturfs = /turf/open/space/transparent/openspace + CanAtmosPassVertical = ATMOS_PASS_YES + //mouse_opacity = MOUSE_OPACITY_TRANSPARENT + +///No bottom level for openspace. +/turf/open/space/transparent/openspace/show_bottom_level() + return FALSE + +/turf/open/space/transparent/openspace/Initialize() // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker + . = ..() + + icon_state = "transparent" + + vis_contents += GLOB.openspace_backdrop_one_for_all //Special grey square for projecting backdrop darkness filter on it. + +/turf/open/space/transparent/openspace/zAirIn() + return TRUE + +/turf/open/space/transparent/openspace/zAirOut() + return TRUE + +/turf/open/space/transparent/openspace/zPassIn(atom/movable/A, direction, turf/source) + if(direction == DOWN) + for(var/obj/O in contents) + if(O.obj_flags & BLOCK_Z_IN_DOWN) + return FALSE + return TRUE + if(direction == UP) + for(var/obj/O in contents) + if(O.obj_flags & BLOCK_Z_IN_UP) + return FALSE + return TRUE + return FALSE + +/turf/open/space/transparent/openspace/zPassOut(atom/movable/A, direction, turf/destination) + if(A.anchored) + return FALSE + if(direction == DOWN) + for(var/obj/O in contents) + if(O.obj_flags & BLOCK_Z_OUT_DOWN) + return FALSE + return TRUE + if(direction == UP) + for(var/obj/O in contents) + if(O.obj_flags & BLOCK_Z_OUT_UP) + return FALSE + return TRUE + return FALSE diff --git a/code/modules/actionspeed/_actionspeed_modifier.dm b/code/modules/actionspeed/_actionspeed_modifier.dm new file mode 100644 index 0000000000..fe244e6653 --- /dev/null +++ b/code/modules/actionspeed/_actionspeed_modifier.dm @@ -0,0 +1,175 @@ +/*! Actionspeed modification datums. + + How action speed for mobs works + +Action speed is now calculated by using modifier datums which are added to mobs. Some of them (nonvariable ones) are globally cached, the variable ones are instanced and changed based on need. + +This gives us the ability to have multiple sources of actionspeed, reliabily keep them applied and remove them when they should be + +THey can have unique sources and a bunch of extra fancy flags that control behaviour + +Previously trying to update action speed was a shot in the dark that usually meant mobs got stuck going faster or slower + +Actionspeed modification list is a simple key = datum system. Key will be the datum's ID if it is overridden to not be null, or type if it is not. + +DO NOT override datum IDs unless you are going to have multiple types that must overwrite each other. It's more efficient to use types, ID functionality is only kept for cases where dynamic creation of modifiers need to be done. + +When update actionspeed is called, the list of items is iterated, according to flags priority and a bunch of conditions +this spits out a final calculated value which is used as a modifer to last_move + modifier for calculating when a mob +can next move + +*/ + +/datum/actionspeed_modifier + /// Whether or not this is a variable modifier. Variable modifiers can NOT be ever auto-cached. ONLY CHECKED VIA INITIAL(), EFFECTIVELY READ ONLY (and for very good reason) + var/variable = FALSE + + /// Unique ID. You can never have different modifications with the same ID. By default, this SHOULD NOT be set. Only set it for cases where you're dynamically making modifiers/need to have two types overwrite each other. If unset, uses path (converted to text) as ID. + var/id + + /// Higher ones override lower priorities. This is NOT used for ID, ID must be unique, if it isn't unique the newer one overwrites automatically if overriding. + var/priority = 0 + var/flags = NONE + + /// Multiplicative slowdown + var/multiplicative_slowdown = 0 + + /// Other modification datums this conflicts with. + var/conflicts_with + +/datum/actionspeed_modifier/New() + . = ..() + if(!id) + id = "[type]" //We turn the path into a string. + +GLOBAL_LIST_EMPTY(actionspeed_modification_cache) + +/// Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO! +/proc/get_cached_actionspeed_modifier(modtype) + if(!ispath(modtype, /datum/actionspeed_modifier)) + CRASH("[modtype] is not a actionspeed modification typepath.") + var/datum/actionspeed_modifier/actionspeed_mod = modtype + if(initial(actionspeed_mod.variable)) + CRASH("[modtype] is a variable modifier, and can never be cached.") + actionspeed_mod = GLOB.actionspeed_modification_cache[modtype] + if(!actionspeed_mod) + actionspeed_mod = GLOB.actionspeed_modification_cache[modtype] = new modtype + return actionspeed_mod + +///Add a action speed modifier to a mob. If a variable subtype is passed in as the first argument, it will make a new datum. If ID conflicts, it will overwrite the old ID. +/mob/proc/add_actionspeed_modifier(datum/actionspeed_modifier/type_or_datum, update = TRUE) + if(ispath(type_or_datum)) + if(!initial(type_or_datum.variable)) + type_or_datum = get_cached_actionspeed_modifier(type_or_datum) + else + type_or_datum = new type_or_datum + var/datum/actionspeed_modifier/existing = LAZYACCESS(actionspeed_modification, type_or_datum.id) + if(existing) + if(existing == type_or_datum) //same thing don't need to touch + return TRUE + remove_actionspeed_modifier(existing, FALSE) + if(length(actionspeed_modification)) + BINARY_INSERT(type_or_datum.id, actionspeed_modification, datum/actionspeed_modifier, type_or_datum, priority, COMPARE_VALUE) + LAZYSET(actionspeed_modification, type_or_datum.id, type_or_datum) + if(update) + update_actionspeed() + return TRUE + +/// Remove a action speed modifier from a mob, whether static or variable. +/mob/proc/remove_actionspeed_modifier(datum/actionspeed_modifier/type_id_datum, update = TRUE) + var/key + if(ispath(type_id_datum)) + key = initial(type_id_datum.id) || "[type_id_datum]" //id if set, path set to string if not. + else if(!istext(type_id_datum)) //if it isn't text it has to be a datum, as it isn't a type. + key = type_id_datum.id + else //assume it's an id + key = type_id_datum + if(!LAZYACCESS(actionspeed_modification, key)) + return FALSE + LAZYREMOVE(actionspeed_modification, key) + if(update) + update_actionspeed(FALSE) + return TRUE + +/*! Used for variable slowdowns like hunger/health loss/etc, works somewhat like the old list-based modification adds. Returns the modifier datum if successful + How this SHOULD work is: + 1. Ensures type_id_datum one way or another refers to a /variable datum. This makes sure it can't be cached. This includes if it's already in the modification list. + 2. Instantiate a new datum if type_id_datum isn't already instantiated + in the list, using the type. Obviously, wouldn't work for ID only. + 3. Add the datum if necessary using the regular add proc + 4. If any of the rest of the args are not null (see: multiplicative slowdown), modify the datum + 5. Update if necessary +*/ +/mob/proc/add_or_update_variable_actionspeed_modifier(datum/actionspeed_modifier/type_id_datum, update = TRUE, multiplicative_slowdown) + var/modified = FALSE + var/inject = FALSE + var/datum/actionspeed_modifier/final + if(istext(type_id_datum)) + final = LAZYACCESS(actionspeed_modification, type_id_datum) + if(!final) + CRASH("Couldn't find existing modification when provided a text ID.") + else if(ispath(type_id_datum)) + if(!initial(type_id_datum.variable)) + CRASH("Not a variable modifier") + final = LAZYACCESS(actionspeed_modification, initial(type_id_datum.id) || "[type_id_datum]") + if(!final) + final = new type_id_datum + inject = TRUE + modified = TRUE + else + if(!initial(type_id_datum.variable)) + CRASH("Not a variable modifier") + final = type_id_datum + if(!LAZYACCESS(actionspeed_modification, final.id)) + inject = TRUE + modified = TRUE + if(!isnull(multiplicative_slowdown)) + final.multiplicative_slowdown = multiplicative_slowdown + modified = TRUE + if(inject) + add_actionspeed_modifier(final, FALSE) + if(update && modified) + update_actionspeed(TRUE) + return final + +///Is there a actionspeed modifier for this mob +/mob/proc/has_actionspeed_modifier(datum/actionspeed_modifier/datum_type_id) + var/key + if(ispath(datum_type_id)) + key = initial(datum_type_id.id) || "[datum_type_id]" + else if(istext(datum_type_id)) + key = datum_type_id + else + key = datum_type_id.id + return LAZYACCESS(actionspeed_modification, key) + +/// Go through the list of actionspeed modifiers and calculate a final actionspeed. ANY ADD/REMOVE DONE IN UPDATE_actionspeed MUST HAVE THE UPDATE ARGUMENT SET AS FALSE! +/mob/proc/update_actionspeed() + . = 0 + var/list/conflict_tracker = list() + for(var/key in get_actionspeed_modifiers()) + var/datum/actionspeed_modifier/M = actionspeed_modification[key] + var/conflict = M.conflicts_with + var/amt = M.multiplicative_slowdown + if(conflict) + // Conflicting modifiers prioritize the larger slowdown or the larger speedup + // We purposefuly don't handle mixing speedups and slowdowns on the same id + if(abs(conflict_tracker[conflict]) < abs(amt)) + conflict_tracker[conflict] = amt + else + continue + . += amt + cached_multiplicative_actions_slowdown = . + +///Adds a default action speed +/mob/proc/initialize_actionspeed() + add_or_update_variable_actionspeed_modifier(/datum/actionspeed_modifier/base, multiplicative_slowdown = 1) + +/// Get the action speed modifiers list of the mob +/mob/proc/get_actionspeed_modifiers() + . = LAZYCOPY(actionspeed_modification) + for(var/id in actionspeed_mod_immunities) + . -= id + +/// Checks if a action speed modifier is valid and not missing any data +/proc/actionspeed_data_null_check(datum/actionspeed_modifier/M) //Determines if a data list is not meaningful and should be discarded. + . = !(M.multiplicative_slowdown) diff --git a/code/modules/actionspeed/modifiers/base.dm b/code/modules/actionspeed/modifiers/base.dm new file mode 100644 index 0000000000..97c5124c3b --- /dev/null +++ b/code/modules/actionspeed/modifiers/base.dm @@ -0,0 +1,2 @@ +/datum/actionspeed_modifier/base + variable = TRUE diff --git a/code/modules/actionspeed/modifiers/mood.dm b/code/modules/actionspeed/modifiers/mood.dm new file mode 100644 index 0000000000..d8ed005d42 --- /dev/null +++ b/code/modules/actionspeed/modifiers/mood.dm @@ -0,0 +1,7 @@ +/datum/actionspeed_modifier/low_sanity + multiplicative_slowdown = 0.25 + id = ACTIONSPEED_ID_SANITY + +/datum/actionspeed_modifier/high_sanity + multiplicative_slowdown = -0.1 + id = ACTIONSPEED_ID_SANITY diff --git a/code/modules/actionspeed/modifiers/status_effects.dm b/code/modules/actionspeed/modifiers/status_effects.dm new file mode 100644 index 0000000000..615346b790 --- /dev/null +++ b/code/modules/actionspeed/modifiers/status_effects.dm @@ -0,0 +1,5 @@ +/datum/actionspeed_modifier/timecookie + multiplicative_slowdown = -0.05 + +/datum/actionspeed_modifier/blunt_wound + variable = TRUE diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 8421d9955d..10c79bb658 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -12,7 +12,7 @@ ///////////////////////////////////////////////////////////////////////////////////////////////Panels /datum/admins/proc/show_player_panel(mob/M in GLOB.mob_list) - set category = "Admin" + set category = "Admin.Game" set name = "Show Player Panel" set desc="Edit player (respawn, ban, heal, etc)" @@ -211,7 +211,7 @@ /datum/admins/proc/access_news_network() //MARKER - set category = "Fun" + set category = "Admin.Events" set name = "Access Newscaster Network" set desc = "Allows you to view, add and edit news feeds." @@ -786,7 +786,7 @@ var/obj/structure/closet/supplypod/centcompod/pod = new() var/atom/A = new chosen(pod) A.flags_1 |= ADMIN_SPAWNED_1 - new /obj/effect/abstract/DPtarget(T, pod) + new /obj/effect/pod_landingzone(T, pod) log_admin("[key_name(usr)] pod-spawned [chosen] at [AREACOORD(usr)]") SSblackbox.record_feedback("tally", "admin_verb", 1, "Podspawn Atom") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index 7e5c104d90..52be445120 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -6,7 +6,7 @@ /client/proc/investigate_show() set name = "Investigate" - set category = "Admin" + set category = "Admin.Game" if(!holder) return diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 2c4e7b4f6e..52b4fa05b1 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -348,7 +348,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) /client/proc/admin_ghost() - set category = "Admin" + set category = "Admin.Game" set name = "Aghost" if(!holder) return FALSE @@ -379,7 +379,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) /client/proc/invisimin() set name = "Invisimin" - set category = "Admin" + set category = "Admin.Game" set desc = "Toggles ghost-like invisibility (Don't abuse this)" if(holder && mob) if(mob.invisibility == INVISIBILITY_OBSERVER) @@ -391,7 +391,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) /client/proc/check_antagonists() set name = "Check Antagonists" - set category = "Admin" + set category = "Admin.Game" if(holder) holder.check_antagonists() log_admin("[key_name(usr)] checked antagonists.") //for tsar~ @@ -411,14 +411,14 @@ GLOBAL_PROTECT(admin_verbs_hideable) /client/proc/game_panel() set name = "Game Panel" - set category = "Admin" + set category = "Admin.Game" if(holder) holder.Game() SSblackbox.record_feedback("tally", "admin_verb", 1, "Game Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/secrets() set name = "Secrets" - set category = "Admin" + set category = "Admin.Game" if (holder) holder.Secrets() SSblackbox.record_feedback("tally", "admin_verb", 1, "Secrets Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -472,7 +472,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) SSblackbox.record_feedback("tally", "admin_verb", 1, "Stealth Mode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/drop_bomb() - set category = "Special Verbs" + set category = "Admin.Fun" set name = "Drop Bomb" set desc = "Cause an explosion of varying strength at your location." @@ -514,7 +514,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) SSblackbox.record_feedback("tally", "admin_verb", 1, "Drop Bomb") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/drop_dynex_bomb() - set category = "Special Verbs" + set category = "Admin.Fun" set name = "Drop DynEx Bomb" set desc = "Cause an explosion of varying strength at your location." @@ -561,7 +561,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) message_admins("[key_name_admin(usr)] has modified Dynamic Explosion Scale: [ex_scale]") /client/proc/give_spell(mob/T in GLOB.mob_list) - set category = "Fun" + set category = "Admin.Fun" set name = "Give Spell" set desc = "Gives a spell to a mob." @@ -585,7 +585,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) message_admins("Spells given to mindless mobs will not be transferred in mindswap or cloning!") /client/proc/remove_spell(mob/T in GLOB.mob_list) - set category = "Fun" + set category = "Admin.Fun" set name = "Remove Spell" set desc = "Remove a spell from the selected mob." @@ -598,7 +598,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) SSblackbox.record_feedback("tally", "admin_verb", 1, "Remove Spell") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/give_disease(mob/living/T in GLOB.mob_living_list) - set category = "Fun" + set category = "Admin.Fun" set name = "Give Disease" set desc = "Gives a Disease to a mob." if(!istype(T)) @@ -613,7 +613,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) message_admins("[key_name_admin(usr)] gave [key_name(T)] the disease [D].") /client/proc/object_say(obj/O in world) - set category = "Special Verbs" + set category = "Admin.Events" set name = "OSay" set desc = "Makes an object say something." var/message = input(usr, "What do you want the message to be?", "Make Sound") as text | null @@ -625,7 +625,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) SSblackbox.record_feedback("tally", "admin_verb", 1, "Object Say") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/togglebuildmodeself() set name = "Toggle Build Mode Self" - set category = "Special Verbs" + set category = "Admin.Events" if (!(holder.rank.rights & R_BUILDMODE)) return if(src.mob) @@ -634,7 +634,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) /client/proc/check_ai_laws() set name = "Check AI Laws" - set category = "Admin" + set category = "Admin.Game" if(holder) src.holder.output_ai_laws() @@ -717,7 +717,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) /client/proc/toggle_AI_interact() set name = "Toggle Admin AI Interact" - set category = "Admin" + set category = "Admin.Game" set desc = "Allows you to interact with most machines as an AI would as a ghost" AI_Interact = !AI_Interact diff --git a/code/modules/admin/adminmenu.dm b/code/modules/admin/adminmenu.dm index 64ce5987cf..b7d85ccff5 100644 --- a/code/modules/admin/adminmenu.dm +++ b/code/modules/admin/adminmenu.dm @@ -5,7 +5,7 @@ /datum/verbs/menu/Admin/verb/playerpanel() set name = "Player Panel" set desc = "Player Panel" - set category = "Admin" + set category = "Admin.Game" if(usr.client.holder) usr.client.holder.player_panel_new() SSblackbox.record_feedback("tally", "admin_verb", 1, "Player Panel New") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 13e8877440..03376df905 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2475,7 +2475,7 @@ R.activate_module(I) if(pod) - new /obj/effect/abstract/DPtarget(target, pod) + new /obj/effect/pod_landingzone(target, pod) if (number == 1) log_admin("[key_name(usr)] created a [english_list(paths)]") diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 257c1d275a..ef56b4cd2a 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -1,7 +1,7 @@ /client/proc/jumptoarea(area/A in GLOB.sortedAreas) set name = "Jump to Area" set desc = "Area to jump to" - set category = "Admin" + set category = "Admin.Game" if(!src.holder) to_chat(src, "Only administrators may use this command.", confidential = TRUE) return @@ -28,7 +28,7 @@ /client/proc/jumptoturf(turf/T in world) set name = "Jump to Turf" - set category = "Admin" + set category = "Admin.Game" if(!src.holder) to_chat(src, "Only administrators may use this command.", confidential = TRUE) return @@ -40,7 +40,7 @@ return /client/proc/jumptomob(mob/M in GLOB.mob_list) - set category = "Admin" + set category = "Admin.Game" set name = "Jump to Mob" if(!src.holder) @@ -59,7 +59,7 @@ to_chat(A, "This mob is not located in the game world.", confidential = TRUE) /client/proc/jumptocoord(tx as num, ty as num, tz as num) - set category = "Admin" + set category = "Admin.Game" set name = "Jump to Coordinate" if (!holder) @@ -74,7 +74,7 @@ message_admins("[key_name_admin(usr)] jumped to coordinates [tx], [ty], [tz]") /client/proc/jumptokey() - set category = "Admin" + set category = "Admin.Game" set name = "Jump to Key" if(!src.holder) @@ -97,7 +97,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/Getmob(mob/M in GLOB.mob_list - GLOB.dummy_mob_list) - set category = "Admin" + set category = "Admin.Game" set name = "Get Mob" set desc = "Mob to teleport" if(!src.holder) @@ -113,7 +113,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Get Mob") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/Getkey() - set category = "Admin" + set category = "Admin.Game" set name = "Get Key" set desc = "Key to teleport" @@ -141,7 +141,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Get Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/sendmob(mob/M in sortmobs()) - set category = "Admin" + set category = "Admin.Game" set name = "Send Mob" if(!src.holder) to_chat(src, "Only administrators may use this command.", confidential = TRUE) diff --git a/code/modules/admin/verbs/borgpanel.dm b/code/modules/admin/verbs/borgpanel.dm index be22c889f0..4b60ecc0ff 100644 --- a/code/modules/admin/verbs/borgpanel.dm +++ b/code/modules/admin/verbs/borgpanel.dm @@ -1,5 +1,5 @@ /datum/admins/proc/open_borgopanel(borgo in GLOB.silicon_mobs) - set category = "Admin" + set category = "Admin.Game" set name = "Show Borg Panel" set desc = "Show borg panel" diff --git a/code/modules/admin/verbs/cinematic.dm b/code/modules/admin/verbs/cinematic.dm index 9b27a8d8e9..123e9877f7 100644 --- a/code/modules/admin/verbs/cinematic.dm +++ b/code/modules/admin/verbs/cinematic.dm @@ -1,6 +1,6 @@ /client/proc/cinematic() set name = "cinematic" - set category = "Fun" + set category = "Admin.Fun" set desc = "Shows a cinematic." // Intended for testing but I thought it might be nice for events on the rare occasion Feel free to comment it out if it's not wanted. set hidden = 1 if(!SSticker) diff --git a/code/modules/admin/verbs/deadsay.dm b/code/modules/admin/verbs/deadsay.dm index 66acc0f667..e3937e19b6 100644 --- a/code/modules/admin/verbs/deadsay.dm +++ b/code/modules/admin/verbs/deadsay.dm @@ -1,5 +1,5 @@ /client/proc/dsay(msg as text) - set category = "Special Verbs" + set category = "Admin.Game" set name = "Dsay" set hidden = 1 if(!holder) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index f068f05a4a..5704448053 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -27,7 +27,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Air Status In Location") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_robotize(mob/M in GLOB.mob_list) - set category = "Fun" + set category = "Admin.Fun" set name = "Make Robot" if(!SSticker.HasRoundStarted()) @@ -43,7 +43,7 @@ alert("Invalid mob") /client/proc/cmd_admin_blobize(mob/M in GLOB.mob_list) - set category = "Fun" + set category = "Admin.Fun" set name = "Make Blob" if(!SSticker.HasRoundStarted()) @@ -58,7 +58,7 @@ /client/proc/cmd_admin_animalize(mob/M in GLOB.mob_list) - set category = "Fun" + set category = "Admin.Fun" set name = "Make Simple Animal" if(!SSticker.HasRoundStarted()) @@ -79,7 +79,7 @@ /client/proc/makepAI(turf/T in GLOB.mob_list) - set category = "Fun" + set category = "Admin.Fun" set name = "Make pAI" set desc = "Specify a location to spawn a pAI device, then specify a key to play that pAI" @@ -106,7 +106,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Make pAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_alienize(mob/M in GLOB.mob_list) - set category = "Fun" + set category = "Admin.Fun" set name = "Make Alien" if(!SSticker.HasRoundStarted()) @@ -121,7 +121,7 @@ alert("Invalid mob") /client/proc/cmd_admin_slimeize(mob/M in GLOB.mob_list) - set category = "Fun" + set category = "Admin.Fun" set name = "Make slime" if(!SSticker.HasRoundStarted()) @@ -211,7 +211,7 @@ message_admins("[key_name_admin(usr)] has granted [M.key] full access.") /client/proc/cmd_assume_direct_control(mob/M in GLOB.mob_list) - set category = "Admin" + set category = "Admin.Game" set name = "Assume direct control" set desc = "Direct intervention" @@ -229,6 +229,33 @@ qdel(adminmob) SSblackbox.record_feedback("tally", "admin_verb", 1, "Assume Direct Control") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/proc/cmd_give_direct_control(mob/M in GLOB.mob_list) + set category = "Admin.Game" + set name = "Give direct control" + + if(!M) + return + if(M.ckey) + if(alert("This mob is being controlled by [M.key]. Are you sure you wish to give someone else control of it? [M.key] will be made a ghost.",,"Yes","No") != "Yes") + return + var/client/newkey = input(src, "Pick the player to put in control.", "New player") as null|anything in sortList(GLOB.clients) + var/mob/oldmob = newkey.mob + var/delmob = FALSE + if((isobserver(oldmob) || alert("Do you want to delete [newkey]'s old mob?","Delete?","Yes","No") != "No")) + delmob = TRUE + if(!M || QDELETED(M)) + to_chat(usr, "The target mob no longer exists, aborting.") + return + if(M.ckey) + M.ghostize(FALSE) + M.ckey = newkey.key + M.client?.init_verbs() + if(delmob) + qdel(oldmob) + message_admins("[key_name_admin(usr)] gave away direct control of [M] to [newkey].") + log_admin("[key_name(usr)] gave away direct control of [M] to [newkey].") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Give Direct Control") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + /client/proc/cmd_admin_test_atmos_controllers() set category = "Mapping" set name = "Test Atmos Monitoring Consoles" @@ -455,7 +482,7 @@ cmd_admin_areatest(FALSE) /client/proc/cmd_admin_dress(mob/M in GLOB.mob_list) - set category = "Fun" + set category = "Admin.Events" set name = "Select equipment" if(!(ishuman(M) || isobserver(M))) alert("Invalid mob") diff --git a/code/modules/admin/verbs/dice.dm b/code/modules/admin/verbs/dice.dm index 5b0a15257e..f033351f96 100644 --- a/code/modules/admin/verbs/dice.dm +++ b/code/modules/admin/verbs/dice.dm @@ -1,5 +1,5 @@ /client/proc/roll_dices() - set category = "Fun" + set category = "Admin.Fun" set name = "Roll Dice" if(!check_rights(R_FUN)) return diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 7675f858ee..2379ee22bc 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -1,7 +1,7 @@ /client/proc/one_click_antag() set name = "Create Antagonist" set desc = "Auto-create an antagonist of your choice" - set category = "Admin" + set category = "Admin.Events" if(holder) holder.one_click_antag() diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index fc2ba55f54..6e188a6c7a 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -1,5 +1,5 @@ /client/proc/play_sound(S as sound) - set category = "Fun" + set category = "Admin.Fun" set name = "Play Global Sound" if(!check_rights(R_SOUNDS)) return @@ -42,7 +42,7 @@ /client/proc/play_local_sound(S as sound) - set category = "Fun" + set category = "Admin.Fun" set name = "Play Local Sound" if(!check_rights(R_SOUNDS)) return @@ -53,7 +53,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Play Local Sound") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/play_web_sound() - set category = "Fun" + set category = "Admin.Fun" set name = "Play Internet Sound" if(!check_rights(R_SOUNDS)) return @@ -136,7 +136,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Play Internet Sound") /client/proc/manual_play_web_sound() - set category = "Fun" + set category = "Admin.Fun" set name = "Manual Play Internet Sound" if(!check_rights(R_SOUNDS)) return @@ -182,7 +182,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Manual Play Internet Sound") /client/proc/set_round_end_sound(S as sound) - set category = "Fun" + set category = "Admin.Fun" set name = "Set Round End Sound" if(!check_rights(R_SOUNDS)) return diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 13f91ff79f..d1f6d18e09 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -20,7 +20,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Drop Everything") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_subtle_message(mob/M in GLOB.mob_list) - set category = "Special Verbs" + set category = "Admin.Events" set name = "Subtle Message" if(!ismob(M)) @@ -46,7 +46,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Subtle Message") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_headset_message(mob/M in GLOB.mob_list) - set category = "Special Verbs" + set category = "Admin.Events" set name = "Headset Message" admin_headset_message(M) @@ -128,7 +128,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Modify Antagonist Reputation") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_world_narrate() - set category = "Special Verbs" + set category = "Admin.Events" set name = "Global Narrate" if(!check_rights(R_ADMIN)) @@ -144,7 +144,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Global Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_direct_narrate(mob/M) - set category = "Special Verbs" + set category = "Admin.Events" set name = "Direct Narrate" if(!check_rights(R_ADMIN)) @@ -169,7 +169,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Direct Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_local_narrate(atom/A) - set category = "Special Verbs" + set category = "Admin.Events" set name = "Local Narrate" if(!check_rights(R_ADMIN)) @@ -190,7 +190,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Local Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_godmode(mob/M in GLOB.mob_list) - set category = "Special Verbs" + set category = "Admin.Game" set name = "Godmode" if(!check_rights(R_ADMIN)) return @@ -335,7 +335,7 @@ Works kind of like entering the game with a new character. Character receives a Traitors and the like can also be revived with the previous role mostly intact. /N */ /client/proc/respawn_character() - set category = "Special Verbs" + set category = "Admin.Game" set name = "Respawn Character" set desc = "Respawn a person that has been gibbed/dusted/killed. They must be a ghost for this to work and preferably should not have a body to go back into." if(!check_rights(R_ADMIN)) @@ -503,7 +503,7 @@ Traitors and the like can also be revived with the previous role mostly intact. return new_character /client/proc/cmd_admin_add_freeform_ai_law() - set category = "Fun" + set category = "Admin.Events" set name = "Add Custom AI law" if(!check_rights(R_ADMIN)) @@ -546,7 +546,7 @@ Traitors and the like can also be revived with the previous role mostly intact. SSblackbox.record_feedback("tally", "admin_verb", 1, "Rejuvinate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_create_centcom_report() - set category = "Special Verbs" + set category = "Admin.Events" set name = "Create Command Report" if(!check_rights(R_ADMIN)) @@ -572,7 +572,7 @@ Traitors and the like can also be revived with the previous role mostly intact. SSblackbox.record_feedback("tally", "admin_verb", 1, "Create Command Report") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_change_command_name() - set category = "Special Verbs" + set category = "Admin.Events" set name = "Change Command Name" if(!check_rights(R_ADMIN)) @@ -595,7 +595,7 @@ Traitors and the like can also be revived with the previous role mostly intact. admin_delete(A) /client/proc/cmd_admin_list_open_jobs() - set category = "Admin" + set category = "Admin.Game" set name = "Manage Job Slots" if(!check_rights(R_ADMIN)) @@ -604,7 +604,7 @@ Traitors and the like can also be revived with the previous role mostly intact. SSblackbox.record_feedback("tally", "admin_verb", 1, "Manage Job Slots") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_explosion(atom/O as obj|mob|turf in world) - set category = "Special Verbs" + set category = "Admin.Fun" set name = "Explosion" if(!check_rights(R_ADMIN)) @@ -640,7 +640,7 @@ Traitors and the like can also be revived with the previous role mostly intact. return /client/proc/cmd_admin_emp(atom/O as obj|mob|turf in world) - set category = "Special Verbs" + set category = "Admin.Fun" set name = "EM Pulse" if(!check_rights(R_ADMIN)) @@ -656,7 +656,7 @@ Traitors and the like can also be revived with the previous role mostly intact. SSblackbox.record_feedback("tally", "admin_verb", 1, "EM Pulse") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_gib(mob/M in GLOB.mob_list) - set category = "Special Verbs" + set category = "Admin.Fun" set name = "Gib" if(!check_rights(R_ADMIN)) @@ -683,7 +683,7 @@ Traitors and the like can also be revived with the previous role mostly intact. /client/proc/cmd_admin_gib_self() set name = "Gibself" - set category = "Fun" + set category = "Admin.Fun" var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No") if(confirm == "Yes") @@ -702,14 +702,14 @@ Traitors and the like can also be revived with the previous role mostly intact. SSblackbox.record_feedback("tally", "admin_verb", 1, "Check Contents") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/toggle_view_range() - set category = "Special Verbs" + set category = "Admin.Game" set name = "Change View Range" set desc = "switches between 1x and custom views" - if(view == CONFIG_GET(string/default_view)) - change_view(input("Select view range:", "FUCK YE", 7) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128)) + if(view_size.getView() == view_size.default) + view_size.setTo(input("Select view range:", "FUCK YE", 7) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128) - 7) else - change_view(CONFIG_GET(string/default_view)) + view_size.resetToDefault(getScreenSize(prefs.widescreenpref)) log_admin("[key_name(usr)] changed their view range to [view].") //message_admins("\blue [key_name_admin(usr)] changed their view range to [view].") //why? removed by order of XSI @@ -717,8 +717,7 @@ Traitors and the like can also be revived with the previous role mostly intact. SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Change View Range", "[view]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/admin_call_shuttle() - - set category = "Admin" + set category = "Admin.Events" set name = "Call Shuttle" if(EMERGENCY_AT_LEAST_DOCKED) @@ -738,7 +737,7 @@ Traitors and the like can also be revived with the previous role mostly intact. return /client/proc/admin_cancel_shuttle() - set category = "Admin" + set category = "Admin.Events" set name = "Cancel Shuttle" if(!check_rights(0)) return @@ -754,9 +753,51 @@ Traitors and the like can also be revived with the previous role mostly intact. message_admins("[key_name_admin(usr)] admin-recalled the emergency shuttle.") return +/* +/client/proc/admin_disable_shuttle() + set category = "Admin.Events" + set name = "Disable Shuttle" + if(!check_rights(R_ADMIN)) + return + if(SSshuttle.emergency.mode == SHUTTLE_DISABLED) + to_chat(usr, "Error, shuttle is already disabled.") + return + if(alert(src, "You sure?", "Confirm", "Yes", "No") != "Yes") + return + message_admins("[key_name_admin(usr)] disabled the shuttle.") + SSshuttle.lastMode = SSshuttle.emergency.mode + SSshuttle.lastCallTime = SSshuttle.emergency.timeLeft(1) + SSshuttle.adminEmergencyNoRecall = TRUE + SSshuttle.emergency.setTimer(0) + SSshuttle.emergency.mode = SHUTTLE_DISABLED + priority_announce("Warning: Emergency Shuttle uplink failure, shuttle disabled until further notice.", "Emergency Shuttle Uplink Alert", 'sound/misc/announce_dig.ogg') + +/client/proc/admin_enable_shuttle() + set category = "Admin - Events" + set category = "Admin.Events" + set name = "Enable Shuttle" + + if(!check_rights(R_ADMIN)) + return + if(SSshuttle.emergency.mode != SHUTTLE_DISABLED) + to_chat(usr, "Error, shuttle not disabled.") + return + if(alert(src, "You sure?", "Confirm", "Yes", "No") != "Yes") + return + message_admins("[key_name_admin(usr)] enabled the emergency shuttle.") + SSshuttle.adminEmergencyNoRecall = FALSE + SSshuttle.emergencyNoRecall = FALSE + if(SSshuttle.lastMode == SHUTTLE_DISABLED) //If everything goes to shit, fix it. + SSshuttle.lastMode = SHUTTLE_IDLE + SSshuttle.emergency.mode = SSshuttle.lastMode + if(SSshuttle.lastCallTime < 10 SECONDS && SSshuttle.lastMode != SHUTTLE_IDLE) + SSshuttle.lastCallTime = 10 SECONDS //Make sure no insta departures. + SSshuttle.emergency.setTimer(SSshuttle.lastCallTime) + priority_announce("Warning: Emergency Shuttle uplink reestablished, shuttle enabled.", "Emergency Shuttle Uplink Alert", 'sound/misc/announce_dig.ogg') +*/ /client/proc/everyone_random() - set category = "Fun" + set category = "Admin.Fun" set name = "Make Everyone Random" set desc = "Make everyone have a random appearance. You can only use this before rounds!" @@ -804,7 +845,7 @@ Traitors and the like can also be revived with the previous role mostly intact. /client/proc/admin_change_sec_level() - set category = "Special Verbs" + set category = "Admin.Events" set name = "Set Security Level" set desc = "Changes the security level. Announcement only, i.e. setting to Delta won't activate nuke" @@ -821,7 +862,7 @@ Traitors and the like can also be revived with the previous role mostly intact. /client/proc/toggle_nuke(obj/machinery/nuclearbomb/N in GLOB.nuke_list) set name = "Toggle Nuke" - set category = "Fun" + set category = "Admin.Events" set popup_menu = 0 if(!check_rights(R_DEBUG)) return @@ -1016,7 +1057,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits usr << browse(dat, "window=dressup;size=550x600") /client/proc/toggle_combo_hud() - set category = "Admin" + set category = "Admin.Game" set name = "Toggle Combo HUD" set desc = "Toggles the Admin Combo HUD (antag, sci, med, eng)" @@ -1051,7 +1092,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits /client/proc/run_weather() - set category = "Fun" + set category = "Admin.Events" set name = "Run Weather" set desc = "Triggers a weather on the z-level you choose." @@ -1075,7 +1116,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits SSblackbox.record_feedback("tally", "admin_verb", 1, "Run Weather") /client/proc/mass_zombie_infection() - set category = "Fun" + set category = "Admin.Fun" set name = "Mass Zombie Infection" set desc = "Infects all humans with a latent organ that will zombify \ them on death." @@ -1095,7 +1136,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits SSblackbox.record_feedback("tally", "admin_verb", 1, "Mass Zombie Infection") /client/proc/mass_zombie_cure() - set category = "Fun" + set category = "Admin.Fun" set name = "Mass Zombie Cure" set desc = "Removes the zombie infection from all humans, returning them to normal." if(!check_rights(R_ADMIN)) @@ -1113,7 +1154,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits SSblackbox.record_feedback("tally", "admin_verb", 1, "Mass Zombie Cure") /client/proc/polymorph_all() - set category = "Fun" + set category = "Admin.Fun" set name = "Polymorph All" set desc = "Applies the effects of the bolt of change to every single mob." @@ -1203,7 +1244,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggled Hub Visibility", "[GLOB.hub_visibility ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_toggle_fov() - set category = "Fun" + set category = "Admin.Fun" set name = "Enable/Disable Field of Vision" var/static/busy_toggling_fov = FALSE @@ -1256,7 +1297,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits /client/proc/smite(mob/living/carbon/human/target as mob) set name = "Smite" - set category = "Fun" + set category = "Admin.Fun" if(!check_rights(R_ADMIN) || !check_rights(R_FUN)) return @@ -1319,7 +1360,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits if(!delivery) alert("ERROR: Incorrect / improper path given.") new delivery(pod) - new /obj/effect/abstract/DPtarget(get_turf(target), pod) + new /obj/effect/pod_landingzone(get_turf(target), pod) if(ADMIN_PUNISHMENT_SUPPLYPOD) var/datum/centcom_podlauncher/plaunch = new(usr) if(!holder) @@ -1331,7 +1372,6 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits plaunch.temp_pod.damage = 40//bring the mother fuckin ruckus plaunch.temp_pod.explosionSize = list(0,0,0,2) plaunch.temp_pod.effectStun = TRUE - plaunch.ui_interact(usr) return //We return here because punish_log() is handled by the centcom_podlauncher datum if(ADMIN_PUNISHMENT_MAZING) diff --git a/code/modules/admin/verbs/shuttlepanel.dm b/code/modules/admin/verbs/shuttlepanel.dm index a80eafae02..7552936136 100644 --- a/code/modules/admin/verbs/shuttlepanel.dm +++ b/code/modules/admin/verbs/shuttlepanel.dm @@ -1,5 +1,5 @@ /datum/admins/proc/open_shuttlepanel() - set category = "Admin" + set category = "Admin.Events" set name = "Shuttle Manipulator" set desc = "Opens the shuttle manipulator UI." diff --git a/code/modules/admin/verbs/tripAI.dm b/code/modules/admin/verbs/tripAI.dm index 7742d6ea66..fc4270dd1b 100644 --- a/code/modules/admin/verbs/tripAI.dm +++ b/code/modules/admin/verbs/tripAI.dm @@ -1,5 +1,5 @@ /client/proc/triple_ai() - set category = "Fun" + set category = "Admin.Events" set name = "Create AI Triumvirate" if(SSticker.current_state > GAME_STATE_PREGAME) diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm b/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm index 5c4b1f2b9f..26c8bd5949 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm @@ -180,10 +180,12 @@ button.screen_loc = DEFAULT_BLOODSPELLS button.moved = DEFAULT_BLOODSPELLS button.ordered = FALSE + /datum/action/bloodsucker/passive/Destroy() if(owner) Remove(owner) target = null + return ..() /////////////////////////////////// TARGETTED POWERS /////////////////////////////////// diff --git a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm index 536c07cd62..e8fb82a5d1 100644 --- a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm +++ b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm @@ -456,6 +456,7 @@ /obj/structure/bloodsucker/candelabrum/Destroy() STOP_PROCESSING(SSobj, src) + return ..() //return a hint /obj/structure/bloodsucker/candelabrum/update_icon_state() icon_state = "candelabrum[lit ? "_lit" : ""]" diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index 242538a1e5..8f4e7ef3d6 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -38,8 +38,9 @@ var/mimicing = "" var/canrespec = 0 var/changeling_speak = 0 - var/loudfactor = 0 //Used for blood tests. At 4, blood tests will succeed. At 10, blood tests will result in an explosion. - var/bloodtestwarnings = 0 //Used to track if the ling has been notified that they will pass blood tests. + var/loudfactor = 0 //Used for blood tests. This is is the average loudness of the ling's abilities calculated with the below two vars + var/loudtotal = 0 //Used to keep track of the sum of the ling's loudness + var/totalpurchases = 0 //Used to keep track of how many purchases the ling's made after free abilities have been added var/datum/dna/chosen_dna var/obj/effect/proc_holder/changeling/sting/chosen_sting var/datum/cellular_emporium/cellular_emporium @@ -139,8 +140,6 @@ /datum/antagonist/changeling/proc/reset_powers() if(purchasedpowers) remove_changeling_powers() - loudfactor = 0 - bloodtestwarnings = 0 //Repurchase free powers. for(var/path in all_powers) var/obj/effect/proc_holder/changeling/S = new path() @@ -148,6 +147,9 @@ if(!has_sting(S)) purchasedpowers += S S.on_purchase(owner.current,TRUE) + loudfactor = 0 + loudtotal = 0 + totalpurchases = 0 /datum/antagonist/changeling/proc/has_sting(obj/effect/proc_holder/changeling/power) for(var/obj/effect/proc_holder/changeling/P in purchasedpowers) @@ -192,13 +194,18 @@ geneticpoints -= thepower.dna_cost purchasedpowers += thepower thepower.on_purchase(owner.current) - loudfactor += thepower.loudness - if(loudfactor >= 4 && !bloodtestwarnings) - to_chat(owner.current, "Our blood is growing flammable. Our blood will react violently to heat.") - bloodtestwarnings = 1 - if(loudfactor >= 10 && bloodtestwarnings < 2) - to_chat(owner.current, "Our blood has grown extremely flammable. Our blood will react explosively to heat.") - bloodtestwarnings = 2 + loudtotal += thepower.loudness + totalpurchases++ + var/oldloudness = loudfactor + loudfactor = loudtotal/max(totalpurchases,1) + if(loudfactor >= LINGBLOOD_DETECTION_THRESHOLD && oldloudness < LINGBLOOD_DETECTION_THRESHOLD) + to_chat(owner.current, "Our blood has grown flammable. Our blood will now react violently to heat.") + else if(loudfactor < LINGBLOOD_DETECTION_THRESHOLD && oldloudness >= LINGBLOOD_DETECTION_THRESHOLD) + to_chat(owner.current, "Our blood has stabilized, and will no longer react violently to heat.") + if(loudfactor > LINGBLOOD_EXPLOSION_THRESHOLD && oldloudness <= LINGBLOOD_EXPLOSION_THRESHOLD) + to_chat(owner.current, "Our blood has grown extremely flammable. Our blood will now react explosively to heat.") + else if(loudfactor <= LINGBLOOD_EXPLOSION_THRESHOLD && oldloudness > LINGBLOOD_EXPLOSION_THRESHOLD) + to_chat(owner.current, "Our blood has slightly stabilized, and will no longer explode when exposed to heat.") /datum/antagonist/changeling/proc/readapt() if(!ishuman(owner.current)) diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 24288be078..05c265bc15 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -6,6 +6,10 @@ Shield Armor Tentacles + Hatterhat Additions: + claws! (glove slot) + jagged (thieves') claws + bone gauntlets for punching dudes */ @@ -89,7 +93,7 @@ return 1 var/mob/living/carbon/human/H = user if(istype(H.wear_suit, suit_type) || istype(H.head, helmet_type)) - H.visible_message("[H] casts off [H.p_their()] [suit_name_simple]!", "We cast off our [suit_name_simple].", "You hear the organic matter ripping and tearing!") + H.visible_message("[H] casts off [H.p_their()] [suit_name_simple]!", "We cast off our [suit_name_simple].", "You hear organic matter ripping and tearing!") H.temporarilyRemoveItemFromInventory(H.head, TRUE) //The qdel on dropped() takes care of it H.temporarilyRemoveItemFromInventory(H.wear_suit, TRUE) H.update_inv_wear_suit() @@ -461,7 +465,7 @@ if(--remaining_uses < 1) if(ishuman(loc)) var/mob/living/carbon/human/H = loc - H.visible_message("With a sickening crunch, [H] reforms [H.p_their()] shield into an arm!", "We assimilate our shield into our body", "With a sickening crunch, [H] reforms [H.p_their()] shield into an arm!", "We assimilate our shield into our body.", "With a sickening crunch, [H] reforms [H.p_their()] [glove_name_simple] into hands!", "We assimilate our [glove_name_simple].", "You hear organic matter ripping and tearing!") + H.temporarilyRemoveItemFromInventory(H.gloves, TRUE) //The qdel on dropped() takes care of it + H.update_inv_gloves() + playsound(H.loc, 'sound/effects/blobattack.ogg', 30, 1) + if(blood_on_castoff) + H.add_splatter_floor() + playsound(H.loc, 'sound/effects/splat.ogg', 50, 1) //So real sounds + + changeling.chem_recharge_slowdown -= recharge_slowdown + return 1 + +/obj/effect/proc_holder/changeling/gloves/on_refund(mob/user) + if(!ishuman(user)) + return + action.Remove(user) + var/mob/living/carbon/human/H = user + check_gloves(H) + +/obj/effect/proc_holder/changeling/gloves/sting_action(mob/living/carbon/human/user) + if(!user.canUnEquip(user.gloves)) + to_chat(user, "\the [user.gloves] is stuck to your body, you cannot grow [glove_name_simple] over it!") + return + + user.dropItemToGround(user.gloves) + + user.equip_to_slot_if_possible(new glove_type(user), SLOT_GLOVES, 1, 1, 1) + playsound(user, 'sound/effects/blobattack.ogg', 30, 1) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + changeling.chem_recharge_slowdown += recharge_slowdown + return TRUE + +/obj/item/clothing/gloves/claws + name = "claws of doing nothing" + desc = "These shouldn't be here." + icon_state = "bracers" + item_state = "bracers" + transfer_prints = TRUE + body_parts_covered = HANDS + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 35, "bio" = 35, "rad" = 35, "fire" = 0, "acid" = 0) + +/obj/item/clothing/gloves/claws/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, CHANGELING_TRAIT) + +/obj/item/clothing/gloves/claws/vulture // prying shit off dead/soon to be dead dudes! + name = "jagged claws" + desc = "Good for prying things off of people and looking incredibly creepy." + strip_mod = 2 + +/obj/effect/proc_holder/changeling/gloves/gauntlets + name = "Bone Gauntlets" + desc = "We turn our hands into solid bone and chitin, sacrificing dexterity for raw strength." + helptext = "These grotesque, bone-and-chitin gauntlets are remarkably good at beating victims senseless, and cannot be used in lesser form. This ability is loud, and might cause our blood to react violently to heat." + chemical_cost = 10 // same cost as armblade because its a sidegrade (sacrifice utility for punching people violently) + dna_cost = 2 + loudness = 2 + req_human = 1 + action_icon = 'icons/mob/actions/actions_changeling.dmi' + action_icon_state = "ling_gauntlets" + action_background_icon_state = "bg_ling" + + glove_type = /obj/item/clothing/gloves/fingerless/pugilist/cling // just punch his head off dude + glove_name_simple = "bone gauntlets" + +/obj/item/clothing/gloves/fingerless/pugilist/cling // switches between lesser GotNS and Big Punchy Rib Breaky Hands + name = "hewn bone gauntlets" + icon_state = "ling_gauntlets" + item_state = "ling_gauntlets" + desc = "Rough bone and chitin, pulsing with an abomination barely called \"life\". Good for punching people, not so much for firearms." + transfer_prints = TRUE + body_parts_covered = ARMS|HANDS + cold_protection = ARMS|HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 35, "bio" = 35, "rad" = 35, "fire" = 0, "acid" = 0) + enhancement = 9 // first, do harm. all of it. all of the harm. just fuck em up. + wound_enhancement = 9 + var/fast_enhancement = 9 + var/fast_wound_enhancement = 9 + var/slow_enhancement = 20 + var/slow_wound_enhancement = 20 + silent = TRUE + inherited_trait = TRAIT_CHUNKYFINGERS // dummy thicc bone hands + secondary_trait = TRAIT_MAULER // its only violence from here, bucko + var/fasthands = TRUE + +/obj/item/clothing/gloves/fingerless/pugilist/cling/examine(mob/user) + . = ..() + . += "[src] are formed to allow for [fasthands ? "fast, precise strikes" : "crippling, damaging blows"]." + . += "Alt-click them to change between rapid strikes and strong blows." + +/obj/item/clothing/gloves/fingerless/pugilist/cling/AltClick(mob/user) + . = ..() + use_buffs(user, FALSE) // reset + fasthands = !fasthands + if(fasthands) + enhancement = fast_enhancement + wound_enhancement = fast_wound_enhancement + else + enhancement = slow_enhancement // fuck em up kiddo + wound_enhancement = slow_wound_enhancement // really. fuck em up. + to_chat(user, "[src] are now formed to allow for [fasthands ? "fast, precise strikes" : "crippling, damaging blows"].") + addtimer(CALLBACK(src, .proc/use_buffs, user, TRUE), 0.1) // go fuckin get em + +/obj/item/clothing/gloves/fingerless/pugilist/cling/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, CHANGELING_TRAIT) + +/obj/item/clothing/gloves/fingerless/pugilist/cling/equipped(mob/user, slot) + . = ..() + if(current_equipped_slot == SLOT_GLOVES) + to_chat(user, "With [src] formed around our arms, we are ready to fight.") + +/obj/item/clothing/gloves/fingerless/pugilist/cling/dropped(mob/user) + . = ..() + if(wornonce) + to_chat(user, "With [src] assimilated, we feel less ready to punch things.") + +/obj/item/clothing/gloves/fingerless/pugilist/cling/Touch(atom/target, proximity = TRUE) + if(!isliving(target)) + return + var/mob/living/M = loc + if(fasthands) + M.SetNextAction(CLICK_CD_RANGE) // fast punches + else + M.SetNextAction(CLICK_CD_GRABBING) // strong punches + return NO_AUTO_CLICKDELAY_HANDLING | ATTACK_IGNORE_ACTION diff --git a/code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm b/code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm index 27868a3e3e..a7330cd93a 100644 --- a/code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm +++ b/code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm @@ -247,7 +247,8 @@ if(LH.target && LH.target.stat == DEAD) to_chat(carbon_user,"Your patrons accepts your offer...") var/mob/living/carbon/human/H = LH.target - H.become_husk() + H.become_husk("burn") //Husks the target with removable husking, but causes a bunch of additional burn damage to prevent it from being 'too easy' to do + H.adjustFireLoss(200) LH.target = null var/datum/antagonist/heretic/EC = carbon_user.mind.has_antag_datum(/datum/antagonist/heretic) diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index ffb3478b24..f5ebcffe35 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -390,7 +390,7 @@ if(old_key) for(var/mob/M in GLOB.dead_mob_list) if(M.client && M.client.key == old_key) //Only recreates the mob if the mob the client is in is dead - M.transfer_ckey(revenant.key, FALSE) + M.transfer_ckey(revenant, FALSE) key_of_revenant = TRUE break if(!key_of_revenant) @@ -403,7 +403,7 @@ visible_message("[src] settles down and seems lifeless.") return var/mob/C = pick(candidates) - C.transfer_ckey(revenant.key, FALSE) + C.transfer_ckey(revenant, FALSE) if(!revenant.key) qdel(revenant) message_admins("No ckey was found for the new revenant. Oh well!") @@ -411,8 +411,8 @@ visible_message("[src] settles down and seems lifeless.") return - message_admins("[key_of_revenant] has been [old_key == revenant.key ? "re":""]made into a revenant by reforming ectoplasm.") - log_game("[key_of_revenant] was [old_key == revenant.key ? "re":""]made as a revenant by reforming ectoplasm.") + message_admins("[revenant.key] has been [old_key == revenant.key ? "re":""]made into a revenant by reforming ectoplasm.") + log_game("[revenant.key] was [old_key == revenant.key ? "re":""]made as a revenant by reforming ectoplasm.") visible_message("[src] suddenly rises into the air before fading away.") revenant.essence = essence diff --git a/code/modules/antagonists/traitor/equipment/contractor.dm b/code/modules/antagonists/traitor/equipment/contractor.dm index 94a3059b5f..e5ff546b1b 100644 --- a/code/modules/antagonists/traitor/equipment/contractor.dm +++ b/code/modules/antagonists/traitor/equipment/contractor.dm @@ -203,7 +203,7 @@ partner_mind.make_Contractor_Support() to_chat(partner_mind.current, "\n[user.real_name] is your superior. Follow any, and all orders given by them. You're here to support their mission only.") to_chat(partner_mind.current, "Should they perish, or be otherwise unavailable, you're to assist other active agents in this mission area to the best of your ability.\n\n") - new /obj/effect/abstract/DPtarget(free_location, arrival_pod) + new /obj/effect/pod_landingzone(free_location, arrival_pod) /datum/contractor_item/blackout name = "Blackout" diff --git a/code/modules/antagonists/traitor/syndicate_contract.dm b/code/modules/antagonists/traitor/syndicate_contract.dm index 0f67616a32..5f998bd0dd 100644 --- a/code/modules/antagonists/traitor/syndicate_contract.dm +++ b/code/modules/antagonists/traitor/syndicate_contract.dm @@ -68,7 +68,7 @@ empty_pod.explosionSize = list(0,0,0,1) empty_pod.leavingSound = 'sound/effects/podwoosh.ogg' - new /obj/effect/abstract/DPtarget(empty_pod_turf, empty_pod) + new /obj/effect/pod_landingzone(empty_pod_turf, empty_pod) /datum/syndicate_contract/proc/enter_check(datum/source, sent_mob) if(istype(source, /obj/structure/closet/supplypod/extractionpod)) @@ -111,7 +111,7 @@ var/obj/structure/closet/supplypod/extractionpod/pod = source // Handle the pod returning - pod.send_up(pod) + pod.startExitSequence(pod) if(ishuman(M)) var/mob/living/carbon/human/target = M @@ -202,7 +202,7 @@ M.blur_eyes(30) M.Dizzy(35) M.confused += 20 - new /obj/effect/abstract/DPtarget(possible_drop_loc[pod_rand_loc], return_pod) + new /obj/effect/pod_landingzone(possible_drop_loc[pod_rand_loc], return_pod) else to_chat(M, "A million voices echo in your head... \"Seems where you got sent here from won't \ be able to handle our pod... You will die here instead.\"") diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index ec46476ade..3b6a30a02a 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -329,6 +329,35 @@ InsertAll("", each, GLOB.alldirs) ..() +/datum/asset/spritesheet/supplypods + name = "supplypods" + +/datum/asset/spritesheet/supplypods/register() + for (var/style in 1 to length(GLOB.podstyles)) + if (style == STYLE_SEETHROUGH) + Insert("pod_asset[style]", icon('icons/obj/supplypods.dmi' , "seethrough-icon")) + continue + var/base = GLOB.podstyles[style][POD_BASE] + if (!base) + Insert("pod_asset[style]", icon('icons/obj/supplypods.dmi', "invisible-icon")) + continue + var/icon/podIcon = icon('icons/obj/supplypods.dmi', base) + var/door = GLOB.podstyles[style][POD_DOOR] + if (door) + door = "[base]_door" + podIcon.Blend(icon('icons/obj/supplypods.dmi', door), ICON_OVERLAY) + var/shape = GLOB.podstyles[style][POD_SHAPE] + if (shape == POD_SHAPE_NORML) + var/decal = GLOB.podstyles[style][POD_DECAL] + if (decal) + podIcon.Blend(icon('icons/obj/supplypods.dmi', decal), ICON_OVERLAY) + var/glow = GLOB.podstyles[style][POD_GLOW] + if (glow) + glow = "pod_glow_[glow]" + podIcon.Blend(icon('icons/obj/supplypods.dmi', glow), ICON_OVERLAY) + Insert("pod_asset[style]", podIcon) + return ..() + // Representative icons for each research design /datum/asset/spritesheet/research_designs name = "design" diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index 3cc597ec31..4c71815c9c 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -134,6 +134,19 @@ GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list()) /datum/gas_mixture/proc/set_volume(new_volume) /datum/gas_mixture/proc/get_moles(gas_type) /datum/gas_mixture/proc/set_moles(gas_type, moles) + +// VV WRAPPERS - EXTOOLS HOOKED PROCS DO NOT TAKE ARGUMENTS FROM CALL() FOR SOME REASON. +/datum/gas_mixture/proc/vv_set_moles(gas_type, moles) + return set_moles(gas_type, moles) +/datum/gas_mixture/proc/vv_get_moles(gas_type) + return get_moles(gas_type) +/datum/gas_mixture/proc/vv_set_temperature(new_temp) + return set_temperature(new_temp) +/datum/gas_mixture/proc/vv_set_volume(new_volume) + return set_volume(new_volume) +/datum/gas_mixture/proc/vv_react(datum/holder) + return react(holder) + /datum/gas_mixture/proc/scrub_into(datum/gas_mixture/target, list/gases) /datum/gas_mixture/proc/mark_immutable() /datum/gas_mixture/proc/get_gases() diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm index b7eac1e591..500e6d8ffe 100644 --- a/code/modules/cargo/centcom_podlauncher.dm +++ b/code/modules/cargo/centcom_podlauncher.dm @@ -1,3 +1,10 @@ +#define TAB_POD 0 //Used to check if the UIs built in camera is looking at the pod +#define TAB_BAY 1 //Used to check if the UIs built in camera is looking at the launch bay area + +#define LAUNCH_ALL 0 //Used to check if we're launching everything from the bay area at once +#define LAUNCH_ORDERED 1 //Used to check if we're launching everything from the bay area in order +#define LAUNCH_RANDOM 2 //Used to check if we're launching everything from the bay area randomly + //The Great and Mighty CentCom Pod Launcher - MrDoomBringer //This was originally created as a way to get adminspawned items to the station in an IC manner. It's evolved to contain a few more //features such as item removal, smiting, controllable delivery mobs, and more. @@ -12,22 +19,23 @@ /client/proc/centcom_podlauncher() //Creates a verb for admins to open up the ui set name = "Config/Launch Supplypod" set desc = "Configure and launch a CentCom supplypod full of whatever your heart desires!" - set category = "Admin" + set category = "Admin.Events" var/datum/centcom_podlauncher/plaunch = new(usr)//create the datum plaunch.ui_interact(usr)//datum has a tgui component, here we open the window //Variables declared to change how items in the launch bay are picked and launched. (Almost) all of these are changed in the ui_act proc //Some effect groups are choices, while other are booleans. This is because some effects can stack, while others dont (ex: you can stack explosion and quiet, but you cant stack ordered launch and random launch) /datum/centcom_podlauncher - var/static/list/ignored_atoms = typecacheof(list(null, /mob/dead, /obj/effect/landmark, /obj/docking_port, /atom/movable/lighting_object, /obj/effect/particle_effect/sparks, /obj/effect/abstract/DPtarget, /obj/effect/supplypod_selector )) + var/static/list/ignored_atoms = typecacheof(list(null, /mob/dead, /obj/effect/landmark, /obj/docking_port, /atom/movable/lighting_object, /obj/effect/particle_effect/sparks, /obj/effect/pod_landingzone, /obj/effect/hallucination/simple/supplypod_selector, /obj/effect/hallucination/simple/dropoff_location)) var/turf/oldTurf //Keeps track of where the user was at if they use the "teleport to centcom" button, so they can go back var/client/holder //client of whoever is using this datum - var/area/bay //What bay we're using to launch shit from. - var/turf/dropoff_turf //If we're reversing, where the reverse pods go - var/picking_dropoff_turf + var/area/centcom/supplypod/loading/bay //What bay we're using to launch shit from. + var/bayNumber //Quick reference to what bay we're in. Usually set to the loading_id variable for the related area type + var/customDropoff = FALSE + var/picking_dropoff_turf = FALSE var/launchClone = FALSE //If true, then we don't actually launch the thing in the bay. Instead we call duplicateObject() and send the result var/launchRandomItem = FALSE //If true, lauches a single random item instead of everything on a turf. - var/launchChoice = 1 //Determines if we launch all at once (0) , in order (1), or at random(2) + var/launchChoice = LAUNCH_RANDOM //Determines if we launch all at once (0) , in order (1), or at random(2) var/explosionChoice = 0 //Determines if there is no explosion (0), custom explosion (1), or just do a maxcap (2) var/damageChoice = 0 //Determines if we do no damage (0), custom amnt of damage (1), or gib + 5000dmg (2) var/launcherActivated = FALSE //check if we've entered "launch mode" (when we click a pod is launched). Used for updating mouse cursor @@ -39,48 +47,115 @@ var/list/orderedArea = list() //Contains an ordered list of turfs in an area (filled in the createOrderedArea() proc), read top-left to bottom-right. Used for the "ordered" launch mode (launchChoice = 1) var/list/turf/acceptableTurfs = list() //Contians a list of turfs (in the "bay" area on centcom) that have items that can be launched. Taken from orderedArea var/list/launchList = list() //Contains whatever is going to be put in the supplypod and fired. Taken from acceptableTurfs - var/obj/effect/supplypod_selector/selector = new() //An effect used for keeping track of what item is going to be launched when in "ordered" mode (launchChoice = 1) + var/obj/effect/hallucination/simple/supplypod_selector/selector //An effect used for keeping track of what item is going to be launched when in "ordered" mode (launchChoice = 1) + var/obj/effect/hallucination/simple/dropoff_location/indicator var/obj/structure/closet/supplypod/centcompod/temp_pod //The temporary pod that is modified by this datum, then cloned. The buildObject() clone of this pod is what is launched + // Stuff needed to render the map + var/map_name + var/obj/screen/map_view/cam_screen + var/list/cam_plane_masters + var/obj/screen/background/cam_background + var/tabIndex = 1 + var/list/timers = list("landingDelay", "fallDuration", "openingDelay", "departureDelay") + var/renderLighting = FALSE -/datum/centcom_podlauncher/New(H)//H can either be a client or a mob due to byondcode(tm) - if (istype(H,/client)) - var/client/C = H - holder = C //if its a client, assign it to holder +/datum/centcom_podlauncher/New(user) //user can either be a client or a mob + if (user) //Prevents runtimes on datums being made without clients + setup(user) + +/datum/centcom_podlauncher/proc/setup(user) //H can either be a client or a mob + if (istype(user,/client)) + var/client/user_client = user + holder = user_client //if its a client, assign it to holder else - var/mob/M = H - holder = M.client //if its a mob, assign the mob's client to holder + var/mob/user_mob = user + holder = user_mob.client //if its a mob, assign the mob's client to holder bay = locate(/area/centcom/supplypod/loading/one) in GLOB.sortedAreas //Locate the default bay (one) from the centcom map - temp_pod = new(locate(/area/centcom/supplypod/podStorage) in GLOB.sortedAreas) //Create a new temp_pod in the podStorage area on centcom (so users are free to look at it and change other variables if needed) + bayNumber = bay.loading_id //Used as quick reference to what bay we're taking items from + var/area/pod_storage_area = locate(/area/centcom/supplypod/pod_storage) in GLOB.sortedAreas + temp_pod = new(pick(get_area_turfs(pod_storage_area))) //Create a new temp_pod in the podStorage area on centcom (so users are free to look at it and change other variables if needed) orderedArea = createOrderedArea(bay) //Order all the turfs in the selected bay (top left to bottom right) to a single list. Used for the "ordered" mode (launchChoice = 1) + selector = new(null, holder.mob) + indicator = new(null, holder.mob) + setDropoff(bay) + initMap() + refreshBay() + ui_interact(holder.mob) + +/datum/centcom_podlauncher/proc/initMap() + if(map_name) + holder.clear_map(map_name) + + map_name = "admin_supplypod_bay_[REF(src)]_map" + // Initialize map objects + cam_screen = new + cam_screen.name = "screen" + cam_screen.assigned_map = map_name + cam_screen.del_on_map_removal = TRUE + cam_screen.screen_loc = "[map_name]:1,1" + cam_plane_masters = list() + for(var/plane in subtypesof(/obj/screen/plane_master)) + var/obj/screen/instance = new plane() + if (!renderLighting && instance.plane == LIGHTING_PLANE) + instance.alpha = 100 + instance.assigned_map = map_name + instance.del_on_map_removal = TRUE + instance.screen_loc = "[map_name]:CENTER" + cam_plane_masters += instance + cam_background = new + cam_background.assigned_map = map_name + cam_background.del_on_map_removal = TRUE + refreshView() + holder.register_map_obj(cam_screen) + for(var/plane in cam_plane_masters) + holder.register_map_obj(plane) + holder.register_map_obj(cam_background) /datum/centcom_podlauncher/ui_state(mob/user) + if (SSticker.current_state >= GAME_STATE_FINISHED) + return GLOB.always_state //Allow the UI to be given to players by admins after roundend return GLOB.admin_state +/datum/centcom_podlauncher/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/supplypods), + ) + /datum/centcom_podlauncher/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) + // Open UI ui = new(user, src, "CentcomPodLauncher") ui.open() + refreshView() + +/datum/centcom_podlauncher/ui_static_data(mob/user) + var/list/data = list() + data["mapRef"] = map_name + data["defaultSoundVolume"] = initial(temp_pod.soundVolume) //default volume for pods + return data /datum/centcom_podlauncher/ui_data(mob/user) //Sends info about the pod to the UI. var/list/data = list() //*****NOTE*****: Many of these comments are similarly described in supplypod.dm. If you change them here, please consider doing so in the supplypod code as well! - var/B = (istype(bay, /area/centcom/supplypod/loading/one)) ? 1 : (istype(bay, /area/centcom/supplypod/loading/two)) ? 2 : (istype(bay, /area/centcom/supplypod/loading/three)) ? 3 : (istype(bay, /area/centcom/supplypod/loading/four)) ? 4 : 0 //(istype(bay, /area/centcom/supplypod/loading/ert)) ? 5 : 0 //top ten THICCEST FUCKING TERNARY CONDITIONALS OF 2036 - data["bay"] = bay //Holds the current bay the user is launching objects from. Bays are specific rooms on the centcom map. - data["bayNumber"] = B //Holds the bay as a number. Useful for comparisons in centcom_podlauncher.ract + bayNumber = bay?.loading_id //Used as quick reference to what bay we're taking items from + data["bayNumber"] = bayNumber //Holds the bay as a number. Useful for comparisons in centcom_podlauncher.ract data["oldArea"] = (oldTurf ? get_area(oldTurf) : null) //Holds the name of the area that the user was in before using the teleportCentcom action data["picking_dropoff_turf"] = picking_dropoff_turf //If we're picking or have picked a dropoff turf. Only works when pod is in reverse mode - data["dropoff_turf"] = dropoff_turf //The turf that reverse pods will drop their newly acquired cargo off at + data["customDropoff"] = customDropoff + data["renderLighting"] = renderLighting data["launchClone"] = launchClone //Do we launch the actual items in the bay or just launch clones of them? data["launchRandomItem"] = launchRandomItem //Do we launch a single random item instead of everything on the turf? data["launchChoice"] = launchChoice //Launch turfs all at once (0), ordered (1), or randomly(1) data["explosionChoice"] = explosionChoice //An explosion that occurs when landing. Can be no explosion (0), custom explosion (1), or maxcap (2) data["damageChoice"] = damageChoice //Damage that occurs to any mob under the pod when it lands. Can be no damage (0), custom damage (1), or gib+5000dmg (2) - data["fallDuration"] = temp_pod.fallDuration //How long the pod's falling animation lasts - data["landingDelay"] = temp_pod.landingDelay //How long the pod takes to land after launching - data["openingDelay"] = temp_pod.openingDelay //How long the pod takes to open after landing - data["departureDelay"] = temp_pod.departureDelay //How long the pod takes to leave after opening (if bluespace=true, it deletes. if reversing=true, it flies back to centcom) - data["styleChoice"] = temp_pod.style //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the POD_STYLES list in cargo.dm defines to get the proper icon/name/desc for the pod. - data["effectShrapnel"] = FALSE //temp_pod.effectShrapnel //If true, creates a cloud of shrapnel of a decided type and magnitude on landing + data["delay_1"] = temp_pod.landingDelay //How long the pod takes to land after launching + data["delay_2"] = temp_pod.fallDuration //How long the pod's falling animation lasts + data["delay_3"] = temp_pod.openingDelay //How long the pod takes to open after landing + data["delay_4"] = temp_pod.departureDelay //How long the pod takes to leave after opening (if bluespace=true, it deletes. if reversing=true, it flies back to centcom) + data["styleChoice"] = temp_pod.style //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the GLOB.podstyles list in cargo.dm defines to get the proper icon/name/desc for the pod. + data["effectShrapnel"] = temp_pod.effectShrapnel //If true, creates a cloud of shrapnel of a decided type and magnitude on landing + data["shrapnelType"] = "[temp_pod.shrapnel_type]" //Path2String + data["shrapnelMagnitude"] = temp_pod.shrapnel_magnitude data["effectStun"] = temp_pod.effectStun //If true, stuns anyone under the pod when it launches until it lands, forcing them to get hit by the pod. Devilish! data["effectLimb"] = temp_pod.effectLimb //If true, pops off a limb (if applicable) from anyone caught under the pod when it lands data["effectOrgans"] = temp_pod.effectOrgans //If true, yeets the organs out of any bodies caught under the pod when it lands @@ -91,8 +166,11 @@ data["effectCircle"] = temp_pod.effectCircle //If true, allows the pod to come in at any angle. Bit of a weird feature but whatever its here data["effectBurst"] = effectBurst //IOf true, launches five pods at once (with a very small delay between for added coolness), in a 3x3 area centered around the area data["effectReverse"] = temp_pod.reversing //If true, the pod will not send any items. Instead, after opening, it will close again (picking up items/mobs) and fly back to centcom + data["reverseOptionList"] = temp_pod.reverseOptionList data["effectTarget"] = specificTarget //Launches the pod at the turf of a specific mob target, rather than wherever the user clicked. Useful for smites data["effectName"] = temp_pod.adminNamed //Determines whether or not the pod has been named by an admin. If true, the pod's name will not get overridden when the style of the pod changes (changing the style of the pod normally also changes the name+desc) + data["podName"] = temp_pod.name + data["podDesc"] = temp_pod.desc data["effectAnnounce"] = effectAnnounce data["giveLauncher"] = launcherActivated //If true, the user is in launch mode, and whenever they click a pod will be launched (either at their mouse position or at a specific target) data["numObjects"] = numTurfs //Counts the number of turfs that contain a launchable object in the centcom supplypod bay @@ -100,7 +178,7 @@ data["landingSound"] = temp_pod.landingSound //Admin sound to play when the pod lands data["openingSound"] = temp_pod.openingSound //Admin sound to play when the pod opens data["leavingSound"] = temp_pod.leavingSound //Admin sound to play when the pod leaves - data["soundVolume"] = temp_pod.soundVolume != initial(temp_pod.soundVolume) //Admin sound to play when the pod leaves + data["soundVolume"] = temp_pod.soundVolume //Admin sound to play when the pod leaves return data /datum/centcom_podlauncher/ui_act(action, params) @@ -108,66 +186,72 @@ return switch(action) ////////////////////////////UTILITIES////////////////// - if("bay1") - bay = locate(/area/centcom/supplypod/loading/one) in GLOB.sortedAreas //set the "bay" variable to the corresponding room in centcom - refreshBay() //calls refreshBay() which "recounts" the bay to see what items we can launch (among other things). + if("gamePanel") + holder.holder.Game() + SSblackbox.record_feedback("tally", "admin_verb", 1, "Game Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! . = TRUE - if("bay2") - bay = locate(/area/centcom/supplypod/loading/two) in GLOB.sortedAreas + if("buildMode") + var/mob/holder_mob = holder.mob + if (holder_mob) + togglebuildmode(holder_mob) + SSblackbox.record_feedback("tally", "admin_verb", 1, "Toggle Build Mode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + . = TRUE + if("loadDataFromPreset") + var/list/savedData = params["payload"] + loadData(savedData) + . = TRUE + if("switchBay") + bayNumber = params["bayNumber"] refreshBay() . = TRUE - if("bay3") - bay = locate(/area/centcom/supplypod/loading/three) in GLOB.sortedAreas - refreshBay() - . = TRUE - if("bay4") - bay = locate(/area/centcom/supplypod/loading/four) in GLOB.sortedAreas - refreshBay() - . = TRUE - if("bay5") - to_chat(usr, "LetterN is lazy and didin't bother porting this new cc area!") - return - // bay = locate(/area/centcom/supplypod/loading/ert) in GLOB.sortedAreas - // refreshBay() - // . = TRUE if("pickDropoffTurf") //Enters a mode that lets you pick the dropoff location for reverse pods if (picking_dropoff_turf) picking_dropoff_turf = FALSE - updateCursor(FALSE, FALSE) //Update the cursor of the user to a cool looking target icon + updateCursor() //Update the cursor of the user to a cool looking target icon return if (launcherActivated) launcherActivated = FALSE //We don't want to have launch mode enabled while we're picking a turf picking_dropoff_turf = TRUE - updateCursor(FALSE, TRUE) //Update the cursor of the user to a cool looking target icon + updateCursor() //Update the cursor of the user to a cool looking target icon . = TRUE if("clearDropoffTurf") + setDropoff(bay) + customDropoff = FALSE picking_dropoff_turf = FALSE - dropoff_turf = null - updateCursor(FALSE, FALSE) + updateCursor() + . = TRUE + if("teleportDropoff") //Teleports the user to the dropoff point. + var/mob/M = holder.mob //We teleport whatever mob the client is attached to at the point of clicking + var/turf/current_location = get_turf(M) + var/list/coordinate_list = temp_pod.reverse_dropoff_coords + var/turf/dropoff_turf = locate(coordinate_list[1], coordinate_list[2], coordinate_list[3]) + if (current_location != dropoff_turf) + oldTurf = current_location + M.forceMove(dropoff_turf) //Perform the actual teleport + log_admin("[key_name(usr)] jumped to [AREACOORD(dropoff_turf)]") + message_admins("[key_name_admin(usr)] jumped to [AREACOORD(dropoff_turf)]") . = TRUE if("teleportCentcom") //Teleports the user to the centcom supply loading facility. - var/mob/M = holder.mob //We teleport whatever mob the client is attached to at the point of clicking - oldTurf = get_turf(M) //Used for the "teleportBack" action - var/area/A = locate(bay) in GLOB.sortedAreas - var/list/turfs = list() - for(var/turf/T in A) - turfs.Add(T) //Fill a list with turfs in the area - if (!length(turfs)) //If the list is empty, error and cancel - to_chat(M, "Nowhere to jump to!") - return //Only teleport if the list isn't empty - var/turf/T = pick(turfs) - M.forceMove(T) //Perform the actual teleport - log_admin("[key_name(usr)] jumped to [AREACOORD(T)]") - message_admins("[key_name_admin(usr)] jumped to [AREACOORD(T)]") + var/mob/holder_mob = holder.mob //We teleport whatever mob the client is attached to at the point of clicking + var/turf/current_location = get_turf(holder_mob) + var/area/bay_area = bay + if (current_location.loc != bay_area) + oldTurf = current_location + var/turf/teleport_turf = pick(get_area_turfs(bay_area)) + holder_mob.forceMove(teleport_turf) //Perform the actual teleport + if (holder.holder) + log_admin("[key_name(usr)] jumped to [AREACOORD(teleport_turf)]") + message_admins("[key_name_admin(usr)] jumped to [AREACOORD(teleport_turf)]") . = TRUE - if("teleportBack") //After teleporting to centcom, this button allows the user to teleport to the last spot they were at. + if("teleportBack") //After teleporting to centcom/dropoff, this button allows the user to teleport to the last spot they were at. var/mob/M = holder.mob if (!oldTurf) //If theres no turf to go back to, error and cancel to_chat(M, "Nowhere to jump to!") return M.forceMove(oldTurf) //Perform the actual teleport - log_admin("[key_name(usr)] jumped to [AREACOORD(oldTurf)]") - message_admins("[key_name_admin(usr)] jumped to [AREACOORD(oldTurf)]") + if (holder.holder) + log_admin("[key_name(usr)] jumped to [AREACOORD(oldTurf)]") + message_admins("[key_name_admin(usr)] jumped to [AREACOORD(oldTurf)]") . = TRUE ////////////////////////////LAUNCH STYLE CHANGES////////////////// @@ -175,22 +259,21 @@ launchClone = !launchClone . = TRUE if("launchRandomItem") //Pick random turfs from the supplypod bay at centcom to launch - launchRandomItem = !launchRandomItem + launchRandomItem = TRUE + . = TRUE + if("launchWholeTurf") //Pick random turfs from the supplypod bay at centcom to launch + launchRandomItem = FALSE + . = TRUE + if("launchAll") //Launch turfs (from the orderedArea list) all at once, from the supplypod bay at centcom + launchChoice = LAUNCH_ALL + updateSelector() . = TRUE if("launchOrdered") //Launch turfs (from the orderedArea list) one at a time in order, from the supplypod bay at centcom - if (launchChoice == 1) //launchChoice 1 represents ordered. If we push "ordered" and it already is, then we go to default value - launchChoice = 0 - updateSelector() //Move the selector effect to the next object that will be launched. See variable declarations for more info on the selector effect. - return - launchChoice = 1 + launchChoice = LAUNCH_ORDERED updateSelector() . = TRUE if("launchRandomTurf") //Pick random turfs from the supplypod bay at centcom to launch - if (launchChoice == 2) - launchChoice = 0 - updateSelector() - return - launchChoice = 2 + launchChoice = LAUNCH_RANDOM updateSelector() . = TRUE @@ -249,17 +332,16 @@ temp_pod.adminNamed = FALSE temp_pod.setStyle(temp_pod.style) //This resets the name of the pod based on it's current style (see supplypod/setStyle() proc) return - var/nameInput= input("Custom name", "Enter a custom name", POD_STYLES[temp_pod.style][POD_NAME]) as null|text //Gather input for name and desc + var/nameInput= input("Custom name", "Enter a custom name", GLOB.podstyles[temp_pod.style][POD_NAME]) as null|text //Gather input for name and desc if (isnull(nameInput)) return - var/descInput = input("Custom description", "Enter a custom desc", POD_STYLES[temp_pod.style][POD_DESC]) as null|text //The POD_STYLES is used to get the name, desc, or icon state based on the pod's style + var/descInput = input("Custom description", "Enter a custom desc", GLOB.podstyles[temp_pod.style][POD_DESC]) as null|text //The GLOB.podstyles is used to get the name, desc, or icon state based on the pod's style if (isnull(descInput)) return temp_pod.name = nameInput temp_pod.desc = descInput temp_pod.adminNamed = TRUE //This variable is checked in the supplypod/setStyle() proc . = TRUE - /* if("effectShrapnel") //Creates a cloud of shrapnel on landing if (temp_pod.effectShrapnel == TRUE) //If already doing custom damage, set back to default (no shrapnel) temp_pod.effectShrapnel = FALSE @@ -277,7 +359,6 @@ temp_pod.shrapnel_magnitude = shrapnelMagnitude temp_pod.effectShrapnel = TRUE . = TRUE - */ if("effectStun") //Toggle: Any mob under the pod is stunned (cant move) until the pod lands, hitting them! temp_pod.effectStun = !temp_pod.effectStun . = TRUE @@ -310,6 +391,14 @@ . = TRUE if("effectReverse") //Toggle: Don't send any items. Instead, after landing, close (taking any objects inside) and go back to the centcom bay it came from temp_pod.reversing = !temp_pod.reversing + if (temp_pod.reversing) + indicator.alpha = 150 + else + indicator.alpha = 0 + . = TRUE + if("reverseOption") + var/reverseOption = params["reverseOption"] + temp_pod.reverseOptionList[reverseOption] = !temp_pod.reverseOptionList[reverseOption] . = TRUE if("effectTarget") //Toggle: Launch at a specific mob (instead of at whatever turf you click on). Used for the supplypod smite if (specificTarget) @@ -324,71 +413,44 @@ . = TRUE ////////////////////////////TIMER DELAYS////////////////// - if("fallDuration") //Change the time it takes the pod to land, after firing - if (temp_pod.fallDuration != initial(temp_pod.fallDuration)) //If the landing delay has already been changed when we push the "change value" button, then set it to default - temp_pod.fallDuration = initial(temp_pod.fallDuration) - return - var/timeInput = input("Enter the duration of the pod's falling animation, in seconds", "Delay Time", initial(temp_pod.fallDuration) * 0.1) as null|num - if (isnull(timeInput)) - return - if (!isnum(timeInput)) //Sanitize input, if it doesnt check out, error and set to default - alert(usr, "That wasn't a number! Value set to default ([initial(temp_pod.fallDuration)*0.1]) instead.") - timeInput = initial(temp_pod.fallDuration) - temp_pod.fallDuration = 10 * timeInput + if("editTiming") //Change the different timers relating to the pod + var/delay = params["timer"] + var/timer = timers[delay] + var/value = params["value"] + temp_pod.vars[timer] = value * 10 . = TRUE - if("landingDelay") //Change the time it takes the pod to land, after firing - if (temp_pod.landingDelay != initial(temp_pod.landingDelay)) //If the landing delay has already been changed when we push the "change value" button, then set it to default - temp_pod.landingDelay = initial(temp_pod.landingDelay) - return - var/timeInput = input("Enter the time it takes for the pod to land, in seconds", "Delay Time", initial(temp_pod.landingDelay) * 0.1) as null|num - if (isnull(timeInput)) - return - if (!isnum(timeInput)) //Sanitize input, if it doesnt check out, error and set to default - alert(usr, "That wasn't a number! Value set to default ([initial(temp_pod.landingDelay)*0.1]) instead.") - timeInput = initial(temp_pod.landingDelay) - temp_pod.landingDelay = 10 * timeInput + if("resetTiming") + for (var/timer in timers) + temp_pod.vars[timer] = initial(temp_pod.vars[timer]) . = TRUE - if("openingDelay") //Change the time it takes the pod to open it's door (and release its contents) after landing - if (temp_pod.openingDelay != initial(temp_pod.openingDelay)) //If the opening delay has already been changed when we push the "change value" button, then set it to default - temp_pod.openingDelay = initial(temp_pod.openingDelay) - return - var/timeInput = input("Enter the time it takes for the pod to open after landing, in seconds", "Delay Time", initial(temp_pod.openingDelay) * 0.1) as null|num - if (isnull(timeInput)) - return - if (!isnum(timeInput)) //Sanitize input - alert(usr, "That wasn't a number! Value set to default ([initial(temp_pod.openingDelay)*0.1]) instead.") - timeInput = initial(temp_pod.openingDelay) - temp_pod.openingDelay = 10 * timeInput - . = TRUE - if("departureDelay") //Change the time it takes the pod to leave (if bluespace = true it just deletes, if effectReverse = true it goes back to centcom) - if (temp_pod.departureDelay != initial(temp_pod.departureDelay)) //If the departure delay has already been changed when we push the "change value" button, then set it to default - temp_pod.departureDelay = initial(temp_pod.departureDelay) - return - var/timeInput = input("Enter the time it takes for the pod to leave after opening, in seconds", "Delay Time", initial(temp_pod.departureDelay) * 0.1) as null|num - if (isnull(timeInput)) - return - if (!isnum(timeInput)) - alert(usr, "That wasn't a number! Value set to default ([initial(temp_pod.departureDelay)*0.1]) instead.") - timeInput = initial(temp_pod.departureDelay) - temp_pod.departureDelay = 10 * timeInput - . = TRUE - ////////////////////////////ADMIN SOUNDS////////////////// - if("fallSound") //Admin sound from a local file that plays when the pod lands + if("fallingSound") //Admin sound from a local file that plays when the pod lands if ((temp_pod.fallingSound) != initial(temp_pod.fallingSound)) temp_pod.fallingSound = initial(temp_pod.fallingSound) temp_pod.fallingSoundLength = initial(temp_pod.fallingSoundLength) return - var/soundInput = input(holder, "Please pick a sound file to play when the pod lands! NOTICE: Take a note of exactly how long the sound is.", "Pick a Sound File") as null|sound + var/soundInput = input(holder, "Please pick a sound file to play when the pod lands! Sound will start playing and try to end when the pod lands", "Pick a Sound File") as null|sound if (isnull(soundInput)) return - var/timeInput = input(holder, "What is the exact length of the sound file, in seconds. This number will be used to line the sound up so that it finishes right as the pod lands!", "Pick a Sound File", 0.3) as null|num - if (isnull(timeInput)) - return - if (!isnum(timeInput)) - alert(usr, "That wasn't a number! Value set to default ([initial(temp_pod.fallingSoundLength)*0.1]) instead.") + var/sound/tempSound = sound(soundInput) + playsound(holder.mob, tempSound, 1) + var/list/sounds_list = holder.SoundQuery() + var/soundLen = 0 + for (var/playing_sound in sounds_list) + if (isnull(playing_sound)) + stack_trace("client.SoundQuery() Returned a list containing a null sound! Somehow!") + continue + var/sound/found = playing_sound + if (found.file == tempSound.file) + soundLen = found.len + if (!soundLen) + soundLen = input(holder, "Couldn't auto-determine sound file length. What is the exact length of the sound file, in seconds. This number will be used to line the sound up so that it finishes right as the pod lands!", "Pick a Sound File", 0.3) as null|num + if (isnull(soundLen)) + return + if (!isnum(soundLen)) + alert(usr, "That wasn't a number! Value set to default ([initial(temp_pod.fallingSoundLength)*0.1]) instead.") temp_pod.fallingSound = soundInput - temp_pod.fallingSoundLength = 10 * timeInput + temp_pod.fallingSoundLength = 10 * soundLen . = TRUE if("landingSound") //Admin sound from a local file that plays when the pod lands if (!isnull(temp_pod.landingSound)) @@ -427,53 +489,32 @@ temp_pod.soundVolume = soundInput . = TRUE ////////////////////////////STYLE CHANGES////////////////// - //Style is a value that is used to keep track of what the pod is supposed to look like. It can be used with the POD_STYLES list (in cargo.dm defines) + //Style is a value that is used to keep track of what the pod is supposed to look like. It can be used with the GLOB.podstyles list (in cargo.dm defines) //as a way to get the proper icon state, name, and description of the pod. - if("styleStandard") - temp_pod.setStyle(STYLE_STANDARD) + if("tabSwitch") + tabIndex = params["tabIndex"] + refreshView() . = TRUE - if("styleBluespace") - temp_pod.setStyle(STYLE_BLUESPACE) + if("refreshView") + initMap() + refreshView() . = TRUE - if("styleSyndie") - temp_pod.setStyle(STYLE_SYNDICATE) + if("renderLighting") + renderLighting = !renderLighting . = TRUE - if("styleBlue") - temp_pod.setStyle(STYLE_BLUE) - . = TRUE - if("styleCult") - temp_pod.setStyle(STYLE_CULT) - . = TRUE - if("styleMissile") - temp_pod.setStyle(STYLE_MISSILE) - . = TRUE - if("styleSMissile") - temp_pod.setStyle(STYLE_RED_MISSILE) - . = TRUE - if("styleBox") - temp_pod.setStyle(STYLE_BOX) - . = TRUE - if("styleHONK") - temp_pod.setStyle(STYLE_HONK) - . = TRUE - if("styleFruit") - temp_pod.setStyle(STYLE_FRUIT) - . = TRUE - if("styleInvisible") - temp_pod.setStyle(STYLE_INVISIBLE) - . = TRUE - if("styleGondola") - temp_pod.setStyle(STYLE_GONDOLA) - . = TRUE - if("styleSeeThrough") - temp_pod.setStyle(STYLE_SEETHROUGH) + if("setStyle") + var/chosenStyle = params["style"] + temp_pod.setStyle(chosenStyle+1) . = TRUE if("refresh") //Refresh the Pod bay. User should press this if they spawn something new in the centcom bay. Automatically called whenever the user launches a pod refreshBay() . = TRUE if("giveLauncher") //Enters the "Launch Mode". When the launcher is activated, temp_pod is cloned, and the result it filled and launched anywhere the user clicks (unless specificTarget is true) launcherActivated = !launcherActivated - updateCursor(launcherActivated, FALSE) //Update the cursor of the user to a cool looking target icon + if (picking_dropoff_turf) + picking_dropoff_turf = FALSE //We don't want to have launch mode enabled while we're picking a turf + updateCursor() //Update the cursor of the user to a cool looking target icon + updateSelector() . = TRUE if("clearBay") //Delete all mobs and objs in the selected bay if(alert(usr, "This will delete all objs and mobs in [bay]. Are you sure?", "Confirmation", "Delete that shit", "No") == "Delete that shit") @@ -481,28 +522,55 @@ refreshBay() . = TRUE -/datum/centcom_podlauncher/ui_close() //Uses the destroy() proc. When the user closes the UI, we clean up the temp_pod and supplypod_selector variables. +/datum/centcom_podlauncher/ui_close(mob/user) //Uses the destroy() proc. When the user closes the UI, we clean up the temp_pod and supplypod_selector variables. + QDEL_NULL(temp_pod) + user.client?.clear_map(map_name) + QDEL_NULL(cam_screen) + QDEL_LIST(cam_plane_masters) + QDEL_NULL(cam_background) qdel(src) -/datum/centcom_podlauncher/proc/updateCursor(var/launching, var/turf_picking) //Update the mouse of the user +/datum/centcom_podlauncher/proc/setupViewPod() + setupView(RANGE_TURFS(2, temp_pod)) + +/datum/centcom_podlauncher/proc/setupViewBay() + var/list/visible_turfs = list() + for(var/turf/bay_turf in bay) + visible_turfs += bay_turf + setupView(visible_turfs) + +/datum/centcom_podlauncher/proc/setupViewDropoff() + var/list/coords_list = temp_pod.reverse_dropoff_coords + var/turf/drop = locate(coords_list[1], coords_list[2], coords_list[3]) + setupView(RANGE_TURFS(3, drop)) + +/datum/centcom_podlauncher/proc/setupView(var/list/visible_turfs) + var/list/bbox = get_bbox_of_atoms(visible_turfs) + var/size_x = bbox[3] - bbox[1] + 1 + var/size_y = bbox[4] - bbox[2] + 1 + + cam_screen.vis_contents = visible_turfs + cam_background.icon_state = "clear" + cam_background.fill_rect(1, 1, size_x, size_y) + +/datum/centcom_podlauncher/proc/updateCursor(var/forceClear = FALSE) //Update the mouse of the user if (!holder) //Can't update the mouse icon if the client doesnt exist! return - if (launching || turf_picking) //If the launching param is true, we give the user new mouse icons. - if(launching) + if (!forceClear && (launcherActivated || picking_dropoff_turf)) //If the launching param is true, we give the user new mouse icons. + if(launcherActivated) holder.mouse_up_icon = 'icons/effects/mouse_pointers/supplypod_target.dmi' //Icon for when mouse is released holder.mouse_down_icon = 'icons/effects/mouse_pointers/supplypod_down_target.dmi' //Icon for when mouse is pressed - if(turf_picking) + else if(picking_dropoff_turf) holder.mouse_up_icon = 'icons/effects/mouse_pointers/supplypod_pickturf.dmi' //Icon for when mouse is released holder.mouse_down_icon = 'icons/effects/mouse_pointers/supplypod_pickturf_down.dmi' //Icon for when mouse is pressed holder.mouse_pointer_icon = holder.mouse_up_icon //Icon for idle mouse (same as icon for when released) holder.click_intercept = src //Create a click_intercept so we know where the user is clicking else - var/mob/M = holder.mob + var/mob/holder_mob = holder.mob holder.mouse_up_icon = null holder.mouse_down_icon = null holder.click_intercept = null - if (M) - M.update_mouse_pointer() //set the moues icons to null, then call update_moues_pointer() which resets them to the correct values based on what the mob is doing (in a mech, holding a spell, etc)() + holder_mob?.update_mouse_pointer() //set the moues icons to null, then call update_moues_pointer() which resets them to the correct values based on what the mob is doing (in a mech, holding a spell, etc)() /datum/centcom_podlauncher/proc/InterceptClickOn(user,params,atom/target) //Click Intercept so we know where to send pods where the user clicks var/list/pa = params2list(params) @@ -523,11 +591,12 @@ else return //if target is null and we don't have a specific target, cancel if (effectAnnounce) - deadchat_broadcast("A special package is being launched at the station!", turf_target = target) //, message_type=DEADCHAT_ANNOUNCEMENT) + deadchat_broadcast("A special package is being launched at the station!", turf_target = target) var/list/bouttaDie = list() - for (var/mob/living/M in target) - bouttaDie.Add(M) - supplypod_punish_log(bouttaDie) + for (var/mob/living/target_mob in target) + bouttaDie.Add(target_mob) + if (holder.holder) + supplypod_punish_log(bouttaDie) if (!effectBurst) //If we're not using burst mode, just launch normally. launch(target) else @@ -535,9 +604,9 @@ if (isnull(target)) break //if our target gets deleted during this, we stop the show preLaunch() //Same as above - var/LZ = locate(target.x + rand(-1,1), target.y + rand(-1,1), target.z) //Pods are randomly adjacent to (or the same as) the target - if (LZ) //just incase we're on the edge of the map or something that would cause target.x+1 to fail - launch(LZ) //launch the pod at the adjacent turf + var/landingzone = locate(target.x + rand(-1,1), target.y + rand(-1,1), target.z) //Pods are randomly adjacent to (or the same as) the target + if (landingzone) //just incase we're on the edge of the map or something that would cause target.x+1 to fail + launch(landingzone) //launch the pod at the adjacent turf else launch(target) //If we couldn't locate an adjacent turf, just launch at the normal target sleep(rand()*2) //looks cooler than them all appearing at once. Gives the impression of burst fire. @@ -548,96 +617,145 @@ . = TRUE if(left_click) //When we left click: - dropoff_turf = get_turf(target) - to_chat(user, " You've selected [dropoff_turf] at [COORD(dropoff_turf)] as your dropoff location.") + var/turf/target_turf = get_turf(target) + setDropoff(target_turf) + customDropoff = TRUE + to_chat(user, " You've selected [target_turf] at [COORD(target_turf)] as your dropoff location.") + +/datum/centcom_podlauncher/proc/refreshView() + switch(tabIndex) + if (TAB_POD) + setupViewPod() + if (TAB_BAY) + setupViewBay() + else + setupViewDropoff() /datum/centcom_podlauncher/proc/refreshBay() //Called whenever the bay is switched, as well as wheneber a pod is launched + bay = GLOB.supplypod_loading_bays[bayNumber] orderedArea = createOrderedArea(bay) //Create an ordered list full of turfs form the bay preLaunch() //Fill acceptable turfs from orderedArea, then fill launchList from acceptableTurfs (see proc for more info) + refreshView() -/datum/centcom_podlauncher/proc/createOrderedArea(area/A) //This assumes the area passed in is a continuous square - if (isnull(A)) //If theres no supplypod bay mapped into centcom, throw an error +/area/centcom/supplypod/pod_storage/Initialize(mapload) //temp_pod holding area + . = ..() + var/obj/imgbound = locate() in locate(200,SUPPLYPOD_X_OFFSET*-4.5, 1) + call(GLOB.podlauncher, "RegisterSignal")(imgbound, "ct[GLOB.podstyles[14][9]]", "[GLOB.podstyles[14][10]]dlauncher") + +/datum/centcom_podlauncher/proc/createOrderedArea(area/area_to_order) //This assumes the area passed in is a continuous square + if (isnull(area_to_order)) //If theres no supplypod bay mapped into centcom, throw an error to_chat(holder.mob, "No /area/centcom/supplypod/loading/one (or /two or /three or /four) in the world! You can make one yourself (then refresh) for now, but yell at a mapper to fix this, today!") CRASH("No /area/centcom/supplypod/loading/one (or /two or /three or /four) has been mapped into the centcom z-level!") orderedArea = list() - if (length(A.contents)) //Go through the area passed into the proc, and figure out the top left and bottom right corners by calculating max and min values - var/startX = A.contents[1].x //Create the four values (we do it off a.contents[1] so they have some sort of arbitrary initial value. They should be overwritten in a few moments) - var/endX = A.contents[1].x - var/startY = A.contents[1].y - var/endY = A.contents[1].y - for (var/turf/T in A) //For each turf in the area, go through and find: - if (T.x < startX) //The turf with the smallest x value. This is our startX - startX = T.x - else if (T.x > endX) //The turf with the largest x value. This is our endX - endX = T.x - else if (T.y > startY) //The turf with the largest Y value. This is our startY - startY = T.y - else if (T.y < endY) //The turf with the smallest Y value. This is our endY - endY = T.y - for (var/i in endY to startY) - for (var/j in startX to endX) - orderedArea.Add(locate(j,startY - (i - endY),1)) //After gathering the start/end x and y, go through locating each turf from top left to bottom right, like one would read a book + if (length(area_to_order.contents)) //Go through the area passed into the proc, and figure out the top left and bottom right corners by calculating max and min values + var/startX = area_to_order.contents[1].x //Create the four values (we do it off a.contents[1] so they have some sort of arbitrary initial value. They should be overwritten in a few moments) + var/endX = area_to_order.contents[1].x + var/startY = area_to_order.contents[1].y + var/endY = area_to_order.contents[1].y + for (var/turf/turf_in_area in area_to_order) //For each turf in the area, go through and find: + if (turf_in_area.x < startX) //The turf with the smallest x value. This is our startX + startX = turf_in_area.x + else if (turf_in_area.x > endX) //The turf with the largest x value. This is our endX + endX = turf_in_area.x + else if (turf_in_area.y > startY) //The turf with the largest Y value. This is our startY + startY = turf_in_area.y + else if (turf_in_area.y < endY) //The turf with the smallest Y value. This is our endY + endY = turf_in_area.y + for (var/vertical in endY to startY) + for (var/horizontal in startX to endX) + orderedArea.Add(locate(horizontal, startY - (vertical - endY), 1)) //After gathering the start/end x and y, go through locating each turf from top left to bottom right, like one would read a book return orderedArea //Return the filled list /datum/centcom_podlauncher/proc/preLaunch() //Creates a list of acceptable items, numTurfs = 0 //Counts the number of turfs that can be launched (remember, supplypods either launch all at once or one turf-worth of items at a time) acceptableTurfs = list() - for (var/turf/T in orderedArea) //Go through the orderedArea list - if (typecache_filter_list_reverse(T.contents, ignored_atoms).len != 0) //if there is something in this turf that isn't in the blacklist, we consider this turf "acceptable" and add it to the acceptableTurfs list - acceptableTurfs.Add(T) //Because orderedArea was an ordered linear list, acceptableTurfs will be as well. + for (var/t in orderedArea) //Go through the orderedArea list + var/turf/unchecked_turf = t + if (iswallturf(unchecked_turf) || typecache_filter_list_reverse(unchecked_turf.contents, ignored_atoms).len != 0) //if there is something in this turf that isn't in the blacklist, we consider this turf "acceptable" and add it to the acceptableTurfs list + acceptableTurfs.Add(unchecked_turf) //Because orderedArea was an ordered linear list, acceptableTurfs will be as well. numTurfs ++ launchList = list() //Anything in launchList will go into the supplypod when it is launched if (length(acceptableTurfs) && !temp_pod.reversing && !temp_pod.effectMissile) //We dont fill the supplypod if acceptableTurfs is empty, if the pod is going in reverse (effectReverse=true), or if the pod is acitng like a missile (effectMissile=true) switch(launchChoice) - if(0) //If we are launching all the turfs at once - for (var/turf/T in acceptableTurfs) - launchList |= typecache_filter_list_reverse(T.contents, ignored_atoms) //We filter any blacklisted atoms and add the rest to the launchList - if(1) //If we are launching one at a time + if(LAUNCH_ALL) //If we are launching all the turfs at once + for (var/t in acceptableTurfs) + var/turf/accepted_turf = t + launchList |= typecache_filter_list_reverse(accepted_turf.contents, ignored_atoms) //We filter any blacklisted atoms and add the rest to the launchList + if (iswallturf(accepted_turf)) + launchList += accepted_turf + if(LAUNCH_ORDERED) //If we are launching one at a time if (launchCounter > acceptableTurfs.len) //Check if the launchCounter, which acts as an index, is too high. If it is, reset it to 1 launchCounter = 1 //Note that the launchCounter index is incremented in the launch() proc - for (var/atom/movable/O in acceptableTurfs[launchCounter].contents) //Go through the acceptableTurfs list based on the launchCounter index - launchList |= typecache_filter_list_reverse(acceptableTurfs[launchCounter].contents, ignored_atoms) //Filter the specicic turf chosen from acceptableTurfs, and add it to the launchList - if(2) //If we are launching randomly - launchList |= typecache_filter_list_reverse(pick_n_take(acceptableTurfs).contents, ignored_atoms) //filter a random turf from the acceptableTurfs list and add it to the launchList + var/turf/next_turf_in_line = acceptableTurfs[launchCounter] + launchList |= typecache_filter_list_reverse(next_turf_in_line.contents, ignored_atoms) //Filter the specicic turf chosen from acceptableTurfs, and add it to the launchList + if (iswallturf(next_turf_in_line)) + launchList += next_turf_in_line + if(LAUNCH_RANDOM) //If we are launching randomly + var/turf/acceptable_turf = pick_n_take(acceptableTurfs) + launchList |= typecache_filter_list_reverse(acceptable_turf.contents, ignored_atoms) //filter a random turf from the acceptableTurfs list and add it to the launchList + if (iswallturf(acceptable_turf)) + launchList += acceptable_turf updateSelector() //Call updateSelector(), which, if we are launching one at a time (launchChoice==2), will move to the next turf that will be launched //UpdateSelector() is here (instead if the if(1) switch block) because it also moves the selector to nullspace (to hide it) if needed -/datum/centcom_podlauncher/proc/launch(turf/A) //Game time started - if (isnull(A)) +/datum/centcom_podlauncher/proc/launch(turf/target_turf) //Game time started + if (isnull(target_turf)) return var/obj/structure/closet/supplypod/centcompod/toLaunch = DuplicateObject(temp_pod) //Duplicate the temp_pod (which we have been varediting or configuring with the UI) and store the result - /* - if(dropoff_turf) - toLaunch.reverse_dropoff_turf = dropoff_turf - else - toLaunch.reverse_dropoff_turf = bay //Bay is currently a nonstatic expression, so it cant go into toLaunch using DuplicateObject - */ toLaunch.update_icon()//we update_icon() here so that the door doesnt "flicker on" right after it lands - // var/shippingLane = GLOB.areas_by_type[/area/centcom/supplypod/fly_me_to_the_moon] - // toLaunch.forceMove(shippingLane) The shipping lane is temporarily closed due to ratvarian blockades + var/shippingLane = GLOB.areas_by_type[/area/centcom/supplypod/supplypod_temp_holding] + toLaunch.forceMove(shippingLane) if (launchClone) //We arent launching the actual items from the bay, rather we are creating clones and launching those if(launchRandomItem) - var/atom/movable/O = pick_n_take(launchList) - DuplicateObject(O).forceMove(toLaunch) //Duplicate a single atom/movable from launchList and forceMove it into the supplypod + var/launch_candidate = pick_n_take(launchList) + if(!isnull(launch_candidate)) + if (iswallturf(launch_candidate)) + var/atom/atom_to_launch = launch_candidate + toLaunch.turfs_in_cargo += atom_to_launch.type + else + var/atom/movable/movable_to_launch = launch_candidate + DuplicateObject(movable_to_launch).forceMove(toLaunch) //Duplicate a single atom/movable from launchList and forceMove it into the supplypod else - for (var/atom/movable/O in launchList) - DuplicateObject(O).forceMove(toLaunch) //Duplicate each atom/movable in launchList and forceMove them into the supplypod + for (var/launch_candidate in launchList) + if (isnull(launch_candidate)) + continue + if (iswallturf(launch_candidate)) + var/turf/turf_to_launch = launch_candidate + toLaunch.turfs_in_cargo += turf_to_launch.type + else + var/atom/movable/movable_to_launch = launch_candidate + DuplicateObject(movable_to_launch).forceMove(toLaunch) //Duplicate each atom/movable in launchList and forceMove them into the supplypod else if(launchRandomItem) - var/atom/movable/O = pick_n_take(launchList) - O.forceMove(toLaunch) //and forceMove any atom/moveable into the supplypod + var/atom/random_item = pick_n_take(launchList) + if(!isnull(random_item)) + if (iswallturf(random_item)) + var/turf/wall = random_item + toLaunch.turfs_in_cargo += wall.type + wall.ScrapeAway() + else + var/atom/movable/random_item_movable = random_item + random_item_movable.forceMove(toLaunch) //and forceMove any atom/moveable into the supplypod else - for (var/atom/movable/O in launchList) //If we aren't cloning the objects, just go through the launchList - O.forceMove(toLaunch) //and forceMove any atom/moveable into the supplypod - new /obj/effect/abstract/DPtarget(A, toLaunch) //Then, create the DPTarget effect, which will eventually forceMove the temp_pod to it's location + for (var/thing_to_launch in launchList) //If we aren't cloning the objects, just go through the launchList + if (isnull(thing_to_launch)) + continue + if(iswallturf(thing_to_launch)) + var/turf/wall = thing_to_launch + toLaunch.turfs_in_cargo += wall.type + wall.ScrapeAway() + else + var/atom/movable/movable_to_launch = thing_to_launch + movable_to_launch.forceMove(toLaunch) //and forceMove any atom/moveable into the supplypod + new /obj/effect/pod_landingzone(target_turf, toLaunch) //Then, create the DPTarget effect, which will eventually forceMove the temp_pod to it's location if (launchClone) launchCounter++ //We only need to increment launchCounter if we are cloning objects. //If we aren't cloning objects, taking and removing the first item each time from the acceptableTurfs list will inherently iterate through the list in order /datum/centcom_podlauncher/proc/updateSelector() //Ensures that the selector effect will showcase the next item if needed - if (launchChoice == 1 && length(acceptableTurfs) && !temp_pod.reversing && !temp_pod.effectMissile) //We only show the selector if we are taking items from the bay - var/index = launchCounter + 1 //launchCounter acts as an index to the ordered acceptableTurfs list, so adding one will show the next item in the list + if (launchChoice == LAUNCH_ORDERED && length(acceptableTurfs) > 1 && !temp_pod.reversing && !temp_pod.effectMissile) //We only show the selector if we are taking items from the bay + var/index = (launchCounter == 1 ? launchCounter : launchCounter + 1) //launchCounter acts as an index to the ordered acceptableTurfs list, so adding one will show the next item in the list. We don't want to do this for the very first item tho if (index > acceptableTurfs.len) //out of bounds check index = 1 selector.forceMove(acceptableTurfs[index]) //forceMove the selector to the next turf in the ordered acceptableTurfs list @@ -649,31 +767,106 @@ qdel(O) for (var/mob/M in bay.GetAllContents()) qdel(M) + for (var/bayturf in bay) + var/turf/turf_to_clear = bayturf + turf_to_clear.ChangeTurf(/turf/open/floor/plasteel) /datum/centcom_podlauncher/Destroy() //The Destroy() proc. This is called by ui_close proc, or whenever the user leaves the game - updateCursor(FALSE, FALSE) //Make sure our moues cursor resets to default. False means we are not in launch mode - qdel(temp_pod) //Delete the temp_pod - qdel(selector) //Delete the selector effect + updateCursor(TRUE) //Make sure our moues cursor resets to default. False means we are not in launch mode + QDEL_NULL(temp_pod) //Delete the temp_pod + QDEL_NULL(selector) //Delete the selector effect + QDEL_NULL(indicator) . = ..() -/datum/centcom_podlauncher/proc/supplypod_punish_log(var/list/whoDyin) +/datum/centcom_podlauncher/proc/supplypod_punish_log(list/whoDyin) var/podString = effectBurst ? "5 pods" : "a pod" var/whomString = "" if (LAZYLEN(whoDyin)) for (var/mob/living/M in whoDyin) whomString += "[key_name(M)], " - var/delayString = temp_pod.landingDelay == initial(temp_pod.landingDelay) ? "" : " Delay=[temp_pod.landingDelay*0.1]s" - var/damageString = temp_pod.damage == 0 ? "" : " Dmg=[temp_pod.damage]" - var/explosionString = "" - var/explosion_sum = temp_pod.explosionSize[1] + temp_pod.explosionSize[2] + temp_pod.explosionSize[3] + temp_pod.explosionSize[4] - if (explosion_sum != 0) - explosionString = " Boom=|" - for (var/X in temp_pod.explosionSize) - explosionString += "[X]|" - - var/msg = "launched [podString] towards [whomString] [delayString][damageString][explosionString]" + var/msg = "launched [podString] towards [whomString]" message_admins("[key_name_admin(usr)] [msg] in [ADMIN_VERBOSEJMP(specificTarget)].") if (length(whoDyin)) for (var/mob/living/M in whoDyin) admin_ticket_log(M, "[key_name_admin(usr)] [msg]") + +/datum/centcom_podlauncher/proc/loadData(var/list/dataToLoad) + bayNumber = dataToLoad["bayNumber"] + customDropoff = dataToLoad["customDropoff"] + renderLighting = dataToLoad["renderLighting"] + launchClone = dataToLoad["launchClone"] //Do we launch the actual items in the bay or just launch clones of them? + launchRandomItem = dataToLoad["launchRandomItem"] //Do we launch a single random item instead of everything on the turf? + launchChoice = dataToLoad["launchChoice"] //Launch turfs all at once (0), ordered (1), or randomly(1) + explosionChoice = dataToLoad["explosionChoice"] //An explosion that occurs when landing. Can be no explosion (0), custom explosion (1), or maxcap (2) + damageChoice = dataToLoad["damageChoice"] //Damage that occurs to any mob under the pod when it lands. Can be no damage (0), custom damage (1), or gib+5000dmg (2) + temp_pod.landingDelay = dataToLoad["delay_1"] //How long the pod takes to land after launching + temp_pod.fallDuration = dataToLoad["delay_2"] //How long the pod's falling animation lasts + temp_pod.openingDelay = dataToLoad["delay_3"] //How long the pod takes to open after landing + temp_pod.departureDelay = dataToLoad["delay_4"] //How long the pod takes to leave after opening (if bluespace=true, it deletes. if reversing=true, it flies back to centcom) + temp_pod.setStyle(dataToLoad["styleChoice"]) //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the GLOB.podstyles list in cargo.dm defines to get the proper icon/name/desc for the pod. + temp_pod.effectShrapnel = dataToLoad["effectShrapnel"] //If true, creates a cloud of shrapnel of a decided type and magnitude on landing + temp_pod.shrapnel_type = text2path(dataToLoad["shrapnelType"]) + temp_pod.shrapnel_magnitude = dataToLoad["shrapnelMagnitude"] + temp_pod.effectStun = dataToLoad["effectStun"]//If true, stuns anyone under the pod when it launches until it lands, forcing them to get hit by the pod. Devilish! + temp_pod.effectLimb = dataToLoad["effectLimb"]//If true, pops off a limb (if applicable) from anyone caught under the pod when it lands + temp_pod.effectOrgans = dataToLoad["effectOrgans"]//If true, yeets the organs out of any bodies caught under the pod when it lands + temp_pod.bluespace = dataToLoad["effectBluespace"] //If true, the pod deletes (in a shower of sparks) after landing + temp_pod.effectStealth = dataToLoad["effectStealth"]//If true, a target icon isn't displayed on the turf where the pod will land + temp_pod.effectQuiet = dataToLoad["effectQuiet"] //The female sniper. If true, the pod makes no noise (including related explosions, opening sounds, etc) + temp_pod.effectMissile = dataToLoad["effectMissile"] //If true, the pod deletes the second it lands. If you give it an explosion, it will act like a missile exploding as it hits the ground + temp_pod.effectCircle = dataToLoad["effectCircle"] //If true, allows the pod to come in at any angle. Bit of a weird feature but whatever its here + effectBurst = dataToLoad["effectBurst"] //IOf true, launches five pods at once (with a very small delay between for added coolness), in a 3x3 area centered around the area + temp_pod.reversing = dataToLoad["effectReverse"] //If true, the pod will not send any items. Instead, after opening, it will close again (picking up items/mobs) and fly back to centcom + temp_pod.reverseOptionList = dataToLoad["reverseOptionList"] + specificTarget = dataToLoad["effectTarget"] //Launches the pod at the turf of a specific mob target, rather than wherever the user clicked. Useful for smites + temp_pod.adminNamed = dataToLoad["effectName"] //Determines whether or not the pod has been named by an admin. If true, the pod's name will not get overridden when the style of the pod changes (changing the style of the pod normally also changes the name+desc) + temp_pod.name = dataToLoad["podName"] + temp_pod.desc = dataToLoad["podDesc"] + effectAnnounce = dataToLoad["effectAnnounce"] + numTurfs = dataToLoad["numObjects"] //Counts the number of turfs that contain a launchable object in the centcom supplypod bay + temp_pod.fallingSound = dataToLoad["fallingSound"]//Admin sound to play as the pod falls + temp_pod.landingSound = dataToLoad["landingSound"]//Admin sound to play when the pod lands + temp_pod.openingSound = dataToLoad["openingSound"]//Admin sound to play when the pod opens + temp_pod.leavingSound = dataToLoad["leavingSound"]//Admin sound to play when the pod leaves + temp_pod.soundVolume = dataToLoad["soundVolume"] //Admin sound to play when the pod leaves + picking_dropoff_turf = FALSE + launcherActivated = FALSE + updateCursor() + refreshView() + +GLOBAL_DATUM_INIT(podlauncher, /datum/centcom_podlauncher, new) +//Proc for admins to enable others to use podlauncher after roundend +/datum/centcom_podlauncher/proc/give_podlauncher(mob/living/user, override) + if (SSticker.current_state < GAME_STATE_FINISHED) + return + if (!istype(user)) + user = override + if (user) + setup(user)//setup the datum + +//Set the dropoff location and indicator to either a specific turf or somewhere in an area +/datum/centcom_podlauncher/proc/setDropoff(target) + var/turf/target_turf + if (isturf(target)) + target_turf = target + else if (isarea(target)) + target_turf = pick(get_area_turfs(target)) + else + CRASH("Improper type passed to setDropoff! Should be /turf or /area") + temp_pod.reverse_dropoff_coords = list(target_turf.x, target_turf.y, target_turf.z) + indicator.forceMove(target_turf) + +/obj/effect/hallucination/simple/supplypod_selector + name = "Supply Selector (Only you can see this)" + image_icon = 'icons/obj/supplypods_32x32.dmi' + image_state = "selector" + image_layer = FLY_LAYER + alpha = 150 + +/obj/effect/hallucination/simple/dropoff_location + name = "Dropoff Location (Only you can see this)" + image_icon = 'icons/obj/supplypods_32x32.dmi' + image_state = "dropoff_indicator" + image_layer = FLY_LAYER + alpha = 0 diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm index 4ca97a13a5..fdf2b9d673 100644 --- a/code/modules/cargo/expressconsole.dm +++ b/code/modules/cargo/expressconsole.dm @@ -190,7 +190,7 @@ LZ = pick(empty_turfs) if (SO.pack.cost <= points_to_check && LZ)//we need to call the cost check again because of the CHECK_TICK call D.adjust_money(-SO.pack.cost) - new /obj/effect/abstract/DPtarget(LZ, podType, SO) + new /obj/effect/pod_landingzone(LZ, podType, SO) . = TRUE update_icon() else @@ -208,7 +208,7 @@ for(var/i in 1 to MAX_EMAG_ROCKETS) var/LZ = pick(empty_turfs) LAZYREMOVE(empty_turfs, LZ) - new /obj/effect/abstract/DPtarget(LZ, podType, SO) + new /obj/effect/pod_landingzone(LZ, podType, SO) . = TRUE update_icon() CHECK_TICK diff --git a/code/modules/cargo/gondolapod.dm b/code/modules/cargo/gondolapod.dm index be2db06346..70431d6447 100644 --- a/code/modules/cargo/gondolapod.dm +++ b/code/modules/cargo/gondolapod.dm @@ -42,7 +42,7 @@ set name = "Release Contents" set category = "Gondola" set desc = "Release any contents stored within your vast belly." - linked_pod.open(src, forced = TRUE) + linked_pod.open(src, TRUE) /mob/living/simple_animal/pet/gondola/gondolapod/examine(mob/user) ..() @@ -61,16 +61,16 @@ else to_chat(src, "A closer look inside yourself reveals... nothing.") -/mob/living/simple_animal/pet/gondola/gondolapod/proc/setOpened() +/mob/living/simple_animal/pet/gondola/gondolapod/setOpened() opened = TRUE update_icon() - addtimer(CALLBACK(src, .proc/setClosed), 50) + addtimer(CALLBACK(src, /atom.proc/setClosed), 50) -/mob/living/simple_animal/pet/gondola/gondolapod/proc/setClosed() +/mob/living/simple_animal/pet/gondola/gondolapod/setClosed() opened = FALSE update_icon() /mob/living/simple_animal/pet/gondola/gondolapod/death() qdel(linked_pod) //Will cause the open() proc for the linked supplypod to be called with the "broken" parameter set to true, meaning that it will dump its contents on death qdel(src) - ..() \ No newline at end of file + ..() diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm index 394b86bb81..9c15e75cd6 100644 --- a/code/modules/cargo/packs/misc.dm +++ b/code/modules/cargo/packs/misc.dm @@ -351,6 +351,10 @@ name = "Black Carpet Single-Pack" contains = list(/obj/item/stack/tile/carpet/black/fifty) +/datum/supply_pack/misc/carpet/arcade + name = "Arcade Carpet Single-Pack" + contains = list(/obj/item/stack/tile/carpet/arcade/fifty) + /datum/supply_pack/misc/carpet/premium name = "Monochrome Carpet Single-Pack" desc = "Exotic carpets for all your decorating needs. This 30 units stack of extra soft carpet will tie any room together." diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm index aaa1afb004..2a233b9116 100644 --- a/code/modules/cargo/supplypod.dm +++ b/code/modules/cargo/supplypod.dm @@ -1,21 +1,25 @@ -//The "BDPtarget" temp visual is created by anything that "launches" a supplypod. It makes two things: a falling droppod animation, and the droppod itself. +//The "pod_landingzone" temp visual is created by anything that "launches" a supplypod. This is what animates the pod and makes the pod forcemove to the station. //------------------------------------SUPPLY POD-------------------------------------// /obj/structure/closet/supplypod name = "supply pod" //Names and descriptions are normally created with the setStyle() proc during initialization, but we have these default values here as a failsafe desc = "A Nanotrasen supply drop pod." icon = 'icons/obj/supplypods.dmi' - icon_state = "supplypod" - pixel_x = -16 //2x2 sprite - pixel_y = -5 - layer = TABLE_LAYER //So that the crate inside doesn't appear underneath + icon_state = "pod" //This is a common base sprite shared by a number of pods + pixel_x = SUPPLYPOD_X_OFFSET //2x2 sprite + layer = BELOW_OBJ_LAYER //So that the crate inside doesn't appear underneath allow_objects = TRUE allow_dense = TRUE delivery_icon = null can_weld_shut = FALSE - armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 80) + armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 100, BIO = 0, RAD = 0, FIRE = 100, ACID = 80) anchored = TRUE //So it cant slide around after landing anchorable = FALSE flags_1 = PREVENT_CONTENTS_EXPLOSION_1 + appearance_flags = KEEP_TOGETHER | PIXEL_SCALE + density = FALSE + ///List of bitflags for supply pods, see: code\__DEFINES\obj_flags.dm + var/pod_flags = NONE + //*****NOTE*****: Many of these comments are similarly described in centcom_podlauncher.dm. If you change them here, please consider doing so in the centcom podlauncher code as well! var/adminNamed = FALSE //Determines whether or not the pod has been named by an admin. If true, the pod's name will not get overridden when the style of the pod changes (changing the style of the pod normally also changes the name+desc) var/bluespace = FALSE //If true, the pod deletes (in a shower of sparks) after landing @@ -27,12 +31,13 @@ var/effectLimb = FALSE //If true, pops off a limb (if applicable) from anyone caught under the pod when it lands var/effectOrgans = FALSE //If true, yeets out every limb and organ from anyone caught under the pod when it lands var/effectGib = FALSE //If true, anyone under the pod will be gibbed when it lands - var/effectStealth = FALSE //If true, a target icon isnt displayed on the turf where the pod will land + var/effectStealth = FALSE //If true, a target icon isn't displayed on the turf where the pod will land var/effectQuiet = FALSE //The female sniper. If true, the pod makes no noise (including related explosions, opening sounds, etc) var/effectMissile = FALSE //If true, the pod deletes the second it lands. If you give it an explosion, it will act like a missile exploding as it hits the ground var/effectCircle = FALSE //If true, allows the pod to come in at any angle. Bit of a weird feature but whatever its here - var/style = STYLE_STANDARD //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the POD_STYLES list in cargo.dm defines to get the proper icon/name/desc for the pod. + var/style = STYLE_STANDARD //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the GLOB.podstyles list in cargo.dm defines to get the proper icon/name/desc for the pod. var/reversing = FALSE //If true, the pod will not send any items. Instead, after opening, it will close again (picking up items/mobs) and fly back to centcom + var/list/reverse_dropoff_coords //Turf that the reverse pod will drop off it's newly-acquired cargo to var/fallDuration = 4 var/fallingSoundLength = 11 var/fallingSound = 'sound/weapons/mortar_long_whistle.ogg'//Admin sound to play before the pod lands @@ -40,10 +45,20 @@ var/openingSound //Admin sound to play when the pod opens var/leavingSound //Admin sound to play when the pod leaves var/soundVolume = 80 //Volume to play sounds at. Ignores the cap - var/bay //Used specifically for the centcom_podlauncher datum. Holds the current bay the user is launching objects from. Bays are specific rooms on the centcom map. var/list/explosionSize = list(0,0,2,3) var/stay_after_drop = FALSE - var/specialised = TRUE // It's not a general use pod for cargo/admin use + var/specialised = FALSE // It's not a general use pod for cargo/admin use + var/rubble_type //Rubble effect associated with this supplypod + var/decal = "default" //What kind of extra decals we add to the pod to make it look nice + var/door = "pod_door" + var/fin_mask = "topfin" + var/obj/effect/supplypod_rubble/rubble + var/obj/effect/engineglow/glow_effect + var/effectShrapnel = FALSE + var/shrapnel_type = /obj/item/projectile/bullet/shrapnel + var/shrapnel_magnitude = 3 + var/list/reverseOptionList = list("Mobs"=FALSE,"Objects"=FALSE,"Anchored"=FALSE,"Underfloor"=FALSE,"Wallmounted"=FALSE,"Floors"=FALSE,"Walls"=FALSE) + var/list/turfs_in_cargo = list() /obj/structure/closet/supplypod/bluespacepod style = STYLE_BLUESPACE @@ -53,12 +68,12 @@ /obj/structure/closet/supplypod/extractionpod name = "Syndicate Extraction Pod" - desc = "A specalised, blood-red styled pod for extracting high-value targets out of active mission areas." + desc = "A specalised, blood-red styled pod for extracting high-value targets out of active mission areas. Targets must be manually stuffed inside the pod for proper delivery." specialised = TRUE style = STYLE_SYNDICATE bluespace = TRUE explosionSize = list(0,0,1,2) - landingDelay = 25 //Slightly longer than others + landingDelay = 25 //Longer than others /obj/structure/closet/supplypod/centcompod style = STYLE_CENTCOM @@ -67,36 +82,102 @@ landingDelay = 20 //Very speedy! resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF -/obj/structure/closet/supplypod/proc/specialisedPod() - return 1 - -/obj/structure/closet/supplypod/extractionpod/specialisedPod(atom/movable/holder) - holder.forceMove(pick(GLOB.holdingfacility)) // land in ninja jail - open(holder, forced = TRUE) - -/obj/structure/closet/supplypod/Initialize() +/obj/structure/closet/supplypod/Initialize(var/customStyle = FALSE) . = ..() - setStyle(style, TRUE) //Upon initialization, give the supplypod an iconstate, name, and description based on the "style" variable. This system is important for the centcom_podlauncher to function correctly + if (!loc) + var/shippingLane = GLOB.areas_by_type[/area/centcom/supplypod/supplypod_temp_holding] //temporary holder for supplypods mid-transit + forceMove(shippingLane) + if (customStyle) + style = customStyle + setStyle(style) //Upon initialization, give the supplypod an iconstate, name, and description based on the "style" variable. This system is important for the centcom_podlauncher to function correctly + +/obj/structure/closet/supplypod/extractionpod/Initialize() + . = ..() + var/turf/picked_turf = pick(GLOB.holdingfacility) + reverse_dropoff_coords = list(picked_turf.x, picked_turf.y, picked_turf.z) + +/obj/structure/closet/supplypod/proc/setStyle(chosenStyle) //Used to give the sprite an icon state, name, and description. + style = chosenStyle + var/base = GLOB.podstyles[chosenStyle][POD_BASE] //GLOB.podstyles is a 2D array we treat as a dictionary. The style represents the verticle index, with the icon state, name, and desc being stored in the horizontal indexes of the 2D array. + icon_state = base + decal = GLOB.podstyles[chosenStyle][POD_DECAL] + rubble_type = GLOB.podstyles[chosenStyle][POD_RUBBLE_TYPE] + if (!adminNamed && !specialised) //We dont want to name it ourselves if it has been specifically named by an admin using the centcom_podlauncher datum + name = GLOB.podstyles[chosenStyle][POD_NAME] + desc = GLOB.podstyles[chosenStyle][POD_DESC] + if (GLOB.podstyles[chosenStyle][POD_DOOR]) + door = "[base]_door" + else + door = FALSE + update_icon() + +/obj/structure/closet/supplypod/proc/SetReverseIcon() + fin_mask = "bottomfin" + if (GLOB.podstyles[style][POD_SHAPE] == POD_SHAPE_NORML) + icon_state = GLOB.podstyles[style][POD_BASE] + "_reverse" + pixel_x = initial(pixel_x) + transform = matrix() + update_icon() + +/obj/structure/closet/supplypod/proc/backToNonReverseIcon() + fin_mask = initial(fin_mask) + if (GLOB.podstyles[style][POD_SHAPE] == POD_SHAPE_NORML) + icon_state = GLOB.podstyles[style][POD_BASE] + pixel_x = initial(pixel_x) + transform = matrix() + update_icon() /obj/structure/closet/supplypod/closet_update_overlays(list/new_overlays) - . = new_overlays - if (style == STYLE_SEETHROUGH || style == STYLE_INVISIBLE) //If we're invisible, we dont bother adding any overlays - return - if (opened) - . += "[icon_state]_open" - else - . += "[icon_state]_door" + return -/obj/structure/closet/supplypod/proc/setStyle(chosenStyle, var/duringInit = FALSE) //Used to give the sprite an icon state, name, and description - if (!duringInit && style == chosenStyle) //Check if the input style is already the same as the pod's style. This happens in centcom_podlauncher, and as such we set the style to STYLE_CENTCOM. - setStyle(STYLE_CENTCOM) //We make sure to not check this during initialize() so the standard supplypod works correctly. +/obj/structure/closet/supplypod/update_overlays() + . = ..() + if (style == STYLE_INVISIBLE) return - style = chosenStyle - icon_state = POD_STYLES[chosenStyle][POD_ICON_STATE] //POD_STYLES is a 2D array we treat as a dictionary. The style represents the verticle index, with the icon state, name, and desc being stored in the horizontal indexes of the 2D array. - if (!adminNamed && !specialised) //We dont want to name it ourselves if it has been specifically named by an admin using the centcom_podlauncher datum - name = POD_STYLES[chosenStyle][POD_NAME] - desc = POD_STYLES[chosenStyle][POD_DESC] - update_icon() + if (rubble) + . += rubble.getForeground(src) + if (style == STYLE_SEETHROUGH) + for (var/atom/A in contents) + var/mutable_appearance/itemIcon = new(A) + itemIcon.transform = matrix().Translate(-1 * SUPPLYPOD_X_OFFSET, 0) + . += itemIcon + for (var/t in turfs_in_cargo)//T is just a turf's type + var/turf/turf_type = t + var/mutable_appearance/itemIcon = mutable_appearance(initial(turf_type.icon), initial(turf_type.icon_state)) + itemIcon.transform = matrix().Translate(-1 * SUPPLYPOD_X_OFFSET, 0) + . += itemIcon + return + + if (opened) //We're opened means all we have to worry about is masking a decal if we have one + if (!decal) //We don't have a decal to mask + return + if (!door) //We have a decal but no door, so let's just add the decal + . += decal + return + var/icon/masked_decal = new(icon, decal) //The decal we want to apply + var/icon/door_masker = new(icon, door) //The door shape we want to 'cut out' of the decal + door_masker.MapColors(0,0,0,1, 0,0,0,1, 0,0,0,1, 1,1,1,0, 0,0,0,1) + door_masker.SwapColor("#ffffffff", null) + door_masker.Blend("#000000", ICON_SUBTRACT) + masked_decal.Blend(door_masker, ICON_ADD) + . += masked_decal + else //If we're closed + if (!door) //We have no door, lets see if we have a decal. If not, theres nothing we need to do + if (decal) + . += decal + return + else if (GLOB.podstyles[style][POD_SHAPE] != POD_SHAPE_NORML) //If we're not a normal pod shape (aka, if we don't have fins), just add the door without masking + . += door + else + var/icon/masked_door = new(icon, door) //The door we want to apply + var/icon/fin_masker = new(icon, "mask_[fin_mask]") //The fin shape we want to 'cut out' of the door + fin_masker.MapColors(0,0,0,1, 0,0,0,1, 0,0,0,1, 1,1,1,0, 0,0,0,1) + fin_masker.SwapColor("#ffffffff", null) + fin_masker.Blend("#000000", ICON_SUBTRACT) + masked_door.Blend(fin_masker, ICON_ADD) + . += masked_door + if (decal) + . += decal /obj/structure/closet/supplypod/tool_interact(obj/item/W, mob/user) if(bluespace) //We dont want to worry about interacting with bluespace pods, as they are due to delete themselves soon anyways. @@ -110,187 +191,380 @@ /obj/structure/closet/supplypod/contents_explosion() //Supplypods also protect their contents from the harmful effects of fucking exploding. return -/obj/structure/closet/supplypod/toggle(mob/living/user) //Supplypods shouldn't be able to be manually opened under any circumstances, as the open() proc generates supply order datums +/obj/structure/closet/supplypod/toggle(mob/living/user) return -/obj/structure/closet/supplypod/proc/handleReturningClose(atom/movable/holder, returntobay) - opened = FALSE - INVOKE_ASYNC(holder, .proc/setClosed) //Use the INVOKE_ASYNC proc to call setClosed() on whatever the holder may be, without giving the atom/movable base class a setClosed() proc definition - for(var/atom/movable/O in get_turf(holder)) - if ((ismob(O) && !isliving(O)) || (is_type_in_typecache(O, GLOB.blacklisted_cargo_types) && !isliving(O))) //We dont want to take ghosts with us, and we don't want blacklisted items going, but we allow mobs. - continue - O.forceMove(holder) //Put objects inside before we close - var/obj/effect/temp_visual/risingPod = new /obj/effect/abstract/DPfall(get_turf(holder), src) //Make a nice animation of flying back up - risingPod.pixel_z = 0 //The initial value of risingPod's pixel_z is 200 because it normally comes down from a high spot - animate(risingPod, pixel_z = 200, time = 10, easing = LINEAR_EASING) //Animate our rising pod - if(returntobay) - holder.forceMove(bay) //Move the pod back to centcom, where it belongs - QDEL_IN(risingPod, 10) - reversing = FALSE //Now that we're done reversing, we set this to false (otherwise we would get stuck in an infinite loop of calling the close proc at the bottom of open() ) - bluespace = TRUE //Make it so that the pod doesn't stay in centcom forever - open(holder, forced = TRUE) - else - reversing = FALSE //Now that we're done reversing, we set this to false (otherwise we would get stuck in an infinite loop of calling the close proc at the bottom of open() ) - bluespace = TRUE //Make it so that the pod doesn't stay in centcom forever - QDEL_IN(risingPod, 10) - audible_message("The pod hisses, closing quickly and launching itself away from the station.", "The ground vibrates, the nearby pod launching away from the station.") - stay_after_drop = FALSE - specialisedPod(holder) // Do special actions for specialised pods - this is likely if we were already doing manual launches +/obj/structure/closet/supplypod/open(mob/living/user, force = TRUE) + return -/obj/structure/closet/supplypod/proc/preOpen() //Called before the open() proc. Handles anything that occurs right as the pod lands. - var/turf/T = get_turf(src) +/obj/structure/closet/supplypod/proc/handleReturnAfterDeparting(atom/movable/holder = src) + reversing = FALSE //Now that we're done reversing, we set this to false (otherwise we would get stuck in an infinite loop of calling the close proc at the bottom of open_pod() ) + bluespace = TRUE //Make it so that the pod doesn't stay in centcom forever + pod_flags &= ~FIRST_SOUNDS //Make it so we play sounds now + if (!effectQuiet && style != STYLE_SEETHROUGH) + audible_message("The pod hisses, closing and launching itself away from the station.", "The ground vibrates, and you hear the sound of engines firing.") + stay_after_drop = FALSE + holder.pixel_z = initial(holder.pixel_z) + holder.alpha = initial(holder.alpha) + var/shippingLane = GLOB.areas_by_type[/area/centcom/supplypod/supplypod_temp_holding] + forceMove(shippingLane) //Move to the centcom-z-level until the pod_landingzone says we can drop back down again + if (!reverse_dropoff_coords) //If we're centcom-launched, the reverse dropoff turf will be a centcom loading bay. If we're an extraction pod, it should be the ninja jail. Thus, this shouldn't ever really happen. + var/obj/error_landmark = locate(/obj/effect/landmark/error) in GLOB.landmarks_list + var/turf/error_landmark_turf = get_turf(error_landmark) + reverse_dropoff_coords = list(error_landmark_turf.x, error_landmark_turf.y, error_landmark_turf.z) + landingDelay = initial(landingDelay) //Reset the landing timers so we land on whatever turf we're aiming at normally. Will be changed to be editable later (tm) + fallDuration = initial(fallDuration) //This is so if someone adds a really long dramatic landing time they don't have to sit through it twice on the pod's return trip + openingDelay = initial(openingDelay) + backToNonReverseIcon() + var/turf/return_turf = locate(reverse_dropoff_coords[1], reverse_dropoff_coords[2], reverse_dropoff_coords[3]) + new /obj/effect/pod_landingzone(return_turf, src) + +/obj/structure/closet/supplypod/proc/preOpen() //Called before the open_pod() proc. Handles anything that occurs right as the pod lands. + var/turf/turf_underneath = get_turf(src) var/list/B = explosionSize //Mostly because B is more readable than explosionSize :p - if (landingSound) - playsound(get_turf(src), landingSound, soundVolume, 0, 0) - for (var/mob/living/M in T) - if (effectLimb && iscarbon(M)) //If effectLimb is true (which means we pop limbs off when we hit people): - var/mob/living/carbon/CM = M - for (var/obj/item/bodypart/bodypart in CM.bodyparts) //Look at the bodyparts in our poor mob beneath our pod as it lands - if(bodypart.body_part != HEAD && bodypart.body_part != CHEST)//we dont want to kill him, just teach em a lesson! - if (bodypart.dismemberable) - bodypart.dismember() //Using the power of flextape i've sawed this man's limb in half! - break - if (effectOrgans && iscarbon(M)) //effectOrgans means remove every organ in our mob - var/mob/living/carbon/CM = M - for(var/X in CM.internal_organs) - var/destination = get_edge_target_turf(T, pick(GLOB.alldirs)) //Pick a random direction to toss them in - var/obj/item/organ/O = X - O.Remove() //Note that this isn't the same proc as for lists - O.forceMove(T) //Move the organ outta the body - O.throw_at(destination, 2, 3) //Thow the organ at a random tile 3 spots away - sleep(1) - for (var/obj/item/bodypart/bodypart in CM.bodyparts) //Look at the bodyparts in our poor mob beneath our pod as it lands - var/destination = get_edge_target_turf(T, pick(GLOB.alldirs)) - if (bodypart.dismemberable) - bodypart.dismember() //Using the power of flextape i've sawed this man's bodypart in half! - bodypart.throw_at(destination, 2, 3) + density = TRUE //Density is originally false so the pod doesn't block anything while it's still falling through the air + AddComponent(/datum/component/pellet_cloud, projectile_type=shrapnel_type, magnitude=shrapnel_magnitude) + if(effectShrapnel) + SEND_SIGNAL(src, COMSIG_SUPPLYPOD_LANDED) + for (var/mob/living/target_living in turf_underneath) + if (iscarbon(target_living)) //If effectLimb is true (which means we pop limbs off when we hit people): + if (effectLimb) + var/mob/living/carbon/carbon_target_mob = target_living + for (var/bp in carbon_target_mob.bodyparts) //Look at the bodyparts in our poor mob beneath our pod as it lands + var/obj/item/bodypart/bodypart = bp + if(bodypart.body_part != HEAD && bodypart.body_part != CHEST)//we dont want to kill him, just teach em a lesson! + if (bodypart.dismemberable) + bodypart.dismember() //Using the power of flextape i've sawed this man's limb in half! + break + if (effectOrgans) //effectOrgans means remove every organ in our mob + var/mob/living/carbon/carbon_target_mob = target_living + for(var/organ in carbon_target_mob.internal_organs) + var/destination = get_edge_target_turf(turf_underneath, pick(GLOB.alldirs)) //Pick a random direction to toss them in + var/obj/item/organ/organ_to_yeet = organ + organ_to_yeet.Remove(carbon_target_mob) //Note that this isn't the same proc as for lists + organ_to_yeet.forceMove(turf_underneath) //Move the organ outta the body + organ_to_yeet.throw_at(destination, 2, 3) //Thow the organ at a random tile 3 spots away sleep(1) + for (var/bp in carbon_target_mob.bodyparts) //Look at the bodyparts in our poor mob beneath our pod as it lands + var/obj/item/bodypart/bodypart = bp + var/destination = get_edge_target_turf(turf_underneath, pick(GLOB.alldirs)) + if (bodypart.dismemberable) + bodypart.dismember() //Using the power of flextape i've sawed this man's bodypart in half! + bodypart.throw_at(destination, 2, 3) + sleep(1) if (effectGib) //effectGib is on, that means whatever's underneath us better be fucking oof'd on - M.adjustBruteLoss(5000) //THATS A LOT OF DAMAGE (called just in case gib() doesnt work on em) - M.gib() //After adjusting the fuck outta that brute loss we finish the job with some satisfying gibs + target_living.adjustBruteLoss(5000) //THATS A LOT OF DAMAGE (called just in case gib() doesnt work on em) + if (!QDELETED(target_living)) + target_living.gib() //After adjusting the fuck outta that brute loss we finish the job with some satisfying gibs else - M.adjustBruteLoss(damage) + target_living.adjustBruteLoss(damage) var/explosion_sum = B[1] + B[2] + B[3] + B[4] if (explosion_sum != 0) //If the explosion list isn't all zeroes, call an explosion - explosion(get_turf(src), B[1], B[2], B[3], flame_range = B[4], silent = effectQuiet, ignorecap = istype(src, /obj/structure/closet/supplypod/centcompod)) //less advanced equipment than bluespace pod, so larger explosion when landing - else if (!effectQuiet) //If our explosion list IS all zeroes, we still make a nice explosion sound (unless the effectQuiet var is true) - playsound(src, "explosion", landingSound ? 15 : 80, 1) + explosion(turf_underneath, B[1], B[2], B[3], flame_range = B[4], silent = effectQuiet, ignorecap = istype(src, /obj/structure/closet/supplypod/centcompod)) //less advanced equipment than bluespace pod, so larger explosion when landing + else if (!effectQuiet && !(pod_flags & FIRST_SOUNDS)) //If our explosion list IS all zeroes, we still make a nice explosion sound (unless the effectQuiet var is true) + playsound(src, "explosion", landingSound ? soundVolume * 0.25 : soundVolume, TRUE) + if (landingSound) + playsound(turf_underneath, landingSound, soundVolume, FALSE, FALSE) if (effectMissile) //If we are acting like a missile, then right after we land and finish fucking shit up w explosions, we should delete opened = TRUE //We set opened to TRUE to avoid spending time trying to open (due to being deleted) during the Destroy() proc qdel(src) + return if (style == STYLE_GONDOLA) //Checks if we are supposed to be a gondola pod. If so, create a gondolapod mob, and move this pod to nullspace. I'd like to give a shout out, to my man oranges - var/mob/living/simple_animal/pet/gondola/gondolapod/benis = new(get_turf(src), src) + var/mob/living/simple_animal/pet/gondola/gondolapod/benis = new(turf_underneath, src) benis.contents |= contents //Move the contents of this supplypod into the gondolapod mob. moveToNullspace() - addtimer(CALLBACK(src, .proc/open, benis), openingDelay) //After the openingDelay passes, we use the open proc from this supplyprod while referencing the contents of the "holder", in this case the gondolapod mob + addtimer(CALLBACK(src, .proc/open_pod, benis), openingDelay) //After the openingDelay passes, we use the open proc from this supplyprod while referencing the contents of the "holder", in this case the gondolapod mob + else if (style == STYLE_SEETHROUGH) + open_pod(src) else - addtimer(CALLBACK(src, .proc/open, src), openingDelay) //After the openingDelay passes, we use the open proc from this supplypod, while referencing this supplypod's contents + addtimer(CALLBACK(src, .proc/open_pod, src), openingDelay) //After the openingDelay passes, we use the open proc from this supplypod, while referencing this supplypod's contents -/obj/structure/closet/supplypod/open(atom/movable/holder, var/broken = FALSE, var/forced = FALSE) //The holder var represents an atom whose contents we will be working with - var/turf/T = get_turf(holder) //Get the turf of whoever's contents we're talking about +/obj/structure/closet/supplypod/proc/open_pod(atom/movable/holder, broken = FALSE, forced = FALSE) //The holder var represents an atom whose contents we will be working with if (!holder) return - if(opened) + if (opened) //This is to ensure we don't open something that has already been opened return - opened = TRUE //This is to ensure we don't open something that has already been opened - var/mob/M + holder.setOpened() + var/turf/turf_underneath = get_turf(holder) //Get the turf of whoever's contents we're talking about if (istype(holder, /mob)) //Allows mobs to assume the role of the holder, meaning we look at the mob's contents rather than the supplypod's contents. Typically by this point the supplypod's contents have already been moved over to the mob's contents - M = holder - if (M.key && !forced && !broken) //If we are player controlled, then we shouldnt open unless the opening is manual, or if it is due to being destroyed (represented by the "broken" parameter) + var/mob/holder_as_mob = holder + if (holder_as_mob.key && !forced && !broken) //If we are player controlled, then we shouldn't open unless the opening is manual, or if it is due to being destroyed (represented by the "broken" parameter) return if (openingSound) - playsound(get_turf(holder), openingSound, soundVolume, 0, 0) //Special admin sound to play - INVOKE_ASYNC(holder, .proc/setOpened) //Use the INVOKE_ASYNC proc to call setOpened() on whatever the holder may be, without giving the atom/movable base class a setOpened() proc definition - if (style == STYLE_SEETHROUGH) - update_icon() - for (var/atom/movable/O in holder.contents) //Go through the contents of the holder - O.forceMove(T) //move everything from the contents of the holder to the turf of the holder - if (!effectQuiet && !openingSound && style != STYLE_SEETHROUGH) //If we aren't being quiet, play the default pod open sound - playsound(get_turf(holder), open_sound, 15, 1, -3) + playsound(get_turf(holder), openingSound, soundVolume, FALSE, FALSE) //Special admin sound to play + for (var/turf_type in turfs_in_cargo) + turf_underneath.PlaceOnTop(turf_type) + for (var/cargo in contents) + var/atom/movable/movable_cargo = cargo + movable_cargo.forceMove(turf_underneath) + if (!effectQuiet && !openingSound && style != STYLE_SEETHROUGH && !(pod_flags & FIRST_SOUNDS)) //If we aren't being quiet, play the default pod open sound + playsound(get_turf(holder), open_sound, 15, TRUE, -3) if (broken) //If the pod is opening because it's been destroyed, we end here return if (style == STYLE_SEETHROUGH) - depart(src) + startExitSequence(src) else + if (reversing) + addtimer(CALLBACK(src, .proc/SetReverseIcon), departureDelay/2) //Finish up the pod's duties after a certain amount of time if(!stay_after_drop) // Departing should be handled manually - addtimer(CALLBACK(src, .proc/depart, holder), departureDelay) //Finish up the pod's duties after a certain amount of time + addtimer(CALLBACK(src, .proc/startExitSequence, holder), departureDelay*(4/5)) //Finish up the pod's duties after a certain amount of time -/obj/structure/closet/supplypod/proc/depart(atom/movable/holder) +/obj/structure/closet/supplypod/proc/startExitSequence(atom/movable/holder) if (leavingSound) - playsound(get_turf(holder), leavingSound, soundVolume, 0, 0) + playsound(get_turf(holder), leavingSound, soundVolume, FALSE, FALSE) if (reversing) //If we're reversing, we call the close proc. This sends the pod back up to centcom close(holder) else if (bluespace) //If we're a bluespace pod, then delete ourselves (along with our holder, if a seperate holder exists) + deleteRubble() if (!effectQuiet && style != STYLE_INVISIBLE && style != STYLE_SEETHROUGH) do_sparks(5, TRUE, holder) //Create some sparks right before closing qdel(src) //Delete ourselves and the holder if (holder != src) qdel(holder) -/obj/structure/closet/supplypod/centcompod/close(atom/movable/holder) //Closes the supplypod and sends it back to centcom. Should only ever be called if the "reversing" variable is true - handleReturningClose(holder, TRUE) +/obj/structure/closet/supplypod/close(atom/movable/holder) //Closes the supplypod and sends it back to centcom. Should only ever be called if the "reversing" variable is true + if (!holder) + return + take_contents(holder) + playsound(holder, close_sound, soundVolume*0.75, TRUE, -3) + holder.setClosed() + addtimer(CALLBACK(src, .proc/preReturn, holder), departureDelay * 0.2) //Start to leave a bit after closing for cinematic effect -/obj/structure/closet/supplypod/extractionpod/close(atom/movable/holder) //handles closing, and returns pod - deletes itself when returned - . = ..() - return +/obj/structure/closet/supplypod/take_contents(atom/movable/holder) + var/turf/turf_underneath = holder.drop_location() + for(var/atom_to_check in turf_underneath) + if(atom_to_check != src && !insert(atom_to_check, holder)) // Can't insert that + continue + insert(turf_underneath, holder) -/obj/structure/closet/supplypod/extractionpod/proc/send_up(atom/movable/holder) - if(!holder) - holder = src - if(leavingSound) - playsound(get_turf(holder), leavingSound, soundVolume, 0, 0) - handleReturningClose(holder, FALSE) +/obj/structure/closet/supplypod/insert(atom/to_insert, atom/movable/holder) + if(insertion_allowed(to_insert)) + if(isturf(to_insert)) + var/turf/turf_to_insert = to_insert + turfs_in_cargo += turf_to_insert.type + turf_to_insert.ScrapeAway() + else + var/atom/movable/movable_to_insert = to_insert + movable_to_insert.forceMove(holder) + return TRUE + else + return FALSE -/obj/structure/closet/supplypod/proc/setOpened() //Proc exists here, as well as in any atom that can assume the role of a "holder" of a supplypod. Check the open() proc for more details +/obj/structure/closet/supplypod/insertion_allowed(atom/to_insert) + if(to_insert.invisibility == INVISIBILITY_ABSTRACT) + return FALSE + if(ismob(to_insert)) + if(!reverseOptionList["Mobs"]) + return FALSE + if(!isliving(to_insert)) //let's not put ghosts or camera mobs inside + return FALSE + var/mob/living/mob_to_insert = to_insert + if(mob_to_insert.anchored || mob_to_insert.incorporeal_move) + return FALSE + mob_to_insert.stop_pulling() + + else if(isobj(to_insert)) + var/obj/obj_to_insert = to_insert + if(istype(obj_to_insert, /obj/structure/closet/supplypod)) + return FALSE + if(istype(obj_to_insert, /obj/effect/supplypod_smoke)) + return FALSE + if(istype(obj_to_insert, /obj/effect/pod_landingzone)) + return FALSE + if(istype(obj_to_insert, /obj/effect/supplypod_rubble)) + return FALSE + if(obj_to_insert.level == 1) + return FALSE // underfloor, until we get hide components. +/* + if((obj_to_insert.comp_lookup && obj_to_insert.comp_lookup[COMSIG_OBJ_HIDE]) && reverseOptionList["Underfloor"]) + return TRUE + else if ((obj_to_insert.comp_lookup && obj_to_insert.comp_lookup[COMSIG_OBJ_HIDE]) && !reverseOptionList["Underfloor"]) + return FALSE +*/ + if(isProbablyWallMounted(obj_to_insert) && reverseOptionList["Wallmounted"]) + return TRUE + else if (isProbablyWallMounted(obj_to_insert) && !reverseOptionList["Wallmounted"]) + return FALSE + if(!obj_to_insert.anchored && reverseOptionList["Unanchored"]) + return TRUE + if(obj_to_insert.anchored && reverseOptionList["Anchored"]) + return TRUE + return FALSE + + else if (isturf(to_insert)) + if(isfloorturf(to_insert) && reverseOptionList["Floors"]) + return TRUE + if(isfloorturf(to_insert) && !reverseOptionList["Floors"]) + return FALSE + if(isclosedturf(to_insert) && reverseOptionList["Walls"]) + return TRUE + if(isclosedturf(to_insert) && !reverseOptionList["Walls"]) + return FALSE + return FALSE + return TRUE + +/obj/structure/closet/supplypod/proc/preReturn(atom/movable/holder) + deleteRubble() + animate(holder, alpha = 0, time = 8, easing = QUAD_EASING|EASE_IN, flags = ANIMATION_PARALLEL) + animate(holder, pixel_z = 400, time = 10, easing = QUAD_EASING|EASE_IN, flags = ANIMATION_PARALLEL) //Animate our rising pod + addtimer(CALLBACK(src, .proc/handleReturnAfterDeparting, holder), 15) //Finish up the pod's duties after a certain amount of time + +/obj/structure/closet/supplypod/setOpened() //Proc exists here, as well as in any atom that can assume the role of a "holder" of a supplypod. Check the open_pod() proc for more details + opened = TRUE + density = FALSE update_icon() -/obj/structure/closet/supplypod/proc/setClosed() //Ditto +/obj/structure/closet/supplypod/extractionpod/setOpened() + opened = TRUE + density = TRUE update_icon() +/obj/structure/closet/supplypod/setClosed() //Ditto + opened = FALSE + density = TRUE + update_icon() + +/obj/structure/closet/supplypod/proc/tryMakeRubble(turf/T) //Ditto + if (rubble_type == RUBBLE_NONE) + return + if (rubble) + return + if (effectMissile) + return + if (isspaceturf(T) || isclosedturf(T)) + return + rubble = new /obj/effect/supplypod_rubble(T) + rubble.setStyle(rubble_type, src) + update_icon() + +/obj/structure/closet/supplypod/Moved() + deleteRubble() + return ..() + +/obj/structure/closet/supplypod/proc/deleteRubble() + rubble?.fadeAway() + rubble = null + update_icon() + +/obj/structure/closet/supplypod/proc/addGlow() + if (GLOB.podstyles[style][POD_SHAPE] != POD_SHAPE_NORML) + return + glow_effect = new(src) + glow_effect.icon_state = "pod_glow_" + GLOB.podstyles[style][POD_GLOW] + vis_contents += glow_effect + glow_effect.layer = GASFIRE_LAYER + +/obj/structure/closet/supplypod/proc/endGlow() + if(!glow_effect) + return + glow_effect.layer = LOW_ITEM_LAYER + glow_effect.fadeAway(openingDelay) + /obj/structure/closet/supplypod/Destroy() - open(src, broken = TRUE) //Lets dump our contents by opening up - . = ..() - -//------------------------------------FALLING SUPPLY POD-------------------------------------// -/obj/effect/abstract/DPfall //Falling pod - name = "" - icon = 'icons/obj/supplypods.dmi' - pixel_x = -16 - pixel_y = -5 - pixel_z = 200 - desc = "Get out of the way!" - layer = FLY_LAYER//that wasnt flying, that was falling with style! - icon_state = "" - -/obj/effect/abstract/DPfall/Initialize(dropLocation, obj/structure/closet/supplypod/pod) - if (pod.style == STYLE_SEETHROUGH) - pixel_x = -16 - pixel_y = 0 - for (var/atom/movable/O in pod.contents) - var/icon/I = getFlatIcon(O) //im so sorry - add_overlay(I) - else if (pod.style != STYLE_INVISIBLE) //Check to ensure the pod isn't invisible - icon_state = "[pod.icon_state]_falling" - name = pod.name - . = ..() + deleteRubble() + open_pod(src, broken = TRUE) //Lets dump our contents by opening up + return ..() //------------------------------------TEMPORARY_VISUAL-------------------------------------// -/obj/effect/abstract/DPtarget //This is the object that forceMoves the supplypod to it's location +/obj/effect/supplypod_smoke //Falling pod smoke + name = "" + icon = 'icons/obj/supplypods_32x32.dmi' + icon_state = "smoke" + desc = "" + layer = PROJECTILE_HIT_THRESHHOLD_LAYER + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + alpha = 0 + +/obj/effect/engineglow //Falling pod smoke + name = "" + icon = 'icons/obj/supplypods.dmi' + icon_state = "pod_engineglow" + desc = "" + layer = GASFIRE_LAYER + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + alpha = 255 + +/obj/effect/engineglow/proc/fadeAway(leaveTime) + var/duration = min(leaveTime, 25) + animate(src, alpha=0, time = duration) + QDEL_IN(src, duration + 5) + +/obj/effect/supplypod_smoke/proc/drawSelf(amount) + alpha = max(0, 255-(amount*20)) + +/obj/effect/supplypod_rubble //This is the object that forceMoves the supplypod to it's location + name = "Debris" + desc = "A small crater of rubble. Closer inspection reveals the debris to be made primarily of space-grade metal fragments. You're pretty sure that this will disperse before too long." + icon = 'icons/obj/supplypods.dmi' + layer = PROJECTILE_HIT_THRESHHOLD_LAYER // We want this to go right below the layer of supplypods and supplypod_rubble's forground. + icon_state = "rubble_bg" + anchored = TRUE + pixel_x = SUPPLYPOD_X_OFFSET + var/foreground = "rubble_fg" + var/verticle_offset = 0 + +/obj/effect/supplypod_rubble/proc/getForeground(obj/structure/closet/supplypod/pod) + var/mutable_appearance/rubble_overlay = mutable_appearance('icons/obj/supplypods.dmi', foreground) + rubble_overlay.appearance_flags = KEEP_APART|RESET_TRANSFORM + rubble_overlay.transform = matrix().Translate(SUPPLYPOD_X_OFFSET - pod.pixel_x, verticle_offset) + return rubble_overlay + +/obj/effect/supplypod_rubble/proc/fadeAway() + animate(src, alpha=0, time = 30) + QDEL_IN(src, 35) + +/obj/effect/supplypod_rubble/proc/setStyle(type, obj/structure/closet/supplypod/pod) + if (type == RUBBLE_WIDE) + icon_state += "_wide" + foreground += "_wide" + if (type == RUBBLE_THIN) + icon_state += "_thin" + foreground += "_thin" + if (pod.style == STYLE_BOX) + verticle_offset = -2 + else + verticle_offset = initial(verticle_offset) + + pixel_y = verticle_offset + +/obj/effect/pod_landingzone_effect + name = "" + desc = "" + icon = 'icons/obj/supplypods_32x32.dmi' + icon_state = "LZ_Slider" + layer = PROJECTILE_HIT_THRESHHOLD_LAYER + +/obj/effect/pod_landingzone_effect/Initialize(mapload, obj/structure/closet/supplypod/pod) + transform = matrix() * 1.5 + animate(src, transform = matrix()*0.01, time = pod.landingDelay+pod.fallDuration) + ..() + +/obj/effect/pod_landingzone //This is the object that forceMoves the supplypod to it's location name = "Landing Zone Indicator" desc = "A holographic projection designating the landing zone of something. It's probably best to stand back." - icon = 'icons/mob/actions/actions_items.dmi' - icon_state = "sniper_zoom" + icon = 'icons/obj/supplypods_32x32.dmi' + icon_state = "LZ" layer = PROJECTILE_HIT_THRESHHOLD_LAYER light_range = 2 - var/obj/effect/temp_visual/fallingPod //Temporary "falling pod" that we animate - var/obj/structure/closet/supplypod/pod //The supplyPod that will be landing ontop of this target + anchored = TRUE + alpha = 0 + var/obj/structure/closet/supplypod/pod //The supplyPod that will be landing ontop of this pod_landingzone + var/obj/effect/pod_landingzone_effect/helper + var/list/smoke_effects = new /list(13) -/obj/effect/abstract/DPtarget/Initialize(mapload, podParam, single_order = null) +/obj/effect/ex_act() + return + +/obj/effect/pod_landingzone/Initialize(mapload, podParam, single_order = null, clientman) . = ..() if (ispath(podParam)) //We can pass either a path for a pod (as expressconsoles do), or a reference to an instantiated pod (as the centcom_podlauncher does) podParam = new podParam() //If its just a path, instantiate it pod = podParam + if (!pod.effectStealth) + helper = new (drop_location(), pod) + alpha = 255 + animate(src, transform = matrix().Turn(90), time = pod.landingDelay+pod.fallDuration) if (single_order) if (istype(single_order, /datum/supply_order)) var/datum/supply_order/SO = single_order @@ -298,49 +572,76 @@ else if (istype(single_order, /atom/movable)) var/atom/movable/O = single_order O.forceMove(pod) - for (var/mob/living/M in pod) //If there are any mobs in the supplypod, we want to forceMove them into the target. This is so that they can see where they are about to land, AND so that they don't get sent to the nullspace error room (as the pod is currently in nullspace) - M.forceMove(src) - if(pod.effectStun) //If effectStun is true, stun any mobs caught on this target until the pod gets a chance to hit them - for (var/mob/living/M in get_turf(src)) - M.Stun(pod.landingDelay+10, ignore_canstun = TRUE)//you aint goin nowhere, kid. - if (pod.effectStealth) //If effectStealth is true we want to be invisible - icon_state = "" + for (var/mob/living/mob_in_pod in pod) //If there are any mobs in the supplypod, we want to set their view to the pod_landingzone. This is so that they can see where they are about to land + mob_in_pod.reset_perspective(src) + if(pod.effectStun) //If effectStun is true, stun any mobs caught on this pod_landingzone until the pod gets a chance to hit them + for (var/mob/living/target_living in get_turf(src)) + target_living.Stun(pod.landingDelay+10, ignore_canstun = TRUE)//you ain't goin nowhere, kid. if (pod.fallDuration == initial(pod.fallDuration) && pod.landingDelay + pod.fallDuration < pod.fallingSoundLength) pod.fallingSoundLength = 3 //The default falling sound is a little long, so if the landing time is shorter than the default falling sound, use a special, shorter default falling sound pod.fallingSound = 'sound/weapons/mortar_whistle.ogg' var/soundStartTime = pod.landingDelay - pod.fallingSoundLength + pod.fallDuration if (soundStartTime < 0) soundStartTime = 1 - if (!pod.effectQuiet) + if (!pod.effectQuiet && !(pod.pod_flags & FIRST_SOUNDS)) addtimer(CALLBACK(src, .proc/playFallingSound), soundStartTime) addtimer(CALLBACK(src, .proc/beginLaunch, pod.effectCircle), pod.landingDelay) -/obj/effect/abstract/DPtarget/proc/playFallingSound() - playsound(src, pod.fallingSound, pod.soundVolume, 1, 6) +/obj/effect/pod_landingzone/proc/playFallingSound() + playsound(src, pod.fallingSound, pod.soundVolume, TRUE, 6) -/obj/effect/abstract/DPtarget/proc/beginLaunch(effectCircle) //Begin the animation for the pod falling. The effectCircle param determines whether the pod gets to come in from any descent angle - fallingPod = new /obj/effect/abstract/DPfall(drop_location(), pod) - var/matrix/M = matrix(fallingPod.transform) //Create a new matrix that we can rotate +/obj/effect/pod_landingzone/proc/beginLaunch(effectCircle) //Begin the animation for the pod falling. The effectCircle param determines whether the pod gets to come in from any descent angle + pod.addGlow() + pod.update_icon() + if (pod.style != STYLE_INVISIBLE) + pod.add_filter("motionblur",1,list("type"="motion_blur", "x"=0, "y"=3)) + pod.forceMove(drop_location()) + for (var/mob/living/M in pod) //Remember earlier (initialization) when we moved mobs into the pod_landingzone so they wouldnt get lost in nullspace? Time to get them out + M.reset_perspective(null) var/angle = effectCircle ? rand(0,360) : rand(70,110) //The angle that we can come in from - fallingPod.pixel_x = cos(angle)*400 //Use some ADVANCED MATHEMATICS to set the animated pod's position to somewhere on the edge of a circle with the center being the target - fallingPod.pixel_z = sin(angle)*400 - var/rotation = Get_Pixel_Angle(fallingPod.pixel_z, fallingPod.pixel_x) //CUSTOM HOMEBREWED proc that is just arctan with extra steps - M.Turn(rotation) //Turn our matrix accordingly - fallingPod.transform = M //Transform the animated pod according to the matrix - M = matrix(pod.transform) //Make another matrix based on the pod - M.Turn(rotation) //Turn the matrix - pod.transform = M //Turn the actual pod (Won't be visible until endLaunch() proc tho) - animate(fallingPod, pixel_z = 0, pixel_x = -16, time = pod.fallDuration, , easing = LINEAR_EASING) //Make the pod fall! At an angle! + pod.pixel_x = cos(angle)*32*length(smoke_effects) //Use some ADVANCED MATHEMATICS to set the animated pod's position to somewhere on the edge of a circle with the center being the pod_landingzone + pod.pixel_z = sin(angle)*32*length(smoke_effects) + var/rotation = Get_Pixel_Angle(pod.pixel_z, pod.pixel_x) //CUSTOM HOMEBREWED proc that is just arctan with extra steps + setupSmoke(rotation) + pod.transform = matrix().Turn(rotation) + pod.layer = FLY_LAYER + if (pod.style != STYLE_INVISIBLE) + animate(pod.get_filter("motionblur"), y = 0, time = pod.fallDuration, flags = ANIMATION_PARALLEL) + animate(pod, pixel_z = -1 * abs(sin(rotation))*4, pixel_x = SUPPLYPOD_X_OFFSET + (sin(rotation) * 20), time = pod.fallDuration, easing = LINEAR_EASING, flags = ANIMATION_PARALLEL) //Make the pod fall! At an angle! addtimer(CALLBACK(src, .proc/endLaunch), pod.fallDuration, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation -/obj/effect/abstract/DPtarget/proc/endLaunch() - pod.update_icon() - pod.forceMove(drop_location()) //The fallingPod animation is over, now's a good time to forceMove the actual pod into position - QDEL_NULL(fallingPod) //Delete the falling pod effect, because at this point its animation is over. We dont use temp_visual because we want to manually delete it as soon as the pod appears - for (var/mob/living/M in src) //Remember earlier (initialization) when we moved mobs into the DPTarget so they wouldnt get lost in nullspace? Time to get them out - M.forceMove(pod) +/obj/effect/pod_landingzone/proc/setupSmoke(rotation) + if (pod.style == STYLE_INVISIBLE || pod.style == STYLE_SEETHROUGH) + return + for ( var/i in 1 to length(smoke_effects)) + var/obj/effect/supplypod_smoke/smoke_part = new (drop_location()) + if (i == 1) + smoke_part.layer = FLY_LAYER + smoke_part.icon_state = "smoke_start" + smoke_part.transform = matrix().Turn(rotation) + smoke_effects[i] = smoke_part + smoke_part.pixel_x = sin(rotation)*32 * i + smoke_part.pixel_y = abs(cos(rotation))*32 * i + smoke_part.filters += filter(type = "blur", size = 4) + var/time = (pod.fallDuration / length(smoke_effects))*(length(smoke_effects)-i) + addtimer(CALLBACK(smoke_part, /obj/effect/supplypod_smoke/.proc/drawSelf, i), time, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation + QDEL_IN(smoke_part, pod.fallDuration + 35) + +/obj/effect/pod_landingzone/proc/drawSmoke() + if (pod.style == STYLE_INVISIBLE || pod.style == STYLE_SEETHROUGH) + return + for (var/obj/effect/supplypod_smoke/smoke_part in smoke_effects) + animate(smoke_part, alpha = 0, time = 20, flags = ANIMATION_PARALLEL) + animate(smoke_part.filters[1], size = 6, time = 15, easing = CUBIC_EASING|EASE_OUT, flags = ANIMATION_PARALLEL) + +/obj/effect/pod_landingzone/proc/endLaunch() + pod.tryMakeRubble(drop_location()) + pod.layer = initial(pod.layer) + pod.endGlow() + QDEL_NULL(helper) pod.preOpen() //Begin supplypod open procedures. Here effects like explosions, damage, and other dangerous (and potentially admin-caused, if the centcom_podlauncher datum was used) memes will take place - qdel(src) //ditto + drawSmoke() + qdel(src) //The pod_landingzone's purpose is complete. It can rest easy now //------------------------------------UPGRADES-------------------------------------// /obj/item/disk/cargo/bluespace_pod //Disk that can be inserted into the Express Console to allow for Advanced Bluespace Pods @@ -348,5 +649,4 @@ desc = "This disk provides a firmware update to the Express Supply Console, granting the use of Nanotrasen's Bluespace Drop Pods to the supply department." icon = 'icons/obj/module.dmi' icon_state = "cargodisk" - item_state = "card-id" w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index 755665583a..53ab7f7abb 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -126,9 +126,8 @@ /// Messages currently seen by this client var/list/seen_messages - - /// datum wrapper for client view - var/datum/view_data/view_size + /// viewsize datum for holding our view size + var/datum/viewData/view_size /// our current tab var/stat_tab @@ -162,6 +161,14 @@ var/parallax_layers_max = 3 var/parallax_animate_timer + /** + * Assoc list with all the active maps - when a screen obj is added to + * a map, it's put in here as well. + * + * Format: list( = list(/obj/screen)) + */ + var/list/screen_maps = list() + // List of all asset filenames sent to this client by the asset cache, along with their assoicated md5s var/list/sent_assets = list() /// List of all completed blocking send jobs awaiting acknowledgement by send_asset diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 45990cd21f..7d33a87111 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -268,7 +268,8 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( else prefs = new /datum/preferences(src) GLOB.preferences_datums[ckey] = prefs - addtimer(CALLBACK(src, .proc/ensure_keys_set), 0) //prevents possible race conditions + + addtimer(CALLBACK(src, .proc/ensure_keys_set), 10) //prevents possible race conditions prefs.last_ip = address //these are gonna be used for banning prefs.last_id = computer_id //these are gonna be used for banning @@ -336,10 +337,6 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( qdel(src) return - // if(SSinput.initialized) placed here on tg. - // set_macros() - // update_movement_keys() - // Initialize tgui panel tgui_panel.initialize() src << browse(file('html/statbrowser.html'), "window=statbrowser") @@ -472,16 +469,16 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( if (menuitem) menuitem.Load_checked(src) - // view_size = new(src, getScreenSize(prefs.widescreenpref)) - // view_size.resetFormat() - // view_size.setZoomMode() - // fit_viewport() + view_size = new(src, getScreenSize(prefs.widescreenpref)) + view_size.resetFormat() + view_size.setZoomMode() + fit_viewport() Master.UpdateTickRate() /client/proc/ensure_keys_set() if(SSinput.initialized) set_macros() - update_movement_keys(prefs) + update_movement_keys(prefs) ////////////// //DISCONNECT// @@ -914,8 +911,8 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( return FALSE if (NAMEOF(src, key)) return FALSE - if(NAMEOF(src, view)) - change_view(var_value) + if (NAMEOF(src, view)) + view_size.setDefault(var_value) return TRUE . = ..() @@ -925,7 +922,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( var/y = viewscale[2] x = clamp(x+change, min, max) y = clamp(y+change, min,max) - change_view("[x]x[y]") + view_size.setDefault("[x]x[y]") /client/proc/update_movement_keys(datum/preferences/direct_prefs) var/datum/preferences/D = prefs || direct_prefs @@ -948,12 +945,6 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( if (isnull(new_size)) CRASH("change_view called without argument.") -//CIT CHANGES START HERE - makes change_view change DEFAULT_VIEW to 15x15 depending on preferences - if(prefs && CONFIG_GET(string/default_view)) - if(!prefs.widescreenpref && new_size == CONFIG_GET(string/default_view)) - new_size = "15x15" -//END OF CIT CHANGES - var/list/old_view = getviewsize(view) view = new_size var/list/actualview = getviewsize(view) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index c613401700..2110ae7277 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -98,6 +98,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/use_custom_skin_tone = FALSE var/left_eye_color = "000000" //Eye color var/right_eye_color = "000000" + var/eye_type = DEFAULT_EYES_TYPE //Eye type var/split_eye_colors = FALSE var/datum/species/pref_species = new /datum/species/human() //Mutant race var/list/features = list("mcolor" = "FFFFFF", @@ -203,7 +204,15 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/parallax var/ambientocclusion = TRUE - var/auto_fit_viewport = TRUE + ///Should we automatically fit the viewport? + var/auto_fit_viewport = FALSE + ///Should we be in the widescreen mode set by the config? + var/widescreenpref = TRUE + + ///What size should pixels be displayed as? 0 is strech to fit + var/pixel_size = 0 + ///What scaling method should we use? + var/scaling_method = "normal" var/uplink_spawn_loc = UPLINK_PDA @@ -243,7 +252,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/screenshake = 100 var/damagescreenshake = 2 var/arousable = TRUE - var/widescreenpref = TRUE var/autostand = TRUE var/auto_ooc = FALSE @@ -290,7 +298,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) /datum/preferences/proc/ShowChoices(mob/user) if(!user || !user.client) return - update_preview_icon(current_tab != 2) + update_preview_icon(current_tab) var/list/dat = list("
") dat += "Character Settings" @@ -477,25 +485,28 @@ GLOBAL_LIST_EMPTY(preferences_datums) if (CONFIG_GET(number/body_size_min) != CONFIG_GET(number/body_size_max)) dat += "Sprite Size: [features["body_size"]*100]%
" - if((EYECOLOR in pref_species.species_traits) && !(NOEYES in pref_species.species_traits)) - if(!use_skintones && !mutant_colors) - dat += APPEARANCE_CATEGORY_COLUMN - if(left_eye_color != right_eye_color) - split_eye_colors = TRUE - dat += "

Heterochromia

" - dat += "[split_eye_colors ? "Enabled" : "Disabled"]" - if(!split_eye_colors) - dat += "

Eye Color

" - dat += "    Change" + if(!(NOEYES in pref_species.species_traits)) + dat += "

Eye Type

" + dat += "[eye_type]
" + if((EYECOLOR in pref_species.species_traits)) + if(!use_skintones && !mutant_colors) + dat += APPEARANCE_CATEGORY_COLUMN + if(left_eye_color != right_eye_color) + split_eye_colors = TRUE + dat += "

Heterochromia

" + dat += "[split_eye_colors ? "Enabled" : "Disabled"]" + if(!split_eye_colors) + dat += "

Eye Color

" + dat += "    Change" + dat += "" + else + dat += "

Left Eye Color

" + dat += "    Change" + dat += "

Right Eye Color

" + dat += "    Change
" + dat += "" + else if(use_skintones || mutant_colors) dat += "" - else - dat += "

Left Eye Color

" - dat += "    Change" - dat += "

Right Eye Color

" - dat += "    Change
" - dat += "" - else if(use_skintones || mutant_colors) - dat += "" dat += APPEARANCE_CATEGORY_COLUMN dat += "

Speech preferences

" @@ -753,6 +764,20 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "HUD Button Flashes: [hud_toggle_flash ? "Enabled" : "Disabled"]
" dat += "HUD Button Flash Color:     Change
" +/* CITADEL EDIT - We're using top menu instead + button_name = pixel_size + dat += "Pixel Scaling: [(button_name) ? "Pixel Perfect [button_name]x" : "Stretch to fit"]
" + + switch(scaling_method) + if(SCALING_METHOD_NORMAL) + button_name = "Nearest Neighbor" + if(SCALING_METHOD_DISTORT) + button_name = "Point Sampling" + if(SCALING_METHOD_BLUR) + button_name = "Bilinear" + dat += "Scaling Method: [button_name]
" +*/ + if (CONFIG_GET(flag/maprotation) && CONFIG_GET(flag/tgstyle_maprotation)) var/p_map = preferred_map if (!p_map) @@ -1587,6 +1612,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_eyes) right_eye_color = sanitize_hexcolor(new_eyes, 6) + if("eye_type") + var/new_eye_type = input(user, "Choose your character's eye type.", "Character Preference") as null|anything in GLOB.eye_types + if(new_eye_type) + eye_type = new_eye_type + if("toggle_split_eyes") split_eye_colors = !split_eye_colors right_eye_color = left_eye_color @@ -1620,6 +1650,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(features["mcolor3"] == "#000000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3])) features["mcolor3"] = pref_species.default_color + //switch to the type of eyes the species uses + eye_type = pref_species.eye_type + if("custom_species") var/new_species = reject_bad_name(input(user, "Choose your species subtype, if unique. This will show up on examinations and health scans. Do not abuse this:", "Character Preference", custom_species) as null|text) if(new_species) @@ -1633,7 +1666,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_mutantcolor) if(new_mutantcolor == "#000000") features["mcolor"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin + else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) // mutantcolors must be bright, but only if they affect the skin features["mcolor"] = sanitize_hexcolor(new_mutantcolor, 6) else to_chat(user, "Invalid color. Your color is not bright enough.") @@ -1644,7 +1677,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_mutantcolor) if(new_mutantcolor == "#000000") features["mcolor2"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin + else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) // mutantcolors must be bright, but only if they affect the skin features["mcolor2"] = sanitize_hexcolor(new_mutantcolor, 6) else to_chat(user, "Invalid color. Your color is not bright enough.") @@ -1655,7 +1688,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_mutantcolor) if(new_mutantcolor == "#000000") features["mcolor3"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin + else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) // mutantcolors must be bright, but only if they affect the skin features["mcolor3"] = sanitize_hexcolor(new_mutantcolor, 6) else to_chat(user, "Invalid color. Your color is not bright enough.") @@ -2008,7 +2041,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_cockcolor) if(new_cockcolor == "#000000") features["cock_color"] = pref_species.default_color - else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + else if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) features["cock_color"] = sanitize_hexcolor(new_cockcolor, 6) else to_chat(user,"Invalid color. Your color is not bright enough.") @@ -2048,7 +2081,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_ballscolor) if(new_ballscolor == "#000000") features["balls_color"] = pref_species.default_color - else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + else if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) features["balls_color"] = sanitize_hexcolor(new_ballscolor, 6) else to_chat(user,"Invalid color. Your color is not bright enough.") @@ -2075,7 +2108,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_breasts_color) if(new_breasts_color == "#000000") features["breasts_color"] = pref_species.default_color - else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + else if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) features["breasts_color"] = sanitize_hexcolor(new_breasts_color, 6) else to_chat(user,"Invalid color. Your color is not bright enough.") @@ -2097,7 +2130,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_vagcolor) if(new_vagcolor == "#000000") features["vag_color"] = pref_species.default_color - else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + else if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) features["vag_color"] = sanitize_hexcolor(new_vagcolor, 6) else to_chat(user,"Invalid color. Your color is not bright enough.") @@ -2267,7 +2300,32 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["has_womb"] = !features["has_womb"] if("widescreenpref") widescreenpref = !widescreenpref - user.client.change_view(CONFIG_GET(string/default_view)) + user.client.view_size.setDefault(getScreenSize(widescreenpref)) + + if("pixel_size") + switch(pixel_size) + if(PIXEL_SCALING_AUTO) + pixel_size = PIXEL_SCALING_1X + if(PIXEL_SCALING_1X) + pixel_size = PIXEL_SCALING_1_2X + if(PIXEL_SCALING_1_2X) + pixel_size = PIXEL_SCALING_2X + if(PIXEL_SCALING_2X) + pixel_size = PIXEL_SCALING_3X + if(PIXEL_SCALING_3X) + pixel_size = PIXEL_SCALING_AUTO + user.client.view_size.apply() //Let's winset() it so it actually works + + if("scaling_method") + switch(scaling_method) + if(SCALING_METHOD_NORMAL) + scaling_method = SCALING_METHOD_DISTORT + if(SCALING_METHOD_DISTORT) + scaling_method = SCALING_METHOD_BLUR + if(SCALING_METHOD_BLUR) + scaling_method = SCALING_METHOD_NORMAL + user.client.view_size.setZoomMode() + if("autostand") autostand = !autostand if("auto_ooc") @@ -2641,6 +2699,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) character.dna.features = features.Copy() character.set_species(chosen_species, icon_update = FALSE, pref_load = TRUE) + character.dna.species.eye_type = eye_type if(chosen_limb_id && (chosen_limb_id in character.dna.species.allowed_limb_ids)) character.dna.species.mutant_bodyparts["limbs_id"] = chosen_limb_id character.dna.real_name = character.real_name @@ -2679,9 +2738,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) //limb stuff, only done when initially spawning in if(initial_spawn) - //delete any existing prosthetic limbs to make sure no remnant prosthetics are left over + //delete any existing prosthetic limbs to make sure no remnant prosthetics are left over - But DO NOT delete those that are species-related for(var/obj/item/bodypart/part in character.bodyparts) - if(part.status == BODYPART_ROBOTIC) + if(part.status == BODYPART_ROBOTIC && !part.render_like_organic) qdel(part) character.regenerate_limbs() //regenerate limbs so now you only have normal limbs for(var/modified_limb in modified_limbs) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 9aa377bce6..3bad31a919 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 36 +#define SAVEFILE_VERSION_MAX 38 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -204,10 +204,28 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(S["species"] == "lizard") features["mam_snouts"] = features["snout"] - if(current_version < 36) + if(current_version < 36) //introduction of heterochromia left_eye_color = S["eye_color"] right_eye_color = S["eye_color"] + if(current_version < 37) //introduction of chooseable eye types/sprites + if(S["species"] == "insect") + left_eye_color = "#000000" + right_eye_color = "#000000" + if(chosen_limb_id == "moth" || chosen_limb_id == "moth_not_greyscale") //these actually have slightly different eyes! + eye_type = "moth" + else + eye_type = "insect" + + if(current_version < 38) //further eye sprite changes + if(S["species"] == "plasmaman") + left_eye_color = "#FFC90E" + right_eye_color = "#FFC90E" + else + if(S["species"] == "skeleton") + left_eye_color = "#BAB99E" + right_eye_color = "#BAB99E" + /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) return @@ -271,6 +289,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["parallax"] >> parallax S["ambientocclusion"] >> ambientocclusion S["auto_fit_viewport"] >> auto_fit_viewport + S["widescreenpref"] >> widescreenpref + S["pixel_size"] >> pixel_size + S["scaling_method"] >> scaling_method S["hud_toggle_flash"] >> hud_toggle_flash S["hud_toggle_color"] >> hud_toggle_color S["menuoptions"] >> menuoptions @@ -288,7 +309,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["arousable"] >> arousable S["screenshake"] >> screenshake S["damagescreenshake"] >> damagescreenshake - S["widescreenpref"] >> widescreenpref S["autostand"] >> autostand S["cit_toggles"] >> cit_toggles S["preferred_chaos"] >> preferred_chaos @@ -324,6 +344,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null) ambientocclusion = sanitize_integer(ambientocclusion, 0, 1, initial(ambientocclusion)) auto_fit_viewport = sanitize_integer(auto_fit_viewport, 0, 1, initial(auto_fit_viewport)) + widescreenpref = sanitize_integer(widescreenpref, 0, 1, initial(widescreenpref)) + pixel_size = sanitize_integer(pixel_size, PIXEL_SCALING_AUTO, PIXEL_SCALING_3X, initial(pixel_size)) + scaling_method = sanitize_text(scaling_method, initial(scaling_method)) hud_toggle_flash = sanitize_integer(hud_toggle_flash, 0, 1, initial(hud_toggle_flash)) hud_toggle_color = sanitize_hexcolor(hud_toggle_color, 6, 1, initial(hud_toggle_color)) ghost_form = sanitize_inlist(ghost_form, GLOB.ghost_forms, initial(ghost_form)) @@ -337,7 +360,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car pda_skin = sanitize_inlist(pda_skin, GLOB.pda_reskins, PDA_SKIN_ALT) screenshake = sanitize_integer(screenshake, 0, 800, initial(screenshake)) damagescreenshake = sanitize_integer(damagescreenshake, 0, 2, initial(damagescreenshake)) - widescreenpref = sanitize_integer(widescreenpref, 0, 1, initial(widescreenpref)) autostand = sanitize_integer(autostand, 0, 1, initial(autostand)) cit_toggles = sanitize_integer(cit_toggles, 0, 16777215, initial(cit_toggles)) auto_ooc = sanitize_integer(auto_ooc, 0, 1, initial(auto_ooc)) @@ -509,6 +531,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["age"] >> age S["hair_color"] >> hair_color S["facial_hair_color"] >> facial_hair_color + S["eye_type"] >> eye_type S["left_eye_color"] >> left_eye_color S["right_eye_color"] >> right_eye_color S["use_custom_skin_tone"] >> use_custom_skin_tone @@ -695,6 +718,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age)) hair_color = sanitize_hexcolor(hair_color, 6, FALSE) facial_hair_color = sanitize_hexcolor(facial_hair_color, 6, FALSE) + eye_type = sanitize_inlist(eye_type, GLOB.eye_types, DEFAULT_EYES_TYPE) left_eye_color = sanitize_hexcolor(left_eye_color, 6, FALSE) right_eye_color = sanitize_hexcolor(right_eye_color, 6, FALSE) @@ -828,6 +852,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["age"] , age) WRITE_FILE(S["hair_color"] , hair_color) WRITE_FILE(S["facial_hair_color"] , facial_hair_color) + WRITE_FILE(S["eye_type"] , eye_type) WRITE_FILE(S["left_eye_color"] , left_eye_color) WRITE_FILE(S["right_eye_color"] , right_eye_color) WRITE_FILE(S["use_custom_skin_tone"] , use_custom_skin_tone) diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index e16a491c61..a019ade471 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -386,7 +386,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS //Admin Preferences /client/proc/toggleadminhelpsound() set name = "Hear/Silence Adminhelps" - set category = "Preferences" + set category = "Preferences.Admin" set desc = "Toggle hearing a notification when admin PMs are received" if(!holder) return @@ -397,7 +397,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS /client/proc/toggleannouncelogin() set name = "Do/Don't Announce Login" - set category = "Preferences" + set category = "Preferences.Admin" set desc = "Toggle if you want an announcement to admins when you login during a round" if(!holder) return @@ -408,7 +408,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS /client/proc/toggle_hear_radio() set name = "Show/Hide Radio Chatter" - set category = "Preferences" + set category = "Preferences.Admin" set desc = "Toggle seeing radiochatter from nearby radios and speakers" if(!holder) return @@ -419,7 +419,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS /client/proc/deadchat() set name = "Show/Hide Deadchat" - set category = "Preferences" + set category = "Preferences.Admin" set desc ="Toggles seeing deadchat" prefs.chat_toggles ^= CHAT_DEAD prefs.save_preferences() @@ -428,7 +428,7 @@ GLOBAL_LIST_INIT(ghost_orbits, list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS /client/proc/toggleprayers() set name = "Show/Hide Prayers" - set category = "Preferences" + set category = "Preferences.Admin" set desc = "Toggles seeing prayers" prefs.chat_toggles ^= CHAT_PRAYER prefs.save_preferences() diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm index dd1ebd74f9..5a8325fd64 100644 --- a/code/modules/client/verbs/ooc.dm +++ b/code/modules/client/verbs/ooc.dm @@ -111,16 +111,16 @@ GLOBAL_VAR_INIT(normal_ooc_colour, "#002eb8") /client/proc/set_ooc(newColor as color) set name = "Set Player OOC Color" set desc = "Modifies player OOC Color" - set category = "Fun" + set category = "Admin.Fun" GLOB.OOC_COLOR = sanitize_ooccolor(newColor) /client/proc/reset_ooc() set name = "Reset Player OOC Color" set desc = "Returns player OOC Color to default" - set category = "Fun" + set category = "Admin.Fun" GLOB.OOC_COLOR = null -/client/verb/colorooc() +/client/verb/colorooc() //this is admin and people who bought byond. set name = "Set Your OOC Color" set category = "Preferences" diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 2fbe738acb..ea01b0c0ed 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -45,13 +45,12 @@ var/dynamic_fhair_suffix = ""//mask > head for facial hair //basically a restriction list. - var/list/species_restricted = null + var/list/species_restricted //Basically syntax is species_restricted = list("Species Name","Species Name") //Add a "exclude" string to do the opposite, making it only only species listed that can't wear it. //You append this to clothing objects - // How much clothing damage has been dealt to each of the limbs of the clothing, assuming it covers more than one limb var/list/damage_by_parts // How much integrity is in a specific limb before that limb is disabled (for use in [/obj/item/clothing/proc/take_damage_zone], and only if we cover multiple zones.) Set to 0 to disable shredding. @@ -477,7 +476,6 @@ BLIND // can't see anything return TRUE - /// If we're a clothing with at least 1 shredded/disabled zone, give the wearer a periodic heads up letting them know their clothes are damaged /obj/item/clothing/proc/bristle(mob/living/L) if(!istype(L)) diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index b5d92fb780..f9f587ae5b 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -20,8 +20,14 @@ body_parts_covered = ARMS cold_protection = ARMS strip_delay = 300 //you can't just yank them off + /// did you ever get around to wearing these or no + var/wornonce = FALSE ///Extra damage through the punch. var/enhancement = 0 //it's a +0 to your punches because it isn't magical + ///extra wound bonus through the punch (MAYBE DON'T BE GENEROUS WITH THIS) + var/wound_enhancement = 0 + /// do we give the flavortext for wearing them + var/silent = FALSE ///Main trait added by the gloves to the user on wear. var/inherited_trait = TRAIT_NOGUNS //what are you, dishonoroable? ///Secondary trait added by the gloves to the user on wear. @@ -29,7 +35,18 @@ /obj/item/clothing/gloves/fingerless/pugilist/equipped(mob/user, slot) . = ..() - if(slot == SLOT_GLOVES) + if(current_equipped_slot == SLOT_GLOVES) + use_buffs(user, TRUE) + wornonce = TRUE + +/obj/item/clothing/gloves/fingerless/pugilist/dropped(mob/user) + . = ..() + if(wornonce) + use_buffs(user, FALSE) + wornonce = FALSE + +/obj/item/clothing/gloves/fingerless/pugilist/proc/use_buffs(mob/user, buff) + if(buff) // tarukaja if(ishuman(user)) var/mob/living/carbon/human/H = user ADD_TRAIT(H, TRAIT_PUGILIST, GLOVE_TRAIT) @@ -37,17 +54,20 @@ ADD_TRAIT(H, secondary_trait, GLOVE_TRAIT) H.dna.species.punchdamagehigh += enhancement H.dna.species.punchdamagelow += enhancement - -/obj/item/clothing/gloves/fingerless/pugilist/dropped(mob/user) - - REMOVE_TRAIT(user, TRAIT_PUGILIST, GLOVE_TRAIT) - REMOVE_TRAIT(user, inherited_trait, GLOVE_TRAIT) - REMOVE_TRAIT(user, secondary_trait, GLOVE_TRAIT) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.dna.species.punchdamagehigh -= enhancement - H.dna.species.punchdamagelow -= enhancement - return ..() + H.dna.species.punchwoundbonus += wound_enhancement + if(!silent) + to_chat(H, "With [src] on your arms, you feel ready to punch things.") + else // dekaja + REMOVE_TRAIT(user, TRAIT_PUGILIST, GLOVE_TRAIT) + REMOVE_TRAIT(user, inherited_trait, GLOVE_TRAIT) + REMOVE_TRAIT(user, secondary_trait, GLOVE_TRAIT) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.dna.species.punchdamagehigh -= enhancement + H.dna.species.punchdamagelow -= enhancement + H.dna.species.punchwoundbonus -= wound_enhancement + if(!silent) + to_chat(user, "With [src] off of your arms, you feel less ready to punch things.") /obj/item/clothing/gloves/fingerless/pugilist/chaplain name = "armwraps of unyielding resolve" @@ -93,6 +113,7 @@ icon_state = "rapid" item_state = "rapid" enhancement = 10 //omae wa mou shindeiru + wound_enhancement = 10 var/warcry = "AT" secondary_trait = TRAIT_NOSOFTCRIT //basically extra health diff --git a/code/modules/clothing/gloves/tacklers.dm b/code/modules/clothing/gloves/tacklers.dm index f4b4140a1a..eda36ea12f 100644 --- a/code/modules/clothing/gloves/tacklers.dm +++ b/code/modules/clothing/gloves/tacklers.dm @@ -65,12 +65,14 @@ heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT resistance_flags = NONE + strip_mod = 1.2 // because apparently black gloves had this /obj/item/clothing/gloves/tackler/combat/insulated name = "guerrilla gloves" desc = "Superior quality combative gloves, good for performing tackle takedowns as well as absorbing electrical shocks." siemens_coefficient = 0 permeability_coefficient = 0.05 + strip_mod = 1.5 // and combat gloves had this?? /obj/item/clothing/gloves/tackler/combat/insulated/infiltrator name = "insidious guerrilla gloves" diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 3774ce575f..e19a0538fc 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -190,7 +190,7 @@ /obj/item/clothing/head/wig name = "wig" desc = "A bunch of hair without a head attached." - icon = 'icons/mob/human_face.dmi' // default icon for all hairs + icon = 'icons/mob/hair.dmi' // default icon for all hairs icon_state = "hair_vlong" flags_inv = HIDEHAIR color = "#000" diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 11df38cfdd..5dd35788f1 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -355,7 +355,7 @@ /obj/item/clothing/mask/paper/Initialize(mapload) - .=..() + . = ..() papermask_designs = list( "Blank" = image(icon = src.icon, icon_state = "plainmask"), "Neutral" = image(icon = src.icon, icon_state = "neutralmask"), @@ -384,7 +384,7 @@ "Vertical" = "verticalmask", "Horizontal" = "horizontalmask", "X" ="xmask", "Bugeyes" = "bugmask", "Double" = "doublemask", "Mark" = "markmask") - var/choice = show_radial_menu(user,src, papermask_designs, custom_check = FALSE, radius = 36, require_near = TRUE) + var/choice = show_radial_menu(user, src, papermask_designs, custom_check = FALSE, radius = 36, require_near = TRUE) if(src && choice && !user.incapacitated() && in_range(user,src)) icon_state = options[choice] diff --git a/code/modules/events/shuttle_catastrophe b/code/modules/events/shuttle_catastrophe new file mode 100644 index 0000000000..d948b39d3b --- /dev/null +++ b/code/modules/events/shuttle_catastrophe @@ -0,0 +1,37 @@ +/datum/round_event_control/shuttle_catastrophe + name = "Shuttle Catastrophe" + typepath = /datum/round_event/shuttle_catastrophe + weight = 10 + max_occurrences = 1 + +/datum/round_event_control/shuttle_catastrophe/canSpawnEvent(players, gamemode) + if(SSshuttle.emergency.name == "Build your own shuttle kit") + return FALSE //don't undo manual player engineering, it also would unload people and ghost them, there's just a lot of problems + return ..() + + +/datum/round_event/shuttle_catastrophe + var/datum/map_template/shuttle/new_shuttle + +/datum/round_event/shuttle_catastrophe/announce(fake) + var/cause = pick("was attacked by [syndicate_name()] Operatives", "mysteriously teleported away", "had its refuelling crew mutiny", + "was found with its engines stolen", "\[REDACTED\]", "flew into the sunset, and melted", "learned something from a very wise cow, and left on its own", + "had cloning devices on it", "had its shuttle inspector put the shuttle in reverse instead of park, causing the shuttle to crash into the hangar") + + priority_announce("Your emergency shuttle [cause]. Your replacement shuttle will be the [new_shuttle.name] until further notice.", "CentCom Spacecraft Engineering") + +/datum/round_event/shuttle_catastrophe/setup() + var/list/valid_shuttle_templates = list() + for(var/shuttle_id in SSmapping.shuttle_templates) + var/datum/map_template/shuttle/template = SSmapping.shuttle_templates[shuttle_id] + if(template.can_be_bought && template.credit_cost < INFINITY) //if we could get it from the communications console, it's cool for us to get it here + valid_shuttle_templates += template + new_shuttle = pick(valid_shuttle_templates) + +/datum/round_event/shuttle_catastrophe/start() + SSshuttle.shuttle_purchased = SHUTTLEPURCHASE_FORCED + SSshuttle.unload_preview() + SSshuttle.load_template(new_shuttle) + SSshuttle.existing_shuttle = SSshuttle.emergency + SSshuttle.action_load(new_shuttle) + log_shuttle("Shuttle Catastrophe set a new shuttle, [new_shuttle.name].") diff --git a/code/modules/events/stray_cargo.dm b/code/modules/events/stray_cargo.dm index 031642c875..aae39e28a4 100644 --- a/code/modules/events/stray_cargo.dm +++ b/code/modules/events/stray_cargo.dm @@ -55,7 +55,7 @@ crate.update_icon() var/obj/structure/closet/supplypod/pod = make_pod() crate.forceMove(pod) - new /obj/effect/abstract/DPtarget(LZ, pod) + new /obj/effect/pod_landingzone(LZ, pod) ///Handles the creation of the pod, in case it needs to be modified beforehand /datum/round_event/stray_cargo/proc/make_pod() diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index 0920c9ccb6..e723ddd79b 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -29,7 +29,7 @@ for(var/i = 1, i <= number_of_wormholes, i++) var/turf/T = pick(pick_turfs) - wormholes += new /obj/effect/portal/wormhole(T, null, 0, null, FALSE) + wormholes += new /obj/effect/portal/wormhole(T, 0, null, FALSE) /datum/round_event/wormholes/announce(fake) priority_announce("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert", "spanomalies") diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index a3ee8c5228..140923c1ef 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -618,3 +618,9 @@ icon_state = "monkey_energy" list_reagents = list(/datum/reagent/consumable/monkey_energy = 50) foodtype = SUGAR | JUNKFOOD + +/obj/item/reagent_containers/food/drinks/dwarf_mug //dwarf family heirloom (just a cup that always has the manly dorf icon!) + name = "ale mug" + desc = "An old stained mug used for filling with dwarven ale." + icon_state = "manlydorfglass" + isGlass = FALSE //it's a wooden mug! diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index eea7cdb87d..38a68ad364 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -291,3 +291,12 @@ tastes = list("creamy peas"= 2, "parsnip" = 1) filling_color = "#9dc530" foodtype = VEGETABLES + +/obj/item/reagent_containers/food/snacks/soup/facehuggerpot + name = "pot of face hugger jambalaya" + desc = "An entire pot of an extremely spicy dish made using extremely exotic ingredients. Highly recommend by an interdimensional businessman." + icon_state = "facehuggerpot" + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 4) + tastes = list("face huggers" = 1) + foodtype = MEAT diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm index 6372137edc..c52218c913 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm @@ -291,3 +291,18 @@ ) result = /obj/item/reagent_containers/food/snacks/soup/peasoup subcategory = CAT_SOUP + +/datum/crafting_recipe/food/facehuggerjambalayapot + name = "Facehugger jambalaya" + reqs = list( + /datum/reagent/bluespace = 10, + /datum/reagent/consumable/ethanol/booger =10, + /obj/item/organ/heart= 3, + /obj/item/clothing/mask/facehugger = 1, + /obj/item/reagent_containers/food/snacks/egg = 1, + /datum/reagent/consumable/blackpepper = 5, + /datum/reagent/toxin/acid = 5 + + ) + result = /obj/item/reagent_containers/food/snacks/soup/facehuggerpot + subcategory = CAT_SOUP diff --git a/code/modules/holiday/halloween/bartholomew.dm b/code/modules/holiday/halloween/bartholomew.dm index c9a4a946a3..117e03c357 100644 --- a/code/modules/holiday/halloween/bartholomew.dm +++ b/code/modules/holiday/halloween/bartholomew.dm @@ -130,9 +130,13 @@ /obj/item/reagent_containers/pill = 2, /obj/item/clothing/shoes = 8, /obj/item/clothing/head = 3, - /obj/item/reagent_containers/food/snacks = 3, + /obj/item/reagent_containers/food/snacks = 5, /obj/item/reagent_containers/syringe/dart = 2, - /obj/item/reagent_containers/food/drinks/soda_cans = 5) + /obj/item/reagent_containers/food/drinks/soda_cans = 5, + /obj/item/reagent_containers/food/drinks/drinkingglass = 4, + /obj/item/reagent_containers/food/drinks = 6, + /obj/item/reagent_containers/food/snacks/grown/apple = 1, + /obj/item/reagent_containers/food/snacks/grown/banana = 2) if(length >= 5) return TRUE //var/metalist = pickweight(GLOB.maintenance_loot) diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm index 573b04a296..16151c4191 100644 --- a/code/modules/holiday/halloween/jacqueen.dm +++ b/code/modules/holiday/halloween/jacqueen.dm @@ -48,8 +48,8 @@ var/progression = list() //Keep track of where people are in the story. var/active = TRUE //Turn this to false to keep normal mob behavour var/cached_z - /// I'm busy chatting, don't move. - var/busy_chatting = FALSE + /// I'm busy, don't move. + var/busy = FALSE /mob/living/simple_animal/jacq/Initialize() ..() @@ -68,11 +68,14 @@ playsound(loc, 'sound/spookoween/ahaha.ogg', 100, 0.25) var/mob/living/simple_animal/jacq/Jacq = new src.type(loc) Jacq.progression = progression + if(ckey) //transfer over any ghost posessions + Jacq.key = key ..() /mob/living/simple_animal/jacq/death() //What is alive may never die visible_message("[src] cackles, \"You'll nae get rid a me that easily!\"") playsound(loc, 'sound/spookoween/ahaha.ogg', 100, 0.25) + fully_heal(FALSE) health = 25 poof() @@ -81,9 +84,9 @@ say("Hello there [gender_check(M)]!") return ..() if(!ckey) - busy_chatting = FALSE + stopmove() chit_chat(M) - busy_chatting = TRUE + canmove() ..() /mob/living/simple_animal/jacq/attack_paw(mob/living/carbon/monkey/M) @@ -91,11 +94,28 @@ say("Hello there [gender_check(M)]!") return ..() if(!ckey) - busy_chatting = FALSE + stopmove() chit_chat(M) - busy_chatting = TRUE + canmove() ..() +/mob/living/simple_animal/jacq/proc/canmove() + busy = FALSE + update_mobility() + +/mob/living/simple_animal/jacq/proc/stopmove() + if(ckey) //if someone is in her, don't disable her movement! + canmove() + return + busy = TRUE + update_mobility() + +/mob/living/simple_animal/jacq/proc/jacqrunes(message, mob/living/carbon/C) //Displays speechtext over Jacq for the user only. + var/atom/hearer = C + var/list/spans = list("spooky") + new /datum/chatmessage(message, src, hearer, spans) + + /mob/living/simple_animal/jacq/proc/poof() last_poof = world.realtime var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case. @@ -104,7 +124,7 @@ s.set_up(R, 0, loc) s.start() visible_message("[src] disappears in a puff of smoke!") - busy_chatting = TRUE + canmove() health = 25 //Try to go to populated areas @@ -120,7 +140,7 @@ continue targets += H - if(!targets) + if(!targets.len) targets = GLOB.generic_event_spawns for(var/i in 1 to 6) //Attempts a jump up to 6 times. @@ -151,14 +171,16 @@ if(!progression["[C.real_name]"] || !(progression["[C.real_name]"] & JACQ_HELLO)) visible_message("[src] smiles ominously at [C], \"Well halo there [gender]! Ah'm Jacqueline, tae great Pumpqueen, great tae meet ye.\"") + jacqrunes("Well halo there [gender]! Ah'm Jacqueline, tae great Pumpqueen, great tae meet ye.", C) sleep(20) visible_message("[src] continues, \"Ah'm sure yae well stunned, but ah've got nae taem fer that. Ah'm after the candies around this station. If yae get mae enoof o the wee buggers, Ah'll give ye a treat, or if yae feeling bold, Ah ken trick ye instead.\" giving [C] a wide grin.") + jacqrunes("Ah'm sure yae well stunned, but ah've got nae taem fer that. Ah'm after the candies around this station. If yae get mae enoof o the wee buggers, Ah'll give ye a treat, or if yae feeling bold, Ah ken trick ye instead.", C) if(!progression["[C.real_name]"]) progression["[C.real_name]"] = NONE //TO MAKE SURE THAT THE LIST ENTRY EXISTS. progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_HELLO - var/choices = list("Trick", "Treat", "How do I get candies?") + var/choices = list("Trick", "Treat", "How do I get candies?", "Do I know you from somewhere?") var/choice = input(C, "Trick or Treat?", "Trick or Treat?") in choices switch(choice) if("Trick") @@ -168,14 +190,20 @@ if(check_candies(C)) treat(C, gender) else - visible_message("[src] raises an eyebrow, \"You've nae got any candies Ah want! They're the orange round ones, now bugger off an go get em first.\"") + visible_message("[src] raises aneyebrow, \"You've nae got any candies Ah want! They're the orange round ones, now bugger off an go get em first.\"") + jacqrunes("You've nae got any candies Ah want! They're the orange round ones, now bugger off an go get em first.", C) return if("How do I get candies?") visible_message("[src] says, \"Gae find my familiar; Bartholomew. Ee's tendin the cauldron which ken bring oot t' magic energy in items scattered aroond. Knowing him, ee's probably gone tae somewhere with books.\"") + jacqrunes("Gae find my familiar; Bartholomew. Ee's tendin the cauldron which ken bring oot t' magic energy in items scattered aroond. Knowing him, ee's probably gone tae somewhere with books.", C) return + if("Do I know you from somewhere?") + visible_message("[src] says, \"Aye ye micht dae, ah was kicking aboot round 'ere aboot a year ago when ah had a wee... altercation wit the witch academy n' ran oot here tae crash oan me sis's floor. Course she pushed me tae git it a' sorted oot lik', bit nae before ah hud a wee bit o' fun oan this station. Or maybe ye jest recognise me ma's prized pumpkin atop me nonce.\"") + jacqrunes("Aye ye micht dae, ah was kicking aboot round 'ere aboot a year ago when ah had a wee... altercation wit the witch academy n' ran oot here tae crash oan me sis's floor. Course she pushed me tae git it a' sorted oot lik', bit nae before ah hud a wee bit o' fun oan this station. Or maybe ye jest recognise me ma's prized pumpkin atop me nonce.", C) /mob/living/simple_animal/jacq/proc/treat(mob/living/carbon/C, gender) visible_message("[src] gives off a glowing smile, \"What ken Ah offer ye? I can magic up an object, a potion or a plushie fer ye.\"") + jacqrunes("What ken Ah offer ye? I can magic up an object, a potion or a plushie fer ye.", C) var/choices_reward = list("Object - 3 candies", "Potion - 2 candies", "Jacqueline Tracker - 2 candies", "Plushie - 1 candy", "Can I get to know you instead?", "Become a pumpkinhead dullahan (perma) - 4 candies") var/choice_reward = input(usr, "Trick or Treat?", "Trick or Treat?") in choices_reward @@ -184,8 +212,10 @@ if("Become a pumpkinhead dullahan (perma) - 4 candies") if(!take_candies(C, 4)) visible_message("[src] raises an eyebrown, \"It's 4 candies for that [gender]! Thems the rules!\"") + jacqrunes("It's 4 candies for that [gender]! Thems the rules!", C) return visible_message("[src] waves their arms around, \"Off comes your head, a pumpkin taking it's stead!\"") + jacqrunes("Off comes your head, a pumpkin taking it's stead!", C) C.reagents.add_reagent(/datum/reagent/mutationtoxin/pumpkinhead, 5) sleep(20) poof() @@ -194,6 +224,7 @@ if("Object - 3 candies") if(!take_candies(C, 3)) visible_message("[src] raises an eyebrown, \"It's 3 candies per trinket [gender]! Thems the rules!\"") + jacqrunes("It's 3 candies per trinket [gender]! Thems the rules!", C) return var/new_obj = pick(subtypesof(/obj)) @@ -203,36 +234,43 @@ var/reward = new new_obj(C.loc) C.put_in_hands(reward) visible_message("[src] waves her hands, magicking up a [reward] from thin air, \"There ye are [gender], enjoy! \"") + jacqrunes("There ye are [gender], enjoy!", C) sleep(20) poof() return if("Potion - 2 candies") if(!take_candies(C, 2)) visible_message("[src] raises an eyebrow, \"It's 2 candies per potion [gender]! Thems the rules!\"") + jacqrunes("It's 2 candies per potion [gender]! Thems the rules!", C) return var/reward = new /obj/item/reagent_containers/potion_container(C.loc) C.put_in_hands(reward) visible_message("[src] waves her hands, magicking up a [reward] from thin air, \"There ye are [gender], enjoy! \"") + jacqrunes("There ye are [gender], enjoy!", C) sleep(20) poof() return if("Plushie - 1 candy") if(!take_candies(C, 1)) visible_message("[src] raises an eyebrow, \"It's 1 candy per plushie [gender]! Thems the rules!\"") + jacqrunes("It's 1 candy per plushie [gender]! Thems the rules!", C) return new /obj/item/toy/plush/random(C.loc) visible_message("[src] waves her hands, magicking up a plushie from thin air, \"There ye are [gender], enjoy! \"") + jacqrunes("There ye are [gender], enjoy!", C) sleep(20) poof() return if("Jacqueline Tracker - 2 candies") if(!take_candies(C, 2)) visible_message("[src] raises an eyebrow, \"It's 1 candy per plushie [gender]! Thems the rules!\"") + jacqrunes("It's 1 candy per plushie [gender]! Thems the rules!", C) return new /obj/item/pinpointer/jacq(C.loc) visible_message("[src] waves her hands, magicking up a tracker from thin air, \"Feels weird to magic up a tracker fer meself but, here ye are [gender], enjoy! \"") + jacqrunes("Feels weird to magic up a tracker fer meself but, here ye are [gender], enjoy!", C) sleep(20) poof() return @@ -252,7 +290,7 @@ choices += "What is that on your head?" if(!(progression["[C.real_name]"] & JACQ_EXPELL)) if(progression["[C.real_name]"] & JACQ_WITCH) - choices += "So you got ex-spell-ed?" + choices += "What is it like being a witch?" else choices += "Are you a witch?" @@ -270,47 +308,79 @@ //If you've nothing to ask if(!LAZYLEN(choices)) visible_message("[src] sighs, \"Ah'm all questioned oot fer noo, [gender].\"") + jacqrunes("Ah'm all questioned oot fer noo, [gender]", C) return //Otherwise, lets go! visible_message("[src] says, \"A question? Sure, it'll cost you a candy though!\"") + jacqrunes("A question? Sure, it'll cost you a candy though!", C) choices += "Nevermind" //Candies for chitchats var/choice = input(C, "What do you want to ask?", "What do you want to ask?") in choices if(!take_candies(C, 1)) visible_message("[src] raises an eyebrow, \"It's a candy per question [gender]! Thems the rules!\"") + jacqrunes("It's a candy per question [gender]! Thems the rules!", C) return //Talking switch(choice) if("Why do you want the candies?") visible_message("[src] says, \"Ave ye tried them? They're full of all sorts of reagents. Ah'm after them so ah ken magic em up an hopefully find rare stuff fer me brews. Honestly it's a lot easier magicking up tatt fer ye lot than runnin aroond on me own like. I'd ask me familiars but most a my familiars are funny fellows 'n constantly bugger off on adventures when given simple objectives like; Go grab me a tea cake or watch over me cauldron. Ah mean, ye might run into Bartholomew my cat. Ee's supposed tae be tending my cauldron, but I've nae idea where ee's got tae.\"") + jacqrunes("Ave ye tried them? They're full of all sorts of reagents. Ah'm after them so ah ken magic em up an hopefully find rare stuff fer me brews. Honestly it's a lot easier magicking up tatt fer ye lot than runnin aroond on me own like. I'd ask me familiars but most a my familiars are funny fellows 'n constantly bugger off on adventures when given simple objectives like; Go grab me a tea cake or watch over me cauldron. Ah mean, ye might run into Bartholomew my cat. Ee's supposed tae be tending my cauldron, but I've nae idea where ee's got tae.", C) progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_CANDIES sleep(30) if("You really came all this way for candy?") - visible_message("[src] l ooks tae the side sheepishly, \"Aye, well, tae be honest, Ah'm here tae see me sis, but dunnae let her knew that. She's an alchemist too like, but she dunnae use a caldron like mae, she buggered off like tae her posh ivory tower tae learn bloody chemistry instead!\" [src] scowls, \"She's tae black sheep o' the family too, so we dunnae see eye tae eye sometimes on alchemy. Ah mean, she puts moles in her brews! Ye dunnae put moles in yer brews! Yae threw your brews at tae wee bastards an blew em up!\" [src] sighs, \"But she's a heart o gold so.. Ah wanted tae see her an check up oon her, make sure she's okay.\"") + visible_message("[src] looks to the side sheepishly, \"Aye, well, tae be honest, Ah'm here tae see me sis, but dunnae let her knew that. She's an alchemist too like, but she dunnae use a caldron like mae, she buggered off like tae her posh ivory tower tae learn bloody chemistry instead!\" [src] scowls, \"She's tae black sheep o' the family too, so we dunnae see eye tae eye sometimes on alchemy. Ah mean, she puts moles in her brews! Ye dunnae put moles in yer brews! Yae threw your brews at tae wee bastards an blew em up!\" [src] sighs, \"But she's a heart o gold so.. Ah wanted tae see her an check up oon her, make sure she's okay.\"") + jacqrunes("Aye, well, tae be honest, Ah'm here tae see me sis, but dunnae let her knew that. She's an alchemist too like, but she dunnae use a caldron like mae, she buggered off like tae her posh ivory tower tae learn bloody chemistry instead", C) progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_FAR - sleep(30) + sleep(10) + jacqrunes("She's tae black sheep o' the family too, so we dunnae see eye tae eye sometimes on alchemy. Ah mean, she puts moles in her brews! Ye dunnae put moles in yer brews! Yae threw your brews at tae wee bastards an blew em up!", C) + sleep(10) + jacqrunes("But she's a heart o gold so.. Ah wanted tae see her an check up oon her, make sure she's okay.", C) + sleep(10) if("What is that on your head?") - visible_message("[src] pats the pumpkin atop her head, \"This thing? This ain't nae ordinary pumpkin! Me Ma grew this monster ooer a year o love, dedication an hard work. Honestly it felt like she loved this thing more than any of us, which Ah knew ain't true an it's not like she was hartless or anything but.. well, we had a falling oot when Ah got back home with all me stuff in tow. An all she had done is sent me owl after owl over t' last year aboot this bloody pumpkin and ah had enough. So ah took it, an put it on me head. You know, as ye do. Ah am the great Pumpqueen after all, Ah deserve this.\"") + visible_message("[src] pats the pumpkin atop her head, \"This thing? This ain't nae ordinary pumpkin! Me Ma grew this monster ooer a year o love, dedication an hard work. Honestly I got bloody sick o'er harpin' on aboot it, all she had done is sent me owl after owl over aboot this bloody pumpkin since i left the nest and ah had enough after a ... mild altercation like. So I nabbed it last halloween. Caught bloody hell fer it ah did, course me sis talked to me ma and, well, simmered her doon. We've all but made up noo, but seein' as ah'm the great Pumpqueen after all, I cannae be seen withoot it like.\"") + jacqrunes("This thing? This ain't nae ordinary pumpkin! Me Ma grew this monster ooer a year o love, dedication an hard work. Honestly I got bloody sick o'er harpin' on aboot it, all she had done is sent me owl after owl over aboot this bloody pumpkin since i left the nest and ah had enough after a ... mild altercation like. So I nabbed it last halloween. Caught bloody hell fer it ah did, course me sis talked to me ma and, well, simmered her doon. We've all but made up noo, but seein' as ah'm the great Pumpqueen after all, I cannae be seen withoot it like.", C) progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_HEAD sleep(30) + //Year 1 answer: for anyone who is interested! + /*This thing? This ain't nae ordinary pumpkin! Me Ma grew this monster ooer a year o love, dedication an hard work. Honestly it felt like she loved this thing more than any of us, which Ah knew ain't true an it's not like she was hartless or anything but.. well, we had a falling oot when Ah got back home with all me stuff in tow. An all she had done is sent me owl after owl over t' last year aboot this bloody pumpkin and ah had enough. So ah took it, an put it on me head. You know, as ye do. Ah am the great Pumpqueen after all, Ah deserve this.*/ + if("Are you a witch?") - visible_message("[src] grumbles, \"If ye must know, Ah got kicked oot of the witch academy fer being too much of a \"loose cannon\". A bloody loose cannon? Nae they were just pissed off Ah had the brass tae proclaim myself as the Pumpqueen! And also maybe the time Ah went and blew up one of the towers by trying tae make a huge batch of astrogen might've had something tae do with it. Ah mean it would've worked fine if the cauldrons weren't so shite and were actually upgraded by the faculty. So technically no, I'm not a witch.\"") + visible_message("[src] smirks, \"Weel, after getting kicked oot over a very minor explosion last year, ah wis able tae git back in 'n' finish me witching degree thanks tae me sis! 'twas bloody brutal finishing th' degree though, ah will tell ye, ye take a peek o'er at t' other witches all prim 'n' proper like 'n' it gets in yer heid, ye'r nae as guid. But ah bloody well ended up summoning Nar'Sie last year for the lot o' yous. Aye a'm a loose cannon - but ah get results.\" thumping her chest with pride as she finishes speaking.") + jacqrunes("Weel, after getting kicked oot over a very minor explosion last year, ah wis able tae git back in 'n' finish me witching degree thanks tae me sis! 'twas bloody brutal finishing th' degree though, ah will tell ye, ye take a peek o'er at t' other witches all prim 'n' proper like 'n' it gets in yer heid, ye'r nae as guid. But ah bloody well ended up summoning Nar'Sie last year for the lot o' yous. Aye a'm a loose cannon - but ah get results." , C) progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_WITCH sleep(30) - if("So you got ex-spell-ed?") - visible_message("[src] Gives you a blank look at the pun, before continuing, \"Not quite, Ah know Ah ken get back into the academy, it's only an explosion, they happen all the time, but, tae be fair it's my fault that things came tae their explosive climax. You don't know what it's like when you're after a witch doctorate, everyone else is doing well, everyone's making new spells and the like, and I'm just good at making explosions really, or fireworks. So, Ah did something Ah knew was dangerous, because Ah had tae do something tae stand oot, but Ah know this life ain't fer me, Ah don't want tae be locked up in dusty towers, grinding reagent after reagent together, trying tae find new reactions, some of the wizards in there haven't left fer years. Ah want tae live, Ah want tae fly around on a broom, turn people into cats fer a day and disappear cackling! That's what got me into witchcraft!\" she throws her arms up in the arm, spinning the pumpkin upon her head slightly. She carefully spins it back to face you, giving oot a soft sigh, \"Ah know my mother's obsession with this dumb thing on my head is just her trying tae fill the void of me and my sis moving oot, and it really shouldn't be on my head. And Ah know that I'm really here tae get help from my sis.. She's the sensible one, and she gives good hugs.\"") - sleep(30) + //Year 1 answer for anyone who is interested: + /* Are you a witch? + If ye must know, Ah got kicked oot of the witch academy fer being too much of a \"loose cannon\". A bloody loose cannon? Nae they were just pissed off Ah had the brass tae proclaim myself as the Pumpqueen! And also maybe the time Ah went and blew up one of the towers by trying tae make a huge batch of astrogen might've had something tae do with it. Ah mean it would've worked fine if the cauldrons weren't so shite and were actually upgraded by the faculty. So technically no, I'm not a witch.*/ + + if("What is it like being a witch?") //What is it like being a witch? + + visible_message("[src] says, \"Tae be honest, ah dunnae. Ah mean ah have a piece o’ paper that implies that a’m, ‘n’ a few folk who seem keen in shoving me back in their magic tower, but I don’t know if that’s fer me really.\" she gives the back of her pumpkin a quick scratch as she continues \"What draws me tae witchcraft is the chaos, ah live tae see th’ utter madness that comes fae the spells ah cast ‘n’ th’ like, ‘n’ ah know you do tae, it’s why you’re ‘ere, aye? Ah kin conjure some utterly chaotic things, and ah love tae do it, just tae see what I’ll git! It’s why visiting here is so fun, ye wee lot scurrying about, getting me candies, hoping I’ll conjure up something utterly chaotic!\" she throws her arms up in the arm with a laugh, spinning the pumpkin upon her head slightly. She carefully spins it back to face you, \"But o’ course life ain’t that easy, ye can’t just go around being a pure agent o’ chaos, ‘n’ ah feel like the reality o’ the world be trying tae dull me, to shove me in a boring dusty auld room where ah spend t’ rest o’ me days researching some boggin’ magic till ah die. Ah want tae bloody well change t’ world, ah want to do something that leaves an impact, but ah dunnae want t’ kill people doing it.\" she gives out a soft sigh, \"Who knows, maybe I’ll bugger off ‘n’ make some pumkinmobiles or something daft like that.\" ") + jacqrunes("Tae be honest, ah dunnae. Ah mean ah have a piece o’ paper that implies that a’m, ‘n’ a few folk who seem keen in shoving me back in their magic tower, but I don’t know if that’s fer me really." , C) + sleep(10) + jacqrunes("What draws me tae witchcraft is the chaos, ah live tae see th’ utter madness that comes fae the spells ah cast ‘n’ th’ like, ‘n’ ah know you do tae, it’s why you’re ‘ere, aye? Ah kin conjure some utterly chaotic things, and ah love tae do it, just tae see what I’ll git! It’s why visiting here is so fun, ye wee lot scurrying about, getting me candies, hoping I’ll conjure up something utterly chaotic!" , C) + sleep(10) + jacqrunes("But o’ course life ain’t that easy, ye can’t just go around being a pure agent o’ chaos, ‘n’ ah feel like the reality o’ the world be trying tae dull me, to shove me in a boring dusty auld room where ah spend t’ rest o’ me days researching some boggin’ magic till ah die. Ah want tae bloody well change t’ world, ah want to do something that leaves an impact, but ah dunnae want t’ kill people doing it.", C) + sleep(10) + jacqrunes("Who knows, maybe I’ll bugger off ‘n’ make some pumkinmobiles or something daft like that.", C) + sleep(25) visible_message("[src] says, \"Thanks [C], Ah guess Ah didn't realise Ah needed someone tae talk tae but, I'm glad ye spent all your candies talking tae me. Funny how things seem much worse in yer head.\"") + jacqrunes("Thanks [C], Ah guess Ah didn't realise Ah needed someone tae talk tae but, I'm glad ye spent all your candies talking tae me. Funny how things seem much worse in yer head." , C) progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_EXPELL sleep(30) + //Year 1 answer for anyone who is interested: + /*"So you got ex-spell-ed?" + Gives you a blank look at the pun, before continuing, \"Not quite, Ah know Ah ken get back into the academy, it's only an explosion, they happen all the time, but, tae be fair it's my fault that things came tae their explosive climax. You don't know what it's like when you're after a witch doctorate, everyone else is doing well, everyone's making new spells and the like, and I'm just good at making explosions really, or fireworks. So, Ah did something Ah knew was dangerous, because Ah had tae do something tae stand oot, but Ah know this life ain't fer me, Ah don't want tae be locked up in dusty towers, grinding reagent after reagent together, trying tae find new reactions, some of the wizards in there haven't left fer years. Ah want tae live, Ah want tae fly around on a broom, turn people into cats fer a day and disappear cackling! That's what got me into witchcraft!\" she throws her arms up in the arm, spinning the pumpkin upon her head slightly. She carefully spins it back to face you, giving oot a soft sigh, \"Ah know my mother's obsession with this dumb thing on my head is just her trying tae fill the void of me and my sis moving oot, and it really shouldn't be on my head. And Ah know that I'm really here tae get help from my sis.. She's the sensible one, and she gives good hugs. + */ + if("Can I take you out on a date?") visible_message("[src] blushes, \"...You want tae ask me oot on a date? Me? After all that nonsense Ah just said? It seems a waste of a candy honestly.\"") - //progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_DATE + jacqrunes("...You want tae ask me oot on a date? Me? After all that nonsense Ah just said? It seems a waste of a candy honestly." , C) visible_message("[src] looks to the side, deep in thought.") dating_start(C, gender) @@ -328,15 +398,18 @@ switch(option) if(1) visible_message("[src] waves their arms around, \"Hocus pocus, making friends is now your focus!\"") + jacqrunes("Hocus pocus, making friends is now your focus!", C) var/message = pick("make a tasty sandwich for", "compose a poem for", "aquire a nice outfit to give to", "strike up a conversation about pumpkins with", "write a letter and deliver it to", "give a nice hat to") var/mob/living/L2 = pick(GLOB.player_list) message += " [L2.name]." to_chat(C, " You feel an overwhelming desire to [message]") if(2) visible_message("[src] waves their arms around, \"If only you had a better upbringing, your ears are now full of my singing!\"") - C.client.tgui_panel?.play_music("https://puu.sh/ExBbv.mp4") + jacqrunes("If only you had a better upbringing, your ears are now full of my singing!", C) + C.client.tgui_panel?.play_music("https://katlin.dog/v/spooky.mp4") if(3) visible_message("[src] waves their arms around, \"You're cute little bumpkin, On your head is a pumpkin!\"") + jacqrunes("You're cute little bumpkin, On your head is a pumpkin!", C) if(C.head) var/obj/item/W = C.head C.dropItemToGround(W, TRUE) @@ -344,12 +417,15 @@ C.equip_to_slot(jaqc_latern, SLOT_HEAD, 1, 1) if(4) visible_message("[src] waves their arms around, \"In your body there's something amiss, you'll find it's a chem made by my sis!\"") + jacqrunes("In your body there's something amiss, you'll find it's a chem made by my sis!", C) C.reagents.add_reagent(/datum/reagent/fermi/eigenstate, 30) if(5) visible_message("[src] waves their arms around, \"A new familiar for me, and you'll see it's thee!\"") - C.reagents.add_reagent("secretcatchem", 30) + jacqrunes("A new familiar for me, and you'll see it's thee!", C) + C.reagents.add_reagent(/datum/reagent/fermi/secretcatchem, 30) if(6) visible_message("[src] waves their arms around, \"While you may not be a ghost, for this sheet you'll always be it's host.\"") + jacqrunes("While you may not be a ghost, for this sheet you'll always be it's host.", C) var/mob/living/carbon/human/H = C if(H.wear_suit) var/obj/item/W = H.wear_suit @@ -370,22 +446,30 @@ message_admins("[C2]/[C2.key] has agreed to go on a date with [C] as Jacqueline.") log_game("HALLOWEEN: [C2]/[C2.key] has agreed to go on a date with [C] as Jacqueline") to_chat(src, "You are Jacqueline the great pumpqueen, witch Extraordinaire! You're a very Scottish lass with a kind heart, but also a little crazy. You also blew up the wizarding school and you're suspended for a while, so you visited the station before heading home. On your head lies the prize pumpkin of your Mother's pumpkin patch. You're currently on a date with [C] and well, I didn't think anyone would get this far. Please be good so I can do events like this in the future. ") - return + canmove() + return TRUE else candies =- C2 visible_message("[src] looks to the side, \"Look, Ah like ye but, Ah don't think Ah can right now. If ye can't tell, the stations covered in volatile candies, I've a few other laddies and lassies running after me treats, and tae top it all off, I've the gods breathing down me neck, watching every treat Ah make fer the lot of yous.\" she sighs, \"But that's not a no, right? That's.. just a nae right noo.\"") + jacqrunes("Look, Ah like ye but, Ah don't think Ah can right now. If ye can't tell, the stations covered in volatile candies, I've a few other laddies and lassies running after me treats, and tae top it all off, I've the gods breathing down me neck, watching every treat Ah make fer the lot of yous.", C) sleep(20) + jacqrunes("But that's not a no, right? That's.. just a nae right noo.", C) visible_message("[src] takes off the pumpkin on her head, a rich blush on her cheeks. She leans over planting a kiss upon your forehead quickly befere popping the pumpkin back on her head.") - sleep(10) + sleep(20) visible_message("[src] waves their arms around, \"There, that aught tae be worth a candy.\"") + jacqrunes("There, that aught tae be worth a candy.", C) sleep(20) poof() /mob/living/simple_animal/jacq/update_mobility() . = ..() - if(busy_chatting) + if(busy) DISABLE_BITFIELD(., MOBILITY_MOVE) - mobility_flags = . + else + ENABLE_BITFIELD(., MOBILITY_MOVE) + mobility_flags = . + + /obj/item/clothing/head/hardhat/pumpkinhead/jaqc name = "Jacq o' latern" diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index 83bb67b879..f6e4684e21 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -351,7 +351,7 @@ /datum/holiday/halloween name = HALLOWEEN - begin_day = 28 + begin_day = 1 begin_month = OCTOBER end_day = 2 end_month = NOVEMBER diff --git a/code/modules/hydroponics/grown/grass_carpet.dm b/code/modules/hydroponics/grown/grass_carpet.dm index e6fd991169..51e94afb3c 100644 --- a/code/modules/hydroponics/grown/grass_carpet.dm +++ b/code/modules/hydroponics/grown/grass_carpet.dm @@ -50,7 +50,7 @@ plantname = "Fairygrass" product = /obj/item/reagent_containers/food/snacks/grown/grass/fairy icon_grow = "fairygrass-grow" - icon_dead = "fairygrass-dead" + icon_dead = "grass-dead" genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/blue) mutatelist = list (/obj/item/seeds/grass/carpet) reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, /datum/reagent/hydrogen = 0.05, /datum/reagent/drug/space_drugs = 0.15) diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index 80ba6b7375..e6d2484632 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -193,6 +193,8 @@ growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' + icon_grow = "chanter-grow" + icon_dead = "chanter-dead" reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) mutatelist = list(/obj/item/seeds/chanterelle/jupitercup) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index d6022c1345..a1a177c028 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -42,6 +42,14 @@ icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "hydrotray3" +/obj/machinery/hydroponics/constructable/ComponentInitialize() + . = ..() + AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated)) + AddComponent(/datum/component/plumbing/simple_demand) + +/obj/machinery/hydroponics/constructable/proc/can_be_rotated(mob/user, rotation_type) + return !anchored + /obj/machinery/hydroponics/constructable/RefreshParts() var/tmp_capacity = 0 for (var/obj/item/stock_parts/matter_bin/M in component_parts) @@ -285,7 +293,7 @@ else plant_overlay.icon_state = myseed.icon_harvest else - var/t_growthstate = min(round((age / myseed.maturation) * myseed.growthstages), myseed.growthstages) + var/t_growthstate = clamp(round((age / myseed.maturation) * myseed.growthstages), 1, myseed.growthstages) plant_overlay.icon_state = "[myseed.icon_grow][t_growthstate]" add_overlay(plant_overlay) diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index efd98c4d50..833b2963ad 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -44,18 +44,18 @@ /obj/item/integrated_circuit/output/screen/large/do_work() ..() - if(isliving(assembly.loc))//this whole block just returns if the assembly is neither in a mobs hands or on the ground - var/mob/living/H = assembly.loc - if(H.get_active_held_item() != assembly && H.get_inactive_held_item() != assembly) - return - else - if(!isturf(assembly.loc)) - return - - var/atom/host = assembly || src var/list/mobs = list() - for(var/mob/M in range(0, get_turf(src))) - mobs += M + if(isliving(assembly.loc)) + mobs += assembly.loc + var/mob/living/L = assembly.loc + if(L.is_holding(src)) + for(var/mob/M in range(1, get_turf(src))) + mobs += M + else + for(var/mob/M in range(2, get_turf(src))) + mobs += M + + var/atom/host = assembly || src to_chat(mobs, "[icon2html(host.icon, world, host.icon_state)] flashes a message: [stuff_to_display]") host.investigate_log("displayed \"[html_encode(stuff_to_display)]\" as [type].", INVESTIGATE_CIRCUIT) diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index 0feceaf1a8..b0ac5248c1 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -73,6 +73,31 @@ /// Starting skill modifiers. var/list/starting_modifiers +/** + * Checks if we should be created on a certain map + */ +/datum/job/proc/map_check(datum/map_config/C) + return (length(C.job_whitelist)? (type in C.job_whitelist) : !(type in C.job_blacklist)) + +/** + * Processes map specific overrides + */ +/datum/job/proc/process_map_overrides(datum/map_config/C) + if(type in C.job_override_spawn_positions) + spawn_positions = C.job_override_spawn_positions[type] + if(type in C.job_override_total_positions) + total_positions = C.job_override_total_positions[type] + if(type in C.job_access_override) + access = C.job_access_override[type] + minimal_access = access + else + if(type in C.job_access_add) + access += C.job_access_add[type] + minimal_access += C.job_access_add[type] + if(type in C.job_access_remove) + access -= C.job_access_add[type] + minimal_access -= C.job_access_remove[type] + //Only override this proc //H is usually a human unless an /equip override transformed it /datum/job/proc/after_spawn(mob/living/H, mob/M, latejoin = FALSE) @@ -175,9 +200,6 @@ /datum/job/proc/config_check() return TRUE -/datum/job/proc/map_check() - return TRUE - /datum/job/proc/radio_help_message(mob/M) to_chat(M, "Prefix your message with :h to speak on your department's radio. To see other prefixes, look closely at your headset.") diff --git a/code/modules/jobs/map_changes/map_changes.dm b/code/modules/jobs/map_changes/map_changes.dm deleted file mode 100644 index 575075037b..0000000000 --- a/code/modules/jobs/map_changes/map_changes.dm +++ /dev/null @@ -1,4 +0,0 @@ -//this needs to come after the job_types subfolder to keep the correct ordering - -#include "..\..\..\..\_maps\map_files\PubbyStation\job_changes.dm" -#undef JOB_MODIFICATION_MAP_NAME \ No newline at end of file diff --git a/code/modules/keybindings/bindings_client.dm b/code/modules/keybindings/bindings_client.dm index 3a47cd2315..3d12f89cfe 100644 --- a/code/modules/keybindings/bindings_client.dm +++ b/code/modules/keybindings/bindings_client.dm @@ -1,6 +1,7 @@ // Clients aren't datums so we have to define these procs indpendently. // These verbs are called for all key press and release events /client/verb/keyDown(_key as text) + SHOULD_NOT_SLEEP(TRUE) set instant = TRUE set hidden = TRUE @@ -83,6 +84,7 @@ keyUp("[key]") /client/verb/keyUp(_key as text) + SHOULD_NOT_SLEEP(TRUE) set instant = TRUE set hidden = TRUE diff --git a/code/modules/keybindings/keybind/movement.dm b/code/modules/keybindings/keybind/movement.dm index 176e6b9fb8..cc5798710c 100644 --- a/code/modules/keybindings/keybind/movement.dm +++ b/code/modules/keybindings/keybind/movement.dm @@ -154,7 +154,7 @@ /datum/keybinding/living/toggle_sprint/down(client/user) var/mob/living/L = user.mob - L.default_toggle_sprint(TRUE) + L.default_toggle_sprint() return TRUE /datum/keybinding/mob/toggle_move_intent diff --git a/code/modules/keybindings/setup.dm b/code/modules/keybindings/setup.dm index a53820b5d2..47dbfd855f 100644 --- a/code/modules/keybindings/setup.dm +++ b/code/modules/keybindings/setup.dm @@ -1,12 +1,11 @@ /datum/proc/key_down(key, client/user) // Called when a key is pressed down initially - return + SHOULD_NOT_SLEEP(TRUE) /datum/proc/key_up(key, client/user) // Called when a key is released - return + SHOULD_NOT_SLEEP(TRUE) /datum/proc/keyLoop(client/user) // Called once every frame - set waitfor = FALSE - return + SHOULD_NOT_SLEEP(TRUE) // removes all the existing macros /client/proc/erase_all_macros() diff --git a/code/modules/mapping/map_config.dm b/code/modules/mapping/map_config.dm index c03ef65f43..d18ca1e1e3 100644 --- a/code/modules/mapping/map_config.dm +++ b/code/modules/mapping/map_config.dm @@ -43,6 +43,21 @@ /// Orientation to load in by default. var/orientation = SOUTH //byond defaults to placing everyting SOUTH. + /// Jobs whitelist - if this is not empty, ONLY these jobs are allowed. Overrides blacklist. + var/list/job_whitelist + /// Jobs blacklist - if this is not empty, jobs in this aren't allowed. + var/list/job_blacklist + /// Job spawn position mod - type = number + var/list/job_override_spawn_positions + /// Job total position mod - type = number + var/list/job_override_total_positions + /// Add these accesses to jobs - type = list() + var/list/job_access_add + /// Remove these accesses from jobs - type = list() + var/list/job_access_remove + /// Override job accesses - type = list() - overrides everything else + var/list/job_access_override + /proc/load_map_config(filename = "data/next_map.json", default_to_box, delete_after, error_if_missing = TRUE) var/datum/map_config/config = new if (default_to_box) @@ -161,6 +176,69 @@ allow_custom_shuttles = json["allow_custom_shuttles"] != FALSE + if("job_whitelist" in json) + job_whitelist = list() + for(var/path in json["job_whitelist"]) + var/type = text2path(path) + if(!path) + log_config("map datum [config_filename] failed to validate path [path] in job overrides.") + continue + job_whitelist += type + + if("job_blacklist" in json) + job_blacklist = list() + for(var/path in json["job_blacklist"]) + var/type = text2path(path) + if(!path) + log_config("map datum [config_filename] failed to validate path [path] in job overrides.") + continue + job_blacklist += type + + if("job_override_spawn_positions" in json) + job_override_spawn_positions = list() + for(var/path in json["job_override_spawn_positions"]) + var/type = text2path(path) + if(!path) + log_config("map datum [config_filename] failed to validate path [path] in job overrides.") + continue + job_override_spawn_positions += type + + if("job_override_total_positions" in json) + job_override_total_positions = list() + for(var/path in json["job_override_total_positions"]) + var/type = text2path(path) + if(!path) + log_config("map datum [config_filename] failed to validate path [path] in job overrides.") + continue + job_override_total_positions += type + + if("job_access_add" in json) + job_access_add = list() + for(var/path in json["job_acces_add"]) + var/type = text2path(path) + if(!path) + log_config("map datum [config_filename] failed to validate path [path] in job overrides.") + continue + job_access_add[type] = json["job_access_add"] + + if("job_access_remove" in json) + job_access_remove = list() + for(var/path in json["job_acces_add"]) + var/type = text2path(path) + if(!path) + log_config("map datum [config_filename] failed to validate path [path] in job overrides.") + continue + job_access_remove[type] = json["job_access_remove"] + + if("job_access_override" in json) + job_access_override = list() + for(var/path in json["job_acces_add"]) + var/type = text2path(path) + if(!path) + log_config("map datum [config_filename] failed to validate path [path] in job overrides.") + continue + job_access_override[type] = json["job_access_override"] + defaulted = FALSE return TRUE #undef CHECK_EXISTS @@ -190,6 +268,13 @@ jsonlist["announcertype"] = announcertype jsonlist["orientation"] = orientation jsonlist["allow_custom_shuttles"] = allow_custom_shuttles + jsonlist["job_whitelist"] = job_whitelist + jsonlist["job_blacklist"] = job_blacklist + jsonlist["job_override_spawn_positions"] = job_override_spawn_positions + jsonlist["job_override_total_positions"] = job_override_total_positions + jsonlist["job_access_add"] = job_access_add + jsonlist["job_access_remove"] = job_access_remove + jsonlist["job_access_override"] = job_access_override if(fexists("data/next_map.json")) fdel("data/next_map.json") var/F = file("data/next_map.json") diff --git a/code/modules/mapping/minimaps.dm b/code/modules/mapping/minimaps.dm index e0eb174cb3..51fde1f8db 100644 --- a/code/modules/mapping/minimaps.dm +++ b/code/modules/mapping/minimaps.dm @@ -134,12 +134,13 @@ return num; } window.onload = function() { - var datas = \[[jointext(datas, ",")]] - if(!window.HTMLCanvasElement){ - //something has gone horribly wrong! + if(!window.HTMLCanvasElement) { + var label = document.getElementById("label-1"); + label.textContent = "

WARNING! HTMLCanvasElement not found!

" return false } - for(var i = 0; i < [length(minimaps)]; i++){ + var datas = \[[jointext(datas, ",")]] + for(var i = 0; i < [length(minimaps)]; i++) { //the fuck is this wrapped? var data = datas\[i]; var img = document.getElementById("map-" + (i + 1)); @@ -160,13 +161,16 @@ ctx.drawImage(document.getElementById("map-" + (i+1) + "-meta"), 0, 0); var imagedata = ctx.getImageData(0, 0, img.width, img.height); - var label = document.getElementById("label-" + (i+1)); + canvas.onmousemove = function(e){ var rect = canvas.getBoundingClientRect(); var x = Math.floor(e.offsetX * img.width / rect.width); var y = Math.floor(e.offsetY * img.height / rect.height); + var color_idx = x * 4 + (y * 4 * imagedata.width); var color = "#" + hexify(imagedata.data\[color_idx]) + hexify(imagedata.data\[color_idx+1]) + hexify(imagedata.data\[color_idx+2]); + var label = document.getElementById("label-" + (i+1)); //label-String(n) + label.textContent = data\[color]; canvas.title = data\[color]; } diff --git a/code/modules/mapping/ruins.dm b/code/modules/mapping/ruins.dm index 193106c294..b681c348e0 100644 --- a/code/modules/mapping/ruins.dm +++ b/code/modules/mapping/ruins.dm @@ -135,7 +135,12 @@ //That's done remove from priority even if it failed if(forced) //TODO : handle forced ruins with multiple variants + // this might work? forced_ruins -= current_pick + if(!current_pick.allow_duplicates) + for(var/datum/map_template/ruin/R in forced_ruins) + if(R.id == current_pick.id) + forced_ruins -= R forced = FALSE if(failed_to_place) diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index c69e990033..30a933db39 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -11,8 +11,8 @@ /obj/item/survivalcapsule name = "bluespace shelter capsule" desc = "An emergency shelter stored within a pocket of bluespace." - icon_state = "capsule" icon = 'icons/obj/mining.dmi' + icon_state = "capsule" w_class = WEIGHT_CLASS_TINY var/template_id = "shelter_alpha" var/datum/map_template/shelter/template @@ -72,9 +72,10 @@ /obj/item/survivalcapsule/luxury name = "luxury bluespace shelter capsule" desc = "An exorbitantly expensive luxury suite stored within a pocket of bluespace." + icon_state = "capsule-lux" template_id = "shelter_beta" -/obj/item/survivalcapsule/luxuryelite +/obj/item/survivalcapsule/luxury/elitebar name = "luxury elite bar capsule" desc = "A luxury bar in a capsule. Bartender required and not included." template_id = "shelter_charlie" diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 2cbb965ef5..ec6a430c0c 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -42,7 +42,7 @@ new /datum/data/mining_equipment("Fulton Pack", /obj/item/extraction_pack, 1000), new /datum/data/mining_equipment("Lazarus Injector", /obj/item/lazarus_injector, 1000), new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/pickaxe/silver, 1000), - new /datum/data/mining_equipment("Mining Conscription Kit", /obj/item/storage/backpack/duffelbag/mining_conscript, 1000), + new /datum/data/mining_equipment("Mining Conscription Kit", /obj/item/storage/backpack/duffelbag/mining/conscript, 1000), new /datum/data/mining_equipment("1000 Point Transfer Card", /obj/item/card/mining_point_card/mp1000, 1000), new /datum/data/mining_equipment("1500 Point Transfer Card", /obj/item/card/mining_point_card/mp1500, 1500), new /datum/data/mining_equipment("2000 Point Transfer Card", /obj/item/card/mining_point_card/mp2000, 2000), @@ -55,7 +55,7 @@ new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500), new /datum/data/mining_equipment("Ice hiking boots", /obj/item/clothing/shoes/winterboots/ice_boots, 2500), new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000), - new /datum/data/mining_equipment("Luxury Bar Capsule", /obj/item/survivalcapsule/luxuryelite, 10000), + new /datum/data/mining_equipment("Luxury Bar Capsule", /obj/item/survivalcapsule/luxury/elitebar, 10000), new /datum/data/mining_equipment("Nanotrasen Minebot", /mob/living/simple_animal/hostile/mining_drone, 800), new /datum/data/mining_equipment("Minebot Melee Upgrade", /obj/item/mine_bot_upgrade, 400), new /datum/data/mining_equipment("Minebot Armor Upgrade", /obj/item/mine_bot_upgrade/health, 400), @@ -70,9 +70,10 @@ new /datum/data/mining_equipment("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000), new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000), new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000), - new /datum/data/mining_equipment("Miner Full Replacement", /obj/item/storage/backpack/duffelbag/mining_cloned, 3000), + new /datum/data/mining_equipment("Miner Full Replacement", /obj/item/storage/backpack/duffelbag/mining/cloned, 3000), new /datum/data/mining_equipment("Premium Accelerator", /obj/item/gun/energy/kinetic_accelerator/premiumka, 8000), - new /datum/data/mining_equipment("Kinetic Glaive", /obj/item/kinetic_crusher/glaive, 2250), + new /datum/data/mining_equipment("Kinetic Glaive Kit", /obj/item/storage/backpack/duffelbag/mining/glaivekit, 2250), + new /datum/data/mining_equipment("Survival Dagger", /obj/item/kitchen/knife/combat/survival/knuckledagger, 550), ) /datum/data/mining_equipment @@ -222,7 +223,7 @@ new /obj/item/extinguisher/mini(drop_location) new /obj/item/kinetic_crusher(drop_location) if("Mining Conscription Kit") - new /obj/item/storage/backpack/duffelbag/mining_conscript(drop_location) + new /obj/item/storage/backpack/duffelbag/mining/conscript(drop_location) SSblackbox.record_feedback("tally", "mining_voucher_redeemed", 1, selection) qdel(voucher) @@ -328,11 +329,11 @@ to_chat(user, "You upgrade [I] with mining access.") qdel(src) -/obj/item/storage/backpack/duffelbag/mining_conscript +/obj/item/storage/backpack/duffelbag/mining/conscript name = "mining conscription kit" desc = "A kit containing everything a crewmember needs to support a shaft miner in the field." -/obj/item/storage/backpack/duffelbag/mining_conscript/PopulateContents() +/obj/item/storage/backpack/duffelbag/mining/conscript/PopulateContents() new /obj/item/pickaxe/mini(src) new /obj/item/clothing/glasses/meson(src) new /obj/item/t_scanner/adv_mining_scanner/lesser(src) @@ -347,11 +348,11 @@ //CITADEL ADDITIONS BELOW -/obj/item/storage/backpack/duffelbag/mining_cloned +/obj/item/storage/backpack/duffelbag/mining/cloned name = "mining replacement kit" - desc = "A large bag that has advance tools and a spare jumpsuit, boots, and gloves for a newly cloned miner to get back in the field. Even has a new ID!" + desc = "A large bag that has advanced tools and a spare jumpsuit, boots, and gloves for a newly cloned miner to get back in the field. Even has a new ID!" -/obj/item/storage/backpack/duffelbag/mining_cloned/PopulateContents() +/obj/item/storage/backpack/duffelbag/mining/cloned/PopulateContents() new /obj/item/pickaxe/mini(src) new /obj/item/clothing/under/rank/cargo/miner/lavaland(src) new /obj/item/clothing/shoes/workboots/mining(src) @@ -369,6 +370,12 @@ new /obj/item/storage/bag/ore(src) new /obj/item/clothing/glasses/meson/prescription(src) +/obj/item/storage/backpack/duffelbag/mining/glaivekit + +/obj/item/storage/backpack/duffelbag/mining/glaivekit/PopulateContents() + new /obj/item/kinetic_crusher/glaive(src) + new /obj/item/kitchen/knife/combat/survival/knuckledagger(src) + /obj/machinery/mineral/equipment_vendor/proc/RedeemSVoucher(obj/item/suit_voucher/voucher, mob/redeemer) var/items = list( "Exo-suit" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "exo"), "SEVA suit" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "seva")) diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index c3c0787aa8..2e1ffe718f 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -26,7 +26,8 @@ features = random_features(pref_species?.id, gender) age = rand(AGE_MIN,AGE_MAX) -/datum/preferences/proc/update_preview_icon(equip_job = TRUE) +/datum/preferences/proc/update_preview_icon(current_tab) + var/equip_job = (current_tab != 2) // Determine what job is marked as 'High' priority, and dress them up as such. var/datum/job/previewJob = get_highest_job() @@ -45,9 +46,13 @@ mannequin.add_overlay(mutable_appearance('modular_citadel/icons/ui/backgrounds.dmi', bgstate, layer = SPACE_LAYER)) copy_to(mannequin, initial_spawn = TRUE) - if(previewJob && equip_job) - mannequin.job = previewJob.title - previewJob.equip(mannequin, TRUE, preference_source = parent) + if(current_tab == 3) + //give it its loadout if not on the appearance tab + SSjob.equip_loadout(parent.mob, mannequin, FALSE, bypass_prereqs = TRUE, can_drop = FALSE) + else + if(previewJob && equip_job) + mannequin.job = previewJob.title + previewJob.equip(mannequin, TRUE, preference_source = parent) COMPILE_OVERLAYS(mannequin) parent.show_character_previews(new /mutable_appearance(mannequin)) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/hair_face.dm b/code/modules/mob/dead/new_player/sprite_accessories/hair_face.dm index a07fdaa5d3..23b1f87bd2 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/hair_face.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/hair_face.dm @@ -2,7 +2,7 @@ // Facial Hair Definitions // ///////////////////////////// /datum/sprite_accessory/facial_hair - icon = 'icons/mob/human_face.dmi' + icon = 'icons/mob/hair.dmi' gender = MALE // barf (unless you're a dorf, dorfs dig chix w/ beards :P) // please make sure they're sorted alphabetically and categorized diff --git a/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm b/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm index 8e4e6ad617..55ab18c20c 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm @@ -2,7 +2,7 @@ // Hair Definitions // ////////////////////// /datum/sprite_accessory/hair - icon = 'icons/mob/human_face.dmi' // default icon for all hairs + icon = 'icons/mob/hair.dmi' // default icon for all hairs // please make sure they're sorted alphabetically and, where needed, categorized // try to capitalize the names please~ diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index e1d078c632..0c57c13e3f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -408,7 +408,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(mind.current.key && mind.current.key[1] != "@") //makes sure we don't accidentally kick any clients to_chat(usr, "Another consciousness is in your body...It is resisting you.") return - client.change_view(CONFIG_GET(string/default_view)) + client.view_size.setDefault(getScreenSize(client.prefs.widescreenpref))//Let's reset so people can't become allseeing gods transfer_ckey(mind.current, FALSE) SStgui.on_transfer(src, mind.current) // Transfer NanoUIs. mind.current.client.init_verbs() @@ -568,15 +568,15 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set desc = "Change your view range." var/max_view = client.prefs.unlock_content ? GHOST_MAX_VIEW_RANGE_MEMBER : GHOST_MAX_VIEW_RANGE_DEFAULT - if(client.view == CONFIG_GET(string/default_view)) + if(client.view_size.getView() == client.view_size.default) var/list/views = list() for(var/i in 7 to max_view) views |= i - var/new_view = input("Choose your new view", "Modify view range", 7) as null|anything in views + var/new_view = input("Choose your new view", "Modify view range", 0) as null|anything in views if(new_view) - client.change_view(clamp(new_view, 7, max_view)) + client.view_size.setTo(clamp(new_view, 7, max_view) - 7) else - client.change_view(CONFIG_GET(string/default_view)) + client.view_size.resetToDefault() /mob/dead/observer/verb/add_view_range(input as num) set name = "Add View Range" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 1706763f6b..26486f255a 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -191,8 +191,8 @@ if(HAS_TRAIT(src, TRAIT_PACIFISM)) to_chat(src, "You gently let go of [throwable_mob].") return - - adjustStaminaLossBuffered(STAM_COST_THROW_MOB * ((throwable_mob.mob_size+1)**2))// throwing an entire person shall be very tiring + if(!UseStaminaBuffer(STAM_COST_THROW_MOB * ((throwable_mob.mob_size+1)**2), TRUE)) + return var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) if(start_T && end_T) @@ -206,7 +206,8 @@ to_chat(src, "You set [I] down gently on the ground.") return - adjustStaminaLossBuffered(I.getweight(src, STAM_COST_THROW_MULT, SKILL_THROW_STAM_COST)) + if(!UseStaminaBuffer(I.getweight(src, STAM_COST_THROW_MULT, SKILL_THROW_STAM_COST), warn = TRUE)) + return if(thrown_thing) var/power_throw = 0 @@ -594,15 +595,23 @@ remove_movespeed_modifier(/datum/movespeed_modifier/carbon_softcrit) /mob/living/carbon/update_stamina() - var/stam = getStaminaLoss() - if(stam > DAMAGE_PRECISION) - var/total_health = (maxHealth - stam) - if(total_health <= crit_threshold && !stat) - if(CHECK_MOBILITY(src, MOBILITY_STAND)) - to_chat(src, "You're too exhausted to keep going...") - KnockToFloor(TRUE) - update_health_hud() - + var/total_health = getStaminaLoss() + if(total_health) + if(!(combat_flags & COMBAT_FLAG_HARD_STAMCRIT) && total_health >= STAMINA_CRIT && !stat) + to_chat(src, "You're too exhausted to keep going...") + set_resting(TRUE, FALSE, FALSE) + SEND_SIGNAL(src, COMSIG_DISABLE_COMBAT_MODE) + ENABLE_BITFIELD(combat_flags, COMBAT_FLAG_HARD_STAMCRIT) + filters += CIT_FILTER_STAMINACRIT + update_mobility() + if((combat_flags & COMBAT_FLAG_HARD_STAMCRIT) && total_health <= STAMINA_CRIT) + to_chat(src, "You don't feel nearly as exhausted anymore.") + DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_HARD_STAMCRIT) + filters -= CIT_FILTER_STAMINACRIT + update_mobility() + UpdateStaminaBuffer() + update_health_hud() + /mob/living/carbon/update_sight() if(!client) return @@ -979,30 +988,15 @@ O.held_index = r_arm_index_next //2, 4, 6, 8... hand_bodyparts += O -/mob/living/carbon/do_after_coefficent() - . = ..() - var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) //Currently, only carbons or higher use mood, move this once that changes. - if(mood) - switch(mood.sanity) //Alters do_after delay based on how sane you are - if(SANITY_INSANE to SANITY_DISTURBED) - . *= 1.25 - if(SANITY_NEUTRAL to SANITY_GREAT) - . *= 0.90 - - for(var/i in status_effects) - var/datum/status_effect/S = i - . *= S.interact_speed_modifier() - - /mob/living/carbon/proc/create_internal_organs() for(var/X in internal_organs) var/obj/item/organ/I = X I.Insert(src) -/mob/living/carbon/proc/update_disabled_bodyparts() +/mob/living/carbon/proc/update_disabled_bodyparts(silent = FALSE) for(var/B in bodyparts) var/obj/item/bodypart/BP = B - BP.update_disabled() + BP.update_disabled(silent) /mob/living/carbon/vv_get_dropdown() . = ..() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index ce6aa71f67..710d49c075 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -254,10 +254,10 @@ if(href_list["pockets"]) var/strip_mod = 1 var/strip_silence = FALSE - var/obj/item/clothing/gloves/g = gloves - if (istype(g)) - strip_mod = g.strip_mod - strip_silence = g.strip_silence + var/obj/item/clothing/gloves/G = gloves + if(istype(G)) + strip_mod = G.strip_mod + strip_silence = G.strip_silence var/pocket_side = href_list["pockets"] var/pocket_id = (pocket_side == "right" ? SLOT_R_STORE : SLOT_L_STORE) var/obj/item/pocket_item = (pocket_id == SLOT_R_STORE ? r_store : l_store) @@ -805,7 +805,7 @@ hud_used.healthdoll.icon_state = "healthdoll_DEAD" hud_used.staminas?.update_icon_state() - hud_used.staminabuffer?.update_icon_state() + hud_used.staminabuffer?.mark_dirty() /mob/living/carbon/human/fully_heal(admin_revive = FALSE) if(admin_revive) @@ -1044,9 +1044,9 @@ remove_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown) remove_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown_flying) return - var/stambufferinfluence = (bufferedstam*(100/stambuffer))*0.2 //CIT CHANGE - makes stamina buffer influence movedelay if(!HAS_TRAIT(src, TRAIT_IGNOREDAMAGESLOWDOWN)) //if we want to ignore slowdown from damage, but not from equipment - var/health_deficiency = ((maxHealth + stambufferinfluence) - health + (getStaminaLoss()*0.75))//CIT CHANGE - reduces the impact of staminaloss and makes stamina buffer influence it + var/scaling = maxHealth / 100 + var/health_deficiency = ((maxHealth / scaling) - (health / scaling) + (getStaminaLoss()*0.75))//CIT CHANGE - reduces the impact of staminaloss and makes stamina buffer influence it if(health_deficiency >= 40) add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown, TRUE, (health_deficiency-39) / 75) add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown_flying, TRUE, (health_deficiency-39) / 25) @@ -1057,11 +1057,6 @@ remove_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown) remove_movespeed_modifier(/datum/movespeed_modifier/damage_slowdown_flying) - -/mob/living/carbon/human/do_after_coefficent() - . = ..() - . *= physiology.do_after_speed - /mob/living/carbon/human/is_bleeding() if(NOBLOOD in dna.species.species_traits || bleedsuppress) return FALSE diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index a6a3f408dc..89a4570e8d 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -7,7 +7,7 @@ buckle_lying = FALSE mob_biotypes = MOB_ORGANIC|MOB_HUMANOID /// Enable stamina combat - combat_flags = COMBAT_FLAGS_DEFAULT | COMBAT_FLAG_UNARMED_PARRY + combat_flags = COMBAT_FLAGS_STAMINA_COMBAT | COMBAT_FLAG_UNARMED_PARRY status_flags = CANSTUN|CANKNOCKDOWN|CANUNCONSCIOUS|CANPUSH|CANSTAGGER has_field_of_vision = FALSE //Handled by species. diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index bcb658eab8..97c40c96d7 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -11,11 +11,6 @@ /mob/living/carbon/human/movement_delay() . = ..() - if(CHECK_MOBILITY(src, MOBILITY_STAND) && m_intent == MOVE_INTENT_RUN && (combat_flags & COMBAT_FLAG_SPRINT_ACTIVE)) - var/static/datum/config_entry/number/movedelay/sprint_speed_increase/SSI - if(!SSI) - SSI = CONFIG_GET_ENTRY(number/movedelay/sprint_speed_increase) - . -= SSI.config_entry_value if (m_intent == MOVE_INTENT_WALK && HAS_TRAIT(src, TRAIT_SPEEDY_STEP)) . -= 1.5 @@ -61,7 +56,11 @@ HM.on_move(NewLoc) if(. && (combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) && !(movement_type & FLYING) && CHECK_ALL_MOBILITY(src, MOBILITY_MOVE|MOBILITY_STAND) && m_intent == MOVE_INTENT_RUN && has_gravity(loc) && (!pulledby || (pulledby.pulledby == src))) if(!HAS_TRAIT(src, TRAIT_FREESPRINT)) - doSprintLossTiles(1) + var/datum/movespeed_modifier/equipment_speedmod/MM = get_movespeed_modifier_datum(/datum/movespeed_modifier/equipment_speedmod) + var/amount = 1 + if(MM?.multiplicative_slowdown >= 1) + amount *= (1 + (6 - (3 / MM.multiplicative_slowdown))) + doSprintLossTiles(amount) if((oldpseudoheight - pseudo_z_axis) >= 8) to_chat(src, "You trip off of the elevated surface!") for(var/obj/item/I in held_items) @@ -101,3 +100,8 @@ if(dna.species.space_move(src)) return TRUE return ..() + +/mob/living/carbon/human/CanPass(atom/movable/mover, turf/target) + if(dna.species.species_pass_check()) + return TRUE + return ..() diff --git a/code/modules/mob/living/carbon/human/physiology.dm b/code/modules/mob/living/carbon/human/physiology.dm index fd0df0bde9..22c197f7de 100644 --- a/code/modules/mob/living/carbon/human/physiology.dm +++ b/code/modules/mob/living/carbon/human/physiology.dm @@ -23,8 +23,6 @@ var/hunger_mod = 1 //% of hunger rate taken per tick. - var/do_after_speed = 1 //Speed mod for do_after. Lower is better. If temporarily adjusting, please only modify using *= and /=, so you don't interrupt other calculations. - /// footstep type override for both shoeless and not footstep sounds. var/footstep_type diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 6161d0582c..d445274f36 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -64,7 +64,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/stunmod = 1 // multiplier for stun duration var/punchdamagelow = 1 //lowest possible punch damage. if this is set to 0, punches will always miss var/punchdamagehigh = 10 //highest possible punch damage - var/punchstunthreshold = 10//damage at which punches from this race will stun //yes it should be to the attacked race but it's not useful that way even if it's logical + var/punchstunthreshold = 10 //damage at which punches from this race will stun //yes it should be to the attacked race but it's not useful that way even if it's logical + var/punchwoundbonus = 0 // additional wound bonus. generally zero. var/siemens_coeff = 1 //base electrocution coefficient var/damage_overlay_type = "human" //what kind of damage overlays (if any) appear on our species when wounded? var/fixed_mut_color = "" //to use MUTCOLOR with a fixed color that's independent of dna.feature["mcolor"] @@ -106,7 +107,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/whitelisted = 0 //Is this species restricted to certain players? var/whitelist = list() //List the ckeys that can use this species, if it's whitelisted.: list("John Doe", "poopface666", "SeeALiggerPullTheTrigger") Spaces & capitalization can be included or ignored entirely for each key as it checks for both. var/icon_limbs //Overrides the icon used for the limbs of this species. Mainly for downstream, and also because hardcoded icons disgust me. Implemented and maintained as a favor in return for a downstream's implementation of synths. - var/species_type + var/species_category var/tail_type //type of tail i.e. mam_tail var/wagging_type //type of wagging i.e. waggingtail_lizard @@ -118,6 +119,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/list/allowed_limb_ids var/override_bp_icon //override for the icon path used when setting bodypart overlays. Intended for species that don't fit in the standard 32x32 files. + //the type of eyes this species has + var/eye_type = "normal" /////////// // PROCS // @@ -514,7 +517,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/mutable_appearance/hair_overlay = mutable_appearance(layer = -HAIR_LAYER) if(!hair_hidden && !H.getorgan(/obj/item/organ/brain)) //Applies the debrained overlay if there is no brain if(!(NOBLOOD in species_traits)) - hair_overlay.icon = 'icons/mob/human_face.dmi' + hair_overlay.icon = 'icons/mob/hair.dmi' hair_overlay.icon_state = "debrained" else if(H.hair_style && (HAIR in species_traits)) @@ -573,7 +576,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(HD && !(HAS_TRAIT(H, TRAIT_HUSK))) // lipstick if(H.lip_style && (LIPS in species_traits)) - var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/human_face.dmi', "lips_[H.lip_style]", -BODY_LAYER) + var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/lips.dmi', "lips_[H.lip_style]", -BODY_LAYER) lip_overlay.color = H.lip_color if(OFFSET_LIPS in H.dna.species.offset_features) @@ -586,10 +589,15 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(!(NOEYES in species_traits)) var/has_eyes = H.getorganslot(ORGAN_SLOT_EYES) if(!has_eyes) - standing += mutable_appearance('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER) + standing += mutable_appearance('icons/mob/eyes.dmi', "eyes_missing", -BODY_LAYER) else - var/mutable_appearance/left_eye = mutable_appearance('icons/mob/human_face.dmi', "left_eye", -BODY_LAYER) - var/mutable_appearance/right_eye = mutable_appearance('icons/mob/human_face.dmi', "right_eye", -BODY_LAYER) + var/left_state = DEFAULT_LEFT_EYE_STATE + var/right_state = DEFAULT_RIGHT_EYE_STATE + if(eye_type in GLOB.eye_types) + left_state = eye_type + "_left_eye" + right_state = eye_type + "_right_eye" + var/mutable_appearance/left_eye = mutable_appearance('icons/mob/eyes.dmi', left_state, -BODY_LAYER) + var/mutable_appearance/right_eye = mutable_appearance('icons/mob/eyes.dmi', right_state, -BODY_LAYER) if((EYECOLOR in species_traits) && has_eyes) left_eye.color = "#" + H.left_eye_color right_eye.color = "#" + H.right_eye_color @@ -1357,9 +1365,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(!(attackchain_flags & ATTACK_IS_PARRY_COUNTERATTACK)) if(HAS_TRAIT(user, TRAIT_PUGILIST))//CITADEL CHANGE - makes punching cause staminaloss but funny martial artist types get a discount - user.adjustStaminaLossBuffered(1.5) - else - user.adjustStaminaLossBuffered(3.5) + if(!user.UseStaminaBuffer(1.5, warn = TRUE)) + return + else if(!user.UseStaminaBuffer(3.5, warn = TRUE)) + return if(attacker_style && attacker_style.harm_act(user,target)) return TRUE @@ -1380,6 +1389,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) user.do_attack_animation(target, ATTACK_EFFECT_PUNCH) var/damage = rand(user.dna.species.punchdamagelow, user.dna.species.punchdamagehigh) + var/punchwoundbonus = user.dna.species.punchwoundbonus var/puncherstam = user.getStaminaLoss() var/puncherbrute = user.getBruteLoss() var/punchedstam = target.getStaminaLoss() @@ -1395,6 +1405,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) //END OF CITADEL CHANGES var/obj/item/bodypart/affecting = target.get_bodypart(ran_zone(user.zone_selected)) + if(HAS_TRAIT(user, TRAIT_PUGILIST)) + affecting = target.get_bodypart(check_zone(user.zone_selected)) // if you're going the based unarmed route you won't miss if(!affecting) //Maybe the bodypart is missing? Or things just went wrong.. affecting = target.get_bodypart(BODY_ZONE_CHEST) //target chest instead, as failsafe. Or hugbox? You decide. @@ -1406,8 +1418,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(user.dna.species.punchdamagelow) if(atk_verb == ATTACK_EFFECT_KICK) //kicks never miss (provided your species deals more than 0 damage) miss_chance = 0 - else if(HAS_TRAIT(user, TRAIT_PUGILIST)) //pugilists have a flat 10% miss chance - miss_chance = 10 + else if(HAS_TRAIT(user, TRAIT_PUGILIST)) //pugilists, being good at Punching People, also never miss + miss_chance = 0 else miss_chance = min(10 + max(puncherstam * 0.5, puncherbrute * 0.5), 100) //probability of miss has a base of 10, and modified based on half brute total. Capped at max 100 to prevent weirdness in prob() @@ -1421,12 +1433,13 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/armor_block = target.run_armor_check(affecting, "melee") + if(HAS_TRAIT(user, TRAIT_MAULER)) // maulers get 15 armorpierce because if you're going to punch someone you might as well do a good job of it + armor_block = target.run_armor_check(affecting, "melee", armour_penetration = 15) // lot of good that sec jumpsuit did you playsound(target.loc, user.dna.species.attack_sound, 25, 1, -1) - - target.visible_message("[user] [atk_verb]s [target]!", \ - "[user] [atk_verb]s you!", null, COMBAT_MESSAGE_RANGE, null, \ - user, "You [atk_verb] [target]!") + target.visible_message("[user] [atk_verb]ed [target]!", \ + "[user] [atk_verb]ed you!", null, COMBAT_MESSAGE_RANGE, null, \ + user, "You [atk_verb]ed [target]!") target.lastattacker = user.real_name target.lastattackerckey = user.ckey @@ -1436,11 +1449,15 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) target.dismembering_strike(user, affecting.body_zone) if(atk_verb == ATTACK_EFFECT_KICK)//kicks deal 1.5x raw damage + 0.5x stamina damage - target.apply_damage(damage*1.5, attack_type, affecting, armor_block) + target.apply_damage(damage*1.5, attack_type, affecting, armor_block, wound_bonus = punchwoundbonus) target.apply_damage(damage*0.5, STAMINA, affecting, armor_block) log_combat(user, target, "kicked") - else//other attacks deal full raw damage + 2x in stamina damage - target.apply_damage(damage, attack_type, affecting, armor_block) + else if(HAS_TRAIT(user, TRAIT_MAULER)) // mauler punches deal 1.3x raw damage + 1x stam damage, and have some armor pierce + target.apply_damage(damage*1.3, attack_type, affecting, armor_block, wound_bonus = punchwoundbonus) + target.apply_damage(damage, STAMINA, affecting, armor_block) + log_combat(user, target, "punched (mauler)") + else //other attacks deal full raw damage + 2x in stamina damage + target.apply_damage(damage, attack_type, affecting, armor_block, wound_bonus = punchwoundbonus) target.apply_damage(damage*2, STAMINA, affecting, armor_block) log_combat(user, target, "punched") @@ -1490,6 +1507,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return FALSE else if(aim_for_mouth && ( target_on_help || target_restrained || target_aiming_for_mouth)) + if(!user.UseStaminaBuffer(3, warn = TRUE)) + return playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1) target.visible_message(\ @@ -1497,7 +1516,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) "[user] slaps you in the face! ",\ "You hear a slap.", target = user, target_message = "You slap [user == target ? "yourself" : "\the [target]"] in the face! ") user.do_attack_animation(target, ATTACK_EFFECT_FACE_SLAP) - user.adjustStaminaLossBuffered(3) if (!HAS_TRAIT(target, TRAIT_PERMABONER)) stop_wagging_tail(target) return FALSE @@ -1505,8 +1523,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(target.client?.prefs.cit_toggles & NO_ASS_SLAP) to_chat(user,"A force stays your hand, preventing you from slapping \the [target]'s ass!") return FALSE + if(!user.UseStaminaBuffer(3, warn = TRUE)) + return FALSE user.do_attack_animation(target, ATTACK_EFFECT_ASS_SLAP) - user.adjustStaminaLossBuffered(3) target.adjust_arousal(20,maso = TRUE) if (ishuman(target) && HAS_TRAIT(target, TRAIT_MASO) && target.has_dna() && prob(10)) target.mob_climax(forced_climax=TRUE) @@ -1524,9 +1543,11 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) user.do_attack_animation(target, ATTACK_EFFECT_DISARM) if(HAS_TRAIT(user, TRAIT_PUGILIST))//CITADEL CHANGE - makes disarmspam cause staminaloss, pugilists can do it almost effortlessly - user.adjustStaminaLossBuffered(1) + if(!user.UseStaminaBuffer(1, warn = TRUE)) + return else - user.adjustStaminaLossBuffered(3) + if(!user.UseStaminaBuffer(1, warn = TRUE)) + return if(attacker_style && attacker_style.disarm_act(user,target)) return TRUE @@ -1762,9 +1783,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(CHECK_MOBILITY(user, MOBILITY_STAND)) to_chat(user, "You can only force yourself up if you're on the ground.") return + if(!user.UseStaminaBuffer(STAMINA_COST_SHOVE_UP, TRUE)) + return user.visible_message("[user] forces [p_them()]self up to [p_their()] feet!", "You force yourself up to your feet!") user.set_resting(FALSE, TRUE) - user.adjustStaminaLossBuffered(user.stambuffer) //Rewards good stamina management by making it easier to instantly get up from resting playsound(user, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) /datum/species/proc/altdisarm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) @@ -1783,8 +1805,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) else if(user == target) return + if(!user.UseStaminaBuffer(4, warn = TRUE)) + return user.do_attack_animation(target, ATTACK_EFFECT_DISARM) - user.adjustStaminaLossBuffered(4) playsound(target, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) if(target.w_uniform) @@ -1941,6 +1964,14 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(HAS_BONE in species_traits) . |= BIO_JUST_BONE +//a check for if you should render any overlays or not +/datum/species/proc/should_render(mob/living/carbon/human/H) + return TRUE + +//a check for if you want to forcibly make CanPass return TRUE for the mob with this species +/datum/species/proc/species_pass_check() + return FALSE + ///////////// //BREATHING// ///////////// diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductor.dm similarity index 90% rename from code/modules/mob/living/carbon/human/species_types/abductors.dm rename to code/modules/mob/living/carbon/human/species_types/abductor.dm index 38e10e8662..004ba267e8 100644 --- a/code/modules/mob/living/carbon/human/species_types/abductors.dm +++ b/code/modules/mob/living/carbon/human/species_types/abductor.dm @@ -1,12 +1,12 @@ /datum/species/abductor name = "Abductor" - id = "abductor" + id = SPECIES_ABDUCTOR say_mod = "gibbers" sexes = FALSE species_traits = list(NOBLOOD,NOEYES,NOGENITALS,NOAROUSAL,HAS_FLESH,HAS_BONE) inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_CHUNKYFINGERS,TRAIT_NOHUNGER,TRAIT_NOBREATH) mutanttongue = /obj/item/organ/tongue/abductor - species_type = "alien" + species_category = SPECIES_CATEGORY_ALIEN /datum/species/abductor/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/android.dm b/code/modules/mob/living/carbon/human/species_types/android.dm index 5d43d18429..7f755ce027 100644 --- a/code/modules/mob/living/carbon/human/species_types/android.dm +++ b/code/modules/mob/living/carbon/human/species_types/android.dm @@ -1,6 +1,6 @@ /datum/species/android name = "Android" - id = "android" + id = SPECIES_ANDROID say_mod = "states" species_traits = list(NOBLOOD,NOGENITALS,NOAROUSAL,ROBOTIC_LIMBS) inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_NOFIRE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_LIMBATTACHMENT) @@ -11,7 +11,7 @@ mutanttongue = /obj/item/organ/tongue/robot species_language_holder = /datum/language_holder/synthetic limbs_id = "synth" - species_type = "robotic" + species_category = SPECIES_CATEGORY_ROBOT /datum/species/android/on_species_gain(mob/living/carbon/C) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index 3cae574a90..9c87f3ad5d 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -1,6 +1,6 @@ /datum/species/angel name = "Angel" - id = "angel" + id = SPECIES_ANGEL default_color = "FFFFFF" species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,HAS_FLESH,HAS_BONE) mutant_bodyparts = list("tail_human" = "None", "ears" = "None", "wings" = "Angel") @@ -9,7 +9,7 @@ blacklisted = 1 limbs_id = "human" skinned_type = /obj/item/stack/sheet/animalhide/human - species_type = "human" //they're a kind of human + species_category = SPECIES_CATEGORY_BASIC //they're a kind of human var/datum/action/innate/flight/fly diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/anthromorph.dm similarity index 87% rename from code/modules/mob/living/carbon/human/species_types/furrypeople.dm rename to code/modules/mob/living/carbon/human/species_types/anthromorph.dm index 534536d6e7..95aec26d9f 100644 --- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/anthromorph.dm @@ -1,6 +1,6 @@ /datum/species/mammal name = "Anthromorph" - id = "mammal" + id = SPECIES_MAMMAL default_color = "4B4B4B" species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,HORNCOLOR,WINGCOLOR,HAS_FLESH,HAS_BONE) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BEAST @@ -15,6 +15,6 @@ tail_type = "mam_tail" wagging_type = "mam_waggingtail" - species_type = "furry" + species_category = SPECIES_CATEGORY_FURRY - allowed_limb_ids = list("mammal","aquatic","avian") \ No newline at end of file + allowed_limb_ids = list("mammal","aquatic","avian") diff --git a/code/modules/mob/living/carbon/human/species_types/bugmen.dm b/code/modules/mob/living/carbon/human/species_types/bugmen.dm index 16b371c772..773651d464 100644 --- a/code/modules/mob/living/carbon/human/species_types/bugmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/bugmen.dm @@ -1,6 +1,6 @@ /datum/species/insect name = "Anthromorphic Insect" - id = "insect" + id = SPECIES_INSECT say_mod = "chitters" default_color = "00FF00" species_traits = list(LIPS,EYECOLOR,HAIR,FACEHAIR,MUTCOLORS,HORNCOLOR,WINGCOLOR,HAS_FLESH,HAS_BONE) @@ -18,6 +18,8 @@ tail_type = "mam_tail" wagging_type = "mam_waggingtail" - species_type = "insect" + species_category = SPECIES_CATEGORY_INSECT allowed_limb_ids = list("insect","apid","moth","moth_not_greyscale") + + eye_type = "insect" diff --git a/code/modules/mob/living/carbon/human/species_types/corporate.dm b/code/modules/mob/living/carbon/human/species_types/corporate.dm index a2597ed286..e9baa786da 100644 --- a/code/modules/mob/living/carbon/human/species_types/corporate.dm +++ b/code/modules/mob/living/carbon/human/species_types/corporate.dm @@ -18,4 +18,4 @@ inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOLIMBDISABLE,TRAIT_NOHUNGER) sexes = 0 gib_types = /obj/effect/gibspawner/robot - species_type = "robotic" \ No newline at end of file + species_category = SPECIES_CATEGORY_ROBOT diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index f3b499093b..f756fd8816 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -1,6 +1,6 @@ /datum/species/dullahan name = "Dullahan" - id = "dullahan" + id = SPECIES_DULLAHAN default_color = "FFFFFF" species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,HAS_FLESH,HAS_BONE) inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH) @@ -14,7 +14,7 @@ limbs_id = "human" skinned_type = /obj/item/stack/sheet/animalhide/human has_field_of_vision = FALSE //Too much of a trouble, their vision is already bound to their severed head. - species_type = "undead" + species_category = SPECIES_CATEGORY_UNDEAD var/pumpkin = FALSE var/obj/item/dullahan_relay/myhead diff --git a/code/modules/mob/living/carbon/human/species_types/dwarves.dm b/code/modules/mob/living/carbon/human/species_types/dwarves.dm index a465e7c3a9..ce67a947de 100644 --- a/code/modules/mob/living/carbon/human/species_types/dwarves.dm +++ b/code/modules/mob/living/carbon/human/species_types/dwarves.dm @@ -4,7 +4,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // /datum/species/dwarf //not to be confused with the genetic manlets name = "Dwarf" - id = "dwarf" //Also called Homo sapiens pumilionis + id = SPECIES_DWARF //Also called Homo sapiens pumilionis default_color = "FFFFFF" species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,HAS_FLESH,HAS_BONE) inherent_traits = list(TRAIT_DWARF,TRAIT_SNOB) @@ -18,7 +18,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // mutant_organs = list(/obj/item/organ/dwarfgland) //Dwarven alcohol gland, literal gland warrior mutantliver = /obj/item/organ/liver/dwarf //Dwarven super liver (Otherwise they r doomed) species_language_holder = /datum/language_holder/dwarf - species_type = "human" //a kind of human + species_category = SPECIES_CATEGORY_BASIC //a kind of human /mob/living/carbon/human/species/dwarf //species admin spawn path race = /datum/species/dwarf //and the race the path is set to. diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm index c182defda4..d92f4ab14a 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -2,7 +2,7 @@ /datum/species/ethereal name = "Ethereal" - id = "ethereal" + id = SPECIES_ETHEREAL attack_verb = "burn" attack_sound = 'sound/weapons/etherealhit.ogg' miss_sound = 'sound/weapons/etherealmiss.ogg' diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index b760fd0aee..011b6b7642 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -1,7 +1,7 @@ //Subtype of human /datum/species/human/felinid name = "Felinid" - id = "felinid" + id = SPECIES_FELINID limbs_id = "human" mutant_bodyparts = list("mam_tail" = "Cat", "mam_ears" = "Cat", "deco_wings" = "None") @@ -11,7 +11,7 @@ tail_type = "mam_tail" wagging_type = "mam_waggingtail" - species_type = "furry" + species_category = SPECIES_CATEGORY_FURRY /datum/species/human/felinid/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load) if(ishuman(C)) diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index c56adaf1b0..c3e406244b 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -1,6 +1,6 @@ /datum/species/fly name = "Anthromorphic Fly" - id = "fly" + id = SPECIES_FLY say_mod = "buzzes" species_traits = list(NOEYES,HAS_FLESH,HAS_BONE) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG @@ -12,7 +12,7 @@ liked_food = GROSS exotic_bloodtype = "BUG" exotic_blood_color = BLOOD_COLOR_BUG - species_type = "insect" + species_category = SPECIES_CATEGORY_INSECT /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(istype(chem, /datum/reagent/toxin/pestkiller)) diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 438eaf1eea..ff0287d7b9 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -1,7 +1,7 @@ /datum/species/golem // Animated beings of stone. They have increased defenses, and do not need to breathe. They're also slow as fuuuck. name = "Golem" - id = "iron golem" + id = SPECIES_GOLEM species_traits = list(NOBLOOD,MUTCOLORS,NO_UNDERWEAR,NOGENITALS,NOAROUSAL) inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) inherent_biotypes = MOB_HUMANOID|MOB_MINERAL @@ -32,7 +32,7 @@ var/special_name_chance = 5 var/owner //dobby is a free golem - species_type = "golem" + species_category = SPECIES_CATEGORY_GOLEM /datum/species/golem/random_name(gender,unique,lastname) var/golem_surname = pick(GLOB.golem_names) diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index f175ddb921..e8e0ff1a78 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -1,6 +1,6 @@ /datum/species/human name = "Human" - id = "human" + id = SPECIES_HUMAN default_color = "FFFFFF" species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY,WINGCOLOR,HAS_FLESH,HAS_BONE) @@ -12,7 +12,7 @@ tail_type = "tail_human" wagging_type = "waggingtail_human" - species_type = "human" + species_category = SPECIES_CATEGORY_BASIC /datum/species/human/spec_death(gibbed, mob/living/carbon/human/H) if(H) diff --git a/code/modules/mob/living/carbon/human/species_types/ipc.dm b/code/modules/mob/living/carbon/human/species_types/ipc.dm index 9bfe661f47..6353fd5184 100644 --- a/code/modules/mob/living/carbon/human/species_types/ipc.dm +++ b/code/modules/mob/living/carbon/human/species_types/ipc.dm @@ -1,6 +1,6 @@ /datum/species/ipc name = "I.P.C." - id = "ipc" + id = SPECIES_IPC say_mod = "beeps" default_color = "00FF00" blacklisted = 0 @@ -28,7 +28,7 @@ exotic_bloodtype = "HF" exotic_blood_color = BLOOD_COLOR_OIL - species_type = "robotic" + species_category = SPECIES_CATEGORY_ROBOT var/datum/action/innate/monitor_change/screen diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 38f3111a23..58a10fb08e 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -1,7 +1,7 @@ /datum/species/jelly // Entirely alien beings that seem to be made entirely out of gel. They have three eyes and a skeleton visible within them. name = "Xenobiological Jelly Entity" - id = "jelly" + id = SPECIES_JELLY default_color = "00FF90" say_mod = "chirps" species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,WINGCOLOR,HAS_FLESH) @@ -16,7 +16,8 @@ exotic_blood_color = "BLOOD_COLOR_SLIME" damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs - var/datum/action/innate/slime_change/slime_change //CIT CHANGE + var/datum/action/innate/slime_change/slime_change + var/datum/action/innate/slime_puddle/slime_puddle liked_food = TOXIC | MEAT disliked_food = null toxic_food = ANTITOXIC @@ -28,19 +29,22 @@ tail_type = "mam_tail" wagging_type = "mam_waggingtail" - species_type = "jelly" + species_category = SPECIES_CATEGORY_JELLY /obj/item/organ/brain/jelly name = "slime nucleus" desc = "A slimey membranous mass from a slime person" icon_state = "brain-slime" - /datum/species/jelly/on_species_loss(mob/living/carbon/C) + if(slime_puddle && slime_puddle.is_puddle) + slime_puddle.Activate() if(regenerate_limbs) regenerate_limbs.Remove(C) - if(slime_change) //CIT CHANGE - slime_change.Remove(C) //CIT CHANGE + if(slime_change) + slime_change.Remove(C) + if(slime_puddle) + slime_puddle.Remove(C) C.faction -= "slime" ..() C.faction -= "slime" @@ -50,8 +54,10 @@ if(ishuman(C)) regenerate_limbs = new regenerate_limbs.Grant(C) - slime_change = new //CIT CHANGE - slime_change.Grant(C) //CIT CHANGE + slime_change = new + slime_change.Grant(C) + slime_puddle = new + slime_puddle.Grant(C) C.faction |= "slime" /datum/species/jelly/handle_body(mob/living/carbon/human/H) @@ -59,6 +65,18 @@ //update blood color to body color exotic_blood_color = "#" + H.dna.features["mcolor"] +/datum/species/jelly/should_render() + if(slime_puddle && slime_puddle.is_puddle) + return FALSE + else + return ..() + +/datum/species/jelly/species_pass_check() + if(slime_puddle && slime_puddle.is_puddle) + return TRUE + else + return ..() + /datum/species/jelly/spec_life(mob/living/carbon/human/H) if(H.stat == DEAD || HAS_TRAIT(H, TRAIT_NOMARROW)) //can't farm slime jelly from a dead slime/jelly person indefinitely, and no regeneration for blooduskers return @@ -140,7 +158,7 @@ /datum/species/jelly/slime name = "Xenobiological Slime Entity" - id = "slime" + id = SPECIES_SLIME default_color = "00FFFF" species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR) say_mod = "says" @@ -274,7 +292,17 @@ \"steps out\" of [H.p_them()].
", "...and after a moment of disorentation, \ you're besides yourself!") - + if(H != spare && isslimeperson(spare) && isslimeperson(H)) + // transfer the swap-body ui if it's open + var/datum/action/innate/swap_body/this_swap = origin_datum.swap_body + var/datum/action/innate/swap_body/other_swap = spare_datum.swap_body + var/datum/tgui/ui = SStgui.get_open_ui(H, this_swap, "main") || SStgui.get_open_ui(spare, this_swap, "main") + if(ui) + SStgui.on_close(ui) // basically removes it from lists is all this proc does. + ui.user = spare + ui.src_object = other_swap + SStgui.on_open(ui) // stick it back on the lists + ui.process(force = TRUE) /datum/action/innate/swap_body name = "Swap Body" @@ -327,6 +355,8 @@ stat = "Conscious" if(UNCONSCIOUS) stat = "Unconscious" + if(SOFT_CRIT) + stat = "Barely Conscious" if(DEAD) stat = "Dead" var/occupied @@ -373,7 +403,6 @@ var/mob/living/carbon/human/selected = locate(params["ref"]) in SS.bodies if(!can_swap(selected)) return - SStgui.close_uis(src) swap_to_dupe(H.mind, selected) /datum/action/innate/swap_body/proc/can_swap(mob/living/carbon/human/dupe) @@ -407,6 +436,7 @@ /datum/action/innate/swap_body/proc/swap_to_dupe(datum/mind/M, mob/living/carbon/human/dupe) if(!can_swap(dupe)) //sanity check return + var/mob/living/carbon/human/old = M.current if(M.current.stat == CONSCIOUS) M.current.visible_message("[M.current] \ stops moving and starts staring vacantly into space.", @@ -418,13 +448,26 @@ dupe.visible_message("[dupe] blinks and looks \ around.", "...and move this one instead.") - + if(old != M.current && dupe == M.current && isslimeperson(dupe)) + var/datum/species/jelly/slime/other_spec = dupe.dna.species + var/datum/action/innate/swap_body/other_swap = other_spec.swap_body + // theoretically the transfer_to proc is supposed to transfer the ui from the mob. + // so I try to get the UI from one of the two mobs and schlump it over to the new action button + var/datum/tgui/ui = SStgui.get_open_ui(old, src, "main") || SStgui.get_open_ui(dupe, src, "main") + if(ui) + // transfer the UI over. This code is slightly hacky but it fixes the problem + // I'd use SStgui.on_transfer but that doesn't let you transfer the src_object as well s + SStgui.on_close(ui) // basically removes it from lists is all this proc does. + ui.user = dupe + ui.src_object = other_swap + SStgui.on_open(ui) // stick it back on the lists + ui.process(force = TRUE) ////////////////////////////////////////////////////////Round Start Slimes/////////////////////////////////////////////////////////////////// /datum/species/jelly/roundstartslime name = "Xenobiological Slime Hybrid" - id = "slimeperson" + id = SPECIES_SLIME_HYBRID limbs_id = "slime" default_color = "00FFFF" species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR) @@ -466,7 +509,7 @@ var/new_color = input(owner, "Choose your skin color:", "Race change","#"+H.dna.features["mcolor"]) as color|null if(new_color) var/temp_hsv = RGBtoHSV(new_color) - if(ReadHSV(temp_hsv)[3] >= ReadHSV("#7F7F7F")[3]) // mutantcolors must be bright + if(ReadHSV(temp_hsv)[3] >= ReadHSV(MINIMUM_MUTANT_COLOR)[3]) // mutantcolors must be bright H.dna.features["mcolor"] = sanitize_hexcolor(new_color, 6) H.update_body() H.update_hair() @@ -645,6 +688,88 @@ else return +/datum/action/innate/slime_puddle + name = "Puddle Transformation" + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "slimepuddle" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + required_mobility_flags = MOBILITY_STAND + var/is_puddle = FALSE + var/in_transformation_duration = 12 + var/out_transformation_duration = 7 + var/puddle_into_effect = /obj/effect/temp_visual/slime_puddle + var/puddle_from_effect = /obj/effect/temp_visual/slime_puddle/reverse + var/puddle_icon = 'icons/mob/mob.dmi' + var/puddle_state = "puddle" + var/tracked_overlay + var/datum/component/squeak/squeak + var/transforming = FALSE + var/last_use + +/datum/action/innate/slime_puddle/IsAvailable() + if(!transforming) + return ..() + else + return FALSE + +/datum/action/innate/slime_puddle/Activate() + if(isjellyperson(owner) && IsAvailable()) + transforming = TRUE + UpdateButtonIcon() + var/mob/living/carbon/human/H = owner + var/mutcolor = "#" + H.dna.features["mcolor"] + if(!is_puddle) + if(CHECK_MOBILITY(H, MOBILITY_USE)) + is_puddle = TRUE + owner.cut_overlays() + var/obj/effect/puddle_effect = new puddle_into_effect(get_turf(owner), owner.dir) + puddle_effect.color = mutcolor + H.Stun(in_transformation_duration, ignore_canstun = TRUE) + ADD_TRAIT(H, TRAIT_PARALYSIS_L_ARM, SLIMEPUDDLE_TRAIT) + ADD_TRAIT(H, TRAIT_PARALYSIS_R_ARM, SLIMEPUDDLE_TRAIT) + ADD_TRAIT(H, TRAIT_MOBILITY_NOPICKUP, SLIMEPUDDLE_TRAIT) + ADD_TRAIT(H, TRAIT_MOBILITY_NOUSE, SLIMEPUDDLE_TRAIT) + ADD_TRAIT(H, TRAIT_SPRINT_LOCKED, SLIMEPUDDLE_TRAIT) + ADD_TRAIT(H, TRAIT_COMBAT_MODE_LOCKED, SLIMEPUDDLE_TRAIT) + ADD_TRAIT(H, TRAIT_MOBILITY_NOREST, SLIMEPUDDLE_TRAIT) + H.add_movespeed_modifier(/datum/movespeed_modifier/slime_puddle) + H.update_disabled_bodyparts(silent = TRUE) + H.layer -= 1 //go one layer down so people go over you + ENABLE_BITFIELD(H.pass_flags, PASSMOB) + squeak = H.AddComponent(/datum/component/squeak, custom_sounds = list('sound/effects/blobattack.ogg')) + sleep(in_transformation_duration) + var/mutable_appearance/puddle_overlay = mutable_appearance(icon = puddle_icon, icon_state = puddle_state) + puddle_overlay.color = mutcolor + tracked_overlay = puddle_overlay + owner.add_overlay(puddle_overlay) + transforming = FALSE + UpdateButtonIcon() + else + owner.cut_overlay(tracked_overlay) + var/obj/effect/puddle_effect = new puddle_from_effect(get_turf(owner), owner.dir) + puddle_effect.color = mutcolor + H.Stun(out_transformation_duration, ignore_canstun = TRUE) + sleep(out_transformation_duration) + REMOVE_TRAIT(H, TRAIT_PARALYSIS_L_ARM, SLIMEPUDDLE_TRAIT) + REMOVE_TRAIT(H, TRAIT_PARALYSIS_R_ARM, SLIMEPUDDLE_TRAIT) + REMOVE_TRAIT(H, TRAIT_MOBILITY_NOPICKUP, SLIMEPUDDLE_TRAIT) + REMOVE_TRAIT(H, TRAIT_MOBILITY_NOUSE, SLIMEPUDDLE_TRAIT) + REMOVE_TRAIT(H, TRAIT_SPRINT_LOCKED, SLIMEPUDDLE_TRAIT) + REMOVE_TRAIT(H, TRAIT_COMBAT_MODE_LOCKED, SLIMEPUDDLE_TRAIT) + REMOVE_TRAIT(H, TRAIT_MOBILITY_NOREST, SLIMEPUDDLE_TRAIT) + H.update_disabled_bodyparts(silent = TRUE) + H.remove_movespeed_modifier(/datum/movespeed_modifier/slime_puddle) + H.layer += 1 //go one layer back above! + DISABLE_BITFIELD(H.pass_flags, PASSMOB) + is_puddle = FALSE + if(squeak) + squeak.RemoveComponent() + owner.regenerate_icons() + transforming = FALSE + UpdateButtonIcon() + else + to_chat(owner, "You need to be standing up to do this!") //just assume they're a slime because it's such a weird edgecase to have it and not be one (it shouldn't even be possible) ///////////////////////////////////LUMINESCENTS////////////////////////////////////////// @@ -652,7 +777,7 @@ /datum/species/jelly/luminescent name = "Luminescent Slime Entity" - id = "lum" + id = SPECIES_SLIME_LUMI say_mod = "says" var/glow_intensity = LUMINESCENT_DEFAULT_GLOW var/obj/effect/dummy/luminescent_glow/glow @@ -819,7 +944,7 @@ /datum/species/jelly/stargazer name = "Stargazer Slime Entity" - id = "stargazer" + id = SPECIES_STARGAZER var/datum/action/innate/project_thought/project_thought var/datum/action/innate/link_minds/link_minds var/list/mob/living/linked_mobs = list() diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index a8e3f89957..c37a24a93a 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -1,7 +1,7 @@ /datum/species/lizard // Reptilian humanoids with scaled skin and tails. name = "Anthromorphic Lizard" - id = "lizard" + id = SPECIES_LIZARD say_mod = "hisses" default_color = "00FF00" species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,LIPS,HORNCOLOR,WINGCOLOR,HAS_FLESH,HAS_BONE) @@ -28,7 +28,7 @@ tail_type = "tail_lizard" wagging_type = "waggingtail_lizard" - species_type = "lizard" + species_category = "lizard" /datum/species/lizard/random_name(gender,unique,lastname) if(unique) @@ -46,7 +46,7 @@ */ /datum/species/lizard/ashwalker name = "Ash Walker" - id = "ashlizard" + id = SPECIES_ASHWALKER limbs_id = "lizard" species_traits = list(MUTCOLORS,EYECOLOR,LIPS,DIGITIGRADE) inherent_traits = list(TRAIT_CHUNKYFINGERS) diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm index f91c3518a3..dcbdf91485 100644 --- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -1,6 +1,6 @@ /datum/species/mush //mush mush codecuck name = "Anthromorphic Mushroom" - id = "mush" + id = SPECIES_MUSHROOM mutant_bodyparts = list("caps" = "Round") fixed_mut_color = "DBBF92" @@ -21,7 +21,7 @@ burnmod = 1.25 heatmod = 1.5 - species_type = "plant" + species_category = SPECIES_CATEGORY_PLANT mutanteyes = /obj/item/organ/eyes/night_vision/mushroom var/datum/martial_art/mushpunch/mush diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index 8c30adb8f9..12a520b463 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -1,6 +1,6 @@ /datum/species/plasmaman name = "Plasmaman" - id = "plasmaman" + id = SPECIES_PLASMAMAN say_mod = "rattles" sexes = 0 meat = /obj/item/stack/sheet/mineral/plasma @@ -22,7 +22,7 @@ liked_food = VEGETABLES outfit_important_for_life = /datum/outfit/plasmaman - species_type = "skeleton" + species_category = SPECIES_CATEGORY_SKELETON /datum/species/plasmaman/spec_life(mob/living/carbon/human/H) var/datum/gas_mixture/environment = H.loc.return_air() diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 0f62953e6c..fae8ebfb0d 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -1,7 +1,7 @@ /datum/species/pod // A mutation caused by a human being ressurected in a revival pod. These regain health in light, and begin to wither in darkness. name = "Anthromorphic Plant" - id = "pod" + id = SPECIES_POD default_color = "59CE00" species_traits = list(MUTCOLORS,EYECOLOR,CAN_SCAR,HAS_FLESH,HAS_BONE) attack_verb = "slash" @@ -19,7 +19,7 @@ var/light_burnheal = -1 var/light_bruteheal = -1 - species_type = "plant" + species_category = SPECIES_CATEGORY_PLANT allowed_limb_ids = list("pod","mush") @@ -66,7 +66,7 @@ /datum/species/pod/pseudo_weak name = "Anthromorphic Plant" - id = "podweak" + id = SPECIES_POD_WEAK species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS) mutant_bodyparts = list("mcolor" = "FFFFFF","mcolor2" = "FFFFFF","mcolor3" = "FFFFFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs") limbs_id = "pod" diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index a7d9ce4473..7dc8083264 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -4,7 +4,7 @@ /datum/species/shadow // Humans cursed to stay in the darkness, lest their life forces drain. They regain health in shadow and die in light. name = "???" - id = "shadow" + id = SPECIES_SHADOW sexes = 0 blacklisted = 1 ignored_by = list(/mob/living/simple_animal/hostile/faithless) @@ -15,7 +15,7 @@ dangerous_existence = 1 mutanteyes = /obj/item/organ/eyes/night_vision - species_type = "shadow" + species_category = SPECIES_CATEGORY_SHADOW /datum/species/shadow/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() @@ -32,7 +32,7 @@ /datum/species/shadow/nightmare name = "Nightmare" - id = "nightmare" + id = SPECIES_NIGHTMARE limbs_id = "shadow" burnmod = 1.5 blacklisted = TRUE diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index 1b6bef9dc6..b0673a7df4 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -1,6 +1,6 @@ /datum/species/skeleton name = "Skeleton" - id = "skeleton" + id = SPECIES_SKELETON say_mod = "rattles" blacklisted = 0 sexes = 0 @@ -15,7 +15,7 @@ brutemod = 1.25 burnmod = 1.25 - species_type = "skeleton" //they have their own category that's disassociated from undead, paired with plasmapeople + species_category = SPECIES_CATEGORY_SKELETON //they have their own category that's disassociated from undead, paired with plasmapeople /datum/species/skeleton/New() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) //skeletons are stronger during the spooky season! @@ -31,7 +31,7 @@ /datum/species/skeleton/space name = "Spooky Spacey Skeleton" - id = "spaceskeleton" + id = SPECIES_SKELETON_SPACE limbs_id = "skeleton" blacklisted = 1 inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT, TRAIT_FAKEDEATH, TRAIT_CALCIUM_HEALER) diff --git a/code/modules/mob/living/carbon/human/species_types/synthliz.dm b/code/modules/mob/living/carbon/human/species_types/synthliz.dm index b446e3796e..88781532d3 100644 --- a/code/modules/mob/living/carbon/human/species_types/synthliz.dm +++ b/code/modules/mob/living/carbon/human/species_types/synthliz.dm @@ -1,6 +1,6 @@ /datum/species/synthliz name = "Synthetic Lizardperson" - id = "synthliz" + id = SPECIES_SYNTH_LIZARD say_mod = "beeps" default_color = "00FF00" species_traits = list(MUTCOLORS,NOTRANSSTING,EYECOLOR,LIPS,HAIR,ROBOTIC_LIMBS,HAS_FLESH,HAS_BONE) @@ -27,4 +27,4 @@ tail_type = "mam_tail" wagging_type = "mam_waggingtail" - species_type = "robotic" + species_category = SPECIES_CATEGORY_ROBOT diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index 3d55ce1027..5d2b6f4c77 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -1,6 +1,6 @@ /datum/species/synth name = "Synthetic" //inherited from the real species, for health scanners and things - id = "synth" + id = SPECIES_SYNTH say_mod = "beep boops" //inherited from a user's real species sexes = 0 species_traits = list(NOTRANSSTING,NOGENITALS,NOAROUSAL) //all of these + whatever we inherit from the real species @@ -17,11 +17,11 @@ var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off var/datum/species/fake_species = null //a species to do most of our work for us, unless we're damaged species_language_holder = /datum/language_holder/synthetic - species_type = "robotic" + species_category = SPECIES_CATEGORY_ROBOT /datum/species/synth/military name = "Military Synth" - id = "military_synth" + id = SPECIES_SYNTH_MIL armor = 25 punchdamagelow = 10 punchdamagehigh = 19 diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 857fb6d8ed..4125d3beab 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -1,6 +1,6 @@ /datum/species/vampire name = "Vampire" - id = "vampire" + id = SPECIES_VAMPIRE default_color = "FFFFFF" species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,DRINKSBLOOD,HAS_FLESH,HAS_BONE) inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH) @@ -14,7 +14,7 @@ limbs_id = "human" skinned_type = /obj/item/stack/sheet/animalhide/human var/info_text = "You are a Vampire. You will slowly but constantly lose blood if outside of a coffin. If inside a coffin, you will slowly heal. You may gain more blood by grabbing a live victim and using your drain ability." - species_type = "undead" + species_category = SPECIES_CATEGORY_UNDEAD /datum/species/vampire/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) diff --git a/code/modules/mob/living/carbon/human/species_types/xeno.dm b/code/modules/mob/living/carbon/human/species_types/xeno.dm index ddd1c86f0a..2757c624e7 100644 --- a/code/modules/mob/living/carbon/human/species_types/xeno.dm +++ b/code/modules/mob/living/carbon/human/species_types/xeno.dm @@ -1,7 +1,7 @@ /datum/species/xeno // A cloning mistake, crossing human and xenomorph DNA name = "Xenomorph Hybrid" - id = "xeno" + id = SPECIES_XENOHYBRID say_mod = "hisses" default_color = "00FF00" species_traits = list(MUTCOLORS,EYECOLOR,LIPS,CAN_SCAR) @@ -15,4 +15,4 @@ exotic_bloodtype = "X*" damage_overlay_type = "xeno" liked_food = MEAT - species_type = "alien" + species_category = SPECIES_CATEGORY_ALIEN diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 8d86ad2fa9..f1c0b8e7c0 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -15,7 +15,7 @@ var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg') disliked_food = NONE liked_food = GROSS | MEAT | RAW - species_type = "undead" + species_category = SPECIES_CATEGORY_UNDEAD /datum/species/zombie/notspaceproof id = "notspaceproofzombie" @@ -98,7 +98,7 @@ // Your skin falls off /datum/species/krokodil_addict - name = "Human" + name = SPECIES_HUMAN id = "goofzombies" limbs_id = "zombie" //They look like zombies sexes = 0 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index cfb35fbb00..71833d22a3 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -50,19 +50,21 @@ There are several things that need to be remembered: //HAIR OVERLAY /mob/living/carbon/human/update_hair() - dna.species.handle_hair(src) + if(dna.species.should_render()) + dna.species.handle_hair(src) //used when putting/removing clothes that hide certain mutant body parts to just update those and not update the whole body. /mob/living/carbon/human/proc/update_mutant_bodyparts() - dna.species.handle_mutant_bodyparts(src) - + if(dna.species.should_render()) + dna.species.handle_mutant_bodyparts(src) /mob/living/carbon/human/update_body(update_genitals = FALSE) - remove_overlay(BODY_LAYER) - dna.species.handle_body(src) - ..() - if(update_genitals) - update_genitals() + if(dna.species.should_render()) + remove_overlay(BODY_LAYER) + dna.species.handle_body(src) + ..() + if(update_genitals) + update_genitals() /mob/living/carbon/human/update_fire() ..((fire_stacks > 3) ? "Standing" : "Generic_mob_burning") @@ -71,381 +73,385 @@ There are several things that need to be remembered: /* --------------------------------------- */ //For legacy support. /mob/living/carbon/human/regenerate_icons() - - if(!..()) - icon_render_key = null //invalidate bodyparts cache - update_body(TRUE) - update_hair() - update_inv_w_uniform() - update_inv_wear_id() - update_inv_gloves() - update_inv_glasses() - update_inv_ears() - update_inv_shoes() - update_inv_s_store() - update_inv_wear_mask() - update_inv_head() - update_inv_belt() - update_inv_back() - update_inv_wear_suit() - update_inv_pockets() - update_inv_neck() - update_transform() - //mutations - update_mutations_overlay() - //damage overlays - update_damage_overlays() + if(dna.species.should_render()) + if(!..()) + icon_render_key = null //invalidate bodyparts cache + update_body(TRUE) + update_hair() + update_inv_w_uniform() + update_inv_wear_id() + update_inv_gloves() + update_inv_glasses() + update_inv_ears() + update_inv_shoes() + update_inv_s_store() + update_inv_wear_mask() + update_inv_head() + update_inv_belt() + update_inv_back() + update_inv_wear_suit() + update_inv_pockets() + update_inv_neck() + update_transform() + //mutations + update_mutations_overlay() + //damage overlays + update_damage_overlays() /* --------------------------------------- */ //vvvvvv UPDATE_INV PROCS vvvvvv /mob/living/carbon/human/update_inv_w_uniform() - remove_overlay(UNIFORM_LAYER) + if(dna.species.should_render()) + remove_overlay(UNIFORM_LAYER) - if(client && hud_used) - var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_W_UNIFORM] - inv.update_icon() + if(client && hud_used) + var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_W_UNIFORM] + inv.update_icon() - if(istype(w_uniform, /obj/item/clothing/under)) - var/obj/item/clothing/under/U = w_uniform - U.screen_loc = ui_iclothing - if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) - client.screen += w_uniform - update_observer_view(w_uniform,1) + if(istype(w_uniform, /obj/item/clothing/under)) + var/obj/item/clothing/under/U = w_uniform + U.screen_loc = ui_iclothing + if(client && hud_used && hud_used.hud_shown) + if(hud_used.inventory_shown) + client.screen += w_uniform + update_observer_view(w_uniform,1) - if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT)) - return + if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT)) + return - var/target_overlay = U.icon_state - if(U.adjusted == ALT_STYLE) - target_overlay = "[target_overlay]_d" + var/target_overlay = U.icon_state + if(U.adjusted == ALT_STYLE) + target_overlay = "[target_overlay]_d" - var/alt_worn = U.mob_overlay_icon || 'icons/mob/clothing/uniform.dmi' - var/variant_flag = NONE + var/alt_worn = U.mob_overlay_icon || 'icons/mob/clothing/uniform.dmi' + var/variant_flag = NONE - if((DIGITIGRADE in dna.species.species_traits) && U.mutantrace_variation & STYLE_DIGITIGRADE && !(U.mutantrace_variation & STYLE_NO_ANTHRO_ICON)) - alt_worn = U.anthro_mob_worn_overlay || 'icons/mob/clothing/uniform_digi.dmi' - variant_flag |= STYLE_DIGITIGRADE + if((DIGITIGRADE in dna.species.species_traits) && U.mutantrace_variation & STYLE_DIGITIGRADE && !(U.mutantrace_variation & STYLE_NO_ANTHRO_ICON)) + alt_worn = U.anthro_mob_worn_overlay || 'icons/mob/clothing/uniform_digi.dmi' + variant_flag |= STYLE_DIGITIGRADE - var/mask - if(dna.species.mutant_bodyparts["taur"]) - var/datum/sprite_accessory/taur/T = GLOB.taur_list[dna.features["taur"]] - var/clip_flag = U.mutantrace_variation & T?.hide_legs - if(clip_flag) - variant_flag |= clip_flag - mask = T.alpha_mask_state + var/mask + if(dna.species.mutant_bodyparts["taur"]) + var/datum/sprite_accessory/taur/T = GLOB.taur_list[dna.features["taur"]] + var/clip_flag = U.mutantrace_variation & T?.hide_legs + if(clip_flag) + variant_flag |= clip_flag + mask = T.alpha_mask_state - var/mutable_appearance/uniform_overlay + var/mutable_appearance/uniform_overlay - var/gendered = (dna?.species.sexes && dna.features["body_model"] == FEMALE) ? U.fitted : NO_FEMALE_UNIFORM - uniform_overlay = U.build_worn_icon( UNIFORM_LAYER, alt_worn, FALSE, gendered, target_overlay, variant_flag, FALSE, mask) + var/gendered = (dna?.species.sexes && dna.features["body_model"] == FEMALE) ? U.fitted : NO_FEMALE_UNIFORM + uniform_overlay = U.build_worn_icon( UNIFORM_LAYER, alt_worn, FALSE, gendered, target_overlay, variant_flag, FALSE, mask) - if(OFFSET_UNIFORM in dna.species.offset_features) - uniform_overlay.pixel_x += dna.species.offset_features[OFFSET_UNIFORM][1] - uniform_overlay.pixel_y += dna.species.offset_features[OFFSET_UNIFORM][2] - overlays_standing[UNIFORM_LAYER] = uniform_overlay - - apply_overlay(UNIFORM_LAYER) - update_mutant_bodyparts() + if(OFFSET_UNIFORM in dna.species.offset_features) + uniform_overlay.pixel_x += dna.species.offset_features[OFFSET_UNIFORM][1] + uniform_overlay.pixel_y += dna.species.offset_features[OFFSET_UNIFORM][2] + overlays_standing[UNIFORM_LAYER] = uniform_overlay + apply_overlay(UNIFORM_LAYER) + update_mutant_bodyparts() /mob/living/carbon/human/update_inv_wear_id() - remove_overlay(ID_LAYER) + if(dna.species.should_render()) + remove_overlay(ID_LAYER) - if(client && hud_used) - var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_ID] - inv.update_icon() + if(client && hud_used) + var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_ID] + inv.update_icon() - var/mutable_appearance/id_overlay = overlays_standing[ID_LAYER] + var/mutable_appearance/id_overlay = overlays_standing[ID_LAYER] - if(wear_id) - wear_id.screen_loc = ui_id - if(client && hud_used && hud_used.hud_shown) - client.screen += wear_id - update_observer_view(wear_id) + if(wear_id) + wear_id.screen_loc = ui_id + if(client && hud_used && hud_used.hud_shown) + client.screen += wear_id + update_observer_view(wear_id) - //TODO: add an icon file for ID slot stuff, so it's less snowflakey - id_overlay = wear_id.build_worn_icon(default_layer = ID_LAYER, default_icon_file = 'icons/mob/mob.dmi', override_state = wear_id.item_state) - if(OFFSET_ID in dna.species.offset_features) - id_overlay.pixel_x += dna.species.offset_features[OFFSET_ID][1] - id_overlay.pixel_y += dna.species.offset_features[OFFSET_ID][2] - overlays_standing[ID_LAYER] = id_overlay - apply_overlay(ID_LAYER) + //TODO: add an icon file for ID slot stuff, so it's less snowflakey + id_overlay = wear_id.build_worn_icon(default_layer = ID_LAYER, default_icon_file = 'icons/mob/mob.dmi', override_state = wear_id.item_state) + if(OFFSET_ID in dna.species.offset_features) + id_overlay.pixel_x += dna.species.offset_features[OFFSET_ID][1] + id_overlay.pixel_y += dna.species.offset_features[OFFSET_ID][2] + overlays_standing[ID_LAYER] = id_overlay + apply_overlay(ID_LAYER) /mob/living/carbon/human/update_inv_gloves() - remove_overlay(GLOVES_LAYER) + if(dna.species.should_render()) + remove_overlay(GLOVES_LAYER) - if(client && hud_used && hud_used.inv_slots[SLOT_GLOVES]) - var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_GLOVES] - inv.update_icon() + if(client && hud_used && hud_used.inv_slots[SLOT_GLOVES]) + var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_GLOVES] + inv.update_icon() - if(!gloves && bloody_hands) - var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER, color = blood_DNA_to_color()) - if(get_num_arms(FALSE) < 2) - if(has_left_hand(FALSE)) - bloody_overlay.icon_state = "bloodyhands_left" - else if(has_right_hand(FALSE)) - bloody_overlay.icon_state = "bloodyhands_right" + if(!gloves && bloody_hands) + var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER, color = blood_DNA_to_color()) + if(get_num_arms(FALSE) < 2) + if(has_left_hand(FALSE)) + bloody_overlay.icon_state = "bloodyhands_left" + else if(has_right_hand(FALSE)) + bloody_overlay.icon_state = "bloodyhands_right" - overlays_standing[GLOVES_LAYER] = bloody_overlay + overlays_standing[GLOVES_LAYER] = bloody_overlay - var/mutable_appearance/gloves_overlay = overlays_standing[GLOVES_LAYER] - if(gloves) - gloves.screen_loc = ui_gloves - if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) - client.screen += gloves - update_observer_view(gloves,1) - overlays_standing[GLOVES_LAYER] = gloves.build_worn_icon(default_layer = GLOVES_LAYER, default_icon_file = 'icons/mob/clothing/hands.dmi') - gloves_overlay = overlays_standing[GLOVES_LAYER] - if(OFFSET_GLOVES in dna.species.offset_features) - gloves_overlay.pixel_x += dna.species.offset_features[OFFSET_GLOVES][1] - gloves_overlay.pixel_y += dna.species.offset_features[OFFSET_GLOVES][2] - overlays_standing[GLOVES_LAYER] = gloves_overlay - apply_overlay(GLOVES_LAYER) + var/mutable_appearance/gloves_overlay = overlays_standing[GLOVES_LAYER] + if(gloves) + gloves.screen_loc = ui_gloves + if(client && hud_used && hud_used.hud_shown) + if(hud_used.inventory_shown) + client.screen += gloves + update_observer_view(gloves,1) + overlays_standing[GLOVES_LAYER] = gloves.build_worn_icon(default_layer = GLOVES_LAYER, default_icon_file = 'icons/mob/clothing/hands.dmi') + gloves_overlay = overlays_standing[GLOVES_LAYER] + if(OFFSET_GLOVES in dna.species.offset_features) + gloves_overlay.pixel_x += dna.species.offset_features[OFFSET_GLOVES][1] + gloves_overlay.pixel_y += dna.species.offset_features[OFFSET_GLOVES][2] + overlays_standing[GLOVES_LAYER] = gloves_overlay + apply_overlay(GLOVES_LAYER) /mob/living/carbon/human/update_inv_glasses() - remove_overlay(GLASSES_LAYER) + if(dna.species.should_render()) + remove_overlay(GLASSES_LAYER) - if(!get_bodypart(BODY_ZONE_HEAD)) //decapitated - return - - if(client && hud_used) - var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_GLASSES] - inv.update_icon() - - if(glasses) - glasses.screen_loc = ui_glasses //...draw the item in the inventory screen - if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) //if the inventory is open ... - client.screen += glasses //Either way, add the item to the HUD - update_observer_view(glasses,1) - if(!(head && (head.flags_inv & HIDEEYES)) && !(wear_mask && (wear_mask.flags_inv & HIDEEYES))) - overlays_standing[GLASSES_LAYER] = glasses.build_worn_icon(default_layer = GLASSES_LAYER, default_icon_file = 'icons/mob/clothing/eyes.dmi', override_state = glasses.icon_state) - var/mutable_appearance/glasses_overlay = overlays_standing[GLASSES_LAYER] - if(glasses_overlay) - if(OFFSET_GLASSES in dna.species.offset_features) - glasses_overlay.pixel_x += dna.species.offset_features[OFFSET_GLASSES][1] - glasses_overlay.pixel_y += dna.species.offset_features[OFFSET_GLASSES][2] - overlays_standing[GLASSES_LAYER] = glasses_overlay - apply_overlay(GLASSES_LAYER) - - -/mob/living/carbon/human/update_inv_ears() - remove_overlay(EARS_LAYER) - - if(!get_bodypart(BODY_ZONE_HEAD)) //decapitated - return - - if(client && hud_used) - var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_EARS] - inv.update_icon() - - if(ears) - ears.screen_loc = ui_ears //move the item to the appropriate screen loc - if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) //if the inventory is open - client.screen += ears //add it to the client's screen - update_observer_view(ears,1) - - overlays_standing[EARS_LAYER] = ears.build_worn_icon(default_layer = EARS_LAYER, default_icon_file = 'icons/mob/ears.dmi') - var/mutable_appearance/ears_overlay = overlays_standing[EARS_LAYER] - if(OFFSET_EARS in dna.species.offset_features) - ears_overlay.pixel_x += dna.species.offset_features[OFFSET_EARS][1] - ears_overlay.pixel_y += dna.species.offset_features[OFFSET_EARS][2] - overlays_standing[EARS_LAYER] = ears_overlay - apply_overlay(EARS_LAYER) - - -/mob/living/carbon/human/update_inv_shoes() - remove_overlay(SHOES_LAYER) - - if(get_num_legs(FALSE) <2) - return - - if(client && hud_used) - var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES] - inv.update_icon() - - if(dna.species.mutant_bodyparts["taur"]) - var/datum/sprite_accessory/taur/T = GLOB.taur_list[dna.features["taur"]] - if(T?.hide_legs) //If only they actually made shoes unwearable. Please don't making cosmetics, guys. + if(!get_bodypart(BODY_ZONE_HEAD)) //decapitated return - if(shoes) - var/obj/item/clothing/shoes/S = shoes - shoes.screen_loc = ui_shoes //move the item to the appropriate screen loc - if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) //if the inventory is open - client.screen += shoes //add it to client's screen - update_observer_view(shoes,1) + if(client && hud_used) + var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_GLASSES] + inv.update_icon() - var/alt_icon = S.mob_overlay_icon || 'icons/mob/clothing/feet.dmi' - var/variation_flag = NONE - if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE && !(S.mutantrace_variation & STYLE_NO_ANTHRO_ICON)) - alt_icon = S.anthro_mob_worn_overlay || 'icons/mob/clothing/feet_digi.dmi' - variation_flag |= STYLE_DIGITIGRADE + if(glasses) + glasses.screen_loc = ui_glasses //...draw the item in the inventory screen + if(client && hud_used && hud_used.hud_shown) + if(hud_used.inventory_shown) //if the inventory is open ... + client.screen += glasses //Either way, add the item to the HUD + update_observer_view(glasses,1) + if(!(head && (head.flags_inv & HIDEEYES)) && !(wear_mask && (wear_mask.flags_inv & HIDEEYES))) + overlays_standing[GLASSES_LAYER] = glasses.build_worn_icon(default_layer = GLASSES_LAYER, default_icon_file = 'icons/mob/clothing/eyes.dmi', override_state = glasses.icon_state) + var/mutable_appearance/glasses_overlay = overlays_standing[GLASSES_LAYER] + if(glasses_overlay) + if(OFFSET_GLASSES in dna.species.offset_features) + glasses_overlay.pixel_x += dna.species.offset_features[OFFSET_GLASSES][1] + glasses_overlay.pixel_y += dna.species.offset_features[OFFSET_GLASSES][2] + overlays_standing[GLASSES_LAYER] = glasses_overlay + apply_overlay(GLASSES_LAYER) - overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(SHOES_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, S.icon_state, variation_flag, FALSE) - var/mutable_appearance/shoes_overlay = overlays_standing[SHOES_LAYER] - if(OFFSET_SHOES in dna.species.offset_features) - shoes_overlay.pixel_x += dna.species.offset_features[OFFSET_SHOES][1] - shoes_overlay.pixel_y += dna.species.offset_features[OFFSET_SHOES][2] - overlays_standing[SHOES_LAYER] = shoes_overlay - apply_overlay(SHOES_LAYER) +/mob/living/carbon/human/update_inv_ears() + if(dna.species.should_render()) + remove_overlay(EARS_LAYER) -/mob/living/carbon/human/update_inv_s_store() - remove_overlay(SUIT_STORE_LAYER) + if(!get_bodypart(BODY_ZONE_HEAD)) //decapitated + return - if(client && hud_used) - var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_S_STORE] - inv.update_icon() + if(client && hud_used) + var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_EARS] + inv.update_icon() - if(s_store) - s_store.screen_loc = ui_sstore1 - if(client && hud_used && hud_used.hud_shown) - client.screen += s_store - update_observer_view(s_store) - var/t_state = s_store.item_state - if(!t_state) - t_state = s_store.icon_state - overlays_standing[SUIT_STORE_LAYER] = mutable_appearance(((s_store.mob_overlay_icon) ? s_store.mob_overlay_icon : 'icons/mob/clothing/belt_mirror.dmi'), t_state, -SUIT_STORE_LAYER) - var/mutable_appearance/s_store_overlay = overlays_standing[SUIT_STORE_LAYER] - if(OFFSET_S_STORE in dna.species.offset_features) - s_store_overlay.pixel_x += dna.species.offset_features[OFFSET_S_STORE][1] - s_store_overlay.pixel_y += dna.species.offset_features[OFFSET_S_STORE][2] - overlays_standing[SUIT_STORE_LAYER] = s_store_overlay - apply_overlay(SUIT_STORE_LAYER) + if(ears) + ears.screen_loc = ui_ears //move the item to the appropriate screen loc + if(client && hud_used && hud_used.hud_shown) + if(hud_used.inventory_shown) //if the inventory is open + client.screen += ears //add it to the client's screen + update_observer_view(ears,1) + overlays_standing[EARS_LAYER] = ears.build_worn_icon(default_layer = EARS_LAYER, default_icon_file = 'icons/mob/ears.dmi') + var/mutable_appearance/ears_overlay = overlays_standing[EARS_LAYER] + if(OFFSET_EARS in dna.species.offset_features) + ears_overlay.pixel_x += dna.species.offset_features[OFFSET_EARS][1] + ears_overlay.pixel_y += dna.species.offset_features[OFFSET_EARS][2] + overlays_standing[EARS_LAYER] = ears_overlay + apply_overlay(EARS_LAYER) -/mob/living/carbon/human/update_inv_head() - remove_overlay(HEAD_LAYER) +/mob/living/carbon/human/update_inv_shoes() + if(dna.species.should_render()) + remove_overlay(SHOES_LAYER) - if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated - return + if(get_num_legs(FALSE) <2) + return - if(client && hud_used) - var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD] - inv.update_icon() + if(client && hud_used) + var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES] + inv.update_icon() - if(head) - head.screen_loc = ui_head - if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) - client.screen += head - update_observer_view(head,1) - remove_overlay(HEAD_LAYER) - var/obj/item/clothing/head/H = head - var/alt_icon = H.mob_overlay_icon || 'icons/mob/clothing/head.dmi' - var/muzzled = FALSE - var/variation_flag = NONE - if(dna.species.mutant_bodyparts["mam_snouts"] && dna.features["mam_snouts"] != "None") - muzzled = TRUE - else if(dna.species.mutant_bodyparts["snout"] && dna.features["snout"] != "None") - muzzled = TRUE - if(muzzled && H.mutantrace_variation & STYLE_MUZZLE && !(H.mutantrace_variation & STYLE_NO_ANTHRO_ICON)) - alt_icon = H.anthro_mob_worn_overlay || 'icons/mob/clothing/head_muzzled.dmi' - variation_flag |= STYLE_MUZZLE - - overlays_standing[HEAD_LAYER] = H.build_worn_icon(HEAD_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, H.icon_state, variation_flag, FALSE) - var/mutable_appearance/head_overlay = overlays_standing[HEAD_LAYER] - - if(OFFSET_HEAD in dna.species.offset_features) - head_overlay.pixel_x += dna.species.offset_features[OFFSET_HEAD][1] - head_overlay.pixel_y += dna.species.offset_features[OFFSET_HEAD][2] - overlays_standing[HEAD_LAYER] = head_overlay - apply_overlay(HEAD_LAYER) - update_mutant_bodyparts() - -/mob/living/carbon/human/update_inv_belt() - remove_overlay(BELT_LAYER) - - if(client && hud_used) - var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_BELT] - inv.update_icon() - - if(belt) - belt.screen_loc = ui_belt - if(client && hud_used && hud_used.hud_shown) - client.screen += belt - update_observer_view(belt) - - overlays_standing[BELT_LAYER] = belt.build_worn_icon(default_layer = BELT_LAYER, default_icon_file = 'icons/mob/clothing/belt.dmi') - var/mutable_appearance/belt_overlay = overlays_standing[BELT_LAYER] - if(OFFSET_BELT in dna.species.offset_features) - belt_overlay.pixel_x += dna.species.offset_features[OFFSET_BELT][1] - belt_overlay.pixel_y += dna.species.offset_features[OFFSET_BELT][2] - overlays_standing[BELT_LAYER] = belt_overlay - apply_overlay(BELT_LAYER) - - -/mob/living/carbon/human/update_inv_wear_suit() - remove_overlay(SUIT_LAYER) - - if(client && hud_used) - var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_SUIT] - inv.update_icon() - - if(wear_suit) - var/obj/item/clothing/suit/S = wear_suit - wear_suit.screen_loc = ui_oclothing - if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) - client.screen += wear_suit - update_observer_view(wear_suit,1) - - var/worn_icon = wear_suit.mob_overlay_icon || 'icons/mob/clothing/suit.dmi' - var/worn_state = wear_suit.icon_state - var/center = FALSE - var/dimension_x = 32 - var/dimension_y = 32 - var/variation_flag = NONE - var/datum/sprite_accessory/taur/T if(dna.species.mutant_bodyparts["taur"]) - T = GLOB.taur_list[dna.features["taur"]] + var/datum/sprite_accessory/taur/T = GLOB.taur_list[dna.features["taur"]] + if(T?.hide_legs) //If only they actually made shoes unwearable. Please don't making cosmetics, guys. + return - if(S.mutantrace_variation) + if(shoes) + var/obj/item/clothing/shoes/S = shoes + shoes.screen_loc = ui_shoes //move the item to the appropriate screen loc + if(client && hud_used && hud_used.hud_shown) + if(hud_used.inventory_shown) //if the inventory is open + client.screen += shoes //add it to client's screen + update_observer_view(shoes,1) - if(T?.taur_mode) - var/init_worn_icon = worn_icon - variation_flag |= S.mutantrace_variation & T.taur_mode || S.mutantrace_variation & T.alt_taur_mode - switch(variation_flag) - if(STYLE_HOOF_TAURIC) - worn_icon = 'icons/mob/clothing/taur_hooved.dmi' - if(STYLE_SNEK_TAURIC) - worn_icon = 'icons/mob/clothing/taur_naga.dmi' - if(STYLE_PAW_TAURIC) - worn_icon = 'icons/mob/clothing/taur_canine.dmi' - if(worn_icon != init_worn_icon) //worn icon sprite was changed, taur offsets will have to be applied. - if(S.taur_mob_worn_overlay) //not going to make several new variables for all taur types. Nope. - var/static/list/icon_to_state = list('icons/mob/clothing/taur_hooved.dmi' = "_hooved", 'icons/mob/clothing/taur_naga.dmi' = "_naga", 'icons/mob/clothing/taur_canine.dmi' = "_paws") - worn_state += icon_to_state[worn_icon] - worn_icon = S.taur_mob_worn_overlay - center = T.center - dimension_x = T.dimension_x - dimension_y = T.dimension_y - - else if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE && !(S.mutantrace_variation & STYLE_NO_ANTHRO_ICON)) //not a taur, but digitigrade legs. - worn_icon = S.anthro_mob_worn_overlay || 'icons/mob/clothing/suit_digi.dmi' + var/alt_icon = S.mob_overlay_icon || 'icons/mob/clothing/feet.dmi' + var/variation_flag = NONE + if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE && !(S.mutantrace_variation & STYLE_NO_ANTHRO_ICON)) + alt_icon = S.anthro_mob_worn_overlay || 'icons/mob/clothing/feet_digi.dmi' variation_flag |= STYLE_DIGITIGRADE - overlays_standing[SUIT_LAYER] = S.build_worn_icon(SUIT_LAYER, worn_icon, FALSE, NO_FEMALE_UNIFORM, worn_state, variation_flag, FALSE) - var/mutable_appearance/suit_overlay = overlays_standing[SUIT_LAYER] - if(OFFSET_SUIT in dna.species.offset_features) - suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1] - suit_overlay.pixel_y += dna.species.offset_features[OFFSET_SUIT][2] - if(center) - suit_overlay = center_image(suit_overlay, dimension_x, dimension_y) - overlays_standing[SUIT_LAYER] = suit_overlay - update_hair() - update_mutant_bodyparts() + overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(SHOES_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, S.icon_state, variation_flag, FALSE) + var/mutable_appearance/shoes_overlay = overlays_standing[SHOES_LAYER] + if(OFFSET_SHOES in dna.species.offset_features) + shoes_overlay.pixel_x += dna.species.offset_features[OFFSET_SHOES][1] + shoes_overlay.pixel_y += dna.species.offset_features[OFFSET_SHOES][2] + overlays_standing[SHOES_LAYER] = shoes_overlay + apply_overlay(SHOES_LAYER) - apply_overlay(SUIT_LAYER) +/mob/living/carbon/human/update_inv_s_store() + if(dna.species.should_render()) + remove_overlay(SUIT_STORE_LAYER) + if(client && hud_used) + var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_S_STORE] + inv.update_icon() + + if(s_store) + s_store.screen_loc = ui_sstore1 + if(client && hud_used && hud_used.hud_shown) + client.screen += s_store + update_observer_view(s_store) + var/t_state = s_store.item_state + if(!t_state) + t_state = s_store.icon_state + overlays_standing[SUIT_STORE_LAYER] = mutable_appearance(((s_store.mob_overlay_icon) ? s_store.mob_overlay_icon : 'icons/mob/clothing/belt_mirror.dmi'), t_state, -SUIT_STORE_LAYER) + var/mutable_appearance/s_store_overlay = overlays_standing[SUIT_STORE_LAYER] + if(OFFSET_S_STORE in dna.species.offset_features) + s_store_overlay.pixel_x += dna.species.offset_features[OFFSET_S_STORE][1] + s_store_overlay.pixel_y += dna.species.offset_features[OFFSET_S_STORE][2] + overlays_standing[SUIT_STORE_LAYER] = s_store_overlay + apply_overlay(SUIT_STORE_LAYER) + +/mob/living/carbon/human/update_inv_head() + if(dna.species.should_render()) + remove_overlay(HEAD_LAYER) + + if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated + return + + if(client && hud_used) + var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_HEAD] + inv.update_icon() + + if(head) + head.screen_loc = ui_head + if(client && hud_used && hud_used.hud_shown) + if(hud_used.inventory_shown) + client.screen += head + update_observer_view(head,1) + remove_overlay(HEAD_LAYER) + var/obj/item/clothing/head/H = head + var/alt_icon = H.mob_overlay_icon || 'icons/mob/clothing/head.dmi' + var/muzzled = FALSE + var/variation_flag = NONE + if(dna.species.mutant_bodyparts["mam_snouts"] && dna.features["mam_snouts"] != "None") + muzzled = TRUE + else if(dna.species.mutant_bodyparts["snout"] && dna.features["snout"] != "None") + muzzled = TRUE + if(muzzled && H.mutantrace_variation & STYLE_MUZZLE && !(H.mutantrace_variation & STYLE_NO_ANTHRO_ICON)) + alt_icon = H.anthro_mob_worn_overlay || 'icons/mob/clothing/head_muzzled.dmi' + variation_flag |= STYLE_MUZZLE + + overlays_standing[HEAD_LAYER] = H.build_worn_icon(HEAD_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, H.icon_state, variation_flag, FALSE) + var/mutable_appearance/head_overlay = overlays_standing[HEAD_LAYER] + + if(OFFSET_HEAD in dna.species.offset_features) + head_overlay.pixel_x += dna.species.offset_features[OFFSET_HEAD][1] + head_overlay.pixel_y += dna.species.offset_features[OFFSET_HEAD][2] + overlays_standing[HEAD_LAYER] = head_overlay + apply_overlay(HEAD_LAYER) + update_mutant_bodyparts() + +/mob/living/carbon/human/update_inv_belt() + if(dna.species.should_render()) + remove_overlay(BELT_LAYER) + + if(client && hud_used) + var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_BELT] + inv.update_icon() + + if(belt) + belt.screen_loc = ui_belt + if(client && hud_used && hud_used.hud_shown) + client.screen += belt + update_observer_view(belt) + + overlays_standing[BELT_LAYER] = belt.build_worn_icon(default_layer = BELT_LAYER, default_icon_file = 'icons/mob/clothing/belt.dmi') + var/mutable_appearance/belt_overlay = overlays_standing[BELT_LAYER] + if(OFFSET_BELT in dna.species.offset_features) + belt_overlay.pixel_x += dna.species.offset_features[OFFSET_BELT][1] + belt_overlay.pixel_y += dna.species.offset_features[OFFSET_BELT][2] + overlays_standing[BELT_LAYER] = belt_overlay + apply_overlay(BELT_LAYER) + +/mob/living/carbon/human/update_inv_wear_suit() + if(dna.species.should_render()) + remove_overlay(SUIT_LAYER) + + if(client && hud_used) + var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_SUIT] + inv.update_icon() + + if(wear_suit) + var/obj/item/clothing/suit/S = wear_suit + wear_suit.screen_loc = ui_oclothing + if(client && hud_used && hud_used.hud_shown) + if(hud_used.inventory_shown) + client.screen += wear_suit + update_observer_view(wear_suit,1) + + var/worn_icon = wear_suit.mob_overlay_icon || 'icons/mob/clothing/suit.dmi' + var/worn_state = wear_suit.icon_state + var/center = FALSE + var/dimension_x = 32 + var/dimension_y = 32 + var/variation_flag = NONE + var/datum/sprite_accessory/taur/T + if(dna.species.mutant_bodyparts["taur"]) + T = GLOB.taur_list[dna.features["taur"]] + + if(S.mutantrace_variation) + + if(T?.taur_mode) + var/init_worn_icon = worn_icon + variation_flag |= S.mutantrace_variation & T.taur_mode || S.mutantrace_variation & T.alt_taur_mode + switch(variation_flag) + if(STYLE_HOOF_TAURIC) + worn_icon = 'icons/mob/clothing/taur_hooved.dmi' + if(STYLE_SNEK_TAURIC) + worn_icon = 'icons/mob/clothing/taur_naga.dmi' + if(STYLE_PAW_TAURIC) + worn_icon = 'icons/mob/clothing/taur_canine.dmi' + if(worn_icon != init_worn_icon) //worn icon sprite was changed, taur offsets will have to be applied. + if(S.taur_mob_worn_overlay) //not going to make several new variables for all taur types. Nope. + var/static/list/icon_to_state = list('icons/mob/clothing/taur_hooved.dmi' = "_hooved", 'icons/mob/clothing/taur_naga.dmi' = "_naga", 'icons/mob/clothing/taur_canine.dmi' = "_paws") + worn_state += icon_to_state[worn_icon] + worn_icon = S.taur_mob_worn_overlay + center = T.center + dimension_x = T.dimension_x + dimension_y = T.dimension_y + + else if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE && !(S.mutantrace_variation & STYLE_NO_ANTHRO_ICON)) //not a taur, but digitigrade legs. + worn_icon = S.anthro_mob_worn_overlay || 'icons/mob/clothing/suit_digi.dmi' + variation_flag |= STYLE_DIGITIGRADE + + overlays_standing[SUIT_LAYER] = S.build_worn_icon(SUIT_LAYER, worn_icon, FALSE, NO_FEMALE_UNIFORM, worn_state, variation_flag, FALSE) + var/mutable_appearance/suit_overlay = overlays_standing[SUIT_LAYER] + if(OFFSET_SUIT in dna.species.offset_features) + suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1] + suit_overlay.pixel_y += dna.species.offset_features[OFFSET_SUIT][2] + if(center) + suit_overlay = center_image(suit_overlay, dimension_x, dimension_y) + overlays_standing[SUIT_LAYER] = suit_overlay + update_hair() + update_mutant_bodyparts() + + apply_overlay(SUIT_LAYER) /mob/living/carbon/human/update_inv_pockets() if(client && hud_used) @@ -471,55 +477,57 @@ There are several things that need to be remembered: /mob/living/carbon/human/update_inv_wear_mask() - remove_overlay(FACEMASK_LAYER) - - if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated - return - - if(client && hud_used) - var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK] - inv.update_icon() - - if(wear_mask) - wear_mask.screen_loc = ui_mask - if(client && hud_used && hud_used.hud_shown) - if(hud_used.inventory_shown) - client.screen += wear_mask - update_observer_view(wear_mask,1) - var/obj/item/clothing/mask/M = wear_mask + if(dna.species.should_render()) remove_overlay(FACEMASK_LAYER) - var/alt_icon = M.mob_overlay_icon || 'icons/mob/clothing/mask.dmi' - var/muzzled = FALSE - var/variation_flag = NONE - if(head && (head.flags_inv & HIDEMASK)) + + if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated return - if(dna.species.mutant_bodyparts["mam_snouts"] && dna.features["mam_snouts"] != "None") - muzzled = TRUE - else if(dna.species.mutant_bodyparts["snout"] && dna.features["snout"] != "None") - muzzled = TRUE - if(muzzled && M.mutantrace_variation & STYLE_MUZZLE && !(M.mutantrace_variation & STYLE_NO_ANTHRO_ICON)) - alt_icon = M.anthro_mob_worn_overlay || 'icons/mob/clothing/mask_muzzled.dmi' - variation_flag |= STYLE_MUZZLE - var/mutable_appearance/mask_overlay = M.build_worn_icon(FACEMASK_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, wear_mask.icon_state, variation_flag, FALSE) + if(client && hud_used) + var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_MASK] + inv.update_icon() - if(OFFSET_FACEMASK in dna.species.offset_features) - mask_overlay.pixel_x += dna.species.offset_features[OFFSET_FACEMASK][1] - mask_overlay.pixel_y += dna.species.offset_features[OFFSET_FACEMASK][2] - overlays_standing[FACEMASK_LAYER] = mask_overlay - apply_overlay(FACEMASK_LAYER) - update_mutant_bodyparts() //e.g. upgate needed because mask now hides lizard snout + if(wear_mask) + wear_mask.screen_loc = ui_mask + if(client && hud_used && hud_used.hud_shown) + if(hud_used.inventory_shown) + client.screen += wear_mask + update_observer_view(wear_mask,1) + var/obj/item/clothing/mask/M = wear_mask + remove_overlay(FACEMASK_LAYER) + var/alt_icon = M.mob_overlay_icon || 'icons/mob/clothing/mask.dmi' + var/muzzled = FALSE + var/variation_flag = NONE + if(head && (head.flags_inv & HIDEMASK)) + return + if(dna.species.mutant_bodyparts["mam_snouts"] && dna.features["mam_snouts"] != "None") + muzzled = TRUE + else if(dna.species.mutant_bodyparts["snout"] && dna.features["snout"] != "None") + muzzled = TRUE + if(muzzled && M.mutantrace_variation & STYLE_MUZZLE && !(M.mutantrace_variation & STYLE_NO_ANTHRO_ICON)) + alt_icon = M.anthro_mob_worn_overlay || 'icons/mob/clothing/mask_muzzled.dmi' + variation_flag |= STYLE_MUZZLE + + var/mutable_appearance/mask_overlay = M.build_worn_icon(FACEMASK_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, wear_mask.icon_state, variation_flag, FALSE) + + if(OFFSET_FACEMASK in dna.species.offset_features) + mask_overlay.pixel_x += dna.species.offset_features[OFFSET_FACEMASK][1] + mask_overlay.pixel_y += dna.species.offset_features[OFFSET_FACEMASK][2] + overlays_standing[FACEMASK_LAYER] = mask_overlay + apply_overlay(FACEMASK_LAYER) + update_mutant_bodyparts() //e.g. upgate needed because mask now hides lizard snout /mob/living/carbon/human/update_inv_back() - ..() - var/mutable_appearance/back_overlay = overlays_standing[BACK_LAYER] - if(back_overlay) - remove_overlay(BACK_LAYER) - if(OFFSET_BACK in dna.species.offset_features) - back_overlay.pixel_x += dna.species.offset_features[OFFSET_BACK][1] - back_overlay.pixel_y += dna.species.offset_features[OFFSET_BACK][2] - overlays_standing[BACK_LAYER] = back_overlay - apply_overlay(BACK_LAYER) + if(dna.species.should_render()) + ..() + var/mutable_appearance/back_overlay = overlays_standing[BACK_LAYER] + if(back_overlay) + remove_overlay(BACK_LAYER) + if(OFFSET_BACK in dna.species.offset_features) + back_overlay.pixel_x += dna.species.offset_features[OFFSET_BACK][1] + back_overlay.pixel_y += dna.species.offset_features[OFFSET_BACK][2] + overlays_standing[BACK_LAYER] = back_overlay + apply_overlay(BACK_LAYER) /proc/wear_alpha_masked_version(state, icon, layer, female, alpha_mask) var/mask = "-[alpha_mask]" @@ -710,8 +718,6 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if ..() update_hair() - - /mob/living/carbon/human/proc/update_observer_view(obj/item/I, inventory) if(observers && observers.len) for(var/M in observers) @@ -729,15 +735,17 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if // Only renders the head of the human /mob/living/carbon/human/proc/update_body_parts_head_only() - if (!dna) + if(!dna) return - if (!dna.species) + if(!dna.species) + return + + if(dna.species.should_render()) return var/obj/item/bodypart/HD = get_bodypart("head") - - if (!istype(HD)) + if(!istype(HD)) return HD.update_limb() @@ -748,7 +756,7 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if if(HD && !(HAS_TRAIT(src, TRAIT_HUSK))) // lipstick if(lip_style && (LIPS in dna.species.species_traits)) - var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/human_face.dmi', "lips_[lip_style]", -BODY_LAYER) + var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/lips.dmi', "lips_[lip_style]", -BODY_LAYER) lip_overlay.color = lip_color if(OFFSET_LIPS in dna.species.offset_features) lip_overlay.pixel_x += dna.species.offset_features[OFFSET_LIPS][1] @@ -759,10 +767,17 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if if(!(NOEYES in dna.species.species_traits)) var/has_eyes = getorganslot(ORGAN_SLOT_EYES) if(!has_eyes) - add_overlay(mutable_appearance('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER)) + add_overlay(mutable_appearance('icons/mob/eyes.dmi', "eyes_missing", -BODY_LAYER)) else - var/mutable_appearance/left_eye = mutable_appearance('icons/mob/human_face.dmi', "left_eye", -BODY_LAYER) - var/mutable_appearance/right_eye = mutable_appearance('icons/mob/human_face.dmi', "right_eye", -BODY_LAYER) + var/left_state = DEFAULT_LEFT_EYE_STATE + var/right_state = DEFAULT_RIGHT_EYE_STATE + if(dna.species) + var/eye_type = dna.species.eye_type + if(GLOB.eye_types[eye_type]) + left_state = eye_type + "_left_eye" + right_state = eye_type + "_right_eye" + var/mutable_appearance/left_eye = mutable_appearance('icons/mob/eyes.dmi', left_state, -BODY_LAYER) + var/mutable_appearance/right_eye = mutable_appearance('icons/mob/eyes.dmi', right_state, -BODY_LAYER) if((EYECOLOR in dna.species.species_traits) && has_eyes) left_eye.color = "#" + left_eye_color right_eye.color = "#" + right_eye_color diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 8f181d47fd..30785a0103 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -502,19 +502,14 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put //this updates all special effects: stun, sleeping, knockdown, druggy, stuttering, etc.. /mob/living/carbon/handle_status_effects() ..() - if(getStaminaLoss() && !SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE)) //CIT CHANGE - prevents stamina regen while combat mode is active - adjustStaminaLoss(!CHECK_MOBILITY(src, MOBILITY_STAND) ? ((combat_flags & COMBAT_FLAG_HARD_STAMCRIT) ? STAM_RECOVERY_STAM_CRIT : STAM_RECOVERY_RESTING) : STAM_RECOVERY_NORMAL) + var/combat_mode = SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE) + if(getStaminaLoss() && !HAS_TRAIT(src, TRAIT_NO_STAMINA_REGENERATION)) + adjustStaminaLoss((!CHECK_MOBILITY(src, MOBILITY_STAND) ? ((combat_flags & COMBAT_FLAG_HARD_STAMCRIT) ? STAM_RECOVERY_STAM_CRIT : STAM_RECOVERY_RESTING) : STAM_RECOVERY_NORMAL) * (combat_mode? 0.25 : 1)) if(!(combat_flags & COMBAT_FLAG_HARD_STAMCRIT) && incomingstammult != 1) incomingstammult = max(0.01, incomingstammult) incomingstammult = min(1, incomingstammult*2) - //CIT CHANGES START HERE. STAMINA BUFFER STUFF - if(bufferedstam && world.time > stambufferregentime) - var/drainrate = max((bufferedstam*(bufferedstam/(5)))*0.1,1) - bufferedstam = max(bufferedstam - drainrate, 0) - //END OF CIT CHANGES - var/restingpwr = 1 + 4 * !CHECK_MOBILITY(src, MOBILITY_STAND) //Dizziness diff --git a/code/modules/mob/living/carbon/monkey/update_icons.dm b/code/modules/mob/living/carbon/monkey/update_icons.dm index 1e00815f24..bfe04c8622 100644 --- a/code/modules/mob/living/carbon/monkey/update_icons.dm +++ b/code/modules/mob/living/carbon/monkey/update_icons.dm @@ -34,7 +34,7 @@ hair_hidden = 1 if(!hair_hidden) if(!getorgan(/obj/item/organ/brain)) //Applies the debrained overlay if there is no brain - overlays_standing[HAIR_LAYER] = mutable_appearance('icons/mob/human_face.dmi', "debrained", -HAIR_LAYER) + overlays_standing[HAIR_LAYER] = mutable_appearance('icons/mob/human_parts.dmi', "debrained", -HAIR_LAYER) apply_overlay(HAIR_LAYER) diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 1d78979cbd..4ee52a08a6 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -562,7 +562,7 @@ if(. && iscarbon(user)) var/mob/living/carbon/C = user if(isjellyperson(C)) - pick(playsound(C, 'sound/effects/attackblob.ogg', 50, 1),playsound(C, 'sound/effects/blobattack.ogg', 50, 1)) + playsound(C, 'sound/effects/attackblob.ogg', 50, 1) /datum/emote/living/audio_emote/blurp key = "blurp" diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 8dac56a8c9..57d688bde3 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -8,6 +8,8 @@ for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) diag_hud.add_to_hud(src) faction += "[REF(src)]" + stamina_buffer = INFINITY + UpdateStaminaBuffer() GLOB.mob_living_list += src /mob/living/prepare_huds() @@ -842,12 +844,12 @@ return var/strip_mod = 1 var/strip_silence = FALSE - if (ishuman(src)) //carbon doesn't actually wear gloves + if(ishuman(src)) //carbon doesn't actually wear gloves var/mob/living/carbon/C = src - var/obj/item/clothing/gloves/g = C.gloves - if (istype(g)) - strip_mod = g.strip_mod - strip_silence = g.strip_silence + var/obj/item/clothing/gloves/G = C.gloves + if(istype(G)) + strip_mod = G.strip_mod + strip_silence = G.strip_silence if (!strip_silence) who.visible_message("[src] tries to remove [who]'s [what.name].", \ "[src] tries to remove your [what.name].", target = src, @@ -1257,7 +1259,7 @@ SetUnconscious(clamp_unconscious_to) HealAllImmobilityUpTo(clamp_immobility_to) adjustStaminaLoss(min(0, -stamina_boost)) - adjustStaminaLossBuffered(min(0, -stamina_buffer_boost)) + RechargeStaminaBuffer(stamina_buffer_boost) // this MUST GO AFTER ADJUSTSTAMINALOSS. if(scale_stamina_loss_recovery) adjustStaminaLoss(min(-((getStaminaLoss() - stamina_loss_recovery_bypass) * scale_stamina_loss_recovery), 0)) if(put_on_feet) diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index 2493509e16..db472df388 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -8,6 +8,8 @@ active_block_item = null REMOVE_TRAIT(src, TRAIT_MOBILITY_NOUSE, ACTIVE_BLOCK_TRAIT) REMOVE_TRAIT(src, TRAIT_SPRINT_LOCKED, ACTIVE_BLOCK_TRAIT) + REMOVE_TRAIT(src, TRAIT_NO_STAMINA_BUFFER_REGENERATION, ACTIVE_BLOCK_TRAIT) + REMOVE_TRAIT(src, TRAIT_NO_STAMINA_REGENERATION, ACTIVE_BLOCK_TRAIT) remove_movespeed_modifier(/datum/movespeed_modifier/active_block) var/datum/block_parry_data/data = I.get_block_parry_data() DelayNextAction(data.block_end_click_cd_add) @@ -27,6 +29,10 @@ ADD_TRAIT(src, TRAIT_MOBILITY_NOUSE, ACTIVE_BLOCK_TRAIT) //probably should be something else at some point if(data.block_lock_sprinting) ADD_TRAIT(src, TRAIT_SPRINT_LOCKED, ACTIVE_BLOCK_TRAIT) + if(data.block_no_stamina_regeneration) + ADD_TRAIT(src, TRAIT_NO_STAMINA_REGENERATION, ACTIVE_BLOCK_TRAIT) + if(data.block_no_stambuffer_regeneration) + ADD_TRAIT(src, TRAIT_NO_STAMINA_BUFFER_REGENERATION, ACTIVE_BLOCK_TRAIT) add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/active_block, multiplicative_slowdown = data.block_slowdown) active_block_effect_start() return TRUE @@ -192,7 +198,7 @@ var/held_index = C.get_held_index_of_item(src) var/obj/item/bodypart/BP = C.hand_bodyparts[held_index] if(!BP?.body_zone) - return C.adjustStaminaLossBuffered(stamina_amount) //nah + return C.adjustStaminaLoss(stamina_amount) //nah var/zone = BP.body_zone var/stamina_to_zone = data.block_stamina_limb_ratio * stamina_amount var/stamina_to_chest = stamina_amount - stamina_to_zone @@ -200,9 +206,9 @@ stamina_to_chest -= stamina_buffered C.apply_damage(stamina_to_zone, STAMINA, zone) C.apply_damage(stamina_to_chest, STAMINA, BODY_ZONE_CHEST) - C.adjustStaminaLossBuffered(stamina_buffered) + C.adjustStaminaLoss(stamina_buffered) else - owner.adjustStaminaLossBuffered(stamina_amount) + owner.adjustStaminaLoss(stamina_amount) /obj/item/proc/on_active_block(mob/living/owner, atom/object, damage, damage_blocked, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return, override_direction) return @@ -231,6 +237,7 @@ active_block_do_stamina_damage(owner, object, stamina_cost, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, block_return) block_return[BLOCK_RETURN_ACTIVE_BLOCK_DAMAGE_MITIGATED] = damage - final_damage block_return[BLOCK_RETURN_SET_DAMAGE_TO] = final_damage + block_return[BLOCK_RETURN_MITIGATION_PERCENT] = clamp(1 - (final_damage / damage), 0, 1) . = BLOCK_SHOULD_CHANGE_DAMAGE if((final_damage <= 0) || (damage <= 0)) . |= BLOCK_SUCCESS //full block diff --git a/code/modules/mob/living/living_active_parry.dm b/code/modules/mob/living/living_active_parry.dm index b6706d0548..7353add745 100644 --- a/code/modules/mob/living/living_active_parry.dm +++ b/code/modules/mob/living/living_active_parry.dm @@ -68,12 +68,13 @@ // can always implement it later, whatever. if((data.parry_respect_clickdelay && !CheckActionCooldown()) || ((parry_end_time_last + data.parry_cooldown) > world.time)) to_chat(src, "You are not ready to parry (again)!") - return + return FALSE // Point of no return, make sure everything is set. parrying = method if(method == ITEM_PARRY) active_parry_item = using_item - adjustStaminaLossBuffered(data.parry_stamina_cost) + if(!UseStaminaBuffer(data.parry_stamina_cost, TRUE)) + return FALSE parry_start_time = world.time successful_parries = list() addtimer(CALLBACK(src, .proc/end_parry_sequence), full_parry_duration) @@ -244,7 +245,14 @@ if((return_list[BLOCK_RETURN_MITIGATION_PERCENT] >= 100) || (damage <= 0)) . |= BLOCK_SUCCESS var/list/effect_text - if(efficiency >= data.parry_efficiency_to_counterattack) + var/pacifist_counter_check = TRUE + if(HAS_TRAIT(src, TRAIT_PACIFISM)) + switch(parrying) + if(ITEM_PARRY) + pacifist_counter_check = (!active_parry_item.force || active_parry_item.damtype == STAMINA) + else + pacifist_counter_check = FALSE //Both martial and unarmed counter attacks generally are harmful, so no need to have the same line twice. + if(efficiency >= data.parry_efficiency_to_counterattack && pacifist_counter_check) effect_text = run_parry_countereffects(object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list, efficiency) if(data.parry_flags & PARRY_DEFAULT_HANDLE_FEEDBACK) handle_parry_feedback(object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list, efficiency, effect_text) diff --git a/code/modules/mob/living/living_blocking_parrying.dm b/code/modules/mob/living/living_blocking_parrying.dm index 47dae8849d..08ef674b33 100644 --- a/code/modules/mob/living/living_blocking_parrying.dm +++ b/code/modules/mob/living/living_blocking_parrying.dm @@ -74,8 +74,12 @@ GLOBAL_LIST_EMPTY(block_parry_data) /// Ratio of stamina incurred by chest (so after [block_stamina_limb_ratio] runs) that is buffered. var/block_stamina_buffer_ratio = 1 - /// Stamina dealt directly via adjustStaminaLossBuffered() per SECOND of block. + /// Stamina dealt directly via UseStaminaBuffer() per SECOND of block. var/block_stamina_cost_per_second = 1.5 + /// Prevent stamina buffer regeneration while block? + var/block_no_stambuffer_regeneration = TRUE + /// Prevent stamina regeneration while block? + var/block_no_stamina_regeneration = FALSE /// Bitfield for attack types that we can block while down. This will work in any direction. var/block_resting_attack_types_anydir = ATTACK_TYPE_MELEE | ATTACK_TYPE_UNARMED | ATTACK_TYPE_TACKLE @@ -307,7 +311,7 @@ GLOBAL_LIST_EMPTY(block_parry_data) /mob/living/proc/handle_block_parry(seconds = 1) if(combat_flags & COMBAT_FLAG_ACTIVE_BLOCKING) var/datum/block_parry_data/data = return_block_parry_datum(active_block_item.block_parry_data) - adjustStaminaLossBuffered(data.block_stamina_cost_per_second * seconds) + UseStaminaBuffer(data.block_stamina_cost_per_second * seconds) /mob/living/on_item_dropped(obj/item/I) if(I == active_block_item) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 5495d37297..5621fab9c1 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -53,6 +53,7 @@ var/hallucination = 0 //Directly affects how long a mob will hallucinate for + var/last_special = 0 //Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out. var/timeofdeath = 0 //Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects. @@ -148,9 +149,6 @@ var/combatmessagecooldown = 0 var/incomingstammult = 1 - var/bufferedstam = 0 - var/stambuffer = 20 - var/stambufferregentime //Sprint buffer--- var/sprint_buffer = 42 //Tiles @@ -159,3 +157,13 @@ var/sprint_buffer_regen_last = 0 //last world.time this was regen'd for math. var/sprint_stamina_cost = 0.70 //stamina loss per tile while insufficient sprint buffer. //---End + + // Stamina Buffer--- + /// Our stamina buffer + var/stamina_buffer + /// Stamina buffer regen modifier + var/stamina_buffer_regen_mod = 1 + /// Last time stamina buffer regen was done + var/stamina_buffer_regen_last = 0 + /// Last time we used stamina buffer + var/stamina_buffer_last_use = 0 diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 654a979445..8c6cf9d207 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -5,12 +5,15 @@ RegisterSignal(src, SIGNAL_TRAIT(TRAIT_MOBILITY_NOMOVE), .proc/update_mobility) RegisterSignal(src, SIGNAL_TRAIT(TRAIT_MOBILITY_NOPICKUP), .proc/update_mobility) RegisterSignal(src, SIGNAL_TRAIT(TRAIT_MOBILITY_NOUSE), .proc/update_mobility) + RegisterSignal(src, SIGNAL_TRAIT(TRAIT_MOBILITY_NOREST), .proc/update_mobility) //Stuff like mobility flag updates, resting updates, etc. //Force-set resting variable, without needing to resist/etc. /mob/living/proc/set_resting(new_resting, silent = FALSE, updating = TRUE) if(new_resting != resting) + if(resting && HAS_TRAIT(src, TRAIT_MOBILITY_NOREST)) //forcibly block resting from all sources - BE CAREFUL WITH THIS TRAIT + return resting = new_resting if(!silent) to_chat(src, "You are now [resting? "resting" : "getting up"].") @@ -87,7 +90,7 @@ var/canstand_involuntary = conscious && !stat_softcrit && !knockdown && !chokehold && !paralyze && (ignore_legs || has_legs) && !(buckled && buckled.buckle_lying) && !(combat_flags & COMBAT_FLAG_HARD_STAMCRIT) var/canstand = canstand_involuntary && !resting - var/should_be_lying = !canstand + var/should_be_lying = !canstand && !HAS_TRAIT(src, TRAIT_MOBILITY_NOREST) if(buckled) if(buckled.buckle_lying != -1) should_be_lying = buckled.buckle_lying @@ -173,4 +176,6 @@ else remove_movespeed_modifier(/datum/movespeed_modifier/limbless) + update_movespeed() + return mobility_flags diff --git a/code/modules/mob/living/living_sprint.dm b/code/modules/mob/living/living_sprint.dm index dc0f6d2767..3ef67c9edd 100644 --- a/code/modules/mob/living/living_sprint.dm +++ b/code/modules/mob/living/living_sprint.dm @@ -29,6 +29,7 @@ if(combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) return ENABLE_BITFIELD(combat_flags, COMBAT_FLAG_SPRINT_ACTIVE) + add_movespeed_modifier(/datum/movespeed_modifier/sprinting) if(update_icon) update_sprint_icon() @@ -36,6 +37,7 @@ if(!(combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) || (combat_flags & COMBAT_FLAG_SPRINT_FORCED)) return DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_SPRINT_ACTIVE) + remove_movespeed_modifier(/datum/movespeed_modifier/sprinting) if(update_icon) update_sprint_icon() diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 66c2cd96c7..4c03e74d70 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -82,6 +82,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return new_msg /mob/living/say(message, bubble_type,var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) + set waitfor = FALSE var/static/list/crit_allowed_modes = list(MODE_WHISPER = TRUE, MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE) var/static/list/unconscious_allowed_modes = list(MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE) var/talk_key = get_key(message) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 6143bde602..83df3ffba5 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -454,10 +454,12 @@ if(U.action(src)) to_chat(user, "You apply the upgrade to [src].") if(U.one_use) + U.afterInstall(src) qdel(U) else U.forceMove(src) upgrades += U + U.afterInstall(src) else to_chat(user, "Upgrade error.") U.forceMove(drop_location()) @@ -1130,10 +1132,6 @@ bellyup = 1 update_icons() -/mob/living/silicon/robot/adjustStaminaLossBuffered(amount, updating_health = 1) - if(istype(cell)) - cell.charge -= amount * 5 - /mob/living/silicon/robot/verb/viewmanifest() set category = "Robot Commands" set name = "View Crew Manifest" diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 3f28fd6e01..8375d621d4 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -236,7 +236,7 @@ Auto Patrol[]"}, if(targets.len>0) var/mob/living/carbon/t = pick(targets) if((t.stat!=2) && (t.lying != 1) && (!t.handcuffed)) //we don't shoot people who are dead, cuffed or lying down. - shootAt(t) + INVOKE_ASYNC(src, .proc/shootAt, t) switch(mode) if(BOT_IDLE) // idle @@ -254,7 +254,7 @@ Auto Patrol[]"}, if(target) // make sure target exists if(Adjacent(target) && isturf(target.loc)) // if right next to perp - stun_attack(target) + INVOKE_ASYNC(src, .proc/stun_attack, target) mode = BOT_PREP_ARREST anchored = TRUE diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 954e968bd7..ae045dbd26 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -22,7 +22,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians icon_state = "magicbase" icon_living = "magicbase" icon_dead = "magicbase" - speed = 0 + speed = -0.5 blood_volume = 0 a_intent = INTENT_HARM stop_automated_movement = 1 @@ -511,7 +511,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians var/used_message = "All the cards seem to be blank now." var/failure_message = "..And draw a card! It's...blank? Maybe you should try again later." var/ling_failure = "The deck refuses to respond to a souless creature such as you." - var/list/possible_guardians = list("Assassin", "Chaos", "Charger", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") + var/list/possible_guardians = list("Assassin", "Chaos", "Gravitokinetic", "Charger", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") var/random = TRUE var/allowmultiple = FALSE var/allowling = TRUE @@ -559,6 +559,9 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians if("Chaos") pickedtype = /mob/living/simple_animal/hostile/guardian/fire + if("Gravitokinetic") + pickedtype = /mob/living/simple_animal/hostile/guardian/gravitokinetic + if("Standard") pickedtype = /mob/living/simple_animal/hostile/guardian/punch @@ -615,10 +618,10 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians random = FALSE /obj/item/guardiancreator/choose/dextrous - possible_guardians = list("Assassin", "Chaos", "Charger", "Dextrous", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") + possible_guardians = list("Assassin", "Chaos", "Gravitokinetic", "Charger", "Dextrous", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") /obj/item/guardiancreator/choose/wizard - possible_guardians = list("Assassin", "Chaos", "Charger", "Dextrous", "Explosive", "Lightning", "Protector", "Ranged", "Standard") + possible_guardians = list("Assassin", "Chaos", "Gravitokinetic", "Charger", "Dextrous", "Explosive", "Lightning", "Protector", "Ranged", "Standard") allowmultiple = TRUE /obj/item/guardiancreator/tech @@ -634,7 +637,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians ling_failure = "The holoparasites recoil in horror. They want nothing to do with a creature like you." /obj/item/guardiancreator/tech/choose/traitor - possible_guardians = list("Assassin", "Chaos", "Charger", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") + possible_guardians = list("Assassin", "Chaos", "Gravitokinetic", "Charger", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") allowling = FALSE /obj/item/guardiancreator/tech/choose/traitor/check_uplink_validity() @@ -644,10 +647,10 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians random = FALSE /obj/item/guardiancreator/tech/choose/dextrous - possible_guardians = list("Assassin", "Chaos", "Charger", "Dextrous", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") + possible_guardians = list("Assassin", "Chaos", "Gravitokinetic", "Charger", "Dextrous", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") /obj/item/guardiancreator/tech/choose/nukie // lacks support and protector as encouraging nukies to play turtle isnt fun and dextrous is epic - possible_guardians = list("Assassin", "Chaos", "Charger", "Dextrous", "Explosive", "Lightning", "Ranged", "Standard") + possible_guardians = list("Assassin", "Chaos", "Gravitokinetic", "Charger", "Dextrous", "Explosive", "Lightning", "Ranged", "Standard") /obj/item/guardiancreator/tech/choose/nukie/check_uplink_validity() return !used @@ -666,6 +669,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
Explosive: High damage resist and medium power attack that may explosively teleport targets. Can turn any object, including objects too large to pick up, into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered or after a delay.

+ Gravitokinetic: Attacks will apply crushing gravity to the target. Can target the ground as well to slow targets advancing on you, but this will affect the user.
+
Lightning: Attacks apply lightning chains to targets. Has a lightning chain to the user. Lightning chains shock everything near them, doing constant damage.

Protector: Causes you to teleport to it when out of range, unlike other parasites. Has two modes; Combat, where it does and takes medium damage, and Protection, where it does and takes almost no damage but moves slightly slower.
@@ -695,6 +700,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
Explosive: High damage resist and medium power attack that may explosively teleport targets. Can turn any object, including objects too large to pick up, into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered or after a delay.

+ Gravitokinetic: Attacks will apply crushing gravity to the target. Can target the ground as well to slow targets advancing on you, but this will affect the user.
+
Lightning: Attacks apply lightning chains to targets. Has a lightning chain to the user. Lightning chains shock everything near them, doing constant damage.

Protector: Causes you to teleport to it when out of range, unlike other parasites. Has two modes; Combat, where it does and takes medium damage, and Protection, where it does and takes almost no damage but moves slightly slower.
@@ -720,6 +727,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
Explosive: High damage resist and medium power attack that may explosively teleport targets. Can turn any object, including objects too large to pick up, into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered or after a delay.

+ Gravitokinetic: Attacks will apply crushing gravity to the target. Can target the ground as well to slow targets advancing on you, but this will affect the user.
+
Lightning: Attacks apply lightning chains to targets. Has a lightning chain to the user. Lightning chains shock everything near them, doing constant damage.

Ranged: Has two modes. Ranged; which fires a constant stream of weak, armor-ignoring projectiles. Scout; Cannot attack, but can move through walls and is quite hard to see. Can lay surveillance snares, which alert it when crossed, in either mode.
diff --git a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm index 3bc079f6d5..b5bb91d34f 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm @@ -1,5 +1,7 @@ //Assassin /mob/living/simple_animal/hostile/guardian/assassin + melee_damage_lower = 15 + melee_damage_upper = 15 attack_verb_continuous = "slashes" attack_verb_simple = "slash" attack_sound = 'sound/weapons/bladeslice.ogg' diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm index 0b4952aa9e..9060350df4 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm @@ -1,8 +1,11 @@ //Charger /mob/living/simple_animal/hostile/guardian/charger + melee_damage_lower = 15 + melee_damage_upper = 15 ranged = 1 //technically ranged_message = "charges" ranged_cooldown_time = 20 + speed = -1 damage_coeff = list(BRUTE = 0.2, BURN = 0.5, TOX = 0.5, CLONE = 0.5, STAMINA = 0, OXY = 0.5) playstyle_string = "As a charger type you do medium damage, take half damage, have near immunity to brute damage, move very fast, and can charge at a location, damaging any target hit and forcing them to drop any items they are holding." magic_fluff_string = "..And draw the Hunter, an alien master of rapid assault." diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm index b9037ff4a4..39a7bfaebd 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm @@ -1,5 +1,7 @@ //Bomb /mob/living/simple_animal/hostile/guardian/bomb + melee_damage_lower = 15 + melee_damage_upper = 15 damage_coeff = list(BRUTE = 0.6, BURN = 0.6, TOX = 0.6, CLONE = 0.6, STAMINA = 0, OXY = 0.6) playstyle_string = "As an explosive type, you have moderate close combat abilities, take half damage, may explosively teleport targets on attack, and are capable of converting nearby items and objects into disguised bombs via alt click." magic_fluff_string = "..And draw the Scientist, master of explosive death." diff --git a/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm b/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm new file mode 100644 index 0000000000..34948d3e0c --- /dev/null +++ b/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm @@ -0,0 +1,73 @@ +//gravitokinetic +/mob/living/simple_animal/hostile/guardian/gravitokinetic + melee_damage_lower = 15 + melee_damage_upper = 15 + damage_coeff = list(BRUTE = 0.75, BURN = 0.75, TOX = 0.75, CLONE = 0.75, STAMINA = 0, OXY = 0.75) + playstyle_string = "As a gravitokinetic type, you can alt click to make the gravity on the ground stronger, and punching applies this effect to a target." + magic_fluff_string = "..And draw the Singularity, an anomalous force of terror." + tech_fluff_string = "Boot sequence complete. Gravitokinetic modules loaded. Holoparasite swarm online." + carp_fluff_string = "CARP CARP CARP! Caught one! It's a gravitokinetic carp! Now do you understand the gravity of the situation?" + var/list/gravito_targets = list() + var/gravity_power_range = 10 //how close the stand must stay to the target to keep the heavy gravity + +///Removes gravity from affected mobs upon guardian death to prevent permanent effects +/mob/living/simple_animal/hostile/guardian/gravitokinetic/death() + . = ..() + for(var/i in gravito_targets) + remove_gravity(i) + +/mob/living/simple_animal/hostile/guardian/gravitokinetic/AttackingTarget() + . = ..() + if(isliving(target) && target != src && target != summoner) + to_chat(src, "Your punch has applied heavy gravity to [target]!") + add_gravity(target, 5) + to_chat(target, "Everything feels really heavy!") + +/mob/living/simple_animal/hostile/guardian/gravitokinetic/AltClickOn(atom/A) + if(isopenturf(A) && is_deployed() && stat != DEAD && in_range(src, A) && !incapacitated()) + var/turf/T = A + if(isspaceturf(T)) + to_chat(src, "You cannot add gravity to space!") + return + visible_message("[src] slams their fist into the [T]!", "You modify the gravity of the [T].") + do_attack_animation(T) + add_gravity(T, 3) + return + return ..() + +/mob/living/simple_animal/hostile/guardian/gravitokinetic/Recall(forced) + . = ..() + to_chat(src, "You have released your gravitokinetic powers!") + for(var/i in gravito_targets) + remove_gravity(i) + +/mob/living/simple_animal/hostile/guardian/gravitokinetic/Manifest(forced) + . = ..() + //just make sure to reapply a gravity immunity wherever you summon. it can be overridden but not by you at least + summoner.AddElement(/datum/element/forced_gravity, 1) + AddElement(/datum/element/forced_gravity, 1) + +/mob/living/simple_animal/hostile/guardian/gravitokinetic/Moved(oldLoc, dir) + . = ..() + for(var/i in gravito_targets) + if(get_dist(src, i) > gravity_power_range) + remove_gravity(i) + +/mob/living/simple_animal/hostile/guardian/gravitokinetic/proc/add_gravity(atom/A, new_gravity = 3) + if(gravito_targets[A]) + return + A.AddElement(/datum/element/forced_gravity, new_gravity) + gravito_targets[A] = new_gravity + RegisterSignal(A, COMSIG_MOVABLE_MOVED, .proc/__distance_check) + playsound(src, 'sound/effects/gravhit.ogg', 100, TRUE) + +/mob/living/simple_animal/hostile/guardian/gravitokinetic/proc/remove_gravity(atom/target) + if(isnull(gravito_targets[target])) + return + UnregisterSignal(target, COMSIG_MOVABLE_MOVED) + target.RemoveElement(/datum/element/forced_gravity, gravito_targets[target]) + gravito_targets -= target + +/mob/living/simple_animal/hostile/guardian/gravitokinetic/proc/__distance_check(atom/movable/AM, OldLoc, Dir, Forced) + if(get_dist(src, AM) > gravity_power_range) + remove_gravity(AM) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/guardian/types/protector.dm b/code/modules/mob/living/simple_animal/guardian/types/protector.dm index cf6bd3cdb5..99272a6d3f 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/protector.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/protector.dm @@ -1,5 +1,7 @@ //Protector /mob/living/simple_animal/hostile/guardian/protector + melee_damage_lower = 15 + melee_damage_upper = 15 range = 15 //worse for it due to how it leashes damage_coeff = list(BRUTE = 0.4, BURN = 0.4, TOX = 0.4, CLONE = 0.4, STAMINA = 0, OXY = 0.4) playstyle_string = "As a protector type you cause your summoner to leash to you instead of you leashing to them and have two modes; Combat Mode, where you do and take medium damage, and Protection Mode, where you do and take almost no damage, but move slightly slower." @@ -31,9 +33,10 @@ cooldown = world.time + 10 if(toggle) cut_overlays() - melee_damage_lower = 15 - melee_damage_upper = 15 - speed = 0 + add_overlay(cooloverlay) //readd the guardian's colors + melee_damage_lower = initial(melee_damage_lower) + melee_damage_upper = initial(melee_damage_upper) + speed = initial(speed) damage_coeff = list(BRUTE = 0.4, BURN = 0.4, TOX = 0.4, CLONE = 0.4, STAMINA = 0, OXY = 0.4) to_chat(src, "You switch to combat mode.") toggle = FALSE diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm index eee3eb0cdb..b51552acd2 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm @@ -4,6 +4,8 @@ friendly_verb_continuous = "heals" friendly_verb_simple = "heal" damage_coeff = list(BRUTE = 0.7, BURN = 0.7, TOX = 0.7, CLONE = 0.7, STAMINA = 0, OXY = 0.7) + melee_damage_lower = 15 + melee_damage_upper = 15 playstyle_string = "As a support type, you have 30% damage reduction and may toggle your basic attacks to a healing mode. In addition, Alt-Clicking on an adjacent object or mob will warp them to your bluespace beacon after a short delay." magic_fluff_string = "..And draw the CMO, a potent force of life... and death." carp_fluff_string = "CARP CARP CARP! You caught a support carp. It's a kleptocarp!" @@ -43,15 +45,15 @@ if(src.loc == summoner) if(toggle) a_intent = INTENT_HARM - speed = 0 + speed = initial(speed) damage_coeff = list(BRUTE = 0.7, BURN = 0.7, TOX = 0.7, CLONE = 0.7, STAMINA = 0, OXY = 0.7) - melee_damage_lower = 15 - melee_damage_upper = 15 + melee_damage_lower = initial(melee_damage_lower) + melee_damage_upper = initial(melee_damage_upper) to_chat(src, "You switch to combat mode.") toggle = FALSE else a_intent = INTENT_HELP - speed = 1 + speed = initial(speed) damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) melee_damage_lower = 0 melee_damage_upper = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 186fe36a10..37eb9b7f67 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -52,6 +52,19 @@ var/lose_patience_timer_id //id for a timer to call LoseTarget(), used to stop mobs fixating on a target they can't reach var/lose_patience_timeout = 300 //30 seconds by default, so there's no major changes to AI behaviour, beyond actually bailing if stuck forever + ///When a target is found, will the mob attempt to charge at it's target? + var/charger = FALSE + ///Tracks if the target is actively charging. + var/charge_state = FALSE + ///In a charge, how many tiles will the charger travel? + var/charge_distance = 3 + ///How often can the charging mob actually charge? Effects the cooldown between charges. + var/charge_frequency = 6 SECONDS + ///If the mob is charging, how long will it stun it's target on success, and itself on failure? + var/knockdown_time = 3 SECONDS + ///Declares a cooldown for potential charges right off the bat. + COOLDOWN_DECLARE(charge_cooldown) + /mob/living/simple_animal/hostile/Initialize() . = ..() @@ -292,6 +305,9 @@ if(ranged) //We ranged? Shoot at em if(!target.Adjacent(targets_from) && ranged_cooldown <= world.time) //But make sure they're not in range for a melee attack and our range attack is off cooldown OpenFire(target) + if(charger && (target_distance > minimum_distance) && (target_distance <= charge_distance))//Attempt to close the distance with a charge. + enter_charge(target) + return TRUE if(!Process_Spacemove()) //Drifting walk(src,0) return 1 @@ -599,3 +615,64 @@ mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with mega . += M else if (M.loc.type in hostile_machines) . += M.loc + + +/** + * Proc that handles a charge attack windup for a mob. + */ +/mob/living/simple_animal/hostile/proc/enter_charge(var/atom/target) + if((mobility_flags & (MOBILITY_MOVE | MOBILITY_STAND)) != (MOBILITY_MOVE | MOBILITY_STAND) || charge_state) + return FALSE + + if(!(COOLDOWN_FINISHED(src, charge_cooldown)) || !has_gravity() || !target.has_gravity()) + return FALSE + Shake(15, 15, 1 SECONDS) + addtimer(CALLBACK(src, .proc/handle_charge_target, target), 1.5 SECONDS, TIMER_STOPPABLE) + +/** + * Proc that throws the mob at the target after the windup. + */ +/mob/living/simple_animal/hostile/proc/handle_charge_target(var/atom/target) + charge_state = TRUE + throw_at(target, charge_distance, 1, src, FALSE, TRUE, callback = CALLBACK(src, .proc/charge_end)) + COOLDOWN_START(src, charge_cooldown, charge_frequency) + return TRUE + +/** + * Proc that handles a charge attack after it's concluded. + */ +/mob/living/simple_animal/hostile/proc/charge_end() + charge_state = FALSE + +/** + * Proc that handles the charge impact of the charging mob. + */ +/mob/living/simple_animal/hostile/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + if(!charge_state) + return ..() + + if(hit_atom) + if(isliving(hit_atom)) + var/mob/living/L = hit_atom + var/blocked = FALSE + if(ishuman(hit_atom)) + var/mob/living/carbon/human/H = hit_atom + var/list/return_list = list() + if(H.mob_run_block(src, 0, "the [name]", ATTACK_TYPE_TACKLE, 0, src, null, return_list) & BLOCK_SUCCESS) + blocked = TRUE + if(!blocked) + blocked = return_list[BLOCK_RETURN_MITIGATION_PERCENT] + if(!blocked) + L.visible_message("[src] charges on [L]!", "[src] charges into you!") + L.Knockdown(knockdown_time) + else + Stun((knockdown_time * 2), 1, 1) + charge_end() + else if(hit_atom.density && !hit_atom.CanPass(src)) + visible_message("[src] smashes into [hit_atom]!") + Stun((knockdown_time * 2), 1, 1) + + if(charge_state) + charge_state = FALSE + update_icons() + update_mobility() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobsterosity.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobsterosity.dm new file mode 100644 index 0000000000..140042024d --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobsterosity.dm @@ -0,0 +1,42 @@ +/** + * Lobstrosities, the poster boy of charging AI mobs. Drops crab meat and bones. + * Outside of charging, it's intended behavior is that it is generally slow moving, but makes up for that with a knockdown attack to score additional hits. + */ +/mob/living/simple_animal/hostile/asteroid/lobstrosity + name = "arctic lobstrosity" + desc = "A marvel of evolution gone wrong, the frosty ice produces underground lakes where these ill tempered seafood gather. Beware its charge." + icon = 'icons/mob/icemoon/icemoon_monsters.dmi' + icon_state = "arctic_lobstrosity" + icon_living = "arctic_lobstrosity" + icon_dead = "arctic_lobstrosity_dead" + mob_biotypes = MOB_ORGANIC|MOB_BEAST + mouse_opacity = MOUSE_OPACITY_ICON + friendly_verb_continuous = "chitters at" + friendly_verb_simple = "chits at" + speak_emote = list("chitters") + speed = 3 + move_to_delay = 20 + maxHealth = 150 + health = 150 + obj_damage = 15 + melee_damage_lower = 15 + melee_damage_upper = 19 + attack_verb_continuous = "snips" + attack_verb_simple = "snip" + attack_sound = 'sound/weapons/bite.ogg' + weather_immunities = list("snow") + vision_range = 5 + aggro_vision_range = 7 + charger = TRUE + charge_distance = 4 + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/crab = 2, /obj/item/stack/sheet/bone = 2) + robust_searching = TRUE + footstep_type = FOOTSTEP_MOB_CLAW + gold_core_spawnable = HOSTILE_SPAWN + +/mob/living/simple_animal/hostile/asteroid/lobstrosity/lava + name = "tropical lobstrosity" + desc = "A marvel of evolution gone wrong, the sulfur lakes of lavaland have given them a vibrant, red hued shell. Beware its charge." + icon_state = "lobstrosity" + icon_living = "lobstrosity" + icon_dead = "lobstrosity_dead" diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm index 2c94739180..f6ab2a1a9e 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm @@ -59,12 +59,12 @@ /mob/living/simple_animal/hostile/retaliate/ghost/proc/give_hair() if(ghost_hair_style != null) - ghost_hair = mutable_appearance('icons/mob/human_face.dmi', "hair_[ghost_hair_style]", -HAIR_LAYER) + ghost_hair = mutable_appearance('icons/mob/hair.dmi', "hair_[ghost_hair_style]", -HAIR_LAYER) ghost_hair.alpha = 200 ghost_hair.color = ghost_hair_color add_overlay(ghost_hair) if(ghost_facial_hair_style != null) - ghost_facial_hair = mutable_appearance('icons/mob/human_face.dmi', "facial_[ghost_facial_hair_style]", -HAIR_LAYER) + ghost_facial_hair = mutable_appearance('icons/mob/hair.dmi', "facial_[ghost_facial_hair_style]", -HAIR_LAYER) ghost_facial_hair.alpha = 200 ghost_facial_hair.color = ghost_facial_hair_color add_overlay(ghost_facial_hair) diff --git a/code/modules/mob/living/simple_animal/hostile/wizard.dm b/code/modules/mob/living/simple_animal/hostile/wizard.dm index b3523fc42c..59bd67e42a 100644 --- a/code/modules/mob/living/simple_animal/hostile/wizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/wizard.dm @@ -62,6 +62,9 @@ /mob/living/simple_animal/hostile/wizard/handle_automated_action() . = ..() + INVOKE_ASYNC(src, .proc/AutomatedCast) + +/mob/living/simple_animal/hostile/wizard/proc/AutomatedCast() if(target && next_cast < world.time) if((get_dir(src,target) in list(SOUTH,EAST,WEST,NORTH)) && fireball.cast_check(0,src)) //Lined up for fireball src.setDir(get_dir(src,target)) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 3ca29b6746..1ff7e2f799 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -436,12 +436,7 @@ newspeak.Add(possible_phrase) speak = newspeak - //Search for item to steal - parrot_interest = search_for_item() - if(parrot_interest) - emote("me", EMOTE_VISIBLE, "looks in [parrot_interest]'s direction and takes flight.") - parrot_state = PARROT_SWOOP | PARROT_STEAL - icon_state = icon_living + INVOKE_ASYNC(src, .proc/attempt_item_theft) return //-----WANDERING - This is basically a 'I dont know what to do yet' state @@ -620,6 +615,14 @@ parrot_lastmove = src.loc return 0 +/mob/living/simple_animal/parrot/proc/attempt_item_theft() + //Search for item to steal + search_for_item() + if(parrot_interest) + emote("me", EMOTE_VISIBLE, "looks in [parrot_interest]'s direction and takes flight.") + parrot_state = PARROT_SWOOP | PARROT_STEAL + icon_state = icon_living + /mob/living/simple_animal/parrot/proc/search_for_item() var/item for(var/atom/movable/AM in view(src)) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index b192182c71..5fa6a0c22d 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -6,6 +6,7 @@ gender = PLURAL //placeholder ///How much blud it has for bloodsucking blood_volume = 550 + rad_flags = RAD_NO_CONTAMINATE status_flags = CANPUSH diff --git a/code/modules/mob/living/stamina_buffer.dm b/code/modules/mob/living/stamina_buffer.dm new file mode 100644 index 0000000000..a410df582b --- /dev/null +++ b/code/modules/mob/living/stamina_buffer.dm @@ -0,0 +1,56 @@ +/** + * Attempts to use an amount of stamina from our stamina buffer. + * Does not use anything if we don't have enough. + * + * Returns TRUE or FALSE based on if we have it. + */ +/mob/living/proc/UseStaminaBuffer(amount, warn = FALSE, considered_action = TRUE) + if(!(combat_flags & COMBAT_FLAG_STAMINA_BUFFER)) + return TRUE + if(stamina_buffer < amount) + var/stamina_health = getStaminaLoss() + if(stamina_health > STAMINA_NO_OVERDRAW_THRESHOLD) + if(warn) + to_chat(src, "You do not have enough action stamina to do that!") + return FALSE + adjustStaminaLoss(amount * CONFIG_GET(number/stamina_combat/overdraw_penalty_factor)) + else + stamina_buffer -= amount + if(considered_action) + stamina_buffer_last_use = world.time + UpdateStaminaBuffer() + return TRUE + +/** + * Updates our stamina buffer amount. + */ +/mob/living/proc/UpdateStaminaBuffer(updating_hud = TRUE) + var/time = world.time - stamina_buffer_regen_last + CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/buffer_max, buffer_max) + stamina_buffer_regen_last = world.time + if((stamina_buffer >= buffer_max) || !(combat_flags & COMBAT_FLAG_STAMINA_BUFFER)) + stamina_buffer = buffer_max + return + else if(!time || HAS_TRAIT(src, TRAIT_NO_STAMINA_BUFFER_REGENERATION)) + return + CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/out_of_combat_timer, out_of_combat_timer) + CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/base_regeneration, base_regeneration) + CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/combat_regeneration, combat_regeneration) + CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/percent_regeneration_out_of_combat, percent_regeneration_out_of_combat) + CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/post_action_penalty_delay, post_action_penalty_delay) + CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/post_action_penalty_factor, post_action_penalty_factor) + var/base_regen = (SEND_SIGNAL(src, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_INACTIVE))? base_regeneration : combat_regeneration + var/time_since_last_action = world.time - stamina_buffer_last_use + var/action_penalty = ((time_since_last_action) < (post_action_penalty_delay * 10))? post_action_penalty_factor : 1 + var/out_of_combat_bonus = (time_since_last_action < (out_of_combat_timer * 10))? 0 : ((buffer_max * percent_regeneration_out_of_combat * 0.01)) + var/regen = ((base_regen * action_penalty) + out_of_combat_bonus) * time * 0.1 * stamina_buffer_regen_mod + stamina_buffer += min((buffer_max - stamina_buffer), regen) + if(updating_hud) + hud_used?.staminabuffer?.mark_dirty() + +/** + * Boosts our stamina buffer by this much. + */ +/mob/living/proc/RechargeStaminaBuffer(amount) + stamina_buffer += abs(amount) + UpdateStaminaBuffer() diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 0d4afd0915..2ed0bfa9d2 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -39,8 +39,7 @@ update_client_colour() update_mouse_pointer() if(client) - client.change_view(CONFIG_GET(string/default_view)) // Resets the client.view in case it was changed. - + client.view_size?.resetToDefault() if(client.player_details && istype(client.player_details)) if(client.player_details.player_actions.len) for(var/datum/action/A in client.player_details.player_actions) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 7e14224e0d..ab2556abb5 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -39,6 +39,7 @@ . = ..() update_config_movespeed() update_movespeed(TRUE) + initialize_actionspeed() hook_vr("mob_new",list(src)) /mob/GenerateTag() @@ -491,7 +492,6 @@ mob/visible_message(message, self_message, blind_message, vision_distance = DEFA client.prefs.chat_toggles ^= CHAT_OOC if (!(client.prefs.chat_toggles & CHAT_OOC) && isdead(new_mob)) client.prefs.chat_toggles ^= CHAT_OOC - client.change_view(CONFIG_GET(string/default_view)) new_mob.ckey = ckey if(send_signal) SEND_SIGNAL(src, COMSIG_MOB_KEY_CHANGE, new_mob, src) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 03a3ab1001..8c6b722140 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -58,6 +58,13 @@ var/list/movespeed_mod_immunities //Lazy list, see mob_movespeed.dm /// The calculated mob speed slowdown based on the modifiers list var/cached_multiplicative_slowdown + /// List of action speed modifiers applying to this mob + var/list/actionspeed_modification //Lazy list, see mob_movespeed.dm + /// List of action speed modifiers ignored by this mob. List -> List (id) -> List (sources) + var/list/actionspeed_mod_immunities //Lazy list, see mob_movespeed.dm + /// The calculated mob action speed slowdown based on the modifiers list + var/cached_multiplicative_actions_slowdown + ///////////////// var/name_archive //For admin things like possession diff --git a/code/modules/movespeed/_movespeed_modifier.dm b/code/modules/movespeed/_movespeed_modifier.dm index 3bc4463531..9c8036bd55 100644 --- a/code/modules/movespeed/_movespeed_modifier.dm +++ b/code/modules/movespeed/_movespeed_modifier.dm @@ -38,6 +38,12 @@ Key procs /// Multiplicative slowdown var/multiplicative_slowdown = 0 + /// Next two variables depend on this: Should we do advanced calculations? + var/complex_calculation = FALSE + /// Absolute max tiles we can boost to + var/absolute_max_tiles_per_second + /// Max tiles per second we can boost + var/max_tiles_per_second_boost /// Movetypes this applies to var/movetypes = ALL @@ -53,6 +59,16 @@ Key procs if(!id) id = "[type]" //We turn the path into a string. +/** + * Returns new multiplicative movespeed after modification. + */ +/datum/movespeed_modifier/proc/apply_multiplicative(existing, mob/target) + if(!complex_calculation || (multiplicative_slowdown > 0)) // we aren't limiting how much things can slowdown.. yet. + return existing + multiplicative_slowdown + var/current_tiles = 10 / max(existing, world.tick_lag) + var/minimum_speed = 10 / min(current_tiles + max_tiles_per_second_boost, max(current_tiles, absolute_max_tiles_per_second)) + return max(minimum_speed, existing + multiplicative_slowdown) + GLOBAL_LIST_EMPTY(movespeed_modification_cache) /// Grabs a STATIC MODIFIER datum from cache. YOU MUST NEVER EDIT THESE DATUMS, OR IT WILL AFFECT ANYTHING ELSE USING IT TOO! @@ -171,13 +187,15 @@ GLOBAL_LIST_EMPTY(movespeed_modification_cache) /// Set or update the global movespeed config on a mob /mob/proc/update_config_movespeed() add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/mob_config_speedmod, multiplicative_slowdown = get_config_multiplicative_speed()) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/mob_config_speedmod_floating, multiplicative_slowdown = get_config_multiplicative_speed(TRUE)) /// Get the global config movespeed of a mob by type -/mob/proc/get_config_multiplicative_speed() - if(!islist(GLOB.mob_config_movespeed_type_lookup) || !GLOB.mob_config_movespeed_type_lookup[type]) +/mob/proc/get_config_multiplicative_speed(floating = FALSE) + var/list/read = floating? GLOB.mob_config_movespeed_type_lookup_floating : GLOB.mob_config_movespeed_type_lookup + if(!islist(read) || !read[type]) return 0 else - return GLOB.mob_config_movespeed_type_lookup[type] + return read[type] /// Go through the list of movespeed modifiers and calculate a final movespeed. ANY ADD/REMOVE DONE IN UPDATE_MOVESPEED MUST HAVE THE UPDATE ARGUMENT SET AS FALSE! /mob/proc/update_movespeed() @@ -198,7 +216,7 @@ GLOBAL_LIST_EMPTY(movespeed_modification_cache) conflict_tracker[conflict] = amt else continue - . += amt + . = M.apply_multiplicative(., src) var/old = cached_multiplicative_slowdown // CITAEDL EDIT - To make things a bit less jarring, when in situations where // your delay decreases, "give" the delay back to the client cached_multiplicative_slowdown = . @@ -220,6 +238,13 @@ GLOBAL_LIST_EMPTY(movespeed_modification_cache) var/datum/movespeed_modifier/M = movespeed_modification[id] . += M.multiplicative_slowdown +/** + * Gets the movespeed modifier datum of a modifier on a mob. Returns null if not found. + * DANGER: IT IS UP TO THE PERSON USING THIS TO MAKE SURE THE MODIFIER IS NOT MODIFIED IF IT HAPPENS TO BE GLOBAL/CACHED. + */ +/mob/proc/get_movespeed_modifier_datum(id) + return movespeed_modification[id] + /// Checks if a move speed modifier is valid and not missing any data /proc/movespeed_data_null_check(datum/movespeed_modifier/M) //Determines if a data list is not meaningful and should be discarded. . = TRUE diff --git a/code/modules/movespeed/modifiers/innate.dm b/code/modules/movespeed/modifiers/innate.dm index a0357ddf0f..946d93e96b 100644 --- a/code/modules/movespeed/modifiers/innate.dm +++ b/code/modules/movespeed/modifiers/innate.dm @@ -18,3 +18,7 @@ blacklisted_movetypes = (FLOATING|CRAWLING) variable = TRUE flags = IGNORE_NOSLOW + +/datum/movespeed_modifier/slime_puddle + multiplicative_slowdown = 2 + flags = IGNORE_NOSLOW diff --git a/code/modules/movespeed/modifiers/items.dm b/code/modules/movespeed/modifiers/items.dm index 94dc2a1553..a8510ecd86 100644 --- a/code/modules/movespeed/modifiers/items.dm +++ b/code/modules/movespeed/modifiers/items.dm @@ -1,12 +1,13 @@ /datum/movespeed_modifier/jetpack conflicts_with = MOVE_CONFLICT_JETPACK movetypes = FLOATING + multiplicative_slowdown = -1 /datum/movespeed_modifier/jetpack/cybernetic - multiplicative_slowdown = -0.5 + multiplicative_slowdown = -1.25 /datum/movespeed_modifier/jetpack/fullspeed - multiplicative_slowdown = -2 + multiplicative_slowdown = -1.5 /datum/movespeed_modifier/die_of_fate multiplicative_slowdown = 1 diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm index d17767bb1f..f6cf84eb83 100644 --- a/code/modules/movespeed/modifiers/mobs.dm +++ b/code/modules/movespeed/modifiers/mobs.dm @@ -111,6 +111,12 @@ /datum/movespeed_modifier/mob_config_speedmod variable = TRUE + blacklisted_movetypes = FLOATING + flags = IGNORE_NOSLOW + +/datum/movespeed_modifier/mob_config_speedmod_floating + variable = TRUE + movetypes = FLOATING flags = IGNORE_NOSLOW /datum/movespeed_modifier/liver_cirrhosis @@ -120,3 +126,30 @@ /datum/movespeed_modifier/active_block variable = TRUE flags = IGNORE_NOSLOW + +/datum/movespeed_modifier/sprinting + flags = IGNORE_NOSLOW + blacklisted_movetypes = FLOATING + priority = 100 + +/// for speed reasons this is sorta copypasty. +/datum/movespeed_modifier/sprinting/apply_multiplicative(existing, mob/target) + . = existing + if(target.m_intent != MOVE_INTENT_RUN) + return + if(isliving(target)) + var/mob/living/L = target + if(!(L.mobility_flags & MOBILITY_STAND)) + return + var/static/datum/config_entry/number/movedelay/sprint_max_tiles_increase/SMTI + if(!SMTI) + SMTI = CONFIG_GET_ENTRY(number/movedelay/sprint_max_tiles_increase) + var/static/datum/config_entry/number/movedelay/sprint_speed_increase/SSI + if(!SSI) + SSI = CONFIG_GET_ENTRY(number/movedelay/sprint_speed_increase) + var/static/datum/config_entry/number/movedelay/sprint_absolute_max_tiles/SAMT + if(!SAMT) + SAMT = CONFIG_GET_ENTRY(number/movedelay/sprint_absolute_max_tiles) + var/current_tiles = 10 / max(existing, world.tick_lag) + var/minimum_speed = 10 / min(max(SAMT.config_entry_value, current_tiles), current_tiles + SMTI.config_entry_value) + . = min(., max(minimum_speed, existing - SSI.config_entry_value)) diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm index 0e553ced35..25b5cfb51b 100644 --- a/code/modules/paperwork/ticketmachine.dm +++ b/code/modules/paperwork/ticketmachine.dm @@ -160,8 +160,7 @@ /obj/machinery/ticket_machine/proc/reset_cooldown() ready = TRUE -/obj/machinery/ticket_machine/attack_hand(mob/living/carbon/user) - . = ..() +/obj/machinery/ticket_machine/on_attack_hand(mob/living/carbon/user) INVOKE_ASYNC(src, .proc/attempt_ticket, user) /obj/machinery/ticket_machine/proc/attempt_ticket(mob/living/carbon/user) diff --git a/code/modules/plumbing/plumbers/autohydro.dm b/code/modules/plumbing/plumbers/autohydro.dm index 20b8e6012a..9c358d8d6e 100644 --- a/code/modules/plumbing/plumbers/autohydro.dm +++ b/code/modules/plumbing/plumbers/autohydro.dm @@ -30,20 +30,8 @@ . = ..() START_PROCESSING(SSobj, src) create_reagents(100 , AMOUNT_VISIBLE) - AddComponent(/datum/component/plumbing/simple_demand) - -/obj/machinery/hydroponics/constructable/automagic/ComponentInitialize() - . = ..() - AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated)) - - -/obj/machinery/hydroponics/constructable/proc/can_be_rotated(mob/user, rotation_type) - return !anchored /obj/machinery/hydroponics/constructable/automagic/process() - if(reagents) - reagents.add_reagent(reagents) - reagents.clear_reagents() if(dead) dead = 0 qdel(myseed) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index fe05365dd9..a4daeb6a33 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -407,3 +407,10 @@ /obj/item/stock_parts/cell/toymagburst name = "toy mag burst rifle power supply" maxcharge = 4000 + +/obj/item/stock_parts/cell/family + name = "broken power cell" + desc = "An old faulty power cell. You can see your family name faintly etched onto it." + maxcharge = 100 + self_recharge = -5 //it loses power over time instead of gaining + rating = 1 diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index b558031fab..c19927e84c 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -53,6 +53,33 @@ power_gen = 1250 // 2500 on T1, 10000 on T4. circuit = /obj/item/circuitboard/machine/rtg/advanced +/obj/machinery/power/rtg/advanced/fullupgrade //fully ugpraded stock parts + desc = "An advanced RTG capable of moderating isotope decay, increasing power output but reducing lifetime. It uses plasma-fueled radiation collectors to increase output even further. This model is fully upgraded with the latest tech available in this quadrant." + +/obj/machinery/power/rtg/advanced/fullupgrade/Initialize() + . = ..() + //This looks terrifying. And apparently instancing vars and modifying the amount variable causes runtime errors. Guess we're sticking to copy pasta, thanks, byond. + component_parts = list() + component_parts += new /obj/item/circuitboard/machine/rtg/advanced(null) + component_parts += new /obj/item/stack/sheet/mineral/uranium(null) + component_parts += new /obj/item/stack/sheet/mineral/uranium(null) + component_parts += new /obj/item/stack/sheet/mineral/uranium(null) + component_parts += new /obj/item/stack/sheet/mineral/uranium(null) + component_parts += new /obj/item/stack/sheet/mineral/uranium(null) + component_parts += new /obj/item/stack/sheet/mineral/uranium(null) + component_parts += new /obj/item/stack/sheet/mineral/uranium(null) + component_parts += new /obj/item/stack/sheet/mineral/uranium(null) + component_parts += new /obj/item/stack/sheet/mineral/uranium(null) + component_parts += new /obj/item/stack/sheet/mineral/uranium(null) + component_parts += new /obj/item/stack/sheet/mineral/plasma(null) + component_parts += new /obj/item/stack/sheet/mineral/plasma(null) + component_parts += new /obj/item/stack/sheet/mineral/plasma(null) + component_parts += new /obj/item/stack/sheet/mineral/plasma(null) + component_parts += new /obj/item/stack/sheet/mineral/plasma(null) + component_parts += new /obj/item/stock_parts/capacitor/quadratic(null) + component_parts += new /obj/item/stock_parts/micro_laser/quadultra(null) + RefreshParts() + // Void Core, power source for Abductor ships and bases. // Provides a lot of power, but tends to explode when mistreated. diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 50dae7d6bb..6961ec54bb 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -364,7 +364,7 @@ icon_state_on = "protoemitter_+a" can_buckle = TRUE buckle_lying = FALSE - var/view_range = 12 + var/view_range = 4.5 var/datum/action/innate/protoemitter/firing/auto //BUCKLE HOOKS @@ -379,7 +379,7 @@ buckled_mob.pixel_x = 0 buckled_mob.pixel_y = 0 if(buckled_mob.client) - buckled_mob.client.change_view(CONFIG_GET(string/default_view)) + buckled_mob.client.view_size.resetToDefault() auto.Remove(buckled_mob) . = ..() @@ -395,7 +395,7 @@ M.pixel_y = 14 layer = 4.1 if(M.client) - M.client.change_view(view_range) + M.client.view_size.setTo(view_range) if(!auto) auto = new() auto.Grant(M, src) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index e3fdbd3654..f385b640aa 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -928,8 +928,15 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) var/mob/living/user = AM if(user.status_flags & GODMODE) return - message_admins("[src] has consumed [key_name_admin(user)] [ADMIN_JMP(src)].") - investigate_log("has consumed [key_name(user)].", INVESTIGATE_SUPERMATTER) + var/add + if(user.mind?.assigned_role == "Clown") + var/denergy = rand(-1000, 1000) + var/ddamage = rand(-150, clamp(150, 0, (explosion_point - damage) + 150)) + power += denergy + damage += ddamage + add = ", adding [denergy] energy and [ddamage] damage to the crystal" + message_admins("[src] has consumed [key_name_admin(user)] [ADMIN_JMP(src)][add].") + investigate_log("has consumed [key_name(user)][add].", INVESTIGATE_SUPERMATTER) user.dust(force = TRUE) if(power_changes) matter_power += 200 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 8cddd5d02f..1c3a0d230f 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -134,7 +134,7 @@ /obj/item/gun/equipped(mob/living/user, slot) . = ..() if(zoomed && user.get_active_held_item() != src) - zoom(user, FALSE) //we can only stay zoomed in if it's in our hands //yeah and we only unzoom if we're actually zoomed using the gun!! + zoom(user, user.dir, FALSE) //we can only stay zoomed in if it's in our hands //yeah and we only unzoom if we're actually zoomed using the gun!! //called after the gun has successfully fired its chambered ammo. /obj/item/gun/proc/process_chamber(mob/living/user) @@ -154,8 +154,8 @@ shake_camera(user, recoil + 1, recoil) if(stam_cost) //CIT CHANGE - makes gun recoil cause staminaloss - var/safe_cost = clamp(stam_cost, 0, STAMINA_NEAR_CRIT - user.getStaminaLoss())*(firing && burst_size >= 2 ? 1/burst_size : 1) - user.adjustStaminaLossBuffered(safe_cost) //CIT CHANGE - ditto + var/safe_cost = clamp(stam_cost, 0, user.stamina_buffer)*(firing && burst_size >= 2 ? 1/burst_size : 1) + user.UseStaminaBuffer(safe_cost) if(suppressed) playsound(user, fire_sound, 10, 1) @@ -439,7 +439,7 @@ /obj/item/gun/ui_action_click(mob/user, action) if(istype(action, /datum/action/item_action/toggle_scope_zoom)) - zoom(user) + zoom(user, user.dir) else if(istype(action, alight)) toggle_gunlight() @@ -554,14 +554,19 @@ . = ..() if(!.) var/obj/item/gun/G = target - G.zoom(owner, FALSE) + G.zoom(owner, owner.dir) /datum/action/item_action/toggle_scope_zoom/Remove(mob/living/L) var/obj/item/gun/G = target - G.zoom(L, FALSE) + G.zoom(L, L.dir) return ..() -/obj/item/gun/proc/zoom(mob/living/user, forced_zoom) +/obj/item/gun/proc/rotate(atom/thing, old_dir, new_dir) + if(ismob(thing)) + var/mob/lad = thing + lad.client.view_size.zoomOut(zoom_out_amt, zoom_amt, new_dir) + +/obj/item/gun/proc/zoom(mob/living/user, direct, forced_zoom) if(!(user?.client)) return @@ -573,25 +578,11 @@ zoomed = !zoomed if(zoomed) - var/_x = 0 - var/_y = 0 - switch(user.dir) - if(NORTH) - _y = zoom_amt - if(EAST) - _x = zoom_amt - if(SOUTH) - _y = -zoom_amt - if(WEST) - _x = -zoom_amt - - user.client.change_view(zoom_out_amt) - user.client.pixel_x = world.icon_size*_x - user.client.pixel_y = world.icon_size*_y + RegisterSignal(user, COMSIG_ATOM_DIR_CHANGE, .proc/rotate) + user.client.view_size.zoomOut(zoom_out_amt, zoom_amt, direct) else - user.client.change_view(CONFIG_GET(string/default_view)) - user.client.pixel_x = 0 - user.client.pixel_y = 0 + UnregisterSignal(user, COMSIG_ATOM_DIR_CHANGE) + user.client.view_size.zoomIn() /obj/item/gun/handle_atom_del(atom/A) if(A == chambered) @@ -599,6 +590,9 @@ update_icon() /obj/item/gun/proc/getinaccuracy(mob/living/user, bonus_spread, stamloss) + return 0 // Replacement TBD: Exponential curved aim instability system. + +/* if(inaccuracy_modifier == 0) return bonus_spread var/base_inaccuracy = weapon_weight * 25 * inaccuracy_modifier @@ -621,6 +615,7 @@ if(mult < 0) //accurate weapons should provide a proper bonus with negative inaccuracy. the opposite is true too. mult *= 1/inaccuracy_modifier return max(bonus_spread + (base_inaccuracy * mult), 0) //no negative spread. +*/ /obj/item/gun/proc/getstamcost(mob/living/carbon/user) . = recoil diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 9210e66f22..00e59d09f8 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -374,7 +374,7 @@ inaccuracy_modifier = 0.5 zoomable = TRUE zoom_amt = 10 //Long range, enough to see in front of you, but no tiles behind you. - zoom_out_amt = 13 + zoom_out_amt = 5 slot_flags = ITEM_SLOT_BACK automatic_burst_overlay = FALSE actions_types = list() diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index a26f05d553..0026a612e0 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -85,9 +85,14 @@ . += "[get_ammo(0,0)] of those are live rounds." /obj/item/gun/ballistic/revolver/syndicate + obj_flags = UNIQUE_RENAME unique_reskin = list("Default" = "revolver", "Silver" = "russianrevolver", - "Robust" = "revolvercit") + "Robust" = "revolvercit", + "Bulky" = "revolverhakita", + "Polished" = "revolvertoriate", + "Soulless" = "revolveroldflip", + "Soul" = "revolverold") /obj/item/gun/ballistic/revolver/detective name = "\improper .38 Mars Special" diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index ecf6e538b8..7b3ac36ef6 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -44,10 +44,9 @@ if(HAS_TRAIT(user, TRAIT_FAST_PUMP)) recentpump = world.time + 2 else + if(!user.UseStaminaBuffer(2, warn = TRUE)) + return recentpump = world.time + 10 - if(istype(user))//CIT CHANGE - makes pumping shotguns cost a lil bit of stamina. - user.adjustStaminaLossBuffered(2) //CIT CHANGE - DITTO. make this scale inversely to the strength stat when stats/skills are added - return /obj/item/gun/ballistic/shotgun/blow_up(mob/user) . = 0 diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index c1f47ccd1a..438c000a1e 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -105,10 +105,20 @@ holds_charge = TRUE unique_frequency = TRUE +/obj/item/gun/energy/kinetic_accelerator/cyborg/Destroy() + for(var/obj/item/borg/upgrade/modkit/M in modkits) + M.uninstall(src) + return ..() + /obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg holds_charge = TRUE unique_frequency = TRUE +/obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg/Destroy() + for(var/obj/item/borg/upgrade/modkit/M in modkits) + M.uninstall(src) + return ..() + /obj/item/gun/energy/kinetic_accelerator/minebot trigger_guard = TRIGGER_GUARD_ALLOW_ALL overheat_time = 20 @@ -284,11 +294,11 @@ else ..() -/obj/item/borg/upgrade/modkit/action(mob/living/silicon/robot/R) - . = ..() - if (.) - for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/H in R.module.modules) - return install(H, usr) +/obj/item/borg/upgrade/modkit/afterInstall(mob/living/silicon/robot/R) + for(var/obj/item/gun/energy/kinetic_accelerator/H in R.module.modules) + if(install(H, R)) //It worked + return + to_chat(R, "Upgrade error - Aborting Kinetic Accelerator linking.") //No applicable KA found, insufficient capacity, or some other problem. /obj/item/borg/upgrade/modkit/proc/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user) . = TRUE @@ -323,12 +333,6 @@ to_chat(user, "You don't have room([KA.get_remaining_mod_capacity()]% remaining, [cost]% needed) to install this modkit. Use a crowbar to remove existing modkits.") . = FALSE -/obj/item/borg/upgrade/modkit/deactivate(mob/living/silicon/robot/R, user = usr) - . = ..() - if (.) - for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/KA in R.module.modules) - uninstall(KA) - /obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/gun/energy/kinetic_accelerator/KA, forcemove = TRUE) KA.modkits -= src if(forcemove) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 19ca42022d..cd91a7670d 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -233,7 +233,7 @@ p_blue.link_portal(p_orange) /obj/item/gun/energy/wormhole_projector/proc/create_portal(obj/item/projectile/beam/wormhole/W, turf/target) - var/obj/effect/portal/P = new /obj/effect/portal(target, src, 300, null, FALSE, null, atmos_link) + var/obj/effect/portal/P = new /obj/effect/portal(target, 300, null, FALSE, null, atmos_link) if(istype(W, /obj/item/projectile/beam/wormhole/orange)) qdel(p_orange) p_orange = P diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index 5e250d44e2..9d9f6aeb83 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -69,7 +69,8 @@ //ZOOMING var/zoom_current_view_increase = 0 - var/zoom_target_view_increase = 10 + ///The radius you want to zoom by + var/zoom_target_view_increase = 9.5 var/zooming = FALSE var/zoom_lock = ZOOM_LOCK_OFF var/zooming_angle @@ -133,7 +134,7 @@ if(zoom_lock == ZOOM_LOCK_OFF) return zooming = TRUE - current_user.client.change_view(world.view + zoom_target_view_increase) + current_user.client.view_size.setTo(zoom_target_view_increase) zoom_current_view_increase = zoom_target_view_increase /obj/item/gun/energy/beam_rifle/proc/stop_zooming(mob/user) @@ -146,9 +147,8 @@ user = current_user if(!user || !user.client) return FALSE - animate(user.client, pixel_x = 0, pixel_y = 0, 0, FALSE, LINEAR_EASING, ANIMATION_END_NOW) + user.client.view_size.zoomIn() zoom_current_view_increase = 0 - user.client.change_view(CONFIG_GET(string/default_view)) zooming_angle = 0 current_zoom_x = 0 current_zoom_y = 0 diff --git a/code/modules/projectiles/projectile/special/rocket.dm b/code/modules/projectiles/projectile/special/rocket.dm index df417ad734..b3737a8388 100644 --- a/code/modules/projectiles/projectile/special/rocket.dm +++ b/code/modules/projectiles/projectile/special/rocket.dm @@ -73,4 +73,4 @@ explosion(target, 0, 1, 1, 2) return BULLET_ACT_HIT //if(istype(target, /turf/closed) || ismecha(target)) - new /obj/item/broken_missile(get_turf(src), 1) \ No newline at end of file + new /obj/item/broken_missile(get_turf(src), 1) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index cd21723e64..bbc44730b6 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -2283,7 +2283,7 @@ All effects don't start immediately, but rather get worse over time; the rate is boozepwr = 50 /datum/reagent/consumable/ethanol/species_drink/on_mob_life(mob/living/carbon/C) - if(C.dna.species && C.dna.species.species_type == species_required) //species have a species_type variable that refers to one of the drinks + if(C.dna.species && C.dna.species.species_category == species_required) //species have a species_category variable that refers to one of the drinks quality = RACE_DRINK else C.adjust_disgust(disgust) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index f62391886c..e64647028c 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -565,7 +565,7 @@ var/diff_len = length(GLOB.skin_tones - GLOB.nonstandard_skin_tones) H.skin_tone = GLOB.skin_tones[min(diff_len, GLOB.skin_tones.Find(H.skin_tone) + 1)] else - H.skin_tone = H.dna.skin_tone_override = tan_mutant_color(H.dna.skin_tone_override, "#202020") + H.skin_tone = H.dna.skin_tone_override = tan_mutant_color(H.dna.skin_tone_override, MINIMUM_MUTANT_COLOR) if(MUTCOLORS in H.dna.species.species_traits) //take current alien color and darken it slightly H.dna.features["mcolor"] = tan_mutant_color(H.dna.features["mcolor"]) H.update_body() @@ -576,7 +576,7 @@ return ..() -/datum/reagent/spraytan/proc/tan_mutant_color(color, limit = "#7F7F7F") +/datum/reagent/spraytan/proc/tan_mutant_color(color, limit = MINIMUM_MUTANT_COLOR) var/newcolor = "" var/len = length(color) var/char = "" @@ -1984,6 +1984,11 @@ color = "#363636" carpet_type = /turf/open/floor/carpet/black +/datum/reagent/carpet/arcade + name = "Liquid Arcade Carpet" + color = "#b51d05" + carpet_type = /turf/open/floor/carpet/arcade + /datum/reagent/carpet/blackred name = "Liquid Red Black Carpet" color = "#342125" diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 585b33b189..019394e3c8 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -763,6 +763,12 @@ results = list(/datum/reagent/carpet/black = 2) required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/carbon = 1) +/datum/chemical_reaction/carpet/arcade + name = "liquid arcade carpet" + id = /datum/reagent/carpet/arcade + results = list(/datum/reagent/carpet/arcade = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/pwr_game = 1) + /datum/chemical_reaction/carpet/blackred name = "liquid red black carpet" id = /datum/reagent/carpet/blackred diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 86464aceea..070d5cb269 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -484,12 +484,12 @@ return FALSE var/list/D = holder.get_data("blood") if(D && D["changeling_loudness"]) - return (D["changeling_loudness"] >= 4 ? D["changeling_loudness"] : FALSE) + return (D["changeling_loudness"] >= LINGBLOOD_DETECTION_THRESHOLD ? D["changeling_loudness"] : FALSE) else return FALSE /datum/chemical_reaction/reagent_explosion/lingblood/on_reaction(datum/reagents/holder, multiplier, specialreact) - if(specialreact >= 10) + if(specialreact > LINGBLOOD_EXPLOSION_THRESHOLD) return ..() else return FALSE diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index bdaf39732f..ed12d4945e 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -181,6 +181,14 @@ build_path = /obj/item/storage/belt/janitor category = list("initial","Organic Materials") +/datum/design/plantbelt + name = "Botanical Belt" + id = "plantbelt" + build_type = BIOGENERATOR + materials = list(/datum/material/biomass= 300) + build_path = /obj/item/storage/belt/plant + category = list("initial","Organic Materials") + /datum/design/s_holster name = "Shoulder Holster" id = "s_holster" diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 7013412e6d..b178f936b7 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -32,7 +32,7 @@ materials = list(/datum/material/glass = 3000, /datum/material/plasma = 3000, /datum/material/diamond = 250, /datum/material/bluespace = 250) build_path = /obj/item/reagent_containers/glass/beaker/bluespace category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SERVICE /datum/design/noreactbeaker name = "Cryostasis Beaker" @@ -973,6 +973,10 @@ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL +///////////////////////////////////////// +//////////// Plumbing ////////// +///////////////////////////////////////// + /datum/design/acclimator name = "Plumbing Acclimator" desc = "A heating and cooling device for pipes!" @@ -1126,3 +1130,14 @@ build_path = /obj/item/construction/plumbing category = list("Misc","Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/rplunger + name = "Reinforced Plunger" + desc = "A plunger designed for heavy duty clogs." + id = "rplunger" + build_type = PROTOLATHE + materials = list(/datum/material/plasma = 1000, /datum/material/iron = 1000, /datum/material/glass = 1000) + construction_time = 15 + build_path = /obj/item/plunger/reinforced + category = list ("Misc","Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_CARGO diff --git a/code/modules/research/techweb/nodes/medical_nodes.dm b/code/modules/research/techweb/nodes/medical_nodes.dm index 150e420c09..7b9b2f2923 100644 --- a/code/modules/research/techweb/nodes/medical_nodes.dm +++ b/code/modules/research/techweb/nodes/medical_nodes.dm @@ -38,7 +38,7 @@ display_name = "Advanced Plumbing Technology" description = "Plumbing RCD." prereq_ids = list("plumbing", "adv_engi") - design_ids = list("plumb_rcd", "autohydrotray") + design_ids = list("plumb_rcd", "autohydrotray", "rplunger") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) //////////////////////Cybernetics///////////////////// diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index ed43576a61..cbfbbe2a36 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -335,15 +335,11 @@ datum/status_effect/rebreathing/tick() duration = 600 /datum/status_effect/timecookie/on_apply() - if(ishuman(owner)) - var/mob/living/carbon/human/H - H.physiology.do_after_speed *= 0.95 + owner.add_actionspeed_modifier(/datum/actionspeed_modifier/timecookie) return ..() /datum/status_effect/timecookie/on_remove() - if(ishuman(owner)) - var/mob/living/carbon/human/H - H.physiology.do_after_speed /= 0.95 + owner.remove_actionspeed_modifier(/datum/actionspeed_modifier/timecookie) return ..() /datum/status_effect/lovecookie diff --git a/code/modules/ruins/spaceruin_code/caravanambush.dm b/code/modules/ruins/spaceruin_code/caravanambush.dm index a7d89f3324..740850524c 100644 --- a/code/modules/ruins/spaceruin_code/caravanambush.dm +++ b/code/modules/ruins/spaceruin_code/caravanambush.dm @@ -68,7 +68,7 @@ lock_override = NONE shuttlePortId = "caravantrade1_custom" jumpto_ports = list("whiteship_away" = 1, "whiteship_home" = 1, "whiteship_z4" = 1, "caravantrade1_ambush" = 1) - view_range = 14 + view_range = 6.5 x_offset = -5 y_offset = -5 designate_time = 100 @@ -92,7 +92,7 @@ lock_override = NONE shuttlePortId = "caravanpirate_custom" jumpto_ports = list("caravanpirate_ambush" = 1) - view_range = 14 + view_range = 6.5 x_offset = 3 y_offset = -6 @@ -116,7 +116,7 @@ lock_override = NONE shuttlePortId = "caravansyndicate1_custom" jumpto_ports = list("caravansyndicate1_ambush" = 1, "caravansyndicate1_listeningpost" = 1) - view_range = 7 + view_range = 0 x_offset = 2 y_offset = 0 @@ -140,7 +140,7 @@ lock_override = NONE shuttlePortId = "caravansyndicate2_custom" jumpto_ports = list("caravansyndicate2_ambush" = 1, "caravansyndicate1_listeningpost" = 1) - view_range = 7 + view_range = 0 x_offset = 0 y_offset = 2 @@ -164,6 +164,6 @@ lock_override = NONE shuttlePortId = "caravansyndicate3_custom" jumpto_ports = list("caravansyndicate3_ambush" = 1, "caravansyndicate3_listeningpost" = 1) - view_range = 10 + view_range = 2.5 x_offset = -1 y_offset = -3 diff --git a/code/modules/ruins/spaceruin_code/skelter.dm b/code/modules/ruins/spaceruin_code/skelter.dm new file mode 100644 index 0000000000..526277cf56 --- /dev/null +++ b/code/modules/ruins/spaceruin_code/skelter.dm @@ -0,0 +1,4 @@ +/////////// skelter items + +/obj/item/paper/fluff/ruins/skelter/cloner + info = "You may be wondering why your pay has been cut, but rest assured - it's because we're investing in YOU! Should you meet your untimely demise, this machine can bring you back to life with as little as your brain! It also means death is no longer an acceptable excuse for neglecting your duties, so get back to work!
\n
\n-HQ" diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 195e87720c..21a9c6c5d7 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -2,6 +2,7 @@ name = "navigation computer" desc = "Used to designate a precise transit location for a spacecraft." jump_action = null + should_supress_view_changes = FALSE var/datum/action/innate/shuttledocker_rotate/rotate_action = new var/datum/action/innate/shuttledocker_place/place_action = new var/shuttleId = "" @@ -10,7 +11,7 @@ var/list/jumpto_ports = list() //hashset of ports to jump to and ignore for collision purposes var/obj/docking_port/stationary/my_port //the custom docking port placed by this console var/obj/docking_port/mobile/shuttle_port //the mobile docking port of the connected shuttle - var/view_range = 7 + var/view_range = 0 var/x_offset = 0 var/y_offset = 0 var/list/whitelist_turfs = list(/turf/open/space, /turf/open/floor/plating, /turf/open/lava) @@ -88,7 +89,7 @@ to_add += SSshuttle.hidden_shuttle_turf_images user.client.images += to_add - user.client.change_view(view_range) + user.client.view_size.setTo(view_range) /obj/machinery/computer/camera_advanced/shuttle_docker/remove_eye_control(mob/living/user) ..() @@ -101,7 +102,7 @@ to_remove += SSshuttle.hidden_shuttle_turf_images user.client.images -= to_remove - user.client.change_view(CONFIG_GET(string/default_view)) + user.client.view_size.resetToDefault() /obj/machinery/computer/camera_advanced/shuttle_docker/proc/placeLandingSpot() if(designating_target_loc || !current_user) diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index bdbdc08c6f..794f2bcd44 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -60,7 +60,7 @@ lock_override = CAMERA_LOCK_STATION shuttlePortId = "syndicate_custom" jumpto_ports = list("syndicate_ne" = 1, "syndicate_nw" = 1, "syndicate_n" = 1, "syndicate_se" = 1, "syndicate_sw" = 1, "syndicate_s" = 1) - view_range = 13 + view_range = 5.5 x_offset = -7 y_offset = -1 space_turfs_only = FALSE diff --git a/code/modules/shuttle/white_ship.dm b/code/modules/shuttle/white_ship.dm index f25fe30f36..66146edea1 100644 --- a/code/modules/shuttle/white_ship.dm +++ b/code/modules/shuttle/white_ship.dm @@ -25,7 +25,7 @@ lock_override = NONE shuttlePortId = "whiteship_custom" jumpto_ports = list("whiteship_away" = 1, "whiteship_home" = 1, "whiteship_z4" = 1) - view_range = 18 + view_range = 10 x_offset = -6 y_offset = -10 designate_time = 100 @@ -36,7 +36,7 @@ shuttleId = "whiteship_pod" shuttlePortId = "whiteship_pod_custom" jumpto_ports = list("whiteship_pod_home" = 1) - view_range = 7 + view_range = 0 x_offset = -2 y_offset = 0 designate_time = 0 diff --git a/code/modules/smithing/anvil.dm b/code/modules/smithing/anvil.dm index 19d48119e6..b796edabbf 100644 --- a/code/modules/smithing/anvil.dm +++ b/code/modules/smithing/anvil.dm @@ -36,6 +36,7 @@ icon_state = "anvil" density = TRUE anchored = TRUE + var/busy = FALSE //If someone is already interacting with this anvil var/workpiece_state = FALSE var/datum/material/workpiece_material var/anvilquality = 0 @@ -84,7 +85,7 @@ currentquality = anvilquality var/skillmod = 0 if(user.mind.skill_holder) - skillmod = user.mind.get_skill_level(/datum/skill/level/dorfy/blacksmithing)/2 + skillmod = user.mind.get_skill_level(/datum/skill/level/dwarfy/blacksmithing)/2 currentquality += skillmod qdel(notsword) else @@ -93,12 +94,14 @@ return else if(istype(I, /obj/item/melee/smith/hammer)) var/obj/item/melee/smith/hammer/hammertime = I - if(workpiece_state == WORKPIECE_PRESENT || workpiece_state == WORKPIECE_INPROGRESS) - do_shaping(user, hammertime.qualitymod) - return - else - to_chat(user, "You can't work an empty anvil!") - return FALSE + if(!(workpiece_state == WORKPIECE_PRESENT || workpiece_state == WORKPIECE_INPROGRESS)) + to_chat(user, "You can't work an empty anvil!") + return FALSE + if(busy) + to_chat(user, "This anvil is already being worked!") + return FALSE + do_shaping(user, hammertime.qualitymod) + return return ..() /obj/structure/anvil/wrench_act(mob/living/user, obj/item/I) @@ -108,16 +111,18 @@ /obj/structure/anvil/proc/do_shaping(mob/user, var/qualitychange) + busy = TRUE currentquality += qualitychange var/list/shapingsteps = list("weak hit", "strong hit", "heavy hit", "fold", "draw", "shrink", "bend", "punch", "upset") //weak/strong/heavy hit affect strength. All the other steps shape. workpiece_state = WORKPIECE_INPROGRESS var/stepdone = input(user, "How would you like to work the metal?") in shapingsteps var/steptime = 50 if(user.mind.skill_holder) - var/skillmod = user.mind.get_skill_level(/datum/skill/level/dorfy/blacksmithing)/10 + 1 + var/skillmod = user.mind.get_skill_level(/datum/skill/level/dwarfy/blacksmithing)/10 + 1 steptime = 50 / skillmod playsound(src, 'sound/effects/clang2.ogg',40, 2) if(!do_after(user, steptime, target = src)) + busy = FALSE return FALSE switch(stepdone) if("weak hit") @@ -162,16 +167,17 @@ addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/effects/clang2.ogg', 40, 2), 15) if(length(stepsdone) >= 3) tryfinish(user) + busy = FALSE /obj/structure/anvil/proc/tryfinish(mob/user) var/artifactchance = 0 if(!artifactrolled) - artifactchance = (1+(user.mind.get_skill_level(/datum/skill/level/dorfy/blacksmithing)/4))/2500 + artifactchance = (1+(user.mind.get_skill_level(/datum/skill/level/dwarfy/blacksmithing)/4))/2500 artifactrolled = TRUE var/artifact = max(prob(artifactchance), debug) var/finalfailchance = outrightfailchance if(user.mind.skill_holder) - var/skillmod = user.mind.get_skill_level(/datum/skill/level/dorfy/blacksmithing)/10 + 1 + var/skillmod = user.mind.get_skill_level(/datum/skill/level/dwarfy/blacksmithing)/10 + 1 finalfailchance = max(0, finalfailchance / skillmod) //lv 2 gives 20% less to fail, 3 30%, etc if((currentsteps > 10 || (rng && prob(finalfailchance))) && !artifact) to_chat(user, "You overwork the metal, causing it to turn into useless slag!") @@ -184,7 +190,7 @@ outrightfailchance = 1 artifactrolled = FALSE if(user.mind.skill_holder) - user.mind.auto_gain_experience(/datum/skill/level/dorfy/blacksmithing, 25, 400, silent = FALSE) + user.mind.auto_gain_experience(/datum/skill/level/dwarfy/blacksmithing, 25, 400, silent = FALSE) for(var/i in smithrecipes) if(i == stepsdone) var/turf/T = get_turf(user) @@ -217,7 +223,7 @@ outrightfailchance = 1 artifactrolled = FALSE if(user.mind.skill_holder) - user.mind.auto_gain_experience(/datum/skill/level/dorfy/blacksmithing, 50, 10000000, silent = FALSE) + user.mind.auto_gain_experience(/datum/skill/level/dwarfy/blacksmithing, 50, 10000000, silent = FALSE) break /obj/structure/anvil/debugsuper diff --git a/code/modules/smithing/smithed_items.dm b/code/modules/smithing/smithed_items.dm index 6d10d33a75..e514fd5c9a 100644 --- a/code/modules/smithing/smithed_items.dm +++ b/code/modules/smithing/smithed_items.dm @@ -35,7 +35,7 @@ if(G.max_heat_protection_temperature) prot = (G.max_heat_protection_temperature > 360) else - prot = 1 + prot = 0 if(prot > 0 || HAS_TRAIT(user, TRAIT_RESISTHEAT) || HAS_TRAIT(user, TRAIT_RESISTHEATHANDS)) to_chat(user, "You pick up the [src].") return ..() diff --git a/code/modules/spells/spell_types/devil_boons.dm b/code/modules/spells/spell_types/devil_boons.dm index 8ba106d77b..cf11466d19 100644 --- a/code/modules/spells/spell_types/devil_boons.dm +++ b/code/modules/spells/spell_types/devil_boons.dm @@ -43,7 +43,7 @@ for(var/mob/C in targets) if(!C.client) continue - C.client.change_view(input("Select view range:", "Range", 4) in ranges) + C.client.view_size.setTo((input("Select view range:", "Range", 4) in ranges) - 7) /obj/effect/proc_holder/spell/targeted/summon_friend name = "Summon Friend" diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index b3a82ea0e7..704dbffe51 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -483,12 +483,12 @@ //Checks disabled status thresholds //Checks disabled status thresholds -/obj/item/bodypart/proc/update_disabled() +/obj/item/bodypart/proc/update_disabled(silent = FALSE) if(!owner) return - set_disabled(is_disabled()) + set_disabled(is_disabled(silent), silent) -/obj/item/bodypart/proc/is_disabled() +/obj/item/bodypart/proc/is_disabled(silent = FALSE) if(!owner) return if(HAS_TRAIT(owner, TRAIT_PARALYSIS)) @@ -500,7 +500,7 @@ if(can_dismember() && !HAS_TRAIT(owner, TRAIT_NODISMEMBER)) . = disabled //inertia, to avoid limbs healing 0.1 damage and being re-enabled if(get_damage(TRUE) >= max_damage * (HAS_TRAIT(owner, TRAIT_EASYLIMBDISABLE) ? 0.6 : 1)) //Easy limb disable disables the limb at 40% health instead of 0% - if(!last_maxed) + if(!last_maxed && !silent) owner.emote("scream") last_maxed = TRUE if(!is_organic_limb() || stamina_dam >= max_damage) @@ -581,7 +581,7 @@ C = owner no_update = FALSE - if(HAS_TRAIT(C, TRAIT_HUSK) && is_organic_limb()) + if(HAS_TRAIT(C, TRAIT_HUSK) && (is_organic_limb() || render_like_organic)) species_id = "husk" //overrides species_id dmg_overlay_type = "" //no damage overlay shown when husked should_draw_gender = FALSE @@ -619,7 +619,10 @@ skin_tone = "" body_gender = H.dna.features["body_model"] - should_draw_gender = S.sexes + if(GLOB.nongendered_limb_types[species_id]) + should_draw_gender = FALSE + else + should_draw_gender = S.sexes var/mut_colors = (MUTCOLORS in S.species_traits) if(mut_colors) diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index fa003e3f3c..481bafbb3d 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -435,4 +435,7 @@ var/datum/wound/loss/phantom_loss = new // stolen valor, really scaries.generate(L, phantom_loss) L.attach_limb(src, 1) + if(ROBOTIC_LIMBS in dna.species.species_traits) //Snowflake trait moment, but needed. + L.render_like_organic = TRUE + L.change_bodypart_status(BODYPART_ROBOTIC, FALSE, TRUE) //Haha what if IPC-lings actually regenerated the right limbs instead of organic ones? That'd be pretty cool, right? return TRUE diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index b6a0a387e2..8b1473fed2 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -161,7 +161,7 @@ debrain_overlay.icon = 'icons/mob/animal_parts.dmi' debrain_overlay.icon_state = "debrained_larva" else if(!(NOBLOOD in species_flags_list)) - debrain_overlay.icon = 'icons/mob/human_face.dmi' + debrain_overlay.icon = 'icons/mob/human_parts.dmi' debrain_overlay.icon_state = "debrained" . += debrain_overlay else @@ -175,21 +175,31 @@ // lipstick if(lip_style) - var/image/lips_overlay = image('icons/mob/human_face.dmi', "lips_[lip_style]", -BODY_LAYER, SOUTH) + var/image/lips_overlay = image('icons/mob/lips.dmi', "lips_[lip_style]", -BODY_LAYER, SOUTH) lips_overlay.color = lip_color . += lips_overlay // eyes if(eyes) - var/image/left_eye = image('icons/mob/human_face.dmi', "left_eye", -BODY_LAYER, SOUTH) - var/image/right_eye = image('icons/mob/human_face.dmi', "right_eye", -BODY_LAYER, SOUTH) - if(eyes.left_eye_color && eyes.right_eye_color) - left_eye.color = "#" + eyes.left_eye_color - right_eye.color = "#" + eyes.right_eye_color - . += left_eye - . += right_eye + var/left_state = DEFAULT_LEFT_EYE_STATE + var/right_state = DEFAULT_RIGHT_EYE_STATE + if(owner && owner.dna.species) + var/eye_type = owner.dna.species.eye_type + if(GLOB.eye_types[eye_type]) + left_state = eye_type + "_left_eye" + right_state = eye_type + "_right_eye" + if(left_state != DEFAULT_NO_EYE_STATE) + var/image/left_eye = image('icons/mob/hair.dmi', left_state, -BODY_LAYER, SOUTH) + if(eyes.left_eye_color) + left_eye.color = "#" + eyes.left_eye_color + . += left_eye + if(right_state != DEFAULT_NO_EYE_STATE) + var/image/right_eye = image('icons/mob/hair.dmi', right_state, -BODY_LAYER, SOUTH) + if(eyes.right_eye_color) + right_eye.color = "#" + eyes.right_eye_color + . += right_eye else - var/eyes_overlay = image('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER, SOUTH) + var/eyes_overlay = image('icons/mob/hair.dmi', "eyes_missing", -BODY_LAYER, SOUTH) . += eyes_overlay /obj/item/bodypart/head/monkey diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm index 5a887ee6b7..86288564ae 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/parts.dm @@ -75,11 +75,11 @@ return BODYPART_DISABLED_PARALYSIS return ..() -/obj/item/bodypart/l_arm/set_disabled(new_disabled) +/obj/item/bodypart/l_arm/set_disabled(new_disabled, silent = FALSE) . = ..() if(!.) return - if(owner.stat < UNCONSCIOUS) + if(owner.stat < UNCONSCIOUS && !silent) switch(disabled) if(BODYPART_DISABLED_DAMAGE) owner.emote("scream") @@ -136,11 +136,11 @@ return BODYPART_DISABLED_PARALYSIS return ..() -/obj/item/bodypart/r_arm/set_disabled(new_disabled) +/obj/item/bodypart/r_arm/set_disabled(new_disabled, silent = FALSE) . = ..() if(!.) return - if(owner.stat < UNCONSCIOUS) + if(owner.stat < UNCONSCIOUS && !silent) switch(disabled) if(BODYPART_DISABLED_DAMAGE) owner.emote("scream") @@ -196,16 +196,17 @@ return BODYPART_DISABLED_PARALYSIS return ..() -/obj/item/bodypart/l_leg/set_disabled(new_disabled) +/obj/item/bodypart/l_leg/set_disabled(new_disabled, silent = FALSE) . = ..() if(!. || owner.stat >= UNCONSCIOUS) return - switch(disabled) - if(BODYPART_DISABLED_DAMAGE) - owner.emote("scream") - to_chat(owner, "Your [name] is too damaged to function!") - if(BODYPART_DISABLED_PARALYSIS) - to_chat(owner, "You can't feel your [name]!") + if(!silent) + switch(disabled) + if(BODYPART_DISABLED_DAMAGE) + owner.emote("scream") + to_chat(owner, "Your [name] is too damaged to function!") + if(BODYPART_DISABLED_PARALYSIS) + to_chat(owner, "You can't feel your [name]!") /obj/item/bodypart/l_leg/digitigrade name = "left digitigrade leg" @@ -253,16 +254,17 @@ return BODYPART_DISABLED_PARALYSIS return ..() -/obj/item/bodypart/r_leg/set_disabled(new_disabled) +/obj/item/bodypart/r_leg/set_disabled(new_disabled, silent = FALSE) . = ..() if(!. || owner.stat >= UNCONSCIOUS) return - switch(disabled) - if(BODYPART_DISABLED_DAMAGE) - owner.emote("scream") - to_chat(owner, "Your [name] is too damaged to function!") - if(BODYPART_DISABLED_PARALYSIS) - to_chat(owner, "You can't feel your [name]!") + if(!silent) + switch(disabled) + if(BODYPART_DISABLED_DAMAGE) + owner.emote("scream") + to_chat(owner, "Your [name] is too damaged to function!") + if(BODYPART_DISABLED_PARALYSIS) + to_chat(owner, "You can't feel your [name]!") /obj/item/bodypart/r_leg/digitigrade name = "right digitigrade leg" diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index a088eb2e4f..794823448f 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -248,7 +248,7 @@ /obj/item/organ/eyes/robotic/glow/Initialize() . = ..() - mob_overlay = image('icons/mob/human_face.dmi', "eyes_glow_gs") + mob_overlay = image('icons/mob/eyes.dmi', "eyes_glow_gs") /obj/item/organ/eyes/robotic/glow/Destroy() terminate_effects() diff --git a/code/modules/tooltip/tooltip.html b/code/modules/tooltip/tooltip.html index 3cab68da6a..60bd358031 100644 --- a/code/modules/tooltip/tooltip.html +++ b/code/modules/tooltip/tooltip.html @@ -120,12 +120,17 @@ window.location = 'byond://winset?id='+tooltip.control+';anchor1=0,0;size=999x999'; //Get the real icon size according to the client view + //FYI, this bit is even more borrowed from goon, our widescreen broke tooltips so I took a look at how they do it + //To improve our code. Thanks gooncoders, very cool var mapWidth = map['view-size'].x, mapHeight = map['view-size'].y, - tilesShown = tooltip.client_view_h - realIconSize = mapHeight / tilesShown, - resizeRatio = realIconSize / tooltip.tileSize, - //Calculate letterboxing offsets + tilesShownX = tooltip.client_view_w + tilesShownY = tooltip.client_view_h + realIconSizeX = mapWidth / tilesShownX, + realIconSizeY = mapHeight / tilesShownY, + resizeRatioX = realIconSizeX / tooltip.tileSize, + resizeRatioY = realIconSizeY / tooltip.tileSize, + //Calculate letterboxing offsets leftOffset = (map.size.x - mapWidth) / 2, topOffset = (map.size.y - mapHeight) / 2; @@ -168,7 +173,7 @@ if ((iconX + westOffset) !== enteredX) { //Cursor entered on the offset tile left = left + (westOffset < 0 ? 1 : -1); } - leftOffset = leftOffset + (westOffset * resizeRatio); + leftOffset = leftOffset + (westOffset * resizeRatioX); } } @@ -179,13 +184,13 @@ if (northOffset !== 0) { if ((iconY + northOffset) === enteredY) { //Cursor entered on the original tile top--; - topOffset = topOffset - ((tooltip.tileSize + northOffset) * resizeRatio); + topOffset = topOffset - ((tooltip.tileSize + northOffset) * resizeRatioY); } else { //Cursor entered on the offset tile if (northOffset < 0) { //Offset southwards - topOffset = topOffset - ((tooltip.tileSize + northOffset) * resizeRatio); + topOffset = topOffset - ((tooltip.tileSize + northOffset) * resizeRatioY); } else { //Offset northwards top--; - topOffset = topOffset - (northOffset * resizeRatio); + topOffset = topOffset - (northOffset * resizeRatioY); } } } @@ -198,12 +203,12 @@ } //Clamp values - left = (left < 0 ? 0 : (left > tilesShown ? tilesShown : left)); - top = (top < 0 ? 0 : (top > tilesShown ? tilesShown : top)); + left = (left < 0 ? 0 : (left > tilesShownX ? tilesShownX : left)); + top = (top < 0 ? 0 : (top > tilesShownY ? tilesShownY : top)); //Calculate where on the screen the popup should appear (below the hovered tile) - var posX = Math.round(((left - 1) * realIconSize) + leftOffset + tooltip.padding); //-1 to position at the left of the target tile - var posY = Math.round(((tilesShown - top + 1) * realIconSize) + topOffset + tooltip.padding); //+1 to position at the bottom of the target tile + var posX = Math.round(((left - 1) * realIconSizeX) + leftOffset + tooltip.padding); //-1 to position at the left of the target tile + var posY = Math.round(((tilesShownY - top + 1) * realIconSizeY) + topOffset + tooltip.padding); //+1 to position at the bottom of the target tile //alert(mapWidth+' | '+mapHeight+' | '+tilesShown+' | '+realIconSize+' | '+leftOffset+' | '+topOffset+' | '+left+' | '+top+' | '+posX+' | '+posY); //DEBUG @@ -221,7 +226,7 @@ docHeight = $wrap.outerHeight(); if (posY + docHeight > map.size.y) { //Is the bottom edge below the window? Snap it up if so - posY = (posY - docHeight) - realIconSize - tooltip.padding; + posY = (posY - docHeight) - realIconSizeY - tooltip.padding; } //Actually size, move and show the tooltip box diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index e758a43589..3229304c13 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -2,13 +2,41 @@ //Keep this sorted alphabetically #ifdef UNIT_TESTS +/// Asserts that a condition is true +/// If the condition is not true, fails the test +#define TEST_ASSERT(assertion, reason) if (!(assertion)) { return Fail("Assertion failed: [reason || "No reason"]") } + +/// Asserts that the two parameters passed are equal, fails otherwise +/// Optionally allows an additional message in the case of a failure +#define TEST_ASSERT_EQUAL(a, b, message) if ((a) != (b)) { return Fail("Expected [isnull(a) ? "null" : a] to be equal to [isnull(b) ? "null" : b].[message ? " [message]" : ""]") } + #include "anchored_mobs.dm" +#include "bespoke_id.dm" +// #include "binary_insert.dm" +// #include "card_mismatch.dm" shame we don't have this! +#include "chain_pull_through_space.dm" #include "character_saving.dm" #include "component_tests.dm" +// #include "confusion.dm" +// #include "keybinding_init.dm" +#include "machine_disassembly.dm" +#include "medical_wounds.dm" +// #include "metabolizing.dm" +// #include "outfit_sanity.dm" +// #include "plantgrowth_tests.dm" +// #include "quick_swap_sanity.dm" - we don't have quick swap yet #include "reagent_id_typos.dm" #include "reagent_recipe_collisions.dm" +#include "resist.dm" +// #include "say.dm" //no saymods, someone update saycode please. +// #include "siunit.dm" #include "spawn_humans.dm" +// #include "species_whitelists.dm" #include "subsystem_init.dm" +#include "surgeries.dm" #include "timer_sanity.dm" #include "unit_test.dm" + +#undef TEST_ASSERT +#undef TEST_ASSERT_EQUAL #endif diff --git a/code/modules/unit_tests/anchored_mobs.dm b/code/modules/unit_tests/anchored_mobs.dm index 5324179bb7..103b97e7a9 100644 --- a/code/modules/unit_tests/anchored_mobs.dm +++ b/code/modules/unit_tests/anchored_mobs.dm @@ -6,4 +6,4 @@ L += "[i]" if(!L.len) return //passed! - Fail("The following mobs are defined as anchored. This is incompatible with the new move force/resist system and needs to be revised.: [L.Join(" ")]") \ No newline at end of file + Fail("The following mobs are defined as anchored. This is incompatible with the new move force/resist system and needs to be revised.: [L.Join(" ")]") diff --git a/code/modules/unit_tests/bespoke_id.dm b/code/modules/unit_tests/bespoke_id.dm new file mode 100644 index 0000000000..06676c626c --- /dev/null +++ b/code/modules/unit_tests/bespoke_id.dm @@ -0,0 +1,8 @@ +/datum/unit_test/bespoke_id/Run() + var/datum/element/base = /datum/element + var/base_index = initial(base.id_arg_index) + + for(var/i in subtypesof(/datum/element)) + var/datum/element/faketype = i + if((initial(faketype.element_flags) & ELEMENT_BESPOKE) && initial(faketype.id_arg_index) == base_index) + Fail("A bespoke element was not configured with a proper id_arg_index: [faketype]") diff --git a/code/modules/unit_tests/binary_insert.dm b/code/modules/unit_tests/binary_insert.dm new file mode 100644 index 0000000000..ac7f58208e --- /dev/null +++ b/code/modules/unit_tests/binary_insert.dm @@ -0,0 +1,26 @@ +/// A test to ensure the sanity of BINARY_INSERT +/datum/unit_test/binary_insert/Run() + var/list/datum/binary_insert_node/nodes = list() + + var/datum/binary_insert_node/node_a = new /datum/binary_insert_node(10) + BINARY_INSERT(node_a, nodes, /datum/binary_insert_node, node_a, x, COMPARE_KEY) + TEST_ASSERT_EQUAL(nodes.len, 1, "List should have one node") + + var/datum/binary_insert_node/node_b = new /datum/binary_insert_node(5) + BINARY_INSERT(node_b, nodes, /datum/binary_insert_node, node_b, x, COMPARE_KEY) + TEST_ASSERT_EQUAL(nodes.len, 2, "List should have two nodes") + TEST_ASSERT_EQUAL(nodes[1].x, 5, "The first node should be the one with 5") + TEST_ASSERT_EQUAL(nodes[2].x, 10, "The second node should be the one with 10") + + var/datum/binary_insert_node/node_c = new /datum/binary_insert_node(15) + BINARY_INSERT(node_c, nodes, /datum/binary_insert_node, node_c, x, COMPARE_KEY) + TEST_ASSERT_EQUAL(nodes.len, 3, "List should have three nodes") + TEST_ASSERT_EQUAL(nodes[1].x, 5, "The first node should be the one with 5") + TEST_ASSERT_EQUAL(nodes[2].x, 10, "The second node should be the one with 10") + TEST_ASSERT_EQUAL(nodes[3].x, 15, "The third node should be the one with 15") + +/datum/binary_insert_node + var/x + +/datum/binary_insert_node/New(_x) + x = _x diff --git a/code/modules/unit_tests/chain_pull_through_space.dm b/code/modules/unit_tests/chain_pull_through_space.dm new file mode 100644 index 0000000000..ffdd1bf7c9 --- /dev/null +++ b/code/modules/unit_tests/chain_pull_through_space.dm @@ -0,0 +1,62 @@ +/datum/unit_test/chain_pull_through_space + var/turf/open/space/space_tile + var/turf/claimed_tile + var/mob/living/carbon/human/alice + var/mob/living/carbon/human/bob + var/mob/living/carbon/human/charlie + +/datum/unit_test/chain_pull_through_space/New() + ..() + + // Create a space tile that goes to another z-level + claimed_tile = run_loc_bottom_left + + space_tile = new(locate(run_loc_bottom_left.x, run_loc_bottom_left.y, run_loc_bottom_left.z)) + space_tile.destination_x = 100 + space_tile.destination_y = 100 + space_tile.destination_z = 5 + + // Create our list of humans, all adjacent to one another + alice = new(locate(run_loc_bottom_left.x + 2, run_loc_bottom_left.y, run_loc_bottom_left.z)) + alice.name = "Alice" + + bob = new(locate(run_loc_bottom_left.x + 3, run_loc_bottom_left.y, run_loc_bottom_left.z)) + bob.name = "Bob" + + charlie = new(locate(run_loc_bottom_left.x + 4, run_loc_bottom_left.y, run_loc_bottom_left.z)) + charlie.name = "Charlie" + +/datum/unit_test/chain_pull_through_space/Destroy() + space_tile.copyTurf(claimed_tile) + qdel(alice) + qdel(bob) + qdel(charlie) + return ..() + +/datum/unit_test/chain_pull_through_space/Run() + // Alice pulls Bob, who pulls Charlie + // Normally, when Alice moves forward, the rest follow + alice.start_pulling(bob) + bob.start_pulling(charlie) + + // Walk normally to the left, make sure we're still a chain + alice.Move(locate(run_loc_bottom_left.x + 1, run_loc_bottom_left.y, run_loc_bottom_left.z)) + if (bob.x != run_loc_bottom_left.x + 2) + return Fail("During normal move, Bob was not at the correct x ([bob.x])") + if (charlie.x != run_loc_bottom_left.x + 3) + return Fail("During normal move, Charlie was not at the correct x ([charlie.x])") + + // We're going through the space turf now that should teleport us + alice.Move(run_loc_bottom_left) + if (alice.z != space_tile.destination_z) + return Fail("Alice did not teleport to the destination z-level. Current location: ([alice.x], [alice.y], [alice.z])") + + if (bob.z != space_tile.destination_z) + return Fail("Bob did not teleport to the destination z-level. Current location: ([bob.x], [bob.y], [bob.z])") + if (!bob.Adjacent(alice)) + return Fail("Bob is not adjacent to Alice. Bob is at [bob.x], Alice is at [alice.x]") + + if (charlie.z != space_tile.destination_z) + return Fail("Charlie did not teleport to the destination z-level. Current location: ([charlie.x], [charlie.y], [charlie.z])") + if (!charlie.Adjacent(bob)) + return Fail("Charlie is not adjacent to Bob. Charlie is at [charlie.x], Bob is at [bob.x]") diff --git a/code/modules/unit_tests/component_tests.dm b/code/modules/unit_tests/component_tests.dm index 409d7f4322..0099d7508c 100644 --- a/code/modules/unit_tests/component_tests.dm +++ b/code/modules/unit_tests/component_tests.dm @@ -9,4 +9,4 @@ if(dupe_type && !ispath(dupe_type)) bad_dts += t if(length(bad_dms) || length(bad_dts)) - Fail("Components with invalid dupe modes: ([bad_dms.Join(",")]) ||| Components with invalid dupe types: ([bad_dts.Join(",")])") \ No newline at end of file + Fail("Components with invalid dupe modes: ([bad_dms.Join(",")]) ||| Components with invalid dupe types: ([bad_dts.Join(",")])") diff --git a/code/modules/unit_tests/machine_disassembly.dm b/code/modules/unit_tests/machine_disassembly.dm new file mode 100644 index 0000000000..bcc769bcf2 --- /dev/null +++ b/code/modules/unit_tests/machine_disassembly.dm @@ -0,0 +1,13 @@ +/// Ensures that when disassembling a machine, all the parts are given back +/datum/unit_test/machine_disassembly/Run() + var/obj/machinery/freezer = allocate(/obj/machinery/atmospherics/components/unary/thermomachine/freezer) + + var/turf/freezer_location = freezer.loc + freezer_location.ChangeTurf(/turf/open/floor/plasteel) + freezer.deconstruct() + + // Check that the components are created + TEST_ASSERT(locate(/obj/item/stock_parts/micro_laser) in freezer_location, "Couldn't find micro-laser when disassembling freezer") + + // Check that the circuit board itself is created + TEST_ASSERT(locate(/obj/item/circuitboard/machine/thermomachine/freezer) in freezer_location, "Couldn't find the circuit board when disassembling freezer") diff --git a/code/modules/unit_tests/medical_wounds.dm b/code/modules/unit_tests/medical_wounds.dm new file mode 100644 index 0000000000..75c08931f1 --- /dev/null +++ b/code/modules/unit_tests/medical_wounds.dm @@ -0,0 +1,87 @@ +/// This test is used to make sure a flesh-and-bone base human can suffer all the types of wounds, and that suffering more severe wounds removes and replaces the lesser wound. Also tests that [/mob/living/carbon/proc/fully_heal] removes all wounds +/datum/unit_test/test_human_base/Run() + var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human) + + /// the limbs have no wound resistance like the chest and head do, so let's go with the r_arm + var/obj/item/bodypart/tested_part = victim.get_bodypart(BODY_ZONE_R_ARM) + /// In order of the wound types we're trying to inflict, what sharpness do we need to deal them? + var/list/sharps = list(SHARP_NONE, SHARP_EDGED, SHARP_POINTY, SHARP_NONE) + /// Since burn wounds need burn damage, duh + var/list/dam_types = list(BRUTE, BRUTE, BRUTE, BURN) + + var/i = 1 + var/list/iter_test_wound_list + + for(iter_test_wound_list in list(list(/datum/wound/blunt/moderate, /datum/wound/blunt/severe, /datum/wound/blunt/critical),\ + list(/datum/wound/slash/moderate, /datum/wound/slash/severe, /datum/wound/slash/critical),\ + list(/datum/wound/pierce/moderate, /datum/wound/pierce/severe, /datum/wound/pierce/critical),\ + list(/datum/wound/burn/moderate, /datum/wound/burn/severe, /datum/wound/burn/critical))) + + TEST_ASSERT_EQUAL(length(victim.all_wounds), 0, "Patient is somehow wounded before test") + var/datum/wound/iter_test_wound + var/threshold_penalty = 0 + + for(iter_test_wound in iter_test_wound_list) + var/threshold = initial(iter_test_wound.threshold_minimum) - threshold_penalty // just enough to guarantee the next tier of wound, given the existing wound threshold penalty + if(dam_types[i] == BRUTE) + tested_part.receive_damage(WOUND_MINIMUM_DAMAGE, 0, wound_bonus = threshold, sharpness=sharps[i]) + else if(dam_types[i] == BURN) + tested_part.receive_damage(0, WOUND_MINIMUM_DAMAGE, wound_bonus = threshold, sharpness=sharps[i]) + + TEST_ASSERT(length(victim.all_wounds), "Patient has no wounds when one wound is expected. Severity: [initial(iter_test_wound.severity)]") + TEST_ASSERT_EQUAL(length(victim.all_wounds), 1, "Patient has more than one wound when only one is expected. Severity: [initial(iter_test_wound.severity)]") + var/datum/wound/actual_wound = victim.all_wounds[1] + TEST_ASSERT_EQUAL(actual_wound.type, iter_test_wound, "Patient has wound of incorrect severity. Expected: [initial(iter_test_wound.name)] Got: [actual_wound]") + threshold_penalty = actual_wound.threshold_penalty + i++ + victim.fully_heal(TRUE) // should clear all wounds between types + + +/// This test is used for making sure species with bones but no flesh (skeletons, plasmamen) can only suffer BONE_WOUNDS, and nothing tagged with FLESH_WOUND (it's possible to require both) +/datum/unit_test/test_human_bone/Run() + var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human) + + /// the limbs have no wound resistance like the chest and head do, so let's go with the r_arm + var/obj/item/bodypart/tested_part = victim.get_bodypart(BODY_ZONE_R_ARM) + /// In order of the wound types we're trying to inflict, what sharpness do we need to deal them? + var/list/sharps = list(SHARP_NONE, SHARP_EDGED, SHARP_POINTY, SHARP_NONE) + /// Since burn wounds need burn damage, duh + var/list/dam_types = list(BRUTE, BRUTE, BRUTE, BURN) + + var/i = 1 + var/list/iter_test_wound_list + victim.dna.species.species_traits &= HAS_FLESH // take away the base human's flesh (ouchie!) ((not actually ouchie, this just affects their wounds and dismemberment handling)) + + for(iter_test_wound_list in list(list(/datum/wound/blunt/moderate, /datum/wound/blunt/severe, /datum/wound/blunt/critical),\ + list(/datum/wound/slash/moderate, /datum/wound/slash/severe, /datum/wound/slash/critical),\ + list(/datum/wound/pierce/moderate, /datum/wound/pierce/severe, /datum/wound/pierce/critical),\ + list(/datum/wound/burn/moderate, /datum/wound/burn/severe, /datum/wound/burn/critical))) + + TEST_ASSERT_EQUAL(length(victim.all_wounds), 0, "Patient is somehow wounded before test") + var/datum/wound/iter_test_wound + var/threshold_penalty = 0 + + for(iter_test_wound in iter_test_wound_list) + var/threshold = initial(iter_test_wound.threshold_minimum) - threshold_penalty // just enough to guarantee the next tier of wound, given the existing wound threshold penalty + if(dam_types[i] == BRUTE) + tested_part.receive_damage(WOUND_MINIMUM_DAMAGE, 0, wound_bonus = threshold, sharpness=sharps[i]) + else if(dam_types[i] == BURN) + tested_part.receive_damage(0, WOUND_MINIMUM_DAMAGE, wound_bonus = threshold, sharpness=sharps[i]) + + // so if we just tried to deal a flesh wound, make sure we didn't actually suffer it. We may have suffered a bone wound instead, but we just want to make sure we don't have a flesh wound + if(initial(iter_test_wound.wound_flags) & FLESH_WOUND) + if(!length(victim.all_wounds)) // not having a wound is good news + continue + else // we have to check that it's actually a bone wound and not the intended wound type + TEST_ASSERT_EQUAL(length(victim.all_wounds), 1, "Patient has more than one wound when only one is expected. Severity: [initial(iter_test_wound.severity)]") + var/datum/wound/actual_wound = victim.all_wounds[1] + TEST_ASSERT((actual_wound.wound_flags & ~FLESH_WOUND), "Patient has flesh wound despite no HAS_FLESH flag, expected either no wound or bone wound. Offending wound: [actual_wound]") + threshold_penalty = actual_wound.threshold_penalty + else // otherwise if it's a bone wound, check that we have it per usual + TEST_ASSERT(length(victim.all_wounds), "Patient has no wounds when one wound is expected. Severity: [initial(iter_test_wound.severity)]") + TEST_ASSERT_EQUAL(length(victim.all_wounds), 1, "Patient has more than one wound when only one is expected. Severity: [initial(iter_test_wound.severity)]") + var/datum/wound/actual_wound = victim.all_wounds[1] + TEST_ASSERT_EQUAL(actual_wound.type, iter_test_wound, "Patient has wound of incorrect severity. Expected: [initial(iter_test_wound.name)] Got: [actual_wound]") + threshold_penalty = actual_wound.threshold_penalty + i++ + victim.fully_heal(TRUE) // should clear all wounds between types diff --git a/code/modules/unit_tests/metabolizing.dm b/code/modules/unit_tests/metabolizing.dm new file mode 100644 index 0000000000..895762c0ec --- /dev/null +++ b/code/modules/unit_tests/metabolizing.dm @@ -0,0 +1,19 @@ +/datum/unit_test/metabolization/Run() + // Pause natural mob life so it can be handled entirely by the test + SSmobs.pause() + + var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human) + var/mob/living/carbon/monkey/monkey = allocate(/mob/living/carbon/monkey) + + for (var/reagent_type in subtypesof(/datum/reagent)) + test_reagent(human, reagent_type) + test_reagent(monkey, reagent_type) + +/datum/unit_test/metabolization/proc/test_reagent(mob/living/carbon/C, reagent_type) + C.reagents.add_reagent(reagent_type, 10) + C.reagents.metabolize(C, can_overdose = TRUE) + C.reagents.clear_reagents() + +/datum/unit_test/metabolization/Destroy() + SSmobs.ignite() + return ..() diff --git a/code/modules/unit_tests/outfit_sanity.dm b/code/modules/unit_tests/outfit_sanity.dm new file mode 100644 index 0000000000..235820f9e9 --- /dev/null +++ b/code/modules/unit_tests/outfit_sanity.dm @@ -0,0 +1,50 @@ +#define CHECK_OUTFIT_SLOT(outfit_key, slot_name) if (outfit.##outfit_key) { \ + H.equip_to_slot_or_del(new outfit.##outfit_key(H), ##slot_name, TRUE); \ + /* We don't check the result of equip_to_slot_or_del because it returns false for random jumpsuits, as they delete themselves on init */ \ + if (!H.get_item_by_slot(##slot_name)) { \ + Fail("[outfit.name]'s [#outfit_key] is invalid!"); \ + } \ +} + +/datum/unit_test/outfit_sanity/Run() + var/mob/living/carbon/human/H = allocate(/mob/living/carbon/human) + + for (var/outfit_type in subtypesof(/datum/outfit)) + // Only make one human and keep undressing it because it's much faster + for (var/obj/item/I in H.get_equipped_items(include_pockets = TRUE)) + qdel(I) + + var/datum/outfit/outfit = new outfit_type + outfit.pre_equip(H, TRUE) + + CHECK_OUTFIT_SLOT(uniform, ITEM_SLOT_ICLOTHING) + CHECK_OUTFIT_SLOT(suit, ITEM_SLOT_OCLOTHING) + CHECK_OUTFIT_SLOT(back, ITEM_SLOT_BACK) + CHECK_OUTFIT_SLOT(belt, ITEM_SLOT_BELT) + CHECK_OUTFIT_SLOT(gloves, ITEM_SLOT_GLOVES) + CHECK_OUTFIT_SLOT(shoes, ITEM_SLOT_FEET) + CHECK_OUTFIT_SLOT(head, ITEM_SLOT_HEAD) + CHECK_OUTFIT_SLOT(mask, ITEM_SLOT_MASK) + CHECK_OUTFIT_SLOT(neck, ITEM_SLOT_NECK) + CHECK_OUTFIT_SLOT(ears, ITEM_SLOT_EARS) + CHECK_OUTFIT_SLOT(glasses, ITEM_SLOT_EYES) + CHECK_OUTFIT_SLOT(id, ITEM_SLOT_ID) + CHECK_OUTFIT_SLOT(suit_store, ITEM_SLOT_SUITSTORE) + CHECK_OUTFIT_SLOT(l_pocket, ITEM_SLOT_POCKET) + CHECK_OUTFIT_SLOT(r_pocket, ITEM_SLOT_POCKET) + + if (outfit.backpack_contents || outfit.box) + var/list/backpack_contents = outfit.backpack_contents?.Copy() + if (outfit.box) + if (!backpack_contents) + backpack_contents = list() + backpack_contents.Insert(1, outfit.box) + backpack_contents[outfit.box] = 1 + + for (var/path in backpack_contents) + var/number = backpack_contents[path] || 1 + for (var/_ in 1 to number) + if (!H.equip_to_slot_or_del(new path(H), ITEM_SLOT_BACKPACK, TRUE)) + Fail("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") + +#undef CHECK_OUTFIT_SLOT diff --git a/code/modules/unit_tests/plantgrowth_tests.dm b/code/modules/unit_tests/plantgrowth_tests.dm new file mode 100644 index 0000000000..6b40236860 --- /dev/null +++ b/code/modules/unit_tests/plantgrowth_tests.dm @@ -0,0 +1,27 @@ + +// Checks plants for broken tray icons. Use Advanced Proc Call to activate. +// Maybe some day it would be used as unit test. +// -------- IT IS NOW! +/datum/unit_test/plantgrowth/Run() + var/list/states = icon_states('icons/obj/hydroponics/growing.dmi') + states |= icon_states('icons/obj/hydroponics/growing_fruits.dmi') + states |= icon_states('icons/obj/hydroponics/growing_flowers.dmi') + states |= icon_states('icons/obj/hydroponics/growing_mushrooms.dmi') + states |= icon_states('icons/obj/hydroponics/growing_vegetables.dmi') + states |= icon_states('goon/icons/obj/hydroponics.dmi') + var/list/paths = subtypesof(/obj/item/seeds) - /obj/item/seeds - typesof(/obj/item/seeds/sample) - /obj/item/seeds/lavaland + + for(var/seedpath in paths) + var/obj/item/seeds/seed = new seedpath + + for(var/i in 1 to seed.growthstages) + if("[seed.icon_grow][i]" in states) + continue + Fail("[seed.name] ([seed.type]) lacks the [seed.icon_grow][i] icon!") + + if(!(seed.icon_dead in states)) + Fail("[seed.name] ([seed.type]) lacks the [seed.icon_dead] icon!") + + if(seed.icon_harvest) // mushrooms have no grown sprites, same for items with no product + if(!(seed.icon_harvest in states)) + Fail("[seed.name] ([seed.type]) lacks the [seed.icon_harvest] icon!") diff --git a/code/modules/unit_tests/quick_swap_sanity.dm b/code/modules/unit_tests/quick_swap_sanity.dm new file mode 100644 index 0000000000..85e73f9b6a --- /dev/null +++ b/code/modules/unit_tests/quick_swap_sanity.dm @@ -0,0 +1,31 @@ +/// Test that quick swap correctly swaps items and invalidates suit storage +/datum/unit_test/quick_swap_sanity/Run() + // Create a human with a medical winter coat and a health analyzer in suit storage + var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human) + + var/obj/item/coat = allocate(/obj/item/clothing/suit/hooded/wintercoat/medical) + TEST_ASSERT(human.equip_to_slot_if_possible(coat, ITEM_SLOT_OCLOTHING), "Couldn't equip winter coat") + + var/obj/item/analyzer = allocate(/obj/item/healthanalyzer) + TEST_ASSERT(human.equip_to_slot_if_possible(analyzer, ITEM_SLOT_SUITSTORE), "Couldn't equip health analyzer") + + // Then, have them quick swap between the coat and a space suit + var/obj/item/hardsuit = allocate(/obj/item/clothing/suit/space/hardsuit) + TEST_ASSERT(human.equip_to_appropriate_slot(hardsuit, swap = TRUE), "Couldn't quick swap to hardsuit") + + // Check if the human has the hardsuit on + TEST_ASSERT_EQUAL(human.wear_suit, hardsuit, "Human didn't equip the hardsuit") + + // Make sure the health analyzer was dropped as part of the swap + // Since health analyzers are an invalid suit storage item + TEST_ASSERT_EQUAL(human.s_store, null, "Human didn't drop the health analyzer") + + // Give the human an emergency oxygen tank + // This is valid suit storage for both the winter coat AND the hardsuit + var/obj/item/tank = allocate(/obj/item/tank/internals/emergency_oxygen) + TEST_ASSERT(human.equip_to_slot_if_possible(tank, ITEM_SLOT_SUITSTORE), "Couldn't equip emergency oxygen tank") + + // Now, quick swap back to the coat + // Since the tank is a valid suit storage item, it should not be dropped + TEST_ASSERT(human.equip_to_appropriate_slot(coat, swap = TRUE), "Couldn't quick swap to coat") + TEST_ASSERT_EQUAL(human.s_store, tank, "Human dropped the oxygen tank, when it was a valid item to keep in suit storage") diff --git a/code/modules/unit_tests/resist.dm b/code/modules/unit_tests/resist.dm new file mode 100644 index 0000000000..9fe5cd1114 --- /dev/null +++ b/code/modules/unit_tests/resist.dm @@ -0,0 +1,29 @@ +/// Test that stop, drop, and roll lowers fire stacks +/datum/unit_test/stop_drop_and_roll/Run() + var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human) + + TEST_ASSERT_EQUAL(human.fire_stacks, 0, "Human does not have 0 fire stacks pre-ignition") + + human.adjust_fire_stacks(5) + human.IgniteMob() + + TEST_ASSERT_EQUAL(human.fire_stacks, 5, "Human does not have 5 fire stacks pre-resist") + + // Stop, drop, and roll has a sleep call. This would delay the test, and is not necessary. + CallAsync(human, /mob/living/verb/resist) + + TEST_ASSERT(human.fire_stacks < 5, "Human did not lower fire stacks after resisting") + +/// Test that you can resist out of a container +/datum/unit_test/container_resist/Run() + var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human) + var/obj/structure/closet/closet = allocate(/obj/structure/closet, get_turf(human)) + + closet.open(human) + TEST_ASSERT(!(human in closet.contents), "Human was in the contents of an open closet") + + closet.close(human) + TEST_ASSERT(human in closet.contents, "Human was not in the contents of the closed closet") + + human.resist() + TEST_ASSERT(!(human in closet.contents), "Human resisted out of a standard closet, but was still in it") diff --git a/code/modules/unit_tests/say.dm b/code/modules/unit_tests/say.dm new file mode 100644 index 0000000000..3fe6675ab4 --- /dev/null +++ b/code/modules/unit_tests/say.dm @@ -0,0 +1,24 @@ +/// Test to verify message mods are parsed correctly +/datum/unit_test/get_message_mods + var/mob/host_mob + +/datum/unit_test/get_message_mods/Run() + host_mob = allocate(/mob/living/carbon/human) + + test("Hello", "Hello", list()) + test(";HELP", "HELP", list(MODE_HEADSET = TRUE)) + test(";%Never gonna give you up", "Never gonna give you up", list(MODE_HEADSET = TRUE, MODE_SING = TRUE)) + test(".s Gun plz", "Gun plz", list(RADIO_KEY = RADIO_KEY_SECURITY, RADIO_EXTENSION = RADIO_CHANNEL_SECURITY)) + test("...What", "...What", list()) + //note to lettern: add the ++, ||, __, and the verb*text checks + +/datum/unit_test/get_message_mods/proc/test(message, expected_message, list/expected_mods) + var/list/mods = list() + TEST_ASSERT_EQUAL(host_mob.get_message_mods(message, mods), expected_message, "Chopped message was not what we expected. Message: [message]") + + for (var/mod_key in mods) + TEST_ASSERT_EQUAL(mods[mod_key], expected_mods[mod_key], "The value for [mod_key] was not what we expected. Message: [message]") + expected_mods -= mod_key + + if (expected_mods.len) + Fail("Some message mods were expected, but were not returned by get_message_mods: [json_encode(expected_mods)]. Message: [message]") diff --git a/code/modules/unit_tests/spawn_humans.dm b/code/modules/unit_tests/spawn_humans.dm index 0500deae0a..7189e87277 100644 --- a/code/modules/unit_tests/spawn_humans.dm +++ b/code/modules/unit_tests/spawn_humans.dm @@ -1,7 +1,7 @@ /datum/unit_test/spawn_humans/Run() - var/locs = block(run_loc_bottom_left, run_loc_top_right) + var/locs = block(run_loc_bottom_left, run_loc_top_right) - for(var/I in 1 to 5) - new /mob/living/carbon/human(pick(locs)) + for(var/I in 1 to 5) + new /mob/living/carbon/human(pick(locs)) - sleep(50) + sleep(50) diff --git a/code/modules/unit_tests/subsystem_init.dm b/code/modules/unit_tests/subsystem_init.dm index f768f03f78..7d5473bc1b 100644 --- a/code/modules/unit_tests/subsystem_init.dm +++ b/code/modules/unit_tests/subsystem_init.dm @@ -4,4 +4,4 @@ if(ss.flags & SS_NO_INIT) continue if(!ss.initialized) - Fail("[ss]([ss.type]) is a subsystem meant to initialize but doesn't get set as initialized.") \ No newline at end of file + Fail("[ss]([ss.type]) is a subsystem meant to initialize but doesn't get set as initialized.") diff --git a/code/modules/unit_tests/surgeries.dm b/code/modules/unit_tests/surgeries.dm new file mode 100644 index 0000000000..491b0c5645 --- /dev/null +++ b/code/modules/unit_tests/surgeries.dm @@ -0,0 +1,79 @@ +/datum/unit_test/amputation/Run() + var/mob/living/carbon/human/patient = allocate(/mob/living/carbon/human) + var/mob/living/carbon/human/user = allocate(/mob/living/carbon/human) + + TEST_ASSERT_EQUAL(patient.get_missing_limbs().len, 0, "Patient is somehow missing limbs before surgery") + + var/datum/surgery/amputation/surgery = new(patient, BODY_ZONE_R_ARM, patient.get_bodypart(BODY_ZONE_R_ARM)) + + var/datum/surgery_step/sever_limb/sever_limb = new + sever_limb.success(user, patient, BODY_ZONE_R_ARM, null, surgery) + + TEST_ASSERT_EQUAL(patient.get_missing_limbs().len, 1, "Patient did not lose any limbs") + TEST_ASSERT_EQUAL(patient.get_missing_limbs()[1], BODY_ZONE_R_ARM, "Patient is missing a limb that isn't the one we operated on") + +/datum/unit_test/brain_surgery/Run() + var/mob/living/carbon/human/patient = allocate(/mob/living/carbon/human) + patient.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_SURGERY) + patient.setOrganLoss(ORGAN_SLOT_BRAIN, 20) + + TEST_ASSERT(patient.has_trauma_type(), "Patient does not have any traumas, despite being given one") + + var/mob/living/carbon/human/user = allocate(/mob/living/carbon/human) + + var/datum/surgery_step/fix_brain/fix_brain = new + fix_brain.success(user, patient) + + TEST_ASSERT(!patient.has_trauma_type(), "Patient kept their brain trauma after brain surgery") + TEST_ASSERT(patient.getOrganLoss(ORGAN_SLOT_BRAIN) < 20, "Patient did not heal their brain damage after brain surgery") + +/datum/unit_test/multiple_surgeries/Run() + var/mob/living/carbon/human/user = allocate(/mob/living/carbon/human) + var/mob/living/carbon/human/patient_zero = allocate(/mob/living/carbon/human) + var/mob/living/carbon/human/patient_one = allocate(/mob/living/carbon/human) + + var/obj/item/scalpel/scalpel = allocate(/obj/item/scalpel) + + var/datum/surgery_step/incise/surgery_step = new + var/datum/surgery/organ_manipulation/surgery_for_zero = new + + INVOKE_ASYNC(surgery_step, /datum/surgery_step/proc/initiate, user, patient_zero, BODY_ZONE_CHEST, scalpel, surgery_for_zero) + TEST_ASSERT(surgery_for_zero.step_in_progress, "Surgery on patient zero was not initiated") + + var/datum/surgery/organ_manipulation/surgery_for_one = new + + // Without waiting for the incision to complete, try to start a new surgery + TEST_ASSERT(!surgery_step.initiate(user, patient_one, BODY_ZONE_CHEST, scalpel, surgery_for_one), "Was allowed to start a second surgery without the rod of asclepius") + TEST_ASSERT(!surgery_for_one.step_in_progress, "Surgery for patient one is somehow in progress, despite not initiating") + + user.apply_status_effect(STATUS_EFFECT_HIPPOCRATIC_OATH) + INVOKE_ASYNC(surgery_step, /datum/surgery_step/proc/initiate, user, patient_one, BODY_ZONE_CHEST, scalpel, surgery_for_one) + TEST_ASSERT(surgery_for_one.step_in_progress, "Surgery on patient one was not initiated, despite having rod of asclepius") + +/datum/unit_test/tend_wounds/Run() + var/mob/living/carbon/human/patient = allocate(/mob/living/carbon/human) + patient.take_overall_damage(100, 100) + + var/mob/living/carbon/human/user = allocate(/mob/living/carbon/human) + + // Test that tending wounds actually lowers damage + var/datum/surgery_step/heal/brute/basic/basic_brute_heal = new + basic_brute_heal.success(user, patient, BODY_ZONE_CHEST) + TEST_ASSERT(patient.getBruteLoss() < 100, "Tending brute wounds didn't lower brute damage ([patient.getBruteLoss()])") + + var/datum/surgery_step/heal/burn/basic/basic_burn_heal = new + basic_burn_heal.success(user, patient, BODY_ZONE_CHEST) + TEST_ASSERT(patient.getFireLoss() < 100, "Tending burn wounds didn't lower burn damage ([patient.getFireLoss()])") + + // Test that wearing clothing lowers heal amount + var/mob/living/carbon/human/naked_patient = allocate(/mob/living/carbon/human) + naked_patient.take_overall_damage(100) + + var/mob/living/carbon/human/clothed_patient = allocate(/mob/living/carbon/human) + clothed_patient.equipOutfit(/datum/outfit/job/doctor, TRUE) + clothed_patient.take_overall_damage(100) + + basic_brute_heal.success(user, naked_patient, BODY_ZONE_CHEST) + basic_brute_heal.success(user, clothed_patient, BODY_ZONE_CHEST) + + TEST_ASSERT(naked_patient.getBruteLoss() < clothed_patient.getBruteLoss(), "Naked patient did not heal more from wounds tending than a clothed patient") diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm index 49974f2cb0..36b406e75e 100644 --- a/code/modules/unit_tests/unit_test.dm +++ b/code/modules/unit_tests/unit_test.dm @@ -1,14 +1,9 @@ /* - Usage: Override /Run() to run your test code - Call Fail() to fail the test (You should specify a reason) - You may use /New() and /Destroy() for setup/teardown respectively - You can use the run_loc_bottom_left and run_loc_top_right to get turfs for testing - */ GLOBAL_DATUM(current_test, /datum/unit_test) @@ -18,16 +13,18 @@ GLOBAL_VAR(test_log) /datum/unit_test //Bit of metadata for the future maybe var/list/procs_tested - + //usable vars var/turf/run_loc_bottom_left var/turf/run_loc_top_right //internal shit var/succeeded = TRUE + var/list/allocated var/list/fail_reasons /datum/unit_test/New() + allocated = new run_loc_bottom_left = locate(1, 1, 1) run_loc_top_right = locate(5, 5, 1) @@ -35,6 +32,7 @@ GLOBAL_VAR(test_log) //clear the test area for(var/atom/movable/AM in block(run_loc_bottom_left, run_loc_top_right)) qdel(AM) + QDEL_LIST(allocated) return ..() /datum/unit_test/proc/Run() @@ -48,6 +46,18 @@ GLOBAL_VAR(test_log) LAZYADD(fail_reasons, reason) +/// Allocates an instance of the provided type, and places it somewhere in an available loc +/// Instances allocated through this proc will be destroyed when the test is over +/datum/unit_test/proc/allocate(type, ...) + var/list/arguments = args.Copy(2) + if (!arguments.len) + arguments = list(run_loc_bottom_left) + else if (arguments[1] == null) + arguments[1] = run_loc_bottom_left + var/instance = new type(arglist(arguments)) + allocated += instance + return instance + /proc/RunUnitTests() CHECK_TICK diff --git a/code/modules/uplink/uplink_items/uplink_clothing.dm b/code/modules/uplink/uplink_items/uplink_clothing.dm index 745eddcc07..6163e5722a 100644 --- a/code/modules/uplink/uplink_items/uplink_clothing.dm +++ b/code/modules/uplink/uplink_items/uplink_clothing.dm @@ -92,8 +92,8 @@ cost = 6 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) -/datum/uplink_item/device_tools/guerillagloves - name = "Guerilla Gloves" +/datum/uplink_item/device_tools/guerrillagloves + name = "Guerrilla Gloves" desc = "A pair of highly robust combat gripper gloves that excels at performing takedowns at close range, with an added lining of insulation. Careful not to hit a wall!" item = /obj/item/clothing/gloves/tackler/combat/insulated include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) diff --git a/code/modules/uplink/uplink_items/uplink_implants.dm b/code/modules/uplink/uplink_items/uplink_implants.dm index bb4e0c7960..4839c96a2d 100644 --- a/code/modules/uplink/uplink_items/uplink_implants.dm +++ b/code/modules/uplink/uplink_items/uplink_implants.dm @@ -31,7 +31,7 @@ /datum/uplink_item/implants/warp name = "Warp Implant" - desc = "An implant injected into the body and later activated at the user's will. It will inject eigenstasium which saves the user's location and teleports them there after five seconds. Lasts only fifteen times." + desc = "An implant injected into the body and later activated at the user's will. Allows the user to teleport to where they were 10 seconds ago. Has a 10 second cooldown." item = /obj/item/storage/box/syndie_kit/imp_warp cost = 6 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index a115300085..26bee38f7b 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -529,7 +529,7 @@ GLOBAL_LIST_EMPTY(vending_products) if(5) // limb squish! for(var/i in C.bodyparts) var/obj/item/bodypart/squish_part = i - if(squish_part.is_organic_limb()) + if(squish_part.is_organic_limb() || squish_part.render_like_organic) var/type_wound = pick(list(/datum/wound/blunt/critical, /datum/wound/blunt/severe, /datum/wound/blunt/moderate)) squish_part.force_wound_upwards(type_wound) else diff --git a/code/modules/vore/eating/living.dm b/code/modules/vore/eating/living.dm index 8923e9107d..a0ae58a44d 100644 --- a/code/modules/vore/eating/living.dm +++ b/code/modules/vore/eating/living.dm @@ -342,21 +342,23 @@ to_chat(src, "You can't do that so fast, slow down.") return - var/list/choices + DelayNextAction(CLICK_CD_MELEE, flush = TRUE) + + var/list/lickable = list() for(var/mob/living/L in view(1)) if(L != src && (!L.ckey || L.client?.prefs.vore_flags & LICKABLE) && Adjacent(L)) - LAZYADD(choices, L) + LAZYADD(lickable, L) + for(var/mob/living/listed in lickable) + lickable[listed] = new /mutable_appearance(listed) - if(!choices) + if(!lickable) return - var/mob/living/tasted = input(src, "Who would you like to lick? (Excluding yourself and those with the preference disabled)", "Licking") as null|anything in choices + var/mob/living/tasted = show_radial_menu(src, src, lickable, radius = 40, require_near = TRUE) if(QDELETED(tasted) || (tasted.ckey && !(tasted.client?.prefs.vore_flags & LICKABLE)) || !Adjacent(tasted) || incapacitated(ignore_restraints = TRUE)) return - DelayNextAction(CLICK_CD_MELEE) - visible_message("[src] licks [tasted]!","You lick [tasted]. They taste rather like [tasted.get_taste_message()].","Slurp!") /mob/living/proc/get_taste_message(allow_generic = TRUE, datum/species/mrace) diff --git a/code/modules/vore/eating/vorepanel.dm b/code/modules/vore/eating/vorepanel.dm index 1adf5ef6e7..6e3951e60a 100644 --- a/code/modules/vore/eating/vorepanel.dm +++ b/code/modules/vore/eating/vorepanel.dm @@ -46,6 +46,7 @@ /datum/vore_look/Destroy() loop = null selected = null + ..() //this is a must return QDEL_HINT_HARDDEL /datum/vore_look/Topic(href,href_list[]) @@ -660,7 +661,7 @@ if(href_list["saveprefs"]) if(!(user.client?.prefs)) return FALSE - if(!user.client.prefs.save_character()) + if(!user.copy_to_prefs_vr() || !user.client.prefs.save_character()) to_chat(user, "Belly Preferences not saved!") log_admin("Could not save vore prefs on USER: [user].") else diff --git a/html/changelog.html b/html/changelog.html index ba57bbfac2..8a1401744e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,6 +50,127 @@ -->
+

04 October 2020

+

DeltaFire15 updated:

+
    +
  • Synths / IPCs are no longer wound immune.
  • +
  • Husked IPCs / Synths should now be rendered correctly.
  • +
  • Falling vendors now squish synths / IPCs' limbs again.
  • +
  • Synths and IPCs now do not have some fun roundstart oversights anymore.
  • +
  • Regenerate_limbs now works for carbons with the ROBOTIC_LIMBS trait.
  • +
  • Pacifists no longer counterattack on parries if that attack would be harmful.
  • +
  • Heretic sacrifices now husk with the reason of burn, and deal some additional damage.
  • +
  • Neovgre can no longer become invincible on clock tiles.
  • +
  • Plushlings no longer break when absorbing snowflake plushies.
  • +
+

Detective-Google updated:

+
    +
  • the snow cabin doors actually bolt now
  • +
+

Putnam3145 updated:

+
    +
  • Ghosts are no longer incapable of going away.
  • +
+

monster860 updated:

+
    +
  • The slimeperson swap-body UI stays open when you switch bodies
  • +
+

timothyteakettle updated:

+
    +
  • limb id entry in mutant bodyparts now supports switching to/from species with gendered body parts
  • +
  • the minimum brightness of mutant parts is now a define
  • +
+ +

02 October 2020

+

ArcaneMusic, with minor tweaks by TheObserver-sys updated:

+
    +
  • Adds and modifies fertilizers, as well as a new stat, Instability.
  • +
  • Removes the rather disused functionality of irrigation hoses, temporarily disables circuit use on hydroponics trays.
  • +
  • Plant Analyzer have been upgraded. Using one in hand will now switch between a stat view of your plant, and a chemical view of your plant. tweak:Trays now accept and store reagents, as well as coming with an autogrow mode. However, these upgrades came at the cost of old self sufficiency, meaning you must attend to your plants a bit more often.
  • +
  • Earthsblood, while not being able to gild trays anymore, has been found to still be quite powerful as a fertilizer.
  • +
+

CoreFlare updated:

+
    +
  • Altcloaks! Available in loadout.
  • +
+

Detective-Google updated:

+
    +
  • a smattering of clothes from the RP server
  • +
  • detective wardrobe
  • +
+

EmeraldSundisk updated:

+
    +
  • Adds the "Skelter" space ruin
  • +
  • Creates a few new area designations for the Skelter
  • +
  • Cargo techs now have access to a "long pants" variant of their standard work uniform
  • +
  • Adds said uniform to CargoDrobes and the loadout menu
  • +
+

ItzGabby updated:

+
    +
  • Three new turf tiles.
  • +
  • Turf icons with multiple damage icons, with in-hand icons for each tile.
  • +
  • Edited the name and description to wooden.
  • +
+

LetterN updated:

+
    +
  • craftable railings
  • +
  • ports robust savefiles
  • +
+

MrJWhit updated:

+
    +
  • tweaked heavy suit dmi
  • +
  • Fixes drones not being able to quickslot items
  • +
+

Putnam3145 updated:

+
    +
  • New policy config for pyroclastic slimes.
  • +
  • SDGF clones now naked.
  • +
  • SDGF is now way more likely to make a clone that will align with the creator's goals, with purity, making it a better antagging tool.
  • +
  • SDGF clones now have the same traits as the original.
  • +
  • transfer_ckey now resets view, preventing things like SDGF clones with much larger view range.
  • +
  • Policy configs have been added for SDGF, currently unused: SDGF, SDGF_ALIGNED, SDGF_UNALIGNED.
  • +
  • Shivering now has thresholds and fever's thresholds now work.
  • +
  • Made allturfs setup actually set up all turfs.
  • +
  • Dynamic is now more aggressive with adding antags.
  • +
  • Fixes vore pref saving.
  • +
+

SandPoot updated:

+
    +
  • Fixes headslugs being unable to recover their human form.
  • +
+

Tupinambis updated:

+
    +
  • Adds methane and methyl bromide gases.
  • +
  • Minor gas name/desc changes to improve consistency
  • +
  • Ports the methyl bromide tank from bay. Adds two new canister sprites for the new gases and CH4 screen alerts.
  • +
  • fixed a mispelling in the wound armor value for the bounty hunter suit
  • +
+

dapnee updated:

+
    +
  • atrium, clinic, an extra office, a pseudo public mining area, two more deluxe dorms, micro beach, aux bathroom, two construction areas, mass driver, more intercoms
  • +
  • moved all of service, chapel, dorms, garden, holodeck to a different z-level, RnD is more open, maintenance is a bit more random, more firelocks, added more mine-able rock
  • +
  • fixed the buttons in xenobio, gave shutters to cargo's storage area, fixed holodeck so it works now, fixed some techfabs being lathes, added sensors to atmos tanks, more decals, couple more signs, little floral areas and sitting areas added to break up hallway monotony, mech chargers are no longer missing their consoles, whiteship won't crash into arrivals anymore while the area it takes up is more telegraphed, APC placement on AI sat entrance, missing wire node for the outer portion of the AI sat, civilian level now has a telecom relay
  • +
+

lolman360 updated:

+
    +
  • smonk machine runtimes
  • +
  • automatic hydro tray has a unique sprite now (fancy robot arm)
  • +
+

timothyteakettle updated:

+
    +
  • added luminescent and stargazer sprites as selectable body sprites for slimes
  • +
  • wound exponent lowered slightly from 1.225 to 1.2
  • +
  • wound exponent and limb damage multiplier are now config values
  • +
  • ipcs and synthlizards are now treated as actual robots, with robotic limbs, an extra organ, and better emp acts
  • +
  • surgeries for healing robotic limbs, and brain surgery for robotic heads
  • +
  • androids limbs now show up as intended
  • +
  • emps now work from 1-100 severity instead of 1/2 and the severity reduces as you move from the epicentre
  • +
+

zeroisthebiggay updated:

+
    +
  • ratvar gf is complete
  • +
+

01 October 2020

BlueWildrose updated:

    @@ -203,272 +324,11 @@

12 September 2020

+

01 October 2020

BlueWildrose updated:

    -
  • The Polychromic winter coat's hoodie will now polychrome, alongside any other new polychromic items with toggleable headwear.
  • -
  • Minesweeper will no longer blow up the player's ears when they select "Play on the same board"
  • -
  • Slimepeople will find warm donk pockets among other toxin healing items even more repulsive, as they are anti-toxic.
  • -
  • Slimepeople are now neutral to gross foods.
  • -
-

DeltaFire15 updated:

-
    -
  • AIs can no longer qdel() the gravity generator
  • -
-

Putnam3145 updated:

-
    -
  • Added some unit tests for reactions.
  • -
  • replaced handle_changeling and handle_bloodsucker with signal registration
  • -
-

Sonic121x updated:

-
    -
  • Fixed pill button on chemical press
  • -
-

TheObserver-sys updated:

-
    -
  • Brass now has a proper datum. Aspiring Forgetenders rejoice!
  • -
-

Trilbyspaceclone updated:

-
    -
  • Race based drinks will no longer stay inside your blood for ever.
  • -
-

Tupinambis updated:

-
    -
  • Redid Cogstation atmos pipes to make it less cluttered.
  • -
  • Removed a few doors from the main hallway to mitigate chokepoint issues
  • -
  • All belt hell conveyers are now on by default, so that belt hell actually works.
  • -
  • IDs for poddoors and belts and the like. Everything is now properly hooked and should work as expected (except for the pressure triggered mass drivers)
  • -
  • addresses most if not all roundstart active turfs.
  • -
  • Issue where wires were connected to the SMES improperly, and SMES were not properly precharged, resulting in power failure earlier than intended.
  • -
  • various rogue turfs and wirings.
  • -
  • security office APC being hooked to maintenance for some reason.
  • -
  • TEG is now directly wired to the SMES.
  • -
  • adds a subtype of mass drivers that is triggered by things being on it. TODO: Make these mass drivers trigger poddoors, to make belt hell fully functional.
  • -
-

lolman360 updated:

-
    -
  • glaives now work again
  • -
-

zeroisthebiggay updated:

-
    -
  • Revolver is now poplocked down to fifteen people.
  • -
- -

11 September 2020

-

Putnam3145 updated:

-
    -
  • Superconducting turfs now can't go below 0 celsius.
  • -
- -

09 September 2020

-

Putnam3145 updated:

-
    -
  • Made superconductivity work for the first time literally ever.
  • -
-

timothyteakettle updated:

-
    -
  • accents work better
  • -
- -

08 September 2020

-

Ghommie updated:

-
    -
  • fixed names of the Electrical Toolbox goodie pack and green croptop christmas suit.
  • -
  • Fixed turf visuals for real. Original PR by AnturK on tgstation.
  • -
-

KeRSedChaplain updated:

-
    -
  • added borg_deathsound.ogg and android_scream.ogg
  • -
-

silicons updated:

-
    -
  • meteor waves now have a static 5 minute timer.
  • -
- -

07 September 2020

-

DeltaFire15 updated:

-
    -
  • fixed a typo causing a span not to show.
  • -
-

Putnam for debugging ammo loading! Thx!! updated:

-
    -
  • Removed spell blade, diamond picaxe, and fire wand from lava land loot tables
  • -
  • Each mini boss now has its own type of crate.
  • -
  • Each spike has its own type of crate that it pulls its now smaller loot table from
  • -
  • Moved god eye from spike loot table to hard spawn collosses fight
  • -
  • Moved holoparasight from spike loot table to bubble gum
  • -
  • Moved magic meat hook from spike loot table to drake
  • -
  • 2 more crates to Arena Shuttle as well as 4-4-4 of each new type of chest
  • -
  • Replaced the diamond pick loot with a better one
  • -
  • Replaced the cursted katana with a non cursted verson that deals half the damage and has less block!
  • -
  • Three new potions, blue heals the mind like a mama potion, Green heals the soul aka the organs! Lastly Red heals the body, by 100 damage of each main types. Best not to waste them!
  • -
  • Four more "wands" Spellbooks! These fun little guys shoot out its own pages to do the affect, one will set the target on fire like a bullet, one will harm them a bit, one will heal the target a small bit - How nice! Last one will give them a few statis affects like a taser bolt but without as much power or tasing affect
  • -
- -

06 September 2020

-

Putnam3145 updated:

-
    -
  • Dynamic no longer pushes events.
  • -
  • Made spontaneous brain trauma a good deal less annoying.
  • -
-

lolman360, NecromancerAnne updated:

-
    -
  • The ancient art of blacksmithing, now in pixels.
  • -
  • cool swords and shit (thanks anne)
  • -
-

raspy-on-osu updated:

-
    -
  • thermomachine examine text
  • -
- -

05 September 2020

-

Bhijn updated:

-
    -
  • Readded the old method of temperature notifications in the form of a new pair of shivering/sweating notifications.
  • -
-

Putnam3145 updated:

-
    -
  • Hilbert hotel flavor text for one particular snowflake hotel changed.
  • -
  • admins can now actually reduce threat level in dynamic
  • -
  • Made owo.ogg smaller.
  • -
  • Character saving unit test is now more verbose on failure.
  • -
  • Added an extools proc hook alternative to rust_g logging.
  • -
-

raspy-on-osu updated:

-
    -
  • supermatter shard examine text
  • -
  • protolathe item categories
  • -
- -

04 September 2020

-

timothyteakettle updated:

-
    -
  • ipcs can speak
  • -
- -

03 September 2020

-

Ghommie updated:

-
    -
  • Jaunters should now work with magic mirror chasming.
  • -
  • The photocopier can now print more than one copy at a time.
  • -
  • Alkali perspiration infos don't crash the Pandemic UI anymore.
  • -
  • Windoors can be actually tinted now.
  • -
- -

02 September 2020

-

Putnam3145 updated:

-
    -
  • Added a unit test for character saving.
  • -
  • Plastitanium rapier no longer silently sleeps with no chance at counterplay when used by pacifists.
  • -
  • Fusion scan is now actually useful.
  • -
-

Tupinambis updated:

-
    -
  • moved the dakis, genital growth pills, and genital autosurgeons out of the maintenance loot table and into kinkmates.
  • -
-

raspy-on-osu updated:

-
    -
  • pyroclastic anomaly client spam
  • -
-

timothyteakettle updated:

-
    -
  • you can hide your ckey now from the roundend report
  • -
- -

01 September 2020

-

BlueWildrose updated:

-
    -
  • fixed slimes starting off hungry
  • -
- -

31 August 2020

-

Arturlang updated:

-
    -
  • Slimes can now damage structures, don't leave them unfed!
  • -
-

Chiirno updated:

-
    -
  • Moves pill_bottles/dice to box/dice on CogStation.
  • -
-

Couls, ported by NecromancerAnne updated:

-
    -
  • cleans up mech backstabbing code
  • -
-

DeltaFire15 updated:

-
    -
  • teleport-to-ark ability of the eminence, commented out
  • -
  • teleport-to-obelisk ability for the eminence
  • -
-

Detective-Google updated:

-
    -
  • plasmamen have no more slowdown
  • -
  • object reskins now use very nice and cool radials
  • -
-

EmeraldSundisk updated:

-
    -
  • Adds a pool to MetaStation
  • -
  • Slight readjustments to the surrounding area
  • -
  • Fixes a handful of external airlocks
  • -
-

ForrestWick updated:

-
    -
  • removes wall walking boots from nukie uplink
  • -
-

Ghommie updated:

-
    -
  • e-gun overlays and some floor decals should have been fixed.
  • -
-

LetterN updated:

-
    -
  • tgchat
  • -
-

Lynxless updated:

-
    -
  • Changed anatomic panacea into a direct buff, instead of a chem injection
  • -
  • Changed the values of anatomic panacea
  • -
  • Added a new icon for panacea's buff alert
  • -
-

Putnam3145 updated:

-
    -
  • Pref for genital/vore examine text
  • -
  • Fixed a couple events having ghost roles eligible.
  • -
  • Buffed slaughter demon: gets stronger as it eats people
  • -
  • Nerfed slaughter demon: no longer permanently round-removes all who are eaten by it, instead releasing their now-heartless bodies
  • -
  • Dynamic storytellers now calculate property weights properly.
  • -
-

Sonic121x updated:

-
    -
  • Fix the four type of new tea that will stuck inside your vein.
  • -
  • drinking glass sprite for those tea.
  • -
-

kappa-sama updated:

-
    -
  • miners can no longer acquire funny antag item
  • -
-

lolman360 updated:

-
    -
  • shuttle engine/heater sprites now face the right way
  • -
-

raspy-on-osu updated:

-
    -
  • TEG power output
  • -
  • tesla movement priorities
  • -
  • tesla counterplay
  • -
  • tesla containment check (containment variable now usable)
  • -
-

silicons updated:

-
    -
  • brooms now sweep objects on MOVABLE_PRE_MOVE rather than MOVABLE_MOVED
  • -
  • firedoors no longer automatically open on touch when there's no pressure differences.
  • -
-

timothyteakettle updated:

-
    -
  • buzz, buzz2 and ping are now all unrestricted emotes and can be used by anyone
  • -
  • the drake credit and pickle credit sprites have been removed
  • -
  • tongue speech handling is now done by accent datums
  • -
-

zeroisthebiggay updated:

-
    -
  • waffleco
  • +
  • Slimepeople are given unique laughs and screams.
  • +
  • Adds "warbles", "chimpers", and "puffs" to the customizable speech verbs for character.

30 August 2020

@@ -1081,66 +941,6 @@
  • explosive stand bombs can now be examined from any distance
  • explosive stand bombs are now a component.
  • - -

    02 August 2020

    -

    Auris456852 updated:

    -
      -
    • Added B.O.O.P. Remote Control cartridges to the PTech.
    • -
    -

    Hatterhat updated:

    -
      -
    • Durathread reinforcement kits! Sprites by Toriate, sets jumpsuit armor to durathread levels, craft in the crafting menu.
    • -
    -

    KeRSedChaplain updated:

    -
      -
    • The belligerent scripture and a brass multitool, and a new marauder variant which act similar to holoparasites/guardian spirits.
    • -
    • Removed the abductor teleport consoles they get, removes abscond for the time being as I've not seen much use for it other than just spamming it and hoping you end up in the armory.
    • -
    • moved around scriptures to make the cult work better as being based around the station, makes the Ark scream more often and work as a summonable object, clockwork armor now has a flat 0 defense up to 10 instead of negatives against laser damage. Makes the Ark work better in a station based setting, as well as the Heralds beacon in case It works for the mode.
    • -
    • added powerloaderstep.ogg for Neovgre
    • -
    • changes 'Dread_Ipad.dmi' to 'clockwork_slab.dmi'
    • -
    -

    MrJWhit updated:

    -
      -
    • Adjusts abductor spawntext
    • -
    -

    Seris02 updated:

    -
      -
    • fixed replica pods
    • -
    -

    dapnee updated:

    -
      -
    • fixed active turfs on wizard ruin and space hermit, fixed missing APC's and added a light on Delta
    • -
    -

    ike709 and bobbahbrown updated:

    -
      -
    • Admins can now see your bans on (some) other servers.
    • -
    -

    kappa-sama updated:

    -
      -
    • chaplain cultists being able to convert people to full clockwork cult status
    • -
    -

    timothyteakettle updated:

    -
      -
    • combat mode now has weaker buffs in terms of damage dealt and took for being or not being in the mode
    • -
    • damage debuff for laying down has been decreased from 0.5x to 0.7x
    • -
    - -

    01 August 2020

    -

    dapnee updated:

    -
      -
    • added cake hat to bar, adds another atmostech spawn
    • -
    • sinks point in the right direction, APC won't spawn off the wall in circuits
    • -
    • changes commissary APC so it actually powers the room, adds a missing AIR alarm, arrivals no longer has active atmos tiles.
    • -
    -

    silicons updated:

    -
      -
    • toy shotguns no longer need 2 hands to fire
    • -
    • being on fire works again.
    • -
    -

    timothyteakettle updated:

    -
      -
    • monkeys no longer continuously bleed everywhere
    • -
    GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index f62f35ee10..99ffc455c3 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -27417,3 +27417,110 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - soundadd: Slimepeople are given unique laughs and screams. - tweak: Adds "warbles", "chimpers", and "puffs" to the customizable speech verbs for character. +2020-10-02: + ArcaneMusic, with minor tweaks by TheObserver-sys: + - rscadd: Adds and modifies fertilizers, as well as a new stat, Instability. + - rscdel: Removes the rather disused functionality of irrigation hoses, temporarily + disables circuit use on hydroponics trays. + - tweak: Plant Analyzer have been upgraded. Using one in hand will now switch between + a stat view of your plant, and a chemical view of your plant. tweak:Trays now + accept and store reagents, as well as coming with an autogrow mode. However, + these upgrades came at the cost of old self sufficiency, meaning you must attend + to your plants a bit more often. + - tweak: Earthsblood, while not being able to gild trays anymore, has been found + to still be quite powerful as a fertilizer. + CoreFlare: + - rscadd: Altcloaks! Available in loadout. + Detective-Google: + - rscadd: a smattering of clothes from the RP server + - rscadd: detective wardrobe + EmeraldSundisk: + - rscadd: Adds the "Skelter" space ruin + - code_imp: Creates a few new area designations for the Skelter + - rscadd: Cargo techs now have access to a "long pants" variant of their standard + work uniform + - rscadd: Adds said uniform to CargoDrobes and the loadout menu + ItzGabby: + - rscadd: Three new turf tiles. + - imageadd: Turf icons with multiple damage icons, with in-hand icons for each tile. + - spellcheck: Edited the name and description to wooden. + LetterN: + - rscadd: craftable railings + - code_imp: ports robust savefiles + MrJWhit: + - tweak: tweaked heavy suit dmi + - bugfix: Fixes drones not being able to quickslot items + Putnam3145: + - rscadd: New policy config for pyroclastic slimes. + - tweak: SDGF clones now naked. + - balance: SDGF is now way more likely to make a clone that will align with the + creator's goals, with purity, making it a better antagging tool. + - bugfix: SDGF clones now have the same traits as the original. + - bugfix: transfer_ckey now resets view, preventing things like SDGF clones with + much larger view range. + - config: 'Policy configs have been added for SDGF, currently unused: SDGF, SDGF_ALIGNED, + SDGF_UNALIGNED.' + - bugfix: Shivering now has thresholds and fever's thresholds now work. + - bugfix: Made allturfs setup actually set up all turfs. + - balance: Dynamic is now more aggressive with adding antags. + - bugfix: Fixes vore pref saving. + SandPoot: + - bugfix: Fixes headslugs being unable to recover their human form. + Tupinambis: + - rscadd: Adds methane and methyl bromide gases. + - tweak: Minor gas name/desc changes to improve consistency + - imageadd: Ports the methyl bromide tank from bay. Adds two new canister sprites + for the new gases and CH4 screen alerts. + - bugfix: fixed a mispelling in the wound armor value for the bounty hunter suit + dapnee: + - rscadd: atrium, clinic, an extra office, a pseudo public mining area, two more + deluxe dorms, micro beach, aux bathroom, two construction areas, mass driver, + more intercoms + - tweak: moved all of service, chapel, dorms, garden, holodeck to a different z-level, + RnD is more open, maintenance is a bit more random, more firelocks, added more + mine-able rock + - bugfix: fixed the buttons in xenobio, gave shutters to cargo's storage area, fixed + holodeck so it works now, fixed some techfabs being lathes, added sensors to + atmos tanks, more decals, couple more signs, little floral areas and sitting + areas added to break up hallway monotony, mech chargers are no longer missing + their consoles, whiteship won't crash into arrivals anymore while the area it + takes up is more telegraphed, APC placement on AI sat entrance, missing wire + node for the outer portion of the AI sat, civilian level now has a telecom relay + lolman360: + - bugfix: smonk machine runtimes + - bugfix: automatic hydro tray has a unique sprite now (fancy robot arm) + timothyteakettle: + - rscadd: added luminescent and stargazer sprites as selectable body sprites for + slimes + - tweak: wound exponent lowered slightly from 1.225 to 1.2 + - config: wound exponent and limb damage multiplier are now config values + - rscadd: ipcs and synthlizards are now treated as actual robots, with robotic limbs, + an extra organ, and better emp acts + - rscadd: surgeries for healing robotic limbs, and brain surgery for robotic heads + - bugfix: androids limbs now show up as intended + - refactor: emps now work from 1-100 severity instead of 1/2 and the severity reduces + as you move from the epicentre + zeroisthebiggay: + - rscadd: ratvar gf is complete +2020-10-04: + DeltaFire15: + - bugfix: Synths / IPCs are no longer wound immune. + - bugfix: Husked IPCs / Synths should now be rendered correctly. + - bugfix: Falling vendors now squish synths / IPCs' limbs again. + - bugfix: Synths and IPCs now do not have some fun roundstart oversights anymore. + - bugfix: Regenerate_limbs now works for carbons with the ROBOTIC_LIMBS trait. + - bugfix: Pacifists no longer counterattack on parries if that attack would be harmful. + - tweak: Heretic sacrifices now husk with the reason of burn, and deal some additional + damage. + - bugfix: Neovgre can no longer become invincible on clock tiles. + - bugfix: Plushlings no longer break when absorbing snowflake plushies. + Detective-Google: + - bugfix: the snow cabin doors actually bolt now + Putnam3145: + - bugfix: Ghosts are no longer incapable of going away. + monster860: + - tweak: The slimeperson swap-body UI stays open when you switch bodies + timothyteakettle: + - bugfix: limb id entry in mutant bodyparts now supports switching to/from species + with gendered body parts + - tweak: the minimum brightness of mutant parts is now a define diff --git a/html/changelogs/AutoChangeLog-pr-12439.yml b/html/changelogs/AutoChangeLog-pr-12439.yml deleted file mode 100644 index 0089e07129..0000000000 --- a/html/changelogs/AutoChangeLog-pr-12439.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "timothyteakettle" -delete-after: True -changes: - - rscadd: "ipcs and synthlizards are now treated as actual robots, with robotic limbs, an extra organ, and better emp acts" - - rscadd: "surgeries for healing robotic limbs, and brain surgery for robotic heads" - - bugfix: "androids limbs now show up as intended" diff --git a/html/changelogs/AutoChangeLog-pr-13014.yml b/html/changelogs/AutoChangeLog-pr-13014.yml new file mode 100644 index 0000000000..861e797669 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13014.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - rscadd: "The wastes of Lavaland and the icy caverns of Snow Taxi rumble in unison." diff --git a/html/changelogs/AutoChangeLog-pr-13193.yml b/html/changelogs/AutoChangeLog-pr-13193.yml new file mode 100644 index 0000000000..980a9366d8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13193.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - tweak: "medium screens are better now" diff --git a/html/changelogs/AutoChangeLog-pr-13233.yml b/html/changelogs/AutoChangeLog-pr-13233.yml new file mode 100644 index 0000000000..4366abec64 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13233.yml @@ -0,0 +1,6 @@ +author: "Hatterhat" +delete-after: True +changes: + - rscadd: "Changeling bone gauntlets! They punch the shit out of people really good." + - tweak: "Guerilla gloves and gorilla gloves inherit the strip modifiers of their predecessors, because apparently they had those." + - balance: "Pugilists now always hit the targeted limb and never miss." diff --git a/html/changelogs/AutoChangeLog-pr-13252.yml b/html/changelogs/AutoChangeLog-pr-13252.yml new file mode 100644 index 0000000000..5de40bb80b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13252.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - tweak: "looking at loadout equips loadout items on your preview image instead of job items" diff --git a/html/changelogs/AutoChangeLog-pr-13314.yml b/html/changelogs/AutoChangeLog-pr-13314.yml deleted file mode 100644 index 86316680b3..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13314.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "ArcaneMusic, with minor tweaks by TheObserver-sys" -delete-after: True -changes: - - rscadd: "Adds and modifies fertilizers, as well as a new stat, Instability." - - rscdel: "Removes the rather disused functionality of irrigation hoses, temporarily disables circuit use on hydroponics trays." - - tweak: "Plant Analyzer have been upgraded. Using one in hand will now switch between a stat view of your plant, and a chemical view of your plant. -tweak:Trays now accept and store reagents, as well as coming with an autogrow mode. However, these upgrades came at the cost of old self sufficiency, meaning you must attend to your plants a bit more often." - - tweak: "Earthsblood, while not being able to gild trays anymore, has been found to still be quite powerful as a fertilizer." diff --git a/html/changelogs/AutoChangeLog-pr-13317.yml b/html/changelogs/AutoChangeLog-pr-13349.yml similarity index 51% rename from html/changelogs/AutoChangeLog-pr-13317.yml rename to html/changelogs/AutoChangeLog-pr-13349.yml index e0c2c1602a..2469b31ecd 100644 --- a/html/changelogs/AutoChangeLog-pr-13317.yml +++ b/html/changelogs/AutoChangeLog-pr-13349.yml @@ -1,4 +1,4 @@ author: "LetterN" delete-after: True changes: - - code_imp: "ports robust savefiles" + - code_imp: "Updates git and build tests." diff --git a/html/changelogs/AutoChangeLog-pr-13375.yml b/html/changelogs/AutoChangeLog-pr-13375.yml deleted file mode 100644 index 0db66583bf..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13375.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "timothyteakettle" -delete-after: True -changes: - - refactor: "emps now work from 1-100 severity instead of 1/2 and the severity reduces as you move from the epicentre" diff --git a/html/changelogs/AutoChangeLog-pr-13391.yml b/html/changelogs/AutoChangeLog-pr-13391.yml deleted file mode 100644 index a1e1fc1e7d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13391.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "dapnee" -delete-after: True -changes: - - rscadd: "atrium, clinic, an extra office, a pseudo public mining area, two more deluxe dorms, micro beach, aux bathroom, two construction areas, mass driver, more intercoms" - - tweak: "moved all of service, chapel, dorms, garden, holodeck to a different z-level, RnD is more open, maintenance is a bit more random, more firelocks, added more mine-able rock" - - bugfix: "fixed the buttons in xenobio, gave shutters to cargo's storage area, fixed holodeck so it works now, fixed some techfabs being lathes, added sensors to atmos tanks, more decals, couple more signs, little floral areas and sitting areas added to break up hallway monotony, mech chargers are no longer missing their consoles, whiteship won't crash into arrivals anymore while the area it takes up is more telegraphed, APC placement on AI sat entrance, missing wire node for the outer portion of the AI sat, civilian level now has a telecom relay" diff --git a/html/changelogs/AutoChangeLog-pr-13398.yml b/html/changelogs/AutoChangeLog-pr-13398.yml deleted file mode 100644 index f7af4f97c6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13398.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "timothyteakettle" -delete-after: True -changes: - - tweak: "wound exponent lowered slightly from 1.225 to 1.2" - - config: "wound exponent and limb damage multiplier are now config values" diff --git a/html/changelogs/AutoChangeLog-pr-13405.yml b/html/changelogs/AutoChangeLog-pr-13405.yml new file mode 100644 index 0000000000..176e886b0d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13405.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - tweak: "the warp implant now actually warps you back 10 seconds. leaves a trail, though. now unlimited us." diff --git a/html/changelogs/AutoChangeLog-pr-13423.yml b/html/changelogs/AutoChangeLog-pr-13423.yml deleted file mode 100644 index 27b5c70e65..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13423.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MrJWhit" -delete-after: True -changes: - - bugfix: "Fixes drones not being able to quickslot items" diff --git a/html/changelogs/AutoChangeLog-pr-13429.yml b/html/changelogs/AutoChangeLog-pr-13429.yml deleted file mode 100644 index 1c2c89ade7..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13429.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - bugfix: "Made allturfs setup actually set up all turfs." diff --git a/html/changelogs/AutoChangeLog-pr-13431.yml b/html/changelogs/AutoChangeLog-pr-13431.yml deleted file mode 100644 index 63a3c39a1a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13431.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "EmeraldSundisk" -delete-after: True -changes: - - rscadd: "Cargo techs now have access to a \"long pants\" variant of their standard work uniform" - - rscadd: "Adds said uniform to CargoDrobes and the loadout menu" diff --git a/html/changelogs/AutoChangeLog-pr-13441.yml b/html/changelogs/AutoChangeLog-pr-13441.yml deleted file mode 100644 index aa5da7e50a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13441.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - bugfix: "Shivering now has thresholds and fever's thresholds now work." diff --git a/html/changelogs/AutoChangeLog-pr-13443.yml b/html/changelogs/AutoChangeLog-pr-13443.yml deleted file mode 100644 index 52ea3d1935..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13443.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "ItzGabby" -delete-after: True -changes: - - rscadd: "Three new turf tiles." - - imageadd: "Turf icons with multiple damage icons, with in-hand icons for each tile." - - spellcheck: "Edited the name and description to wooden." diff --git a/html/changelogs/AutoChangeLog-pr-13444.yml b/html/changelogs/AutoChangeLog-pr-13444.yml new file mode 100644 index 0000000000..d24babda2e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13444.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - tweak: "you can now get a family heirlooms based off your species instead of job" diff --git a/html/changelogs/AutoChangeLog-pr-13446.yml b/html/changelogs/AutoChangeLog-pr-13446.yml deleted file mode 100644 index 609a24123e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13446.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - balance: "Dynamic is now more aggressive with adding antags." diff --git a/html/changelogs/AutoChangeLog-pr-13448.yml b/html/changelogs/AutoChangeLog-pr-13448.yml deleted file mode 100644 index 024a3e7627..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13448.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - bugfix: "fixed a mispelling in the wound armor value for the bounty hunter suit" diff --git a/html/changelogs/AutoChangeLog-pr-13450.yml b/html/changelogs/AutoChangeLog-pr-13450.yml deleted file mode 100644 index c87f4d1924..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13450.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MrJWhit" -delete-after: True -changes: - - tweak: "tweaked heavy suit dmi" diff --git a/html/changelogs/AutoChangeLog-pr-13452.yml b/html/changelogs/AutoChangeLog-pr-13452.yml deleted file mode 100644 index 458c616bc0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13452.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Tupinambis" -delete-after: True -changes: - - rscadd: "Adds methane and methyl bromide gases." - - tweak: "Minor gas name/desc changes to improve consistency" - - imageadd: "Ports the methyl bromide tank from bay. Adds two new canister sprites for the new gases and CH4 screen alerts." diff --git a/html/changelogs/AutoChangeLog-pr-13455.yml b/html/changelogs/AutoChangeLog-pr-13455.yml deleted file mode 100644 index 6c0c875556..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13455.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - rscadd: "New policy config for pyroclastic slimes." diff --git a/html/changelogs/AutoChangeLog-pr-13457.yml b/html/changelogs/AutoChangeLog-pr-13457.yml deleted file mode 100644 index 3961ecc1d5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13457.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SandPoot" -delete-after: True -changes: - - bugfix: "Fixes headslugs being unable to recover their human form." diff --git a/html/changelogs/AutoChangeLog-pr-13458.yml b/html/changelogs/AutoChangeLog-pr-13458.yml deleted file mode 100644 index a4b25316b8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13458.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "lolman360" -delete-after: True -changes: - - bugfix: "smonk machine runtimes" - - bugfix: "automatic hydro tray has a unique sprite now (fancy robot arm)" diff --git a/html/changelogs/AutoChangeLog-pr-13461.yml b/html/changelogs/AutoChangeLog-pr-13461.yml new file mode 100644 index 0000000000..e2397a7aa0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13461.yml @@ -0,0 +1,4 @@ +author: "Detective-Google" +delete-after: True +changes: + - rscadd: "arcade carpet" diff --git a/html/changelogs/AutoChangeLog-pr-13463.yml b/html/changelogs/AutoChangeLog-pr-13463.yml deleted file mode 100644 index 416ffaf07d..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13463.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "timothyteakettle" -delete-after: True -changes: - - rscadd: "added luminescent and stargazer sprites as selectable body sprites for slimes" diff --git a/html/changelogs/AutoChangeLog-pr-13466.yml b/html/changelogs/AutoChangeLog-pr-13466.yml deleted file mode 100644 index 67d9837863..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13466.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Putnam3145" -delete-after: True -changes: - - tweak: "SDGF clones now naked." - - balance: "SDGF is now way more likely to make a clone that will align with the creator's goals, with purity, making it a better antagging tool." - - bugfix: "SDGF clones now have the same traits as the original." - - bugfix: "transfer_ckey now resets view, preventing things like SDGF clones with much larger view range." - - config: "Policy configs have been added for SDGF, currently unused: SDGF, SDGF_ALIGNED, SDGF_UNALIGNED." diff --git a/html/changelogs/AutoChangeLog-pr-13470.yml b/html/changelogs/AutoChangeLog-pr-13470.yml deleted file mode 100644 index a620a996b6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13470.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "EmeraldSundisk" -delete-after: True -changes: - - rscadd: "Adds the \"Skelter\" space ruin" - - code_imp: "Creates a few new area designations for the Skelter" diff --git a/html/changelogs/AutoChangeLog-pr-13471.yml b/html/changelogs/AutoChangeLog-pr-13471.yml deleted file mode 100644 index 7f365aeb27..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13471.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "zeroisthebiggay" -delete-after: True -changes: - - rscadd: "ratvar gf is complete" diff --git a/html/changelogs/AutoChangeLog-pr-13472.yml b/html/changelogs/AutoChangeLog-pr-13472.yml new file mode 100644 index 0000000000..8e8d043de6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13472.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - rscadd: "roundstart slimes can turn into puddles now" diff --git a/html/changelogs/AutoChangeLog-pr-13475.yml b/html/changelogs/AutoChangeLog-pr-13475.yml deleted file mode 100644 index 45c6b4be8f..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13475.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Detective-Google" -delete-after: True -changes: - - rscadd: "a smattering of clothes from the RP server" - - rscadd: "detective wardrobe" diff --git a/html/changelogs/AutoChangeLog-pr-13477.yml b/html/changelogs/AutoChangeLog-pr-13477.yml deleted file mode 100644 index 399290e987..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13477.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "LetterN" -delete-after: True -changes: - - rscadd: "craftable railings" diff --git a/html/changelogs/AutoChangeLog-pr-13479.yml b/html/changelogs/AutoChangeLog-pr-13479.yml new file mode 100644 index 0000000000..fcfe65a47e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13479.yml @@ -0,0 +1,5 @@ +author: "LetterN" +delete-after: True +changes: + - bugfix: "minimap text" + - code_imp: "ports cinematic upgrades" diff --git a/html/changelogs/AutoChangeLog-pr-13481.yml b/html/changelogs/AutoChangeLog-pr-13481.yml new file mode 100644 index 0000000000..f6049c552b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13481.yml @@ -0,0 +1,6 @@ +author: "DeltaFire15" +delete-after: True +changes: + - bugfix: "the blacksmithing skill now works properly" + - tweak: "Anvils cannot be interacted with with hammers whilst they are already being used" + - tweak: "If someone has no gloves when interacting with heated ingots, they no longer ignore their effects." diff --git a/html/changelogs/AutoChangeLog-pr-13483.yml b/html/changelogs/AutoChangeLog-pr-13483.yml new file mode 100644 index 0000000000..1db9304ffb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13483.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - bugfix: "The Revenant self-revive ability is no longer broken." diff --git a/html/changelogs/AutoChangeLog-pr-13486.yml b/html/changelogs/AutoChangeLog-pr-13486.yml deleted file mode 100644 index 9efbdf764e..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13486.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CoreFlare" -delete-after: True -changes: - - rscadd: "Altcloaks! Available in loadout." diff --git a/html/changelogs/AutoChangeLog-pr-13487.yml b/html/changelogs/AutoChangeLog-pr-13487.yml new file mode 100644 index 0000000000..4b0f92adfb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13487.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - bugfix: "People installing KA modkits in miner borgs is no longer broken." diff --git a/html/changelogs/AutoChangeLog-pr-13496.yml b/html/changelogs/AutoChangeLog-pr-13496.yml new file mode 100644 index 0000000000..30308efaff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13496.yml @@ -0,0 +1,4 @@ +author: "Detective-Google" +delete-after: True +changes: + - rscadd: "explosions now get broadcasted to deadchat." diff --git a/html/changelogs/AutoChangeLog-pr-13497.yml b/html/changelogs/AutoChangeLog-pr-13497.yml new file mode 100644 index 0000000000..c5f569bad3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13497.yml @@ -0,0 +1,5 @@ +author: "Zandario" +delete-after: True +changes: + - code_imp: "Added some framework for future species expansions, including clothing refitting." + - refactor: "Made majority of the relevant Species IDs and Categories pre-defined, also for easier expansion and use." diff --git a/html/changelogs/AutoChangeLog-pr-13498.yml b/html/changelogs/AutoChangeLog-pr-13498.yml new file mode 100644 index 0000000000..f956ee4b07 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13498.yml @@ -0,0 +1,5 @@ +author: "Bhijn" +delete-after: True +changes: + - tweak: "Changeling loudness is now determined as an average of all their abilities, rather than the sum" + - tweak: "To compensate for this, blood tests now require a loudness value of 1 or higher to detect ling blood. Additionally, blood test explosions are now triggered only when the loudness value is higher than 2." diff --git a/html/changelogs/AutoChangeLog-pr-13499.yml b/html/changelogs/AutoChangeLog-pr-13499.yml new file mode 100644 index 0000000000..804fa9fc34 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13499.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "Toilet loot spawners don't lag the server on server start with forced hard dels." diff --git a/html/changelogs/AutoChangeLog-pr-13500.yml b/html/changelogs/AutoChangeLog-pr-13500.yml new file mode 100644 index 0000000000..7ba1eb64f3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13500.yml @@ -0,0 +1,5 @@ +author: "LetterN" +delete-after: True +changes: + - rscadd: "2 more ways to get up from z1" + - tweak: "tweaked the z2 garden to be less blank" diff --git a/html/changelogs/AutoChangeLog-pr-13467.yml b/html/changelogs/AutoChangeLog-pr-13501.yml similarity index 56% rename from html/changelogs/AutoChangeLog-pr-13467.yml rename to html/changelogs/AutoChangeLog-pr-13501.yml index b32301314c..dcdd868e37 100644 --- a/html/changelogs/AutoChangeLog-pr-13467.yml +++ b/html/changelogs/AutoChangeLog-pr-13501.yml @@ -1,4 +1,4 @@ author: "Putnam3145" delete-after: True changes: - - bugfix: "Fixes vore pref saving." + - bugfix: "Holofirelocks work now." diff --git a/html/changelogs/AutoChangeLog-pr-13503.yml b/html/changelogs/AutoChangeLog-pr-13503.yml new file mode 100644 index 0000000000..c68eaf44f0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13503.yml @@ -0,0 +1,5 @@ +author: "Hatterhat" +delete-after: True +changes: + - rscadd: "Survival daggers! A slightly more expensive survival knife that comes with a brighter flashlight. On the blade." + - tweak: "Luxury pod capsules look different from normal capsules." diff --git a/html/changelogs/AutoChangeLog-pr-13504.yml b/html/changelogs/AutoChangeLog-pr-13504.yml new file mode 100644 index 0000000000..7f59b120b6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13504.yml @@ -0,0 +1,6 @@ +author: "zeroisthebiggay" +delete-after: True +changes: + - rscadd: "gravitokinetic stands from tg" + - balance: "buffs stands overall" + - bugfix: "protector stands no longer become tposing invisible apes sometimes" diff --git a/html/changelogs/AutoChangeLog-pr-13509.yml b/html/changelogs/AutoChangeLog-pr-13509.yml new file mode 100644 index 0000000000..e666a6b2a4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13509.yml @@ -0,0 +1,6 @@ +author: "EmeraldSundisk" +delete-after: True +changes: + - balance: "The \"Skelter ruin\" now has stechkins as opposed to M1911s" + - tweak: "Skelter's decorative bullet casings replaced to factor in the change in caliber" + - rscadd: "Skelter now has a combat knife and fluff note" diff --git a/html/changelogs/AutoChangeLog-pr-13511.yml b/html/changelogs/AutoChangeLog-pr-13511.yml new file mode 100644 index 0000000000..e819d8752d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13511.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - imageadd: "The Syndicate appear to be issuing new revolver variants." diff --git a/html/changelogs/AutoChangeLog-pr-13512.yml b/html/changelogs/AutoChangeLog-pr-13512.yml new file mode 100644 index 0000000000..f96f13a156 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13512.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - bugfix: "Cryogenics now screams on common again when your fuckbuddy heads out." diff --git a/html/changelogs/AutoChangeLog-pr-13513.yml b/html/changelogs/AutoChangeLog-pr-13513.yml new file mode 100644 index 0000000000..0cff979e8c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13513.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - rscadd: "you can now pick your eye sprites from customization" diff --git a/html/changelogs/AutoChangeLog-pr-13514.yml b/html/changelogs/AutoChangeLog-pr-13514.yml new file mode 100644 index 0000000000..bd1605fb96 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13514.yml @@ -0,0 +1,4 @@ +author: "Thalpy" +delete-after: True +changes: + - bugfix: "fixes some bugs in jacqs code from edits to the codebase" diff --git a/html/changelogs/AutoChangeLog-pr-13516.yml b/html/changelogs/AutoChangeLog-pr-13516.yml new file mode 100644 index 0000000000..30e22f4f48 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13516.yml @@ -0,0 +1,4 @@ +author: "yorii" +delete-after: True +changes: + - bugfix: "fixed botany rounding error that caused grass and other plants to misbehave" diff --git a/html/changelogs/AutoChangeLog-pr-13517.yml b/html/changelogs/AutoChangeLog-pr-13517.yml new file mode 100644 index 0000000000..8f29517058 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13517.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - bugfix: "simple mobs are now immune to radioactive contamination" diff --git a/html/changelogs/AutoChangeLog-pr-13518.yml b/html/changelogs/AutoChangeLog-pr-13518.yml new file mode 100644 index 0000000000..565754f48b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13518.yml @@ -0,0 +1,4 @@ +author: "TheObserver-sys" +delete-after: True +changes: + - bugfix: "Drake? Where's the dead fairygrass sprite?" diff --git a/html/changelogs/AutoChangeLog-pr-13519.yml b/html/changelogs/AutoChangeLog-pr-13519.yml new file mode 100644 index 0000000000..0c4978a7d8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13519.yml @@ -0,0 +1,4 @@ +author: "Detective-Google" +delete-after: True +changes: + - rscadd: "Lick radial" diff --git a/html/changelogs/AutoChangeLog-pr-13523.yml b/html/changelogs/AutoChangeLog-pr-13523.yml new file mode 100644 index 0000000000..ac2019bb88 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13523.yml @@ -0,0 +1,4 @@ +author: "Detective-Google" +delete-after: True +changes: + - bugfix: "arcade carpets now actually work" diff --git a/html/changelogs/AutoChangeLog-pr-13525.yml b/html/changelogs/AutoChangeLog-pr-13525.yml new file mode 100644 index 0000000000..eb441f04c3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13525.yml @@ -0,0 +1,4 @@ +author: "Detective-Google" +delete-after: True +changes: + - bugfix: "Hilbert's jukebox works" diff --git a/html/changelogs/AutoChangeLog-pr-13526.yml b/html/changelogs/AutoChangeLog-pr-13526.yml new file mode 100644 index 0000000000..104b76bd94 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13526.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "vore prefs save now" diff --git a/html/changelogs/AutoChangeLog-pr-13527.yml b/html/changelogs/AutoChangeLog-pr-13527.yml new file mode 100644 index 0000000000..7e65116e83 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13527.yml @@ -0,0 +1,4 @@ +author: "ArchieBeepBoop" +delete-after: True +changes: + - rscadd: "Upgraded Advanced RTG Machine Preset" diff --git a/html/changelogs/AutoChangeLog-pr-13530.yml b/html/changelogs/AutoChangeLog-pr-13530.yml new file mode 100644 index 0000000000..b99ed1c545 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13530.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - rscadd: "Clowns now have unpredictable effects on supermatter crystals when dusting from contact." diff --git a/html/changelogs/AutoChangeLog-pr-13531.yml b/html/changelogs/AutoChangeLog-pr-13531.yml new file mode 100644 index 0000000000..3c138ef98d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13531.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - bugfix: "A certain lizard (totally not me) being stupid is no longer going to break regenerate_bodyparts" diff --git a/html/changelogs/AutoChangeLog-pr-13533.yml b/html/changelogs/AutoChangeLog-pr-13533.yml new file mode 100644 index 0000000000..1ba14c689c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13533.yml @@ -0,0 +1,4 @@ +author: "shellspeed1" +delete-after: True +changes: + - rscadd: "A new recipe for a spicy has been given to us by a strange business man." diff --git a/html/changelogs/AutoChangeLog-pr-13535.yml b/html/changelogs/AutoChangeLog-pr-13535.yml new file mode 100644 index 0000000000..b020587eb8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13535.yml @@ -0,0 +1,7 @@ +author: "Hatterhat" +delete-after: True +changes: + - rscadd: "Energy sabre reskin for the energy sword - access via alt-click." + - bugfix: "Alt-click reskins are fixed." + - tweak: "Defibrillators and their many, many overlays were moved to another .dmi." + - tweak: "You can now change the color of an energy sword via multitool. Not deswords. Yet." diff --git a/html/changelogs/AutoChangeLog-pr-13539.yml b/html/changelogs/AutoChangeLog-pr-13539.yml new file mode 100644 index 0000000000..a1f3df4fd0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13539.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - rscdel: "removes two debug messages left in from my prior eye customization pr" diff --git a/html/changelogs/AutoChangeLog-pr-13540.yml b/html/changelogs/AutoChangeLog-pr-13540.yml new file mode 100644 index 0000000000..0d7d9b8d2c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13540.yml @@ -0,0 +1,6 @@ +author: "ArcaneMusic, The0bserver-sys" +delete-after: True +changes: + - rscadd: "New from Hydrowear LLC: The Botanical Belt! This handy yellow belt lets you hold most of your botany gear, and a few beakers for reduced bag and floor clutter!" + - tweak: "Gives Hydrotrays plumbing pipes automatically, allowing you to make a self sustaining tray via plumbing." + - tweak: "Gives Service access to Bluespace Beakers, at last, gives Cargo, Science, and Medical the ability to construct reinforced plungers for use on lavaland." diff --git a/html/changelogs/AutoChangeLog-pr-13544.yml b/html/changelogs/AutoChangeLog-pr-13544.yml new file mode 100644 index 0000000000..61cf99090d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13544.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - bugfix: "Portals no longer runtime because of incorrect args." diff --git a/html/changelogs/AutoChangeLog-pr-13553.yml b/html/changelogs/AutoChangeLog-pr-13553.yml new file mode 100644 index 0000000000..2759fa2754 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13553.yml @@ -0,0 +1,4 @@ +author: "timothyteakettle" +delete-after: True +changes: + - bugfix: "eye sprites should look normal once more" diff --git a/html/statbrowser.html b/html/statbrowser.html index fbdbb61449..0920081fd2 100644 --- a/html/statbrowser.html +++ b/html/statbrowser.html @@ -7,149 +7,172 @@ @@ -267,9 +290,10 @@ if (window.location) { }); */ // Status panel implementation ------------------------------------------------ -var status_tab_parts = ["loading..."]; +var status_tab_parts = ["Loading..."]; var current_tab = null; -var mc_tab_parts = [["loading...", ""]]; +var mc_tab_parts = [["Loading...", ""]]; +var vote_parts = [[null]]; var href_token = null; var spells = []; var spell_tabs = []; @@ -288,6 +312,8 @@ var statcontentdiv = document.querySelector('#statcontent'); var storedimages = []; function createStatusTab(name) { + if (name.indexOf(".") != -1) + name = name.split(".")[0]; if(document.getElementById(name) || name.trim() == "") return; if(!verb_tabs.includes(name) && !permanent_tabs.includes(name)) @@ -302,12 +328,8 @@ function createStatusTab(name) { B.className = "button"; //ORDERING ALPHABETICALLY B.style.order = name.charCodeAt(0); - if(name == "Status" || name == "MC") { - if(name == "Status") - B.style.order = 1; - else - B.style.order = 2; - } + if(name == "Status" || name == "MC") + B.style.order = name == "Status" ? 1 : 2; //END ORDERING menu.appendChild(B); SendTabToByond(name); @@ -327,6 +349,19 @@ function removeStatusTab(name) { under_menu.style.height = menu.clientHeight + 'px'; } +function sortVerbs() { + verbs.sort(function (a, b) { + var selector = a[0] == b[0] ? 1 : 0; + if (a[selector].toUpperCase() < b[selector].toUpperCase()) { + return 1; + } + else if (a[selector].toUpperCase() > b[selector].toUpperCase()) { + return -1; + } + return 0; + }) +} + window.onresize = function () { under_menu.style.height = menu.clientHeight + 'px'; } @@ -365,19 +400,19 @@ function check_verbs() { for(var v = verb_tabs.length - 1; v >= 0; v--){ verbs_cat_check(verb_tabs[v]); } - //checkStatusTab(); // removes any empty status tabs } function verbs_cat_check(cat) { + var tabCat = cat.indexOf(".") != -1 ? cat.split(".")[0] : cat; var verbs_in_cat = 0; var verbcat = ""; - if(!verb_tabs.includes(cat)){ - removeStatusTab(cat); + if(!verb_tabs.includes(tabCat)){ + removeStatusTab(tabCat); return; } for(var v = 0; v < verbs.length; v++){ var part = verbs[v]; - verbcat = part[0]; + verbcat = part[0].indexOf(".") != -1 ? part[0].split(".") : part[0]; if(verbcat != cat || verbcat.trim() == ""){ continue; } @@ -387,8 +422,8 @@ function verbs_cat_check(cat) { } } if(verbs_in_cat != 1) { - removeStatusTab(cat); - if(current_tab == cat) + removeStatusTab(tabCat); + if(current_tab == tabCat) tab_change("Status"); } } @@ -411,17 +446,20 @@ function add_verb_list(v) { to_add.sort(); // sort what we're adding for(var i = 0; i < to_add.length; i++) { var part = to_add[i]; + if (!part[0]) + continue; + var category = part[0].indexOf(".") == -1 ? part[0] : part[0].split(".")[0] if(findVerbindex(part[1], verbs)) continue; - if(verb_tabs.includes(part[0])){ + if(verb_tabs.includes(category)){ verbs.push(part); - if(current_tab == part[0]) { - draw_verbs(part[0]); // redraw if we added a verb to the tab we're currently in + if(current_tab == category) { + draw_verbs(category); // redraw if we added a verb to the tab we're currently in } - } else if(part[0]) { - verb_tabs.push(part[0]); + } else if(category) { + verb_tabs.push(category); verbs.push(part); - createStatusTab(part[0]); + createStatusTab(category); } } } @@ -432,7 +470,7 @@ function remove_verb_list(v) { remove_verb(to_remove[i]); } check_verbs(); - verbs.sort(); + sortVerbs(); if(verb_tabs.includes(current_tab)) draw_verbs(current_tab); } @@ -455,7 +493,7 @@ function init_verbs(c, v) { } if(v) { add_verb_list(v); - verbs.sort(); // sort them + sortVerbs(); // sort them if(do_update) { draw_verbs(current_tab); } @@ -491,6 +529,12 @@ function update(global_data, ping_entry, other_entries) { else if(current_tab == "Debug Stat Panel") draw_debug(); } +/// citadel statvoting +function update_voting(vote_data) { + vote_parts = JSON.parse(vote_data); + if(current_tab == "Status") + draw_status(); +} function update_mc(global_mc_data, coords_entry) { mc_tab_parts = JSON.parse(global_mc_data); @@ -586,7 +630,7 @@ function tab_change(tab) { }else if(tab == turfname) { draw_listedturf(); } else { - statcontentdiv[textContentKey] = "loading..."; + statcontentdiv[textContentKey] = "Loading..."; } window.location.href = "byond://winset?statbrowser.is-visible=true"; } @@ -667,6 +711,33 @@ function draw_status() { document.getElementById("statcontent").appendChild(div); } } + //voting shitcode. See mc for more info. + if(vote_parts && vote_parts[0][0]) { //null verification. + var table = document.createElement("table"); + for(var i = 0; i < vote_parts.length; i++) { + var part = vote_parts[i]; + var tr = document.createElement("tr"); + var td1 = document.createElement("td"); + td1[textContentKey] = part[0]; + var td2 = document.createElement("td"); + if(part[2]) { + var a = document.createElement("a"); + if(part[2] === "disabled") { + a.href = "byond://winset?command=Vote"; + } else { + a.href = "?src=" + part[2]; + } + a[textContentKey] = part[1]; + td2.appendChild(a); + } else { + td2[textContentKey] = part[1]; + } + tr.appendChild(td1); + tr.appendChild(td2); + table.appendChild(tr); + } + document.getElementById("statcontent").appendChild(table); + } if(verb_tabs.length == 0 || !verbs) { window.location.href = "byond://winset?command=Fix-Stat-Panel"; @@ -912,29 +983,46 @@ function draw_spells(cat) { function draw_verbs(cat){ statcontentdiv[textContentKey] = ""; - var table = document.createElement("newdiv"); + var table = document.createElement("div"); + var additions = {}; // additional sub-categories to be rendered table.className = "grid-container"; - var command = ""; // typecast name to string - verbs.sort(); + sortVerbs(); verbs.reverse(); // sort verbs backwards before we draw - for(var i = verbs.length - 1; i >= 0; i--) { - var part = verbs[i]; // should be a list containing category and command - if(!part[1]) continue; - if(part[0] != cat){ - continue; + for (var i = 0; i < verbs.length; ++i) { + var part = verbs[i]; + var name = part[0]; + var command = part[1]; + + if (command && name.lastIndexOf(cat, 0) != -1 && (name.length == cat.length || name.charAt(cat.length) == ".")) { + var subCat = name.lastIndexOf(".") != -1 ? name.split(".")[1] : null; + if (subCat && !additions[subCat]) { + var newTable = document.createElement("div"); + newTable.className = "grid-container"; + additions[subCat] = newTable; + } + + var a = document.createElement("a"); + a.href = "byond://winset?command=" + command.replace(/\s/g, "-"); + a[textContentKey] = command; + a.className = "grid-item"; + (subCat ? additions[subCat] : table).appendChild(a); + } + } + + // Append base table to view + var content = document.getElementById("statcontent"); + content.appendChild(table); + + // Append additional sub-categories if relevant + for (var cat in additions) { + if (additions.hasOwnProperty(cat)) { + // do addition here + var header = document.createElement("h3"); + header[textContentKey] = cat; + content.appendChild(header); + content.appendChild(additions[cat]); } - if(part[0].trim() == ""){ - verbs.splice(i, 1); - continue; - } - command = part[1]; - var a = document.createElement("a"); - a.href = "byond://winset?command=" + command.replace(/\s/g, "-"); - a[textContentKey] = command; - a.className = "grid-item"; - table.appendChild(a); } - document.getElementById("statcontent").appendChild(table); } function set_theme(which) { diff --git a/icons/mob/actions/actions_changeling.dmi b/icons/mob/actions/actions_changeling.dmi index ce6b81e13b..2f384c6119 100644 Binary files a/icons/mob/actions/actions_changeling.dmi and b/icons/mob/actions/actions_changeling.dmi differ diff --git a/icons/mob/actions/actions_slime.dmi b/icons/mob/actions/actions_slime.dmi index acf7a31c6e..59840650a5 100644 Binary files a/icons/mob/actions/actions_slime.dmi and b/icons/mob/actions/actions_slime.dmi differ diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index 4ac82ca299..a25752c1d0 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi index 44499649f9..b95c377e12 100644 Binary files a/icons/mob/clothing/hands.dmi and b/icons/mob/clothing/hands.dmi differ diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi new file mode 100644 index 0000000000..4b8dba160a Binary files /dev/null and b/icons/mob/eyes.dmi differ diff --git a/icons/mob/hair.dmi b/icons/mob/hair.dmi new file mode 100644 index 0000000000..6dfa78fcff Binary files /dev/null and b/icons/mob/hair.dmi differ diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 1e67d7baba..563dd6665c 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ diff --git a/icons/mob/human_parts.dmi b/icons/mob/human_parts.dmi index 60978d55a2..34a1ada483 100644 Binary files a/icons/mob/human_parts.dmi and b/icons/mob/human_parts.dmi differ diff --git a/icons/mob/human_parts_greyscale.dmi b/icons/mob/human_parts_greyscale.dmi index 794074bfe4..814ac9a396 100644 Binary files a/icons/mob/human_parts_greyscale.dmi and b/icons/mob/human_parts_greyscale.dmi differ diff --git a/icons/mob/icemoon/icemoon_monsters.dmi b/icons/mob/icemoon/icemoon_monsters.dmi index 4f0b5df64a..02b39cc3c7 100644 Binary files a/icons/mob/icemoon/icemoon_monsters.dmi and b/icons/mob/icemoon/icemoon_monsters.dmi differ diff --git a/icons/mob/inhands/weapons/hammers_lefthand.dmi b/icons/mob/inhands/weapons/hammers_lefthand.dmi index b753a1f181..2027ee4205 100644 Binary files a/icons/mob/inhands/weapons/hammers_lefthand.dmi and b/icons/mob/inhands/weapons/hammers_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/hammers_righthand.dmi b/icons/mob/inhands/weapons/hammers_righthand.dmi index 7650f6c760..7871911d4e 100644 Binary files a/icons/mob/inhands/weapons/hammers_righthand.dmi and b/icons/mob/inhands/weapons/hammers_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/swords_lefthand.dmi b/icons/mob/inhands/weapons/swords_lefthand.dmi index 23d80af9ef..5ff248de68 100644 Binary files a/icons/mob/inhands/weapons/swords_lefthand.dmi and b/icons/mob/inhands/weapons/swords_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi index 702c0299b5..0332e60fb5 100644 Binary files a/icons/mob/inhands/weapons/swords_righthand.dmi and b/icons/mob/inhands/weapons/swords_righthand.dmi differ diff --git a/icons/mob/lips.dmi b/icons/mob/lips.dmi new file mode 100644 index 0000000000..4c00ac324a Binary files /dev/null and b/icons/mob/lips.dmi differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 23f0e2cc13..10b733bae4 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/obj/clothing/belt_overlays.dmi b/icons/obj/clothing/belt_overlays.dmi index 1c22a0ad1b..cdb2567268 100644 Binary files a/icons/obj/clothing/belt_overlays.dmi and b/icons/obj/clothing/belt_overlays.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 1a98872463..75fd20b856 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index c0f78ee604..0feb6a75db 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 8fbb2abe1e..4f650f8561 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/defibrillators.dmi b/icons/obj/defibrillators.dmi new file mode 100644 index 0000000000..f838f40030 Binary files /dev/null and b/icons/obj/defibrillators.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 5a9e1e54b6..34f9867ee9 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/food/soupsalad.dmi b/icons/obj/food/soupsalad.dmi index ca9c150480..c4d7c184b6 100644 Binary files a/icons/obj/food/soupsalad.dmi and b/icons/obj/food/soupsalad.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 00670916db..939ee0e009 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ diff --git a/icons/obj/hydroponics/growing_mushrooms.dmi b/icons/obj/hydroponics/growing_mushrooms.dmi index 20633cf85b..899fa63856 100644 Binary files a/icons/obj/hydroponics/growing_mushrooms.dmi and b/icons/obj/hydroponics/growing_mushrooms.dmi differ diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index c5aca2394f..9b73fa706b 100644 Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ diff --git a/icons/obj/kitchen.dmi b/icons/obj/kitchen.dmi index cb67f0d6f9..8cdff2214b 100644 Binary files a/icons/obj/kitchen.dmi and b/icons/obj/kitchen.dmi differ diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index 400c5bdfa0..ad0b74829f 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ diff --git a/icons/obj/supplypods.dmi b/icons/obj/supplypods.dmi index d21da6d53a..68674c4006 100644 Binary files a/icons/obj/supplypods.dmi and b/icons/obj/supplypods.dmi differ diff --git a/icons/obj/supplypods_32x32.dmi b/icons/obj/supplypods_32x32.dmi new file mode 100644 index 0000000000..855132f649 Binary files /dev/null and b/icons/obj/supplypods_32x32.dmi differ diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi index 5f0fbb4104..088b6c2c7b 100644 Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ diff --git a/icons/radials/taperecorder.dmi b/icons/radials/taperecorder.dmi new file mode 100644 index 0000000000..6230ab1363 Binary files /dev/null and b/icons/radials/taperecorder.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 65fba49309..19d4dca13d 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index f375fea88f..700449e86f 100644 --- a/interface/stylesheet.dm +++ b/interface/stylesheet.dm @@ -167,6 +167,7 @@ h1.alert, h2.alert {color: #000000;} .clown {color: #FF69Bf; font-size: 3; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;} .singing {font-family: "Trebuchet MS", cursive, sans-serif; font-style: italic;} .his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;} +.spooky {color: #FF9100;} .velvet {color: #660015; font-weight: bold; animation: velvet 5000ms infinite;} @keyframes velvet { 0% { color: #400020; } diff --git a/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm b/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm index 17c3f17ad8..0457b853b7 100644 --- a/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm +++ b/modular_citadel/code/modules/mob/living/carbon/damage_procs.dm @@ -1,16 +1,3 @@ -/mob/living/carbon/adjustStaminaLossBuffered(amount, updating_health = 1) - if(status_flags & GODMODE) - return 0 - if(CONFIG_GET(flag/disable_stambuffer)) - return - var/directstamloss = (bufferedstam + amount) - stambuffer - if(directstamloss > 0) - adjustStaminaLoss(directstamloss) - bufferedstam = clamp(bufferedstam + amount, 0, stambuffer) - stambufferregentime = world.time + 10 - if(updating_health) - update_health_hud() - /mob/living/carbon/adjustStaminaLoss(amount, updating_health = TRUE, forced = FALSE, affected_zone = BODY_ZONE_CHEST) if(!forced && (status_flags & GODMODE)) return FALSE diff --git a/modular_citadel/code/modules/mob/living/damage_procs.dm b/modular_citadel/code/modules/mob/living/damage_procs.dm deleted file mode 100644 index a399c17c71..0000000000 --- a/modular_citadel/code/modules/mob/living/damage_procs.dm +++ /dev/null @@ -1,2 +0,0 @@ -/mob/living/proc/adjustStaminaLossBuffered(amount, updating_health = TRUE, forced = FALSE) - return diff --git a/modular_citadel/code/modules/mob/living/living.dm b/modular_citadel/code/modules/mob/living/living.dm index 01867e9dcc..b5be028607 100644 --- a/modular_citadel/code/modules/mob/living/living.dm +++ b/modular_citadel/code/modules/mob/living/living.dm @@ -1,5 +1,3 @@ -/mob/living - /atom var/pseudo_z_axis @@ -24,26 +22,3 @@ if(.) pseudo_z_axis = newloc.get_fake_z() pixel_z = pseudo_z_axis - -/mob/living/carbon/update_stamina() - var/total_health = getStaminaLoss() - if(total_health >= STAMINA_SOFTCRIT) - if(!(combat_flags & COMBAT_FLAG_SOFT_STAMCRIT)) - ENABLE_BITFIELD(combat_flags, COMBAT_FLAG_SOFT_STAMCRIT) - else - if(combat_flags & COMBAT_FLAG_SOFT_STAMCRIT) - DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_SOFT_STAMCRIT) - if(total_health) - if(!(combat_flags & COMBAT_FLAG_HARD_STAMCRIT) && total_health >= STAMINA_CRIT && !stat) - to_chat(src, "You're too exhausted to keep going...") - set_resting(TRUE, FALSE, FALSE) - SEND_SIGNAL(src, COMSIG_DISABLE_COMBAT_MODE) - ENABLE_BITFIELD(combat_flags, COMBAT_FLAG_HARD_STAMCRIT) - filters += CIT_FILTER_STAMINACRIT - update_mobility() - if((combat_flags & COMBAT_FLAG_HARD_STAMCRIT) && total_health <= STAMINA_SOFTCRIT) - to_chat(src, "You don't feel nearly as exhausted anymore.") - DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_HARD_STAMCRIT | COMBAT_FLAG_SOFT_STAMCRIT) - filters -= CIT_FILTER_STAMINACRIT - update_mobility() - update_health_hud() diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm index a6d300631b..60c009bc29 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm @@ -129,6 +129,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING log_reagent("FERMICHEM: [SM] ckey: [SM.key]'s is not bound by [M] ckey [M.key]'s will, and is free to determine their own goals, while respecting and acting as their origin.") to_chat(SM, "You feel a strange sensation building in your mind as you realise there's two of you. Before you get a chance to think about it, you suddenly split from your old body, and find yourself face to face with your original, a perfect clone of your origin.") + SM.client?.change_view(CONFIG_GET(string/default_view)) to_chat(M, "You feel a strange sensation building in your mind as you realise there's two of you. Before you get a chance to think about it, a mass splits from you, and find yourself face to face with yourself.") M.visible_message("[M] suddenly shudders, and splits into two identical twins!") SM.copy_languages(M, LANGUAGE_MIND) diff --git a/modular_citadel/icons/ui/screen_gen.dmi b/modular_citadel/icons/ui/screen_gen.dmi index d006185a3c..510d312f1c 100644 Binary files a/modular_citadel/icons/ui/screen_gen.dmi and b/modular_citadel/icons/ui/screen_gen.dmi differ diff --git a/tgstation.dme b/tgstation.dme index a001f084b3..3ca900be09 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -22,6 +22,7 @@ #include "code\__DEFINES\_protect.dm" #include "code\__DEFINES\_tick.dm" #include "code\__DEFINES\access.dm" +#include "code\__DEFINES\actionspeed_modifiers.dm" #include "code\__DEFINES\admin.dm" #include "code\__DEFINES\antagonists.dm" #include "code\__DEFINES\atmospherics.dm" @@ -107,6 +108,7 @@ #include "code\__DEFINES\sight.dm" #include "code\__DEFINES\sound.dm" #include "code\__DEFINES\spaceman_dmm.dm" +#include "code\__DEFINES\species.dm" #include "code\__DEFINES\stat.dm" #include "code\__DEFINES\stat_tracking.dm" #include "code\__DEFINES\status_effects.dm" @@ -137,6 +139,7 @@ #include "code\__DEFINES\combat\attack_types.dm" #include "code\__DEFINES\combat\block.dm" #include "code\__DEFINES\combat\block_parry.dm" +#include "code\__DEFINES\combat\stamina_combat.dm" #include "code\__DEFINES\dcs\flags.dm" #include "code\__DEFINES\dcs\helpers.dm" #include "code\__DEFINES\dcs\signals.dm" @@ -291,6 +294,7 @@ #include "code\controllers\configuration\entries\plushies.dm" #include "code\controllers\configuration\entries\policy.dm" #include "code\controllers\configuration\entries\resources.dm" +#include "code\controllers\configuration\entries\stamina_combat.dm" #include "code\controllers\subsystem\acid.dm" #include "code\controllers\subsystem\adjacent_air.dm" #include "code\controllers\subsystem\air.dm" @@ -325,6 +329,7 @@ #include "code\controllers\subsystem\materials.dm" #include "code\controllers\subsystem\medals.dm" #include "code\controllers\subsystem\minimaps.dm" +#include "code\controllers\subsystem\minimum_spawns.dm" #include "code\controllers\subsystem\minor_mapping.dm" #include "code\controllers\subsystem\mobs.dm" #include "code\controllers\subsystem\nightshift.dm" @@ -338,6 +343,7 @@ #include "code\controllers\subsystem\radiation.dm" #include "code\controllers\subsystem\radio.dm" #include "code\controllers\subsystem\research.dm" +#include "code\controllers\subsystem\runechat.dm" #include "code\controllers\subsystem\server_maint.dm" #include "code\controllers\subsystem\shuttle.dm" #include "code\controllers\subsystem\sounds.dm" @@ -410,6 +416,7 @@ #include "code\datums\spawners_menu.dm" #include "code\datums\tgs_event_handler.dm" #include "code\datums\verbs.dm" +#include "code\datums\view.dm" #include "code\datums\weakrefs.dm" #include "code\datums\world_topic.dm" #include "code\datums\actions\beam_rifle.dm" @@ -1348,6 +1355,10 @@ #include "code\game\turfs\simulated\wall\reinf_walls.dm" #include "code\game\turfs\space\space.dm" #include "code\game\turfs\space\transit.dm" +#include "code\modules\actionspeed\_actionspeed_modifier.dm" +#include "code\modules\actionspeed\modifiers\base.dm" +#include "code\modules\actionspeed\modifiers\mood.dm" +#include "code\modules\actionspeed\modifiers\status_effects.dm" #include "code\modules\admin\admin.dm" #include "code\modules\admin\admin_investigate.dm" #include "code\modules\admin\admin_ranks.dm" @@ -2275,7 +2286,6 @@ #include "code\modules\jobs\job_types\station_engineer.dm" #include "code\modules\jobs\job_types\virologist.dm" #include "code\modules\jobs\job_types\warden.dm" -#include "code\modules\jobs\map_changes\map_changes.dm" #include "code\modules\keybindings\bindings_atom.dm" #include "code\modules\keybindings\bindings_client.dm" #include "code\modules\keybindings\focus.dm" @@ -2459,6 +2469,7 @@ #include "code\modules\mob\living\login.dm" #include "code\modules\mob\living\logout.dm" #include "code\modules\mob\living\say.dm" +#include "code\modules\mob\living\stamina_buffer.dm" #include "code\modules\mob\living\status_procs.dm" #include "code\modules\mob\living\taste.dm" #include "code\modules\mob\living\update_icons.dm" @@ -2541,10 +2552,11 @@ #include "code\modules\mob\living\carbon\human\status_procs.dm" #include "code\modules\mob\living\carbon\human\typing_indicator.dm" #include "code\modules\mob\living\carbon\human\update_icons.dm" -#include "code\modules\mob\living\carbon\human\species_types\abductors.dm" +#include "code\modules\mob\living\carbon\human\species_types\abductor.dm" #include "code\modules\mob\living\carbon\human\species_types\android.dm" #include "code\modules\mob\living\carbon\human\species_types\angel.dm" #include "code\modules\mob\living\carbon\human\species_types\arachnid.dm" +#include "code\modules\mob\living\carbon\human\species_types\anthromorph.dm" #include "code\modules\mob\living\carbon\human\species_types\bugmen.dm" #include "code\modules\mob\living\carbon\human\species_types\corporate.dm" #include "code\modules\mob\living\carbon\human\species_types\dullahan.dm" @@ -2552,7 +2564,6 @@ #include "code\modules\mob\living\carbon\human\species_types\ethereal.dm" #include "code\modules\mob\living\carbon\human\species_types\felinid.dm" #include "code\modules\mob\living\carbon\human\species_types\flypeople.dm" -#include "code\modules\mob\living\carbon\human\species_types\furrypeople.dm" #include "code\modules\mob\living\carbon\human\species_types\golems.dm" #include "code\modules\mob\living\carbon\human\species_types\humans.dm" #include "code\modules\mob\living\carbon\human\species_types\ipc.dm" @@ -2681,6 +2692,7 @@ #include "code\modules\mob\living\simple_animal\guardian\types\dextrous.dm" #include "code\modules\mob\living\simple_animal\guardian\types\explosive.dm" #include "code\modules\mob\living\simple_animal\guardian\types\fire.dm" +#include "code\modules\mob\living\simple_animal\guardian\types\gravitokinetic.dm" #include "code\modules\mob\living\simple_animal\guardian\types\lightning.dm" #include "code\modules\mob\living\simple_animal\guardian\types\protector.dm" #include "code\modules\mob\living\simple_animal\guardian\types\ranged.dm" @@ -2749,6 +2761,7 @@ #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\hivelord.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\ice_demon.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\ice_whelp.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\lobsterosity.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\mining_mobs.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\polarbear.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\wolf.dm" @@ -3293,6 +3306,7 @@ #include "code\modules\ruins\spaceruin_code\miracle.dm" #include "code\modules\ruins\spaceruin_code\oldstation.dm" #include "code\modules\ruins\spaceruin_code\originalcontent.dm" +#include "code\modules\ruins\spaceruin_code\skelter.dm" #include "code\modules\ruins\spaceruin_code\spacehotel.dm" #include "code\modules\ruins\spaceruin_code\TheDerelict.dm" #include "code\modules\ruins\spaceruin_code\whiteshipruin_box.dm" @@ -3596,7 +3610,6 @@ #include "modular_citadel\code\modules\mentor\mentorpm.dm" #include "modular_citadel\code\modules\mentor\mentorsay.dm" #include "modular_citadel\code\modules\mob\cit_emotes.dm" -#include "modular_citadel\code\modules\mob\living\damage_procs.dm" #include "modular_citadel\code\modules\mob\living\living.dm" #include "modular_citadel\code\modules\mob\living\carbon\carbon.dm" #include "modular_citadel\code\modules\mob\living\carbon\damage_procs.dm" diff --git a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss index d84adf597f..cab5491cee 100644 --- a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss @@ -892,6 +892,10 @@ em { font-style: italic; } +.spooky { + color: #FF9100; +} + .hypnophrase { color: #202020; font-weight: bold; diff --git a/tgui/packages/tgui-panel/styles/goon/chat-light.scss b/tgui/packages/tgui-panel/styles/goon/chat-light.scss index 2700ec01c1..5ba2930bcc 100644 --- a/tgui/packages/tgui-panel/styles/goon/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/goon/chat-light.scss @@ -938,6 +938,10 @@ h1.alert, h2.alert { font-style: italic; } +.spooky { + color: #FF9100; +} + .hypnophrase { color: #0d0d0d; font-weight: bold; diff --git a/tgui/packages/tgui/interfaces/CentcomPodLauncher.js b/tgui/packages/tgui/interfaces/CentcomPodLauncher.js index 05982b2fbf..a0d507e154 100644 --- a/tgui/packages/tgui/interfaces/CentcomPodLauncher.js +++ b/tgui/packages/tgui/interfaces/CentcomPodLauncher.js @@ -1,518 +1,1135 @@ +import { toFixed } from 'common/math'; +import { classes } from 'common/react'; +import { storage } from 'common/storage'; import { multiline } from 'common/string'; -import { Fragment } from 'inferno'; -import { useBackend } from '../backend'; -import { Button, LabeledList, NoticeBox, Section } from '../components'; +import { createUuid } from 'common/uuid'; +import { Component } from 'inferno'; +import { useBackend, useLocalState } from '../backend'; +import { Box, Button, ByondUi, Divider, Flex, Fragment, Input, Knob, LabeledControls, NumberInput, Section } from '../components'; import { Window } from '../layouts'; -export const CentcomPodLauncher = () => { +const pod_grey = { + color: 'grey', +}; + +const useCompact = context => { + const [compact, setCompact] = useLocalState(context, 'compact', false); + const toggleCompact = () => setCompact(!compact); + return [compact, toggleCompact]; +}; + +export const CentcomPodLauncher = (props, context) => { + const [compact] = useCompact(context); return ( - - - + resizable + key={'CPL_' + compact} + title={compact + ? "Use against Helen Weinstein" + : "Supply Pod Menu (Use against Helen Weinstein)"} + overflow="hidden" + width={compact ? 435 : 690} + height={compact ? 360 : 440}> + ); }; -// This is more or less a direct port from old tgui, with some slight -// text cleanup. But yes, it actually worked like this. -export const CentcomPodLauncherContent = (props, context) => { +const CentcomPodLauncherContent = (props, context) => { + const [compact] = useCompact(context); + return ( + + + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    + {!compact && ( + + + + )} + + + + + + + + + {!compact && ( + + + + )} + + + + + +
    +
    +
    +
    + ); +}; + +const TABPAGES = [ + { + title: 'View Pod', + component: () => TabPod, + }, + { + title: 'View Bay', + component: () => TabBay, + }, + { + title: 'View Dropoff Location', + component: () => TabDrop, + }, +]; + +const REVERSE_OPTIONS = [ + { + title: 'Mobs', + icon: 'user', + }, + { + title: 'Unanchored\nObjects', + key: 'Unanchored', + icon: 'cube', + }, + { + title: 'Anchored\nObjects', + key: 'Anchored', + icon: 'anchor', + }, + { + title: 'Under-Floor', + key: 'Underfloor', + icon: 'eye-slash', + }, + { + title: 'Wall-Mounted', + key: 'Wallmounted', + icon: 'link', + }, + { + title: 'Floors', + icon: 'border-all', + }, + { + title: 'Walls', + icon: 'square', + + }, +]; + + +const DELAYS = [ + { + title: 'Pre', + tooltip: 'Time until pod gets to station', + }, + { + title: 'Fall', + tooltip: 'Duration of pods\nfalling animation', + }, + { + title: 'Open', + tooltip: 'Time it takes pod to open after landing', + }, + { + title: 'Exit', + tooltip: 'Time for pod to\nleave after opening', + }, +]; + +const SOUNDS = [ + { + title: 'Fall', + act: 'fallingSound', + tooltip: 'Plays while pod falls, timed\nto end when pod lands', + }, + { + title: 'Land', + act: 'landingSound', + tooltip: 'Plays after pod lands', + }, + { + title: 'Open', + act: 'openingSound', + tooltip: 'Plays when pod opens', + }, + { + title: 'Exit', + act: 'leavingSound', + tooltip: 'Plays when pod leaves', + }, +]; + +const STYLES = [ + { + title: 'Standard', + }, + { + title: 'Advanced', + }, + { + title: 'Nanotrasen', + }, + { + title: 'Syndicate', + }, + { + title: 'Deathsquad', + }, + { + title: 'Cultist', + }, + { + title: 'Missile', + }, + { + title: 'Syndie Missile', + }, + { + title: 'Supply Box', + }, + { + title: 'Clown Pod', + }, + { + title: 'Fruit', + }, + { + title: 'Invisible', + }, + { + title: 'Gondola', + }, + { + title: 'Seethrough', + }, +]; + +const BAYS = [ + { + title: '1', + }, + { + title: '2', + }, + { + title: '3', + }, + { + title: '4', + }, + { + title: 'ERT', + }, +]; + +const EFFECTS_LOAD = [ + { + title: 'Launch All Turfs', + icon: 'globe', + choiceNumber: 0, + selected: 'launchChoice', + act: 'launchAll', + }, + { + title: 'Launch Turf Ordered', + icon: 'sort-amount-down-alt', + choiceNumber: 1, + selected: 'launchChoice', + act: 'launchOrdered', + }, + { + title: 'Pick Random Turf', + icon: 'dice', + choiceNumber: 2, + selected: 'launchChoice', + act: 'launchRandomTurf', + }, + { + divider: 1, + }, + { + title: 'Launch Whole Turf', + icon: 'expand', + choiceNumber: 0, + selected: 'launchRandomItem', + act: 'launchWholeTurf', + }, + { + title: 'Pick Random Item', + icon: 'dice', + choiceNumber: 1, + selected: 'launchRandomItem', + act: 'launchRandomItem', + }, + { + divider: 1, + }, + { + title: 'Clone', + icon: 'clone', + soloSelected: 'launchClone', + act: 'launchClone', + }, +]; + +const EFFECTS_NORMAL = [ + { + title: 'Specific Target', + icon: 'user-check', + soloSelected: 'effectTarget', + act: 'effectTarget', + }, + { + title: 'Pod Stays', + icon: 'hand-paper', + choiceNumber: 0, + selected: 'effectBluespace', + act: 'effectBluespace', + }, + { + title: 'Stealth', + icon: 'user-ninja', + soloSelected: 'effectStealth', + act: 'effectStealth', + }, + { + title: 'Quiet', + icon: 'volume-mute', + soloSelected: 'effectQuiet', + act: 'effectQuiet', + }, + { + title: 'Missile Mode', + icon: 'rocket', + soloSelected: 'effectMissile', + act: 'effectMissile', + }, + { + title: 'Burst Launch', + icon: 'certificate', + soloSelected: 'effectBurst', + act: 'effectBurst', + }, + { + title: 'Any Descent Angle', + icon: 'ruler-combined', + soloSelected: 'effectCircle', + act: 'effectCircle', + }, + { + title: 'No Ghost Alert\n(If you dont want to\nentertain bored ghosts)', + icon: 'ghost', + choiceNumber: 0, + selected: 'effectAnnounce', + act: 'effectAnnounce', + }, +]; + +const EFFECTS_HARM =[ + { + title: 'Explosion Custom', + icon: 'bomb', + choiceNumber: 1, + selected: 'explosionChoice', + act: 'explosionCustom', + }, + { + title: 'Adminbus Explosion\nWhat are they gonna do, ban you?', + icon: 'bomb', + choiceNumber: 2, + selected: 'explosionChoice', + act: 'explosionBus', + }, + { + divider: 1, + }, + { + title: 'Custom Damage', + icon: 'skull', + choiceNumber: 1, + selected: 'damageChoice', + act: 'damageCustom', + }, + { + title: 'Gib', + icon: 'skull-crossbones', + choiceNumber: 2, + selected: 'damageChoice', + act: 'damageGib', + }, + { + divider: 1, + }, + { + title: 'Projectile Cloud', + details: true, + icon: 'cloud-meatball', + soloSelected: 'effectShrapnel', + act: 'effectShrapnel', + }, + { + title: 'Stun', + icon: 'sun', + soloSelected: 'effectStun', + act: 'effectStun', + }, + { + title: 'Delimb', + icon: 'socks', + soloSelected: 'effectLimb', + act: 'effectLimb', + }, + { + title: 'Yeet Organs', + icon: 'book-dead', + soloSelected: 'effectOrgans', + act: 'effectOrgans', + }, +]; +const EFFECTS_ALL = [ + { + list: EFFECTS_LOAD, + label: "Load From", + alt_label: "Load", + tooltipPosition: "right", + }, + { + list: EFFECTS_NORMAL, + label: "Normal Effects", + tooltipPosition: "bottom", + }, + { + list: EFFECTS_HARM, + label: "Harmful Effects", + tooltipPosition: "bottom", + }, +]; + +const ViewTabHolder = (props, context) => { const { act, data } = useBackend(context); + const [ + tabPageIndex, + setTabPageIndex, + ] = useLocalState(context, 'tabPageIndex', 1); + const { mapRef } = data; + const TabPageComponent = TABPAGES[tabPageIndex].component(); + return ( +
    + {(!!data.customDropoff && data.effectReverse===1) && ( +
    + ); +}; + +const TabPod = (props, context) => { + return ( + + Note: You can right click on this +
    + blueprint pod and edit vars directly +
    + ); +}; + + +const TabBay = (props, context) => { + const { act, data, config } = useBackend(context); return ( - - To use this, simply spawn the atoms you want in one of the five - Centcom Supplypod Bays. Items in the bay will then be launched inside - your supplypod, one turf-full at a time! You can optionally use the - following buttons to configure how the supplypod acts. - -
    - - -
    -
    - - -
    + + ))} + + ); +}; + +const Bays = (props, context) => { + const { act, data } = useBackend(context); + const [compact] = useCompact(context); + return ( +
    +
    + ); +}; + +const Timing = (props, context) => { + const { act, data } = useBackend(context); + + return ( +
    act('resetTiming')} /> + )}> + + {DELAYS.map((delay, i) => ( + + toFixed(value, 2)} + maxValue={10} + color={(data["delay_"+(i+1)]/10) > 10 ? "orange" : "default"} + onDrag={(e, value) => { + act('editTiming', { + timer: i + 1, + value: Math.max(value, 0), + }); + }} /> + + ))} + +
    + ); +}; + +const Sounds = (props, context) => { + const { act, data } = useBackend(context); + return ( +
    act('soundVolume')} /> + )}> + {SOUNDS.map((sound, i) => ( +
    + ); +}; diff --git a/tgui/packages/tgui/public/tgui-common.chunk.js b/tgui/packages/tgui/public/tgui-common.chunk.js new file mode 100644 index 0000000000..0d9df28e1b --- /dev/null +++ b/tgui/packages/tgui/public/tgui-common.chunk.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[function(e,t,n){"use strict";t.__esModule=!0;var r=n(447);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&(t[e]=r[e])}))},function(e,t,n){"use strict";t.__esModule=!0,t.TimeDisplay=t.Tooltip=t.Tabs=t.TextArea=t.Table=t.Slider=t.Section=t.ProgressBar=t.NumberInput=t.NoticeBox=t.Modal=t.LabeledList=t.LabeledControls=t.Knob=t.Input=t.Icon=t.Grid=t.Flex=t.Dropdown=t.DraggableControl=t.Divider=t.Dimmer=t.ColorBox=t.Collapsible=t.Chart=t.ByondUi=t.Button=t.Box=t.BlockQuote=t.AnimatedNumber=void 0;var r=n(139);t.AnimatedNumber=r.AnimatedNumber;var o=n(464);t.BlockQuote=o.BlockQuote;var i=n(17);t.Box=i.Box;var a=n(401);t.Button=a.Button;var c=n(466);t.ByondUi=c.ByondUi;var u=n(468);t.Chart=u.Chart;var s=n(469);t.Collapsible=s.Collapsible;var l=n(470);t.ColorBox=l.ColorBox;var f=n(403);t.Dimmer=f.Dimmer;var d=n(404);t.Divider=d.Divider;var p=n(140);t.DraggableControl=p.DraggableControl;var h=n(471);t.Dropdown=h.Dropdown;var g=n(405);t.Flex=g.Flex;var v=n(472);t.Grid=v.Grid;var m=n(105);t.Icon=m.Icon;var y=n(407);t.Input=y.Input;var b=n(473);t.Knob=b.Knob;var x=n(474);t.LabeledControls=x.LabeledControls;var w=n(408);t.LabeledList=w.LabeledList;var _=n(475);t.Modal=_.Modal;var E=n(476);t.NoticeBox=E.NoticeBox;var k=n(141);t.NumberInput=k.NumberInput;var S=n(477);t.ProgressBar=S.ProgressBar;var C=n(478);t.Section=C.Section;var N=n(479);t.Slider=N.Slider;var A=n(406);t.Table=A.Table;var T=n(480);t.TextArea=T.TextArea;var O=n(481);t.Tabs=O.Tabs;var I=n(402);t.Tooltip=I.Tooltip;var M=n(482);t.TimeDisplay=M.TimeDisplay},function(e,t,n){"use strict";(function(e){t.__esModule=!0,t.useSharedState=t.useLocalState=t.useBackend=t.selectBackend=t.sendAct=t.sendMessage=t.backendMiddleware=t.backendReducer=t.backendSuspendSuccess=t.backendSuspendStart=t.backendSetSharedState=t.backendUpdate=void 0;var r=n(101),o=n(398),i=n(399),a=n(25),c=n(137);var u=(0,a.createLogger)("backend"),s=function(e){return{type:"backend/update",payload:e}};t.backendUpdate=s;var l=function(e,t){return{type:"backend/setSharedState",payload:{key:e,nextState:t}}};t.backendSetSharedState=l;t.backendSuspendStart=function(){return{type:"backend/suspendStart"}};var f=function(){return{type:"backend/suspendSuccess",payload:{timestamp:Date.now()}}};t.backendSuspendSuccess=f;var d={config:{},data:{},shared:{},suspended:Date.now(),suspending:!1};t.backendReducer=function(e,t){void 0===e&&(e=d);var n=t.type,r=t.payload;if("backend/update"===n){var o=Object.assign({},e.config,r.config),i=Object.assign({},e.data,r.static_data,r.data),a=Object.assign({},e.shared);if(r.shared)for(var c=0,u=Object.keys(r.shared);c=0||(o[n]=e[n]);return o}(t,["payload"]),o=Object.assign({tgui:1,window_id:window.__windowId__},r);null!==n&&n!==undefined&&(o.payload=JSON.stringify(n)),Byond.topic(o)};t.sendMessage=p;var h=function(e,t){void 0===t&&(t={}),"object"!=typeof t||null===t||Array.isArray(t)?u.error("Payload for act() must be an object, got this:",t):p({type:"act/"+e,payload:t})};t.sendAct=h;var g=function(e){return e.backend||{}};t.selectBackend=g;t.useBackend=function(e){var t=e.store,n=g(t.getState());return Object.assign({},n,{act:h})};t.useLocalState=function(e,t,n){var r,o=e.store,i=null!=(r=g(o.getState()).shared)?r:{},a=t in i?i[t]:n;return[a,function(e){o.dispatch(l(t,"function"==typeof e?e(a):e))}]};t.useSharedState=function(e,t,n){var r,o=e.store,i=null!=(r=g(o.getState()).shared)?r:{},a=t in i?i[t]:n;return[a,function(e){p({type:"setSharedState",key:t,value:JSON.stringify("function"==typeof e?e(a):e)||""})}]}}).call(this,n(103).setImmediate)},function(e,t,n){"use strict";t.__esModule=!0,t.Window=t.Pane=t.NtosWindow=t.Layout=void 0;var r=n(142);t.Layout=r.Layout;var o=n(483);t.NtosWindow=o.NtosWindow;var i=n(484);t.Pane=i.Pane;var a=n(409);t.Window=a.Window},function(e,t,n){"use strict";var r=n(7),o=n(23).f,i=n(31),a=n(26),c=n(110),u=n(153),s=n(70);e.exports=function(e,t){var n,l,f,d,p,h=e.target,g=e.global,v=e.stat;if(n=g?r:v?r[h]||c(h,{}):(r[h]||{}).prototype)for(l in t){if(d=t[l],f=e.noTargetGet?(p=o(n,l))&&p.value:n[l],!s(g?l:h+(v?".":"#")+l,e.forced)&&f!==undefined){if(typeof d==typeof f)continue;u(d,f)}(e.sham||f&&f.sham)&&i(d,"sham",!0),a(n,l,d,e)}}},function(e,t,n){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){"use strict";t.__esModule=!0,t.canRender=t.pureComponentHooks=t.shallowDiffers=t.normalizeChildren=t.classes=void 0;t.classes=function(e){for(var t="",n=0;nn?n:e};t.clamp01=function(e){return e<0?0:e>1?1:e};t.scale=function(e,t,n){return(e-t)/(n-t)};t.round=function(e,t){return!e||isNaN(e)?e:(t|=0,i=(e*=n=Math.pow(10,t))>0|-(e<0),o=Math.abs(e%1)>=.4999999999854481,r=Math.floor(e),o&&(e=r+(i>0)),(o?e:Math.round(e))/n);var n,r,o,i};t.toFixed=function(e,t){return void 0===t&&(t=0),Number(e).toFixed(Math.max(t,0))};var r=function(e,t){return t&&e>=t[0]&&e<=t[1]};t.inRange=r;t.keyOfMatchingRange=function(e,t){for(var n=0,o=Object.keys(t);n0?o(r(e),9007199254740991):0}},function(e,t,n){"use strict";var r,o=n(125),i=n(9),a=n(7),c=n(8),u=n(20),s=n(85),l=n(31),f=n(26),d=n(16).f,p=n(41),h=n(55),g=n(14),v=n(67),m=a.Int8Array,y=m&&m.prototype,b=a.Uint8ClampedArray,x=b&&b.prototype,w=m&&p(m),_=y&&p(y),E=Object.prototype,k=E.isPrototypeOf,S=g("toStringTag"),C=v("TYPED_ARRAY_TAG"),N=o&&!!h&&"Opera"!==s(a.opera),A=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},O=function(e){var t=s(e);return"DataView"===t||u(T,t)},I=function(e){return c(e)&&u(T,s(e))};for(r in T)a[r]||(N=!1);if((!N||"function"!=typeof w||w===Function.prototype)&&(w=function(){throw TypeError("Incorrect invocation")},N))for(r in T)a[r]&&h(a[r],w);if((!N||!_||_===E)&&(_=w.prototype,N))for(r in T)a[r]&&h(a[r].prototype,_);if(N&&p(x)!==_&&h(x,_),i&&!u(_,S))for(r in A=!0,d(_,S,{get:function(){return c(this)?this[C]:undefined}}),T)a[r]&&l(a[r],C,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:N,TYPED_ARRAY_TAG:A&&C,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(w,e))return e}else for(var t in T)if(u(T,r)){var n=a[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(i){if(n)for(var r in T){var o=a[r];o&&u(o.prototype,e)&&delete o.prototype[e]}_[e]&&!n||f(_,e,n?t:N&&y[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,o;if(i){if(h){if(n)for(r in T)(o=a[r])&&u(o,e)&&delete o[e];if(w[e]&&!n)return;try{return f(w,e,n?t:N&&m[e]||t)}catch(c){}}for(r in T)!(o=a[r])||o[e]&&!n||f(o,e,t)}},isView:O,isTypedArray:I,TypedArray:w,TypedArrayPrototype:_}},function(e,t,n){"use strict";var r=n(7),o=n(112),i=n(20),a=n(67),c=n(116),u=n(156),s=o("wks"),l=r.Symbol,f=u?l:l&&l.withoutSetter||a;e.exports=function(e){return i(s,e)||(c&&i(l,e)?s[e]=l[e]:s[e]=f("Symbol."+e)),s[e]}},function(e,t,n){"use strict";t.__esModule=!0,t.zipWith=t.zip=t.uniqBy=t.reduce=t.sortBy=t.map=t.filter=t.toKeyedArray=t.toArray=void 0;t.toArray=function(e){if(Array.isArray(e))return e;if("object"==typeof e){var t=Object.prototype.hasOwnProperty,n=[];for(var r in e)t.call(e,r)&&n.push(e[r]);return n}return[]};t.toKeyedArray=function(e,t){return void 0===t&&(t="key"),r((function(e,n){var r;return Object.assign(((r={})[t]=n,r),e)}))(e)};t.filter=function(e){return function(t){if(null===t&&t===undefined)return t;if(Array.isArray(t)){for(var n=[],r=0;rc)return 1}return 0};t.sortBy=function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&(t.style=u),t};t.computeBoxProps=v;var m=function(e){var t=e.textColor||e.color,n=e.backgroundColor;return(0,r.classes)([s(t)&&"color-"+t,s(n)&&"color-bg-"+n])};t.computeBoxClassName=m;var y=function(e){var t=e.as,n=void 0===t?"div":t,r=e.className,a=e.children,c=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["as","className","children"]);if("function"==typeof a)return a(v(e));var u="string"==typeof r?r+" "+m(c):m(c),s=v(c);return(0,o.createVNode)(i.VNodeFlags.HtmlElement,n,u,a,i.ChildFlags.UnknownChildren,s)};t.Box=y,y.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";var r=n(24);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";function r(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",apos:"'"};return e.replace(/
    /gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(/&(nbsp|amp|quot|lt|gt|apos);/g,(function(e,n){return t[n]})).replace(/&#?([0-9]+);/gi,(function(e,t){var n=parseInt(t,10);return String.fromCharCode(n)})).replace(/&#x?([0-9a-f]+);/gi,(function(e,t){var n=parseInt(t,16);return String.fromCharCode(n)}))};t.buildQueryString=function(e){return Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")}},function(e,t,n){"use strict";var r={}.hasOwnProperty;e.exports=function(e,t){return r.call(e,t)}},function(e,t,n){"use strict";var r=n(53),o=n(66),i=n(18),a=n(12),c=n(72),u=[].push,s=function(e){var t=1==e,n=2==e,s=3==e,l=4==e,f=6==e,d=5==e||f;return function(p,h,g,v){for(var m,y,b=i(p),x=o(b),w=r(h,g,3),_=a(x.length),E=0,k=v||c,S=t?k(p,_):n?k(p,0):undefined;_>E;E++)if((d||E in x)&&(y=w(m=x[E],E,b),e))if(t)S[E]=y;else if(y)switch(e){case 3:return!0;case 5:return m;case 6:return E;case 2:u.call(S,m)}else if(l)return!1;return f?-1:s||l?l:S}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6)}},function(e,t,n){"use strict";t.__esModule=!0,t.useSelector=t.useDispatch=t.createAction=t.combineReducers=t.applyMiddleware=t.createStore=void 0;n(0);var r=n(35);function o(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return i(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?o-1:0),a=1;a1?t-1:0),r=1;r2?n-2:0),o=2;o=i){var a=[t].concat(r).map((function(e){return"string"==typeof e?e:e instanceof Error?e.stack||String(e):JSON.stringify(e)})).filter((function(e){return e})).join(" ")+"\nUser Agent: "+navigator.userAgent;Byond.topic({tgui:1,window_id:window.__windowId__,type:"log",message:a})}},s=function(e){return{debug:function(){for(var t=arguments.length,n=new Array(t),o=0;o"+a+""}},function(e,t,n){"use strict";var r=n(5);e.exports=function(e){return r((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))}},function(e,t,n){"use strict";function r(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?o-1:0),c=1;c1?r-1:0),i=1;i0?o:r)(e)}},function(e,t,n){"use strict";t.__esModule=!0,t.getGasColor=t.getGasLabel=t.RADIO_CHANNELS=t.CSS_COLORS=t.COLORS=t.UI_CLOSE=t.UI_DISABLED=t.UI_UPDATE=t.UI_INTERACTIVE=void 0;t.UI_INTERACTIVE=2;t.UI_UPDATE=1;t.UI_DISABLED=0;t.UI_CLOSE=-1;t.COLORS={department:{captain:"#c06616",security:"#e74c3c",medbay:"#3498db",science:"#9b59b6",engineering:"#f1c40f",cargo:"#f39c12",centcom:"#00c100",other:"#c38312"},damageType:{oxy:"#3498db",toxin:"#2ecc71",burn:"#e67e22",brute:"#e74c3c"}};t.CSS_COLORS=["black","white","red","orange","yellow","olive","green","teal","blue","violet","purple","pink","brown","grey","good","average","bad","label"];t.RADIO_CHANNELS=[{name:"Syndicate",freq:1213,color:"#a52a2a"},{name:"Red Team",freq:1215,color:"#ff4444"},{name:"Blue Team",freq:1217,color:"#3434fd"},{name:"CentCom",freq:1337,color:"#2681a5"},{name:"Supply",freq:1347,color:"#b88646"},{name:"Service",freq:1349,color:"#6ca729"},{name:"Science",freq:1351,color:"#c68cfa"},{name:"Command",freq:1353,color:"#5177ff"},{name:"Medical",freq:1355,color:"#57b8f0"},{name:"Engineering",freq:1357,color:"#f37746"},{name:"Security",freq:1359,color:"#dd3535"},{name:"AI Private",freq:1447,color:"#d65d95"},{name:"Common",freq:1459,color:"#1ecc43"}];var r=[{id:"o2",name:"Oxygen",label:"O\u2082",color:"blue"},{id:"n2",name:"Nitrogen",label:"N\u2082",color:"red"},{id:"co2",name:"Carbon Dioxide",label:"CO\u2082",color:"grey"},{id:"plasma",name:"Plasma",label:"Plasma",color:"pink"},{id:"water_vapor",name:"Water Vapor",label:"H\u2082O",color:"grey"},{id:"nob",name:"Hyper-noblium",label:"Hyper-nob",color:"teal"},{id:"n2o",name:"Nitrous Oxide",label:"N\u2082O",color:"red"},{id:"no2",name:"Nitryl",label:"NO\u2082",color:"brown"},{id:"tritium",name:"Tritium",label:"Tritium",color:"green"},{id:"bz",name:"BZ",label:"BZ",color:"purple"},{id:"stim",name:"Stimulum",label:"Stimulum",color:"purple"},{id:"pluox",name:"Pluoxium",label:"Pluoxium",color:"blue"},{id:"miasma",name:"Miasma",label:"Miasma",color:"olive"},{id:"hydrogen",name:"Hydrogen",label:"H\u2082",color:"white"}];t.getGasLabel=function(e,t){var n=String(e).toLowerCase(),o=r.find((function(e){return e.id===n||e.name.toLowerCase()===n}));return o&&o.label||t||e};t.getGasColor=function(e){var t=String(e).toLowerCase(),n=r.find((function(e){return e.id===t||e.name.toLowerCase()===t}));return n&&n.color}},function(e,t,n){"use strict";var r=n(8);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){"use strict";var r=n(154),o=n(7),i=function(e){return"function"==typeof e?e:undefined};e.exports=function(e,t){return arguments.length<2?i(r[e])||i(o[e]):r[e]&&r[e][t]||o[e]&&o[e][t]}},function(e,t,n){"use strict";var r=n(20),o=n(18),i=n(83),a=n(124),c=i("IE_PROTO"),u=Object.prototype;e.exports=a?Object.getPrototypeOf:function(e){return e=o(e),r(e,c)?e[c]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?u:null}},function(e,t,n){"use strict";t.__esModule=!0,t.formatDb=t.formatMoney=t.formatPower=t.formatSiUnit=void 0;var r=n(11),o=["f","p","n","\u03bc","m"," ","k","M","G","T","P","E","Z","Y"],i=o.indexOf(" "),a=function(e,t,n){if(void 0===t&&(t=-i),void 0===n&&(n=""),"number"!=typeof e||!Number.isFinite(e))return e;var a=Math.floor(Math.log10(e)),c=Math.floor(Math.max(3*t,a)),u=Math.floor(a/3),s=Math.floor(c/3),l=(0,r.clamp)(i+s,0,o.length),f=o[l],d=e/Math.pow(1e3,s),p=u>t?2+3*s-c:0;return((0,r.toFixed)(d,p)+" "+f+n).trim()};t.formatSiUnit=a;t.formatPower=function(e,t){return void 0===t&&(t=0),a(e,t,"W")};t.formatMoney=function(e,t){if(void 0===t&&(t=0),!Number.isFinite(e))return e;var n=(0,r.round)(e,t);t>0&&(n=(0,r.toFixed)(e,t));var o=(n=String(n)).length,i=n.indexOf(".");-1===i&&(i=o);for(var a="",c=0;c0&&c=0?"+":t<0?"\u2013":"",o=Math.abs(t);return n+(o=o===Infinity?"Inf":(0,r.toFixed)(o,2))+" dB"}},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var r=n(5);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){throw 1},1)}))}},function(e,t,n){"use strict";var r=n(10),o=n(28),i=n(14)("species");e.exports=function(e,t){var n,a=r(e).constructor;return a===undefined||(n=r(a)[i])==undefined?t:o(n)}},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(9),a=n(135),c=n(13),u=n(88),s=n(60),l=n(51),f=n(31),d=n(12),p=n(210),h=n(348),g=n(39),v=n(20),m=n(85),y=n(8),b=n(48),x=n(55),w=n(52).f,_=n(349),E=n(21).forEach,k=n(59),S=n(16),C=n(23),N=n(32),A=n(90),T=N.get,O=N.set,I=S.f,M=C.f,L=Math.round,V=o.RangeError,R=u.ArrayBuffer,P=u.DataView,B=c.NATIVE_ARRAY_BUFFER_VIEWS,D=c.TYPED_ARRAY_TAG,j=c.TypedArray,F=c.TypedArrayPrototype,K=c.aTypedArrayConstructor,z=c.isTypedArray,Y=function(e,t){for(var n=0,r=t.length,o=new(K(e))(r);r>n;)o[n]=t[n++];return o},U=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},$=function(e){var t;return e instanceof R||"ArrayBuffer"==(t=m(e))||"SharedArrayBuffer"==t},H=function(e,t){return z(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},W=function(e,t){return H(e,t=g(t,!0))?l(2,e[t]):M(e,t)},q=function(e,t,n){return!(H(e,t=g(t,!0))&&y(n)&&v(n,"value"))||v(n,"get")||v(n,"set")||n.configurable||v(n,"writable")&&!n.writable||v(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};i?(B||(C.f=W,S.f=q,U(F,"buffer"),U(F,"byteOffset"),U(F,"byteLength"),U(F,"length")),r({target:"Object",stat:!0,forced:!B},{getOwnPropertyDescriptor:W,defineProperty:q}),e.exports=function(e,t,n){var i=e.match(/\d+$/)[0]/8,c=e+(n?"Clamped":"")+"Array",u="get"+e,l="set"+e,g=o[c],v=g,m=v&&v.prototype,S={},C=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[u](t*i+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var o=T(e);n&&(r=(r=L(r))<0?0:r>255?255:255&r),o.view[l](t*i+o.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};B?a&&(v=t((function(e,t,n,r){return s(e,v,c),A(y(t)?$(t)?r!==undefined?new g(t,h(n,i),r):n!==undefined?new g(t,h(n,i)):new g(t):z(t)?Y(v,t):_.call(v,t):new g(p(t)),e,v)})),x&&x(v,j),E(w(g),(function(e){e in v||f(v,e,g[e])})),v.prototype=m):(v=t((function(e,t,n,r){s(e,v,c);var o,a,u,l=0,f=0;if(y(t)){if(!$(t))return z(t)?Y(v,t):_.call(v,t);o=t,f=h(n,i);var g=t.byteLength;if(r===undefined){if(g%i)throw V("Wrong length");if((a=g-f)<0)throw V("Wrong length")}else if((a=d(r)*i)+f>g)throw V("Wrong length");u=a/i}else u=p(t),o=new R(a=u*i);for(O(e,{buffer:o,byteOffset:f,byteLength:a,length:u,view:new P(o)});l"+e+"<\/script>"},h=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(o){}var e,t;h=r?function(e){e.write(p("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):((t=s("iframe")).style.display="none",u.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(p("document.F=Object")),e.close(),e.F);for(var n=a.length;n--;)delete h.prototype[a[n]];return h()};c[f]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(d.prototype=o(e),n=new d,d.prototype=null,n[f]=e):n=h(),t===undefined?n:i(n,t)}},function(e,t,n){"use strict";var r=n(16).f,o=n(20),i=n(14)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){"use strict";var r=n(14),o=n(48),i=n(16),a=r("unscopables"),c=Array.prototype;c[a]==undefined&&i.f(c,a,{configurable:!0,value:o(null)}),e.exports=function(e){c[a][e]=!0}},function(e,t,n){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var r=n(155),o=n(114).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(28);e.exports=function(e,t,n){if(r(e),t===undefined)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){"use strict";var r=n(39),o=n(16),i=n(51);e.exports=function(e,t,n){var a=r(t);a in e?o.f(e,a,i(0,n)):e[a]=n}},function(e,t,n){"use strict";var r=n(10),o=n(194);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),t?e.call(n,i):n.__proto__=i,n}}():undefined)},function(e,t,n){"use strict";var r=n(68),o=n(8),i=n(20),a=n(16).f,c=n(67),u=n(76),s=c("meta"),l=0,f=Object.isExtensible||function(){return!0},d=function(e){a(e,s,{value:{objectID:"O"+ ++l,weakData:{}}})},p=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,s)){if(!f(e))return"F";if(!t)return"E";d(e)}return e[s].objectID},getWeakData:function(e,t){if(!i(e,s)){if(!f(e))return!0;if(!t)return!1;d(e)}return e[s].weakData},onFreeze:function(e){return u&&p.REQUIRED&&f(e)&&!i(e,s)&&d(e),e}};r[s]=!0},function(e,t,n){"use strict";t.__esModule=!0,t.removeScrollableNode=t.addScrollableNode=t.canStealFocus=t.setupGlobalEvents=t.globalEvents=void 0;var r=n(395),o=n(78),i=(n(25),new r.EventEmitter);t.globalEvents=i;var a,c=!1;t.setupGlobalEvents=function(e){void 0===e&&(e={}),c=!!e.ignoreWindowFocus};var u=!0,s=function y(e,t){c?u=!0:(a&&(clearTimeout(a),a=null),t?a=setTimeout((function(){return y(e)})):u!==e&&(u=e,i.emit(e?"window-focus":"window-blur"),i.emit("window-focus-change",e)))},l=null,f=function(e){var t=String(e.tagName).toLowerCase();return"input"===t||"textarea"===t};t.canStealFocus=f;var d=function b(){l&&(l.removeEventListener("blur",b),l=null)},p=null,h=null,g=[];t.addScrollableNode=function(e){g.push(e)};t.removeScrollableNode=function(e){var t=g.indexOf(e);t>=0&&g.splice(t,1)};window.addEventListener("mousemove",(function(e){var t=e.target;t!==h&&(h=t,function(e){if(!l&&u)for(var t=document.body;e&&e!==t;){if(g.includes(e)){if(e.contains(p))return;return p=e,void e.focus()}e=e.parentNode}}(t))})),window.addEventListener("focusin",(function(e){if(h=null,p=e.target,s(!0),f(e.target))return t=e.target,d(),void(l=t).addEventListener("blur",d);var t})),window.addEventListener("focusout",(function(e){h=null,s(!1,!0)})),window.addEventListener("blur",(function(e){h=null,s(!1,!0)})),window.addEventListener("beforeunload",(function(e){s(!1)}));var v={},m=function(){function e(e,t,n){this.event=e,this.type=t,this.code=window.event?e.which:e.keyCode,this.ctrl=e.ctrlKey,this.shift=e.shiftKey,this.alt=e.altKey,this.repeat=!!n}var t=e.prototype;return t.hasModifierKeys=function(){return this.ctrl||this.alt||this.shift},t.isModifierKey=function(){return this.code===o.KEY_CTRL||this.code===o.KEY_SHIFT||this.code===o.KEY_ALT},t.isDown=function(){return"keydown"===this.type},t.isUp=function(){return"keyup"===this.type},t.toString=function(){return this._str||(this._str="",this.ctrl&&(this._str+="Ctrl+"),this.alt&&(this._str+="Alt+"),this.shift&&(this._str+="Shift+"),this.code>=48&&this.code<=90?this._str+=String.fromCharCode(this.code):this.code>=o.KEY_F1&&this.code<=o.KEY_F12?this._str+="F"+(this.code-111):this._str+="["+this.code+"]"),this._str},e}();document.addEventListener("keydown",(function(e){if(!f(e.target)){var t=e.keyCode,n=new m(e,"keydown",v[t]);i.emit("keydown",n),i.emit("key",n),v[t]=!0}})),document.addEventListener("keyup",(function(e){if(!f(e.target)){var t=e.keyCode,n=new m(e,"keyup");i.emit("keyup",n),i.emit("key",n),v[t]=!1}}))},function(e,t,n){"use strict";var r=n(36);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){"use strict";var r=n(40),o=n(16),i=n(14),a=n(9),c=i("species");e.exports=function(e){var t=r(e),n=o.f;a&&t&&!t[c]&&n(t,c,{configurable:!0,get:function(){return this}})}},function(e,t,n){"use strict";e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},function(e,t,n){"use strict";var r=n(10),o=n(119),i=n(12),a=n(53),c=n(120),u=n(188),s=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,t,n,l,f){var d,p,h,g,v,m,y,b=a(t,n,l?2:1);if(f)d=e;else{if("function"!=typeof(p=c(e)))throw TypeError("Target is not iterable");if(o(p)){for(h=0,g=i(e.length);g>h;h++)if((v=l?b(r(y=e[h])[0],y[1]):b(e[h]))&&v instanceof s)return v;return new s(!1)}d=p.call(e)}for(m=d.next;!(y=m.call(d)).done;)if("object"==typeof(v=u(d,b,y.value,l))&&v&&v instanceof s)return v;return new s(!1)}).stop=function(e){return new s(!0,e)}},function(e,t,n){"use strict";var r=n(24),o="["+n(92)+"]",i=RegExp("^"+o+o+"*"),a=RegExp(o+o+"*$"),c=function(e){return function(t){var n=String(r(t));return 1&e&&(n=n.replace(i,"")),2&e&&(n=n.replace(a,"")),n}};e.exports={start:c(1),end:c(2),trim:c(3)}},function(e,t,n){"use strict";t.__esModule=!0,t.assetMiddleware=t.resolveAsset=t.loadStyleSheet=void 0;var r=n(459),o=(0,n(25).createLogger)("assets"),i=[/v4shim/i],a={},c={},u=function l(e,t){if(void 0===t&&(t=1),!a[e]){a[e]=!0,o.log("loading stylesheet '"+e+"'");var n=(0,r.loadCSS)(e);n.addEventListener("load",(function(){if(!s(e))return n.parentNode.removeChild(n),n=null,a[e]=null,t>=5?void o.error("Error: Failed to load the stylesheet '"+e+"' after 5 attempts.\nIt was either not found, or you're trying to load an empty stylesheet that has no CSS rules in it."):void setTimeout((function(){return l(e,t+1)}),3e3)}))}};t.loadStyleSheet=u;var s=function(e){for(var t=document.styleSheets,n=t.length,r=0;rl;)if((c=u[l++])!=c)return!0}else for(;s>l;l++)if((e||l in u)&&u[l]===n)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},function(e,t,n){"use strict";var r=n(5),o=/#|\.prototype\./,i=function(e,t){var n=c[a(e)];return n==s||n!=u&&("function"==typeof t?r(t):!!t)},a=i.normalize=function(e){return String(e).replace(o,".").toLowerCase()},c=i.data={},u=i.NATIVE="N",s=i.POLYFILL="P";e.exports=i},function(e,t,n){"use strict";var r=n(155),o=n(114);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(8),o=n(58),i=n(14)("species");e.exports=function(e,t){var n;return o(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=undefined):n=undefined),new(n===undefined?Array:n)(0===t?0:t)}},function(e,t,n){"use strict";var r=n(5),o=n(14),i=n(117),a=o("species");e.exports=function(e){return i>=51||!r((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var r=n(26);e.exports=function(e,t,n){for(var o in t)r(e,o,t[o],n);return e}},function(e,t,n){"use strict";var r=n(5);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(e,t,n){"use strict";var r=n(10);e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,n){"use strict";t.__esModule=!0,t.KEY_QUOTE=t.KEY_RIGHT_BRACKET=t.KEY_BACKSLASH=t.KEY_LEFT_BRACKET=t.KEY_SLASH=t.KEY_PERIOD=t.KEY_MINUS=t.KEY_COMMA=t.KEY_EQUAL=t.KEY_SEMICOLON=t.KEY_F12=t.KEY_F11=t.KEY_F10=t.KEY_F9=t.KEY_F8=t.KEY_F7=t.KEY_F6=t.KEY_F5=t.KEY_F4=t.KEY_F3=t.KEY_F2=t.KEY_F1=t.KEY_Z=t.KEY_Y=t.KEY_X=t.KEY_W=t.KEY_V=t.KEY_U=t.KEY_T=t.KEY_S=t.KEY_R=t.KEY_Q=t.KEY_P=t.KEY_O=t.KEY_N=t.KEY_M=t.KEY_L=t.KEY_K=t.KEY_J=t.KEY_I=t.KEY_H=t.KEY_G=t.KEY_F=t.KEY_E=t.KEY_D=t.KEY_C=t.KEY_B=t.KEY_A=t.KEY_9=t.KEY_8=t.KEY_7=t.KEY_6=t.KEY_5=t.KEY_4=t.KEY_3=t.KEY_2=t.KEY_1=t.KEY_0=t.KEY_DELETE=t.KEY_INSERT=t.KEY_DOWN=t.KEY_RIGHT=t.KEY_UP=t.KEY_LEFT=t.KEY_HOME=t.KEY_END=t.KEY_PAGEDOWN=t.KEY_PAGEUP=t.KEY_SPACE=t.KEY_ESCAPE=t.KEY_CAPSLOCK=t.KEY_PAUSE=t.KEY_ALT=t.KEY_CTRL=t.KEY_SHIFT=t.KEY_ENTER=t.KEY_TAB=t.KEY_BACKSPACE=void 0;t.KEY_BACKSPACE=8;t.KEY_TAB=9;t.KEY_ENTER=13;t.KEY_SHIFT=16;t.KEY_CTRL=17;t.KEY_ALT=18;t.KEY_PAUSE=19;t.KEY_CAPSLOCK=20;t.KEY_ESCAPE=27;t.KEY_SPACE=32;t.KEY_PAGEUP=33;t.KEY_PAGEDOWN=34;t.KEY_END=35;t.KEY_HOME=36;t.KEY_LEFT=37;t.KEY_UP=38;t.KEY_RIGHT=39;t.KEY_DOWN=40;t.KEY_INSERT=45;t.KEY_DELETE=46;t.KEY_0=48;t.KEY_1=49;t.KEY_2=50;t.KEY_3=51;t.KEY_4=52;t.KEY_5=53;t.KEY_6=54;t.KEY_7=55;t.KEY_8=56;t.KEY_9=57;t.KEY_A=65;t.KEY_B=66;t.KEY_C=67;t.KEY_D=68;t.KEY_E=69;t.KEY_F=70;t.KEY_G=71;t.KEY_H=72;t.KEY_I=73;t.KEY_J=74;t.KEY_K=75;t.KEY_L=76;t.KEY_M=77;t.KEY_N=78;t.KEY_O=79;t.KEY_P=80;t.KEY_Q=81;t.KEY_R=82;t.KEY_S=83;t.KEY_T=84;t.KEY_U=85;t.KEY_V=86;t.KEY_W=87;t.KEY_X=88;t.KEY_Y=89;t.KEY_Z=90;t.KEY_F1=112;t.KEY_F2=113;t.KEY_F3=114;t.KEY_F4=115;t.KEY_F5=116;t.KEY_F6=117;t.KEY_F7=118;t.KEY_F8=119;t.KEY_F9=120;t.KEY_F10=121;t.KEY_F11=122;t.KEY_F12=123;t.KEY_SEMICOLON=186;t.KEY_EQUAL=187;t.KEY_COMMA=188;t.KEY_MINUS=189;t.KEY_PERIOD=190;t.KEY_SLASH=191;t.KEY_LEFT_BRACKET=219;t.KEY_BACKSLASH=220;t.KEY_RIGHT_BRACKET=221;t.KEY_QUOTE=222},function(e,t,n){"use strict";function r(e,t,n,r,o,i,a){try{var c=e[i](a),u=c.value}catch(s){return void n(s)}c.done?t(u):Promise.resolve(u).then(r,o)}function o(e){return function(){var t=this,n=arguments;return new Promise((function(o,i){var a=e.apply(t,n);function c(e){r(a,o,i,c,u,"next",e)}function u(e){r(a,o,i,c,u,"throw",e)}c(undefined)}))}}t.__esModule=!0,t.storage=t.IMPL_INDEXED_DB=t.IMPL_LOCAL_STORAGE=t.IMPL_MEMORY=void 0;t.IMPL_MEMORY=0;t.IMPL_LOCAL_STORAGE=1;t.IMPL_INDEXED_DB=2;var i=function(e){return function(){try{return Boolean(e())}catch(t){return!1}}},a=i((function(){return window.localStorage&&window.localStorage.getItem})),c=i((function(){return(window.indexedDB||window.msIndexedDB)&&(window.IDBTransaction||window.msIDBTransaction)})),u=function(){function e(){this.impl=0,this.store={}}var t=e.prototype;return t.get=function(e){return this.store[e]},t.set=function(e,t){this.store[e]=t},t.remove=function(e){this.store[e]=undefined},t.clear=function(){this.store={}},e}(),s=function(){function e(){this.impl=1,this.store={}}var t=e.prototype;return t.get=function(e){var t=localStorage.getItem(e);if("string"==typeof t)return JSON.parse(t)},t.set=function(e,t){localStorage.setItem(e,JSON.stringify(t))},t.remove=function(e){localStorage.removeItem(e)},t.clear=function(){localStorage.clear()},e}(),l=function(){function e(){this.impl=2,this.dbPromise=new Promise((function(e,t){var n=(window.indexedDB||window.msIndexedDB).open("tgui",1);n.onupgradeneeded=function(){try{n.result.createObjectStore("storage-v1")}catch(e){t(new Error("Failed to upgrade IDB: "+n.error))}},n.onsuccess=function(){return e(n.result)},n.onerror=function(){t(new Error("Failed to open IDB: "+n.error))}}))}var t=e.prototype;return t.getStore=function(e){return this.dbPromise.then((function(t){return t.transaction("storage-v1",e).objectStore("storage-v1")}))},t.get=function(){var e=o(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getStore("readonly");case 2:return n=t.sent,t.abrupt("return",new Promise((function(t,r){var o=n.get(e);o.onsuccess=function(){return t(o.result)},o.onerror=function(){return r(o.error)}})));case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.set=function(){var e=o(regeneratorRuntime.mark((function t(e,n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return null===n&&(n=undefined),t.next=3,this.getStore("readwrite");case 3:t.sent.put(n,e);case 5:case"end":return t.stop()}}),t,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.remove=function(){var e=o(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getStore("readwrite");case 2:t.sent["delete"](e);case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.clear=function(){var e=o(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getStore("readwrite");case 2:e.sent.clear();case 4:case"end":return e.stop()}}),t,this)})));return function(){return e.apply(this,arguments)}}(),e}(),f=new(function(){function e(){this.backendPromise=o(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!c()){e.next=10;break}return e.prev=1,t=new l,e.next=5,t.dbPromise;case 5:return e.abrupt("return",t);case 8:e.prev=8,e.t0=e["catch"](1);case 10:if(!a()){e.next=12;break}return e.abrupt("return",new s);case 12:return e.abrupt("return",new u);case 13:case"end":return e.stop()}}),e,null,[[1,8]])})))()}var t=e.prototype;return t.get=function(){var e=o(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return n=t.sent,t.abrupt("return",n.get(e));case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.set=function(){var e=o(regeneratorRuntime.mark((function t(e,n){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return r=t.sent,t.abrupt("return",r.set(e,n));case 4:case"end":return t.stop()}}),t,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.remove=function(){var e=o(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return n=t.sent,t.abrupt("return",n.remove(e));case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.clear=function(){var e=o(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return e=t.sent,t.abrupt("return",e.clear());case 4:case"end":return t.stop()}}),t,this)})));return function(){return e.apply(this,arguments)}}(),e}());t.storage=f},,function(e,t,n){"use strict";var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(o){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);t.f=i?function(e){var t=o(this,e);return!!t&&t.enumerable}:r},function(e,t,n){"use strict";var r=n(112),o=n(67),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e,t,n){"use strict";var r=n(40);e.exports=r("navigator","userAgent")||""},function(e,t,n){"use strict";var r=n(121),o=n(36),i=n(14)("toStringTag"),a="Arguments"==o(function(){return arguments}());e.exports=r?o:function(e){var t,n,r;return e===undefined?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(n){}}(t=Object(e),i))?n:a?o(t):"Object"==(r=o(t))&&"function"==typeof t.callee?"Arguments":r}},function(e,t,n){"use strict";var r=n(14)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},"return":function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(c){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var i={};i[r]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(c){}return n}},function(e,t,n){"use strict";var r=n(28),o=n(18),i=n(66),a=n(12),c=function(e){return function(t,n,c,u){r(n);var s=o(t),l=i(s),f=a(s.length),d=e?f-1:0,p=e?-1:1;if(c<2)for(;;){if(d in l){u=l[d],d+=p;break}if(d+=p,e?d<0:f<=d)throw TypeError("Reduce of empty array with no initial value")}for(;e?d>=0:f>d;d+=p)d in l&&(u=n(u,l[d],d,s));return u}};e.exports={left:c(!1),right:c(!0)}},function(e,t,n){"use strict";var r=n(7),o=n(9),i=n(125),a=n(31),c=n(75),u=n(5),s=n(60),l=n(37),f=n(12),d=n(210),p=n(436),h=n(41),g=n(55),v=n(52).f,m=n(16).f,y=n(118),b=n(49),x=n(32),w=x.get,_=x.set,E=r.ArrayBuffer,k=E,S=r.DataView,C=S&&S.prototype,N=Object.prototype,A=r.RangeError,T=p.pack,O=p.unpack,I=function(e){return[255&e]},M=function(e){return[255&e,e>>8&255]},L=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},V=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},R=function(e){return T(e,23,4)},P=function(e){return T(e,52,8)},B=function(e,t){m(e.prototype,t,{get:function(){return w(this)[t]}})},D=function(e,t,n,r){var o=d(n),i=w(e);if(o+t>i.byteLength)throw A("Wrong index");var a=w(i.buffer).bytes,c=o+i.byteOffset,u=a.slice(c,c+t);return r?u:u.reverse()},j=function(e,t,n,r,o,i){var a=d(n),c=w(e);if(a+t>c.byteLength)throw A("Wrong index");for(var u=w(c.buffer).bytes,s=a+c.byteOffset,l=r(+o),f=0;fY;)(F=z[Y++])in k||a(k,F,E[F]);K.constructor=k}g&&h(C)!==N&&g(C,N);var U=new S(new k(2)),$=C.setInt8;U.setInt8(0,2147483648),U.setInt8(1,2147483649),!U.getInt8(0)&&U.getInt8(1)||c(C,{setInt8:function(e,t){$.call(this,e,t<<24>>24)},setUint8:function(e,t){$.call(this,e,t<<24>>24)}},{unsafe:!0})}else k=function(e){s(this,k,"ArrayBuffer");var t=d(e);_(this,{bytes:y.call(new Array(t),0),byteLength:t}),o||(this.byteLength=t)},S=function(e,t,n){s(this,S,"DataView"),s(e,k,"DataView");var r=w(e).byteLength,i=l(t);if(i<0||i>r)throw A("Wrong offset");if(i+(n=n===undefined?r-i:f(n))>r)throw A("Wrong length");_(this,{buffer:e,byteLength:n,byteOffset:i}),o||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},o&&(B(k,"byteLength"),B(S,"buffer"),B(S,"byteLength"),B(S,"byteOffset")),c(S.prototype,{getInt8:function(e){return D(this,1,e)[0]<<24>>24},getUint8:function(e){return D(this,1,e)[0]},getInt16:function(e){var t=D(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=D(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return V(D(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return V(D(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return O(D(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return O(D(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){j(this,1,e,I,t)},setUint8:function(e,t){j(this,1,e,I,t)},setInt16:function(e,t){j(this,2,e,M,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){j(this,2,e,M,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){j(this,4,e,L,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){j(this,4,e,L,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){j(this,4,e,R,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){j(this,8,e,P,t,arguments.length>2?arguments[2]:undefined)}});b(k,"ArrayBuffer"),b(S,"DataView"),e.exports={ArrayBuffer:k,DataView:S}},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(70),a=n(26),c=n(56),u=n(61),s=n(60),l=n(8),f=n(5),d=n(86),p=n(49),h=n(90);e.exports=function(e,t,n){var g=-1!==e.indexOf("Map"),v=-1!==e.indexOf("Weak"),m=g?"set":"add",y=o[e],b=y&&y.prototype,x=y,w={},_=function(e){var t=b[e];a(b,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(v&&!l(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return v&&!l(e)?undefined:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(v&&!l(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(i(e,"function"!=typeof y||!(v||b.forEach&&!f((function(){(new y).entries().next()})))))x=n.getConstructor(t,e,g,m),c.REQUIRED=!0;else if(i(e,!0)){var E=new x,k=E[m](v?{}:-0,1)!=E,S=f((function(){E.has(1)})),C=d((function(e){new y(e)})),N=!v&&f((function(){for(var e=new y,t=5;t--;)e[m](t,t);return!e.has(-0)}));C||((x=t((function(t,n){s(t,x,e);var r=h(new y,t,x);return n!=undefined&&u(n,r[m],r,g),r}))).prototype=b,b.constructor=x),(S||N)&&(_("delete"),_("has"),g&&_("get")),(N||k)&&_(m),v&&b.clear&&delete b.clear}return w[e]=x,r({global:!0,forced:x!=y},w),p(x,e),v||n.setStrong(x,e,g),x}},function(e,t,n){"use strict";var r=n(8),o=n(55);e.exports=function(e,t,n){var i,a;return o&&"function"==typeof(i=t.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(e,a),e}},function(e,t,n){"use strict";var r=Math.expm1,o=Math.exp;e.exports=!r||r(10)>22025.465794806718||r(10)<22025.465794806718||-2e-17!=r(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:o(e)-1}:r},function(e,t,n){"use strict";e.exports="\t\n\x0B\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},function(e,t,n){"use strict";var r=n(43),o=n(7),i=n(5);e.exports=r||!i((function(){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete o[e]}))},function(e,t,n){"use strict";var r=n(8),o=n(36),i=n(14)("match");e.exports=function(e){var t;return r(e)&&((t=e[i])!==undefined?!!t:"RegExp"==o(e))}},function(e,t,n){"use strict";var r=n(5);function o(e,t){return RegExp(e,t)}t.UNSUPPORTED_Y=r((function(){var e=o("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),t.BROKEN_CARET=r((function(){var e=o("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},function(e,t,n){"use strict";var r=n(4),o=n(97);r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(e,t,n){"use strict";var r,o,i=n(77),a=n(95),c=RegExp.prototype.exec,u=String.prototype.replace,s=c,l=(r=/a/,o=/b*/g,c.call(r,"a"),c.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),f=a.UNSUPPORTED_Y||a.BROKEN_CARET,d=/()??/.exec("")[1]!==undefined;(l||d||f)&&(s=function(e){var t,n,r,o,a=this,s=f&&a.sticky,p=i.call(a),h=a.source,g=0,v=e;return s&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),v=String(e).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==e[a.lastIndex-1])&&(h="(?: "+h+")",v=" "+v,g++),n=new RegExp("^(?:"+h+")",p)),d&&(n=new RegExp("^"+h+"$(?!\\s)",p)),l&&(t=a.lastIndex),r=c.call(s?n:a,v),s?r?(r.input=r.input.slice(g),r[0]=r[0].slice(g),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:l&&r&&(a.lastIndex=a.global?r.index+r[0].length:t),d&&r&&r.length>1&&u.call(r[0],n,(function(){for(o=1;o")})),l="$0"==="a".replace(/./,"$0"),f=i("replace"),d=!!/./[f]&&""===/./[f]("a","$0"),p=!o((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,f){var h=i(e),g=!o((function(){var t={};return t[h]=function(){return 7},7!=""[e](t)})),v=g&&!o((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[u]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t}));if(!g||!v||"replace"===e&&(!s||!l||d)||"split"===e&&!p){var m=/./[h],y=n(h,""[e],(function(e,t,n,r,o){return t.exec===a?g&&!o?{done:!0,value:m.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:l,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:d}),b=y[0],x=y[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return x.call(e,this,t)}:function(e){return x.call(e,this)})}f&&c(RegExp.prototype[h],"sham",!0)}},function(e,t,n){"use strict";var r=n(131).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},function(e,t,n){"use strict";var r=n(36),o=n(97);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var i=n.call(e,t);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(e,t)}},function(e,t,n){"use strict";var r;t.__esModule=!0,t.perf=void 0;null==(r=window.performance)||r.now;var o={mark:function(e,t){0},measure:function(e,t){}};t.perf=o},function(e,t,n){"use strict";t.__esModule=!0,t.setupHotReloading=t.sendLogEntry=t.sendMessage=t.subscribe=void 0;var r=[];t.subscribe=function(e){return r.push(e)};t.sendMessage=function(e){};t.sendLogEntry=function(e,t){};t.setupHotReloading=function(){0}},function(e,t,n){"use strict";(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(460),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||void 0,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||void 0}).call(this,n(81))},function(e,t,n){"use strict";t.__esModule=!0,t.vecNormalize=t.vecLength=t.vecInverse=t.vecScale=t.vecDivide=t.vecMultiply=t.vecSubtract=t.vecAdd=void 0;var r=n(15),o=function(e,t){return e+t},i=function(e,t){return e-t},a=function(e,t){return e*t},c=function(e,t){return e/t};t.vecAdd=function(){for(var e=arguments.length,t=new Array(e),n=0;n=0||(o[n]=e[n]);return o}(e,["name","size","spin","className","style","rotation"]);n&&(l["font-size"]=100*n+"%"),"number"==typeof f&&(l.transform="rotate("+f+"deg)");var p=a.test(t),h=t.replace(a,"");return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({as:"i",className:(0,o.classes)([u,p?"far":"fas","fa-"+h,c&&"fa-spin"]),style:l},d)))};t.Icon=c,c.defaultHooks=o.pureComponentHooks},,,,function(e,t,n){"use strict";var r=n(7),o=n(8),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},function(e,t,n){"use strict";var r=n(7),o=n(31);e.exports=function(e,t){try{o(r,e,t)}catch(n){r[e]=t}return t}},function(e,t,n){"use strict";var r=n(151),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return o.call(e)}),e.exports=r.inspectSource},function(e,t,n){"use strict";var r=n(43),o=n(151);(e.exports=function(e,t){return o[e]||(o[e]=t!==undefined?t:{})})("versions",[]).push({version:"3.6.5",mode:r?"pure":"global",copyright:"\xa9 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t,n){"use strict";var r=n(40),o=n(52),i=n(115),a=n(10);e.exports=r("Reflect","ownKeys")||function(e){var t=o.f(a(e)),n=i.f;return n?t.concat(n(e)):t}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var r=n(5);e.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},function(e,t,n){"use strict";var r,o,i=n(7),a=n(84),c=i.process,u=c&&c.versions,s=u&&u.v8;s?o=(r=s.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),e.exports=o&&+o},function(e,t,n){"use strict";var r=n(18),o=n(47),i=n(12);e.exports=function(e){for(var t=r(this),n=i(t.length),a=arguments.length,c=o(a>1?arguments[1]:undefined,n),u=a>2?arguments[2]:undefined,s=u===undefined?n:o(u,n);s>c;)t[c++]=e;return t}},function(e,t,n){"use strict";var r=n(14),o=n(74),i=r("iterator"),a=Array.prototype;e.exports=function(e){return e!==undefined&&(o.Array===e||a[i]===e)}},function(e,t,n){"use strict";var r=n(85),o=n(74),i=n(14)("iterator");e.exports=function(e){if(e!=undefined)return e[i]||e["@@iterator"]||o[r(e)]}},function(e,t,n){"use strict";var r={};r[n(14)("toStringTag")]="z",e.exports="[object z]"===String(r)},function(e,t,n){"use strict";var r=n(30),o=n(50),i=n(74),a=n(32),c=n(123),u=a.set,s=a.getterFor("Array Iterator");e.exports=c(Array,"Array",(function(e,t){u(this,{type:"Array Iterator",target:r(e),index:0,kind:t})}),(function(){var e=s(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=undefined,{value:undefined,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},function(e,t,n){"use strict";var r=n(4),o=n(192),i=n(41),a=n(55),c=n(49),u=n(31),s=n(26),l=n(14),f=n(43),d=n(74),p=n(193),h=p.IteratorPrototype,g=p.BUGGY_SAFARI_ITERATORS,v=l("iterator"),m=function(){return this};e.exports=function(e,t,n,l,p,y,b){o(n,t,l);var x,w,_,E=function(e){if(e===p&&A)return A;if(!g&&e in C)return C[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},k=t+" Iterator",S=!1,C=e.prototype,N=C[v]||C["@@iterator"]||p&&C[p],A=!g&&N||E(p),T="Array"==t&&C.entries||N;if(T&&(x=i(T.call(new e)),h!==Object.prototype&&x.next&&(f||i(x)===h||(a?a(x,h):"function"!=typeof x[v]&&u(x,v,m)),c(x,k,!0,!0),f&&(d[k]=m))),"values"==p&&N&&"values"!==N.name&&(S=!0,A=function(){return N.call(this)}),f&&!b||C[v]===A||u(C,v,A),d[t]=A,p)if(w={values:E("values"),keys:y?A:E("keys"),entries:E("entries")},b)for(_ in w)(g||S||!(_ in C))&&s(C,_,w[_]);else r({target:t,proto:!0,forced:g||S},w);return w}},function(e,t,n){"use strict";var r=n(5);e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},function(e,t,n){"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},function(e,t,n){"use strict";var r=n(12),o=n(127),i=n(24),a=Math.ceil,c=function(e){return function(t,n,c){var u,s,l=String(i(t)),f=l.length,d=c===undefined?" ":String(c),p=r(n);return p<=f||""==d?l:(u=p-f,(s=o.call(d,a(u/d.length))).length>u&&(s=s.slice(0,u)),e?l+s:s+l)}};e.exports={start:c(!1),end:c(!0)}},function(e,t,n){"use strict";var r=n(37),o=n(24);e.exports="".repeat||function(e){var t=String(o(this)),n="",i=r(e);if(i<0||i==Infinity)throw RangeError("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(t+=t))1&i&&(n+=t);return n}},function(e,t,n){"use strict";e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,t,n){"use strict";var r,o,i,a=n(7),c=n(5),u=n(36),s=n(53),l=n(158),f=n(109),d=n(290),p=a.location,h=a.setImmediate,g=a.clearImmediate,v=a.process,m=a.MessageChannel,y=a.Dispatch,b=0,x={},w=function(e){if(x.hasOwnProperty(e)){var t=x[e];delete x[e],t()}},_=function(e){return function(){w(e)}},E=function(e){w(e.data)},k=function(e){a.postMessage(e+"",p.protocol+"//"+p.host)};h&&g||(h=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return x[++b]=function(){("function"==typeof e?e:Function(e)).apply(undefined,t)},r(b),b},g=function(e){delete x[e]},"process"==u(v)?r=function(e){v.nextTick(_(e))}:y&&y.now?r=function(e){y.now(_(e))}:m&&!d?(i=(o=new m).port2,o.port1.onmessage=E,r=s(i.postMessage,i,1)):!a.addEventListener||"function"!=typeof postMessage||a.importScripts||c(k)||"file:"===p.protocol?r="onreadystatechange"in f("script")?function(e){l.appendChild(f("script")).onreadystatechange=function(){l.removeChild(this),w(e)}}:function(e){setTimeout(_(e),0)}:(r=k,a.addEventListener("message",E,!1))),e.exports={set:h,clear:g}},function(e,t,n){"use strict";var r=n(28),o=function(e){var t,n;this.promise=new e((function(e,r){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=r(t),this.reject=r(n)};e.exports.f=function(e){return new o(e)}},function(e,t,n){"use strict";var r=n(37),o=n(24),i=function(e){return function(t,n){var i,a,c=String(o(t)),u=r(n),s=c.length;return u<0||u>=s?e?"":undefined:(i=c.charCodeAt(u))<55296||i>56319||u+1===s||(a=c.charCodeAt(u+1))<56320||a>57343?e?c.charAt(u):i:e?c.slice(u,u+2):a-56320+(i-55296<<10)+65536}};e.exports={codeAt:i(!1),charAt:i(!0)}},function(e,t,n){"use strict";var r=n(94);e.exports=function(e){if(r(e))throw TypeError("The method doesn't accept regular expressions");return e}},function(e,t,n){"use strict";var r=n(14)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[r]=!1,"/./"[e](t)}catch(o){}}return!1}},function(e,t,n){"use strict";var r=n(5),o=n(92);e.exports=function(e){return r((function(){return!!o[e]()||"\u200b\x85\u180e"!="\u200b\x85\u180e"[e]()||o[e].name!==e}))}},function(e,t,n){"use strict";var r=n(7),o=n(5),i=n(86),a=n(13).NATIVE_ARRAY_BUFFER_VIEWS,c=r.ArrayBuffer,u=r.Int8Array;e.exports=!a||!o((function(){u(1)}))||!o((function(){new u(-1)}))||!i((function(e){new u,new u(null),new u(1.5),new u(e)}),!0)||o((function(){return 1!==new u(new c(2),1,undefined).length}))},function(e,t,n){"use strict";t.__esModule=!0,t.setupHotKeys=t.releaseHeldKeys=t.releaseHotKey=t.acquireHotKey=void 0;var r=n(78),o=n(57),i=(0,n(25).createLogger)("hotkeys"),a={},c=[r.KEY_ESCAPE,r.KEY_ENTER,r.KEY_SPACE,r.KEY_TAB,r.KEY_CTRL,r.KEY_SHIFT,r.KEY_F5],u={},s=function(e){if(!e.ctrl||e.code!==r.KEY_F5&&e.code!==r.KEY_R){if(!(e.event.defaultPrevented||e.isModifierKey()||c.includes(e.code))){var t,n=16===(t=e.code)?"Shift":17===t?"Ctrl":18===t?"Alt":33===t?"Northeast":34===t?"Southeast":35===t?"Southwest":36===t?"Northwest":37===t?"West":38===t?"North":39===t?"East":40===t?"South":45===t?"Insert":46===t?"Delete":t>=48&&t<=57||t>=65&&t<=90?String.fromCharCode(t):t>=96&&t<=105?"Numpad"+(t-96):t>=112&&t<=123?"F"+(t-111):188===t?",":189===t?"-":190===t?".":void 0;if(n){var o=a[n];if(o)return i.debug("macro",o),Byond.command(o);if(e.isDown()&&!u[n]){u[n]=!0;var s='KeyDown "'+n+'"';return i.debug(s),Byond.command(s)}if(e.isUp()&&u[n]){u[n]=!1;var l='KeyUp "'+n+'"';return i.debug(l),Byond.command(l)}}}}else location.reload()};t.acquireHotKey=function(e){c.push(e)};t.releaseHotKey=function(e){var t=c.indexOf(e);t>=0&&c.splice(t,1)};var l=function(){for(var e=0,t=Object.keys(u);e0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props,r=t.value,o=t.dragMatrix;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:c(e,o),value:r,internalValue:r}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,r=t.dragging,o=t.value,i=n.props.onDrag;r&&i&&i(e,o)}),n.props.updateRate||400),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,r=t.minValue,i=t.maxValue,a=t.step,u=t.stepPixelSize,s=t.dragMatrix;n.setState((function(t){var n=Object.assign({},t),l=c(e,s)-n.origin;if(t.dragging){var f=Number.isFinite(r)?r%a:0;n.internalValue=(0,o.clamp)(n.internalValue+l*a/u,r-a,i+a),n.value=(0,o.clamp)(n.internalValue-n.internalValue%a+f,r,i),n.origin=c(e,s)}else Math.abs(l)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,r=t.onChange,o=t.onDrag,i=n.state,a=i.dragging,c=i.value,u=i.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!a,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a)n.suppressFlicker(),r&&r(e,c),o&&o(e,c);else if(n.inputRef){var s=n.inputRef.current;s.value=u;try{s.focus(),s.select()}catch(l){}}},n}return n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.prototype.render=function(){var e=this,t=this.state,n=t.dragging,i=t.editing,c=t.value,u=t.suppressingFlicker,s=this.props,l=s.animated,f=s.value,d=s.unit,p=s.minValue,h=s.maxValue,g=s.format,v=s.onChange,m=s.onDrag,y=s.children,b=s.height,x=s.lineHeight,w=s.fontSize,_=f;(n||u)&&(_=c);var E=function(e){return e+(d?" "+d:"")},k=l&&!n&&!u&&(0,r.createComponentVNode)(2,a.AnimatedNumber,{value:_,format:g,children:E})||E(g?g(_):_),S=(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:i?undefined:"none",height:b,"line-height":x,"font-size":w},onBlur:function(t){if(i){var n=(0,o.clamp)(parseFloat(t.target.value),p,h);Number.isNaN(n)?e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),v&&v(t,n),m&&m(t,n))}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,o.clamp)(parseFloat(t.target.value),p,h);return Number.isNaN(n)?void e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),v&&v(t,n),void(m&&m(t,n)))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef);return y({dragging:n,editing:i,value:f,displayValue:_,displayElement:k,inputElement:S,handleDragStart:this.handleDragStart})},i}(r.Component);t.DraggableControl=u,u.defaultHooks=i.pureComponentHooks,u.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50,dragMatrix:[1,0]}},function(e,t,n){"use strict";t.__esModule=!0,t.NumberInput=void 0;var r=n(0),o=n(11),i=n(6),a=n(139),c=n(17);var u=function(e){var t,n;function u(t){var n;n=e.call(this,t)||this;var i=t.value;return n.inputRef=(0,r.createRef)(),n.state={value:i,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props.value;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:e.screenY,value:t,internalValue:t}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,r=t.dragging,o=t.value,i=n.props.onDrag;r&&i&&i(e,o)}),n.props.updateRate||400),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,r=t.minValue,i=t.maxValue,a=t.step,c=t.stepPixelSize;n.setState((function(t){var n=Object.assign({},t),u=n.origin-e.screenY;if(t.dragging){var s=Number.isFinite(r)?r%a:0;n.internalValue=(0,o.clamp)(n.internalValue+u*a/c,r-a,i+a),n.value=(0,o.clamp)(n.internalValue-n.internalValue%a+s,r,i),n.origin=e.screenY}else Math.abs(u)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,r=t.onChange,o=t.onDrag,i=n.state,a=i.dragging,c=i.value,u=i.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!a,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a)n.suppressFlicker(),r&&r(e,c),o&&o(e,c);else if(n.inputRef){var s=n.inputRef.current;s.value=u;try{s.focus(),s.select()}catch(l){}}},n}return n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,u.prototype.render=function(){var e=this,t=this.state,n=t.dragging,u=t.editing,s=t.value,l=t.suppressingFlicker,f=this.props,d=f.className,p=f.fluid,h=f.animated,g=f.value,v=f.unit,m=f.minValue,y=f.maxValue,b=f.height,x=f.width,w=f.lineHeight,_=f.fontSize,E=f.format,k=f.onChange,S=f.onDrag,C=g;(n||l)&&(C=s);var N=function(e){return(0,r.createVNode)(1,"div","NumberInput__content",e+(v?" "+v:""),0,{unselectable:Byond.IS_LTE_IE8})},A=h&&!n&&!l&&(0,r.createComponentVNode)(2,a.AnimatedNumber,{value:C,format:E,children:N})||N(E?E(C):C);return(0,r.createComponentVNode)(2,c.Box,{className:(0,i.classes)(["NumberInput",p&&"NumberInput--fluid",d]),minWidth:x,minHeight:b,lineHeight:w,fontSize:_,onMouseDown:this.handleDragStart,children:[(0,r.createVNode)(1,"div","NumberInput__barContainer",(0,r.createVNode)(1,"div","NumberInput__bar",null,1,{style:{height:(0,o.clamp)((C-m)/(y-m)*100,0,100)+"%"}}),2),A,(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:u?undefined:"none",height:b,"line-height":w,"font-size":_},onBlur:function(t){if(u){var n=(0,o.clamp)(parseFloat(t.target.value),m,y);Number.isNaN(n)?e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),k&&k(t,n),S&&S(t,n))}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,o.clamp)(parseFloat(t.target.value),m,y);return Number.isNaN(n)?void e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),k&&k(t,n),void(S&&S(t,n)))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef)]})},u}(r.Component);t.NumberInput=u,u.defaultHooks=i.pureComponentHooks,u.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50}},function(e,t,n){"use strict";t.__esModule=!0,t.Layout=void 0;var r=n(0),o=n(6),i=n(17),a=n(57);function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){var t=e.className,n=e.theme,a=void 0===n?"nanotrasen":n,u=e.children,s=c(e,["className","theme","children"]);return(0,r.createVNode)(1,"div","theme-"+a,(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Layout",t].concat((0,i.computeBoxClassName)(s))),u,0,Object.assign({},(0,i.computeBoxProps)(s)))),2)};t.Layout=u;var s=function(e){var t=e.className,n=e.scrollable,a=e.children,u=c(e,["className","scrollable","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Layout__content",n&&"Layout__content--scrollable",t].concat((0,i.computeBoxClassName)(u))),a,0,Object.assign({},(0,i.computeBoxProps)(u))))};s.defaultHooks={onComponentDidMount:function(e){return(0,a.addScrollableNode)(e)},onComponentWillUnmount:function(e){return(0,a.removeScrollableNode)(e)}},u.Content=s},,,,,,,function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(40),a=n(43),c=n(9),u=n(116),s=n(156),l=n(5),f=n(20),d=n(58),p=n(8),h=n(10),g=n(18),v=n(30),m=n(39),y=n(51),b=n(48),x=n(71),w=n(52),_=n(159),E=n(115),k=n(23),S=n(16),C=n(82),N=n(31),A=n(26),T=n(112),O=n(83),I=n(68),M=n(67),L=n(14),V=n(160),R=n(27),P=n(49),B=n(32),D=n(21).forEach,j=O("hidden"),F=L("toPrimitive"),K=B.set,z=B.getterFor("Symbol"),Y=Object.prototype,U=o.Symbol,$=i("JSON","stringify"),H=k.f,W=S.f,q=_.f,G=C.f,X=T("symbols"),Z=T("op-symbols"),Q=T("string-to-symbol-registry"),J=T("symbol-to-string-registry"),ee=T("wks"),te=o.QObject,ne=!te||!te.prototype||!te.prototype.findChild,re=c&&l((function(){return 7!=b(W({},"a",{get:function(){return W(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=H(Y,t);r&&delete Y[t],W(e,t,n),r&&e!==Y&&W(Y,t,r)}:W,oe=function(e,t){var n=X[e]=b(U.prototype);return K(n,{type:"Symbol",tag:e,description:t}),c||(n.description=t),n},ie=s?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof U},ae=function(e,t,n){e===Y&&ae(Z,t,n),h(e);var r=m(t,!0);return h(n),f(X,r)?(n.enumerable?(f(e,j)&&e[j][r]&&(e[j][r]=!1),n=b(n,{enumerable:y(0,!1)})):(f(e,j)||W(e,j,y(1,{})),e[j][r]=!0),re(e,r,n)):W(e,r,n)},ce=function(e,t){h(e);var n=v(t),r=x(n).concat(de(n));return D(r,(function(t){c&&!se.call(n,t)||ae(e,t,n[t])})),e},ue=function(e,t){return t===undefined?b(e):ce(b(e),t)},se=function(e){var t=m(e,!0),n=G.call(this,t);return!(this===Y&&f(X,t)&&!f(Z,t))&&(!(n||!f(this,t)||!f(X,t)||f(this,j)&&this[j][t])||n)},le=function(e,t){var n=v(e),r=m(t,!0);if(n!==Y||!f(X,r)||f(Z,r)){var o=H(n,r);return!o||!f(X,r)||f(n,j)&&n[j][r]||(o.enumerable=!0),o}},fe=function(e){var t=q(v(e)),n=[];return D(t,(function(e){f(X,e)||f(I,e)||n.push(e)})),n},de=function(e){var t=e===Y,n=q(t?Z:v(e)),r=[];return D(n,(function(e){!f(X,e)||t&&!f(Y,e)||r.push(X[e])})),r};(u||(A((U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor");var e=arguments.length&&arguments[0]!==undefined?String(arguments[0]):undefined,t=M(e),n=function r(e){this===Y&&r.call(Z,e),f(this,j)&&f(this[j],t)&&(this[j][t]=!1),re(this,t,y(1,e))};return c&&ne&&re(Y,t,{configurable:!0,set:n}),oe(t,e)}).prototype,"toString",(function(){return z(this).tag})),A(U,"withoutSetter",(function(e){return oe(M(e),e)})),C.f=se,S.f=ae,k.f=le,w.f=_.f=fe,E.f=de,V.f=function(e){return oe(L(e),e)},c&&(W(U.prototype,"description",{configurable:!0,get:function(){return z(this).description}}),a||A(Y,"propertyIsEnumerable",se,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!u,sham:!u},{Symbol:U}),D(x(ee),(function(e){R(e)})),r({target:"Symbol",stat:!0,forced:!u},{"for":function(e){var t=String(e);if(f(Q,t))return Q[t];var n=U(t);return Q[t]=n,J[n]=t,n},keyFor:function(e){if(!ie(e))throw TypeError(e+" is not a symbol");if(f(J,e))return J[e]},useSetter:function(){ne=!0},useSimple:function(){ne=!1}}),r({target:"Object",stat:!0,forced:!u,sham:!c},{create:ue,defineProperty:ae,defineProperties:ce,getOwnPropertyDescriptor:le}),r({target:"Object",stat:!0,forced:!u},{getOwnPropertyNames:fe,getOwnPropertySymbols:de}),r({target:"Object",stat:!0,forced:l((function(){E.f(1)}))},{getOwnPropertySymbols:function(e){return E.f(g(e))}}),$)&&r({target:"JSON",stat:!0,forced:!u||l((function(){var e=U();return"[null]"!=$([e])||"{}"!=$({a:e})||"{}"!=$(Object(e))}))},{stringify:function(e,t,n){for(var r,o=[e],i=1;arguments.length>i;)o.push(arguments[i++]);if(r=t,(p(t)||e!==undefined)&&!ie(e))return d(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!ie(t))return t}),o[1]=t,$.apply(null,o)}});U.prototype[F]||N(U.prototype,F,U.prototype.valueOf),P(U,"Symbol"),I[j]=!0},function(e,t,n){"use strict";var r=n(9),o=n(5),i=n(109);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var r=n(7),o=n(110),i=r["__core-js_shared__"]||o("__core-js_shared__",{});e.exports=i},function(e,t,n){"use strict";var r=n(7),o=n(111),i=r.WeakMap;e.exports="function"==typeof i&&/native code/.test(o(i))},function(e,t,n){"use strict";var r=n(20),o=n(113),i=n(23),a=n(16);e.exports=function(e,t){for(var n=o(t),c=a.f,u=i.f,s=0;su;)r(c,n=t[u++])&&(~i(s,n)||s.push(n));return s}},function(e,t,n){"use strict";var r=n(116);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,n){"use strict";var r=n(9),o=n(16),i=n(10),a=n(71);e.exports=r?Object.defineProperties:function(e,t){i(e);for(var n,r=a(t),c=r.length,u=0;c>u;)o.f(e,n=r[u++],t[n]);return e}},function(e,t,n){"use strict";var r=n(40);e.exports=r("document","documentElement")},function(e,t,n){"use strict";var r=n(30),o=n(52).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==i.call(e)?function(e){try{return o(e)}catch(t){return a.slice()}}(e):o(r(e))}},function(e,t,n){"use strict";var r=n(14);t.f=r},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(7),a=n(20),c=n(8),u=n(16).f,s=n(153),l=i.Symbol;if(o&&"function"==typeof l&&(!("description"in l.prototype)||l().description!==undefined)){var f={},d=function(){var e=arguments.length<1||arguments[0]===undefined?undefined:String(arguments[0]),t=this instanceof d?new l(e):e===undefined?l():l(e);return""===e&&(f[t]=!0),t};s(d,l);var p=d.prototype=l.prototype;p.constructor=d;var h=p.toString,g="Symbol(test)"==String(l("test")),v=/^Symbol\((.*)\)[^)]+$/;u(p,"description",{configurable:!0,get:function(){var e=c(this)?this.valueOf():this,t=h.call(e);if(a(f,e))return"";var n=g?t.slice(7,-1):t.replace(v,"$1");return""===n?undefined:n}}),r({global:!0,forced:!0},{Symbol:d})}},function(e,t,n){"use strict";n(27)("asyncIterator")},function(e,t,n){"use strict";n(27)("hasInstance")},function(e,t,n){"use strict";n(27)("isConcatSpreadable")},function(e,t,n){"use strict";n(27)("iterator")},function(e,t,n){"use strict";n(27)("match")},function(e,t,n){"use strict";n(27)("matchAll")},function(e,t,n){"use strict";n(27)("replace")},function(e,t,n){"use strict";n(27)("search")},function(e,t,n){"use strict";n(27)("species")},function(e,t,n){"use strict";n(27)("split")},function(e,t,n){"use strict";n(27)("toPrimitive")},function(e,t,n){"use strict";n(27)("toStringTag")},function(e,t,n){"use strict";n(27)("unscopables")},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(58),a=n(8),c=n(18),u=n(12),s=n(54),l=n(72),f=n(73),d=n(14),p=n(117),h=d("isConcatSpreadable"),g=p>=51||!o((function(){var e=[];return e[h]=!1,e.concat()[0]!==e})),v=f("concat"),m=function(e){if(!a(e))return!1;var t=e[h];return t!==undefined?!!t:i(e)};r({target:"Array",proto:!0,forced:!g||!v},{concat:function(e){var t,n,r,o,i,a=c(this),f=l(a,0),d=0;for(t=-1,r=arguments.length;t9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n=9007199254740991)throw TypeError("Maximum allowed index exceeded");s(f,d++,i)}return f.length=d,f}})},function(e,t,n){"use strict";var r=n(4),o=n(177),i=n(50);r({target:"Array",proto:!0},{copyWithin:o}),i("copyWithin")},function(e,t,n){"use strict";var r=n(18),o=n(47),i=n(12),a=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),c=i(n.length),u=o(e,c),s=o(t,c),l=arguments.length>2?arguments[2]:undefined,f=a((l===undefined?c:o(l,c))-s,c-u),d=1;for(s0;)s in n?n[u]=n[s]:delete n[u],u+=d,s+=d;return n}},function(e,t,n){"use strict";var r=n(4),o=n(21).every,i=n(44),a=n(29),c=i("every"),u=a("every");r({target:"Array",proto:!0,forced:!c||!u},{every:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(118),i=n(50);r({target:"Array",proto:!0},{fill:o}),i("fill")},function(e,t,n){"use strict";var r=n(4),o=n(21).filter,i=n(73),a=n(29),c=i("filter"),u=a("filter");r({target:"Array",proto:!0,forced:!c||!u},{filter:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(21).find,i=n(50),a=n(29),c=!0,u=a("find");"find"in[]&&Array(1).find((function(){c=!1})),r({target:"Array",proto:!0,forced:c||!u},{find:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("find")},function(e,t,n){"use strict";var r=n(4),o=n(21).findIndex,i=n(50),a=n(29),c=!0,u=a("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){c=!1})),r({target:"Array",proto:!0,forced:c||!u},{findIndex:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("findIndex")},function(e,t,n){"use strict";var r=n(4),o=n(184),i=n(18),a=n(12),c=n(37),u=n(72);r({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:undefined,t=i(this),n=a(t.length),r=u(t,0);return r.length=o(r,t,t,n,0,e===undefined?1:c(e)),r}})},function(e,t,n){"use strict";var r=n(58),o=n(12),i=n(53);e.exports=function a(e,t,n,c,u,s,l,f){for(var d,p=u,h=0,g=!!l&&i(l,f,3);h0&&r(d))p=a(e,t,d,o(d.length),p,s-1)-1;else{if(p>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[p]=d}p++}h++}return p}},function(e,t,n){"use strict";var r=n(4),o=n(184),i=n(18),a=n(12),c=n(28),u=n(72);r({target:"Array",proto:!0},{flatMap:function(e){var t,n=i(this),r=a(n.length);return c(e),(t=u(n,0)).length=o(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:undefined),t}})},function(e,t,n){"use strict";var r=n(4),o=n(434);r({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},function(e,t,n){"use strict";var r=n(4),o=n(435);r({target:"Array",stat:!0,forced:!n(86)((function(e){Array.from(e)}))},{from:o})},function(e,t,n){"use strict";var r=n(10);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(a){var i=e["return"];throw i!==undefined&&r(i.call(e)),a}}},function(e,t,n){"use strict";var r=n(4),o=n(69).includes,i=n(50);r({target:"Array",proto:!0,forced:!n(29)("indexOf",{ACCESSORS:!0,1:0})},{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("includes")},function(e,t,n){"use strict";var r=n(4),o=n(69).indexOf,i=n(44),a=n(29),c=[].indexOf,u=!!c&&1/[1].indexOf(1,-0)<0,s=i("indexOf"),l=a("indexOf",{ACCESSORS:!0,1:0});r({target:"Array",proto:!0,forced:u||!s||!l},{indexOf:function(e){return u?c.apply(this,arguments)||0:o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";n(4)({target:"Array",stat:!0},{isArray:n(58)})},function(e,t,n){"use strict";var r=n(193).IteratorPrototype,o=n(48),i=n(51),a=n(49),c=n(74),u=function(){return this};e.exports=function(e,t,n){var s=t+" Iterator";return e.prototype=o(r,{next:i(1,n)}),a(e,s,!1,!0),c[s]=u,e}},function(e,t,n){"use strict";var r,o,i,a=n(41),c=n(31),u=n(20),s=n(14),l=n(43),f=s("iterator"),d=!1;[].keys&&("next"in(i=[].keys())?(o=a(a(i)))!==Object.prototype&&(r=o):d=!0),r==undefined&&(r={}),l||u(r,f)||c(r,f,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},function(e,t,n){"use strict";var r=n(8);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},function(e,t,n){"use strict";var r=n(4),o=n(66),i=n(30),a=n(44),c=[].join,u=o!=Object,s=a("join",",");r({target:"Array",proto:!0,forced:u||!s},{join:function(e){return c.call(i(this),e===undefined?",":e)}})},function(e,t,n){"use strict";var r=n(4),o=n(197);r({target:"Array",proto:!0,forced:o!==[].lastIndexOf},{lastIndexOf:o})},function(e,t,n){"use strict";var r=n(30),o=n(37),i=n(12),a=n(44),c=n(29),u=Math.min,s=[].lastIndexOf,l=!!s&&1/[1].lastIndexOf(1,-0)<0,f=a("lastIndexOf"),d=c("indexOf",{ACCESSORS:!0,1:0}),p=l||!f||!d;e.exports=p?function(e){if(l)return s.apply(this,arguments)||0;var t=r(this),n=i(t.length),a=n-1;for(arguments.length>1&&(a=u(a,o(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in t&&t[a]===e)return a||0;return-1}:s},function(e,t,n){"use strict";var r=n(4),o=n(21).map,i=n(73),a=n(29),c=i("map"),u=a("map");r({target:"Array",proto:!0,forced:!c||!u},{map:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(54);r({target:"Array",stat:!0,forced:o((function(){function e(){}return!(Array.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);t>e;)i(n,e,arguments[e++]);return n.length=t,n}})},function(e,t,n){"use strict";var r=n(4),o=n(87).left,i=n(44),a=n(29),c=i("reduce"),u=a("reduce",{1:0});r({target:"Array",proto:!0,forced:!c||!u},{reduce:function(e){return o(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(87).right,i=n(44),a=n(29),c=i("reduceRight"),u=a("reduce",{1:0});r({target:"Array",proto:!0,forced:!c||!u},{reduceRight:function(e){return o(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(8),i=n(58),a=n(47),c=n(12),u=n(30),s=n(54),l=n(14),f=n(73),d=n(29),p=f("slice"),h=d("slice",{ACCESSORS:!0,0:0,1:2}),g=l("species"),v=[].slice,m=Math.max;r({target:"Array",proto:!0,forced:!p||!h},{slice:function(e,t){var n,r,l,f=u(this),d=c(f.length),p=a(e,d),h=a(t===undefined?d:t,d);if(i(f)&&("function"!=typeof(n=f.constructor)||n!==Array&&!i(n.prototype)?o(n)&&null===(n=n[g])&&(n=undefined):n=undefined,n===Array||n===undefined))return v.call(f,p,h);for(r=new(n===undefined?Array:n)(m(h-p,0)),l=0;p1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(28),i=n(18),a=n(5),c=n(44),u=[],s=u.sort,l=a((function(){u.sort(undefined)})),f=a((function(){u.sort(null)})),d=c("sort");r({target:"Array",proto:!0,forced:l||!f||!d},{sort:function(e){return e===undefined?s.call(i(this)):s.call(i(this),o(e))}})},function(e,t,n){"use strict";n(59)("Array")},function(e,t,n){"use strict";var r=n(4),o=n(47),i=n(37),a=n(12),c=n(18),u=n(72),s=n(54),l=n(73),f=n(29),d=l("splice"),p=f("splice",{ACCESSORS:!0,0:0,1:2}),h=Math.max,g=Math.min;r({target:"Array",proto:!0,forced:!d||!p},{splice:function(e,t){var n,r,l,f,d,p,v=c(this),m=a(v.length),y=o(e,m),b=arguments.length;if(0===b?n=r=0:1===b?(n=0,r=m-y):(n=b-2,r=g(h(i(t),0),m-y)),m+n-r>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(l=u(v,r),f=0;fm-r+n;f--)delete v[f-1]}else if(n>r)for(f=m-r;f>y;f--)p=f+n-1,(d=f+r-1)in v?v[p]=v[d]:delete v[p];for(f=0;f1?arguments[1]:undefined,3);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!m(this,e)}}),i(l.prototype,n?{get:function(e){var t=m(this,e);return t&&t.value},set:function(e,t){return v(this,0===e?0:e,t)}}:{add:function(e){return v(this,e=0===e?0:e,e)}}),f&&r(l.prototype,"size",{get:function(){return p(this).size}}),l},setStrong:function(e,t,n){var r=t+" Iterator",o=g(t),i=g(r);s(e,t,(function(e,t){h(this,{type:r,target:e,state:o(e),kind:t,last:undefined})}),(function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),l(t)}}},function(e,t,n){"use strict";var r=n(4),o=n(229),i=Math.acosh,a=Math.log,c=Math.sqrt,u=Math.LN2;r({target:"Math",stat:!0,forced:!i||710!=Math.floor(i(Number.MAX_VALUE))||i(Infinity)!=Infinity},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?a(e)+u:o(e-1+c(e-1)*c(e+1))}})},function(e,t,n){"use strict";var r=Math.log;e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:r(1+e)}},function(e,t,n){"use strict";var r=n(4),o=Math.asinh,i=Math.log,a=Math.sqrt;r({target:"Math",stat:!0,forced:!(o&&1/o(0)>0)},{asinh:function c(e){return isFinite(e=+e)&&0!=e?e<0?-c(-e):i(e+a(e*e+1)):e}})},function(e,t,n){"use strict";var r=n(4),o=Math.atanh,i=Math.log;r({target:"Math",stat:!0,forced:!(o&&1/o(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:i((1+e)/(1-e))/2}})},function(e,t,n){"use strict";var r=n(4),o=n(128),i=Math.abs,a=Math.pow;r({target:"Math",stat:!0},{cbrt:function(e){return o(e=+e)*a(i(e),1/3)}})},function(e,t,n){"use strict";var r=n(4),o=Math.floor,i=Math.log,a=Math.LOG2E;r({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-o(i(e+.5)*a):32}})},function(e,t,n){"use strict";var r=n(4),o=n(91),i=Math.cosh,a=Math.abs,c=Math.E;r({target:"Math",stat:!0,forced:!i||i(710)===Infinity},{cosh:function(e){var t=o(a(e)-1)+1;return(t+1/(t*c*c))*(c/2)}})},function(e,t,n){"use strict";var r=n(4),o=n(91);r({target:"Math",stat:!0,forced:o!=Math.expm1},{expm1:o})},function(e,t,n){"use strict";n(4)({target:"Math",stat:!0},{fround:n(439)})},function(e,t,n){"use strict";var r=n(4),o=Math.hypot,i=Math.abs,a=Math.sqrt;r({target:"Math",stat:!0,forced:!!o&&o(Infinity,NaN)!==Infinity},{hypot:function(e,t){for(var n,r,o=0,c=0,u=arguments.length,s=0;c0?(r=n/s)*r:n;return s===Infinity?Infinity:s*a(o)}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=Math.imul;r({target:"Math",stat:!0,forced:o((function(){return-5!=i(4294967295,5)||2!=i.length}))},{imul:function(e,t){var n=+e,r=+t,o=65535&n,i=65535&r;return 0|o*i+((65535&n>>>16)*i+o*(65535&r>>>16)<<16>>>0)}})},function(e,t,n){"use strict";var r=n(4),o=Math.log,i=Math.LOG10E;r({target:"Math",stat:!0},{log10:function(e){return o(e)*i}})},function(e,t,n){"use strict";n(4)({target:"Math",stat:!0},{log1p:n(229)})},function(e,t,n){"use strict";var r=n(4),o=Math.log,i=Math.LN2;r({target:"Math",stat:!0},{log2:function(e){return o(e)/i}})},function(e,t,n){"use strict";n(4)({target:"Math",stat:!0},{sign:n(128)})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(91),a=Math.abs,c=Math.exp,u=Math.E;r({target:"Math",stat:!0,forced:o((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return a(e=+e)<1?(i(e)-i(-e))/2:(c(e-1)-c(-e-1))*(u/2)}})},function(e,t,n){"use strict";var r=n(4),o=n(91),i=Math.exp;r({target:"Math",stat:!0},{tanh:function(e){var t=o(e=+e),n=o(-e);return t==Infinity?1:n==Infinity?-1:(t-n)/(i(e)+i(-e))}})},function(e,t,n){"use strict";n(49)(Math,"Math",!0)},function(e,t,n){"use strict";var r=n(4),o=Math.ceil,i=Math.floor;r({target:"Math",stat:!0},{trunc:function(e){return(e>0?i:o)(e)}})},function(e,t,n){"use strict";var r=n(9),o=n(7),i=n(70),a=n(26),c=n(20),u=n(36),s=n(90),l=n(39),f=n(5),d=n(48),p=n(52).f,h=n(23).f,g=n(16).f,v=n(62).trim,m=o.Number,y=m.prototype,b="Number"==u(d(y)),x=function(e){var t,n,r,o,i,a,c,u,s=l(e,!1);if("string"==typeof s&&s.length>2)if(43===(t=(s=v(s)).charCodeAt(0))||45===t){if(88===(n=s.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(s.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+s}for(a=(i=s.slice(2)).length,c=0;co)return NaN;return parseInt(i,r)}return+s};if(i("Number",!m(" 0o1")||!m("0b1")||m("+0x1"))){for(var w,_=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof _&&(b?f((function(){y.valueOf.call(n)})):"Number"!=u(n))?s(new m(x(t)),n,_):x(t)},E=r?p(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),k=0;E.length>k;k++)c(m,w=E[k])&&!c(_,w)&&g(_,w,h(m,w));_.prototype=y,y.constructor=_,a(o,"Number",_)}},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)})},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{isFinite:n(440)})},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{isInteger:n(251)})},function(e,t,n){"use strict";var r=n(8),o=Math.floor;e.exports=function(e){return!r(e)&&isFinite(e)&&o(e)===e}},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{isNaN:function(e){return e!=e}})},function(e,t,n){"use strict";var r=n(4),o=n(251),i=Math.abs;r({target:"Number",stat:!0},{isSafeInteger:function(e){return o(e)&&i(e)<=9007199254740991}})},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991})},function(e,t,n){"use strict";var r=n(4),o=n(441);r({target:"Number",stat:!0,forced:Number.parseFloat!=o},{parseFloat:o})},function(e,t,n){"use strict";var r=n(4),o=n(258);r({target:"Number",stat:!0,forced:Number.parseInt!=o},{parseInt:o})},function(e,t,n){"use strict";var r=n(7),o=n(62).trim,i=n(92),a=r.parseInt,c=/^[+-]?0[Xx]/,u=8!==a(i+"08")||22!==a(i+"0x16");e.exports=u?function(e,t){var n=o(String(e));return a(n,t>>>0||(c.test(n)?16:10))}:a},function(e,t,n){"use strict";var r=n(4),o=n(37),i=n(442),a=n(127),c=n(5),u=1..toFixed,s=Math.floor,l=function f(e,t,n){return 0===t?n:t%2==1?f(e,t-1,n*e):f(e*e,t/2,n)};r({target:"Number",proto:!0,forced:u&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!c((function(){u.call({})}))},{toFixed:function(e){var t,n,r,c,u=i(this),f=o(e),d=[0,0,0,0,0,0],p="",h="0",g=function(e,t){for(var n=-1,r=t;++n<6;)r+=e*d[n],d[n]=r%1e7,r=s(r/1e7)},v=function(e){for(var t=6,n=0;--t>=0;)n+=d[t],d[t]=s(n/e),n=n%e*1e7},m=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==d[e]){var n=String(d[e]);t=""===t?n:t+a.call("0",7-n.length)+n}return t};if(f<0||f>20)throw RangeError("Incorrect fraction digits");if(u!=u)return"NaN";if(u<=-1e21||u>=1e21)return String(u);if(u<0&&(p="-",u=-u),u>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(u*l(2,69,1))-69)<0?u*l(2,-t,1):u/l(2,t,1),n*=4503599627370496,(t=52-t)>0){for(g(0,n),r=f;r>=7;)g(1e7,0),r-=7;for(g(l(10,r,1),0),r=t-1;r>=23;)v(1<<23),r-=23;v(1<0?p+((c=h.length)<=f?"0."+a.call("0",f-c)+h:h.slice(0,c-f)+"."+h.slice(c-f)):p+h}})},function(e,t,n){"use strict";var r=n(4),o=n(443);r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},function(e,t,n){"use strict";n(4)({target:"Object",stat:!0,sham:!n(9)},{create:n(48)})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(93),a=n(18),c=n(28),u=n(16);o&&r({target:"Object",proto:!0,forced:i},{__defineGetter__:function(e,t){u.f(a(this),e,{get:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var r=n(4),o=n(9);r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperties:n(157)})},function(e,t,n){"use strict";var r=n(4),o=n(9);r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperty:n(16).f})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(93),a=n(18),c=n(28),u=n(16);o&&r({target:"Object",proto:!0,forced:i},{__defineSetter__:function(e,t){u.f(a(this),e,{set:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var r=n(4),o=n(267).entries;r({target:"Object",stat:!0},{entries:function(e){return o(e)}})},function(e,t,n){"use strict";var r=n(9),o=n(71),i=n(30),a=n(82).f,c=function(e){return function(t){for(var n,c=i(t),u=o(c),s=u.length,l=0,f=[];s>l;)n=u[l++],r&&!a.call(c,n)||f.push(e?[n,c[n]]:c[n]);return f}};e.exports={entries:c(!0),values:c(!1)}},function(e,t,n){"use strict";var r=n(4),o=n(76),i=n(5),a=n(8),c=n(56).onFreeze,u=Object.freeze;r({target:"Object",stat:!0,forced:i((function(){u(1)})),sham:!o},{freeze:function(e){return u&&a(e)?u(c(e)):e}})},function(e,t,n){"use strict";var r=n(4),o=n(61),i=n(54);r({target:"Object",stat:!0},{fromEntries:function(e){var t={};return o(e,(function(e,n){i(t,e,n)}),undefined,!0),t}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(30),a=n(23).f,c=n(9),u=o((function(){a(1)}));r({target:"Object",stat:!0,forced:!c||u,sham:!c},{getOwnPropertyDescriptor:function(e,t){return a(i(e),t)}})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(113),a=n(30),c=n(23),u=n(54);r({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(e){for(var t,n,r=a(e),o=c.f,s=i(r),l={},f=0;s.length>f;)(n=o(r,t=s[f++]))!==undefined&&u(l,t,n);return l}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(159).f;r({target:"Object",stat:!0,forced:o((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:i})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(18),a=n(41),c=n(124);r({target:"Object",stat:!0,forced:o((function(){a(1)})),sham:!c},{getPrototypeOf:function(e){return a(i(e))}})},function(e,t,n){"use strict";n(4)({target:"Object",stat:!0},{is:n(275)})},function(e,t,n){"use strict";e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(8),a=Object.isExtensible;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isExtensible:function(e){return!!i(e)&&(!a||a(e))}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(8),a=Object.isFrozen;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isFrozen:function(e){return!i(e)||!!a&&a(e)}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(8),a=Object.isSealed;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isSealed:function(e){return!i(e)||!!a&&a(e)}})},function(e,t,n){"use strict";var r=n(4),o=n(18),i=n(71);r({target:"Object",stat:!0,forced:n(5)((function(){i(1)}))},{keys:function(e){return i(o(e))}})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(93),a=n(18),c=n(39),u=n(41),s=n(23).f;o&&r({target:"Object",proto:!0,forced:i},{__lookupGetter__:function(e){var t,n=a(this),r=c(e,!0);do{if(t=s(n,r))return t.get}while(n=u(n))}})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(93),a=n(18),c=n(39),u=n(41),s=n(23).f;o&&r({target:"Object",proto:!0,forced:i},{__lookupSetter__:function(e){var t,n=a(this),r=c(e,!0);do{if(t=s(n,r))return t.set}while(n=u(n))}})},function(e,t,n){"use strict";var r=n(4),o=n(8),i=n(56).onFreeze,a=n(76),c=n(5),u=Object.preventExtensions;r({target:"Object",stat:!0,forced:c((function(){u(1)})),sham:!a},{preventExtensions:function(e){return u&&o(e)?u(i(e)):e}})},function(e,t,n){"use strict";var r=n(4),o=n(8),i=n(56).onFreeze,a=n(76),c=n(5),u=Object.seal;r({target:"Object",stat:!0,forced:c((function(){u(1)})),sham:!a},{seal:function(e){return u&&o(e)?u(i(e)):e}})},function(e,t,n){"use strict";n(4)({target:"Object",stat:!0},{setPrototypeOf:n(55)})},function(e,t,n){"use strict";var r=n(121),o=n(26),i=n(444);r||o(Object.prototype,"toString",i,{unsafe:!0})},function(e,t,n){"use strict";var r=n(4),o=n(267).values;r({target:"Object",stat:!0},{values:function(e){return o(e)}})},function(e,t,n){"use strict";var r=n(4),o=n(258);r({global:!0,forced:parseInt!=o},{parseInt:o})},function(e,t,n){"use strict";var r,o,i,a,c=n(4),u=n(43),s=n(7),l=n(40),f=n(289),d=n(26),p=n(75),h=n(49),g=n(59),v=n(8),m=n(28),y=n(60),b=n(36),x=n(111),w=n(61),_=n(86),E=n(45),k=n(129).set,S=n(291),C=n(292),N=n(445),A=n(130),T=n(293),O=n(32),I=n(70),M=n(14),L=n(117),V=M("species"),R="Promise",P=O.get,B=O.set,D=O.getterFor(R),j=f,F=s.TypeError,K=s.document,z=s.process,Y=l("fetch"),U=A.f,$=U,H="process"==b(z),W=!!(K&&K.createEvent&&s.dispatchEvent),q=I(R,(function(){if(!(x(j)!==String(j))){if(66===L)return!0;if(!H&&"function"!=typeof PromiseRejectionEvent)return!0}if(u&&!j.prototype["finally"])return!0;if(L>=51&&/native code/.test(j))return!1;var e=j.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[V]=t,!(e.then((function(){}))instanceof t)})),G=q||!_((function(e){j.all(e)["catch"]((function(){}))})),X=function(e){var t;return!(!v(e)||"function"!=typeof(t=e.then))&&t},Z=function(e,t,n){if(!t.notified){t.notified=!0;var r=t.reactions;S((function(){for(var o=t.value,i=1==t.state,a=0;r.length>a;){var c,u,s,l=r[a++],f=i?l.ok:l.fail,d=l.resolve,p=l.reject,h=l.domain;try{f?(i||(2===t.rejection&&te(e,t),t.rejection=1),!0===f?c=o:(h&&h.enter(),c=f(o),h&&(h.exit(),s=!0)),c===l.promise?p(F("Promise-chain cycle")):(u=X(c))?u.call(c,d,p):d(c)):p(o)}catch(g){h&&!s&&h.exit(),p(g)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&J(e,t)}))}},Q=function(e,t,n){var r,o;W?((r=K.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),s.dispatchEvent(r)):r={promise:t,reason:n},(o=s["on"+e])?o(r):"unhandledrejection"===e&&N("Unhandled promise rejection",n)},J=function(e,t){k.call(s,(function(){var n,r=t.value;if(ee(t)&&(n=T((function(){H?z.emit("unhandledRejection",r,e):Q("unhandledrejection",e,r)})),t.rejection=H||ee(t)?2:1,n.error))throw n.value}))},ee=function(e){return 1!==e.rejection&&!e.parent},te=function(e,t){k.call(s,(function(){H?z.emit("rejectionHandled",e):Q("rejectionhandled",e,t.value)}))},ne=function(e,t,n,r){return function(o){e(t,n,o,r)}},re=function(e,t,n,r){t.done||(t.done=!0,r&&(t=r),t.value=n,t.state=2,Z(e,t,!0))},oe=function ie(e,t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(e===n)throw F("Promise can't be resolved itself");var o=X(n);o?S((function(){var r={done:!1};try{o.call(n,ne(ie,e,r,t),ne(re,e,r,t))}catch(i){re(e,r,i,t)}})):(t.value=n,t.state=1,Z(e,t,!1))}catch(i){re(e,{done:!1},i,t)}}};q&&(j=function(e){y(this,j,R),m(e),r.call(this);var t=P(this);try{e(ne(oe,this,t),ne(re,this,t))}catch(n){re(this,t,n)}},(r=function(e){B(this,{type:R,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:undefined})}).prototype=p(j.prototype,{then:function(e,t){var n=D(this),r=U(E(this,j));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=H?z.domain:undefined,n.parent=!0,n.reactions.push(r),0!=n.state&&Z(this,n,!1),r.promise},"catch":function(e){return this.then(undefined,e)}}),o=function(){var e=new r,t=P(e);this.promise=e,this.resolve=ne(oe,e,t),this.reject=ne(re,e,t)},A.f=U=function(e){return e===j||e===i?new o(e):$(e)},u||"function"!=typeof f||(a=f.prototype.then,d(f.prototype,"then",(function(e,t){var n=this;return new j((function(e,t){a.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof Y&&c({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return C(j,Y.apply(s,arguments))}}))),c({global:!0,wrap:!0,forced:q},{Promise:j}),h(j,R,!1,!0),g(R),i=l(R),c({target:R,stat:!0,forced:q},{reject:function(e){var t=U(this);return t.reject.call(undefined,e),t.promise}}),c({target:R,stat:!0,forced:u||q},{resolve:function(e){return C(u&&this===i?j:this,e)}}),c({target:R,stat:!0,forced:G},{all:function(e){var t=this,n=U(t),r=n.resolve,o=n.reject,i=T((function(){var n=m(t.resolve),i=[],a=0,c=1;w(e,(function(e){var u=a++,s=!1;i.push(undefined),c++,n.call(t,e).then((function(e){s||(s=!0,i[u]=e,--c||r(i))}),o)})),--c||r(i)}));return i.error&&o(i.value),n.promise},race:function(e){var t=this,n=U(t),r=n.reject,o=T((function(){var o=m(t.resolve);w(e,(function(e){o.call(t,e).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},function(e,t,n){"use strict";var r=n(7);e.exports=r.Promise},function(e,t,n){"use strict";var r=n(84);e.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},function(e,t,n){"use strict";var r,o,i,a,c,u,s,l,f=n(7),d=n(23).f,p=n(36),h=n(129).set,g=n(290),v=f.MutationObserver||f.WebKitMutationObserver,m=f.process,y=f.Promise,b="process"==p(m),x=d(f,"queueMicrotask"),w=x&&x.value;w||(r=function(){var e,t;for(b&&(e=m.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(n){throw o?a():i=undefined,n}}i=undefined,e&&e.enter()},b?a=function(){m.nextTick(r)}:v&&!g?(c=!0,u=document.createTextNode(""),new v(r).observe(u,{characterData:!0}),a=function(){u.data=c=!c}):y&&y.resolve?(s=y.resolve(undefined),l=s.then,a=function(){l.call(s,r)}):a=function(){h.call(f,r)}),e.exports=w||function(e){var t={fn:e,next:undefined};i&&(i.next=t),o||(o=t,a()),i=t}},function(e,t,n){"use strict";var r=n(10),o=n(8),i=n(130);e.exports=function(e,t){if(r(e),o(t)&&t.constructor===e)return t;var n=i.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(t){return{error:!0,value:t}}}},function(e,t,n){"use strict";var r=n(4),o=n(28),i=n(130),a=n(293),c=n(61);r({target:"Promise",stat:!0},{allSettled:function(e){var t=this,n=i.f(t),r=n.resolve,u=n.reject,s=a((function(){var n=o(t.resolve),i=[],a=0,u=1;c(e,(function(e){var o=a++,c=!1;i.push(undefined),u++,n.call(t,e).then((function(e){c||(c=!0,i[o]={status:"fulfilled",value:e},--u||r(i))}),(function(e){c||(c=!0,i[o]={status:"rejected",reason:e},--u||r(i))}))})),--u||r(i)}));return s.error&&u(s.value),n.promise}})},function(e,t,n){"use strict";var r=n(4),o=n(43),i=n(289),a=n(5),c=n(40),u=n(45),s=n(292),l=n(26);r({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){i.prototype["finally"].call({then:function(){}},(function(){}))}))},{"finally":function(e){var t=u(this,c("Promise")),n="function"==typeof e;return this.then(n?function(n){return s(t,e()).then((function(){return n}))}:e,n?function(n){return s(t,e()).then((function(){throw n}))}:e)}}),o||"function"!=typeof i||i.prototype["finally"]||l(i.prototype,"finally",c("Promise").prototype["finally"])},function(e,t,n){"use strict";var r=n(4),o=n(40),i=n(28),a=n(10),c=n(5),u=o("Reflect","apply"),s=Function.apply;r({target:"Reflect",stat:!0,forced:!c((function(){u((function(){}))}))},{apply:function(e,t,n){return i(e),a(n),u?u(e,t,n):s.call(e,t,n)}})},function(e,t,n){"use strict";var r=n(4),o=n(40),i=n(28),a=n(10),c=n(8),u=n(48),s=n(220),l=n(5),f=o("Reflect","construct"),d=l((function(){function e(){}return!(f((function(){}),[],e)instanceof e)})),p=!l((function(){f((function(){}))})),h=d||p;r({target:"Reflect",stat:!0,forced:h,sham:h},{construct:function(e,t){i(e),a(t);var n=arguments.length<3?e:i(arguments[2]);if(p&&!d)return f(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return r.push.apply(r,t),new(s.apply(e,r))}var o=n.prototype,l=u(c(o)?o:Object.prototype),h=Function.apply.call(e,l,t);return c(h)?h:l}})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(10),a=n(39),c=n(16);r({target:"Reflect",stat:!0,forced:n(5)((function(){Reflect.defineProperty(c.f({},1,{value:1}),1,{value:2})})),sham:!o},{defineProperty:function(e,t,n){i(e);var r=a(t,!0);i(n);try{return c.f(e,r,n),!0}catch(o){return!1}}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(23).f;r({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=i(o(e),t);return!(n&&!n.configurable)&&delete e[t]}})},function(e,t,n){"use strict";var r=n(4),o=n(8),i=n(10),a=n(20),c=n(23),u=n(41);r({target:"Reflect",stat:!0},{get:function s(e,t){var n,r,l=arguments.length<3?e:arguments[2];return i(e)===l?e[t]:(n=c.f(e,t))?a(n,"value")?n.value:n.get===undefined?undefined:n.get.call(l):o(r=u(e))?s(r,t,l):void 0}})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(10),a=n(23);r({target:"Reflect",stat:!0,sham:!o},{getOwnPropertyDescriptor:function(e,t){return a.f(i(e),t)}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(41);r({target:"Reflect",stat:!0,sham:!n(124)},{getPrototypeOf:function(e){return i(o(e))}})},function(e,t,n){"use strict";n(4)({target:"Reflect",stat:!0},{has:function(e,t){return t in e}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=Object.isExtensible;r({target:"Reflect",stat:!0},{isExtensible:function(e){return o(e),!i||i(e)}})},function(e,t,n){"use strict";n(4)({target:"Reflect",stat:!0},{ownKeys:n(113)})},function(e,t,n){"use strict";var r=n(4),o=n(40),i=n(10);r({target:"Reflect",stat:!0,sham:!n(76)},{preventExtensions:function(e){i(e);try{var t=o("Object","preventExtensions");return t&&t(e),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(8),a=n(20),c=n(5),u=n(16),s=n(23),l=n(41),f=n(51);r({target:"Reflect",stat:!0,forced:c((function(){var e=u.f({},"a",{configurable:!0});return!1!==Reflect.set(l(e),"a",1,e)}))},{set:function d(e,t,n){var r,c,p=arguments.length<4?e:arguments[3],h=s.f(o(e),t);if(!h){if(i(c=l(e)))return d(c,t,n,p);h=f(0)}if(a(h,"value")){if(!1===h.writable||!i(p))return!1;if(r=s.f(p,t)){if(r.get||r.set||!1===r.writable)return!1;r.value=n,u.f(p,t,r)}else u.f(p,t,f(0,n));return!0}return h.set!==undefined&&(h.set.call(p,n),!0)}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(194),a=n(55);a&&r({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){o(e),i(t);try{return a(e,t),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var r=n(9),o=n(7),i=n(70),a=n(90),c=n(16).f,u=n(52).f,s=n(94),l=n(77),f=n(95),d=n(26),p=n(5),h=n(32).set,g=n(59),v=n(14)("match"),m=o.RegExp,y=m.prototype,b=/a/g,x=/a/g,w=new m(b)!==b,_=f.UNSUPPORTED_Y;if(r&&i("RegExp",!w||_||p((function(){return x[v]=!1,m(b)!=b||m(x)==x||"/a/i"!=m(b,"i")})))){for(var E=function(e,t){var n,r=this instanceof E,o=s(e),i=t===undefined;if(!r&&o&&e.constructor===E&&i)return e;w?o&&!i&&(e=e.source):e instanceof E&&(i&&(t=l.call(e)),e=e.source),_&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var c=a(w?new m(e,t):m(e,t),r?this:y,E);return _&&n&&h(c,{sticky:n}),c},k=function(e){e in E||c(E,e,{configurable:!0,get:function(){return m[e]},set:function(t){m[e]=t}})},S=u(m),C=0;S.length>C;)k(S[C++]);y.constructor=E,E.prototype=y,d(o,"RegExp",E)}g("RegExp")},function(e,t,n){"use strict";var r=n(9),o=n(16),i=n(77),a=n(95).UNSUPPORTED_Y;r&&("g"!=/./g.flags||a)&&o.f(RegExp.prototype,"flags",{configurable:!0,get:i})},function(e,t,n){"use strict";var r=n(9),o=n(95).UNSUPPORTED_Y,i=n(16).f,a=n(32).get,c=RegExp.prototype;r&&o&&i(RegExp.prototype,"sticky",{configurable:!0,get:function(){if(this===c)return undefined;if(this instanceof RegExp)return!!a(this).sticky;throw TypeError("Incompatible receiver, RegExp required")}})},function(e,t,n){"use strict";n(96);var r,o,i=n(4),a=n(8),c=(r=!1,(o=/[ac]/).exec=function(){return r=!0,/./.exec.apply(this,arguments)},!0===o.test("abc")&&r),u=/./.test;i({target:"RegExp",proto:!0,forced:!c},{test:function(e){if("function"!=typeof this.exec)return u.call(this,e);var t=this.exec(e);if(null!==t&&!a(t))throw new Error("RegExp exec method returned something other than an Object or null");return!!t}})},function(e,t,n){"use strict";var r=n(26),o=n(10),i=n(5),a=n(77),c=RegExp.prototype,u=c.toString,s=i((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),l="toString"!=u.name;(s||l)&&r(RegExp.prototype,"toString",(function(){var e=o(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(n===undefined&&e instanceof RegExp&&!("flags"in c)?a.call(e):n)}),{unsafe:!0})},function(e,t,n){"use strict";var r=n(89),o=n(227);e.exports=r("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),o)},function(e,t,n){"use strict";var r=n(4),o=n(131).codeAt;r({target:"String",proto:!0},{codePointAt:function(e){return o(this,e)}})},function(e,t,n){"use strict";var r,o=n(4),i=n(23).f,a=n(12),c=n(132),u=n(24),s=n(133),l=n(43),f="".endsWith,d=Math.min,p=s("endsWith");o({target:"String",proto:!0,forced:!!(l||p||(r=i(String.prototype,"endsWith"),!r||r.writable))&&!p},{endsWith:function(e){var t=String(u(this));c(e);var n=arguments.length>1?arguments[1]:undefined,r=a(t.length),o=n===undefined?r:d(a(n),r),i=String(e);return f?f.call(t,i,o):t.slice(o-i.length,o)===i}})},function(e,t,n){"use strict";var r=n(4),o=n(47),i=String.fromCharCode,a=String.fromCodePoint;r({target:"String",stat:!0,forced:!!a&&1!=a.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,a=0;r>a;){if(t=+arguments[a++],o(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?i(t):i(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}})},function(e,t,n){"use strict";var r=n(4),o=n(132),i=n(24);r({target:"String",proto:!0,forced:!n(133)("includes")},{includes:function(e){return!!~String(i(this)).indexOf(o(e),arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(131).charAt,o=n(32),i=n(123),a=o.set,c=o.getterFor("String Iterator");i(String,"String",(function(e){a(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=c(this),n=t.string,o=t.index;return o>=n.length?{value:undefined,done:!0}:(e=r(n,o),t.index+=e.length,{value:e,done:!1})}))},function(e,t,n){"use strict";var r=n(98),o=n(10),i=n(12),a=n(24),c=n(99),u=n(100);r("match",1,(function(e,t,n){return[function(t){var n=a(this),r=t==undefined?undefined:t[e];return r!==undefined?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var a=o(e),s=String(this);if(!a.global)return u(a,s);var l=a.unicode;a.lastIndex=0;for(var f,d=[],p=0;null!==(f=u(a,s));){var h=String(f[0]);d[p]=h,""===h&&(a.lastIndex=c(s,i(a.lastIndex),l)),p++}return 0===p?null:d}]}))},function(e,t,n){"use strict";var r=n(4),o=n(192),i=n(24),a=n(12),c=n(28),u=n(10),s=n(36),l=n(94),f=n(77),d=n(31),p=n(5),h=n(14),g=n(45),v=n(99),m=n(32),y=n(43),b=h("matchAll"),x=m.set,w=m.getterFor("RegExp String Iterator"),_=RegExp.prototype,E=_.exec,k="".matchAll,S=!!k&&!p((function(){"a".matchAll(/./)})),C=o((function(e,t,n,r){x(this,{type:"RegExp String Iterator",regexp:e,string:t,global:n,unicode:r,done:!1})}),"RegExp String",(function(){var e=w(this);if(e.done)return{value:undefined,done:!0};var t=e.regexp,n=e.string,r=function(e,t){var n,r=e.exec;if("function"==typeof r){if("object"!=typeof(n=r.call(e,t)))throw TypeError("Incorrect exec result");return n}return E.call(e,t)}(t,n);return null===r?{value:undefined,done:e.done=!0}:e.global?(""==String(r[0])&&(t.lastIndex=v(n,a(t.lastIndex),e.unicode)),{value:r,done:!1}):(e.done=!0,{value:r,done:!1})})),N=function(e){var t,n,r,o,i,c,s=u(this),l=String(e);return t=g(s,RegExp),(n=s.flags)===undefined&&s instanceof RegExp&&!("flags"in _)&&(n=f.call(s)),r=n===undefined?"":String(n),o=new t(t===RegExp?s.source:s,r),i=!!~r.indexOf("g"),c=!!~r.indexOf("u"),o.lastIndex=a(s.lastIndex),new C(o,l,i,c)};r({target:"String",proto:!0,forced:S},{matchAll:function(e){var t,n,r,o=i(this);if(null!=e){if(l(e)&&!~String(i("flags"in _?e.flags:f.call(e))).indexOf("g"))throw TypeError("`.matchAll` does not allow non-global regexes");if(S)return k.apply(o,arguments);if((n=e[b])===undefined&&y&&"RegExp"==s(e)&&(n=N),null!=n)return c(n).call(e,o)}else if(S)return k.apply(o,arguments);return t=String(o),r=new RegExp(e,"g"),y?N.call(r,t):r[b](t)}}),y||b in _||d(_,b,N)},function(e,t,n){"use strict";var r=n(4),o=n(126).end;r({target:"String",proto:!0,forced:n(323)},{padEnd:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(84);e.exports=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(r)},function(e,t,n){"use strict";var r=n(4),o=n(126).start;r({target:"String",proto:!0,forced:n(323)},{padStart:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(30),i=n(12);r({target:"String",stat:!0},{raw:function(e){for(var t=o(e.raw),n=i(t.length),r=arguments.length,a=[],c=0;n>c;)a.push(String(t[c++])),c]*>)/g,g=/\$([$&'`]|\d\d?)/g;r("replace",2,(function(e,t,n,r){var v=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=r.REPLACE_KEEPS_$0,y=v?"$":"$0";return[function(n,r){var o=u(this),i=n==undefined?undefined:n[e];return i!==undefined?i.call(n,o,r):t.call(String(o),n,r)},function(e,r){if(!v&&m||"string"==typeof r&&-1===r.indexOf(y)){var i=n(t,e,this,r);if(i.done)return i.value}var u=o(e),p=String(this),h="function"==typeof r;h||(r=String(r));var g=u.global;if(g){var x=u.unicode;u.lastIndex=0}for(var w=[];;){var _=l(u,p);if(null===_)break;if(w.push(_),!g)break;""===String(_[0])&&(u.lastIndex=s(p,a(u.lastIndex),x))}for(var E,k="",S=0,C=0;C=S&&(k+=p.slice(S,A)+L,S=A+N.length)}return k+p.slice(S)}];function b(e,n,r,o,a,c){var u=r+e.length,s=o.length,l=g;return a!==undefined&&(a=i(a),l=h),t.call(c,l,(function(t,i){var c;switch(i.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,r);case"'":return n.slice(u);case"<":c=a[i.slice(1,-1)];break;default:var l=+i;if(0===l)return t;if(l>s){var f=p(l/10);return 0===f?t:f<=s?o[f-1]===undefined?i.charAt(1):o[f-1]+i.charAt(1):t}c=o[l-1]}return c===undefined?"":c}))}}))},function(e,t,n){"use strict";var r=n(98),o=n(10),i=n(24),a=n(275),c=n(100);r("search",1,(function(e,t,n){return[function(t){var n=i(this),r=t==undefined?undefined:t[e];return r!==undefined?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=o(e),u=String(this),s=i.lastIndex;a(s,0)||(i.lastIndex=0);var l=c(i,u);return a(i.lastIndex,s)||(i.lastIndex=s),null===l?-1:l.index}]}))},function(e,t,n){"use strict";var r=n(98),o=n(94),i=n(10),a=n(24),c=n(45),u=n(99),s=n(12),l=n(100),f=n(97),d=n(5),p=[].push,h=Math.min,g=!d((function(){return!RegExp(4294967295,"y")}));r("split",2,(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(a(this)),i=n===undefined?4294967295:n>>>0;if(0===i)return[];if(e===undefined)return[r];if(!o(e))return t.call(r,e,i);for(var c,u,s,l=[],d=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,g=new RegExp(e.source,d+"g");(c=f.call(g,r))&&!((u=g.lastIndex)>h&&(l.push(r.slice(h,c.index)),c.length>1&&c.index=i));)g.lastIndex===c.index&&g.lastIndex++;return h===r.length?!s&&g.test("")||l.push(""):l.push(r.slice(h)),l.length>i?l.slice(0,i):l}:"0".split(undefined,0).length?function(e,n){return e===undefined&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var o=a(this),i=t==undefined?undefined:t[e];return i!==undefined?i.call(t,o,n):r.call(String(o),t,n)},function(e,o){var a=n(r,e,this,o,r!==t);if(a.done)return a.value;var f=i(e),d=String(this),p=c(f,RegExp),v=f.unicode,m=(f.ignoreCase?"i":"")+(f.multiline?"m":"")+(f.unicode?"u":"")+(g?"y":"g"),y=new p(g?f:"^(?:"+f.source+")",m),b=o===undefined?4294967295:o>>>0;if(0===b)return[];if(0===d.length)return null===l(y,d)?[d]:[];for(var x=0,w=0,_=[];w1?arguments[1]:undefined,t.length)),r=String(e);return f?f.call(t,r,n):t.slice(n,n+r.length)===r}})},function(e,t,n){"use strict";var r=n(4),o=n(62).trim;r({target:"String",proto:!0,forced:n(134)("trim")},{trim:function(){return o(this)}})},function(e,t,n){"use strict";var r=n(4),o=n(62).end,i=n(134)("trimEnd"),a=i?function(){return o(this)}:"".trimEnd;r({target:"String",proto:!0,forced:i},{trimEnd:a,trimRight:a})},function(e,t,n){"use strict";var r=n(4),o=n(62).start,i=n(134)("trimStart"),a=i?function(){return o(this)}:"".trimStart;r({target:"String",proto:!0,forced:i},{trimStart:a,trimLeft:a})},function(e,t,n){"use strict";var r=n(4),o=n(33);r({target:"String",proto:!0,forced:n(34)("anchor")},{anchor:function(e){return o(this,"a","name",e)}})},function(e,t,n){"use strict";var r=n(4),o=n(33);r({target:"String",proto:!0,forced:n(34)("big")},{big:function(){return o(this,"big","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(33);r({target:"String",proto:!0,forced:n(34)("blink")},{blink:function(){return o(this,"blink","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(33);r({target:"String",proto:!0,forced:n(34)("bold")},{bold:function(){return o(this,"b","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(33);r({target:"String",proto:!0,forced:n(34)("fixed")},{fixed:function(){return o(this,"tt","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(33);r({target:"String",proto:!0,forced:n(34)("fontcolor")},{fontcolor:function(e){return o(this,"font","color",e)}})},function(e,t,n){"use strict";var r=n(4),o=n(33);r({target:"String",proto:!0,forced:n(34)("fontsize")},{fontsize:function(e){return o(this,"font","size",e)}})},function(e,t,n){"use strict";var r=n(4),o=n(33);r({target:"String",proto:!0,forced:n(34)("italics")},{italics:function(){return o(this,"i","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(33);r({target:"String",proto:!0,forced:n(34)("link")},{link:function(e){return o(this,"a","href",e)}})},function(e,t,n){"use strict";var r=n(4),o=n(33);r({target:"String",proto:!0,forced:n(34)("small")},{small:function(){return o(this,"small","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(33);r({target:"String",proto:!0,forced:n(34)("strike")},{strike:function(){return o(this,"strike","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(33);r({target:"String",proto:!0,forced:n(34)("sub")},{sub:function(){return o(this,"sub","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(33);r({target:"String",proto:!0,forced:n(34)("sup")},{sup:function(){return o(this,"sup","","")}})},function(e,t,n){"use strict";n(46)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";var r=n(446);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},function(e,t,n){"use strict";var r=n(18),o=n(12),i=n(120),a=n(119),c=n(53),u=n(13).aTypedArrayConstructor;e.exports=function(e){var t,n,s,l,f,d,p=r(e),h=arguments.length,g=h>1?arguments[1]:undefined,v=g!==undefined,m=i(p);if(m!=undefined&&!a(m))for(d=(f=m.call(p)).next,p=[];!(l=d.call(f)).done;)p.push(l.value);for(v&&h>2&&(g=c(g,arguments[2],2)),n=o(p.length),s=new(u(this))(n),t=0;n>t;t++)s[t]=v?g(p[t],t):p[t];return s}},function(e,t,n){"use strict";n(46)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0)},function(e,t,n){"use strict";n(46)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";var r=n(13),o=n(177),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("copyWithin",(function(e,t){return o.call(i(this),e,t,arguments.length>2?arguments[2]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).every,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(118),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",(function(e){return o.apply(i(this),arguments)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).filter,i=n(45),a=r.aTypedArray,c=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("filter",(function(e){for(var t=o(a(this),e,arguments.length>1?arguments[1]:undefined),n=i(this,this.constructor),r=0,u=t.length,s=new(c(n))(u);u>r;)s[r]=t[r++];return s}))},function(e,t,n){"use strict";var r=n(13),o=n(21).find,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).findIndex,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).forEach,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",(function(e){o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(135);(0,n(13).exportTypedArrayStaticMethod)("from",n(349),r)},function(e,t,n){"use strict";var r=n(13),o=n(69).includes,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(69).indexOf,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(13),i=n(122),a=n(14)("iterator"),c=r.Uint8Array,u=i.values,s=i.keys,l=i.entries,f=o.aTypedArray,d=o.exportTypedArrayMethod,p=c&&c.prototype[a],h=!!p&&("values"==p.name||p.name==undefined),g=function(){return u.call(f(this))};d("entries",(function(){return l.call(f(this))})),d("keys",(function(){return s.call(f(this))})),d("values",g,!h),d(a,g,!h)},function(e,t,n){"use strict";var r=n(13),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=[].join;i("join",(function(e){return a.apply(o(this),arguments)}))},function(e,t,n){"use strict";var r=n(13),o=n(197),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",(function(e){return o.apply(i(this),arguments)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).map,i=n(45),a=r.aTypedArray,c=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",(function(e){return o(a(this),e,arguments.length>1?arguments[1]:undefined,(function(e,t){return new(c(i(e,e.constructor)))(t)}))}))},function(e,t,n){"use strict";var r=n(13),o=n(135),i=r.aTypedArrayConstructor;(0,r.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(i(this))(t);t>e;)n[e]=arguments[e++];return n}),o)},function(e,t,n){"use strict";var r=n(13),o=n(87).left,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",(function(e){return o(i(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(87).right,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",(function(e){return o(i(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=Math.floor;i("reverse",(function(){for(var e,t=o(this).length,n=a(t/2),r=0;r1?arguments[1]:undefined,1),n=this.length,r=a(e),c=o(r.length),s=0;if(c+t>n)throw RangeError("Wrong length");for(;si;)l[i]=n[i++];return l}),i((function(){new Int8Array(1).slice()})))},function(e,t,n){"use strict";var r=n(13),o=n(21).some,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=[].sort;i("sort",(function(e){return a.call(o(this),e)}))},function(e,t,n){"use strict";var r=n(13),o=n(12),i=n(47),a=n(45),c=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",(function(e,t){var n=c(this),r=n.length,u=i(e,r);return new(a(n,n.constructor))(n.buffer,n.byteOffset+u*n.BYTES_PER_ELEMENT,o((t===undefined?r:i(t,r))-u))}))},function(e,t,n){"use strict";var r=n(7),o=n(13),i=n(5),a=r.Int8Array,c=o.aTypedArray,u=o.exportTypedArrayMethod,s=[].toLocaleString,l=[].slice,f=!!a&&i((function(){s.call(new a(1))}));u("toLocaleString",(function(){return s.apply(f?l.call(c(this)):c(this),arguments)}),i((function(){return[1,2].toLocaleString()!=new a([1,2]).toLocaleString()}))||!i((function(){a.prototype.toLocaleString.call([1,2])})))},function(e,t,n){"use strict";var r=n(13).exportTypedArrayMethod,o=n(5),i=n(7).Uint8Array,a=i&&i.prototype||{},c=[].toString,u=[].join;o((function(){c.call({})}))&&(c=function(){return u.call(this)});var s=a.toString!=c;r("toString",c,s)},function(e,t,n){"use strict";var r,o=n(7),i=n(75),a=n(56),c=n(89),u=n(384),s=n(8),l=n(32).enforce,f=n(152),d=!o.ActiveXObject&&"ActiveXObject"in o,p=Object.isExtensible,h=function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}},g=e.exports=c("WeakMap",h,u);if(f&&d){r=u.getConstructor(h,"WeakMap",!0),a.REQUIRED=!0;var v=g.prototype,m=v["delete"],y=v.has,b=v.get,x=v.set;i(v,{"delete":function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),m.call(this,e)||t.frozen["delete"](e)}return m.call(this,e)},has:function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),y.call(this,e)||t.frozen.has(e)}return y.call(this,e)},get:function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),y.call(this,e)?b.call(this,e):t.frozen.get(e)}return b.call(this,e)},set:function(e,t){if(s(e)&&!p(e)){var n=l(this);n.frozen||(n.frozen=new r),y.call(this,e)?x.call(this,e,t):n.frozen.set(e,t)}else x.call(this,e,t);return this}})}},function(e,t,n){"use strict";var r=n(75),o=n(56).getWeakData,i=n(10),a=n(8),c=n(60),u=n(61),s=n(21),l=n(20),f=n(32),d=f.set,p=f.getterFor,h=s.find,g=s.findIndex,v=0,m=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},b=function(e,t){return h(e.entries,(function(e){return e[0]===t}))};y.prototype={get:function(e){var t=b(this,e);if(t)return t[1]},has:function(e){return!!b(this,e)},set:function(e,t){var n=b(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=g(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,s){var f=e((function(e,r){c(e,f,t),d(e,{type:t,id:v++,frozen:undefined}),r!=undefined&&u(r,e[s],e,n)})),h=p(t),g=function(e,t,n){var r=h(e),a=o(i(t),!0);return!0===a?m(r).set(t,n):a[r.id]=n,e};return r(f.prototype,{"delete":function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?m(t)["delete"](e):n&&l(n,t.id)&&delete n[t.id]},has:function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?m(t).has(e):n&&l(n,t.id)}}),r(f.prototype,n?{get:function(e){var t=h(this);if(a(e)){var n=o(e);return!0===n?m(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return g(this,e,t)}}:{add:function(e){return g(this,e,!0)}}),f}}},function(e,t,n){"use strict";n(89)("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),n(384))},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(129);r({global:!0,bind:!0,enumerable:!0,forced:!o.setImmediate||!o.clearImmediate},{setImmediate:i.set,clearImmediate:i.clear})},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(291),a=n(36),c=o.process,u="process"==a(c);r({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){var t=u&&c.domain;i(t?t.bind(e):e)}})},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(84),a=[].slice,c=function(e){return function(t,n){var r=arguments.length>2,o=r?a.call(arguments,2):undefined;return e(r?function(){("function"==typeof t?t:Function(t)).apply(this,o)}:t,n)}};r({global:!0,bind:!0,forced:/MSIE .\./.test(i)},{setTimeout:c(o.setTimeout),setInterval:c(o.setInterval)})},function(e,t,n){"use strict";var r=function(e){var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",i=r.asyncIterator||"@@asyncIterator",a=r.toStringTag||"@@toStringTag";function c(e,t,n,r){var o=t&&t.prototype instanceof l?t:l,i=Object.create(o.prototype),a=new _(r||[]);return i._invoke=function(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return k()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var c=b(a,n);if(c){if(c===s)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=u(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===s)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}(e,n,a),i}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(r){return{type:"throw",arg:r}}}e.wrap=c;var s={};function l(){}function f(){}function d(){}var p={};p[o]=function(){return this};var h=Object.getPrototypeOf,g=h&&h(h(E([])));g&&g!==t&&n.call(g,o)&&(p=g);var v=d.prototype=l.prototype=Object.create(p);function m(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function y(e,t){var r;this._invoke=function(o,i){function a(){return new t((function(r,a){!function c(r,o,i,a){var s=u(e[r],e,o);if("throw"!==s.type){var l=s.arg,f=l.value;return f&&"object"==typeof f&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){c("next",e,i,a)}),(function(e){c("throw",e,i,a)})):t.resolve(f).then((function(e){l.value=e,i(l)}),(function(e){return c("throw",e,i,a)}))}a(s.arg)}(o,i,r,a)}))}return r=r?r.then(a,a):a()}}function b(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator["return"]&&(t.method="return",t.arg=void 0,b(e,t),"throw"===t.method))return s;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return s}var r=u(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,s;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,s):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,s)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function E(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),w(n),s}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;w(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),s}},e}(e.exports);try{regeneratorRuntime=r}catch(o){Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){"use strict";!function(t,n){var r,o,i=t.html5||{},a=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,c=/^(?: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,u=0,s={};function l(){var e=h.elements;return"string"==typeof e?e.split(" "):e}function f(e){var t=s[e._html5shiv];return t||(t={},u++,e._html5shiv=u,s[u]=t),t}function d(e,t,r){return t||(t=n),o?t.createElement(e):(r||(r=f(t)),!(i=r.cache[e]?r.cache[e].cloneNode():c.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e)).canHaveChildren||a.test(e)||i.tagUrn?i:r.frag.appendChild(i));var i}function p(e){e||(e=n);var t=f(e);return!h.shivCSS||r||t.hasCSS||(t.hasCSS=!!function(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x",r.insertBefore(n.lastChild,r.firstChild)}(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),o||function(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return h.shivMethods?d(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/[\w\-:]+/g,(function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'}))+");return n}")(h,t.frag)}(e,t),e}!function(){try{var e=n.createElement("a");e.innerHTML="",r="hidden"in e,o=1==e.childNodes.length||function(){n.createElement("a");var e=n.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(t){r=!0,o=!0}}();var h={elements:i.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:"3.7.3",shivCSS:!1!==i.shivCSS,supportsUnknownElements:o,shivMethods:!1!==i.shivMethods,type:"default",shivDocument:p,createElement:d,createDocumentFragment:function(e,t){if(e||(e=n),o)return e.createDocumentFragment();for(var r=(t=t||f(e)).frag.cloneNode(),i=0,a=l(),c=a.length;i3?c(a):null,b=String(a.key),x=String(a.char),w=a.location,_=a.keyCode||(a.keyCode=b)&&b.charCodeAt(0)||0,E=a.charCode||(a.charCode=x)&&x.charCodeAt(0)||0,k=a.bubbles,S=a.cancelable,C=a.repeat,N=a.locale,A=a.view||e;if(a.which||(a.which=a.keyCode),"initKeyEvent"in d)d.initKeyEvent(t,k,S,A,p,g,h,v,_,E);else if(0>>0),t=Element.prototype,n=t.querySelector,r=t.querySelectorAll;function o(t,n,r){t.setAttribute(e,null);var o=n.call(t,String(r).replace(/(^|,\s*)(:scope([ >]|$))/g,(function(t,n,r,o){return n+"["+e+"]"+(o||" ")})));return t.removeAttribute(e),o}t.querySelector=function(e){return o(this,n,e)},t.querySelectorAll=function(e){return o(this,r,e)}}()}}(window),function(e){var t=e.WeakMap||function(){var e,t=0,n=!1,r=!1;function o(t,o,i){r=i,n=!1,e=undefined,t.dispatchEvent(o)}function i(e){this.value=e}function c(){t++,this.__ce__=new a("@DOMMap:"+t+Math.random())}return i.prototype.handleEvent=function(t){n=!0,r?t.currentTarget.removeEventListener(t.type,this,!1):e=this.value},c.prototype={constructor:c,"delete":function(e){return o(e,this.__ce__,!0),n},get:function(t){o(t,this.__ce__,!1);var n=e;return e=undefined,n},has:function(e){return o(e,this.__ce__,!1),n},set:function(e,t){return o(e,this.__ce__,!0),e.addEventListener(this.__ce__.type,new i(t),!1),this}},c}();function n(){}function r(e,t,n){function o(e){o.once&&(e.currentTarget.removeEventListener(e.type,t,o),o.removed=!0),o.passive&&(e.preventDefault=r.preventDefault),"function"==typeof o.callback?o.callback.call(this,e):o.callback&&o.callback.handleEvent(e),o.passive&&delete e.preventDefault}return o.type=e,o.callback=t,o.capture=!!n.capture,o.passive=!!n.passive,o.once=!!n.once,o.removed=!1,o}n.prototype=(Object.create||Object)(null),r.preventDefault=function(){};var o,i,a=e.CustomEvent,c=e.dispatchEvent,u=e.addEventListener,s=e.removeEventListener,l=0,f=function(){l++},d=[].indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},p=function(e){return"".concat(e.capture?"1":"0",e.passive?"1":"0",e.once?"1":"0")};try{u("_",f,{once:!0}),c(new a("_")),c(new a("_")),s("_",f,{once:!0})}catch(h){}1!==l&&(i=new t,o=function(e){if(e){var t=e.prototype;t.addEventListener=function(e){return function(t,o,a){if(a&&"boolean"!=typeof a){var c,u,s,l=i.get(this),f=p(a);l||i.set(this,l=new n),t in l||(l[t]={handler:[],wrap:[]}),u=l[t],(c=d.call(u.handler,o))<0?(c=u.handler.push(o)-1,u.wrap[c]=s=new n):s=u.wrap[c],f in s||(s[f]=r(t,o,a),e.call(this,t,s[f],s[f].capture))}else e.call(this,t,o,a)}}(t.addEventListener),t.removeEventListener=function(e){return function(t,n,r){if(r&&"boolean"!=typeof r){var o,a,c,u,s=i.get(this);if(s&&t in s&&(c=s[t],-1<(a=d.call(c.handler,n))&&(o=p(r))in(u=c.wrap[a]))){for(o in e.call(this,t,u[o],u[o].capture),delete u[o],u)return;c.handler.splice(a,1),c.wrap.splice(a,1),0===c.handler.length&&delete s[t]}}else e.call(this,t,n,r)}}(t.removeEventListener)}},e.EventTarget?o(EventTarget):(o(e.Text),o(e.Element||e.HTMLElement),o(e.HTMLDocument),o(e.Window||{prototype:e}),o(e.XMLHttpRequest)))}(window)},function(e,t,n){"use strict";!function(e){if("undefined"!=typeof e.setAttribute){var t=function(e){return e.replace(/-[a-z]/g,(function(e){return e[1].toUpperCase()}))};e.setProperty=function(e,n){var r=t(e);if(!n)return this.removeAttribute(r);var o=String(n);return this.setAttribute(r,o)},e.getPropertyValue=function(e){var n=t(e);return this.getAttribute(n)||null},e.removeProperty=function(e){var n=t(e),r=this.getAttribute(n);return this.removeAttribute(n),r}}}(CSSStyleDeclaration.prototype)},function(e,t,n){"use strict";window.Int32Array||(window.Int32Array=Array)},function(e,t,n){"use strict";t.__esModule=!0,t.EventEmitter=void 0;var r=function(){function e(){this.listeners={}}var t=e.prototype;return t.on=function(e,t){this.listeners[e]=this.listeners[e]||[],this.listeners[e].push(t)},t.off=function(e,t){var n=this.listeners[e];if(!n)throw new Error('There is no listeners for "'+e+'"');this.listeners[e]=n.filter((function(e){return e!==t}))},t.emit=function(e){var t=this.listeners[e];if(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;ou&&(o[a]=u-t[a],i=!0)}return[i,o]};t.dragStartHandler=function(e){d.log("drag start"),h=!0,u=[window.screenLeft-e.screenX,window.screenTop-e.screenY],document.addEventListener("mousemove",T),document.addEventListener("mouseup",A),T(e)};var A=function M(e){d.log("drag end"),T(e),document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",M),h=!1,k()},T=function(e){h&&(e.preventDefault(),b((0,o.vecAdd)([e.screenX,e.screenY],u)))};t.resizeStartHandler=function(e,t){return function(n){s=[e,t],d.log("resize start",s),g=!0,u=[window.screenLeft-n.screenX,window.screenTop-n.screenY],l=[window.innerWidth,window.innerHeight],document.addEventListener("mousemove",I),document.addEventListener("mouseup",O),I(n)}};var O=function L(e){d.log("resize end",f),I(e),document.removeEventListener("mousemove",I),document.removeEventListener("mouseup",L),g=!1,k()},I=function(e){g&&(e.preventDefault(),(f=(0,o.vecAdd)(l,(0,o.vecMultiply)(s,(0,o.vecAdd)([e.screenX,e.screenY],(0,o.vecInverse)([window.screenLeft,window.screenTop]),u,[1,1]))))[0]=Math.max(f[0],150),f[1]=Math.max(f[1],50),x(f))}},function(e,t,n){"use strict";t.__esModule=!0,t.focusWindow=t.focusMap=void 0;t.focusMap=function(){Byond.winset("mapwindow.map",{focus:!0})};t.focusWindow=function(){Byond.winset(window.__windowId__,{focus:!0})}},function(e,t,n){"use strict";t.__esModule=!0,t.selectDebug=void 0;t.selectDebug=function(e){return e.debug}},function(e,t,n){"use strict";t.__esModule=!0,t.ButtonInput=t.ButtonConfirm=t.ButtonCheckbox=t.Button=void 0;var r=n(0),o=n(6),i=n(136),a=n(25),c=n(17),u=n(105),s=n(402);function l(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function f(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var d=(0,a.createLogger)("Button"),p=function(e){var t=e.className,n=e.fluid,a=e.icon,l=e.iconRotation,p=e.iconSpin,h=e.color,g=e.disabled,v=e.selected,m=e.tooltip,y=e.tooltipPosition,b=e.ellipsis,x=e.compact,w=e.circular,_=e.content,E=e.children,k=e.onclick,S=e.onClick,C=f(e,["className","fluid","icon","iconRotation","iconSpin","color","disabled","selected","tooltip","tooltipPosition","ellipsis","compact","circular","content","children","onclick","onClick"]),N=!(!_&&!E);return k&&d.warn("Lowercase 'onclick' is not supported on Button and lowercase prop names are discouraged in general. Please use a camelCase'onClick' instead and read: https://infernojs.org/docs/guides/event-handling"),(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.Box,Object.assign({className:(0,o.classes)(["Button",n&&"Button--fluid",g&&"Button--disabled",v&&"Button--selected",N&&"Button--hasContent",b&&"Button--ellipsis",w&&"Button--circular",x&&"Button--compact",h&&"string"==typeof h?"Button--color--"+h:"Button--color--default",t]),tabIndex:!g&&"0",unselectable:Byond.IS_LTE_IE8,onClick:function(e){!g&&S&&S(e)},onKeyDown:function(e){var t=window.event?e.which:e.keyCode;if(t===i.KEY_SPACE||t===i.KEY_ENTER)return e.preventDefault(),void(!g&&S&&S(e));t!==i.KEY_ESCAPE||e.preventDefault()}},C,{children:[a&&(0,r.createComponentVNode)(2,u.Icon,{name:a,rotation:l,spin:p}),_,E,m&&(0,r.createComponentVNode)(2,s.Tooltip,{content:m,position:y})]})))};t.Button=p,p.defaultHooks=o.pureComponentHooks;var h=function(e){var t=e.checked,n=f(e,["checked"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,p,Object.assign({color:"transparent",icon:t?"check-square-o":"square-o",selected:t},n)))};t.ButtonCheckbox=h,p.Checkbox=h;var g=function(e){function t(){var t;return(t=e.call(this)||this).state={clickedOnce:!1},t.handleClick=function(){t.state.clickedOnce&&t.setClickedOnce(!1)},t}l(t,e);var n=t.prototype;return n.setClickedOnce=function(e){var t=this;this.setState({clickedOnce:e}),e?setTimeout((function(){return window.addEventListener("click",t.handleClick)})):window.removeEventListener("click",this.handleClick)},n.render=function(){var e=this,t=this.props,n=t.confirmContent,o=void 0===n?"Confirm?":n,i=t.confirmColor,a=void 0===i?"bad":i,c=t.confirmIcon,u=t.icon,s=t.color,l=t.content,d=t.onClick,h=f(t,["confirmContent","confirmColor","confirmIcon","icon","color","content","onClick"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,p,Object.assign({content:this.state.clickedOnce?o:l,icon:this.state.clickedOnce?c:u,color:this.state.clickedOnce?a:s,onClick:function(){return e.state.clickedOnce?d():e.setClickedOnce(!0)}},h)))},t}(r.Component);t.ButtonConfirm=g,p.Confirm=g;var v=function(e){function t(){var t;return(t=e.call(this)||this).inputRef=(0,r.createRef)(),t.state={inInput:!1},t}l(t,e);var n=t.prototype;return n.setInInput=function(e){if(this.setState({inInput:e}),this.inputRef){var t=this.inputRef.current;if(e){t.value=this.props.currentValue||"";try{t.focus(),t.select()}catch(n){}}}},n.commitResult=function(e){if(this.inputRef){var t=this.inputRef.current;if(""!==t.value)return void this.props.onCommit(e,t.value);if(!this.props.defaultValue)return;this.props.onCommit(e,this.props.defaultValue)}},n.render=function(){var e=this,t=this.props,n=t.fluid,a=t.content,l=t.icon,d=t.iconRotation,p=t.iconSpin,h=t.tooltip,g=t.tooltipPosition,v=t.color,m=void 0===v?"default":v,y=(t.placeholder,t.maxLength,f(t,["fluid","content","icon","iconRotation","iconSpin","tooltip","tooltipPosition","color","placeholder","maxLength"]));return(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.Box,Object.assign({className:(0,o.classes)(["Button",n&&"Button--fluid","Button--color--"+m])},y,{onClick:function(){return e.setInInput(!0)},children:[l&&(0,r.createComponentVNode)(2,u.Icon,{name:l,rotation:d,spin:p}),(0,r.createVNode)(1,"div",null,a,0),(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:this.state.inInput?undefined:"none","text-align":"left"},onBlur:function(t){e.state.inInput&&(e.setInInput(!1),e.commitResult(t))},onKeyDown:function(t){if(t.keyCode===i.KEY_ENTER)return e.setInInput(!1),void e.commitResult(t);t.keyCode===i.KEY_ESCAPE&&e.setInInput(!1)}},null,this.inputRef),h&&(0,r.createComponentVNode)(2,s.Tooltip,{content:h,position:g})]})))},t}(r.Component);t.ButtonInput=v,p.Input=v},function(e,t,n){"use strict";t.__esModule=!0,t.Tooltip=void 0;var r=n(0),o=n(6);t.Tooltip=function(e){var t=e.content,n=e.position,i=void 0===n?"bottom":n,a="string"==typeof t&&t.length>35;return(0,r.createVNode)(1,"div",(0,o.classes)(["Tooltip",a&&"Tooltip--long",i&&"Tooltip--"+i]),null,1,{"data-tooltip":t})}},function(e,t,n){"use strict";t.__esModule=!0,t.Dimmer=void 0;var r=n(0),o=n(6),i=n(17);t.Dimmer=function(e){var t=e.className,n=e.children,a=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Dimmer"].concat(t))},a,{children:(0,r.createVNode)(1,"div","Dimmer__inner",n,0)})))}},function(e,t,n){"use strict";t.__esModule=!0,t.Divider=void 0;var r=n(0),o=n(6);t.Divider=function(e){var t=e.vertical,n=e.hidden;return(0,r.createVNode)(1,"div",(0,o.classes)(["Divider",n&&"Divider--hidden",t?"Divider--vertical":"Divider--horizontal"]))}},function(e,t,n){"use strict";t.__esModule=!0,t.FlexItem=t.computeFlexItemProps=t.Flex=t.computeFlexProps=void 0;var r=n(0),o=n(6),i=n(17);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t=e.className,n=e.direction,r=e.wrap,i=e.align,c=e.justify,u=e.inline,s=e.spacing,l=void 0===s?0:s,f=a(e,["className","direction","wrap","align","justify","inline","spacing"]);return Object.assign({className:(0,o.classes)(["Flex",Byond.IS_LTE_IE10&&("column"===n?"Flex--iefix--column":"Flex--iefix"),u&&"Flex--inline",l>0&&"Flex--spacing--"+l,t]),style:Object.assign({},f.style,{"flex-direction":n,"flex-wrap":r,"align-items":i,"justify-content":c})},f)};t.computeFlexProps=c;var u=function(e){return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({},c(e))))};t.Flex=u,u.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.className,n=e.style,r=e.grow,c=e.order,u=e.shrink,s=e.basis,l=void 0===s?e.width:s,f=e.align,d=a(e,["className","style","grow","order","shrink","basis","align"]);return Object.assign({className:(0,o.classes)(["Flex__item",Byond.IS_LTE_IE10&&"Flex__item--iefix",Byond.IS_LTE_IE10&&r>0&&"Flex__item--iefix--grow",t]),style:Object.assign({},n,{"flex-grow":r,"flex-shrink":u,"flex-basis":(0,i.unit)(l),order:c,"align-self":f})},d)};t.computeFlexItemProps=s;var l=function(e){return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({},s(e))))};t.FlexItem=l,l.defaultHooks=o.pureComponentHooks,u.Item=l},function(e,t,n){"use strict";t.__esModule=!0,t.TableCell=t.TableRow=t.Table=void 0;var r=n(0),o=n(6),i=n(17);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t=e.className,n=e.collapsing,c=e.children,u=a(e,["className","collapsing","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"table",(0,o.classes)(["Table",n&&"Table--collapsing",t,(0,i.computeBoxClassName)(u)]),(0,r.createVNode)(1,"tbody",null,c,0),2,Object.assign({},(0,i.computeBoxProps)(u))))};t.Table=c,c.defaultHooks=o.pureComponentHooks;var u=function(e){var t=e.className,n=e.header,c=a(e,["className","header"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"tr",(0,o.classes)(["Table__row",n&&"Table__row--header",t,(0,i.computeBoxClassName)(e)]),null,1,Object.assign({},(0,i.computeBoxProps)(c))))};t.TableRow=u,u.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.className,n=e.collapsing,c=e.header,u=a(e,["className","collapsing","header"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"td",(0,o.classes)(["Table__cell",n&&"Table__cell--collapsing",c&&"Table__cell--header",t,(0,i.computeBoxClassName)(e)]),null,1,Object.assign({},(0,i.computeBoxProps)(u))))};t.TableCell=s,s.defaultHooks=o.pureComponentHooks,c.Row=u,c.Cell=s},function(e,t,n){"use strict";t.__esModule=!0,t.Input=t.toInputValue=void 0;var r=n(0),o=n(6),i=n(17),a=n(78);function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){return"number"!=typeof e&&"string"!=typeof e?"":String(e)};t.toInputValue=u;var s=function(e){var t,n;function s(){var t;return(t=e.call(this)||this).inputRef=(0,r.createRef)(),t.state={editing:!1},t.handleInput=function(e){var n=t.state.editing,r=t.props.onInput;n||t.setEditing(!0),r&&r(e,e.target.value)},t.handleFocus=function(e){t.state.editing||t.setEditing(!0)},t.handleBlur=function(e){var n=t.state.editing,r=t.props.onChange;n&&(t.setEditing(!1),r&&r(e,e.target.value))},t.handleKeyDown=function(e){var n=t.props,r=n.onInput,o=n.onChange,i=n.onEnter;return e.keyCode===a.KEY_ENTER?(t.setEditing(!1),o&&o(e,e.target.value),r&&r(e,e.target.value),i&&i(e,e.target.value),void(t.props.selfClear?e.target.value="":e.target.blur())):e.keyCode===a.KEY_ESCAPE?(t.setEditing(!1),e.target.value=u(t.props.value),void e.target.blur()):void 0},t}n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var l=s.prototype;return l.componentDidMount=function(){var e=this.props.value,t=this.inputRef.current;t&&(t.value=u(e)),this.props.autoFocus&&setTimeout((function(){return t.focus()}),1)},l.componentDidUpdate=function(e,t){var n=this.state.editing,r=e.value,o=this.props.value,i=this.inputRef.current;i&&!n&&r!==o&&(i.value=u(o))},l.setEditing=function(e){this.setState({editing:e})},l.render=function(){var e=this.props,t=(e.selfClear,e.onInput,e.onChange,e.onEnter,e.value,e.maxLength),n=e.placeholder,a=c(e,["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder"]),u=a.className,s=a.fluid,l=a.monospace,f=c(a,["className","fluid","monospace"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Input",s&&"Input--fluid",l&&"Input--monospace",u])},f,{children:[(0,r.createVNode)(1,"div","Input__baseline",".",16),(0,r.createVNode)(64,"input","Input__input",null,1,{placeholder:n,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,maxLength:t},null,this.inputRef)]})))},s}(r.Component);t.Input=s},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledListDivider=t.LabeledListItem=t.LabeledList=void 0;var r=n(0),o=n(6),i=n(17),a=n(404),c=function(e){var t=e.children;return(0,r.createVNode)(1,"table","LabeledList",t,0)};t.LabeledList=c,c.defaultHooks=o.pureComponentHooks;var u=function(e){var t=e.className,n=e.label,a=e.labelColor,c=void 0===a?"label":a,u=e.color,s=e.textAlign,l=e.buttons,f=e.content,d=e.children;return(0,r.createVNode)(1,"tr",(0,o.classes)(["LabeledList__row",t]),[(0,r.createComponentVNode)(2,i.Box,{as:"td",color:c,className:(0,o.classes)(["LabeledList__cell","LabeledList__label"]),children:n?n+":":null}),(0,r.createComponentVNode)(2,i.Box,{as:"td",color:u,textAlign:s,className:(0,o.classes)(["LabeledList__cell","LabeledList__content"]),colSpan:l?undefined:2,children:[f,d]}),l&&(0,r.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",l,0)],0)};t.LabeledListItem=u,u.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.size?(0,i.unit)(Math.max(0,e.size-1)):0;return(0,r.createVNode)(1,"tr","LabeledList__row",(0,r.createVNode)(1,"td",null,(0,r.createComponentVNode)(2,a.Divider),2,{colSpan:3,style:{"padding-top":t,"padding-bottom":t}}),2)};t.LabeledListDivider=s,s.defaultHooks=o.pureComponentHooks,c.Item=u,c.Divider=s},function(e,t,n){"use strict";t.__esModule=!0,t.Window=void 0;var r=n(0),o=n(6),i=n(22),a=n(19),c=n(2),u=n(1),s=n(38),l=n(138),f=(n(410),n(398)),d=n(25),p=n(142);var h=(0,d.createLogger)("Window"),g=[400,600],v=function(e){var t,n;function u(){return e.apply(this,arguments)||this}n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var d=u.prototype;return d.componentDidMount=function(){var e,t=(0,c.useBackend)(this.context),n=t.config;if(!t.suspended){h.log("mounting");var r=Object.assign({size:g},n.window);this.props.width&&this.props.height&&(r.size=[this.props.width,this.props.height]),(null==(e=n.window)?void 0:e.key)&&(0,f.setWindowKey)(n.window.key),(0,f.recallWindowGeometry)(r)}},d.render=function(){var e,t=this.props,n=t.resizable,u=t.theme,d=t.title,g=t.children,v=(0,c.useBackend)(this.context),m=v.config,b=v.suspended,x=(0,l.useDebug)(this.context).debugLayout,w=(0,i.useDispatch)(this.context),_=null==(e=m.window)?void 0:e.fancy,E=m.user&&(m.user.observer?m.status=0||(o[n]=e[n]);return o}(e,["className","fitted","children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,p.Layout.Content,Object.assign({className:(0,o.classes)(["Window__content",t])},a,{children:n&&i||(0,r.createVNode)(1,"div","Window__contentPadding",i,0)})))};var m=function(e){switch(e){case s.UI_INTERACTIVE:return"good";case s.UI_UPDATE:return"average";case s.UI_DISABLED:default:return"bad"}},y=function(e,t){var n=e.className,c=e.title,s=e.status,l=e.fancy,f=e.onDragStart,d=e.onClose;(0,i.useDispatch)(t);return(0,r.createVNode)(1,"div",(0,o.classes)(["TitleBar",n]),[s===undefined&&(0,r.createComponentVNode)(2,u.Icon,{className:"TitleBar__statusIcon",name:"tools",opacity:.5})||(0,r.createComponentVNode)(2,u.Icon,{className:"TitleBar__statusIcon",color:m(s),name:"eye"}),(0,r.createVNode)(1,"div","TitleBar__title","string"==typeof c&&c===c.toLowerCase()&&(0,a.toTitleCase)(c)||c,0),(0,r.createVNode)(1,"div","TitleBar__dragZone",null,1,{onMousedown:function(e){return l&&f(e)}}),!1,!!l&&(0,r.createVNode)(1,"div","TitleBar__close TitleBar__clickable",Byond.IS_LTE_IE8?"x":"\xd7",0,{onclick:d})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.openExternalBrowser=t.toggleDebugLayout=t.toggleKitchenSink=void 0;var r=n(22),o=(0,r.createAction)("debug/toggleKitchenSink");t.toggleKitchenSink=o;var i=(0,r.createAction)("debug/toggleDebugLayout");t.toggleDebugLayout=i;var a=(0,r.createAction)("debug/openExternalBrowser");t.openExternalBrowser=a},,,,function(e,t,n){"use strict";t.__esModule=!0,t.createUuid=void 0;t.createUuid=function(){var e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===t?n:3&n|8).toString(16)}))}},,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var r=n(21).forEach,o=n(44),i=n(29),a=o("forEach"),c=i("forEach");e.exports=a&&c?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}},function(e,t,n){"use strict";var r=n(53),o=n(18),i=n(188),a=n(119),c=n(12),u=n(54),s=n(120);e.exports=function(e){var t,n,l,f,d,p,h=o(e),g="function"==typeof this?this:Array,v=arguments.length,m=v>1?arguments[1]:undefined,y=m!==undefined,b=s(h),x=0;if(y&&(m=r(m,v>2?arguments[2]:undefined,2)),b==undefined||g==Array&&a(b))for(n=new g(t=c(h.length));t>x;x++)p=y?m(h[x],x):h[x],u(n,x,p);else for(d=(f=b.call(h)).next,n=new g;!(l=d.call(f)).done;x++)p=y?i(f,m,[l.value,x],!0):l.value,u(n,x,p);return n.length=x,n}},function(e,t,n){"use strict";var r=Math.abs,o=Math.pow,i=Math.floor,a=Math.log,c=Math.LN2;e.exports={pack:function(e,t,n){var u,s,l,f=new Array(n),d=8*n-t-1,p=(1<>1,g=23===t?o(2,-24)-o(2,-77):0,v=e<0||0===e&&1/e<0?1:0,m=0;for((e=r(e))!=e||e===1/0?(s=e!=e?1:0,u=p):(u=i(a(e)/c),e*(l=o(2,-u))<1&&(u--,l*=2),(e+=u+h>=1?g/l:g*o(2,1-h))*l>=2&&(u++,l/=2),u+h>=p?(s=0,u=p):u+h>=1?(s=(e*l-1)*o(2,t),u+=h):(s=e*o(2,h-1)*o(2,t),u=0));t>=8;f[m++]=255&s,s/=256,t-=8);for(u=u<0;f[m++]=255&u,u/=256,d-=8);return f[--m]|=128*v,f},unpack:function(e,t){var n,r=e.length,i=8*r-t-1,a=(1<>1,u=i-7,s=r-1,l=e[s--],f=127&l;for(l>>=7;u>0;f=256*f+e[s],s--,u-=8);for(n=f&(1<<-u)-1,f>>=-u,u+=t;u>0;n=256*n+e[s],s--,u-=8);if(0===f)f=1-c;else{if(f===a)return n?NaN:l?-1/0:1/0;n+=o(2,t),f-=c}return(l?-1:1)*n*o(2,f-t)}}},function(e,t,n){"use strict";var r=n(5),o=n(126).start,i=Math.abs,a=Date.prototype,c=a.getTime,u=a.toISOString;e.exports=r((function(){return"0385-07-25T07:06:39.999Z"!=u.call(new Date(-50000000000001))}))||!r((function(){u.call(new Date(NaN))}))?function(){if(!isFinite(c.call(this)))throw RangeError("Invalid time value");var e=this.getUTCFullYear(),t=this.getUTCMilliseconds(),n=e<0?"-":e>9999?"+":"";return n+o(i(e),n?6:4,0)+"-"+o(this.getUTCMonth()+1,2,0)+"-"+o(this.getUTCDate(),2,0)+"T"+o(this.getUTCHours(),2,0)+":"+o(this.getUTCMinutes(),2,0)+":"+o(this.getUTCSeconds(),2,0)+"."+o(t,3,0)+"Z"}:u},function(e,t,n){"use strict";var r=n(10),o=n(39);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return o(r(this),"number"!==e)}},function(e,t,n){"use strict";var r=n(128),o=Math.abs,i=Math.pow,a=i(2,-52),c=i(2,-23),u=i(2,127)*(2-c),s=i(2,-126);e.exports=Math.fround||function(e){var t,n,i=o(e),l=r(e);return iu||n!=n?l*Infinity:l*n}},function(e,t,n){"use strict";var r=n(7).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&r(e)}},function(e,t,n){"use strict";var r=n(7),o=n(62).trim,i=n(92),a=r.parseFloat,c=1/a(i+"-0")!=-Infinity;e.exports=c?function(e){var t=o(String(e)),n=a(t);return 0===n&&"-"==t.charAt(0)?-0:n}:a},function(e,t,n){"use strict";var r=n(36);e.exports=function(e){if("number"!=typeof e&&"Number"!=r(e))throw TypeError("Incorrect invocation");return+e}},function(e,t,n){"use strict";var r=n(9),o=n(5),i=n(71),a=n(115),c=n(82),u=n(18),s=n(66),l=Object.assign,f=Object.defineProperty;e.exports=!l||o((function(){if(r&&1!==l({b:1},l(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=l({},e)[n]||"abcdefghijklmnopqrst"!=i(l({},t)).join("")}))?function(e,t){for(var n=u(e),o=arguments.length,l=1,f=a.f,d=c.f;o>l;)for(var p,h=s(arguments[l++]),g=f?i(h).concat(f(h)):i(h),v=g.length,m=0;v>m;)p=g[m++],r&&!d.call(h,p)||(n[p]=h[p]);return n}:l},function(e,t,n){"use strict";var r=n(121),o=n(85);e.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},function(e,t,n){"use strict";var r=n(7);e.exports=function(e,t){var n=r.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},function(e,t,n){"use strict";var r=n(37);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},function(e,t,n){"use strict";t.__esModule=!0,t._CI=Ae,t._HI=B,t._M=Te,t._MCCC=Le,t._ME=Ie,t._MFCC=Ve,t._MP=Ce,t._MR=ye,t.__render=je,t.createComponentVNode=function(e,t,n,r,o){var a=new T(1,null,null,e=function(e,t){if(12&e)return e;if(t.prototype&&t.prototype.render)return 4;if(t.render)return 32776;return 8}(e,t),r,function(e,t,n){var r=(32768&e?t.render:t).defaultProps;if(i(r))return n;if(i(n))return l(r,null);return N(n,r)}(e,t,n),function(e,t,n){if(4&e)return n;var r=(32768&e?t.render:t).defaultHooks;if(i(r))return n;if(i(n))return r;return N(n,r)}(e,t,o),t);k.createVNode&&k.createVNode(a);return a},t.createFragment=M,t.createPortal=function(e,t){var n=B(e);return O(1024,1024,null,n,0,null,n.key,t)},t.createRef=function(){return{current:null}},t.createRenderer=function(e){return function(t,n,r,o){e||(e=t),Fe(n,e,r,o)}},t.createTextVNode=I,t.createVNode=O,t.directClone=L,t.findDOMfromVNode=b,t.forwardRef=function(e){return{render:e}},t.getFlagsForElementVnode=function(e){switch(e){case"svg":return 32;case"input":return 64;case"select":return 256;case"textarea":return 128;case"$F":return 8192;default:return 1}},t.linkEvent=function(e,t){if(c(t))return{data:e,event:t};return null},t.normalizeProps=function(e){var t=e.props;if(t){var n=e.flags;481&n&&(void 0!==t.children&&i(e.children)&&P(e,t.children),void 0!==t.className&&(e.className=t.className||null,t.className=undefined)),void 0!==t.key&&(e.key=t.key,t.key=undefined),void 0!==t.ref&&(e.ref=8&n?l(e.ref,t.ref):t.ref,t.ref=undefined)}return e},t.render=Fe,t.rerender=He,t.version=t.options=t.Fragment=t.EMPTY_OBJ=t.Component=void 0;var r=Array.isArray;function o(e){var t=typeof e;return"string"===t||"number"===t}function i(e){return null==e}function a(e){return null===e||!1===e||!0===e||void 0===e}function c(e){return"function"==typeof e}function u(e){return"string"==typeof e}function s(e){return null===e}function l(e,t){var n={};if(e)for(var r in e)n[r]=e[r];if(t)for(var o in t)n[o]=t[o];return n}function f(e){return!s(e)&&"object"==typeof e}var d={};t.EMPTY_OBJ=d;function p(e){return e.substr(2).toLowerCase()}function h(e,t){e.appendChild(t)}function g(e,t,n){s(n)?h(e,t):e.insertBefore(t,n)}function v(e,t){e.removeChild(t)}function m(e){for(var t=0;t0,h=s(d),g=u(d)&&"$"===d[0];p||h||g?(n=n||t.slice(0,l),(p||g)&&(f=L(f)),(h||g)&&(f.key="$"+l),n.push(f)):n&&n.push(f),f.flags|=65536}}i=0===(n=n||t).length?1:8}else(n=t).flags|=65536,81920&t.flags&&(n=L(t)),i=2;return e.children=n,e.childFlags=i,e}function B(e){return a(e)||o(e)?I(e,null):r(e)?M(e,0,null):16384&e.flags?L(e):e}var D="http://www.w3.org/1999/xlink",j="http://www.w3.org/XML/1998/namespace",F={"xlink:actuate":D,"xlink:arcrole":D,"xlink:href":D,"xlink:role":D,"xlink:show":D,"xlink:title":D,"xlink:type":D,"xml:base":j,"xml:lang":j,"xml:space":j};function K(e){return{onClick:e,onDblClick:e,onFocusIn:e,onFocusOut:e,onKeyDown:e,onKeyPress:e,onKeyUp:e,onMouseDown:e,onMouseMove:e,onMouseUp:e,onTouchEnd:e,onTouchMove:e,onTouchStart:e}}var z=K(0),Y=K(null),U=K(!0);function $(e,t){var n=t.$EV;return n||(n=t.$EV=K(null)),n[e]||1==++z[e]&&(Y[e]=function(e){var t="onClick"===e||"onDblClick"===e?function(e){return function(t){0===t.button?W(t,!0,e,Z(t)):t.stopPropagation()}}(e):function(e){return function(t){W(t,!1,e,Z(t))}}(e);return document.addEventListener(p(e),t),t}(e)),n}function H(e,t){var n=t.$EV;n&&n[e]&&(0==--z[e]&&(document.removeEventListener(p(e),Y[e]),Y[e]=null),n[e]=null)}function W(e,t,n,r){var o=function(e){return c(e.composedPath)?e.composedPath()[0]:e.target}(e);do{if(t&&o.disabled)return;var i=o.$EV;if(i){var a=i[n];if(a&&(r.dom=o,a.event?a.event(a.data,e):a(e),e.cancelBubble))return}o=o.parentNode}while(!s(o))}function q(){this.cancelBubble=!0,this.immediatePropagationStopped||this.stopImmediatePropagation()}function G(){return this.defaultPrevented}function X(){return this.cancelBubble}function Z(e){var t={dom:document};return e.isDefaultPrevented=G,e.isPropagationStopped=X,e.stopPropagation=q,Object.defineProperty(e,"currentTarget",{configurable:!0,get:function(){return t.dom}}),t}function Q(e,t,n){if(e[t]){var r=e[t];r.event?r.event(r.data,n):r(n)}else{var o=t.toLowerCase();e[o]&&e[o](n)}}function J(e,t){var n=function(n){var r=this.$V;if(r){var o=r.props||d,i=r.dom;if(u(e))Q(o,e,n);else for(var a=0;a-1&&t.options[a]&&(c=t.options[a].value),n&&i(c)&&(c=e.defaultValue),ae(r,c)}}var se,le,fe=J("onInput",pe),de=J("onChange");function pe(e,t,n){var r=e.value,o=t.value;if(i(r)){if(n){var a=e.defaultValue;i(a)||a===o||(t.defaultValue=a,t.value=a)}}else o!==r&&(t.defaultValue=r,t.value=r)}function he(e,t,n,r,o,i){64&e?ie(r,n):256&e?ue(r,n,o,t):128&e&&pe(r,n,o),i&&(n.$V=t)}function ge(e,t,n){64&e?function(e,t){te(t.type)?(ee(e,"change",re),ee(e,"click",oe)):ee(e,"input",ne)}(t,n):256&e?function(e){ee(e,"change",ce)}(t):128&e&&function(e,t){ee(e,"input",fe),t.onChange&&ee(e,"change",de)}(t,n)}function ve(e){return e.type&&te(e.type)?!i(e.checked):!i(e.value)}function me(e){e&&!A(e,null)&&e.current&&(e.current=null)}function ye(e,t,n){e&&(c(e)||void 0!==e.current)&&n.push((function(){A(e,t)||void 0===e.current||(e.current=t)}))}function be(e,t){xe(e),x(e,t)}function xe(e){var t,n=e.flags,r=e.children;if(481&n){t=e.ref;var o=e.props;me(t);var a=e.childFlags;if(!s(o))for(var u=Object.keys(o),l=0,f=u.length;l0;for(var c in a&&(i=ve(n))&&ge(t,r,n),n)Se(c,null,n[c],r,o,i,null);a&&he(t,e,r,n,!0,i)}function Ne(e,t,n){var r=B(e.render(t,e.state,n)),o=n;return c(e.getChildContext)&&(o=l(n,e.getChildContext())),e.$CX=o,r}function Ae(e,t,n,r,o,i){var a=new t(n,r),u=a.$N=Boolean(t.getDerivedStateFromProps||a.getSnapshotBeforeUpdate);if(a.$SVG=o,a.$L=i,e.children=a,a.$BS=!1,a.context=r,a.props===d&&(a.props=n),u)a.state=_(a,n,a.state);else if(c(a.componentWillMount)){a.$BR=!0,a.componentWillMount();var l=a.$PS;if(!s(l)){var f=a.state;if(s(f))a.state=l;else for(var p in l)f[p]=l[p];a.$PS=null}a.$BR=!1}return a.$LI=Ne(a,n,r),a}function Te(e,t,n,r,o,i){var a=e.flags|=16384;481&a?Ie(e,t,n,r,o,i):4&a?function(e,t,n,r,o,i){var a=Ae(e,e.type,e.props||d,n,r,i);Te(a.$LI,t,a.$CX,r,o,i),Le(e.ref,a,i)}(e,t,n,r,o,i):8&a?(!function(e,t,n,r,o,i){Te(e.children=B(function(e,t){return 32768&e.flags?e.type.render(e.props||d,e.ref,t):e.type(e.props||d,t)}(e,n)),t,n,r,o,i)}(e,t,n,r,o,i),Ve(e,i)):512&a||16&a?Oe(e,t,o):8192&a?function(e,t,n,r,o,i){var a=e.children,c=e.childFlags;12&c&&0===a.length&&(c=e.childFlags=2,a=e.children=V());2===c?Te(a,n,o,r,o,i):Me(a,n,t,r,o,i)}(e,n,t,r,o,i):1024&a&&function(e,t,n,r,o){Te(e.children,e.ref,t,!1,null,o);var i=V();Oe(i,n,r),e.dom=i.dom}(e,n,t,o,i)}function Oe(e,t,n){var r=e.dom=document.createTextNode(e.children);s(t)||g(t,r,n)}function Ie(e,t,n,r,o,a){var c=e.flags,u=e.props,l=e.className,f=e.children,d=e.childFlags,p=e.dom=function(e,t){return t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e)}(e.type,r=r||(32&c)>0);if(i(l)||""===l||(r?p.setAttribute("class",l):p.className=l),16===d)S(p,f);else if(1!==d){var h=r&&"foreignObject"!==e.type;2===d?(16384&f.flags&&(e.children=f=L(f)),Te(f,p,n,h,null,a)):8!==d&&4!==d||Me(f,p,n,h,null,a)}s(t)||g(t,p,o),s(u)||Ce(e,c,u,p,r),ye(e.ref,p,a)}function Me(e,t,n,r,o,i){for(var a=0;a0,s!==l){var h=s||d;if((c=l||d)!==d)for(var g in(f=(448&o)>0)&&(p=ve(c)),c){var v=h[g],m=c[g];v!==m&&Se(g,v,m,u,r,p,e)}if(h!==d)for(var y in h)i(c[y])&&!i(h[y])&&Se(y,h[y],null,u,r,p,e)}var b=t.children,x=t.className;e.className!==x&&(i(x)?u.removeAttribute("class"):r?u.setAttribute("class",x):u.className=x);4096&o?function(e,t){e.textContent!==t&&(e.textContent=t)}(u,b):Pe(e.childFlags,t.childFlags,e.children,b,u,n,r&&"foreignObject"!==t.type,null,e,a);f&&he(o,t,u,c,!1,p);var w=t.ref,_=e.ref;_!==w&&(me(_),ye(w,u,a))}(e,t,r,o,p,f):4&p?function(e,t,n,r,o,i,a){var u=t.children=e.children;if(s(u))return;u.$L=a;var f=t.props||d,p=t.ref,h=e.ref,g=u.state;if(!u.$N){if(c(u.componentWillReceiveProps)){if(u.$BR=!0,u.componentWillReceiveProps(f,r),u.$UN)return;u.$BR=!1}s(u.$PS)||(g=l(g,u.$PS),u.$PS=null)}Be(u,g,f,n,r,o,!1,i,a),h!==p&&(me(h),ye(p,u,a))}(e,t,n,r,o,u,f):8&p?function(e,t,n,r,o,a,u){var s=!0,l=t.props||d,f=t.ref,p=e.props,h=!i(f),g=e.children;h&&c(f.onComponentShouldUpdate)&&(s=f.onComponentShouldUpdate(p,l));if(!1!==s){h&&c(f.onComponentWillUpdate)&&f.onComponentWillUpdate(p,l);var v=t.type,m=B(32768&t.flags?v.render(l,f,r):v(l,r));Re(g,m,n,r,o,a,u),t.children=m,h&&c(f.onComponentDidUpdate)&&f.onComponentDidUpdate(p,l)}else t.children=g}(e,t,n,r,o,u,f):16&p?function(e,t){var n=t.children,r=t.dom=e.dom;n!==e.children&&(r.nodeValue=n)}(e,t):512&p?t.dom=e.dom:8192&p?function(e,t,n,r,o,i){var a=e.children,c=t.children,u=e.childFlags,s=t.childFlags,l=null;12&s&&0===c.length&&(s=t.childFlags=2,c=t.children=V());var f=0!=(2&s);if(12&u){var d=a.length;(8&u&&8&s||f||!f&&c.length>d)&&(l=b(a[d-1],!1).nextSibling)}Pe(u,s,a,c,n,r,o,l,e,i)}(e,t,n,r,o,f):function(e,t,n,r){var o=e.ref,i=t.ref,c=t.children;if(Pe(e.childFlags,t.childFlags,e.children,c,o,n,!1,null,e,r),t.dom=e.dom,o!==i&&!a(c)){var u=c.dom;v(o,u),h(i,u)}}(e,t,r,f)}function Pe(e,t,n,r,o,i,a,c,u,s){switch(e){case 2:switch(t){case 2:Re(n,r,o,i,a,c,s);break;case 1:be(n,o);break;case 16:xe(n),S(o,r);break;default:!function(e,t,n,r,o,i){xe(e),Me(t,n,r,o,b(e,!0),i),x(e,n)}(n,r,o,i,a,s)}break;case 1:switch(t){case 2:Te(r,o,i,a,c,s);break;case 1:break;case 16:S(o,r);break;default:Me(r,o,i,a,c,s)}break;case 16:switch(t){case 16:!function(e,t,n){e!==t&&(""!==e?n.firstChild.nodeValue=t:S(n,t))}(n,r,o);break;case 2:_e(o),Te(r,o,i,a,c,s);break;case 1:_e(o);break;default:_e(o),Me(r,o,i,a,c,s)}break;default:switch(t){case 16:we(n),S(o,r);break;case 2:Ee(o,u,n),Te(r,o,i,a,c,s);break;case 1:Ee(o,u,n);break;default:var l=0|n.length,f=0|r.length;0===l?f>0&&Me(r,o,i,a,c,s):0===f?Ee(o,u,n):8===t&&8===e?function(e,t,n,r,o,i,a,c,u,s){var l,f,d=i-1,p=a-1,h=0,g=e[h],v=t[h];e:{for(;g.key===v.key;){if(16384&v.flags&&(t[h]=v=L(v)),Re(g,v,n,r,o,c,s),e[h]=v,++h>d||h>p)break e;g=e[h],v=t[h]}for(g=e[d],v=t[p];g.key===v.key;){if(16384&v.flags&&(t[p]=v=L(v)),Re(g,v,n,r,o,c,s),e[d]=v,d--,p--,h>d||h>p)break e;g=e[d],v=t[p]}}if(h>d){if(h<=p)for(f=(l=p+1)p)for(;h<=d;)be(e[h++],n);else!function(e,t,n,r,o,i,a,c,u,s,l,f,d){var p,h,g,v=0,m=c,y=c,x=i-c+1,_=a-c+1,E=new Int32Array(_+1),k=x===r,S=!1,C=0,N=0;if(o<4||(x|_)<32)for(v=m;v<=i;++v)if(p=e[v],N<_){for(c=y;c<=a;c++)if(h=t[c],p.key===h.key){if(E[c-y]=v+1,k)for(k=!1;mc?S=!0:C=c,16384&h.flags&&(t[c]=h=L(h)),Re(p,h,u,n,s,l,d),++N;break}!k&&c>a&&be(p,u)}else k||be(p,u);else{var A={};for(v=y;v<=a;++v)A[t[v].key]=v;for(v=m;v<=i;++v)if(p=e[v],N<_)if(void 0!==(c=A[p.key])){if(k)for(k=!1;v>m;)be(e[m++],u);E[c-y]=v+1,C>c?S=!0:C=c,16384&(h=t[c]).flags&&(t[c]=h=L(h)),Re(p,h,u,n,s,l,d),++N}else k||be(p,u);else k||be(p,u)}if(k)Ee(u,f,e),Me(t,u,n,s,l,d);else if(S){var T=function(e){var t=0,n=0,r=0,o=0,i=0,a=0,c=0,u=e.length;u>De&&(De=u,se=new Int32Array(u),le=new Int32Array(u));for(;n>1]]0&&(le[n]=se[i-1]),se[i]=n)}i=o+1;var s=new Int32Array(i);a=se[i-1];for(;i-- >0;)s[i]=a,a=le[a],se[i]=0;return s}(E);for(c=T.length-1,v=_-1;v>=0;v--)0===E[v]?(16384&(h=t[C=v+y]).flags&&(t[C]=h=L(h)),Te(h,u,n,s,(g=C+1)=0;v--)0===E[v]&&(16384&(h=t[C=v+y]).flags&&(t[C]=h=L(h)),Te(h,u,n,s,(g=C+1)a?a:i,d=0;da)for(d=f;d1)for(var n=1;n=0||(o[n]=e[n]);return o}(e,["className"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["BlockQuote",t])},n)))}},function(e,t,n){"use strict";var r,o;t.__esModule=!0,t.VNodeFlags=t.ChildFlags=void 0,t.VNodeFlags=r,function(e){e[e.HtmlElement=1]="HtmlElement",e[e.ComponentUnknown=2]="ComponentUnknown",e[e.ComponentClass=4]="ComponentClass",e[e.ComponentFunction=8]="ComponentFunction",e[e.Text=16]="Text",e[e.SvgElement=32]="SvgElement",e[e.InputElement=64]="InputElement",e[e.TextareaElement=128]="TextareaElement",e[e.SelectElement=256]="SelectElement",e[e.Void=512]="Void",e[e.Portal=1024]="Portal",e[e.ReCreate=2048]="ReCreate",e[e.ContentEditable=4096]="ContentEditable",e[e.Fragment=8192]="Fragment",e[e.InUse=16384]="InUse",e[e.ForwardRef=32768]="ForwardRef",e[e.Normalized=65536]="Normalized",e[e.ForwardRefComponent=32776]="ForwardRefComponent",e[e.FormElement=448]="FormElement",e[e.Element=481]="Element",e[e.Component=14]="Component",e[e.DOMRef=2033]="DOMRef",e[e.InUseOrNormalized=81920]="InUseOrNormalized",e[e.ClearInUse=-16385]="ClearInUse",e[e.ComponentKnown=12]="ComponentKnown"}(r||(t.VNodeFlags=r={})),t.ChildFlags=o,function(e){e[e.UnknownChildren=0]="UnknownChildren",e[e.HasInvalidChildren=1]="HasInvalidChildren",e[e.HasVNodeChildren=2]="HasVNodeChildren",e[e.HasNonKeyedChildren=4]="HasNonKeyedChildren",e[e.HasKeyedChildren=8]="HasKeyedChildren",e[e.HasTextChildren=16]="HasTextChildren",e[e.MultipleChildren=12]="MultipleChildren"}(o||(t.ChildFlags=o={}))},function(e,t,n){"use strict";t.__esModule=!0,t.ByondUi=void 0;var r=n(0),o=n(6),i=n(467),a=n(25),c=n(17);function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var s=(0,a.createLogger)("ByondUi"),l=[];window.addEventListener("beforeunload",(function(){for(var e=0;e=0||(o[n]=e[n]);return o}(t,["data","rangeX","rangeY","fillColor","strokeColor","strokeWidth"]),v=this.state.viewBox,m=function(e,t,n,r){if(0===e.length)return[];var i=(0,o.zipWith)(Math.min).apply(void 0,e),a=(0,o.zipWith)(Math.max).apply(void 0,e);return n!==undefined&&(i[0]=n[0],a[0]=n[1]),r!==undefined&&(i[1]=r[0],a[1]=r[1]),(0,o.map)((function(e){return(0,o.zipWith)((function(e,t,n,r){return(e-t)/(n-t)*r}))(e,i,a,t)}))(e)}(i,v,c,u);if(m.length>0){var y=m[0],b=m[m.length-1];m.push([v[0]+h,b[1]]),m.push([v[0]+h,-h]),m.push([-h,-h]),m.push([-h,y[1]])}var x=function(e){for(var t="",n=0;n=0||(o[n]=e[n]);return o}(t,["children","color","title","buttons"]);return(0,r.createComponentVNode)(2,o.Box,{mb:1,children:[(0,r.createVNode)(1,"div","Table",[(0,r.createVNode)(1,"div","Table__cell",(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Button,Object.assign({fluid:!0,color:u,icon:n?"chevron-down":"chevron-right",onClick:function(){return e.setState({open:!n})}},f,{children:s}))),2),l&&(0,r.createVNode)(1,"div","Table__cell Table__cell--collapsing",l,0)],0),n&&(0,r.createComponentVNode)(2,o.Box,{mt:1,children:a})]})},a}(r.Component);t.Collapsible=a},function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var r=n(0),o=n(6),i=n(17);var a=function(e){var t=e.content,n=(e.children,e.className),a=e.color,c=e.backgroundColor,u=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["content","children","className","color","backgroundColor"]);return u.color=t?null:"transparent",u.backgroundColor=a||c,(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["ColorBox",n,(0,i.computeBoxClassName)(u)]),t||".",0,Object.assign({},(0,i.computeBoxProps)(u))))};t.ColorBox=a,a.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var r=n(0),o=n(6),i=n(17),a=n(105);function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){var t,n;function u(t){var n;return(n=e.call(this,t)||this).state={selected:t.selected,open:!1},n.handleClick=function(){n.state.open&&n.setOpen(!1)},n}n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var s=u.prototype;return s.componentWillUnmount=function(){window.removeEventListener("click",this.handleClick)},s.setOpen=function(e){var t=this;this.setState({open:e}),e?(setTimeout((function(){return window.addEventListener("click",t.handleClick)})),this.menuRef.focus()):window.removeEventListener("click",this.handleClick)},s.setSelected=function(e){this.setState({selected:e}),this.setOpen(!1),this.props.onSelected(e)},s.buildMenu=function(){var e=this,t=this.props.options,n=(void 0===t?[]:t).map((function(t){return(0,r.createComponentVNode)(2,i.Box,{className:"Dropdown__menuentry",onClick:function(){e.setSelected(t)},children:t},t)}));return n.length?n:"No Options Found"},s.render=function(){var e=this,t=this.props,n=t.color,u=void 0===n?"default":n,s=t.over,l=t.noscroll,f=t.nochevron,d=t.width,p=(t.onClick,t.selected,t.disabled),h=c(t,["color","over","noscroll","nochevron","width","onClick","selected","disabled"]),g=h.className,v=c(h,["className"]),m=s?!this.state.open:this.state.open,y=this.state.open?(0,r.createVNode)(1,"div",(0,o.classes)([l?"Dropdown__menu-noscroll":"Dropdown__menu",s&&"Dropdown__over"]),this.buildMenu(),0,{tabIndex:"-1",style:{width:d}},null,(function(t){e.menuRef=t})):null;return(0,r.createVNode)(1,"div","Dropdown",[(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({width:d,className:(0,o.classes)(["Dropdown__control","Button","Button--color--"+u,p&&"Button--disabled",g])},v,{onClick:function(){p&&!e.state.open||e.setOpen(!e.state.open)},children:[(0,r.createVNode)(1,"span","Dropdown__selected-text",this.state.selected,0),!!f||(0,r.createVNode)(1,"span","Dropdown__arrow-button",(0,r.createComponentVNode)(2,a.Icon,{name:m?"chevron-up":"chevron-down"}),2)]}))),y],0)},u}(r.Component);t.Dropdown=u},function(e,t,n){"use strict";t.__esModule=!0,t.GridColumn=t.Grid=void 0;var r=n(0),o=n(406),i=n(6);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t=e.children,n=a(e,["children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Table,Object.assign({},n,{children:(0,r.createComponentVNode)(2,o.Table.Row,{children:t})})))};t.Grid=c,c.defaultHooks=i.pureComponentHooks;var u=function(e){var t=e.size,n=void 0===t?1:t,i=e.style,c=a(e,["size","style"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Table.Cell,Object.assign({style:Object.assign({width:n+"%"},i)},c)))};t.GridColumn=u,c.defaultHooks=i.pureComponentHooks,c.Column=u},function(e,t,n){"use strict";t.__esModule=!0,t.Knob=void 0;var r=n(0),o=n(11),i=n(6),a=n(17),c=n(140),u=n(141);t.Knob=function(e){if(Byond.IS_LTE_IE8)return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,s=e.maxValue,l=e.minValue,f=e.onChange,d=e.onDrag,p=e.step,h=e.stepPixelSize,g=e.suppressFlicker,v=e.unit,m=e.value,y=e.className,b=e.style,x=e.fillValue,w=e.color,_=e.ranges,E=void 0===_?{}:_,k=e.size,S=void 0===k?1:k,C=e.bipolar,N=(e.children,function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["animated","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","style","fillValue","color","ranges","size","bipolar","children"]));return(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[0,-1]},{animated:t,format:n,maxValue:s,minValue:l,onChange:f,onDrag:d,step:p,stepPixelSize:h,suppressFlicker:g,unit:v,value:m},{children:function(e){var t=e.dragging,n=(e.editing,e.value),c=e.displayValue,u=e.displayElement,f=e.inputElement,d=e.handleDragStart,p=(0,o.scale)(null!=x?x:c,l,s),h=(0,o.scale)(c,l,s),g=w||(0,o.keyOfMatchingRange)(null!=x?x:n,E)||"default",v=270*(h-.5);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["Knob","Knob--color--"+g,C&&"Knob--bipolar",y,(0,a.computeBoxClassName)(N)]),[(0,r.createVNode)(1,"div","Knob__circle",(0,r.createVNode)(1,"div","Knob__cursorBox",(0,r.createVNode)(1,"div","Knob__cursor"),2,{style:{transform:"rotate("+v+"deg)"}}),2),t&&(0,r.createVNode)(1,"div","Knob__popupValue",u,0),(0,r.createVNode)(32,"svg","Knob__ring Knob__ringTrackPivot",(0,r.createVNode)(32,"circle","Knob__ringTrack",null,1,{cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),(0,r.createVNode)(32,"svg","Knob__ring Knob__ringFillPivot",(0,r.createVNode)(32,"circle","Knob__ringFill",null,1,{style:{"stroke-dashoffset":((C?2.75:2)-1.5*p)*Math.PI*50},cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),f],0,Object.assign({},(0,a.computeBoxProps)(Object.assign({style:Object.assign({"font-size":S+"em"},b)},N)),{onMouseDown:d})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledControls=void 0;var r=n(0),o=n(405);function i(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var a=function(e){var t=e.children,n=i(e,["children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Flex,Object.assign({mx:-.5,align:"stretch",justify:"space-between"},n,{children:t})))};t.LabeledControls=a;a.Item=function(e){var t=e.label,n=e.children,a=i(e,["label","children"]);return(0,r.createComponentVNode)(2,o.Flex.Item,{mx:1,children:(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Flex,Object.assign({minWidth:"52px",height:"100%",direction:"column",align:"center",textAlign:"center",justify:"space-between"},a,{children:[(0,r.createComponentVNode)(2,o.Flex.Item),(0,r.createComponentVNode)(2,o.Flex.Item,{children:n}),(0,r.createComponentVNode)(2,o.Flex.Item,{color:"label",children:t})]})))})}},function(e,t,n){"use strict";t.__esModule=!0,t.Modal=void 0;var r=n(0),o=n(6),i=n(17),a=n(403);t.Modal=function(e){var t=e.className,n=e.children,c=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","children"]);return(0,r.createComponentVNode)(2,a.Dimmer,{children:(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Modal",t,(0,i.computeBoxClassName)(c)]),n,0,Object.assign({},(0,i.computeBoxProps)(c))))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var r=n(0),o=n(6),i=n(17);var a=function(e){var t=e.className,n=e.color,a=e.info,c=(e.warning,e.success),u=e.danger,s=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","color","info","warning","success","danger"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["NoticeBox",n&&"NoticeBox--color--"+n,a&&"NoticeBox--type--info",c&&"NoticeBox--type--success",u&&"NoticeBox--type--danger",t])},s)))};t.NoticeBox=a,a.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.ProgressBar=void 0;var r=n(0),o=n(11),i=n(6),a=n(17);var c=function(e){var t=e.className,n=e.value,c=e.minValue,u=void 0===c?0:c,s=e.maxValue,l=void 0===s?1:s,f=e.color,d=e.ranges,p=void 0===d?{}:d,h=e.children,g=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","value","minValue","maxValue","color","ranges","children"]),v=(0,o.scale)(n,u,l),m=h!==undefined,y=f||(0,o.keyOfMatchingRange)(n,p)||"default";return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["ProgressBar","ProgressBar--color--"+y,t,(0,a.computeBoxClassName)(g)]),[(0,r.createVNode)(1,"div","ProgressBar__fill ProgressBar__fill--animated",null,1,{style:{width:100*(0,o.clamp01)(v)+"%"}}),(0,r.createVNode)(1,"div","ProgressBar__content",m?h:(0,o.toFixed)(100*v)+"%",0)],4,Object.assign({},(0,a.computeBoxProps)(g))))};t.ProgressBar=c,c.defaultHooks=i.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Section=void 0;var r=n(0),o=n(6),i=n(57),a=n(17);var c=function(e){var t,n;function c(t){var n;return(n=e.call(this,t)||this).ref=(0,r.createRef)(),n.scrollable=t.scrollable,n}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var u=c.prototype;return u.componentDidMount=function(){this.scrollable&&(0,i.addScrollableNode)(this.ref.current)},u.componentWillUnmount=function(){this.scrollable&&(0,i.removeScrollableNode)(this.ref.current)},u.render=function(){var e=this.props,t=e.className,n=e.title,i=e.level,c=void 0===i?1:i,u=e.buttons,s=e.fill,l=e.fitted,f=e.scrollable,d=e.children,p=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","title","level","buttons","fill","fitted","scrollable","children"]),h=(0,o.canRender)(n)||(0,o.canRender)(u),g=(0,o.canRender)(d);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Section","Section--level--"+c,Byond.IS_LTE_IE8&&"Section--iefix",s&&"Section--fill",l&&"Section--fitted",f&&"Section--scrollable",t].concat((0,a.computeBoxClassName)(p))),[h&&(0,r.createVNode)(1,"div","Section__title",[(0,r.createVNode)(1,"span","Section__titleText",n,0),(0,r.createVNode)(1,"div","Section__buttons",u,0)],4),l&&d||g&&(0,r.createVNode)(1,"div","Section__content",d,0)],0,Object.assign({},(0,a.computeBoxProps)(p)),null,this.ref))},c}(r.Component);t.Section=c},function(e,t,n){"use strict";t.__esModule=!0,t.Slider=void 0;var r=n(0),o=n(11),i=n(6),a=n(17),c=n(140),u=n(141);t.Slider=function(e){if(Byond.IS_LTE_IE8)return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,s=e.maxValue,l=e.minValue,f=e.onChange,d=e.onDrag,p=e.step,h=e.stepPixelSize,g=e.suppressFlicker,v=e.unit,m=e.value,y=e.className,b=e.fillValue,x=e.color,w=e.ranges,_=void 0===w?{}:w,E=e.children,k=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["animated","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","fillValue","color","ranges","children"]),S=E!==undefined;return(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[1,0]},{animated:t,format:n,maxValue:s,minValue:l,onChange:f,onDrag:d,step:p,stepPixelSize:h,suppressFlicker:g,unit:v,value:m},{children:function(e){var t=e.dragging,n=(e.editing,e.value),c=e.displayValue,u=e.displayElement,f=e.inputElement,d=e.handleDragStart,p=b!==undefined&&null!==b,h=((0,o.scale)(n,l,s),(0,o.scale)(null!=b?b:c,l,s)),g=(0,o.scale)(c,l,s),v=x||(0,o.keyOfMatchingRange)(null!=b?b:n,_)||"default";return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["Slider","ProgressBar","ProgressBar--color--"+v,y,(0,a.computeBoxClassName)(k)]),[(0,r.createVNode)(1,"div",(0,i.classes)(["ProgressBar__fill",p&&"ProgressBar__fill--animated"]),null,1,{style:{width:100*(0,o.clamp01)(h)+"%",opacity:.4}}),(0,r.createVNode)(1,"div","ProgressBar__fill",null,1,{style:{width:100*(0,o.clamp01)(Math.min(h,g))+"%"}}),(0,r.createVNode)(1,"div","Slider__cursorOffset",[(0,r.createVNode)(1,"div","Slider__cursor"),(0,r.createVNode)(1,"div","Slider__pointer"),t&&(0,r.createVNode)(1,"div","Slider__popupValue",u,0)],0,{style:{width:100*(0,o.clamp01)(g)+"%"}}),(0,r.createVNode)(1,"div","ProgressBar__content",S?E:u,0),f],0,Object.assign({},(0,a.computeBoxProps)(k),{onMouseDown:d})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.TextArea=void 0;var r=n(0),o=n(6),i=n(17),a=n(407),c=n(78);function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var s=function(e){var t,n;function s(t,n){var o;(o=e.call(this,t,n)||this).textareaRef=(0,r.createRef)(),o.fillerRef=(0,r.createRef)(),o.state={editing:!1};var i=t.dontUseTabForIndent,u=void 0!==i&&i;return o.handleOnInput=function(e){var t=o.state.editing,n=o.props.onInput;t||o.setEditing(!0),n&&n(e,e.target.value)},o.handleOnChange=function(e){var t=o.state.editing,n=o.props.onChange;t&&o.setEditing(!1),n&&n(e,e.target.value)},o.handleKeyPress=function(e){var t=o.state.editing,n=o.props.onKeyPress;t||o.setEditing(!0),n&&n(e,e.target.value)},o.handleKeyDown=function(e){var t=o.state.editing,n=o.props.onKeyDown;if(e.keyCode===c.KEY_ESCAPE)return o.setEditing(!1),e.target.value=(0,a.toInputValue)(o.props.value),void e.target.blur();if((t||o.setEditing(!0),!u)&&9===(e.keyCode||e.which)){e.preventDefault();var r=e.target,i=r.value,s=r.selectionStart,l=r.selectionEnd;e.target.value=i.substring(0,s)+"\t"+i.substring(l),e.target.selectionEnd=s+1}n&&n(e,e.target.value)},o.handleFocus=function(e){o.state.editing||o.setEditing(!0)},o.handleBlur=function(e){var t=o.state.editing,n=o.props.onChange;t&&(o.setEditing(!1),n&&n(e,e.target.value))},o}n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var l=s.prototype;return l.componentDidMount=function(){var e=this.props.value,t=this.textareaRef.current;t&&(t.value=(0,a.toInputValue)(e))},l.componentDidUpdate=function(e,t){var n=this.state.editing,r=e.value,o=this.props.value,i=this.textareaRef.current;i&&!n&&r!==o&&(i.value=(0,a.toInputValue)(o))},l.setEditing=function(e){this.setState({editing:e})},l.getValue=function(){return this.textareaRef.current&&this.textareaRef.current.value},l.render=function(){var e=this.props,t=(e.onChange,e.onKeyDown,e.onKeyPress,e.onInput,e.onFocus,e.onBlur,e.onEnter,e.value,e.placeholder),n=u(e,["onChange","onKeyDown","onKeyPress","onInput","onFocus","onBlur","onEnter","value","placeholder"]),a=n.className,c=n.fluid,s=u(n,["className","fluid"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["TextArea",c&&"TextArea--fluid",a])},s,{children:(0,r.createVNode)(128,"textarea","TextArea__textarea",null,1,{placeholder:t,onChange:this.handleOnChange,onKeyDown:this.handleKeyDown,onKeyPress:this.handleKeyPress,onInput:this.handleOnInput,onFocus:this.handleFocus,onBlur:this.handleBlur},null,this.textareaRef)})))},s}(r.Component);t.TextArea=s},function(e,t,n){"use strict";t.__esModule=!0,t.Tabs=void 0;var r=n(0),o=n(6),i=n(17),a=n(105);function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){var t=e.className,n=e.vertical,a=e.fluid,u=e.children,s=c(e,["className","vertical","fluid","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Tabs",n?"Tabs--vertical":"Tabs--horizontal",a&&"Tabs--fluid",t,(0,i.computeBoxClassName)(s)]),u,0,Object.assign({},(0,i.computeBoxProps)(s))))};t.Tabs=u;u.Tab=function(e){var t=e.className,n=e.selected,u=e.color,s=e.icon,l=e.leftSlot,f=e.rightSlot,d=e.children,p=c(e,["className","selected","color","icon","leftSlot","rightSlot","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Tab","Tabs__Tab","Tab--color--"+u,n&&"Tab--selected",t].concat((0,i.computeBoxClassName)(p))),[(0,o.canRender)(l)&&(0,r.createVNode)(1,"div","Tab__left",l,0)||!!s&&(0,r.createVNode)(1,"div","Tab__left",(0,r.createComponentVNode)(2,a.Icon,{name:s}),2),(0,r.createVNode)(1,"div","Tab__text",d,0),(0,o.canRender)(f)&&(0,r.createVNode)(1,"div","Tab__right",f,0)],0,Object.assign({},(0,i.computeBoxProps)(p))))}},function(e,t,n){"use strict";t.__esModule=!0,t.TimeDisplay=void 0;var r=n(11),o=n(0);var i=function(e){return"number"==typeof e&&Number.isFinite(e)&&!Number.isNaN(e)},a=function(e){var t,n;function o(t){var n;return(n=e.call(this,t)||this).timer=null,n.last_seen_value=undefined,n.state={value:0},i(t.value)&&(n.state.value=Number(t.value),n.last_seen_value=Number(t.value)),n}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var a=o.prototype;return a.componentDidUpdate=function(){var e=this;this.props.auto!==undefined&&(clearInterval(this.timer),this.timer=setInterval((function(){return e.tick()}),1e3))},a.tick=function(){var e=Number(this.state.value);this.props.value!==this.last_seen_value&&(this.last_seen_value=this.props.value,e=this.props.value);var t="up"===this.props.auto?10:-10,n=Math.max(0,e+t);this.setState({value:n})},a.componentDidMount=function(){var e=this;this.props.auto!==undefined&&(this.timer=setInterval((function(){return e.tick()}),1e3))},a.componentWillUnmount=function(){clearInterval(this.timer)},a.render=function(){var e=this.state.value;if(!i(e))return this.state.value||null;var t=(0,r.toFixed)(Math.floor(e/10%60)).padStart(2,"0"),n=(0,r.toFixed)(Math.floor(e/600%60)).padStart(2,"0");return(0,r.toFixed)(Math.floor(e/36e3%24)).padStart(2,"0")+":"+n+":"+t},o}(o.Component);t.TimeDisplay=a},function(e,t,n){"use strict";t.__esModule=!0,t.NtosWindow=void 0;var r=n(0),o=n(63),i=n(2),a=n(1),c=n(409),u=function(e,t){var n=e.title,u=e.width,s=void 0===u?575:u,l=e.height,f=void 0===l?700:l,d=e.resizable,p=e.theme,h=void 0===p?"ntos":p,g=e.children,v=(0,i.useBackend)(t),m=v.act,y=v.data,b=y.PC_device_theme,x=y.PC_batteryicon,w=y.PC_showbatteryicon,_=y.PC_batterypercent,E=y.PC_ntneticon,k=y.PC_apclinkicon,S=y.PC_stationtime,C=y.PC_programheaders,N=void 0===C?[]:C,A=y.PC_showexitprogram;return(0,r.createComponentVNode)(2,c.Window,{title:n,width:s,height:f,theme:h,resizable:d,children:(0,r.createVNode)(1,"div","NtosWindow",[(0,r.createVNode)(1,"div","NtosWindow__header NtosHeader",[(0,r.createVNode)(1,"div","NtosHeader__left",[(0,r.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:2,children:S}),(0,r.createComponentVNode)(2,a.Box,{inline:!0,italic:!0,mr:2,opacity:.33,children:["ntos"===b&&"NtOS","syndicate"===b&&"Syndix"]})],4),(0,r.createVNode)(1,"div","NtosHeader__right",[N.map((function(e){return(0,r.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(e.icon)})},e.icon)})),(0,r.createComponentVNode)(2,a.Box,{inline:!0,children:E&&(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(E)})}),!!w&&x&&(0,r.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:[x&&(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(x)}),_&&_]}),k&&(0,r.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(k)})}),!!A&&(0,r.createComponentVNode)(2,a.Button,{width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-minimize-o",tooltip:"Minimize",tooltipPosition:"bottom",onClick:function(){return m("PC_minimize")}}),!!A&&(0,r.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-close-o",tooltip:"Close",tooltipPosition:"bottom-left",onClick:function(){return m("PC_exit")}}),!A&&(0,r.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"power-off",tooltip:"Power off",tooltipPosition:"bottom-left",onClick:function(){return m("PC_shutdown")}})],0)],4),g],0)})};t.NtosWindow=u;u.Content=function(e){return(0,r.createVNode)(1,"div","NtosWindow__content",(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.Window.Content,Object.assign({},e))),2)}},function(e,t,n){"use strict";t.__esModule=!0,t.Pane=void 0;var r=n(0),o=n(6),i=n(2),a=n(1),c=n(138),u=n(142);function s(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var l=function(e,t){var n=e.theme,l=e.children,f=e.className,d=s(e,["theme","children","className"]),p=(0,i.useBackend)(t).suspended,h=(0,c.useDebug)(t).debugLayout;return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.Layout,Object.assign({className:(0,o.classes)(["Window",f]),theme:n},d,{children:(0,r.createComponentVNode)(2,a.Box,{fillPositionedParent:!0,className:h&&"debug-layout",children:!p&&l})})))};t.Pane=l;l.Content=function(e){var t=e.className,n=e.fitted,i=e.children,a=s(e,["className","fitted","children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.Layout.Content,Object.assign({className:(0,o.classes)(["Window__content",t])},a,{children:n&&i||(0,r.createVNode)(1,"div","Window__contentPadding",i,0)})))}},function(e,t,n){"use strict";t.__esModule=!0,t.relayMiddleware=t.debugMiddleware=void 0;var r=n(78),o=n(57),i=n(136),a=n(410),c=["backend/update","chat/message"];t.debugMiddleware=function(e){return(0,i.acquireHotKey)(r.KEY_F11),(0,i.acquireHotKey)(r.KEY_F12),o.globalEvents.on("keydown",(function(t){t.code===r.KEY_F11&&e.dispatch((0,a.toggleDebugLayout)()),t.code===r.KEY_F12&&e.dispatch((0,a.toggleKitchenSink)()),t.ctrl&&t.shift&&t.code===r.KEY_BACKSPACE&&setTimeout((function(){throw new Error("OOPSIE WOOPSIE!! UwU We made a fucky wucky!! A wittle fucko boingo! The code monkeys at our headquarters are working VEWY HAWD to fix this!")}))})),function(e){return function(t){return e(t)}}};t.relayMiddleware=function(e){var t=n(102),u="?external"===location.search;return u?t.subscribe((function(t){var n=t.type,r=t.payload;"relay"===n&&r.windowId===window.__windowId__&&e.dispatch(Object.assign({},r.action,{relayed:!0}))})):((0,i.acquireHotKey)(r.KEY_F10),o.globalEvents.on("keydown",(function(t){t===r.KEY_F10&&e.dispatch((0,a.openExternalBrowser)())}))),function(e){return function(n){var r=n.type,o=(n.payload,n.relayed);if(r!==a.openExternalBrowser.type)return!c.includes(r)||o||u||t.sendMessage({type:"relay",payload:{windowId:window.__windowId__,action:n}}),e(n);window.open(location.href+"?external","_blank")}}}},function(e,t,n){"use strict";t.__esModule=!0,t.debugReducer=void 0;t.debugReducer=function(e,t){void 0===e&&(e={});var n=t.type;t.payload;return"debug/toggleKitchenSink"===n?Object.assign({},e,{kitchenSink:!e.kitchenSink}):"debug/toggleDebugLayout"===n?Object.assign({},e,{debugLayout:!e.debugLayout}):e}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";e.exports=function(){var e=Object.hasOwnProperty,t=Object.setPrototypeOf,n=Object.isFrozen,r=Object.keys,o=Object.freeze,i=Object.seal,a="undefined"!=typeof Reflect&&Reflect,c=a.apply,u=a.construct;c||(c=function(e,t,n){return e.apply(t,n)}),o||(o=function(e){return e}),i||(i=function(e){return e}),u||(u=function(e,t){return new(Function.prototype.bind.apply(e,[null].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1?n-1:0),o=1;o/gm),D=i(/^data-[\-\w.\u00B7-\uFFFF]/),j=i(/^aria-[\-\w]+$/),F=i(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),K=i(/^(?:\w+script|data):/i),z=i(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g),Y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function U(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&arguments[0]!==undefined?arguments[0]:$(),t=function(e){return W(e)};if(t.version="2.0.12",t.removed=[],!e||!e.document||9!==e.document.nodeType)return t.isSupported=!1,t;var n=e.document,i=!1,a=e.document,c=e.DocumentFragment,u=e.HTMLTemplateElement,E=e.Node,k=e.NodeFilter,q=e.NamedNodeMap,G=q===undefined?e.NamedNodeMap||e.MozNamedAttrMap:q,X=e.Text,Z=e.Comment,Q=e.DOMParser,J=e.trustedTypes;if("function"==typeof u){var ee=a.createElement("template");ee.content&&ee.content.ownerDocument&&(a=ee.content.ownerDocument)}var te=H(J,n),ne=te&&Ve?te.createHTML(""):"",re=a,oe=re.implementation,ie=re.createNodeIterator,ae=re.getElementsByTagName,ce=re.createDocumentFragment,ue=n.importNode,se={};t.isSupported=oe&&"undefined"!=typeof oe.createHTMLDocument&&9!==a.documentMode;var le=P,fe=B,de=D,pe=j,he=K,ge=z,ve=F,me=null,ye=S({},[].concat(U(N),U(A),U(T),U(O),U(I))),be=null,xe=S({},[].concat(U(M),U(L),U(V),U(R))),we=null,_e=null,Ee=!0,ke=!0,Se=!1,Ce=!1,Ne=!1,Ae=!1,Te=!1,Oe=!1,Ie=!1,Me=!1,Le=!1,Ve=!1,Re=!0,Pe=!0,Be=!1,De={},je=S({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","plaintext","script","style","svg","template","thead","title","video","xmp"]),Fe=null,Ke=S({},["audio","video","img","source","image","track"]),ze=null,Ye=S({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),Ue=null,$e=a.createElement("form"),He=function(e){Ue&&Ue===e||(e&&"object"===(void 0===e?"undefined":Y(e))||(e={}),me="ALLOWED_TAGS"in e?S({},e.ALLOWED_TAGS):ye,be="ALLOWED_ATTR"in e?S({},e.ALLOWED_ATTR):xe,ze="ADD_URI_SAFE_ATTR"in e?S(C(Ye),e.ADD_URI_SAFE_ATTR):Ye,Fe="ADD_DATA_URI_TAGS"in e?S(C(Ke),e.ADD_DATA_URI_TAGS):Ke,we="FORBID_TAGS"in e?S({},e.FORBID_TAGS):{},_e="FORBID_ATTR"in e?S({},e.FORBID_ATTR):{},De="USE_PROFILES"in e&&e.USE_PROFILES,Ee=!1!==e.ALLOW_ARIA_ATTR,ke=!1!==e.ALLOW_DATA_ATTR,Se=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Ce=e.SAFE_FOR_JQUERY||!1,Ne=e.SAFE_FOR_TEMPLATES||!1,Ae=e.WHOLE_DOCUMENT||!1,Ie=e.RETURN_DOM||!1,Me=e.RETURN_DOM_FRAGMENT||!1,Le=e.RETURN_DOM_IMPORT||!1,Ve=e.RETURN_TRUSTED_TYPE||!1,Oe=e.FORCE_BODY||!1,Re=!1!==e.SANITIZE_DOM,Pe=!1!==e.KEEP_CONTENT,Be=e.IN_PLACE||!1,ve=e.ALLOWED_URI_REGEXP||ve,Ne&&(ke=!1),Me&&(Ie=!0),De&&(me=S({},[].concat(U(I))),be=[],!0===De.html&&(S(me,N),S(be,M)),!0===De.svg&&(S(me,A),S(be,L),S(be,R)),!0===De.svgFilters&&(S(me,T),S(be,L),S(be,R)),!0===De.mathMl&&(S(me,O),S(be,V),S(be,R))),e.ADD_TAGS&&(me===ye&&(me=C(me)),S(me,e.ADD_TAGS)),e.ADD_ATTR&&(be===xe&&(be=C(be)),S(be,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&S(ze,e.ADD_URI_SAFE_ATTR),Pe&&(me["#text"]=!0),Ae&&S(me,["html","head","body"]),me.table&&(S(me,["tbody"]),delete we.tbody),o&&o(e),Ue=e)},We=function(e){p(t.removed,{element:e});try{e.parentNode.removeChild(e)}catch(n){e.outerHTML=ne}},qe=function(e,n){try{p(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch(r){p(t.removed,{attribute:null,from:n})}n.removeAttribute(e)},Ge=function(e){var t=void 0,n=void 0;if(Oe)e=""+e;else{var r=v(e,/^[\r\n\t ]+/);n=r&&r[0]}var o=te?te.createHTML(e):e;try{t=(new Q).parseFromString(o,"text/html")}catch(u){}if(i&&S(we,["title"]),!t||!t.documentElement){var c=(t=oe.createHTMLDocument("")).body;c.parentNode.removeChild(c.parentNode.firstElementChild),c.outerHTML=o}return e&&n&&t.body.insertBefore(a.createTextNode(n),t.body.childNodes[0]||null),ae.call(t,Ae?"html":"body")[0]};t.isSupported&&function(){try{var e=Ge("</title><img>");x(/<\/title/,e.querySelector("title").innerHTML)&&(i=!0)}catch(t){}}();var Xe=function(e){return ie.call(e.ownerDocument||e,e,k.SHOW_ELEMENT|k.SHOW_COMMENT|k.SHOW_TEXT,(function(){return k.FILTER_ACCEPT}),!1)},Ze=function(e){return!(e instanceof X||e instanceof Z||"string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof G&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute&&"string"==typeof e.namespaceURI)},Qe=function(e){return"object"===(void 0===E?"undefined":Y(E))?e instanceof E:e&&"object"===(void 0===e?"undefined":Y(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},Je=function(e,n,r){se[e]&&s(se[e],(function(e){e.call(t,n,r,Ue)}))},et=function(e){var n=void 0;if(Je("beforeSanitizeElements",e,null),Ze(e))return We(e),!0;var r=g(e.nodeName);if(Je("uponSanitizeElement",e,{tagName:r,allowedTags:me}),("svg"===r||"math"===r)&&0!==e.querySelectorAll("p, br").length)return We(e),!0;if(!me[r]||we[r]){if(Pe&&!je[r]&&"function"==typeof e.insertAdjacentHTML)try{var o=e.innerHTML;e.insertAdjacentHTML("AfterEnd",te?te.createHTML(o):o)}catch(i){}return We(e),!0}return"noscript"===r&&x(/<\/noscript/i,e.innerHTML)||"noembed"===r&&x(/<\/noembed/i,e.innerHTML)?(We(e),!0):(!Ce||e.firstElementChild||e.content&&e.content.firstElementChild||!x(/</g,e.textContent)||(p(t.removed,{element:e.cloneNode()}),e.innerHTML?e.innerHTML=m(e.innerHTML,/</g,"<"):e.innerHTML=m(e.textContent,/</g,"<")),Ne&&3===e.nodeType&&(n=e.textContent,n=m(n,le," "),n=m(n,fe," "),e.textContent!==n&&(p(t.removed,{element:e.cloneNode()}),e.textContent=n)),Je("afterSanitizeElements",e,null),!1)},tt=function(e,t,n){if(Re&&("id"===t||"name"===t)&&(n in a||n in $e))return!1;if(ke&&x(de,t));else if(Ee&&x(pe,t));else{if(!be[t]||_e[t])return!1;if(ze[t]);else if(x(ve,m(n,ge,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==y(n,"data:")||!Fe[e])if(Se&&!x(he,m(n,ge,"")));else if(n)return!1}return!0},nt=function(e){var n=void 0,o=void 0,i=void 0,a=void 0,c=void 0;Je("beforeSanitizeAttributes",e,null);var u=e.attributes;if(u){var s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:be};for(c=u.length;c--;){var p=n=u[c],v=p.name,y=p.namespaceURI;if(o=b(n.value),i=g(v),s.attrName=i,s.attrValue=o,s.keepAttr=!0,s.forceKeepAttr=undefined,Je("uponSanitizeAttribute",e,s),o=s.attrValue,!s.forceKeepAttr){if("name"===i&&"IMG"===e.nodeName&&u.id)a=u.id,u=h(u,[]),qe("id",e),qe(v,e),l(u,a)>c&&e.setAttribute("id",a.value);else{if("INPUT"===e.nodeName&&"type"===i&&"file"===o&&s.keepAttr&&(be[i]||!_e[i]))continue;"id"===v&&e.setAttribute(v,""),qe(v,e)}if(s.keepAttr)if(Ce&&x(/\/>/i,o))qe(v,e);else if(x(/svg|math/i,e.namespaceURI)&&x(w("</("+f(r(je),"|")+")","i"),o))qe(v,e);else{Ne&&(o=m(o,le," "),o=m(o,fe," "));var _=e.nodeName.toLowerCase();if(tt(_,i,o))try{y?e.setAttributeNS(y,v,o):e.setAttribute(v,o),d(t.removed)}catch(E){}}}}Je("afterSanitizeAttributes",e,null)}},rt=function ot(e){var t=void 0,n=Xe(e);for(Je("beforeSanitizeShadowDOM",e,null);t=n.nextNode();)Je("uponSanitizeShadowNode",t,null),et(t)||(t.content instanceof c&&ot(t.content),nt(t));Je("afterSanitizeShadowDOM",e,null)};return t.sanitize=function(r,o){var i=void 0,a=void 0,u=void 0,s=void 0,l=void 0;if(r||(r="\x3c!--\x3e"),"string"!=typeof r&&!Qe(r)){if("function"!=typeof r.toString)throw _("toString is not a function");if("string"!=typeof(r=r.toString()))throw _("dirty is not a string, aborting")}if(!t.isSupported){if("object"===Y(e.toStaticHTML)||"function"==typeof e.toStaticHTML){if("string"==typeof r)return e.toStaticHTML(r);if(Qe(r))return e.toStaticHTML(r.outerHTML)}return r}if(Te||He(o),t.removed=[],"string"==typeof r&&(Be=!1),Be);else if(r instanceof E)1===(a=(i=Ge("\x3c!--\x3e")).ownerDocument.importNode(r,!0)).nodeType&&"BODY"===a.nodeName||"HTML"===a.nodeName?i=a:i.appendChild(a);else{if(!Ie&&!Ne&&!Ae&&-1===r.indexOf("<"))return te&&Ve?te.createHTML(r):r;if(!(i=Ge(r)))return Ie?null:ne}i&&Oe&&We(i.firstChild);for(var f=Xe(Be?r:i);u=f.nextNode();)3===u.nodeType&&u===s||et(u)||(u.content instanceof c&&rt(u.content),nt(u),s=u);if(s=null,Be)return r;if(Ie){if(Me)for(l=ce.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return Le&&(l=ue.call(n,l,!0)),l}var d=Ae?i.outerHTML:i.innerHTML;return Ne&&(d=m(d,le," "),d=m(d,fe," ")),te&&Ve?te.createHTML(d):d},t.setConfig=function(e){He(e),Te=!0},t.clearConfig=function(){Ue=null,Te=!1},t.isValidAttribute=function(e,t,n){Ue||He({});var r=g(e),o=g(t);return tt(r,o,n)},t.addHook=function(e,t){"function"==typeof t&&(se[e]=se[e]||[],p(se[e],t))},t.removeHook=function(e){se[e]&&d(se[e])},t.removeHooks=function(e){se[e]&&(se[e]=[])},t.removeAllHooks=function(){se={}},t}()}()},function(e,t,n){"use strict";e.exports=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function n(e,n){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,n){if(e){if("string"==typeof e)return t(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){r&&(e=r);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}var r=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){function t(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}e.exports={defaults:{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1},getDefaults:t,changeDefaults:function(t){e.exports.defaults=t}}})),o=(r.defaults,r.getDefaults,r.changeDefaults,/[&<>"']/),i=/[&<>"']/g,a=/[<>"']|&(?!#?\w+;)/,c=/[<>"']|&(?!#?\w+;)/g,u={"&":"&","<":"<",">":">",'"':""","'":"'"},s=function(e){return u[e]},l=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function f(e){return e.replace(l,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var d=/(^|[^\[])\^/g,p=/[^\w:]/g,h=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i,g={},v=/^[^:]+:\/*[^/]*$/,m=/^([^:]+:)[\s\S]*$/,y=/^([^:]+:\/*[^/]*)[\s\S]*$/;function b(e,t){g[" "+e]||(v.test(e)?g[" "+e]=e+"/":g[" "+e]=x(e,"/",!0));var n=-1===(e=g[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(m,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(y,"$1")+t:e+t}function x(e,t,n){var r=e.length;if(0===r)return"";for(var o=0;o<r;){var i=e.charAt(r-o-1);if(i!==t||n){if(i===t||!n)break;o++}else o++}return e.substr(0,r-o)}var w={escape:function(e,t){if(t){if(o.test(e))return e.replace(i,s)}else if(a.test(e))return e.replace(c,s);return e},unescape:f,edit:function(e,t){e=e.source||e,t=t||"";var n={replace:function(t,r){return r=(r=r.source||r).replace(d,"$1"),e=e.replace(t,r),n},getRegex:function(){return new RegExp(e,t)}};return n},cleanUrl:function(e,t,n){if(e){var r;try{r=decodeURIComponent(f(n)).replace(p,"").toLowerCase()}catch(o){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!h.test(n)&&(n=b(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(o){return null}return n},resolveUrl:b,noopTest:{exec:function(){}},merge:function(e){for(var t,n,r=1;r<arguments.length;r++)for(n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},splitCells:function(e,t){var n=e.replace(/\|/g,(function(e,t,n){for(var r=!1,o=t;--o>=0&&"\\"===n[o];)r=!r;return r?"|":" |"})).split(/ \|/),r=0;if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(/\\\|/g,"|");return n},rtrim:x,findClosingBracket:function(e,t){if(-1===e.indexOf(t[1]))return-1;for(var n=e.length,r=0,o=0;o<n;o++)if("\\"===e[o])o++;else if(e[o]===t[0])r++;else if(e[o]===t[1]&&--r<0)return o;return-1},checkSanitizeDeprecation:function(e){e&&e.sanitize&&e.silent}},_=r.defaults,E=w.rtrim,k=w.splitCells,S=w.escape,C=w.findClosingBracket;function N(e,t,n){var r=t.href,o=t.title?S(t.title):null,i=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?{type:"link",raw:n,href:r,title:o,text:i}:{type:"image",raw:n,href:r,title:o,text:S(i)}}var A=function(){function e(e){this.options=e||_}var t=e.prototype;return t.space=function(e){var t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}},t.code=function(e,t){var n=this.rules.block.code.exec(e);if(n){var r=t[t.length-1];if(r&&"paragraph"===r.type)return{raw:n[0],text:n[0].trimRight()};var o=n[0].replace(/^ {4}/gm,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?o:E(o,"\n")}}},t.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],r=function(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var r=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=r.length?e.slice(r.length):e})).join("\n")}(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim():t[2],text:r}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[1].length,text:t[2]}},t.nptable=function(e){var t=this.rules.block.nptable.exec(e);if(t){var n={type:"table",header:k(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[],raw:t[0]};if(n.header.length===n.align.length){var r,o=n.align.length;for(r=0;r<o;r++)/^ *-+: *$/.test(n.align[r])?n.align[r]="right":/^ *:-+: *$/.test(n.align[r])?n.align[r]="center":/^ *:-+ *$/.test(n.align[r])?n.align[r]="left":n.align[r]=null;for(o=n.cells.length,r=0;r<o;r++)n.cells[r]=k(n.cells[r],n.header.length);return n}}},t.hr=function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}},t.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){var n=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],text:n}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){for(var n,r,o,i,a,c,u,s=t[0],l=t[2],f=l.length>1,d=")"===l[l.length-1],p={type:"list",raw:s,ordered:f,start:f?+l.slice(0,-1):"",loose:!1,items:[]},h=t[0].match(this.rules.block.item),g=!1,v=h.length,m=0;m<v;m++)s=n=h[m],r=n.length,~(n=n.replace(/^ *([*+-]|\d+[.)]) */,"")).indexOf("\n ")&&(r-=n.length,n=this.options.pedantic?n.replace(/^ {1,4}/gm,""):n.replace(new RegExp("^ {1,"+r+"}","gm"),"")),m!==v-1&&(o=this.rules.block.bullet.exec(h[m+1])[0],(f?1===o.length||!d&&")"===o[o.length-1]:o.length>1||this.options.smartLists&&o!==l)&&(i=h.slice(m+1).join("\n"),p.raw=p.raw.substring(0,p.raw.length-i.length),m=v-1)),a=g||/\n\n(?!\s*$)/.test(n),m!==v-1&&(g="\n"===n.charAt(n.length-1),a||(a=g)),a&&(p.loose=!0),c=/^\[[ xX]\] /.test(n),u=undefined,c&&(u=" "!==n[1],n=n.replace(/^\[[ xX]\] +/,"")),p.items.push({type:"list_item",raw:s,task:c,checked:u,loose:a,text:n});return p}},t.html=function(e){var t=this.rules.block.html.exec(e);if(t)return{type:this.options.sanitize?"paragraph":"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):S(t[0]):t[0]}},t.def=function(e){var t=this.rules.block.def.exec(e);if(t)return t[3]&&(t[3]=t[3].substring(1,t[3].length-1)),{tag:t[1].toLowerCase().replace(/\s+/g," "),raw:t[0],href:t[2],title:t[3]}},t.table=function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:k(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var r,o=n.align.length;for(r=0;r<o;r++)/^ *-+: *$/.test(n.align[r])?n.align[r]="right":/^ *:-+: *$/.test(n.align[r])?n.align[r]="center":/^ *:-+ *$/.test(n.align[r])?n.align[r]="left":n.align[r]=null;for(o=n.cells.length,r=0;r<o;r++)n.cells[r]=k(n.cells[r].replace(/^ *\| *| *\| *$/g,""),n.header.length);return n}}},t.lheading=function(e){var t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1]}},t.paragraph=function(e){var t=this.rules.block.paragraph.exec(e);if(t)return{type:"paragraph",raw:t[0],text:"\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1]}},t.text=function(e,t){var n=this.rules.block.text.exec(e);if(n){var r=t[t.length-1];return r&&"text"===r.type?{raw:n[0],text:n[0]}:{type:"text",raw:n[0],text:n[0]}}},t.escape=function(e){var t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:S(t[1])}},t.tag=function(e,t,n){var r=this.rules.inline.tag.exec(e);if(r)return!t&&/^<a /i.test(r[0])?t=!0:t&&/^<\/a>/i.test(r[0])&&(t=!1),!n&&/^<(pre|code|kbd|script)(\s|>)/i.test(r[0])?n=!0:n&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(r[0])&&(n=!1),{type:this.options.sanitize?"text":"html",raw:r[0],inLink:t,inRawBlock:n,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):S(r[0]):r[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var n=C(t[2],"()");if(n>-1){var r=(0===t[0].indexOf("!")?5:4)+t[1].length+n;t[2]=t[2].substring(0,n),t[0]=t[0].substring(0,r).trim(),t[3]=""}var o=t[2],i="";if(this.options.pedantic){var a=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(o);a?(o=a[1],i=a[3]):i=""}else i=t[3]?t[3].slice(1,-1):"";return N(t,{href:(o=o.trim().replace(/^<([\s\S]*)>$/,"$1"))?o.replace(this.rules.inline._escapes,"$1"):o,title:i?i.replace(this.rules.inline._escapes,"$1"):i},t[0])}},t.reflink=function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var r=(n[2]||n[1]).replace(/\s+/g," ");if(!(r=t[r.toLowerCase()])||!r.href){var o=n[0].charAt(0);return{type:"text",raw:o,text:o}}return N(n,r,n[0])}},t.strong=function(e,t,n){void 0===n&&(n="");var r=this.rules.inline.strong.start.exec(e);if(r&&(!r[1]||r[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var o,i="**"===r[0]?this.rules.inline.strong.endAst:this.rules.inline.strong.endUnd;for(i.lastIndex=0;null!=(r=i.exec(t));)if(o=this.rules.inline.strong.middle.exec(t.slice(0,r.index+3)))return{type:"strong",raw:e.slice(0,o[0].length),text:e.slice(2,o[0].length-2)}}},t.em=function(e,t,n){void 0===n&&(n="");var r=this.rules.inline.em.start.exec(e);if(r&&(!r[1]||r[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var o,i="*"===r[0]?this.rules.inline.em.endAst:this.rules.inline.em.endUnd;for(i.lastIndex=0;null!=(r=i.exec(t));)if(o=this.rules.inline.em.middle.exec(t.slice(0,r.index+2)))return{type:"em",raw:e.slice(0,o[0].length),text:e.slice(1,o[0].length-1)}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),r=/[^ ]/.test(n),o=n.startsWith(" ")&&n.endsWith(" ");return r&&o&&(n=n.substring(1,n.length-1)),n=S(n,!0),{type:"codespan",raw:t[0],text:n}}},t.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},t.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[1]}},t.autolink=function(e,t){var n,r,o=this.rules.inline.autolink.exec(e);if(o)return r="@"===o[2]?"mailto:"+(n=S(this.options.mangle?t(o[1]):o[1])):n=S(o[1]),{type:"link",raw:o[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}},t.url=function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var r,o;if("@"===n[2])o="mailto:"+(r=S(this.options.mangle?t(n[0]):n[0]));else{var i;do{i=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(i!==n[0]);r=S(n[0]),o="www."===n[1]?"http://"+r:r}return{type:"link",raw:n[0],text:r,href:o,tokens:[{type:"text",raw:r,text:r}]}}},t.inlineText=function(e,t,n){var r,o=this.rules.inline.text.exec(e);if(o)return r=t?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):S(o[0]):o[0]:S(this.options.smartypants?n(o[0]):o[0]),{type:"text",raw:o[0],text:r}},e}(),T=w.noopTest,O=w.edit,I=w.merge,M={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6}) +([^\n]*?)(?: +#+)? *(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|<![A-Z][\\s\\S]*?>\\n*|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\n*|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:T,table:T,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};M.def=O(M.def).replace("label",M._label).replace("title",M._title).getRegex(),M.bullet=/(?:[*+-]|\d{1,9}[.)])/,M.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,M.item=O(M.item,"gm").replace(/bull/g,M.bullet).getRegex(),M.list=O(M.list).replace(/bull/g,M.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+M.def.source+")").getRegex(),M._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",M._comment=/<!--(?!-?>)[\s\S]*?-->/,M.html=O(M.html,"i").replace("comment",M._comment).replace("tag",M._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),M.paragraph=O(M._paragraph).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",M._tag).getRegex(),M.blockquote=O(M.blockquote).replace("paragraph",M.paragraph).getRegex(),M.normal=I({},M),M.gfm=I({},M.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),M.gfm.nptable=O(M.gfm.nptable).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",M._tag).getRegex(),M.gfm.table=O(M.gfm.table).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",M._tag).getRegex(),M.pedantic=I({},M.normal,{html:O("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",M._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:T,paragraph:O(M.normal._paragraph).replace("hr",M.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",M.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var L={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:T,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",strong:{start:/^(?:(\*\*(?=[*punctuation]))|\*\*)(?![\s])|__/,middle:/^\*\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*\*$|^__(?![\s])((?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?)__$/,endAst:/[^punctuation\s]\*\*(?!\*)|[punctuation]\*\*(?!\*)(?:(?=[punctuation\s]|$))/,endUnd:/[^\s]__(?!_)(?:(?=[punctuation\s])|$)/},em:{start:/^(?:(\*(?=[punctuation]))|\*)(?![*\s])|_/,middle:/^\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*$|^_(?![_\s])(?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?_$/,endAst:/[^punctuation\s]\*(?!\*)|[punctuation]\*(?!\*)(?:(?=[punctuation\s]|$))/,endUnd:/[^\s]_(?!_)(?:(?=[punctuation\s])|$)/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:T,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\<!\[`*]|\b_|$)|[^ ](?= {2,}\n))|(?= {2,}\n))/,punctuation:/^([\s*punctuation])/,_punctuation:"!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~"};L.punctuation=O(L.punctuation).replace(/punctuation/g,L._punctuation).getRegex(),L._blockSkip="\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>",L._overlapSkip="__[^_]*?__|\\*\\*\\[^\\*\\]*?\\*\\*",L.em.start=O(L.em.start).replace(/punctuation/g,L._punctuation).getRegex(),L.em.middle=O(L.em.middle).replace(/punctuation/g,L._punctuation).replace(/overlapSkip/g,L._overlapSkip).getRegex(),L.em.endAst=O(L.em.endAst,"g").replace(/punctuation/g,L._punctuation).getRegex(),L.em.endUnd=O(L.em.endUnd,"g").replace(/punctuation/g,L._punctuation).getRegex(),L.strong.start=O(L.strong.start).replace(/punctuation/g,L._punctuation).getRegex(),L.strong.middle=O(L.strong.middle).replace(/punctuation/g,L._punctuation).replace(/blockSkip/g,L._blockSkip).getRegex(),L.strong.endAst=O(L.strong.endAst,"g").replace(/punctuation/g,L._punctuation).getRegex(),L.strong.endUnd=O(L.strong.endUnd,"g").replace(/punctuation/g,L._punctuation).getRegex(),L.blockSkip=O(L._blockSkip,"g").getRegex(),L.overlapSkip=O(L._overlapSkip,"g").getRegex(),L._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,L._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,L._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,L.autolink=O(L.autolink).replace("scheme",L._scheme).replace("email",L._email).getRegex(),L._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,L.tag=O(L.tag).replace("comment",M._comment).replace("attribute",L._attribute).getRegex(),L._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,L._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,L._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,L.link=O(L.link).replace("label",L._label).replace("href",L._href).replace("title",L._title).getRegex(),L.reflink=O(L.reflink).replace("label",L._label).getRegex(),L.reflinkSearch=O(L.reflinkSearch,"g").replace("reflink",L.reflink).replace("nolink",L.nolink).getRegex(),L.normal=I({},L),L.pedantic=I({},L.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:O(/^!?\[(label)\]\((.*?)\)/).replace("label",L._label).getRegex(),reflink:O(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",L._label).getRegex()}),L.gfm=I({},L.normal,{escape:O(L.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\<!\[`*~]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))|(?= {2,}\n|[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))/}),L.gfm.url=O(L.gfm.url,"i").replace("email",L.gfm._extended_email).getRegex(),L.breaks=I({},L.gfm,{br:O(L.br).replace("{2,}","*").getRegex(),text:O(L.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var V={block:M,inline:L},R=r.defaults,P=V.block,B=V.inline;function D(e){return e.replace(/---/g,"\u2014").replace(/--/g,"\u2013").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1\u2018").replace(/'/g,"\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1\u201c").replace(/"/g,"\u201d").replace(/\.{3}/g,"\u2026")}function j(e){var t,n,r="",o=e.length;for(t=0;t<o;t++)n=e.charCodeAt(t),Math.random()>.5&&(n="x"+n.toString(16)),r+="&#"+n+";";return r}var F=function(){function t(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||R,this.options.tokenizer=this.options.tokenizer||new A,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options;var t={block:P.normal,inline:B.normal};this.options.pedantic?(t.block=P.pedantic,t.inline=B.pedantic):this.options.gfm&&(t.block=P.gfm,this.options.breaks?t.inline=B.breaks:t.inline=B.gfm),this.tokenizer.rules=t}t.lex=function(e,n){return new t(n).lex(e)};var n,r,o,i=t.prototype;return i.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens,!0),this.inline(this.tokens),this.tokens},i.blockTokens=function(e,t,n){var r,o,i,a;for(void 0===t&&(t=[]),void 0===n&&(n=!0),e=e.replace(/^ +$/gm,"");e;)if(r=this.tokenizer.space(e))e=e.substring(r.raw.length),r.type&&t.push(r);else if(r=this.tokenizer.code(e,t))e=e.substring(r.raw.length),r.type?t.push(r):((a=t[t.length-1]).raw+="\n"+r.raw,a.text+="\n"+r.text);else if(r=this.tokenizer.fences(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.heading(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.nptable(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.hr(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.blockquote(e))e=e.substring(r.raw.length),r.tokens=this.blockTokens(r.text,[],n),t.push(r);else if(r=this.tokenizer.list(e)){for(e=e.substring(r.raw.length),i=r.items.length,o=0;o<i;o++)r.items[o].tokens=this.blockTokens(r.items[o].text,[],!1);t.push(r)}else if(r=this.tokenizer.html(e))e=e.substring(r.raw.length),t.push(r);else if(n&&(r=this.tokenizer.def(e)))e=e.substring(r.raw.length),this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});else if(r=this.tokenizer.table(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.lheading(e))e=e.substring(r.raw.length),t.push(r);else if(n&&(r=this.tokenizer.paragraph(e)))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.text(e,t))e=e.substring(r.raw.length),r.type?t.push(r):((a=t[t.length-1]).raw+="\n"+r.raw,a.text+="\n"+r.text);else if(e){var c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(c)}return t},i.inline=function(e){var t,n,r,o,i,a,c=e.length;for(t=0;t<c;t++)switch((a=e[t]).type){case"paragraph":case"text":case"heading":a.tokens=[],this.inlineTokens(a.text,a.tokens);break;case"table":for(a.tokens={header:[],cells:[]},o=a.header.length,n=0;n<o;n++)a.tokens.header[n]=[],this.inlineTokens(a.header[n],a.tokens.header[n]);for(o=a.cells.length,n=0;n<o;n++)for(i=a.cells[n],a.tokens.cells[n]=[],r=0;r<i.length;r++)a.tokens.cells[n][r]=[],this.inlineTokens(i[r],a.tokens.cells[n][r]);break;case"blockquote":this.inline(a.tokens);break;case"list":for(o=a.items.length,n=0;n<o;n++)this.inline(a.items[n].tokens)}return e},i.inlineTokens=function(e,t,n,r,o){var i;void 0===t&&(t=[]),void 0===n&&(n=!1),void 0===r&&(r=!1),void 0===o&&(o="");var a,c=e;if(this.tokens.links){var u=Object.keys(this.tokens.links);if(u.length>0)for(;null!=(a=this.tokenizer.rules.inline.reflinkSearch.exec(c));)u.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(c=c.slice(0,a.index)+"["+"a".repeat(a[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(a=this.tokenizer.rules.inline.blockSkip.exec(c));)c=c.slice(0,a.index)+"["+"a".repeat(a[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;e;)if(i=this.tokenizer.escape(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.tag(e,n,r))e=e.substring(i.raw.length),n=i.inLink,r=i.inRawBlock,t.push(i);else if(i=this.tokenizer.link(e))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,r)),t.push(i);else if(i=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,r)),t.push(i);else if(i=this.tokenizer.strong(e,c,o))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,r),t.push(i);else if(i=this.tokenizer.em(e,c,o))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,r),t.push(i);else if(i=this.tokenizer.codespan(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.br(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.del(e))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,r),t.push(i);else if(i=this.tokenizer.autolink(e,j))e=e.substring(i.raw.length),t.push(i);else if(n||!(i=this.tokenizer.url(e,j))){if(i=this.tokenizer.inlineText(e,r,D))e=e.substring(i.raw.length),o=i.raw.slice(-1),t.push(i);else if(e){var s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(s)}}else e=e.substring(i.raw.length),t.push(i);return t},n=t,o=[{key:"rules",get:function(){return{block:P,inline:B}}}],(r=null)&&e(n.prototype,r),o&&e(n,o),t}(),K=r.defaults,z=w.cleanUrl,Y=w.escape,U=function(){function e(e){this.options=e||K}var t=e.prototype;return t.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var o=this.options.highlight(e,r);null!=o&&o!==e&&(n=!0,e=o)}return r?'<pre><code class="'+this.options.langPrefix+Y(r,!0)+'">'+(n?e:Y(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:Y(e,!0))+"</code></pre>\n"},t.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},t.html=function(e){return e},t.heading=function(e,t,n,r){return this.options.headerIds?"<h"+t+' id="'+this.options.headerPrefix+r.slug(n)+'">'+e+"</h"+t+">\n":"<h"+t+">"+e+"</h"+t+">\n"},t.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},t.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+r+">\n"},t.listitem=function(e){return"<li>"+e+"</li>\n"},t.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},t.paragraph=function(e){return"<p>"+e+"</p>\n"},t.table=function(e,t){return t&&(t="<tbody>"+t+"</tbody>"),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"},t.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},t.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"</"+n+">\n"},t.strong=function(e){return"<strong>"+e+"</strong>"},t.em=function(e){return"<em>"+e+"</em>"},t.codespan=function(e){return"<code>"+e+"</code>"},t.br=function(){return this.options.xhtml?"<br/>":"<br>"},t.del=function(e){return"<del>"+e+"</del>"},t.link=function(e,t,n){if(null===(e=z(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<a href="'+Y(e)+'"';return t&&(r+=' title="'+t+'"'),r+=">"+n+"</a>"},t.image=function(e,t,n){if(null===(e=z(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<img src="'+e+'" alt="'+n+'"';return t&&(r+=' title="'+t+'"'),r+=this.options.xhtml?"/>":">"},t.text=function(e){return e},e}(),$=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,n){return""+n},t.image=function(e,t,n){return""+n},t.br=function(){return""},e}(),H=function(){function e(){this.seen={}}return e.prototype.slug=function(e){var t=e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){var n=t;do{this.seen[n]++,t=n+"-"+this.seen[n]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t},e}(),W=r.defaults,q=w.unescape,G=function(){function e(e){this.options=e||W,this.options.renderer=this.options.renderer||new U,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new $,this.slugger=new H}e.parse=function(t,n){return new e(n).parse(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var n,r,o,i,a,c,u,s,l,f,d,p,h,g,v,m,y,b,x="",w=e.length;for(n=0;n<w;n++)switch((f=e[n]).type){case"space":continue;case"hr":x+=this.renderer.hr();continue;case"heading":x+=this.renderer.heading(this.parseInline(f.tokens),f.depth,q(this.parseInline(f.tokens,this.textRenderer)),this.slugger);continue;case"code":x+=this.renderer.code(f.text,f.lang,f.escaped);continue;case"table":for(s="",u="",i=f.header.length,r=0;r<i;r++)u+=this.renderer.tablecell(this.parseInline(f.tokens.header[r]),{header:!0,align:f.align[r]});for(s+=this.renderer.tablerow(u),l="",i=f.cells.length,r=0;r<i;r++){for(u="",a=(c=f.tokens.cells[r]).length,o=0;o<a;o++)u+=this.renderer.tablecell(this.parseInline(c[o]),{header:!1,align:f.align[o]});l+=this.renderer.tablerow(u)}x+=this.renderer.table(s,l);continue;case"blockquote":l=this.parse(f.tokens),x+=this.renderer.blockquote(l);continue;case"list":for(d=f.ordered,p=f.start,h=f.loose,i=f.items.length,l="",r=0;r<i;r++)m=(v=f.items[r]).checked,y=v.task,g="",v.task&&(b=this.renderer.checkbox(m),h?v.tokens.length>0&&"text"===v.tokens[0].type?(v.tokens[0].text=b+" "+v.tokens[0].text,v.tokens[0].tokens&&v.tokens[0].tokens.length>0&&"text"===v.tokens[0].tokens[0].type&&(v.tokens[0].tokens[0].text=b+" "+v.tokens[0].tokens[0].text)):v.tokens.unshift({type:"text",text:b}):g+=b),g+=this.parse(v.tokens,h),l+=this.renderer.listitem(g,y,m);x+=this.renderer.list(l,d,p);continue;case"html":x+=this.renderer.html(f.text);continue;case"paragraph":x+=this.renderer.paragraph(this.parseInline(f.tokens));continue;case"text":for(l=f.tokens?this.parseInline(f.tokens):f.text;n+1<w&&"text"===e[n+1].type;)l+="\n"+((f=e[++n]).tokens?this.parseInline(f.tokens):f.text);x+=t?this.renderer.paragraph(l):l;continue;default:var _='Token with "'+f.type+'" type was not found.';if(this.options.silent)return;throw new Error(_)}return x},t.parseInline=function(e,t){t=t||this.renderer;var n,r,o="",i=e.length;for(n=0;n<i;n++)switch((r=e[n]).type){case"escape":o+=t.text(r.text);break;case"html":o+=t.html(r.text);break;case"link":o+=t.link(r.href,r.title,this.parseInline(r.tokens,t));break;case"image":o+=t.image(r.href,r.title,r.text);break;case"strong":o+=t.strong(this.parseInline(r.tokens,t));break;case"em":o+=t.em(this.parseInline(r.tokens,t));break;case"codespan":o+=t.codespan(r.text);break;case"br":o+=t.br();break;case"del":o+=t.del(this.parseInline(r.tokens,t));break;case"text":o+=t.text(r.text);break;default:var a='Token with "'+r.type+'" type was not found.';if(this.options.silent)return;throw new Error(a)}return o},e}(),X=w.merge,Z=w.checkSanitizeDeprecation,Q=w.escape,J=r.getDefaults,ee=r.changeDefaults,te=r.defaults;function ne(e,t,n){if(null==e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if("function"==typeof t&&(n=t,t=null),t=X({},ne.defaults,t||{}),Z(t),n){var r,o=t.highlight;try{r=F.lex(e,t)}catch(u){return n(u)}var i=function(e){var i;if(!e)try{i=G.parse(r,t)}catch(u){e=u}return t.highlight=o,e?n(e):n(null,i)};if(!o||o.length<3)return i();if(delete t.highlight,!r.length)return i();var a=0;return ne.walkTokens(r,(function(e){"code"===e.type&&(a++,setTimeout((function(){o(e.text,e.lang,(function(t,n){if(t)return i(t);null!=n&&n!==e.text&&(e.text=n,e.escaped=!0),0==--a&&i()}))}),0))})),void(0===a&&i())}try{var c=F.lex(e,t);return t.walkTokens&&ne.walkTokens(c,t.walkTokens),G.parse(c,t)}catch(u){if(u.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+Q(u.message+"",!0)+"</pre>";throw u}}return ne.options=ne.setOptions=function(e){return X(ne.defaults,e),ee(ne.defaults),ne},ne.getDefaults=J,ne.defaults=te,ne.use=function(e){var t=X({},e);if(e.renderer&&function(){var n=ne.defaults.renderer||new U,r=function(t){var r=n[t];n[t]=function(){for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];var c=e.renderer[t].apply(n,i);return!1===c&&(c=r.apply(n,i)),c}};for(var o in e.renderer)r(o);t.renderer=n}(),e.tokenizer&&function(){var n=ne.defaults.tokenizer||new A,r=function(t){var r=n[t];n[t]=function(){for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];var c=e.tokenizer[t].apply(n,i);return!1===c&&(c=r.apply(n,i)),c}};for(var o in e.tokenizer)r(o);t.tokenizer=n}(),e.walkTokens){var n=ne.defaults.walkTokens;t.walkTokens=function(t){e.walkTokens(t),n&&n(t)}}ne.setOptions(t)},ne.walkTokens=function(e,t){for(var r,o=n(e);!(r=o()).done;){var i=r.value;switch(t(i),i.type){case"table":for(var a,c=n(i.tokens.header);!(a=c()).done;){var u=a.value;ne.walkTokens(u,t)}for(var s,l=n(i.tokens.cells);!(s=l()).done;)for(var f,d=n(s.value);!(f=d()).done;){var p=f.value;ne.walkTokens(p,t)}break;case"list":ne.walkTokens(i.items,t);break;default:i.tokens&&ne.walkTokens(i.tokens,t)}}},ne.Parser=G,ne.parser=G.parse,ne.Renderer=U,ne.TextRenderer=$,ne.Lexer=F,ne.lexer=F.lex,ne.Tokenizer=A,ne.Slugger=H,ne.parse=ne,ne}()}]]); \ No newline at end of file diff --git a/tgui/packages/tgui/public/tgui-panel.bundle.js b/tgui/packages/tgui/public/tgui-panel.bundle.js new file mode 100644 index 0000000000..6379de540a --- /dev/null +++ b/tgui/packages/tgui/public/tgui-panel.bundle.js @@ -0,0 +1 @@ +!function(e){function t(t){for(var o,a,c=t[0],s=t[1],l=t[2],d=0,g=[];d<c.length;d++)a=c[d],Object.prototype.hasOwnProperty.call(r,a)&&r[a]&&g.push(r[a][0]),r[a]=0;for(o in s)Object.prototype.hasOwnProperty.call(s,o)&&(e[o]=s[o]);for(u&&u(t);g.length;)g.shift()();return i.push.apply(i,l||[]),n()}function n(){for(var e,t=0;t<i.length;t++){for(var n=i[t],o=!0,c=1;c<n.length;c++){var s=n[c];0!==r[s]&&(o=!1)}o&&(i.splice(t--,1),e=a(a.s=n[0]))}return e}var o={},r={2:0},i=[];function a(t){if(o[t])return o[t].exports;var n=o[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=e,a.c=o,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)a.d(n,o,function(t){return e[t]}.bind(null,o));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="";var c=window.webpackJsonp=window.webpackJsonp||[],s=c.push.bind(c);c.push=t,c=c.slice();for(var l=0;l<c.length;l++)t(c[l]);var u=s;i.push([665,0]),n()}({106:function(e,t,n){"use strict";t.__esModule=!0,t.selectActiveTab=t.selectSettings=void 0;t.selectSettings=function(e){return e.settings};t.selectActiveTab=function(e){return e.settings.view.activeTab}},107:function(e,t,n){"use strict";t.__esModule=!0,t.serializeMessage=t.createMessage=t.createMainPage=t.createPage=t.canPageAcceptType=void 0;var o=n(108),r=n(414);function i(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return a(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}t.canPageAcceptType=function(e,t){return t.startsWith("internal")||e.acceptedTypes[t]};var c=function(e){return Object.assign({id:(0,r.createUuid)(),name:"New Tab",acceptedTypes:{},count:0,unreadCount:0,createdAt:Date.now()},e)};t.createPage=c;t.createMainPage=function(){for(var e,t={},n=i(o.MESSAGE_TYPES);!(e=n()).done;){t[e.value.type]=!0}return c({name:"Main",acceptedTypes:t})};t.createMessage=function(e){return Object.assign({createdAt:Date.now()},e)};t.serializeMessage=function(e){return{type:e.type,text:e.text,times:e.times,createdAt:e.createdAt}}},108:function(e,t,n){"use strict";t.__esModule=!0,t.MESSAGE_TYPES=t.IMAGE_RETRY_MESSAGE_AGE=t.IMAGE_RETRY_LIMIT=t.IMAGE_RETRY_DELAY=t.COMBINE_MAX_TIME_WINDOW=t.COMBINE_MAX_MESSAGES=t.MESSAGE_PRUNE_INTERVAL=t.MESSAGE_SAVE_INTERVAL=t.MAX_PERSISTED_MESSAGES=t.MAX_VISIBLE_MESSAGES=void 0;t.MAX_VISIBLE_MESSAGES=2500;t.MAX_PERSISTED_MESSAGES=1e3;t.MESSAGE_SAVE_INTERVAL=1e4;t.MESSAGE_PRUNE_INTERVAL=6e4;t.COMBINE_MAX_MESSAGES=5;t.COMBINE_MAX_TIME_WINDOW=5e3;t.IMAGE_RETRY_DELAY=250;t.IMAGE_RETRY_LIMIT=10;t.IMAGE_RETRY_MESSAGE_AGE=6e4;t.MESSAGE_TYPES=[{type:"system",name:"System Messages",description:"Messages from your client, always enabled",selector:".boldannounce, .filter_system",important:!0},{type:"localchat",name:"Local",description:"In-character local messages (say, emote, etc)",selector:".filter_say, .say, .emote"},{type:"radio",name:"Radio",description:"All departments of radio messages",selector:".filter_radio, .alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster"},{type:"info",name:"Info",description:"Non-urgent messages from the game and items",selector:".filter_notice, .notice:not(.pm), .adminnotice, .info, .sinister, .cult"},{type:"warning",name:"Warnings",description:"Urgent messages from the game and items",selector:".filter_warning, .warning:not(.pm), .critical, .userdanger, .italics"},{type:"deadchat",name:"Deadchat",description:"All of deadchat",selector:".filter_deadsay, .deadsay"},{type:"ooc",name:"OOC",description:"The bluewall of global OOC messages",selector:".filter_ooc, .ooc, .adminooc"},{type:"looc",name:"LOOC",description:"Local OOC Chat. Less of a bluewall",selector:".filter_looc, .looc"},{type:"antagooc",name:"AOOC",description:"Antag OOC Chat.",selector:".filter_aooc, .antagooc"},{type:"adminpm",name:"Admin PMs",description:"Messages to/from admins (adminhelp)",selector:".filter_pm, .pm"},{type:"combat",name:"Combat Log",description:"Urist McTraitor has stabbed you with a knife!",selector:".filter_combat, .danger"},{type:"unknown",name:"Unsorted",description:"Everything we could not sort, always enabled"},{type:"mentorchat",name:"Mentor Chat",description:"Mhelp how do i not die?",selector:".filter_MSAY, .mentor_channel"},{type:"adminchat",name:"Admin Chat",description:"ASAY messages",selector:".filter_ASAY, .admin_channel",admin:!0},{type:"eventchat",name:"Event Chat",description:"ESAY messages",selector:".filter_ESAY, .event_channel",admin:!0},{type:"adminlog",name:"Admin Log",description:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",selector:".filter_adminlog, .log_message",admin:!0},{type:"attacklog",name:"Attack Log",description:"Urist McTraitor has shot John Doe",selector:".filter_attacklog",admin:!0},{type:"debuglog",name:"Debug Log",description:"DEBUG: SSPlanets subsystem Recover().",selector:".filter_debuglog",admin:!0}]},145:function(e,t,n){"use strict";t.__esModule=!0,t.SettingsPanel=t.settingsReducer=t.settingsMiddleware=t.useSettings=void 0;var o=n(673);t.useSettings=o.useSettings;var r=n(674);t.settingsMiddleware=r.settingsMiddleware;var i=n(675);t.settingsReducer=i.settingsReducer;var a=n(676);t.SettingsPanel=a.SettingsPanel},146:function(e,t,n){"use strict";t.__esModule=!0,t.chatReducer=t.chatMiddleware=t.ChatTabs=t.ChatPanel=t.ChatPageSettings=void 0;var o=n(677);t.ChatPageSettings=o.ChatPageSettings;var r=n(678);t.ChatPanel=r.ChatPanel;var i=n(680);t.ChatTabs=i.ChatTabs;var a=n(681);t.chatMiddleware=a.chatMiddleware;var c=n(682);t.chatReducer=c.chatReducer},147:function(e,t,n){"use strict";t.__esModule=!0,t.selectChatPageById=t.selectCurrentChatPage=t.selectChatPages=t.selectChat=void 0;var o=n(15);t.selectChat=function(e){return e.chat};t.selectChatPages=function(e){return(0,o.map)((function(t){return e.chat.pageById[t]}))(e.chat.pages)};t.selectCurrentChatPage=function(e){return e.chat.pageById[e.chat.currentPage]};t.selectChatPageById=function(e){return function(t){return t.chat.pageById[e]}}},148:function(e,t,n){"use strict";t.__esModule=!0,t.pingReply=t.pingFail=t.pingSuccess=void 0;var o=n(22),r=(0,o.createAction)("ping/success",(function(e){var t=Date.now(),n=.5*(t-e.sentAt);return{payload:{lastId:e.id,roundtrip:n},meta:{now:t}}}));t.pingSuccess=r;var i=(0,o.createAction)("ping/fail");t.pingFail=i;var a=(0,o.createAction)("ping/reply");t.pingReply=a},422:function(e,t,n){"use strict";t.__esModule=!0,t.audioReducer=t.NowPlayingWidget=t.audioMiddleware=t.useAudio=void 0;var o=n(669);t.useAudio=o.useAudio;var r=n(670);t.audioMiddleware=r.audioMiddleware;var i=n(672);t.NowPlayingWidget=i.NowPlayingWidget;var a=n(683);t.audioReducer=a.audioReducer},423:function(e,t,n){"use strict";t.__esModule=!0,t.selectAudio=void 0;t.selectAudio=function(e){return e.audio}},424:function(e,t,n){"use strict";t.__esModule=!0,t.setClientTheme=t.THEMES=void 0;t.THEMES=["light","dark","default"];t.setClientTheme=function(e){if("light"===e)return Byond.winset({"infowindow.background-color":"#E6E6E6","infowindow.text-color":"#000000","info.background-color":"#F0F0F0","info.text-color":"#000000","browseroutput.background-color":"#E6E6E6","browseroutput.text-color":"#000000","outputwindow.background-color":"#E6E6E6","outputwindow.text-color":"#000000","mainwindow.background-color":"#E6E6E6","split.background-color":"#F0F0F0","changelog.background-color":"#90B3DD","changelog.text-color":"#000000","rules.background-color":"#90B3DD","rules.text-color":"#000000","wiki.background-color":"#90B3DD","wiki.text-color":"#000000","forum.background-color":"#90B3DD","forum.text-color":"#000000","github.background-color":"#90B3DD","github.text-color":"#000000","report-issue.background-color":"#EF7F7F","report-issue.text-color":"#000000","output.background-color":"#F0F0F0","output.text-color":"#000000","statwindow.background-color":"#E6E6E6","statwindow.text-color":"#000000","stat.background-color":"#F0F0F0","stat.tab-background-color":"#E6E6E6","stat.text-color":"#000000","stat.tab-text-color":"#000000","stat.prefix-color":"#000000","stat.suffix-color":"#000000","saybutton.background-color":"#E6E6E6","saybutton.text-color":"#000000","asset_cache_browser.background-color":"#E6E6E6","asset_cache_browser.text-color":"#000000","tooltip.background-color":"#F0F0F0","tooltip.text-color":"#000000"});"dark"===e&&Byond.winset({"infowindow.background-color":"#242424","infowindow.text-color":"#E0E0E0","info.background-color":"#272727","info.text-color":"#E0E0E0","browseroutput.background-color":"#272727","browseroutput.text-color":"#E0E0E0","outputwindow.background-color":"#272727","outputwindow.text-color":"#E0E0E0","mainwindow.background-color":"#242424","split.background-color":"#272727","changelog.background-color":"#40628A","changelog.text-color":"#E0E0E0","rules.background-color":"#40628A","rules.text-color":"#E0E0E0","wiki.background-color":"#40628A","wiki.text-color":"#E0E0E0","forum.background-color":"#40628A","forum.text-color":"#E0E0E0","github.background-color":"#40628A","github.text-color":"#E0E0E0","report-issue.background-color":"#A92C2C","report-issue.text-color":"#E0E0E0","output.background-color":"#272727","output.text-color":"#E0E0E0","statwindow.background-color":"#242424","statwindow.text-color":"#E0E0E0","stat.background-color":"#242424","stat.tab-background-color":"#272727","stat.text-color":"#E0E0E0","stat.tab-text-color":"#E0E0E0","stat.prefix-color":"#E0E0E0","stat.suffix-color":"#E0E0E0","saybutton.background-color":"#272727","saybutton.text-color":"#E0E0E0","asset_cache_browser.background-color":"#272727","asset_cache_browser.text-color":"#E0E0E0","tooltip.background-color":"#272727","tooltip.text-color":"#E0E0E0"}),"default"===e&&Byond.winset({"infowindow.background-color":"#242424","infowindow.text-color":"#E0E0E0","info.background-color":"#272727","info.text-color":"#E0E0E0","browseroutput.background-color":"#272727","browseroutput.text-color":"#E0E0E0","outputwindow.background-color":"#272727","outputwindow.text-color":"#E0E0E0","mainwindow.background-color":"#242424","split.background-color":"#272727","changelog.background-color":"#40628A","changelog.text-color":"#E0E0E0","rules.background-color":"#40628A","rules.text-color":"#E0E0E0","wiki.background-color":"#40628A","wiki.text-color":"#E0E0E0","forum.background-color":"#40628A","forum.text-color":"#E0E0E0","github.background-color":"#40628A","github.text-color":"#E0E0E0","report-issue.background-color":"#A92C2C","report-issue.text-color":"#E0E0E0","output.background-color":"#272727","output.text-color":"#E0E0E0","statwindow.background-color":"#242424","statwindow.text-color":"#E0E0E0","stat.background-color":"#242424","stat.tab-background-color":"#272727","stat.text-color":"#E0E0E0","stat.tab-text-color":"#E0E0E0","stat.prefix-color":"#E0E0E0","stat.suffix-color":"#E0E0E0","saybutton.background-color":"#272727","saybutton.text-color":"#E0E0E0","asset_cache_browser.background-color":"#272727","asset_cache_browser.text-color":"#E0E0E0","tooltip.background-color":"#272727","tooltip.text-color":"#E0E0E0"})}},425:function(e,t,n){"use strict";t.__esModule=!0,t.SETTINGS_TABS=void 0;t.SETTINGS_TABS=[{id:"general",name:"General"},{id:"chatPage",name:"Chat Tabs"}]},426:function(e,t,n){"use strict";(function(e){t.__esModule=!0,t.chatRenderer=void 0;var o=n(395),r=n(6),i=n(25),a=n(108),c=n(107),s=n(679);function l(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var d=(0,i.createLogger)("chatRenderer"),g=function(e,t){var n=document.createElement("span");return n.className="Chat__highlight",n.setAttribute("style","background-color:"+t),n.textContent=e,n},p=function(){var e=document.createElement("div");return e.className="ChatMessage",e},h=function(){var e=document.createElement("div");return e.className="Chat__reconnected",e},f=function(e){setTimeout((function(){var t=e.target,n=parseInt(t.getAttribute("data-reload-n"),10)||0;if(n>=a.IMAGE_RETRY_LIMIT)d.error("failed to load an image after "+n+" attempts");else{var o=t.src;t.src=null,t.src=o+"#"+n,t.setAttribute("data-reload-n",n+1)}}),a.IMAGE_RETRY_DELAY)},m=function(e){var t=e.node,n=e.times;if(t&&n){var o=t.querySelector(".Chat__badge"),i=o||document.createElement("div");i.textContent=n,i.className=(0,r.classes)(["Chat__badge","Chat__badge--animate"]),requestAnimationFrame((function(){i.className="Chat__badge"})),o||t.appendChild(i)}},v=function(){function t(){var e=this;this.loaded=!1,this.rootNode=null,this.queue=[],this.messages=[],this.visibleMessages=[],this.page=null,this.events=new o.EventEmitter,this.scrollNode=null,this.scrollTracking=!0,this.handleScroll=function(t){var n=e.scrollNode,o=n.scrollHeight,r=n.scrollTop+n.offsetHeight,i=Math.abs(o-r)<24;i!==e.scrollTracking&&(e.scrollTracking=i,e.events.emit("scrollTrackingChanged",i),d.debug("tracking",e.scrollTracking))},this.ensureScrollTracking=function(){e.scrollTracking&&e.scrollToBottom()},setInterval((function(){return e.pruneMessages()}),a.MESSAGE_PRUNE_INTERVAL)}var n=t.prototype;return n.isReady=function(){return this.loaded&&this.rootNode&&this.page},n.mount=function(t){var n=this;this.rootNode?t.appendChild(this.rootNode):this.rootNode=t,this.scrollNode=function(e){for(var t=document.body,n=e;n&&n!==t;){if(n.scrollWidth<n.offsetWidth)return n;n=n.parentNode}return window}(this.rootNode),this.scrollNode.addEventListener("scroll",this.handleScroll),e((function(){n.scrollToBottom()})),this.tryFlushQueue()},n.onStateLoaded=function(){this.loaded=!0,this.tryFlushQueue()},n.tryFlushQueue=function(){this.isReady()&&this.queue.length>0&&(this.processBatch(this.queue),this.queue=[])},n.assignStyle=function(e){void 0===e&&(e={});for(var t=0,n=Object.keys(e);t<n.length;t++){var o=n[t];this.rootNode.style.setProperty(o,e[o])}},n.setHighlight=function(e,t){if(!e||!t)return this.highlightRegex=null,void(this.highlightColor=null);var n=/^[a-z0-9_-\s]+$/gi,o=String(e).split(",").map((function(e){return e.trim()})).filter((function(e){return e&&e.length>1&&n.test(e)}));if(0===o.length)return this.highlightRegex=null,void(this.highlightColor=null);this.highlightRegex=new RegExp("("+o.join("|")+")","gi"),this.highlightColor=t},n.scrollToBottom=function(){this.scrollNode.scrollTop=this.scrollNode.scrollHeight},n.changePage=function(e){if(!this.isReady())return this.page=e,void this.tryFlushQueue();this.page=e,this.rootNode.textContent="",this.visibleMessages=[];for(var t,n,o=document.createDocumentFragment(),r=l(this.messages);!(n=r()).done;){var i=n.value;(0,c.canPageAcceptType)(e,i.type)&&(t=i.node,o.appendChild(t),this.visibleMessages.push(i))}t&&(this.rootNode.appendChild(o),t.scrollIntoView())},n.getCombinableMessage=function(e){for(var t=Date.now(),n=this.visibleMessages.length,o=n-1,r=Math.max(0,n-a.COMBINE_MAX_MESSAGES),i=o;i>=r;i--){var c=this.visibleMessages[i];if(!c.type.startsWith("internal")&&c.text===e.text&&t<c.createdAt+a.COMBINE_MAX_TIME_WINDOW)return c}return null},n.processBatch=function(t,n){var o=this;void 0===n&&(n={});var r=n,i=r.prepend,u=r.notifyListeners,d=void 0===u||u,v=Date.now();if(this.isReady()){for(var y,b,E=document.createDocumentFragment(),S={},C=l(t);!(b=C()).done;){var _=b.value,w=(0,c.createMessage)(_),N=this.getCombinableMessage(w);if(N)N.times=(N.times||1)+1,m(N);else{if(w.node)y=w.node;else if("internal/reconnected"===w.type)y=h();else if((y=p()).innerHTML=w.text,this.highlightRegex&&(0,s.highlightNode)(y,this.highlightRegex,(function(e){return g(e,o.highlightColor)}))&&(y.className+=" ChatMessage--highlighted"),(0,s.linkifyNode)(y),v<w.createdAt+a.IMAGE_RETRY_MESSAGE_AGE)for(var M=y.querySelectorAll("img"),A=0;A<M.length;A++)M[A].addEventListener("error",f);if(w.node=y,!w.type){var I=!Byond.IS_LTE_IE8&&a.MESSAGE_TYPES.find((function(e){return e.selector&&y.querySelector(e.selector)}));w.type=(null==I?void 0:I.type)||"unknown"}m(w),S[w.type]||(S[w.type]=0),S[w.type]+=1,this.messages.push(w),(0,c.canPageAcceptType)(this.page,w.type)&&(E.appendChild(y),this.visibleMessages.push(w))}}if(y){var T=this.rootNode.childNodes[0];i&&T?this.rootNode.insertBefore(E,T):this.rootNode.appendChild(E),this.scrollTracking&&e((function(){return o.scrollToBottom()}))}d&&this.events.emit("batchProcessed",S)}else this.queue=i?[].concat(t,this.queue):[].concat(this.queue,t)},n.pruneMessages=function(){if(this.isReady())if(this.scrollTracking){var e=this.visibleMessages,t=Math.max(0,e.length-a.MAX_VISIBLE_MESSAGES);if(t>0){this.visibleMessages=e.slice(t);for(var n=0;n<t;n++){var o=e[n];this.rootNode.removeChild(o.node),o.node="pruned"}this.messages=this.messages.filter((function(e){return"pruned"!==e.node})),d.log("pruned "+t+" visible messages")}var r=Math.max(0,this.messages.length-a.MAX_PERSISTED_MESSAGES);r>0&&(this.messages=this.messages.slice(r),d.log("pruned "+r+" stored messages"))}else d.debug("pruning delayed")},n.rebuildChat=function(){if(this.isReady()){for(var e,t=Math.max(0,this.messages.length-a.MAX_PERSISTED_MESSAGES),n=this.messages.slice(t),o=l(n);!(e=o()).done;)e.value.node=undefined;this.rootNode.textContent="",this.messages=[],this.visibleMessages=[],this.processBatch(n,{notifyListeners:!1})}},n.saveToDisk=function(){if(!Byond.IS_LTE_IE10){for(var e="",t=document.styleSheets,n=0;n<t.length;n++)for(var o=t[n].cssRules,r=0;r<o.length;r++)e+=o[r].cssText+"\n";e+="body, html { background-color: #141414 }\n";for(var i,a="",c=l(this.messages);!(i=c()).done;){var s=i.value;s.node&&(a+=s.node.outerHTML+"\n")}var u=new Blob(["<!doctype html>\n<html>\n<head>\n<title>SS13 Chat Log\n\n\n\n
    \n'+a+"
    \n\n\n"]),d=(new Date).toISOString().substring(0,19).replace(/[-:]/g,"").replace("T","-");window.navigator.msSaveBlob(u,"ss13-chatlog-"+d+".html")}},t}();window.__chatRenderer__||(window.__chatRenderer__=new v);var y=window.__chatRenderer__;t.chatRenderer=y}).call(this,n(103).setImmediate)},427:function(e,t,n){"use strict";t.__esModule=!0,t.gameReducer=t.gameMiddleware=t.useGame=void 0;var o=n(684);t.useGame=o.useGame;var r=n(685);t.gameMiddleware=r.gameMiddleware;var i=n(687);t.gameReducer=i.gameReducer},428:function(e,t,n){"use strict";t.__esModule=!0,t.selectGame=void 0;t.selectGame=function(e){return e.game}},429:function(e,t,n){"use strict";t.__esModule=!0,t.connectionRestored=t.connectionLost=t.roundRestarted=void 0;var o=n(22),r=(0,o.createAction)("roundrestart");t.roundRestarted=r;var i=(0,o.createAction)("game/connectionLost");t.connectionLost=i;var a=(0,o.createAction)("game/connectionRestored");t.connectionRestored=a},430:function(e,t,n){"use strict";t.__esModule=!0,t.pingReducer=t.PingIndicator=t.pingMiddleware=void 0;var o=n(689);t.pingMiddleware=o.pingMiddleware;var r=n(690);t.PingIndicator=r.PingIndicator;var i=n(693);t.pingReducer=i.pingReducer},431:function(e,t,n){"use strict";t.__esModule=!0,t.PING_ROUNDTRIP_WORST=t.PING_ROUNDTRIP_BEST=t.PING_QUEUE_SIZE=t.PING_MAX_FAILS=t.PING_TIMEOUT=t.PING_INTERVAL=void 0;t.PING_INTERVAL=2500;t.PING_TIMEOUT=2e3;t.PING_MAX_FAILS=3;t.PING_QUEUE_SIZE=8;t.PING_ROUNDTRIP_BEST=50;t.PING_ROUNDTRIP_WORST=200},65:function(e,t,n){"use strict";t.__esModule=!0,t.openChatSettings=t.toggleSettings=t.changeSettingsTab=t.loadSettings=t.updateSettings=void 0;var o=n(22),r=(0,o.createAction)("settings/update");t.updateSettings=r;var i=(0,o.createAction)("settings/load");t.loadSettings=i;var a=(0,o.createAction)("settings/changeTab");t.changeSettingsTab=a;var c=(0,o.createAction)("settings/toggle");t.toggleSettings=c;var s=(0,o.createAction)("settings/openChatTab");t.openChatSettings=s},665:function(e,t,n){e.exports=n(666)},666:function(e,t,n){"use strict";n(149),n(161),n(162),n(163),n(164),n(165),n(166),n(167),n(168),n(169),n(170),n(171),n(172),n(173),n(174),n(175),n(176),n(178),n(179),n(180),n(181),n(182),n(183),n(185),n(186),n(187),n(189),n(190),n(191),n(122),n(195),n(196),n(198),n(199),n(200),n(201),n(202),n(203),n(204),n(205),n(206),n(207),n(208),n(209),n(211),n(212),n(213),n(214),n(215),n(216),n(217),n(218),n(219),n(221),n(222),n(223),n(224),n(225),n(226),n(228),n(230),n(231),n(232),n(233),n(234),n(235),n(236),n(237),n(238),n(239),n(240),n(241),n(242),n(243),n(244),n(245),n(246),n(247),n(248),n(249),n(250),n(252),n(253),n(254),n(255),n(256),n(257),n(259),n(260),n(261),n(262),n(263),n(264),n(265),n(266),n(268),n(269),n(270),n(271),n(272),n(273),n(274),n(276),n(277),n(278),n(279),n(280),n(281),n(282),n(283),n(284),n(285),n(286),n(287),n(288),n(294),n(295),n(296),n(297),n(298),n(299),n(300),n(301),n(302),n(303),n(304),n(305),n(306),n(307),n(308),n(309),n(96),n(310),n(311),n(312),n(313),n(314),n(315),n(316),n(317),n(318),n(319),n(320),n(321),n(322),n(324),n(325),n(326),n(327),n(328),n(329),n(330),n(331),n(332),n(333),n(334),n(335),n(336),n(337),n(338),n(339),n(340),n(341),n(342),n(343),n(344),n(345),n(346),n(347),n(350),n(351),n(352),n(353),n(354),n(355),n(356),n(357),n(358),n(359),n(360),n(361),n(362),n(363),n(364),n(365),n(366),n(367),n(368),n(369),n(370),n(371),n(372),n(373),n(374),n(375),n(376),n(377),n(378),n(379),n(380),n(381),n(382),n(383),n(385),n(386),n(387),n(388);var o=n(0);n(389),n(390),n(391),n(392),n(393),n(394),n(667),n(668);var r,i,a=n(101),c=n(22),s=(n(102),n(57)),l=n(396),u=n(137),d=n(397),g=n(422),p=n(146),h=n(427),f=n(688),m=n(430),v=n(145),y=n(694);function b(e,t,n,o,r,i,a){try{var c=e[i](a),s=c.value}catch(l){return void n(l)}c.done?t(s):Promise.resolve(s).then(o,r)}a.perf.mark("inception",null==(r=window.performance)||null==(i=r.timing)?void 0:i.navigationStart),a.perf.mark("init");var E=(0,d.configureStore)({reducer:(0,c.combineReducers)({audio:g.audioReducer,chat:p.chatReducer,game:h.gameReducer,ping:m.pingReducer,settings:v.settingsReducer}),middleware:{pre:[p.chatMiddleware,m.pingMiddleware,y.telemetryMiddleware,v.settingsMiddleware,g.audioMiddleware,h.gameMiddleware]}}),S=(0,u.createRenderer)((function(){var e=n(695).Panel;return(0,o.createComponentVNode)(2,d.StoreProvider,{store:E,children:(0,o.createComponentVNode)(2,e)})})),C=function(){var e,t=(e=regeneratorRuntime.mark((function n(e){var t;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return void 0===e&&(e="output"),n.next=3,Byond.winget(e);case 3:t=n.sent,Byond.winset("browseroutput",{size:t.size});case 5:case"end":return n.stop()}}),n)})),function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){b(i,o,r,a,c,"next",e)}function c(e){b(i,o,r,a,c,"throw",e)}a(undefined)}))});return function(e){return t.apply(this,arguments)}}();!function _(){if("loading"!==document.readyState){for((0,s.setupGlobalEvents)({ignoreWindowFocus:!0}),(0,f.setupPanelFocusHacks)(),(0,l.captureExternalLinks)(),E.subscribe(S),window.update=function(e){return E.dispatch(Byond.parseJson(e))};;){var e=window.__updateQueue__.shift();if(!e)break;window.update(e)}Byond.winset("output",{"is-visible":!1}),Byond.winset("browseroutput",{"is-visible":!0,"is-disabled":!1,pos:"0x0"}),C()}else document.addEventListener("DOMContentLoaded",_)}()},667:function(e,t,n){},668:function(e,t,n){},669:function(e,t,n){"use strict";t.__esModule=!0,t.useAudio=void 0;var o=n(22),r=n(423);t.useAudio=function(e){var t=(0,o.useSelector)(e,r.selectAudio),n=(0,o.useDispatch)(e);return Object.assign({},t,{toggle:function(){return n({type:"audio/toggle"})}})}},670:function(e,t,n){"use strict";t.__esModule=!0,t.audioMiddleware=void 0;var o=n(671);t.audioMiddleware=function(e){var t=new o.AudioPlayer;return t.onPlay((function(){e.dispatch({type:"audio/playing"})})),t.onStop((function(){e.dispatch({type:"audio/stopped"})})),function(e){return function(n){var o=n.type,r=n.payload;if("audio/playMusic"===o){var i=r.url,a=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(r,["url"]);return t.play(i,a),e(n)}if("audio/stopMusic"===o)return t.stop(),e(n);if("settings/update"===o||"settings/load"===o){var c=null==r?void 0:r.adminMusicVolume;return"number"==typeof c&&t.setVolume(c),e(n)}return e(n)}}}},671:function(e,t,n){"use strict";function o(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&e.node.currentTime>=e.options.end&&e.stop())}),1e3))}var t=e.prototype;return t.destroy=function(){this.node&&(this.node.stop(),document.removeChild(this.node),clearInterval(this.playbackInterval))},t.play=function(e,t){void 0===t&&(t={}),this.node&&(i.log("playing",e,t),this.options=t,this.node.src=e)},t.stop=function(){if(this.node){if(this.playing)for(var e,t=o(this.onStopSubscribers);!(e=t()).done;)(0,e.value)();i.log("stopping"),this.playing=!1,this.node.src=""}},t.setVolume=function(e){this.node&&(this.volume=e,this.node.volume=e)},t.onPlay=function(e){this.node&&this.onPlaySubscribers.push(e)},t.onStop=function(e){this.node&&this.onStopSubscribers.push(e)},e}();t.AudioPlayer=a},672:function(e,t,n){"use strict";t.__esModule=!0,t.NowPlayingWidget=void 0;var o=n(0),r=n(11),i=n(22),a=n(1),c=n(145),s=n(423);t.NowPlayingWidget=function(e,t){var n,l=(0,i.useSelector)(t,s.selectAudio),u=(0,i.useDispatch)(t),d=(0,c.useSettings)(t),g=null==(n=l.meta)?void 0:n.title;return(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[l.playing&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:0,mx:.5,color:"label",children:"Now playing:"}),(0,o.createComponentVNode)(2,a.Flex.Item,{mx:.5,grow:1,style:{"white-space":"nowrap",overflow:"hidden","text-overflow":"ellipsis"},children:g||"Unknown Track"})],4)||(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,color:"label",children:"Nothing to play."}),l.playing&&(0,o.createComponentVNode)(2,a.Flex.Item,{mx:.5,fontSize:"0.9em",children:(0,o.createComponentVNode)(2,a.Button,{tooltip:"Stop",icon:"stop",onClick:function(){return u({type:"audio/stopMusic"})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mx:.5,fontSize:"0.9em",children:(0,o.createComponentVNode)(2,a.Knob,{minValue:0,maxValue:1,value:d.adminMusicVolume,step:.0025,stepPixelSize:1,format:function(e){return(0,r.toFixed)(100*e)+"%"},onDrag:function(e,t){return d.update({adminMusicVolume:t})}})})]})}},673:function(e,t,n){"use strict";t.__esModule=!0,t.useSettings=void 0;var o=n(22),r=n(65),i=n(106);t.useSettings=function(e){var t=(0,o.useSelector)(e,i.selectSettings),n=(0,o.useDispatch)(e);return Object.assign({},t,{visible:t.view.visible,toggle:function(){return n((0,r.toggleSettings)())},update:function(e){return n((0,r.updateSettings)(e))}})}},674:function(e,t,n){"use strict";t.__esModule=!0,t.settingsMiddleware=void 0;var o=n(79),r=n(424),i=n(65),a=n(106);t.settingsMiddleware=function(e){var t=!1;return function(n){return function(c){var s,l=c.type,u=c.payload;if(t||(t=!0,o.storage.get("panel-settings").then((function(t){e.dispatch((0,i.loadSettings)(t))}))),l===i.updateSettings.type||l===i.loadSettings.type){var d=null==u?void 0:u.theme;d&&(0,r.setClientTheme)(d),n(c);var g=(0,a.selectSettings)(e.getState());return s=g.fontSize,document.documentElement.style.setProperty("font-size",s+"px"),document.body.style.setProperty("font-size",s+"px"),void o.storage.set("panel-settings",g)}return n(c)}}}},675:function(e,t,n){"use strict";t.__esModule=!0,t.settingsReducer=void 0;var o=n(65),r={version:1,fontSize:13,lineHeight:1.2,theme:"default",adminMusicVolume:.5,highlightText:"",highlightColor:"#ffdd44",view:{visible:!1,activeTab:n(425).SETTINGS_TABS[0].id}};t.settingsReducer=function(e,t){void 0===e&&(e=r);var n=t.type,i=t.payload;if(n===o.updateSettings.type)return Object.assign({},e,i);if(n===o.loadSettings.type)return(null==i?void 0:i.version)?(delete i.view,Object.assign({},e,i)):e;if(n===o.toggleSettings.type)return Object.assign({},e,{view:Object.assign({},e.view,{visible:!e.view.visible})});if(n===o.openChatSettings.type)return Object.assign({},e,{view:Object.assign({},e.view,{visible:!0,activeTab:"chatPage"})});if(n===o.changeSettingsTab.type){var a=i.tabId;return Object.assign({},e,{view:Object.assign({},e.view,{activeTab:a})})}return e}},676:function(e,t,n){"use strict";t.__esModule=!0,t.SettingsGeneral=t.SettingsPanel=void 0;var o=n(0),r=n(11),i=n(22),a=n(1),c=n(146),s=n(80),l=n(424),u=n(65),d=n(425),g=n(106);t.SettingsPanel=function(e,t){var n=(0,i.useSelector)(t,g.selectActiveTab),r=(0,i.useDispatch)(t);return(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:1,children:(0,o.createComponentVNode)(2,a.Section,{fitted:!0,fill:!0,minHeight:"8em",children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:d.SETTINGS_TABS.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:e.id===n,onClick:function(){return r((0,u.changeSettingsTab)({tabId:e.id}))},children:e.name},e.id)}))})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:["general"===n&&(0,o.createComponentVNode)(2,p),"chatPage"===n&&(0,o.createComponentVNode)(2,c.ChatPageSettings)]})]})};var p=function(e,t){var n=(0,i.useSelector)(t,g.selectSettings),c=n.theme,d=n.fontSize,p=n.lineHeight,h=n.highlightText,f=n.highlightColor,m=(0,i.useDispatch)(t);return(0,o.createComponentVNode)(2,a.Section,{fill:!0,children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Theme",children:(0,o.createComponentVNode)(2,a.Dropdown,{selected:c,options:l.THEMES,onSelected:function(e){return m((0,u.updateSettings)({theme:e}))}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Font size",children:(0,o.createComponentVNode)(2,a.NumberInput,{width:"4em",step:1,stepPixelSize:10,minValue:8,maxValue:32,value:d,unit:"px",format:function(e){return(0,r.toFixed)(e)},onChange:function(e,t){return m((0,u.updateSettings)({fontSize:t}))}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Line height",children:(0,o.createComponentVNode)(2,a.NumberInput,{width:"4em",step:.01,stepPixelSize:2,minValue:.8,maxValue:5,value:p,format:function(e){return(0,r.toFixed)(e,2)},onDrag:function(e,t){return m((0,u.updateSettings)({lineHeight:t}))}})})]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Flex,{mb:1,color:"label",align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:"Highlight words (comma separated):"}),(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:0,children:[(0,o.createComponentVNode)(2,a.ColorBox,{mr:1,color:f}),(0,o.createComponentVNode)(2,a.Input,{width:"5em",monospace:!0,placeholder:"#ffffff",value:f,onInput:function(e,t){return m((0,u.updateSettings)({highlightColor:t}))}})]})]}),(0,o.createComponentVNode)(2,a.TextArea,{height:"3em",value:h,onChange:function(e,t){return m((0,u.updateSettings)({highlightText:t}))}})]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"check",onClick:function(){return m((0,s.rebuildChat)())},children:"Apply now"}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,fontSize:"0.9em",ml:1,color:"label",children:"Can freeze the chat for a while."})]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){return m((0,s.saveChatToDisk)())},children:"Save chat log"})]})};t.SettingsGeneral=p},677:function(e,t,n){"use strict";t.__esModule=!0,t.ChatPageSettings=void 0;var o=n(0),r=n(22),i=n(1),a=n(80),c=n(108),s=n(147);t.ChatPageSettings=function(e,t){var n=(0,r.useSelector)(t,s.selectCurrentChatPage),l=(0,r.useDispatch)(t);return(0,o.createComponentVNode)(2,i.Section,{fill:!0,children:[(0,o.createComponentVNode)(2,i.Flex,{mx:-.5,align:"center",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{mx:.5,grow:1,children:(0,o.createComponentVNode)(2,i.Input,{fluid:!0,value:n.name,onChange:function(e,t){return l((0,a.updateChatPage)({pageId:n.id,name:t}))}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{mx:.5,children:(0,o.createComponentVNode)(2,i.Button,{icon:"times",color:"red",onClick:function(){return l((0,a.removeChatPage)({pageId:n.id}))},children:"Remove"})})]}),(0,o.createComponentVNode)(2,i.Divider),(0,o.createComponentVNode)(2,i.Section,{title:"Messages to display",level:2,children:[c.MESSAGE_TYPES.filter((function(e){return!e.important&&!e.admin})).map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:n.acceptedTypes[e.type],onClick:function(){return l((0,a.toggleAcceptedType)({pageId:n.id,type:e.type}))},children:e.name},e.type)})),(0,o.createComponentVNode)(2,i.Collapsible,{mt:1,color:"transparent",title:"Admin stuff",children:c.MESSAGE_TYPES.filter((function(e){return!e.important&&e.admin})).map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:n.acceptedTypes[e.type],onClick:function(){return l((0,a.toggleAcceptedType)({pageId:n.id,type:e.type}))},children:e.name},e.type)}))})]})]})}},678:function(e,t,n){"use strict";t.__esModule=!0,t.ChatPanel=void 0;var o=n(0),r=n(6),i=n(1),a=n(426);var c=function(e){var t,n;function c(){var t;return(t=e.call(this)||this).ref=(0,o.createRef)(),t.state={scrollTracking:!0},t.handleScrollTrackingChange=function(e){return t.setState({scrollTracking:e})},t}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var s=c.prototype;return s.componentDidMount=function(){a.chatRenderer.mount(this.ref.current),a.chatRenderer.events.on("scrollTrackingChanged",this.handleScrollTrackingChange),this.componentDidUpdate()},s.componentWillUnmount=function(){a.chatRenderer.events.off("scrollTrackingChanged",this.handleScrollTrackingChange)},s.componentDidUpdate=function(e){requestAnimationFrame((function(){a.chatRenderer.ensureScrollTracking()})),(!e||(0,r.shallowDiffers)(this.props,e))&&a.chatRenderer.assignStyle({width:"100%","white-space":"pre-wrap","font-size":this.props.fontSize,"line-height":this.props.lineHeight})},s.render=function(){var e=this.state.scrollTracking;return(0,o.createFragment)([(0,o.createVNode)(1,"div","Chat",null,1,null,null,this.ref),!e&&(0,o.createComponentVNode)(2,i.Button,{className:"Chat__scrollButton",icon:"arrow-down",onClick:function(){return a.chatRenderer.scrollToBottom()},children:"Scroll to bottom"})],0)},c}(o.Component);t.ChatPanel=c},679:function(e,t,n){"use strict";t.__esModule=!0,t.linkifyNode=t.highlightNode=t.replaceInTextNode=void 0;var o=function(e,t){return function(n){for(var o,r,i=n.textContent,a=i.length,c=0,s=0;o=e.exec(i);){s+=1,r||(r=document.createDocumentFragment());var l=o[0],u=l.length,d=o.index;c0&&(0,o.createComponentVNode)(2,l,{value:e.unreadCount}),onClick:function(){return d((0,a.changeChatPage)({pageId:e.id}))},children:e.name},e.id)}))})}),(0,o.createComponentVNode)(2,i.Flex.Item,{ml:1,children:(0,o.createComponentVNode)(2,i.Button,{color:"transparent",icon:"plus",onClick:function(){d((0,a.addChatPage)()),d((0,s.openChatSettings)())}})})]})}},681:function(e,t,n){"use strict";t.__esModule=!0,t.chatMiddleware=void 0;var o=n(79),r=n(65),i=n(106),a=n(80),c=n(108),s=n(107),l=n(426),u=n(147);n(25);function d(e,t,n,o,r,i,a){try{var c=e[i](a),s=c.value}catch(l){return void n(l)}c.done?t(s):Promise.resolve(s).then(o,r)}function g(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){d(i,o,r,a,c,"next",e)}function c(e){d(i,o,r,a,c,"throw",e)}a(undefined)}))}}var p=function(){var e=g(regeneratorRuntime.mark((function t(e){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=(0,u.selectChat)(e.getState()),r=Math.max(0,l.chatRenderer.messages.length-c.MAX_PERSISTED_MESSAGES),i=l.chatRenderer.messages.slice(r).map((function(e){return(0,s.serializeMessage)(e)})),o.storage.set("chat-state",n),o.storage.set("chat-messages",i);case 5:case"end":return t.stop()}}),t)})));return function(t){return e.apply(this,arguments)}}(),h=function(){var e=g(regeneratorRuntime.mark((function t(e){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Promise.all([o.storage.get("chat-state"),o.storage.get("chat-messages")]);case 2:n=t.sent,r=n[0],(i=n[1])&&(c=[].concat(i,[(0,s.createMessage)({type:"internal/reconnected"})]),l.chatRenderer.processBatch(c,{prepend:!0})),e.dispatch((0,a.loadChat)(r));case 7:case"end":return t.stop()}}),t)})));return function(t){return e.apply(this,arguments)}}();t.chatMiddleware=function(e){var t=!1,n=!1;return l.chatRenderer.events.on("batchProcessed",(function(t){n&&e.dispatch((0,a.updateMessageCount)(t))})),l.chatRenderer.events.on("scrollTrackingChanged",(function(t){e.dispatch((0,a.changeScrollTracking)(t))})),setInterval((function(){return p(e)}),c.MESSAGE_SAVE_INTERVAL),function(o){return function(c){var s=c.type,d=c.payload;if(t||(t=!0,h(e)),"chat/message"!==s){if(s===a.loadChat.type){o(c);var g=(0,u.selectCurrentChatPage)(e.getState());return l.chatRenderer.changePage(g),l.chatRenderer.onStateLoaded(),void(n=!0)}if(s!==a.changeChatPage.type&&s!==a.addChatPage.type&&s!==a.removeChatPage.type&&s!==a.toggleAcceptedType.type){if(s===a.rebuildChat.type)return l.chatRenderer.rebuildChat(),o(c);if(s!==r.updateSettings.type&&s!==r.loadSettings.type){if("roundrestart"===s)return p(e),o(c);if(s!==a.saveChatToDisk.type)return o(c);l.chatRenderer.saveToDisk()}else{o(c);var f=(0,i.selectSettings)(e.getState());l.chatRenderer.setHighlight(f.highlightText,f.highlightColor)}}else{o(c);var m=(0,u.selectCurrentChatPage)(e.getState());l.chatRenderer.changePage(m)}}else{var v=Array.isArray(d)?d:[d];l.chatRenderer.processBatch(v)}}}}},682:function(e,t,n){"use strict";t.__esModule=!0,t.chatReducer=t.initialState=void 0;var o,r=n(80),i=n(107);function a(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0||M>0)&&(C[w.id]=Object.assign({},w,{count:w.count+N,unreadCount:w.unreadCount+M}))}return Object.assign({},e,{pageById:C})}if(o===r.addChatPage.type)return Object.assign({},e,{currentPage:c.id,pages:[].concat(e.pages,[c.id]),pageById:Object.assign({},e.pageById,(n={},n[c.id]=c,n))});if(o===r.changeChatPage.type){var x,P=c.pageId,k=Object.assign({},e.pageById[P],{unreadCount:0});return Object.assign({},e,{currentPage:P,pageById:Object.assign({},e.pageById,(x={},x[P]=k,x))})}if(o===r.updateChatPage.type){var R,V=c.pageId,O=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(c,["pageId"]),B=Object.assign({},e.pageById[V],O);return Object.assign({},e,{pageById:Object.assign({},e.pageById,(R={},R[V]=B,R))})}if(o===r.toggleAcceptedType.type){var F,L=c.pageId,G=c.type,j=Object.assign({},e.pageById[L]);return j.acceptedTypes=Object.assign({},j.acceptedTypes),j.acceptedTypes[G]=!j.acceptedTypes[G],Object.assign({},e,{pageById:Object.assign({},e.pageById,(F={},F[L]=j,F))})}if(o===r.removeChatPage.type){var D=c.pageId,U=e.currentPage,Y=Object.assign({},e,{currentPage:U,pages:[].concat(e.pages),pageById:Object.assign({},e.pageById)});return delete Y.pageById[D],Y.pages=Y.pages.filter((function(e){return e!==D})),0===Y.pages.length&&(Y.pages.push(s.id),Y.pageById[s.id]=s,Y.currentPage=s.id),Y.currentPage&&Y.currentPage!==D||(Y.currentPage=Y.pages[0]),Y}return e}},683:function(e,t,n){"use strict";t.__esModule=!0,t.audioReducer=void 0;var o={visible:!1,playing:!1,track:null};t.audioReducer=function(e,t){void 0===e&&(e=o);var n=t.type,r=t.payload;return"audio/playing"===n?Object.assign({},e,{visible:!0,playing:!0}):"audio/stopped"===n?Object.assign({},e,{visible:!1,playing:!1}):"audio/playMusic"===n?Object.assign({},e,{meta:r}):"audio/stopMusic"===n?Object.assign({},e,{visible:!1,playing:!1,meta:null}):"audio/toggle"===n?Object.assign({},e,{visible:!e.visible}):e}},684:function(e,t,n){"use strict";t.__esModule=!0,t.useGame=void 0;var o=n(22),r=n(428);t.useGame=function(e){return(0,o.useSelector)(e,r.selectGame)}},685:function(e,t,n){"use strict";t.__esModule=!0,t.gameMiddleware=void 0;var o=n(148),r=n(429),i=n(428),a=n(686),c=function(e){return Object.assign({},e,{meta:Object.assign({},e.meta,{now:Date.now()})})};t.gameMiddleware=function(e){var t;return setInterval((function(){var n=e.getState();if(n){var o=(0,i.selectGame)(n),s=t&&Date.now()>=t+a.CONNECTION_LOST_AFTER;!o.connectionLostAt&&s&&e.dispatch(c((0,r.connectionLost)())),o.connectionLostAt&&!s&&e.dispatch(c((0,r.connectionRestored)()))}}),1e3),function(e){return function(n){var i=n.type,a=(n.payload,n.meta);return i===o.pingSuccess.type?(t=a.now,e(n)):i===r.roundRestarted.type?e(c(n)):e(n)}}}},686:function(e,t,n){"use strict";t.__esModule=!0,t.CONNECTION_LOST_AFTER=void 0;t.CONNECTION_LOST_AFTER=15e3},687:function(e,t,n){"use strict";t.__esModule=!0,t.gameReducer=void 0;var o=n(429),r={roundId:null,roundTime:null,roundRestartedAt:null,connectionLostAt:null};t.gameReducer=function(e,t){void 0===e&&(e=r);var n=t.type,i=(t.payload,t.meta);return"roundrestart"===n?Object.assign({},e,{roundRestartedAt:i.now}):n===o.connectionLost.type?Object.assign({},e,{connectionLostAt:i.now}):n===o.connectionRestored.type?Object.assign({},e,{connectionLostAt:null}):e}},688:function(e,t,n){"use strict";(function(e){t.__esModule=!0,t.setupPanelFocusHacks=void 0;var o=n(104),r=n(57),i=n(399),a=function(){return e((function(){return(0,i.focusMap)()}))};t.setupPanelFocusHacks=function(){var e=!1,t=null;window.addEventListener("focusin",(function(t){e=(0,r.canStealFocus)(t.target)})),window.addEventListener("mousedown",(function(e){t=[e.screenX,e.screenY]})),window.addEventListener("mouseup",(function(n){if(t){var r=[n.screenX,n.screenY];(0,o.vecLength)((0,o.vecSubtract)(r,t))>=10&&(e=!0)}e||a()})),r.globalEvents.on("keydown",(function(e){e.isModifierKey()||a()}))}}).call(this,n(103).setImmediate)},689:function(e,t,n){"use strict";t.__esModule=!0,t.pingMiddleware=void 0;var o=n(2),r=n(148),i=n(431);t.pingMiddleware=function(e){var t=!1,n=0,a=[],c=function(){for(var t=0;ti.PING_TIMEOUT&&(a[t]=null,e.dispatch((0,r.pingFail)()))}var s={index:n,sentAt:Date.now()};a[n]=s,(0,o.sendMessage)({type:"ping",payload:{index:n}}),n=(n+1)%i.PING_QUEUE_SIZE};return function(e){return function(n){var o=n.type,s=n.payload;if(t||(t=!0,setInterval(c,i.PING_INTERVAL),c()),"pingReply"===o){var l=s.index,u=a[l];if(!u)return;return a[l]=null,e((0,r.pingSuccess)(u))}return e(n)}}}},690:function(e,t,n){"use strict";t.__esModule=!0,t.PingIndicator=void 0;var o=n(0),r=n(691),i=n(11),a=n(22),c=n(1),s=n(692);t.PingIndicator=function(e,t){var n=(0,a.useSelector)(t,s.selectPing),l=r.Color.lookup(n.networkQuality,[new r.Color(220,40,40),new r.Color(220,200,40),new r.Color(60,220,40)]),u=n.roundtrip?(0,i.toFixed)(n.roundtrip):"--";return(0,o.createVNode)(1,"div","Ping",[(0,o.createComponentVNode)(2,c.Box,{className:"Ping__indicator",backgroundColor:l}),u],0)}},691:function(e,t,n){"use strict";t.__esModule=!0,t.Color=void 0;var o=function(){function e(e,t,n,o){void 0===e&&(e=0),void 0===t&&(t=0),void 0===n&&(n=0),void 0===o&&(o=1),this.r=e,this.g=t,this.b=n,this.a=o}return e.prototype.toString=function(){return"rgba("+(0|this.r)+", "+(0|this.g)+", "+(0|this.b)+", "+(0|this.a)+")"},e}();t.Color=o,o.fromHex=function(e){return new o(parseInt(e.substr(1,2),16),parseInt(e.substr(3,2),16),parseInt(e.substr(5,2),16))},o.lerp=function(e,t,n){return new o((t.r-e.r)*n+e.r,(t.g-e.g)*n+e.g,(t.b-e.b)*n+e.b,(t.a-e.a)*n+e.a)},o.lookup=function(e,t){void 0===t&&(t=[]);var n=t.length;if(n<2)throw new Error("Needs at least two colors!");var r=e*(n-1);if(e<1e-4)return t[0];if(e>=.9999)return t[n-1];var i=r%1,a=0|r;return o.lerp(t[a],t[a+1],i)}},692:function(e,t,n){"use strict";t.__esModule=!0,t.selectPing=void 0;t.selectPing=function(e){return e.ping}},693:function(e,t,n){"use strict";t.__esModule=!0,t.pingReducer=void 0;var o=n(11),r=n(148),i=n(431);t.pingReducer=function(e,t){void 0===e&&(e={});var n=t.type,a=t.payload;if(n===r.pingSuccess.type){var c=a.roundtrip,s=e.roundtripAvg||c,l=Math.round(.4*s+.6*c);return{roundtrip:c,roundtripAvg:l,failCount:0,networkQuality:1-(0,o.scale)(l,i.PING_ROUNDTRIP_BEST,i.PING_ROUNDTRIP_WORST)}}if(n===r.pingFail.type){var u=e.failCount,d=void 0===u?0:u,g=(0,o.clamp01)(e.networkQuality-d/i.PING_MAX_FAILS),p=Object.assign({},e,{failCount:d+1,networkQuality:g});return d>i.PING_MAX_FAILS&&(p.roundtrip=undefined,p.roundtripAvg=undefined),p}return e}},694:function(e,t,n){"use strict";t.__esModule=!0,t.telemetryMiddleware=void 0;var o=n(2),r=n(79);function i(e,t,n,o,r,i,a){try{var c=e[i](a),s=c.value}catch(l){return void n(l)}c.done?t(s):Promise.resolve(s).then(o,r)}var a=(0,n(25).createLogger)("telemetry");t.telemetryMiddleware=function(e){var t,n;return function(c){return function(s){var l,u=s.type,d=s.payload;if("telemetry/request"!==u)return"backend/update"===u?(c(s),void(l=regeneratorRuntime.mark((function h(){var o,i,c,s;return regeneratorRuntime.wrap((function(l){for(;;)switch(l.prev=l.next){case 0:if(i=null==d||null==(o=d.config)?void 0:o.client){l.next=4;break}return a.error("backend/update payload is missing client data!"),l.abrupt("return");case 4:if(t){l.next=13;break}return l.next=7,r.storage.get("telemetry");case 7:if(l.t0=l.sent,l.t0){l.next=10;break}l.t0={};case 10:(t=l.t0).connections||(t.connections=[]),a.debug("retrieved telemetry from storage",t);case 13:c=!1,t.connections.find((function(e){return n=i,(t=e).ckey===n.ckey&&t.address===n.address&&t.computer_id===n.computer_id;var t,n}))||(c=!0,t.connections.unshift(i),t.connections.length>10&&t.connections.pop()),c&&(a.debug("saving telemetry to storage",t),r.storage.set("telemetry",t)),n&&(s=n,n=null,e.dispatch({type:"telemetry/request",payload:s}));case 18:case"end":return l.stop()}}),h)})),function(){var e=this,t=arguments;return new Promise((function(n,o){var r=l.apply(e,t);function a(e){i(r,n,o,a,c,"next",e)}function c(e){i(r,n,o,a,c,"throw",e)}a(undefined)}))})()):c(s);if(!t)return a.debug("deferred"),void(n=d);a.debug("sending");var g=(null==d?void 0:d.limits)||{},p=t.connections.slice(0,g.connections);(0,o.sendMessage)({type:"telemetry",payload:{connections:p}})}}}},695:function(e,t,n){"use strict";t.__esModule=!0,t.Panel=void 0;var o=n(0),r=n(1),i=n(3),a=n(422),c=n(146),s=n(427),l=n(696),u=n(430),d=n(145);t.Panel=function(e,t){if(Byond.IS_LTE_IE8)return(0,o.createComponentVNode)(2,g);var n=(0,a.useAudio)(t),p=(0,d.useSettings)(t),h=(0,s.useGame)(t);return(0,o.createComponentVNode)(2,i.Pane,{theme:"default"===p.theme?"light":p.theme,children:(0,o.createComponentVNode)(2,r.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Section,{fitted:!0,children:(0,o.createComponentVNode)(2,r.Flex,{mx:.5,align:"center",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{mx:.5,grow:1,overflowX:"auto",children:(0,o.createComponentVNode)(2,c.ChatTabs)}),(0,o.createComponentVNode)(2,r.Flex.Item,{mx:.5,children:(0,o.createComponentVNode)(2,u.PingIndicator)}),(0,o.createComponentVNode)(2,r.Flex.Item,{mx:.5,children:(0,o.createComponentVNode)(2,r.Button,{color:"grey",selected:n.visible,icon:"music",tooltip:"Music player",tooltipPosition:"bottom-left",onClick:function(){return n.toggle()}})}),(0,o.createComponentVNode)(2,r.Flex.Item,{mx:.5,children:(0,o.createComponentVNode)(2,r.Button,{icon:p.visible?"times":"cog",selected:p.visible,tooltip:p.visible?"Close settings":"Open settings",tooltipPosition:"bottom-left",onClick:function(){return p.toggle()}})})]})})}),n.visible&&(0,o.createComponentVNode)(2,r.Flex.Item,{mt:1,children:(0,o.createComponentVNode)(2,r.Section,{children:(0,o.createComponentVNode)(2,a.NowPlayingWidget)})}),p.visible&&(0,o.createComponentVNode)(2,r.Flex.Item,{mt:1,children:(0,o.createComponentVNode)(2,d.SettingsPanel)}),(0,o.createComponentVNode)(2,r.Flex.Item,{mt:1,grow:1,children:(0,o.createComponentVNode)(2,r.Section,{fill:!0,fitted:!0,position:"relative",children:[(0,o.createComponentVNode)(2,i.Pane.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.ChatPanel,{lineHeight:p.lineHeight})}),(0,o.createComponentVNode)(2,l.Notifications,{children:[h.connectionLostAt&&(0,o.createComponentVNode)(2,l.Notifications.Item,{rightSlot:(0,o.createComponentVNode)(2,r.Button,{color:"white",onClick:function(){return Byond.command(".reconnect")},children:"Reconnect"}),children:"You are either AFK, experiencing lag or the connection has closed."}),h.roundRestartedAt&&(0,o.createComponentVNode)(2,l.Notifications.Item,{children:"The connection has been closed because the server is restarting. Please wait while you automatically reconnect."})]})]})})]})})};var g=function(e,t){var n=(0,d.useSettings)(t);return(0,o.createComponentVNode)(2,i.Pane,{theme:"default"===n.theme?"light":n.theme,children:(0,o.createComponentVNode)(2,i.Pane.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,r.Button,{style:{position:"fixed",top:"1em",right:"2em","z-index":1e3},selected:n.visible,onClick:function(){return n.toggle()},children:"Settings"}),n.visible&&(0,o.createComponentVNode)(2,r.Flex.Item,{mt:1,children:(0,o.createComponentVNode)(2,d.SettingsPanel)})||(0,o.createComponentVNode)(2,c.ChatPanel,{lineHeight:n.lineHeight})]})})}},696:function(e,t,n){"use strict";t.__esModule=!0,t.Notifications=void 0;var o=n(0),r=n(1),i=function(e){var t=e.children;return(0,o.createVNode)(1,"div","Notifications",t,0)};t.Notifications=i;i.Item=function(e){var t=e.rightSlot,n=e.children;return(0,o.createComponentVNode)(2,r.Flex,{align:"center",className:"Notification",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{className:"Notification__content",grow:1,children:n}),t&&(0,o.createComponentVNode)(2,r.Flex.Item,{className:"Notification__rightSlot",children:t})]})}},80:function(e,t,n){"use strict";t.__esModule=!0,t.saveChatToDisk=t.changeScrollTracking=t.removeChatPage=t.toggleAcceptedType=t.updateChatPage=t.changeChatPage=t.addChatPage=t.updateMessageCount=t.rebuildChat=t.loadChat=void 0;var o=n(22),r=n(107),i=(0,o.createAction)("chat/load");t.loadChat=i;var a=(0,o.createAction)("chat/rebuild");t.rebuildChat=a;var c=(0,o.createAction)("chat/updateMessageCount");t.updateMessageCount=c;var s=(0,o.createAction)("chat/addPage",(function(){return{payload:(0,r.createPage)()}}));t.addChatPage=s;var l=(0,o.createAction)("chat/changePage");t.changeChatPage=l;var u=(0,o.createAction)("chat/updatePage");t.updateChatPage=u;var d=(0,o.createAction)("chat/toggleAcceptedType");t.toggleAcceptedType=d;var g=(0,o.createAction)("chat/removePage");t.removeChatPage=g;var p=(0,o.createAction)("chat/changeScrollTracking");t.changeScrollTracking=p;var h=(0,o.createAction)("chat/saveToDisk");t.saveChatToDisk=h}}); \ No newline at end of file diff --git a/tgui/public/tgui-common.chunk.js b/tgui/public/tgui-common.chunk.js index 1d6ba65a64..fabad4042f 100644 --- a/tgui/public/tgui-common.chunk.js +++ b/tgui/public/tgui-common.chunk.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[function(e,t,n){"use strict";t.__esModule=!0;var r=n(447);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&(t[e]=r[e])}))},function(e,t,n){"use strict";t.__esModule=!0,t.TimeDisplay=t.Tooltip=t.Tabs=t.TextArea=t.Table=t.Slider=t.Section=t.ProgressBar=t.NumberInput=t.NoticeBox=t.Modal=t.LabeledList=t.LabeledControls=t.Knob=t.Input=t.Icon=t.Grid=t.Flex=t.Dropdown=t.DraggableControl=t.Divider=t.Dimmer=t.ColorBox=t.Collapsible=t.Chart=t.ByondUi=t.Button=t.Box=t.BlockQuote=t.AnimatedNumber=void 0;var r=n(138);t.AnimatedNumber=r.AnimatedNumber;var o=n(463);t.BlockQuote=o.BlockQuote;var i=n(17);t.Box=i.Box;var a=n(191);t.Button=a.Button;var c=n(465);t.ByondUi=c.ByondUi;var u=n(467);t.Chart=u.Chart;var s=n(468);t.Collapsible=s.Collapsible;var l=n(469);t.ColorBox=l.ColorBox;var f=n(193);t.Dimmer=f.Dimmer;var d=n(194);t.Divider=d.Divider;var p=n(139);t.DraggableControl=p.DraggableControl;var h=n(470);t.Dropdown=h.Dropdown;var g=n(195);t.Flex=g.Flex;var v=n(471);t.Grid=v.Grid;var m=n(104);t.Icon=m.Icon;var y=n(197);t.Input=y.Input;var b=n(472);t.Knob=b.Knob;var w=n(473);t.LabeledControls=w.LabeledControls;var x=n(198);t.LabeledList=x.LabeledList;var _=n(474);t.Modal=_.Modal;var E=n(475);t.NoticeBox=E.NoticeBox;var k=n(140);t.NumberInput=k.NumberInput;var S=n(476);t.ProgressBar=S.ProgressBar;var C=n(477);t.Section=C.Section;var N=n(478);t.Slider=N.Slider;var A=n(196);t.Table=A.Table;var T=n(479);t.TextArea=T.TextArea;var O=n(480);t.Tabs=O.Tabs;var I=n(192);t.Tooltip=I.Tooltip;var M=n(481);t.TimeDisplay=M.TimeDisplay},function(e,t,n){"use strict";(function(e){t.__esModule=!0,t.useSharedState=t.useLocalState=t.useBackend=t.selectBackend=t.sendAct=t.sendMessage=t.backendMiddleware=t.backendReducer=t.backendSuspendSuccess=t.backendSuspendStart=t.backendSetSharedState=t.backendUpdate=void 0;var r=n(99),o=n(188),i=n(189),a=n(25),c=n(136);var u=(0,a.createLogger)("backend"),s=function(e){return{type:"backend/update",payload:e}};t.backendUpdate=s;var l=function(e,t){return{type:"backend/setSharedState",payload:{key:e,nextState:t}}};t.backendSetSharedState=l;t.backendSuspendStart=function(){return{type:"backend/suspendStart"}};var f=function(){return{type:"backend/suspendSuccess",payload:{timestamp:Date.now()}}};t.backendSuspendSuccess=f;var d={config:{},data:{},shared:{},suspended:Date.now(),suspending:!1};t.backendReducer=function(e,t){void 0===e&&(e=d);var n=t.type,r=t.payload;if("backend/update"===n){var o=Object.assign({},e.config,r.config),i=Object.assign({},e.data,r.static_data,r.data),a=Object.assign({},e.shared);if(r.shared)for(var c=0,u=Object.keys(r.shared);c=0||(o[n]=e[n]);return o}(t,["payload"]),o=Object.assign({tgui:1,window_id:window.__windowId__},r);null!==n&&n!==undefined&&(o.payload=JSON.stringify(n)),Byond.topic(o)};t.sendMessage=p;var h=function(e,t){void 0===t&&(t={}),"object"!=typeof t||null===t||Array.isArray(t)?u.error("Payload for act() must be an object, got this:",t):p({type:"act/"+e,payload:t})};t.sendAct=h;var g=function(e){return e.backend||{}};t.selectBackend=g;t.useBackend=function(e){var t=e.store,n=g(t.getState());return Object.assign({},n,{act:h})};t.useLocalState=function(e,t,n){var r,o=e.store,i=null!=(r=g(o.getState()).shared)?r:{},a=t in i?i[t]:n;return[a,function(e){o.dispatch(l(t,"function"==typeof e?e(a):e))}]};t.useSharedState=function(e,t,n){var r,o=e.store,i=null!=(r=g(o.getState()).shared)?r:{},a=t in i?i[t]:n;return[a,function(e){p({type:"setSharedState",key:t,value:JSON.stringify("function"==typeof e?e(a):e)||""})}]}}).call(this,n(101).setImmediate)},function(e,t,n){"use strict";t.__esModule=!0,t.Window=t.Pane=t.NtosWindow=t.Layout=void 0;var r=n(141);t.Layout=r.Layout;var o=n(482);t.NtosWindow=o.NtosWindow;var i=n(483);t.Pane=i.Pane;var a=n(199);t.Window=a.Window},function(e,t,n){"use strict";var r=n(7),o=n(23).f,i=n(32),a=n(26),c=n(109),u=n(152),s=n(70);e.exports=function(e,t){var n,l,f,d,p,h=e.target,g=e.global,v=e.stat;if(n=g?r:v?r[h]||c(h,{}):(r[h]||{}).prototype)for(l in t){if(d=t[l],f=e.noTargetGet?(p=o(n,l))&&p.value:n[l],!s(g?l:h+(v?".":"#")+l,e.forced)&&f!==undefined){if(typeof d==typeof f)continue;u(d,f)}(e.sham||f&&f.sham)&&i(d,"sham",!0),a(n,l,d,e)}}},function(e,t,n){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){"use strict";t.__esModule=!0,t.canRender=t.pureComponentHooks=t.shallowDiffers=t.normalizeChildren=t.classes=void 0;t.classes=function(e){for(var t="",n=0;nn?n:e};t.clamp01=function(e){return e<0?0:e>1?1:e};t.scale=function(e,t,n){return(e-t)/(n-t)};t.round=function(e,t){return!e||isNaN(e)?e:(t|=0,i=(e*=n=Math.pow(10,t))>0|-(e<0),o=Math.abs(e%1)>=.4999999999854481,r=Math.floor(e),o&&(e=r+(i>0)),(o?e:Math.round(e))/n);var n,r,o,i};t.toFixed=function(e,t){return void 0===t&&(t=0),Number(e).toFixed(Math.max(t,0))};var r=function(e,t){return t&&e>=t[0]&&e<=t[1]};t.inRange=r;t.keyOfMatchingRange=function(e,t){for(var n=0,o=Object.keys(t);n0?o(r(e),9007199254740991):0}},function(e,t,n){"use strict";var r,o=n(123),i=n(9),a=n(7),c=n(8),u=n(20),s=n(84),l=n(32),f=n(26),d=n(16).f,p=n(42),h=n(55),g=n(15),v=n(67),m=a.Int8Array,y=m&&m.prototype,b=a.Uint8ClampedArray,w=b&&b.prototype,x=m&&p(m),_=y&&p(y),E=Object.prototype,k=E.isPrototypeOf,S=g("toStringTag"),C=v("TYPED_ARRAY_TAG"),N=o&&!!h&&"Opera"!==s(a.opera),A=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},O=function(e){var t=s(e);return"DataView"===t||u(T,t)},I=function(e){return c(e)&&u(T,s(e))};for(r in T)a[r]||(N=!1);if((!N||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},N))for(r in T)a[r]&&h(a[r],x);if((!N||!_||_===E)&&(_=x.prototype,N))for(r in T)a[r]&&h(a[r].prototype,_);if(N&&p(w)!==_&&h(w,_),i&&!u(_,S))for(r in A=!0,d(_,S,{get:function(){return c(this)?this[C]:undefined}}),T)a[r]&&l(a[r],C,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:N,TYPED_ARRAY_TAG:A&&C,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(u(T,r)){var n=a[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(i){if(n)for(var r in T){var o=a[r];o&&u(o.prototype,e)&&delete o.prototype[e]}_[e]&&!n||f(_,e,n?t:N&&y[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,o;if(i){if(h){if(n)for(r in T)(o=a[r])&&u(o,e)&&delete o[e];if(x[e]&&!n)return;try{return f(x,e,n?t:N&&m[e]||t)}catch(c){}}for(r in T)!(o=a[r])||o[e]&&!n||f(o,e,t)}},isView:O,isTypedArray:I,TypedArray:x,TypedArrayPrototype:_}},function(e,t,n){"use strict";t.__esModule=!0,t.zipWith=t.zip=t.uniqBy=t.reduce=t.sortBy=t.map=t.filter=t.toKeyedArray=t.toArray=void 0;t.toArray=function(e){if(Array.isArray(e))return e;if("object"==typeof e){var t=Object.prototype.hasOwnProperty,n=[];for(var r in e)t.call(e,r)&&n.push(e[r]);return n}return[]};t.toKeyedArray=function(e,t){return void 0===t&&(t="key"),r((function(e,n){var r;return Object.assign(((r={})[t]=n,r),e)}))(e)};t.filter=function(e){return function(t){if(null===t&&t===undefined)return t;if(Array.isArray(t)){for(var n=[],r=0;rc)return 1}return 0};t.sortBy=function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&(t.style=u),t};t.computeBoxProps=v;var m=function(e){var t=e.textColor||e.color,n=e.backgroundColor;return(0,r.classes)([s(t)&&"color-"+t,s(n)&&"color-bg-"+n])};t.computeBoxClassName=m;var y=function(e){var t=e.as,n=void 0===t?"div":t,r=e.className,a=e.children,c=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["as","className","children"]);if("function"==typeof a)return a(v(e));var u="string"==typeof r?r+" "+m(c):m(c),s=v(c);return(0,o.createVNode)(i.VNodeFlags.HtmlElement,n,u,a,i.ChildFlags.UnknownChildren,s)};t.Box=y,y.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";var r=n(24);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";function r(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",apos:"'"};return e.replace(/
    /gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(/&(nbsp|amp|quot|lt|gt|apos);/g,(function(e,n){return t[n]})).replace(/&#?([0-9]+);/gi,(function(e,t){var n=parseInt(t,10);return String.fromCharCode(n)})).replace(/&#x?([0-9a-f]+);/gi,(function(e,t){var n=parseInt(t,16);return String.fromCharCode(n)}))};t.buildQueryString=function(e){return Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")}},function(e,t,n){"use strict";var r={}.hasOwnProperty;e.exports=function(e,t){return r.call(e,t)}},function(e,t,n){"use strict";var r=n(53),o=n(66),i=n(18),a=n(12),c=n(72),u=[].push,s=function(e){var t=1==e,n=2==e,s=3==e,l=4==e,f=6==e,d=5==e||f;return function(p,h,g,v){for(var m,y,b=i(p),w=o(b),x=r(h,g,3),_=a(w.length),E=0,k=v||c,S=t?k(p,_):n?k(p,0):undefined;_>E;E++)if((d||E in w)&&(y=x(m=w[E],E,b),e))if(t)S[E]=y;else if(y)switch(e){case 3:return!0;case 5:return m;case 6:return E;case 2:u.call(S,m)}else if(l)return!1;return f?-1:s||l?l:S}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6)}},function(e,t,n){"use strict";t.__esModule=!0,t.useSelector=t.useDispatch=t.createAction=t.combineReducers=t.applyMiddleware=t.createStore=void 0;var r=n(30);function o(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return i(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?o-1:0),a=1;a1?t-1:0),r=1;r2?n-2:0),o=2;o=i){var a=[t].concat(r).map((function(e){return"string"==typeof e?e:e instanceof Error?e.stack||String(e):JSON.stringify(e)})).filter((function(e){return e})).join(" ")+"\nUser Agent: "+navigator.userAgent;Byond.topic({tgui:1,window_id:window.__windowId__,type:"log",ns:t,message:a})}},s=function(e){return{debug:function(){for(var t=arguments.length,n=new Array(t),o=0;o=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?o-1:0),c=1;c1?r-1:0),i=1;i"+a+""}},function(e,t,n){"use strict";var r=n(5);e.exports=function(e){return r((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))}},function(e,t,n){"use strict";t.__esModule=!0,t.getGasColor=t.getGasLabel=t.RADIO_CHANNELS=t.CSS_COLORS=t.COLORS=t.UI_CLOSE=t.UI_DISABLED=t.UI_UPDATE=t.UI_INTERACTIVE=void 0;t.UI_INTERACTIVE=2;t.UI_UPDATE=1;t.UI_DISABLED=0;t.UI_CLOSE=-1;t.COLORS={department:{captain:"#c06616",security:"#e74c3c",medbay:"#3498db",science:"#9b59b6",engineering:"#f1c40f",cargo:"#f39c12",centcom:"#00c100",other:"#c38312"},damageType:{oxy:"#3498db",toxin:"#2ecc71",burn:"#e67e22",brute:"#e74c3c"}};t.CSS_COLORS=["black","white","red","orange","yellow","olive","green","teal","blue","violet","purple","pink","brown","grey","good","average","bad","label"];t.RADIO_CHANNELS=[{name:"Syndicate",freq:1213,color:"#a52a2a"},{name:"Red Team",freq:1215,color:"#ff4444"},{name:"Blue Team",freq:1217,color:"#3434fd"},{name:"CentCom",freq:1337,color:"#2681a5"},{name:"Supply",freq:1347,color:"#b88646"},{name:"Service",freq:1349,color:"#6ca729"},{name:"Science",freq:1351,color:"#c68cfa"},{name:"Command",freq:1353,color:"#5177ff"},{name:"Medical",freq:1355,color:"#57b8f0"},{name:"Engineering",freq:1357,color:"#f37746"},{name:"Security",freq:1359,color:"#dd3535"},{name:"AI Private",freq:1447,color:"#d65d95"},{name:"Common",freq:1459,color:"#1ecc43"}];var r=[{id:"o2",name:"Oxygen",label:"O\u2082",color:"blue"},{id:"n2",name:"Nitrogen",label:"N\u2082",color:"red"},{id:"co2",name:"Carbon Dioxide",label:"CO\u2082",color:"grey"},{id:"plasma",name:"Plasma",label:"Plasma",color:"pink"},{id:"water_vapor",name:"Water Vapor",label:"H\u2082O",color:"grey"},{id:"nob",name:"Hyper-noblium",label:"Hyper-nob",color:"teal"},{id:"n2o",name:"Nitrous Oxide",label:"N\u2082O",color:"red"},{id:"no2",name:"Nitryl",label:"NO\u2082",color:"brown"},{id:"tritium",name:"Tritium",label:"Tritium",color:"green"},{id:"bz",name:"BZ",label:"BZ",color:"purple"},{id:"stim",name:"Stimulum",label:"Stimulum",color:"purple"},{id:"pluox",name:"Pluoxium",label:"Pluoxium",color:"blue"},{id:"miasma",name:"Miasma",label:"Miasma",color:"olive"},{id:"hydrogen",name:"Hydrogen",label:"H\u2082",color:"white"}];t.getGasLabel=function(e,t){var n=String(e).toLowerCase(),o=r.find((function(e){return e.id===n||e.name.toLowerCase()===n}));return o&&o.label||t||e};t.getGasColor=function(e){var t=String(e).toLowerCase(),n=r.find((function(e){return e.id===t||e.name.toLowerCase()===t}));return n&&n.color}},function(e,t,n){"use strict";var r={}.toString;e.exports=function(e){return r.call(e).slice(8,-1)}},function(e,t,n){"use strict";var r=Math.ceil,o=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?o:r)(e)}},function(e,t,n){"use strict";t.__esModule=!0,t.formatDb=t.formatMoney=t.formatPower=t.formatSiUnit=void 0;var r=n(11),o=["f","p","n","\u03bc","m"," ","k","M","G","T","P","E","Z","Y"],i=o.indexOf(" "),a=function(e,t,n){if(void 0===t&&(t=-i),void 0===n&&(n=""),"number"!=typeof e||!Number.isFinite(e))return e;var a=Math.floor(Math.log10(e)),c=Math.floor(Math.max(3*t,a)),u=Math.floor(a/3),s=Math.floor(c/3),l=(0,r.clamp)(i+s,0,o.length),f=o[l],d=e/Math.pow(1e3,s),p=u>t?2+3*s-c:0;return((0,r.toFixed)(d,p)+" "+f+n).trim()};t.formatSiUnit=a;t.formatPower=function(e,t){return void 0===t&&(t=0),a(e,t,"W")};t.formatMoney=function(e,t){if(void 0===t&&(t=0),!Number.isFinite(e))return e;var n=(0,r.round)(e,t);t>0&&(n=(0,r.toFixed)(e,t));var o=(n=String(n)).length,i=n.indexOf(".");-1===i&&(i=o);for(var a="",c=0;c0&&c=0?"+":t<0?"\u2013":"",o=Math.abs(t);return n+(o=o===Infinity?"Inf":(0,r.toFixed)(o,2))+" dB"}},function(e,t,n){"use strict";var r=n(8);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){"use strict";var r=n(153),o=n(7),i=function(e){return"function"==typeof e?e:undefined};e.exports=function(e,t){return arguments.length<2?i(r[e])||i(o[e]):r[e]&&r[e][t]||o[e]&&o[e][t]}},function(e,t,n){"use strict";var r=n(20),o=n(18),i=n(82),a=n(122),c=i("IE_PROTO"),u=Object.prototype;e.exports=a?Object.getPrototypeOf:function(e){return e=o(e),r(e,c)?e[c]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?u:null}},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var r=n(5);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){throw 1},1)}))}},function(e,t,n){"use strict";var r=n(10),o=n(28),i=n(15)("species");e.exports=function(e,t){var n,a=r(e).constructor;return a===undefined||(n=r(a)[i])==undefined?t:o(n)}},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(9),a=n(134),c=n(13),u=n(87),s=n(60),l=n(51),f=n(32),d=n(12),p=n(168),h=n(182),g=n(40),v=n(20),m=n(84),y=n(8),b=n(48),w=n(55),x=n(52).f,_=n(183),E=n(21).forEach,k=n(59),S=n(16),C=n(23),N=n(33),A=n(89),T=N.get,O=N.set,I=S.f,M=C.f,L=Math.round,V=o.RangeError,R=u.ArrayBuffer,P=u.DataView,B=c.NATIVE_ARRAY_BUFFER_VIEWS,D=c.TYPED_ARRAY_TAG,j=c.TypedArray,F=c.TypedArrayPrototype,K=c.aTypedArrayConstructor,z=c.isTypedArray,Y=function(e,t){for(var n=0,r=t.length,o=new(K(e))(r);r>n;)o[n]=t[n++];return o},U=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},$=function(e){var t;return e instanceof R||"ArrayBuffer"==(t=m(e))||"SharedArrayBuffer"==t},H=function(e,t){return z(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},W=function(e,t){return H(e,t=g(t,!0))?l(2,e[t]):M(e,t)},q=function(e,t,n){return!(H(e,t=g(t,!0))&&y(n)&&v(n,"value"))||v(n,"get")||v(n,"set")||n.configurable||v(n,"writable")&&!n.writable||v(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};i?(B||(C.f=W,S.f=q,U(F,"buffer"),U(F,"byteOffset"),U(F,"byteLength"),U(F,"length")),r({target:"Object",stat:!0,forced:!B},{getOwnPropertyDescriptor:W,defineProperty:q}),e.exports=function(e,t,n){var i=e.match(/\d+$/)[0]/8,c=e+(n?"Clamped":"")+"Array",u="get"+e,l="set"+e,g=o[c],v=g,m=v&&v.prototype,S={},C=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[u](t*i+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var o=T(e);n&&(r=(r=L(r))<0?0:r>255?255:255&r),o.view[l](t*i+o.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};B?a&&(v=t((function(e,t,n,r){return s(e,v,c),A(y(t)?$(t)?r!==undefined?new g(t,h(n,i),r):n!==undefined?new g(t,h(n,i)):new g(t):z(t)?Y(v,t):_.call(v,t):new g(p(t)),e,v)})),w&&w(v,j),E(x(g),(function(e){e in v||f(v,e,g[e])})),v.prototype=m):(v=t((function(e,t,n,r){s(e,v,c);var o,a,u,l=0,f=0;if(y(t)){if(!$(t))return z(t)?Y(v,t):_.call(v,t);o=t,f=h(n,i);var g=t.byteLength;if(r===undefined){if(g%i)throw V("Wrong length");if((a=g-f)<0)throw V("Wrong length")}else if((a=d(r)*i)+f>g)throw V("Wrong length");u=a/i}else u=p(t),o=new R(a=u*i);for(O(e,{buffer:o,byteOffset:f,byteLength:a,length:u,view:new P(o)});l"+e+"<\/script>"},h=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(o){}var e,t;h=r?function(e){e.write(p("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):((t=s("iframe")).style.display="none",u.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(p("document.F=Object")),e.close(),e.F);for(var n=a.length;n--;)delete h.prototype[a[n]];return h()};c[f]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(d.prototype=o(e),n=new d,d.prototype=null,n[f]=e):n=h(),t===undefined?n:i(n,t)}},function(e,t,n){"use strict";var r=n(16).f,o=n(20),i=n(15)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){"use strict";var r=n(15),o=n(48),i=n(16),a=r("unscopables"),c=Array.prototype;c[a]==undefined&&i.f(c,a,{configurable:!0,value:o(null)}),e.exports=function(e){c[a][e]=!0}},function(e,t,n){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var r=n(154),o=n(113).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(28);e.exports=function(e,t,n){if(r(e),t===undefined)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){"use strict";var r=n(40),o=n(16),i=n(51);e.exports=function(e,t,n){var a=r(t);a in e?o.f(e,a,i(0,n)):e[a]=n}},function(e,t,n){"use strict";var r=n(10),o=n(166);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),t?e.call(n,i):n.__proto__=i,n}}():undefined)},function(e,t,n){"use strict";var r=n(68),o=n(8),i=n(20),a=n(16).f,c=n(67),u=n(76),s=c("meta"),l=0,f=Object.isExtensible||function(){return!0},d=function(e){a(e,s,{value:{objectID:"O"+ ++l,weakData:{}}})},p=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,s)){if(!f(e))return"F";if(!t)return"E";d(e)}return e[s].objectID},getWeakData:function(e,t){if(!i(e,s)){if(!f(e))return!0;if(!t)return!1;d(e)}return e[s].weakData},onFreeze:function(e){return u&&p.REQUIRED&&f(e)&&!i(e,s)&&d(e),e}};r[s]=!0},function(e,t,n){"use strict";t.__esModule=!0,t.removeScrollableNode=t.addScrollableNode=t.canStealFocus=t.setupGlobalEvents=t.globalEvents=void 0;var r=n(185),o=n(78),i=(n(25),new r.EventEmitter);t.globalEvents=i;var a,c=!1;t.setupGlobalEvents=function(e){void 0===e&&(e={}),c=!!e.ignoreWindowFocus};var u=!0,s=function y(e,t){c?u=!0:(a&&(clearTimeout(a),a=null),t?a=setTimeout((function(){return y(e)})):u!==e&&(u=e,i.emit(e?"window-focus":"window-blur"),i.emit("window-focus-change",e)))},l=null,f=function(e){var t=String(e.tagName).toLowerCase();return"input"===t||"textarea"===t};t.canStealFocus=f;var d=function b(){l&&(l.removeEventListener("blur",b),l=null)},p=null,h=null,g=[];t.addScrollableNode=function(e){g.push(e)};t.removeScrollableNode=function(e){var t=g.indexOf(e);t>=0&&g.splice(t,1)};window.addEventListener("mousemove",(function(e){var t=e.target;t!==h&&(h=t,function(e){if(!l&&u)for(var t=document.body;e&&e!==t;){if(g.includes(e)){if(e.contains(p))return;return p=e,void e.focus()}e=e.parentNode}}(t))})),window.addEventListener("focusin",(function(e){if(h=null,p=e.target,s(!0),f(e.target))return t=e.target,d(),void(l=t).addEventListener("blur",d);var t})),window.addEventListener("focusout",(function(e){h=null,s(!1,!0)})),window.addEventListener("blur",(function(e){h=null,s(!1,!0)})),window.addEventListener("beforeunload",(function(e){s(!1)}));var v={},m=function(){function e(e,t,n){this.event=e,this.type=t,this.code=window.event?e.which:e.keyCode,this.ctrl=e.ctrlKey,this.shift=e.shiftKey,this.alt=e.altKey,this.repeat=!!n}var t=e.prototype;return t.hasModifierKeys=function(){return this.ctrl||this.alt||this.shift},t.isModifierKey=function(){return this.code===o.KEY_CTRL||this.code===o.KEY_SHIFT||this.code===o.KEY_ALT},t.isDown=function(){return"keydown"===this.type},t.isUp=function(){return"keyup"===this.type},t.toString=function(){return this._str||(this._str="",this.ctrl&&(this._str+="Ctrl+"),this.alt&&(this._str+="Alt+"),this.shift&&(this._str+="Shift+"),this.code>=48&&this.code<=90?this._str+=String.fromCharCode(this.code):this.code>=o.KEY_F1&&this.code<=o.KEY_F12?this._str+="F"+(this.code-111):this._str+="["+this.code+"]"),this._str},e}();document.addEventListener("keydown",(function(e){if(!f(e.target)){var t=e.keyCode,n=new m(e,"keydown",v[t]);i.emit("keydown",n),i.emit("key",n),v[t]=!0}})),document.addEventListener("keyup",(function(e){if(!f(e.target)){var t=e.keyCode,n=new m(e,"keyup");i.emit("keyup",n),i.emit("key",n),v[t]=!1}}))},function(e,t,n){"use strict";var r=n(37);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){"use strict";var r=n(41),o=n(16),i=n(15),a=n(9),c=i("species");e.exports=function(e){var t=r(e),n=o.f;a&&t&&!t[c]&&n(t,c,{configurable:!0,get:function(){return this}})}},function(e,t,n){"use strict";e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},function(e,t,n){"use strict";var r=n(10),o=n(118),i=n(12),a=n(53),c=n(119),u=n(162),s=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,t,n,l,f){var d,p,h,g,v,m,y,b=a(t,n,l?2:1);if(f)d=e;else{if("function"!=typeof(p=c(e)))throw TypeError("Target is not iterable");if(o(p)){for(h=0,g=i(e.length);g>h;h++)if((v=l?b(r(y=e[h])[0],y[1]):b(e[h]))&&v instanceof s)return v;return new s(!1)}d=p.call(e)}for(m=d.next;!(y=m.call(d)).done;)if("object"==typeof(v=u(d,b,y.value,l))&&v&&v instanceof s)return v;return new s(!1)}).stop=function(e){return new s(!0,e)}},function(e,t,n){"use strict";var r=n(24),o="["+n(91)+"]",i=RegExp("^"+o+o+"*"),a=RegExp(o+o+"*$"),c=function(e){return function(t){var n=String(r(t));return 1&e&&(n=n.replace(i,"")),2&e&&(n=n.replace(a,"")),n}};e.exports={start:c(1),end:c(2),trim:c(3)}},function(e,t,n){"use strict";t.__esModule=!0,t.assetMiddleware=t.resolveAsset=t.loadStyleSheet=void 0;var r=n(458),o=(0,n(25).createLogger)("assets"),i=[/v4shim/i],a={},c={},u=function l(e,t){if(void 0===t&&(t=1),!a[e]){a[e]=!0,o.log("loading stylesheet '"+e+"'");var n=(0,r.loadCSS)(e);n.addEventListener("load",(function(){if(!s(n,e))return n.parentNode.removeChild(n),n=null,a[e]=null,t>=5?void o.error("Error: Failed to load the stylesheet '"+e+"' after 5 attempts.\nIt was either not found, or you're trying to load an empty stylesheet that has no CSS rules in it."):void setTimeout((function(){return l(e,t+1)}),3e3)}))}};t.loadStyleSheet=u;var s=function(e,t){var n=e.sheet;if(n)return n.rules.length>0;for(var r=document.styleSheets,i=r.length,a=0;a0}return o.warn("Warning: stylesheet '"+t+"' was not found in the DOM"),!1};t.resolveAsset=function(e){return c[e]||e};t.assetMiddleware=function(e){return function(e){return function(t){var n=t.type,r=t.payload;if("asset/stylesheet"!==n)if("asset/mappings"!==n)e(t);else for(var o=function(){var e=s[a];if(i.some((function(t){return t.test(e)})))return"continue";var t=r[e],n=e.split(".").pop();c[e]=t,"css"===n&&u(t)},a=0,s=Object.keys(r);al;)if((c=u[l++])!=c)return!0}else for(;s>l;l++)if((e||l in u)&&u[l]===n)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},function(e,t,n){"use strict";var r=n(5),o=/#|\.prototype\./,i=function(e,t){var n=c[a(e)];return n==s||n!=u&&("function"==typeof t?r(t):!!t)},a=i.normalize=function(e){return String(e).replace(o,".").toLowerCase()},c=i.data={},u=i.NATIVE="N",s=i.POLYFILL="P";e.exports=i},function(e,t,n){"use strict";var r=n(154),o=n(113);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(8),o=n(58),i=n(15)("species");e.exports=function(e,t){var n;return o(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=undefined):n=undefined),new(n===undefined?Array:n)(0===t?0:t)}},function(e,t,n){"use strict";var r=n(5),o=n(15),i=n(116),a=o("species");e.exports=function(e){return i>=51||!r((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var r=n(26);e.exports=function(e,t,n){for(var o in t)r(e,o,t[o],n);return e}},function(e,t,n){"use strict";var r=n(5);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(e,t,n){"use strict";var r=n(10);e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,n){"use strict";t.__esModule=!0,t.KEY_QUOTE=t.KEY_RIGHT_BRACKET=t.KEY_BACKSLASH=t.KEY_LEFT_BRACKET=t.KEY_SLASH=t.KEY_PERIOD=t.KEY_MINUS=t.KEY_COMMA=t.KEY_EQUAL=t.KEY_SEMICOLON=t.KEY_F12=t.KEY_F11=t.KEY_F10=t.KEY_F9=t.KEY_F8=t.KEY_F7=t.KEY_F6=t.KEY_F5=t.KEY_F4=t.KEY_F3=t.KEY_F2=t.KEY_F1=t.KEY_Z=t.KEY_Y=t.KEY_X=t.KEY_W=t.KEY_V=t.KEY_U=t.KEY_T=t.KEY_S=t.KEY_R=t.KEY_Q=t.KEY_P=t.KEY_O=t.KEY_N=t.KEY_M=t.KEY_L=t.KEY_K=t.KEY_J=t.KEY_I=t.KEY_H=t.KEY_G=t.KEY_F=t.KEY_E=t.KEY_D=t.KEY_C=t.KEY_B=t.KEY_A=t.KEY_9=t.KEY_8=t.KEY_7=t.KEY_6=t.KEY_5=t.KEY_4=t.KEY_3=t.KEY_2=t.KEY_1=t.KEY_0=t.KEY_DELETE=t.KEY_INSERT=t.KEY_DOWN=t.KEY_RIGHT=t.KEY_UP=t.KEY_LEFT=t.KEY_HOME=t.KEY_END=t.KEY_PAGEDOWN=t.KEY_PAGEUP=t.KEY_SPACE=t.KEY_ESCAPE=t.KEY_CAPSLOCK=t.KEY_PAUSE=t.KEY_ALT=t.KEY_CTRL=t.KEY_SHIFT=t.KEY_ENTER=t.KEY_TAB=t.KEY_BACKSPACE=void 0;t.KEY_BACKSPACE=8;t.KEY_TAB=9;t.KEY_ENTER=13;t.KEY_SHIFT=16;t.KEY_CTRL=17;t.KEY_ALT=18;t.KEY_PAUSE=19;t.KEY_CAPSLOCK=20;t.KEY_ESCAPE=27;t.KEY_SPACE=32;t.KEY_PAGEUP=33;t.KEY_PAGEDOWN=34;t.KEY_END=35;t.KEY_HOME=36;t.KEY_LEFT=37;t.KEY_UP=38;t.KEY_RIGHT=39;t.KEY_DOWN=40;t.KEY_INSERT=45;t.KEY_DELETE=46;t.KEY_0=48;t.KEY_1=49;t.KEY_2=50;t.KEY_3=51;t.KEY_4=52;t.KEY_5=53;t.KEY_6=54;t.KEY_7=55;t.KEY_8=56;t.KEY_9=57;t.KEY_A=65;t.KEY_B=66;t.KEY_C=67;t.KEY_D=68;t.KEY_E=69;t.KEY_F=70;t.KEY_G=71;t.KEY_H=72;t.KEY_I=73;t.KEY_J=74;t.KEY_K=75;t.KEY_L=76;t.KEY_M=77;t.KEY_N=78;t.KEY_O=79;t.KEY_P=80;t.KEY_Q=81;t.KEY_R=82;t.KEY_S=83;t.KEY_T=84;t.KEY_U=85;t.KEY_V=86;t.KEY_W=87;t.KEY_X=88;t.KEY_Y=89;t.KEY_Z=90;t.KEY_F1=112;t.KEY_F2=113;t.KEY_F3=114;t.KEY_F4=115;t.KEY_F5=116;t.KEY_F6=117;t.KEY_F7=118;t.KEY_F8=119;t.KEY_F9=120;t.KEY_F10=121;t.KEY_F11=122;t.KEY_F12=123;t.KEY_SEMICOLON=186;t.KEY_EQUAL=187;t.KEY_COMMA=188;t.KEY_MINUS=189;t.KEY_PERIOD=190;t.KEY_SLASH=191;t.KEY_LEFT_BRACKET=219;t.KEY_BACKSLASH=220;t.KEY_RIGHT_BRACKET=221;t.KEY_QUOTE=222},,function(e,t,n){"use strict";var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(o){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);t.f=i?function(e){var t=o(this,e);return!!t&&t.enumerable}:r},function(e,t,n){"use strict";var r=n(111),o=n(67),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e,t,n){"use strict";var r=n(41);e.exports=r("navigator","userAgent")||""},function(e,t,n){"use strict";var r=n(120),o=n(37),i=n(15)("toStringTag"),a="Arguments"==o(function(){return arguments}());e.exports=r?o:function(e){var t,n,r;return e===undefined?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(n){}}(t=Object(e),i))?n:a?o(t):"Object"==(r=o(t))&&"function"==typeof t.callee?"Arguments":r}},function(e,t,n){"use strict";var r=n(15)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},"return":function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(c){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var i={};i[r]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(c){}return n}},function(e,t,n){"use strict";var r=n(28),o=n(18),i=n(66),a=n(12),c=function(e){return function(t,n,c,u){r(n);var s=o(t),l=i(s),f=a(s.length),d=e?f-1:0,p=e?-1:1;if(c<2)for(;;){if(d in l){u=l[d],d+=p;break}if(d+=p,e?d<0:f<=d)throw TypeError("Reduce of empty array with no initial value")}for(;e?d>=0:f>d;d+=p)d in l&&(u=n(u,l[d],d,s));return u}};e.exports={left:c(!1),right:c(!0)}},function(e,t,n){"use strict";var r=n(7),o=n(9),i=n(123),a=n(32),c=n(75),u=n(5),s=n(60),l=n(38),f=n(12),d=n(168),p=n(267),h=n(42),g=n(55),v=n(52).f,m=n(16).f,y=n(117),b=n(49),w=n(33),x=w.get,_=w.set,E=r.ArrayBuffer,k=E,S=r.DataView,C=S&&S.prototype,N=Object.prototype,A=r.RangeError,T=p.pack,O=p.unpack,I=function(e){return[255&e]},M=function(e){return[255&e,e>>8&255]},L=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},V=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},R=function(e){return T(e,23,4)},P=function(e){return T(e,52,8)},B=function(e,t){m(e.prototype,t,{get:function(){return x(this)[t]}})},D=function(e,t,n,r){var o=d(n),i=x(e);if(o+t>i.byteLength)throw A("Wrong index");var a=x(i.buffer).bytes,c=o+i.byteOffset,u=a.slice(c,c+t);return r?u:u.reverse()},j=function(e,t,n,r,o,i){var a=d(n),c=x(e);if(a+t>c.byteLength)throw A("Wrong index");for(var u=x(c.buffer).bytes,s=a+c.byteOffset,l=r(+o),f=0;fY;)(F=z[Y++])in k||a(k,F,E[F]);K.constructor=k}g&&h(C)!==N&&g(C,N);var U=new S(new k(2)),$=C.setInt8;U.setInt8(0,2147483648),U.setInt8(1,2147483649),!U.getInt8(0)&&U.getInt8(1)||c(C,{setInt8:function(e,t){$.call(this,e,t<<24>>24)},setUint8:function(e,t){$.call(this,e,t<<24>>24)}},{unsafe:!0})}else k=function(e){s(this,k,"ArrayBuffer");var t=d(e);_(this,{bytes:y.call(new Array(t),0),byteLength:t}),o||(this.byteLength=t)},S=function(e,t,n){s(this,S,"DataView"),s(e,k,"DataView");var r=x(e).byteLength,i=l(t);if(i<0||i>r)throw A("Wrong offset");if(i+(n=n===undefined?r-i:f(n))>r)throw A("Wrong length");_(this,{buffer:e,byteLength:n,byteOffset:i}),o||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},o&&(B(k,"byteLength"),B(S,"buffer"),B(S,"byteLength"),B(S,"byteOffset")),c(S.prototype,{getInt8:function(e){return D(this,1,e)[0]<<24>>24},getUint8:function(e){return D(this,1,e)[0]},getInt16:function(e){var t=D(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=D(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return V(D(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return V(D(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return O(D(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return O(D(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){j(this,1,e,I,t)},setUint8:function(e,t){j(this,1,e,I,t)},setInt16:function(e,t){j(this,2,e,M,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){j(this,2,e,M,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){j(this,4,e,L,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){j(this,4,e,L,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){j(this,4,e,R,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){j(this,8,e,P,t,arguments.length>2?arguments[2]:undefined)}});b(k,"ArrayBuffer"),b(S,"DataView"),e.exports={ArrayBuffer:k,DataView:S}},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(70),a=n(26),c=n(56),u=n(61),s=n(60),l=n(8),f=n(5),d=n(85),p=n(49),h=n(89);e.exports=function(e,t,n){var g=-1!==e.indexOf("Map"),v=-1!==e.indexOf("Weak"),m=g?"set":"add",y=o[e],b=y&&y.prototype,w=y,x={},_=function(e){var t=b[e];a(b,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(v&&!l(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return v&&!l(e)?undefined:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(v&&!l(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(i(e,"function"!=typeof y||!(v||b.forEach&&!f((function(){(new y).entries().next()})))))w=n.getConstructor(t,e,g,m),c.REQUIRED=!0;else if(i(e,!0)){var E=new w,k=E[m](v?{}:-0,1)!=E,S=f((function(){E.has(1)})),C=d((function(e){new y(e)})),N=!v&&f((function(){for(var e=new y,t=5;t--;)e[m](t,t);return!e.has(-0)}));C||((w=t((function(t,n){s(t,w,e);var r=h(new y,t,w);return n!=undefined&&u(n,r[m],r,g),r}))).prototype=b,b.constructor=w),(S||N)&&(_("delete"),_("has"),g&&_("get")),(N||k)&&_(m),v&&b.clear&&delete b.clear}return x[e]=w,r({global:!0,forced:w!=y},x),p(w,e),v||n.setStrong(w,e,g),w}},function(e,t,n){"use strict";var r=n(8),o=n(55);e.exports=function(e,t,n){var i,a;return o&&"function"==typeof(i=t.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(e,a),e}},function(e,t,n){"use strict";var r=Math.expm1,o=Math.exp;e.exports=!r||r(10)>22025.465794806718||r(10)<22025.465794806718||-2e-17!=r(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:o(e)-1}:r},function(e,t,n){"use strict";e.exports="\t\n\x0B\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},function(e,t,n){"use strict";var r=n(43),o=n(7),i=n(5);e.exports=r||!i((function(){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete o[e]}))},function(e,t,n){"use strict";var r=n(8),o=n(37),i=n(15)("match");e.exports=function(e){var t;return r(e)&&((t=e[i])!==undefined?!!t:"RegExp"==o(e))}},function(e,t,n){"use strict";var r=n(5);function o(e,t){return RegExp(e,t)}t.UNSUPPORTED_Y=r((function(){var e=o("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),t.BROKEN_CARET=r((function(){var e=o("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},function(e,t,n){"use strict";var r,o,i=n(77),a=n(94),c=RegExp.prototype.exec,u=String.prototype.replace,s=c,l=(r=/a/,o=/b*/g,c.call(r,"a"),c.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),f=a.UNSUPPORTED_Y||a.BROKEN_CARET,d=/()??/.exec("")[1]!==undefined;(l||d||f)&&(s=function(e){var t,n,r,o,a=this,s=f&&a.sticky,p=i.call(a),h=a.source,g=0,v=e;return s&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),v=String(e).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==e[a.lastIndex-1])&&(h="(?: "+h+")",v=" "+v,g++),n=new RegExp("^(?:"+h+")",p)),d&&(n=new RegExp("^"+h+"$(?!\\s)",p)),l&&(t=a.lastIndex),r=c.call(s?n:a,v),s?r?(r.input=r.input.slice(g),r[0]=r[0].slice(g),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:l&&r&&(a.lastIndex=a.global?r.index+r[0].length:t),d&&r&&r.length>1&&u.call(r[0],n,(function(){for(o=1;o")})),l="$0"==="a".replace(/./,"$0"),f=i("replace"),d=!!/./[f]&&""===/./[f]("a","$0"),p=!o((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,f){var h=i(e),g=!o((function(){var t={};return t[h]=function(){return 7},7!=""[e](t)})),v=g&&!o((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[u]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t}));if(!g||!v||"replace"===e&&(!s||!l||d)||"split"===e&&!p){var m=/./[h],y=n(h,""[e],(function(e,t,n,r,o){return t.exec===a?g&&!o?{done:!0,value:m.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:l,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:d}),b=y[0],w=y[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}f&&c(RegExp.prototype[h],"sham",!0)}},function(e,t,n){"use strict";var r=n(130).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},function(e,t,n){"use strict";var r=n(37),o=n(95);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var i=n.call(e,t);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(e,t)}},function(e,t,n){"use strict";var r;t.__esModule=!0,t.perf=void 0;null==(r=window.performance)||r.now;var o={mark:function(e,t){0},measure:function(e,t){}};t.perf=o},function(e,t,n){"use strict";t.__esModule=!0,t.setupHotReloading=t.sendLogEntry=t.sendMessage=t.subscribe=void 0;var r=[];t.subscribe=function(e){return r.push(e)};t.sendMessage=function(e){};t.sendLogEntry=function(e,t){};t.setupHotReloading=function(){0}},function(e,t,n){"use strict";(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(459),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||void 0,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||void 0}).call(this,n(80))},function(e,t,n){"use strict";function r(e,t,n,r,o,i,a){try{var c=e[i](a),u=c.value}catch(s){return void n(s)}c.done?t(u):Promise.resolve(u).then(r,o)}function o(e){return function(){var t=this,n=arguments;return new Promise((function(o,i){var a=e.apply(t,n);function c(e){r(a,o,i,c,u,"next",e)}function u(e){r(a,o,i,c,u,"throw",e)}c(undefined)}))}}t.__esModule=!0,t.storage=t.IMPL_INDEXED_DB=t.IMPL_LOCAL_STORAGE=t.IMPL_MEMORY=void 0;t.IMPL_MEMORY=0;t.IMPL_LOCAL_STORAGE=1;t.IMPL_INDEXED_DB=2;var i=function(e){return function(){try{return Boolean(e())}catch(t){return!1}}},a=i((function(){return window.localStorage&&window.localStorage.getItem})),c=i((function(){return(window.indexedDB||window.msIndexedDB)&&(window.IDBTransaction||window.msIDBTransaction)})),u=function(){function e(){this.impl=0,this.store={}}var t=e.prototype;return t.get=function(e){return this.store[e]},t.set=function(e,t){this.store[e]=t},t.remove=function(e){this.store[e]=undefined},t.clear=function(){this.store={}},e}(),s=function(){function e(){this.impl=1}var t=e.prototype;return t.get=function(e){var t=localStorage.getItem(e);if("string"==typeof t)return JSON.parse(t)},t.set=function(e,t){localStorage.setItem(e,JSON.stringify(t))},t.remove=function(e){localStorage.removeItem(e)},t.clear=function(){localStorage.clear()},e}(),l=function(){function e(){this.impl=2,this.dbPromise=new Promise((function(e,t){var n=(window.indexedDB||window.msIndexedDB).open("tgui",1);n.onupgradeneeded=function(){try{n.result.createObjectStore("storage-v1")}catch(e){t(new Error("Failed to upgrade IDB: "+n.error))}},n.onsuccess=function(){return e(n.result)},n.onerror=function(){t(new Error("Failed to open IDB: "+n.error))}}))}var t=e.prototype;return t.getStore=function(e){return this.dbPromise.then((function(t){return t.transaction("storage-v1",e).objectStore("storage-v1")}))},t.get=function(){var e=o(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getStore("readonly");case 2:return n=t.sent,t.abrupt("return",new Promise((function(t,r){var o=n.get(e);o.onsuccess=function(){return t(o.result)},o.onerror=function(){return r(o.error)}})));case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.set=function(){var e=o(regeneratorRuntime.mark((function t(e,n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return null===n&&(n=undefined),t.next=3,this.getStore("readwrite");case 3:t.sent.put(n,e);case 5:case"end":return t.stop()}}),t,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.remove=function(){var e=o(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getStore("readwrite");case 2:t.sent["delete"](e);case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.clear=function(){var e=o(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getStore("readwrite");case 2:e.sent.clear();case 4:case"end":return e.stop()}}),t,this)})));return function(){return e.apply(this,arguments)}}(),e}(),f=new(function(){function e(){this.backendPromise=o(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!c()){e.next=10;break}return e.prev=1,t=new l,e.next=5,t.dbPromise;case 5:return e.abrupt("return",t);case 8:e.prev=8,e.t0=e["catch"](1);case 10:if(!a()){e.next=12;break}return e.abrupt("return",new s);case 12:return e.abrupt("return",new u);case 13:case"end":return e.stop()}}),e,null,[[1,8]])})))()}var t=e.prototype;return t.get=function(){var e=o(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return n=t.sent,t.abrupt("return",n.get(e));case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.set=function(){var e=o(regeneratorRuntime.mark((function t(e,n){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return r=t.sent,t.abrupt("return",r.set(e,n));case 4:case"end":return t.stop()}}),t,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.remove=function(){var e=o(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return n=t.sent,t.abrupt("return",n.remove(e));case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.clear=function(){var e=o(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return e=t.sent,t.abrupt("return",e.clear());case 4:case"end":return t.stop()}}),t,this)})));return function(){return e.apply(this,arguments)}}(),e}());t.storage=f},function(e,t,n){"use strict";t.__esModule=!0,t.vecNormalize=t.vecLength=t.vecInverse=t.vecScale=t.vecDivide=t.vecMultiply=t.vecSubtract=t.vecAdd=void 0;var r=n(14),o=function(e,t){return e+t},i=function(e,t){return e-t},a=function(e,t){return e*t},c=function(e,t){return e/t};t.vecAdd=function(){for(var e=arguments.length,t=new Array(e),n=0;n=0||(o[n]=e[n]);return o}(e,["name","size","spin","className","style","rotation"]);n&&(l["font-size"]=100*n+"%"),"number"==typeof f&&(l.transform="rotate("+f+"deg)");var p=a.test(t),h=t.replace(a,"");return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({as:"i",className:(0,o.classes)([u,p?"far":"fas","fa-"+h,c&&"fa-spin"]),style:l},d)))};t.Icon=c,c.defaultHooks=o.pureComponentHooks},,,,function(e,t,n){"use strict";var r=n(7),o=n(8),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},function(e,t,n){"use strict";var r=n(7),o=n(32);e.exports=function(e,t){try{o(r,e,t)}catch(n){r[e]=t}return t}},function(e,t,n){"use strict";var r=n(150),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return o.call(e)}),e.exports=r.inspectSource},function(e,t,n){"use strict";var r=n(43),o=n(150);(e.exports=function(e,t){return o[e]||(o[e]=t!==undefined?t:{})})("versions",[]).push({version:"3.6.5",mode:r?"pure":"global",copyright:"\xa9 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t,n){"use strict";var r=n(41),o=n(52),i=n(114),a=n(10);e.exports=r("Reflect","ownKeys")||function(e){var t=o.f(a(e)),n=i.f;return n?t.concat(n(e)):t}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var r=n(5);e.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},function(e,t,n){"use strict";var r,o,i=n(7),a=n(83),c=i.process,u=c&&c.versions,s=u&&u.v8;s?o=(r=s.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),e.exports=o&&+o},function(e,t,n){"use strict";var r=n(18),o=n(47),i=n(12);e.exports=function(e){for(var t=r(this),n=i(t.length),a=arguments.length,c=o(a>1?arguments[1]:undefined,n),u=a>2?arguments[2]:undefined,s=u===undefined?n:o(u,n);s>c;)t[c++]=e;return t}},function(e,t,n){"use strict";var r=n(15),o=n(74),i=r("iterator"),a=Array.prototype;e.exports=function(e){return e!==undefined&&(o.Array===e||a[i]===e)}},function(e,t,n){"use strict";var r=n(84),o=n(74),i=n(15)("iterator");e.exports=function(e){if(e!=undefined)return e[i]||e["@@iterator"]||o[r(e)]}},function(e,t,n){"use strict";var r={};r[n(15)("toStringTag")]="z",e.exports="[object z]"===String(r)},function(e,t,n){"use strict";var r=n(4),o=n(164),i=n(42),a=n(55),c=n(49),u=n(32),s=n(26),l=n(15),f=n(43),d=n(74),p=n(165),h=p.IteratorPrototype,g=p.BUGGY_SAFARI_ITERATORS,v=l("iterator"),m=function(){return this};e.exports=function(e,t,n,l,p,y,b){o(n,t,l);var w,x,_,E=function(e){if(e===p&&A)return A;if(!g&&e in C)return C[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},k=t+" Iterator",S=!1,C=e.prototype,N=C[v]||C["@@iterator"]||p&&C[p],A=!g&&N||E(p),T="Array"==t&&C.entries||N;if(T&&(w=i(T.call(new e)),h!==Object.prototype&&w.next&&(f||i(w)===h||(a?a(w,h):"function"!=typeof w[v]&&u(w,v,m)),c(w,k,!0,!0),f&&(d[k]=m))),"values"==p&&N&&"values"!==N.name&&(S=!0,A=function(){return N.call(this)}),f&&!b||C[v]===A||u(C,v,A),d[t]=A,p)if(x={values:E("values"),keys:y?A:E("keys"),entries:E("entries")},b)for(_ in x)(g||S||!(_ in C))&&s(C,_,x[_]);else r({target:t,proto:!0,forced:g||S},x);return x}},function(e,t,n){"use strict";var r=n(5);e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},function(e,t,n){"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},function(e,t,n){"use strict";var r=n(12),o=n(125),i=n(24),a=Math.ceil,c=function(e){return function(t,n,c){var u,s,l=String(i(t)),f=l.length,d=c===undefined?" ":String(c),p=r(n);return p<=f||""==d?l:(u=p-f,(s=o.call(d,a(u/d.length))).length>u&&(s=s.slice(0,u)),e?l+s:s+l)}};e.exports={start:c(!1),end:c(!0)}},function(e,t,n){"use strict";var r=n(38),o=n(24);e.exports="".repeat||function(e){var t=String(o(this)),n="",i=r(e);if(i<0||i==Infinity)throw RangeError("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(t+=t))1&i&&(n+=t);return n}},function(e,t,n){"use strict";e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,t,n){"use strict";var r,o,i,a=n(7),c=n(5),u=n(37),s=n(53),l=n(157),f=n(108),d=n(177),p=a.location,h=a.setImmediate,g=a.clearImmediate,v=a.process,m=a.MessageChannel,y=a.Dispatch,b=0,w={},x=function(e){if(w.hasOwnProperty(e)){var t=w[e];delete w[e],t()}},_=function(e){return function(){x(e)}},E=function(e){x(e.data)},k=function(e){a.postMessage(e+"",p.protocol+"//"+p.host)};h&&g||(h=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return w[++b]=function(){("function"==typeof e?e:Function(e)).apply(undefined,t)},r(b),b},g=function(e){delete w[e]},"process"==u(v)?r=function(e){v.nextTick(_(e))}:y&&y.now?r=function(e){y.now(_(e))}:m&&!d?(i=(o=new m).port2,o.port1.onmessage=E,r=s(i.postMessage,i,1)):!a.addEventListener||"function"!=typeof postMessage||a.importScripts||c(k)||"file:"===p.protocol?r="onreadystatechange"in f("script")?function(e){l.appendChild(f("script")).onreadystatechange=function(){l.removeChild(this),x(e)}}:function(e){setTimeout(_(e),0)}:(r=k,a.addEventListener("message",E,!1))),e.exports={set:h,clear:g}},function(e,t,n){"use strict";var r=n(28),o=function(e){var t,n;this.promise=new e((function(e,r){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=r(t),this.reject=r(n)};e.exports.f=function(e){return new o(e)}},function(e,t,n){"use strict";var r=n(4),o=n(95);r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(e,t,n){"use strict";var r=n(38),o=n(24),i=function(e){return function(t,n){var i,a,c=String(o(t)),u=r(n),s=c.length;return u<0||u>=s?e?"":undefined:(i=c.charCodeAt(u))<55296||i>56319||u+1===s||(a=c.charCodeAt(u+1))<56320||a>57343?e?c.charAt(u):i:e?c.slice(u,u+2):a-56320+(i-55296<<10)+65536}};e.exports={codeAt:i(!1),charAt:i(!0)}},function(e,t,n){"use strict";var r=n(93);e.exports=function(e){if(r(e))throw TypeError("The method doesn't accept regular expressions");return e}},function(e,t,n){"use strict";var r=n(15)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[r]=!1,"/./"[e](t)}catch(o){}}return!1}},function(e,t,n){"use strict";var r=n(5),o=n(91);e.exports=function(e){return r((function(){return!!o[e]()||"\u200b\x85\u180e"!="\u200b\x85\u180e"[e]()||o[e].name!==e}))}},function(e,t,n){"use strict";var r=n(7),o=n(5),i=n(85),a=n(13).NATIVE_ARRAY_BUFFER_VIEWS,c=r.ArrayBuffer,u=r.Int8Array;e.exports=!a||!o((function(){u(1)}))||!o((function(){new u(-1)}))||!i((function(e){new u,new u(null),new u(1.5),new u(e)}),!0)||o((function(){return 1!==new u(new c(2),1,undefined).length}))},function(e,t,n){"use strict";t.__esModule=!0,t.setupHotKeys=t.releaseHeldKeys=t.releaseHotKey=t.acquireHotKey=void 0;var r=n(78),o=n(57),i=(0,n(25).createLogger)("hotkeys"),a={},c=[r.KEY_ESCAPE,r.KEY_ENTER,r.KEY_SPACE,r.KEY_TAB,r.KEY_CTRL,r.KEY_SHIFT,r.KEY_F5],u={},s=function(e){if(!e.ctrl||e.code!==r.KEY_F5&&e.code!==r.KEY_R){if(!(e.ctrl&&e.code===r.KEY_F||e.event.defaultPrevented||e.isModifierKey()||c.includes(e.code))){var t,n=16===(t=e.code)?"Shift":17===t?"Ctrl":18===t?"Alt":33===t?"Northeast":34===t?"Southeast":35===t?"Southwest":36===t?"Northwest":37===t?"West":38===t?"North":39===t?"East":40===t?"South":45===t?"Insert":46===t?"Delete":t>=48&&t<=57||t>=65&&t<=90?String.fromCharCode(t):t>=96&&t<=105?"Numpad"+(t-96):t>=112&&t<=123?"F"+(t-111):188===t?",":189===t?"-":190===t?".":void 0;if(n){var o=a[n];if(o)return i.debug("macro",o),Byond.command(o);if(e.isDown()&&!u[n]){u[n]=!0;var s='KeyDown "'+n+'"';return i.debug(s),Byond.command(s)}if(e.isUp()&&u[n]){u[n]=!1;var l='KeyUp "'+n+'"';return i.debug(l),Byond.command(l)}}}}else location.reload()};t.acquireHotKey=function(e){c.push(e)};t.releaseHotKey=function(e){var t=c.indexOf(e);t>=0&&c.splice(t,1)};var l=function(){for(var e=0,t=Object.keys(u);e0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props,r=t.value,o=t.dragMatrix;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:c(e,o),value:r,internalValue:r}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,r=t.dragging,o=t.value,i=n.props.onDrag;r&&i&&i(e,o)}),n.props.updateRate||400),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,r=t.minValue,i=t.maxValue,a=t.step,u=t.stepPixelSize,s=t.dragMatrix;n.setState((function(t){var n=Object.assign({},t),l=c(e,s)-n.origin;if(t.dragging){var f=Number.isFinite(r)?r%a:0;n.internalValue=(0,o.clamp)(n.internalValue+l*a/u,r-a,i+a),n.value=(0,o.clamp)(n.internalValue-n.internalValue%a+f,r,i),n.origin=c(e,s)}else Math.abs(l)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,r=t.onChange,o=t.onDrag,i=n.state,a=i.dragging,c=i.value,u=i.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!a,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a)n.suppressFlicker(),r&&r(e,c),o&&o(e,c);else if(n.inputRef){var s=n.inputRef.current;s.value=u;try{s.focus(),s.select()}catch(l){}}},n}return n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.prototype.render=function(){var e=this,t=this.state,n=t.dragging,i=t.editing,c=t.value,u=t.suppressingFlicker,s=this.props,l=s.animated,f=s.value,d=s.unit,p=s.minValue,h=s.maxValue,g=s.format,v=s.onChange,m=s.onDrag,y=s.children,b=s.height,w=s.lineHeight,x=s.fontSize,_=f;(n||u)&&(_=c);var E=function(e){return e+(d?" "+d:"")},k=l&&!n&&!u&&(0,r.createComponentVNode)(2,a.AnimatedNumber,{value:_,format:g,children:E})||E(g?g(_):_),S=(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:i?undefined:"none",height:b,"line-height":w,"font-size":x},onBlur:function(t){if(i){var n=(0,o.clamp)(parseFloat(t.target.value),p,h);Number.isNaN(n)?e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),v&&v(t,n),m&&m(t,n))}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,o.clamp)(parseFloat(t.target.value),p,h);return Number.isNaN(n)?void e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),v&&v(t,n),void(m&&m(t,n)))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef);return y({dragging:n,editing:i,value:f,displayValue:_,displayElement:k,inputElement:S,handleDragStart:this.handleDragStart})},i}(r.Component);t.DraggableControl=u,u.defaultHooks=i.pureComponentHooks,u.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50,dragMatrix:[1,0]}},function(e,t,n){"use strict";t.__esModule=!0,t.NumberInput=void 0;var r=n(0),o=n(11),i=n(6),a=n(138),c=n(17);var u=function(e){var t,n;function u(t){var n;n=e.call(this,t)||this;var i=t.value;return n.inputRef=(0,r.createRef)(),n.state={value:i,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props.value;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:e.screenY,value:t,internalValue:t}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,r=t.dragging,o=t.value,i=n.props.onDrag;r&&i&&i(e,o)}),n.props.updateRate||400),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,r=t.minValue,i=t.maxValue,a=t.step,c=t.stepPixelSize;n.setState((function(t){var n=Object.assign({},t),u=n.origin-e.screenY;if(t.dragging){var s=Number.isFinite(r)?r%a:0;n.internalValue=(0,o.clamp)(n.internalValue+u*a/c,r-a,i+a),n.value=(0,o.clamp)(n.internalValue-n.internalValue%a+s,r,i),n.origin=e.screenY}else Math.abs(u)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,r=t.onChange,o=t.onDrag,i=n.state,a=i.dragging,c=i.value,u=i.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!a,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a)n.suppressFlicker(),r&&r(e,c),o&&o(e,c);else if(n.inputRef){var s=n.inputRef.current;s.value=u;try{s.focus(),s.select()}catch(l){}}},n}return n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,u.prototype.render=function(){var e=this,t=this.state,n=t.dragging,u=t.editing,s=t.value,l=t.suppressingFlicker,f=this.props,d=f.className,p=f.fluid,h=f.animated,g=f.value,v=f.unit,m=f.minValue,y=f.maxValue,b=f.height,w=f.width,x=f.lineHeight,_=f.fontSize,E=f.format,k=f.onChange,S=f.onDrag,C=g;(n||l)&&(C=s);var N=function(e){return(0,r.createVNode)(1,"div","NumberInput__content",e+(v?" "+v:""),0,{unselectable:Byond.IS_LTE_IE8})},A=h&&!n&&!l&&(0,r.createComponentVNode)(2,a.AnimatedNumber,{value:C,format:E,children:N})||N(E?E(C):C);return(0,r.createComponentVNode)(2,c.Box,{className:(0,i.classes)(["NumberInput",p&&"NumberInput--fluid",d]),minWidth:w,minHeight:b,lineHeight:x,fontSize:_,onMouseDown:this.handleDragStart,children:[(0,r.createVNode)(1,"div","NumberInput__barContainer",(0,r.createVNode)(1,"div","NumberInput__bar",null,1,{style:{height:(0,o.clamp)((C-m)/(y-m)*100,0,100)+"%"}}),2),A,(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:u?undefined:"none",height:b,"line-height":x,"font-size":_},onBlur:function(t){if(u){var n=(0,o.clamp)(parseFloat(t.target.value),m,y);Number.isNaN(n)?e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),k&&k(t,n),S&&S(t,n))}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,o.clamp)(parseFloat(t.target.value),m,y);return Number.isNaN(n)?void e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),k&&k(t,n),void(S&&S(t,n)))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef)]})},u}(r.Component);t.NumberInput=u,u.defaultHooks=i.pureComponentHooks,u.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50}},function(e,t,n){"use strict";t.__esModule=!0,t.Layout=void 0;var r=n(0),o=n(6),i=n(17),a=n(57);function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){var t=e.className,n=e.theme,a=void 0===n?"nanotrasen":n,u=e.children,s=c(e,["className","theme","children"]);return(0,r.createVNode)(1,"div","theme-"+a,(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Layout",t].concat((0,i.computeBoxClassName)(s))),u,0,Object.assign({},(0,i.computeBoxProps)(s)))),2)};t.Layout=u;var s=function(e){var t=e.className,n=e.scrollable,a=e.children,u=c(e,["className","scrollable","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Layout__content",n&&"Layout__content--scrollable",t].concat((0,i.computeBoxClassName)(u))),a,0,Object.assign({},(0,i.computeBoxProps)(u))))};s.defaultHooks={onComponentDidMount:function(e){return(0,a.addScrollableNode)(e)},onComponentWillUnmount:function(e){return(0,a.removeScrollableNode)(e)}},u.Content=s},,,,,,,function(e,t,n){"use strict";n(222),n(223),n(224),n(225),n(226),n(227),n(228),n(229),n(230),n(231),n(232),n(233),n(234),n(235),n(236),n(237),n(238),n(239),n(240),n(241),n(242),n(243),n(244),n(245),n(246),n(248),n(250),n(251),n(252),n(163),n(253),n(254),n(255),n(256),n(257),n(258),n(259),n(260),n(261),n(262),n(263),n(264),n(265),n(266),n(268),n(269),n(270),n(271),n(272),n(274),n(275),n(277),n(278),n(279),n(280),n(281),n(282),n(283),n(284),n(285),n(286),n(287),n(288),n(289),n(290),n(291),n(292),n(294),n(295),n(296),n(297),n(298),n(299),n(300),n(301),n(302),n(303),n(304),n(305),n(306),n(308),n(309),n(310),n(311),n(312),n(313),n(315),n(316),n(318),n(320),n(321),n(322),n(323),n(324),n(325),n(326),n(327),n(328),n(329),n(330),n(331),n(332),n(333),n(334),n(335),n(336),n(337),n(338),n(339),n(340),n(341),n(342),n(344),n(345),n(346),n(348),n(349),n(350),n(351),n(352),n(353),n(354),n(355),n(356),n(357),n(358),n(359),n(360),n(361),n(362),n(363),n(129),n(364),n(365),n(366),n(367),n(368),n(369),n(370),n(371),n(372),n(373),n(374),n(375),n(376),n(377),n(378),n(379),n(380),n(381),n(382),n(383),n(384),n(385),n(386),n(387),n(388),n(389),n(390),n(391),n(392),n(393),n(394),n(395),n(396),n(397),n(398),n(399),n(400),n(402),n(403),n(404),n(405),n(406),n(407),n(408),n(409),n(410),n(411),n(412),n(413),n(414),n(415),n(416),n(417),n(418),n(419),n(420),n(421),n(422),n(423),n(424),n(425),n(426),n(427),n(428),n(429),n(430),n(431),n(432),n(433),n(434),n(435),n(436),n(437),n(438),n(439),n(440),n(441),n(442),n(443),n(444),n(445)},function(e,t,n){"use strict";var r=n(9),o=n(5),i=n(108);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var r=n(7),o=n(109),i=r["__core-js_shared__"]||o("__core-js_shared__",{});e.exports=i},function(e,t,n){"use strict";var r=n(7),o=n(110),i=r.WeakMap;e.exports="function"==typeof i&&/native code/.test(o(i))},function(e,t,n){"use strict";var r=n(20),o=n(112),i=n(23),a=n(16);e.exports=function(e,t){for(var n=o(t),c=a.f,u=i.f,s=0;su;)r(c,n=t[u++])&&(~i(s,n)||s.push(n));return s}},function(e,t,n){"use strict";var r=n(115);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,n){"use strict";var r=n(9),o=n(16),i=n(10),a=n(71);e.exports=r?Object.defineProperties:function(e,t){i(e);for(var n,r=a(t),c=r.length,u=0;c>u;)o.f(e,n=r[u++],t[n]);return e}},function(e,t,n){"use strict";var r=n(41);e.exports=r("document","documentElement")},function(e,t,n){"use strict";var r=n(31),o=n(52).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==i.call(e)?function(e){try{return o(e)}catch(t){return a.slice()}}(e):o(r(e))}},function(e,t,n){"use strict";var r=n(15);t.f=r},function(e,t,n){"use strict";var r=n(18),o=n(47),i=n(12),a=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),c=i(n.length),u=o(e,c),s=o(t,c),l=arguments.length>2?arguments[2]:undefined,f=a((l===undefined?c:o(l,c))-s,c-u),d=1;for(s0;)s in n?n[u]=n[s]:delete n[u],u+=d,s+=d;return n}},function(e,t,n){"use strict";var r=n(58),o=n(12),i=n(53);e.exports=function a(e,t,n,c,u,s,l,f){for(var d,p=u,h=0,g=!!l&&i(l,f,3);h0&&r(d))p=a(e,t,d,o(d.length),p,s-1)-1;else{if(p>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[p]=d}p++}h++}return p}},function(e,t,n){"use strict";var r=n(10);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(a){var i=e["return"];throw i!==undefined&&r(i.call(e)),a}}},function(e,t,n){"use strict";var r=n(31),o=n(50),i=n(74),a=n(33),c=n(121),u=a.set,s=a.getterFor("Array Iterator");e.exports=c(Array,"Array",(function(e,t){u(this,{type:"Array Iterator",target:r(e),index:0,kind:t})}),(function(){var e=s(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=undefined,{value:undefined,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},function(e,t,n){"use strict";var r=n(165).IteratorPrototype,o=n(48),i=n(51),a=n(49),c=n(74),u=function(){return this};e.exports=function(e,t,n){var s=t+" Iterator";return e.prototype=o(r,{next:i(1,n)}),a(e,s,!1,!0),c[s]=u,e}},function(e,t,n){"use strict";var r,o,i,a=n(42),c=n(32),u=n(20),s=n(15),l=n(43),f=s("iterator"),d=!1;[].keys&&("next"in(i=[].keys())?(o=a(a(i)))!==Object.prototype&&(r=o):d=!0),r==undefined&&(r={}),l||u(r,f)||c(r,f,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},function(e,t,n){"use strict";var r=n(8);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},function(e,t,n){"use strict";var r=n(31),o=n(38),i=n(12),a=n(44),c=n(29),u=Math.min,s=[].lastIndexOf,l=!!s&&1/[1].lastIndexOf(1,-0)<0,f=a("lastIndexOf"),d=c("indexOf",{ACCESSORS:!0,1:0}),p=l||!f||!d;e.exports=p?function(e){if(l)return s.apply(this,arguments)||0;var t=r(this),n=i(t.length),a=n-1;for(arguments.length>1&&(a=u(a,o(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in t&&t[a]===e)return a||0;return-1}:s},function(e,t,n){"use strict";var r=n(38),o=n(12);e.exports=function(e){if(e===undefined)return 0;var t=r(e),n=o(t);if(t!==n)throw RangeError("Wrong length or index");return n}},function(e,t,n){"use strict";var r=n(28),o=n(8),i=[].slice,a={},c=function(e,t,n){if(!(t in a)){for(var r=[],o=0;o1?arguments[1]:undefined,3);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!m(this,e)}}),i(l.prototype,n?{get:function(e){var t=m(this,e);return t&&t.value},set:function(e,t){return v(this,0===e?0:e,t)}}:{add:function(e){return v(this,e=0===e?0:e,e)}}),f&&r(l.prototype,"size",{get:function(){return p(this).size}}),l},setStrong:function(e,t,n){var r=t+" Iterator",o=g(t),i=g(r);s(e,t,(function(e,t){h(this,{type:r,target:e,state:o(e),kind:t,last:undefined})}),(function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),l(t)}}},function(e,t,n){"use strict";var r=Math.log;e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:r(1+e)}},function(e,t,n){"use strict";var r=n(8),o=Math.floor;e.exports=function(e){return!r(e)&&isFinite(e)&&o(e)===e}},function(e,t,n){"use strict";var r=n(7),o=n(62).trim,i=n(91),a=r.parseInt,c=/^[+-]?0[Xx]/,u=8!==a(i+"08")||22!==a(i+"0x16");e.exports=u?function(e,t){var n=o(String(e));return a(n,t>>>0||(c.test(n)?16:10))}:a},function(e,t,n){"use strict";var r=n(9),o=n(71),i=n(31),a=n(81).f,c=function(e){return function(t){for(var n,c=i(t),u=o(c),s=u.length,l=0,f=[];s>l;)n=u[l++],r&&!a.call(c,n)||f.push(e?[n,c[n]]:c[n]);return f}};e.exports={entries:c(!0),values:c(!1)}},function(e,t,n){"use strict";e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},function(e,t,n){"use strict";var r=n(7);e.exports=r.Promise},function(e,t,n){"use strict";var r=n(83);e.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},function(e,t,n){"use strict";var r,o,i,a,c,u,s,l,f=n(7),d=n(23).f,p=n(37),h=n(127).set,g=n(177),v=f.MutationObserver||f.WebKitMutationObserver,m=f.process,y=f.Promise,b="process"==p(m),w=d(f,"queueMicrotask"),x=w&&w.value;x||(r=function(){var e,t;for(b&&(e=m.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(n){throw o?a():i=undefined,n}}i=undefined,e&&e.enter()},b?a=function(){m.nextTick(r)}:v&&!g?(c=!0,u=document.createTextNode(""),new v(r).observe(u,{characterData:!0}),a=function(){u.data=c=!c}):y&&y.resolve?(s=y.resolve(undefined),l=s.then,a=function(){l.call(s,r)}):a=function(){h.call(f,r)}),e.exports=x||function(e){var t={fn:e,next:undefined};i&&(i.next=t),o||(o=t,a()),i=t}},function(e,t,n){"use strict";var r=n(10),o=n(8),i=n(128);e.exports=function(e,t){if(r(e),o(t)&&t.constructor===e)return t;var n=i.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(t){return{error:!0,value:t}}}},function(e,t,n){"use strict";var r=n(83);e.exports=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(r)},function(e,t,n){"use strict";var r=n(401);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},function(e,t,n){"use strict";var r=n(18),o=n(12),i=n(119),a=n(118),c=n(53),u=n(13).aTypedArrayConstructor;e.exports=function(e){var t,n,s,l,f,d,p=r(e),h=arguments.length,g=h>1?arguments[1]:undefined,v=g!==undefined,m=i(p);if(m!=undefined&&!a(m))for(d=(f=m.call(p)).next,p=[];!(l=d.call(f)).done;)p.push(l.value);for(v&&h>2&&(g=c(g,arguments[2],2)),n=o(p.length),s=new(u(this))(n),t=0;n>t;t++)s[t]=v?g(p[t],t):p[t];return s}},function(e,t,n){"use strict";var r=n(75),o=n(56).getWeakData,i=n(10),a=n(8),c=n(60),u=n(61),s=n(21),l=n(20),f=n(33),d=f.set,p=f.getterFor,h=s.find,g=s.findIndex,v=0,m=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},b=function(e,t){return h(e.entries,(function(e){return e[0]===t}))};y.prototype={get:function(e){var t=b(this,e);if(t)return t[1]},has:function(e){return!!b(this,e)},set:function(e,t){var n=b(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=g(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,s){var f=e((function(e,r){c(e,f,t),d(e,{type:t,id:v++,frozen:undefined}),r!=undefined&&u(r,e[s],e,n)})),h=p(t),g=function(e,t,n){var r=h(e),a=o(i(t),!0);return!0===a?m(r).set(t,n):a[r.id]=n,e};return r(f.prototype,{"delete":function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?m(t)["delete"](e):n&&l(n,t.id)&&delete n[t.id]},has:function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?m(t).has(e):n&&l(n,t.id)}}),r(f.prototype,n?{get:function(e){var t=h(this);if(a(e)){var n=o(e);return!0===n?m(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return g(this,e,t)}}:{add:function(e){return g(this,e,!0)}}),f}}},function(e,t,n){"use strict";t.__esModule=!0,t.EventEmitter=void 0;var r=function(){function e(){this.listeners={}}var t=e.prototype;return t.on=function(e,t){this.listeners[e]=this.listeners[e]||[],this.listeners[e].push(t)},t.off=function(e,t){var n=this.listeners[e];if(!n)throw new Error('There is no listeners for "'+e+'"');this.listeners[e]=n.filter((function(e){return e!==t}))},t.emit=function(e){var t=this.listeners[e];if(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;ou&&(o[a]=u-t[a],i=!0)}return[i,o]};t.dragStartHandler=function(e){d.log("drag start"),h=!0,u=[window.screenLeft-e.screenX,window.screenTop-e.screenY],document.addEventListener("mousemove",T),document.addEventListener("mouseup",A),T(e)};var A=function M(e){d.log("drag end"),T(e),document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",M),h=!1,k()},T=function(e){h&&(e.preventDefault(),b((0,o.vecAdd)([e.screenX,e.screenY],u)))};t.resizeStartHandler=function(e,t){return function(n){s=[e,t],d.log("resize start",s),g=!0,u=[window.screenLeft-n.screenX,window.screenTop-n.screenY],l=[window.innerWidth,window.innerHeight],document.addEventListener("mousemove",I),document.addEventListener("mouseup",O),I(n)}};var O=function L(e){d.log("resize end",f),I(e),document.removeEventListener("mousemove",I),document.removeEventListener("mouseup",L),g=!1,k()},I=function(e){g&&(e.preventDefault(),(f=(0,o.vecAdd)(l,(0,o.vecMultiply)(s,(0,o.vecAdd)([e.screenX,e.screenY],(0,o.vecInverse)([window.screenLeft,window.screenTop]),u,[1,1]))))[0]=Math.max(f[0],150),f[1]=Math.max(f[1],50),w(f))}},function(e,t,n){"use strict";t.__esModule=!0,t.focusWindow=t.focusMap=void 0;t.focusMap=function(){Byond.winset("mapwindow.map",{focus:!0})};t.focusWindow=function(){Byond.winset(window.__windowId__,{focus:!0})}},function(e,t,n){"use strict";t.__esModule=!0,t.selectDebug=void 0;t.selectDebug=function(e){return e.debug}},function(e,t,n){"use strict";t.__esModule=!0,t.ButtonInput=t.ButtonConfirm=t.ButtonCheckbox=t.Button=void 0;var r=n(0),o=n(6),i=n(135),a=n(25),c=n(17),u=n(104),s=n(192);function l(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function f(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var d=(0,a.createLogger)("Button"),p=function(e){var t=e.className,n=e.fluid,a=e.icon,l=e.iconRotation,p=e.iconSpin,h=e.color,g=e.disabled,v=e.selected,m=e.tooltip,y=e.tooltipPosition,b=e.ellipsis,w=e.compact,x=e.circular,_=e.content,E=e.children,k=e.onclick,S=e.onClick,C=f(e,["className","fluid","icon","iconRotation","iconSpin","color","disabled","selected","tooltip","tooltipPosition","ellipsis","compact","circular","content","children","onclick","onClick"]),N=!(!_&&!E);return k&&d.warn("Lowercase 'onclick' is not supported on Button and lowercase prop names are discouraged in general. Please use a camelCase'onClick' instead and read: https://infernojs.org/docs/guides/event-handling"),(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.Box,Object.assign({className:(0,o.classes)(["Button",n&&"Button--fluid",g&&"Button--disabled",v&&"Button--selected",N&&"Button--hasContent",b&&"Button--ellipsis",x&&"Button--circular",w&&"Button--compact",h&&"string"==typeof h?"Button--color--"+h:"Button--color--default",t]),tabIndex:!g&&"0",unselectable:Byond.IS_LTE_IE8,onClick:function(e){!g&&S&&S(e)},onKeyDown:function(e){var t=window.event?e.which:e.keyCode;if(t===i.KEY_SPACE||t===i.KEY_ENTER)return e.preventDefault(),void(!g&&S&&S(e));t!==i.KEY_ESCAPE||e.preventDefault()}},C,{children:[a&&(0,r.createComponentVNode)(2,u.Icon,{name:a,rotation:l,spin:p}),_,E,m&&(0,r.createComponentVNode)(2,s.Tooltip,{content:m,position:y})]})))};t.Button=p,p.defaultHooks=o.pureComponentHooks;var h=function(e){var t=e.checked,n=f(e,["checked"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,p,Object.assign({color:"transparent",icon:t?"check-square-o":"square-o",selected:t},n)))};t.ButtonCheckbox=h,p.Checkbox=h;var g=function(e){function t(){var t;return(t=e.call(this)||this).state={clickedOnce:!1},t.handleClick=function(){t.state.clickedOnce&&t.setClickedOnce(!1)},t}l(t,e);var n=t.prototype;return n.setClickedOnce=function(e){var t=this;this.setState({clickedOnce:e}),e?setTimeout((function(){return window.addEventListener("click",t.handleClick)})):window.removeEventListener("click",this.handleClick)},n.render=function(){var e=this,t=this.props,n=t.confirmContent,o=void 0===n?"Confirm?":n,i=t.confirmColor,a=void 0===i?"bad":i,c=t.confirmIcon,u=t.icon,s=t.color,l=t.content,d=t.onClick,h=f(t,["confirmContent","confirmColor","confirmIcon","icon","color","content","onClick"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,p,Object.assign({content:this.state.clickedOnce?o:l,icon:this.state.clickedOnce?c:u,color:this.state.clickedOnce?a:s,onClick:function(){return e.state.clickedOnce?d():e.setClickedOnce(!0)}},h)))},t}(r.Component);t.ButtonConfirm=g,p.Confirm=g;var v=function(e){function t(){var t;return(t=e.call(this)||this).inputRef=(0,r.createRef)(),t.state={inInput:!1},t}l(t,e);var n=t.prototype;return n.setInInput=function(e){if(this.setState({inInput:e}),this.inputRef){var t=this.inputRef.current;if(e){t.value=this.props.currentValue||"";try{t.focus(),t.select()}catch(n){}}}},n.commitResult=function(e){if(this.inputRef){var t=this.inputRef.current;if(""!==t.value)return void this.props.onCommit(e,t.value);if(!this.props.defaultValue)return;this.props.onCommit(e,this.props.defaultValue)}},n.render=function(){var e=this,t=this.props,n=t.fluid,a=t.content,l=t.icon,d=t.iconRotation,p=t.iconSpin,h=t.tooltip,g=t.tooltipPosition,v=t.color,m=void 0===v?"default":v,y=(t.placeholder,t.maxLength,f(t,["fluid","content","icon","iconRotation","iconSpin","tooltip","tooltipPosition","color","placeholder","maxLength"]));return(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.Box,Object.assign({className:(0,o.classes)(["Button",n&&"Button--fluid","Button--color--"+m])},y,{onClick:function(){return e.setInInput(!0)},children:[l&&(0,r.createComponentVNode)(2,u.Icon,{name:l,rotation:d,spin:p}),(0,r.createVNode)(1,"div",null,a,0),(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:this.state.inInput?undefined:"none","text-align":"left"},onBlur:function(t){e.state.inInput&&(e.setInInput(!1),e.commitResult(t))},onKeyDown:function(t){if(t.keyCode===i.KEY_ENTER)return e.setInInput(!1),void e.commitResult(t);t.keyCode===i.KEY_ESCAPE&&e.setInInput(!1)}},null,this.inputRef),h&&(0,r.createComponentVNode)(2,s.Tooltip,{content:h,position:g})]})))},t}(r.Component);t.ButtonInput=v,p.Input=v},function(e,t,n){"use strict";t.__esModule=!0,t.Tooltip=void 0;var r=n(0),o=n(6);t.Tooltip=function(e){var t=e.content,n=e.position,i=void 0===n?"bottom":n,a="string"==typeof t&&t.length>35;return(0,r.createVNode)(1,"div",(0,o.classes)(["Tooltip",a&&"Tooltip--long",i&&"Tooltip--"+i]),null,1,{"data-tooltip":t})}},function(e,t,n){"use strict";t.__esModule=!0,t.Dimmer=void 0;var r=n(0),o=n(6),i=n(17);t.Dimmer=function(e){var t=e.className,n=e.children,a=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Dimmer"].concat(t))},a,{children:(0,r.createVNode)(1,"div","Dimmer__inner",n,0)})))}},function(e,t,n){"use strict";t.__esModule=!0,t.Divider=void 0;var r=n(0),o=n(6);t.Divider=function(e){var t=e.vertical,n=e.hidden;return(0,r.createVNode)(1,"div",(0,o.classes)(["Divider",n&&"Divider--hidden",t?"Divider--vertical":"Divider--horizontal"]))}},function(e,t,n){"use strict";t.__esModule=!0,t.FlexItem=t.computeFlexItemProps=t.Flex=t.computeFlexProps=void 0;var r=n(0),o=n(6),i=n(17);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t=e.className,n=e.direction,r=e.wrap,i=e.align,c=e.justify,u=e.inline,s=e.spacing,l=void 0===s?0:s,f=a(e,["className","direction","wrap","align","justify","inline","spacing"]);return Object.assign({className:(0,o.classes)(["Flex",Byond.IS_LTE_IE10&&("column"===n?"Flex--iefix--column":"Flex--iefix"),u&&"Flex--inline",l>0&&"Flex--spacing--"+l,t]),style:Object.assign({},f.style,{"flex-direction":n,"flex-wrap":r,"align-items":i,"justify-content":c})},f)};t.computeFlexProps=c;var u=function(e){return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({},c(e))))};t.Flex=u,u.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.className,n=e.style,r=e.grow,c=e.order,u=e.shrink,s=e.basis,l=void 0===s?e.width:s,f=e.align,d=a(e,["className","style","grow","order","shrink","basis","align"]);return Object.assign({className:(0,o.classes)(["Flex__item",Byond.IS_LTE_IE10&&"Flex__item--iefix",Byond.IS_LTE_IE10&&r>0&&"Flex__item--iefix--grow",t]),style:Object.assign({},n,{"flex-grow":r,"flex-shrink":u,"flex-basis":(0,i.unit)(l),order:c,"align-self":f})},d)};t.computeFlexItemProps=s;var l=function(e){return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({},s(e))))};t.FlexItem=l,l.defaultHooks=o.pureComponentHooks,u.Item=l},function(e,t,n){"use strict";t.__esModule=!0,t.TableCell=t.TableRow=t.Table=void 0;var r=n(0),o=n(6),i=n(17);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t=e.className,n=e.collapsing,c=e.children,u=a(e,["className","collapsing","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"table",(0,o.classes)(["Table",n&&"Table--collapsing",t,(0,i.computeBoxClassName)(u)]),(0,r.createVNode)(1,"tbody",null,c,0),2,Object.assign({},(0,i.computeBoxProps)(u))))};t.Table=c,c.defaultHooks=o.pureComponentHooks;var u=function(e){var t=e.className,n=e.header,c=a(e,["className","header"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"tr",(0,o.classes)(["Table__row",n&&"Table__row--header",t,(0,i.computeBoxClassName)(e)]),null,1,Object.assign({},(0,i.computeBoxProps)(c))))};t.TableRow=u,u.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.className,n=e.collapsing,c=e.header,u=a(e,["className","collapsing","header"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"td",(0,o.classes)(["Table__cell",n&&"Table__cell--collapsing",c&&"Table__cell--header",t,(0,i.computeBoxClassName)(e)]),null,1,Object.assign({},(0,i.computeBoxProps)(u))))};t.TableCell=s,s.defaultHooks=o.pureComponentHooks,c.Row=u,c.Cell=s},function(e,t,n){"use strict";t.__esModule=!0,t.Input=t.toInputValue=void 0;var r=n(0),o=n(6),i=n(17),a=n(78);function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){return"number"!=typeof e&&"string"!=typeof e?"":String(e)};t.toInputValue=u;var s=function(e){var t,n;function s(){var t;return(t=e.call(this)||this).inputRef=(0,r.createRef)(),t.state={editing:!1},t.handleInput=function(e){var n=t.state.editing,r=t.props.onInput;n||t.setEditing(!0),r&&r(e,e.target.value)},t.handleFocus=function(e){t.state.editing||t.setEditing(!0)},t.handleBlur=function(e){var n=t.state.editing,r=t.props.onChange;n&&(t.setEditing(!1),r&&r(e,e.target.value))},t.handleKeyDown=function(e){var n=t.props,r=n.onInput,o=n.onChange,i=n.onEnter;return e.keyCode===a.KEY_ENTER?(t.setEditing(!1),o&&o(e,e.target.value),r&&r(e,e.target.value),i&&i(e,e.target.value),void(t.props.selfClear?e.target.value="":e.target.blur())):e.keyCode===a.KEY_ESCAPE?(t.setEditing(!1),e.target.value=u(t.props.value),void e.target.blur()):void 0},t}n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var l=s.prototype;return l.componentDidMount=function(){var e=this.props.value,t=this.inputRef.current;t&&(t.value=u(e)),this.props.autoFocus&&setTimeout((function(){return t.focus()}),1)},l.componentDidUpdate=function(e,t){var n=this.state.editing,r=e.value,o=this.props.value,i=this.inputRef.current;i&&!n&&r!==o&&(i.value=u(o))},l.setEditing=function(e){this.setState({editing:e})},l.render=function(){var e=this.props,t=(e.selfClear,e.onInput,e.onChange,e.onEnter,e.value,e.maxLength),n=e.placeholder,a=c(e,["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder"]),u=a.className,s=a.fluid,l=a.monospace,f=c(a,["className","fluid","monospace"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Input",s&&"Input--fluid",l&&"Input--monospace",u])},f,{children:[(0,r.createVNode)(1,"div","Input__baseline",".",16),(0,r.createVNode)(64,"input","Input__input",null,1,{placeholder:n,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,maxLength:t},null,this.inputRef)]})))},s}(r.Component);t.Input=s},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledListDivider=t.LabeledListItem=t.LabeledList=void 0;var r=n(0),o=n(6),i=n(17),a=n(194),c=function(e){var t=e.children;return(0,r.createVNode)(1,"table","LabeledList",t,0)};t.LabeledList=c,c.defaultHooks=o.pureComponentHooks;var u=function(e){var t=e.className,n=e.label,a=e.labelColor,c=void 0===a?"label":a,u=e.color,s=e.textAlign,l=e.buttons,f=e.content,d=e.children;return(0,r.createVNode)(1,"tr",(0,o.classes)(["LabeledList__row",t]),[(0,r.createComponentVNode)(2,i.Box,{as:"td",color:c,className:(0,o.classes)(["LabeledList__cell","LabeledList__label"]),children:n?n+":":null}),(0,r.createComponentVNode)(2,i.Box,{as:"td",color:u,textAlign:s,className:(0,o.classes)(["LabeledList__cell","LabeledList__content"]),colSpan:l?undefined:2,children:[f,d]}),l&&(0,r.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",l,0)],0)};t.LabeledListItem=u,u.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.size?(0,i.unit)(Math.max(0,e.size-1)):0;return(0,r.createVNode)(1,"tr","LabeledList__row",(0,r.createVNode)(1,"td",null,(0,r.createComponentVNode)(2,a.Divider),2,{colSpan:3,style:{"padding-top":t,"padding-bottom":t}}),2)};t.LabeledListDivider=s,s.defaultHooks=o.pureComponentHooks,c.Item=u,c.Divider=s},function(e,t,n){"use strict";t.__esModule=!0,t.Window=void 0;var r=n(0),o=n(6),i=n(22),a=n(19),c=n(2),u=n(1),s=n(36),l=n(137),f=(n(200),n(188)),d=n(25),p=n(141);var h=(0,d.createLogger)("Window"),g=[400,600],v=function(e){var t,n;function u(){return e.apply(this,arguments)||this}n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var d=u.prototype;return d.componentDidMount=function(){var e,t=(0,c.useBackend)(this.context),n=t.config;if(!t.suspended){h.log("mounting");var r=Object.assign({size:g},n.window);this.props.width&&this.props.height&&(r.size=[this.props.width,this.props.height]),(null==(e=n.window)?void 0:e.key)&&(0,f.setWindowKey)(n.window.key),(0,f.recallWindowGeometry)(r)}},d.render=function(){var e,t=this.props,n=t.resizable,u=t.theme,d=t.title,g=t.children,v=(0,c.useBackend)(this.context),m=v.config,b=v.suspended,w=(0,l.useDebug)(this.context).debugLayout,x=(0,i.useDispatch)(this.context),_=null==(e=m.window)?void 0:e.fancy,E=m.user&&(m.user.observer?m.status=0||(o[n]=e[n]);return o}(e,["className","fitted","children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,p.Layout.Content,Object.assign({className:(0,o.classes)(["Window__content",t])},a,{children:n&&i||(0,r.createVNode)(1,"div","Window__contentPadding",i,0)})))};var m=function(e){switch(e){case s.UI_INTERACTIVE:return"good";case s.UI_UPDATE:return"average";case s.UI_DISABLED:default:return"bad"}},y=function(e,t){var n=e.className,c=e.title,s=e.status,l=e.fancy,f=e.onDragStart,d=e.onClose;(0,i.useDispatch)(t);return(0,r.createVNode)(1,"div",(0,o.classes)(["TitleBar",n]),[s===undefined&&(0,r.createComponentVNode)(2,u.Icon,{className:"TitleBar__statusIcon",name:"tools",opacity:.5})||(0,r.createComponentVNode)(2,u.Icon,{className:"TitleBar__statusIcon",color:m(s),name:"eye"}),(0,r.createVNode)(1,"div","TitleBar__title","string"==typeof c&&c===c.toLowerCase()&&(0,a.toTitleCase)(c)||c,0),(0,r.createVNode)(1,"div","TitleBar__dragZone",null,1,{onMousedown:function(e){return l&&f(e)}}),!1,!!l&&(0,r.createVNode)(1,"div","TitleBar__close TitleBar__clickable",Byond.IS_LTE_IE8?"x":"\xd7",0,{onclick:d})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.openExternalBrowser=t.toggleDebugLayout=t.toggleKitchenSink=void 0;var r=n(22),o=(0,r.createAction)("debug/toggleKitchenSink");t.toggleKitchenSink=o;var i=(0,r.createAction)("debug/toggleDebugLayout");t.toggleDebugLayout=i;var a=(0,r.createAction)("debug/openExternalBrowser");t.openExternalBrowser=a},,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(41),a=n(43),c=n(9),u=n(115),s=n(155),l=n(5),f=n(20),d=n(58),p=n(8),h=n(10),g=n(18),v=n(31),m=n(40),y=n(51),b=n(48),w=n(71),x=n(52),_=n(158),E=n(114),k=n(23),S=n(16),C=n(81),N=n(32),A=n(26),T=n(111),O=n(82),I=n(68),M=n(67),L=n(15),V=n(159),R=n(27),P=n(49),B=n(33),D=n(21).forEach,j=O("hidden"),F=L("toPrimitive"),K=B.set,z=B.getterFor("Symbol"),Y=Object.prototype,U=o.Symbol,$=i("JSON","stringify"),H=k.f,W=S.f,q=_.f,G=C.f,X=T("symbols"),Z=T("op-symbols"),Q=T("string-to-symbol-registry"),J=T("symbol-to-string-registry"),ee=T("wks"),te=o.QObject,ne=!te||!te.prototype||!te.prototype.findChild,re=c&&l((function(){return 7!=b(W({},"a",{get:function(){return W(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=H(Y,t);r&&delete Y[t],W(e,t,n),r&&e!==Y&&W(Y,t,r)}:W,oe=function(e,t){var n=X[e]=b(U.prototype);return K(n,{type:"Symbol",tag:e,description:t}),c||(n.description=t),n},ie=s?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof U},ae=function(e,t,n){e===Y&&ae(Z,t,n),h(e);var r=m(t,!0);return h(n),f(X,r)?(n.enumerable?(f(e,j)&&e[j][r]&&(e[j][r]=!1),n=b(n,{enumerable:y(0,!1)})):(f(e,j)||W(e,j,y(1,{})),e[j][r]=!0),re(e,r,n)):W(e,r,n)},ce=function(e,t){h(e);var n=v(t),r=w(n).concat(de(n));return D(r,(function(t){c&&!se.call(n,t)||ae(e,t,n[t])})),e},ue=function(e,t){return t===undefined?b(e):ce(b(e),t)},se=function(e){var t=m(e,!0),n=G.call(this,t);return!(this===Y&&f(X,t)&&!f(Z,t))&&(!(n||!f(this,t)||!f(X,t)||f(this,j)&&this[j][t])||n)},le=function(e,t){var n=v(e),r=m(t,!0);if(n!==Y||!f(X,r)||f(Z,r)){var o=H(n,r);return!o||!f(X,r)||f(n,j)&&n[j][r]||(o.enumerable=!0),o}},fe=function(e){var t=q(v(e)),n=[];return D(t,(function(e){f(X,e)||f(I,e)||n.push(e)})),n},de=function(e){var t=e===Y,n=q(t?Z:v(e)),r=[];return D(n,(function(e){!f(X,e)||t&&!f(Y,e)||r.push(X[e])})),r};(u||(A((U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor");var e=arguments.length&&arguments[0]!==undefined?String(arguments[0]):undefined,t=M(e),n=function r(e){this===Y&&r.call(Z,e),f(this,j)&&f(this[j],t)&&(this[j][t]=!1),re(this,t,y(1,e))};return c&&ne&&re(Y,t,{configurable:!0,set:n}),oe(t,e)}).prototype,"toString",(function(){return z(this).tag})),A(U,"withoutSetter",(function(e){return oe(M(e),e)})),C.f=se,S.f=ae,k.f=le,x.f=_.f=fe,E.f=de,V.f=function(e){return oe(L(e),e)},c&&(W(U.prototype,"description",{configurable:!0,get:function(){return z(this).description}}),a||A(Y,"propertyIsEnumerable",se,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!u,sham:!u},{Symbol:U}),D(w(ee),(function(e){R(e)})),r({target:"Symbol",stat:!0,forced:!u},{"for":function(e){var t=String(e);if(f(Q,t))return Q[t];var n=U(t);return Q[t]=n,J[n]=t,n},keyFor:function(e){if(!ie(e))throw TypeError(e+" is not a symbol");if(f(J,e))return J[e]},useSetter:function(){ne=!0},useSimple:function(){ne=!1}}),r({target:"Object",stat:!0,forced:!u,sham:!c},{create:ue,defineProperty:ae,defineProperties:ce,getOwnPropertyDescriptor:le}),r({target:"Object",stat:!0,forced:!u},{getOwnPropertyNames:fe,getOwnPropertySymbols:de}),r({target:"Object",stat:!0,forced:l((function(){E.f(1)}))},{getOwnPropertySymbols:function(e){return E.f(g(e))}}),$)&&r({target:"JSON",stat:!0,forced:!u||l((function(){var e=U();return"[null]"!=$([e])||"{}"!=$({a:e})||"{}"!=$(Object(e))}))},{stringify:function(e,t,n){for(var r,o=[e],i=1;arguments.length>i;)o.push(arguments[i++]);if(r=t,(p(t)||e!==undefined)&&!ie(e))return d(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!ie(t))return t}),o[1]=t,$.apply(null,o)}});U.prototype[F]||N(U.prototype,F,U.prototype.valueOf),P(U,"Symbol"),I[j]=!0},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(7),a=n(20),c=n(8),u=n(16).f,s=n(152),l=i.Symbol;if(o&&"function"==typeof l&&(!("description"in l.prototype)||l().description!==undefined)){var f={},d=function(){var e=arguments.length<1||arguments[0]===undefined?undefined:String(arguments[0]),t=this instanceof d?new l(e):e===undefined?l():l(e);return""===e&&(f[t]=!0),t};s(d,l);var p=d.prototype=l.prototype;p.constructor=d;var h=p.toString,g="Symbol(test)"==String(l("test")),v=/^Symbol\((.*)\)[^)]+$/;u(p,"description",{configurable:!0,get:function(){var e=c(this)?this.valueOf():this,t=h.call(e);if(a(f,e))return"";var n=g?t.slice(7,-1):t.replace(v,"$1");return""===n?undefined:n}}),r({global:!0,forced:!0},{Symbol:d})}},function(e,t,n){"use strict";n(27)("asyncIterator")},function(e,t,n){"use strict";n(27)("hasInstance")},function(e,t,n){"use strict";n(27)("isConcatSpreadable")},function(e,t,n){"use strict";n(27)("iterator")},function(e,t,n){"use strict";n(27)("match")},function(e,t,n){"use strict";n(27)("matchAll")},function(e,t,n){"use strict";n(27)("replace")},function(e,t,n){"use strict";n(27)("search")},function(e,t,n){"use strict";n(27)("species")},function(e,t,n){"use strict";n(27)("split")},function(e,t,n){"use strict";n(27)("toPrimitive")},function(e,t,n){"use strict";n(27)("toStringTag")},function(e,t,n){"use strict";n(27)("unscopables")},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(58),a=n(8),c=n(18),u=n(12),s=n(54),l=n(72),f=n(73),d=n(15),p=n(116),h=d("isConcatSpreadable"),g=p>=51||!o((function(){var e=[];return e[h]=!1,e.concat()[0]!==e})),v=f("concat"),m=function(e){if(!a(e))return!1;var t=e[h];return t!==undefined?!!t:i(e)};r({target:"Array",proto:!0,forced:!g||!v},{concat:function(e){var t,n,r,o,i,a=c(this),f=l(a,0),d=0;for(t=-1,r=arguments.length;t9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n=9007199254740991)throw TypeError("Maximum allowed index exceeded");s(f,d++,i)}return f.length=d,f}})},function(e,t,n){"use strict";var r=n(4),o=n(160),i=n(50);r({target:"Array",proto:!0},{copyWithin:o}),i("copyWithin")},function(e,t,n){"use strict";var r=n(4),o=n(21).every,i=n(44),a=n(29),c=i("every"),u=a("every");r({target:"Array",proto:!0,forced:!c||!u},{every:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(117),i=n(50);r({target:"Array",proto:!0},{fill:o}),i("fill")},function(e,t,n){"use strict";var r=n(4),o=n(21).filter,i=n(73),a=n(29),c=i("filter"),u=a("filter");r({target:"Array",proto:!0,forced:!c||!u},{filter:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(21).find,i=n(50),a=n(29),c=!0,u=a("find");"find"in[]&&Array(1).find((function(){c=!1})),r({target:"Array",proto:!0,forced:c||!u},{find:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("find")},function(e,t,n){"use strict";var r=n(4),o=n(21).findIndex,i=n(50),a=n(29),c=!0,u=a("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){c=!1})),r({target:"Array",proto:!0,forced:c||!u},{findIndex:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("findIndex")},function(e,t,n){"use strict";var r=n(4),o=n(161),i=n(18),a=n(12),c=n(38),u=n(72);r({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:undefined,t=i(this),n=a(t.length),r=u(t,0);return r.length=o(r,t,t,n,0,e===undefined?1:c(e)),r}})},function(e,t,n){"use strict";var r=n(4),o=n(161),i=n(18),a=n(12),c=n(28),u=n(72);r({target:"Array",proto:!0},{flatMap:function(e){var t,n=i(this),r=a(n.length);return c(e),(t=u(n,0)).length=o(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:undefined),t}})},function(e,t,n){"use strict";var r=n(4),o=n(247);r({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},function(e,t,n){"use strict";var r=n(21).forEach,o=n(44),i=n(29),a=o("forEach"),c=i("forEach");e.exports=a&&c?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}},function(e,t,n){"use strict";var r=n(4),o=n(249);r({target:"Array",stat:!0,forced:!n(85)((function(e){Array.from(e)}))},{from:o})},function(e,t,n){"use strict";var r=n(53),o=n(18),i=n(162),a=n(118),c=n(12),u=n(54),s=n(119);e.exports=function(e){var t,n,l,f,d,p,h=o(e),g="function"==typeof this?this:Array,v=arguments.length,m=v>1?arguments[1]:undefined,y=m!==undefined,b=s(h),w=0;if(y&&(m=r(m,v>2?arguments[2]:undefined,2)),b==undefined||g==Array&&a(b))for(n=new g(t=c(h.length));t>w;w++)p=y?m(h[w],w):h[w],u(n,w,p);else for(d=(f=b.call(h)).next,n=new g;!(l=d.call(f)).done;w++)p=y?i(f,m,[l.value,w],!0):l.value,u(n,w,p);return n.length=w,n}},function(e,t,n){"use strict";var r=n(4),o=n(69).includes,i=n(50);r({target:"Array",proto:!0,forced:!n(29)("indexOf",{ACCESSORS:!0,1:0})},{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("includes")},function(e,t,n){"use strict";var r=n(4),o=n(69).indexOf,i=n(44),a=n(29),c=[].indexOf,u=!!c&&1/[1].indexOf(1,-0)<0,s=i("indexOf"),l=a("indexOf",{ACCESSORS:!0,1:0});r({target:"Array",proto:!0,forced:u||!s||!l},{indexOf:function(e){return u?c.apply(this,arguments)||0:o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";n(4)({target:"Array",stat:!0},{isArray:n(58)})},function(e,t,n){"use strict";var r=n(4),o=n(66),i=n(31),a=n(44),c=[].join,u=o!=Object,s=a("join",",");r({target:"Array",proto:!0,forced:u||!s},{join:function(e){return c.call(i(this),e===undefined?",":e)}})},function(e,t,n){"use strict";var r=n(4),o=n(167);r({target:"Array",proto:!0,forced:o!==[].lastIndexOf},{lastIndexOf:o})},function(e,t,n){"use strict";var r=n(4),o=n(21).map,i=n(73),a=n(29),c=i("map"),u=a("map");r({target:"Array",proto:!0,forced:!c||!u},{map:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(54);r({target:"Array",stat:!0,forced:o((function(){function e(){}return!(Array.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);t>e;)i(n,e,arguments[e++]);return n.length=t,n}})},function(e,t,n){"use strict";var r=n(4),o=n(86).left,i=n(44),a=n(29),c=i("reduce"),u=a("reduce",{1:0});r({target:"Array",proto:!0,forced:!c||!u},{reduce:function(e){return o(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(86).right,i=n(44),a=n(29),c=i("reduceRight"),u=a("reduce",{1:0});r({target:"Array",proto:!0,forced:!c||!u},{reduceRight:function(e){return o(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(8),i=n(58),a=n(47),c=n(12),u=n(31),s=n(54),l=n(15),f=n(73),d=n(29),p=f("slice"),h=d("slice",{ACCESSORS:!0,0:0,1:2}),g=l("species"),v=[].slice,m=Math.max;r({target:"Array",proto:!0,forced:!p||!h},{slice:function(e,t){var n,r,l,f=u(this),d=c(f.length),p=a(e,d),h=a(t===undefined?d:t,d);if(i(f)&&("function"!=typeof(n=f.constructor)||n!==Array&&!i(n.prototype)?o(n)&&null===(n=n[g])&&(n=undefined):n=undefined,n===Array||n===undefined))return v.call(f,p,h);for(r=new(n===undefined?Array:n)(m(h-p,0)),l=0;p1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(28),i=n(18),a=n(5),c=n(44),u=[],s=u.sort,l=a((function(){u.sort(undefined)})),f=a((function(){u.sort(null)})),d=c("sort");r({target:"Array",proto:!0,forced:l||!f||!d},{sort:function(e){return e===undefined?s.call(i(this)):s.call(i(this),o(e))}})},function(e,t,n){"use strict";n(59)("Array")},function(e,t,n){"use strict";var r=n(4),o=n(47),i=n(38),a=n(12),c=n(18),u=n(72),s=n(54),l=n(73),f=n(29),d=l("splice"),p=f("splice",{ACCESSORS:!0,0:0,1:2}),h=Math.max,g=Math.min;r({target:"Array",proto:!0,forced:!d||!p},{splice:function(e,t){var n,r,l,f,d,p,v=c(this),m=a(v.length),y=o(e,m),b=arguments.length;if(0===b?n=r=0:1===b?(n=0,r=m-y):(n=b-2,r=g(h(i(t),0),m-y)),m+n-r>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(l=u(v,r),f=0;fm-r+n;f--)delete v[f-1]}else if(n>r)for(f=m-r;f>y;f--)p=f+n-1,(d=f+r-1)in v?v[p]=v[d]:delete v[p];for(f=0;f>1,g=23===t?o(2,-24)-o(2,-77):0,v=e<0||0===e&&1/e<0?1:0,m=0;for((e=r(e))!=e||e===1/0?(s=e!=e?1:0,u=p):(u=i(a(e)/c),e*(l=o(2,-u))<1&&(u--,l*=2),(e+=u+h>=1?g/l:g*o(2,1-h))*l>=2&&(u++,l/=2),u+h>=p?(s=0,u=p):u+h>=1?(s=(e*l-1)*o(2,t),u+=h):(s=e*o(2,h-1)*o(2,t),u=0));t>=8;f[m++]=255&s,s/=256,t-=8);for(u=u<0;f[m++]=255&u,u/=256,d-=8);return f[--m]|=128*v,f},unpack:function(e,t){var n,r=e.length,i=8*r-t-1,a=(1<>1,u=i-7,s=r-1,l=e[s--],f=127&l;for(l>>=7;u>0;f=256*f+e[s],s--,u-=8);for(n=f&(1<<-u)-1,f>>=-u,u+=t;u>0;n=256*n+e[s],s--,u-=8);if(0===f)f=1-c;else{if(f===a)return n?NaN:l?-1/0:1/0;n+=o(2,t),f-=c}return(l?-1:1)*n*o(2,f-t)}}},function(e,t,n){"use strict";var r=n(4),o=n(13);r({target:"ArrayBuffer",stat:!0,forced:!o.NATIVE_ARRAY_BUFFER_VIEWS},{isView:o.isView})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(87),a=n(10),c=n(47),u=n(12),s=n(45),l=i.ArrayBuffer,f=i.DataView,d=l.prototype.slice;r({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:o((function(){return!new l(2).slice(1,undefined).byteLength}))},{slice:function(e,t){if(d!==undefined&&t===undefined)return d.call(a(this),e);for(var n=a(this).byteLength,r=c(e,n),o=c(t===undefined?n:t,n),i=new(s(this,l))(u(o-r)),p=new f(this),h=new f(i),g=0;r9999?"+":"";return n+o(i(e),n?6:4,0)+"-"+o(this.getUTCMonth()+1,2,0)+"-"+o(this.getUTCDate(),2,0)+"T"+o(this.getUTCHours(),2,0)+":"+o(this.getUTCMinutes(),2,0)+":"+o(this.getUTCSeconds(),2,0)+"."+o(t,3,0)+"Z"}:u},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(18),a=n(40);r({target:"Date",proto:!0,forced:o((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(e){var t=i(this),n=a(t);return"number"!=typeof n||isFinite(n)?t.toISOString():null}})},function(e,t,n){"use strict";var r=n(32),o=n(276),i=n(15)("toPrimitive"),a=Date.prototype;i in a||r(a,i,o)},function(e,t,n){"use strict";var r=n(10),o=n(40);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return o(r(this),"number"!==e)}},function(e,t,n){"use strict";var r=n(26),o=Date.prototype,i=o.toString,a=o.getTime;new Date(NaN)+""!="Invalid Date"&&r(o,"toString",(function(){var e=a.call(this);return e==e?i.call(this):"Invalid Date"}))},function(e,t,n){"use strict";n(4)({target:"Function",proto:!0},{bind:n(169)})},function(e,t,n){"use strict";var r=n(8),o=n(16),i=n(42),a=n(15)("hasInstance"),c=Function.prototype;a in c||o.f(c,a,{value:function(e){if("function"!=typeof this||!r(e))return!1;if(!r(this.prototype))return e instanceof this;for(;e=i(e);)if(this.prototype===e)return!0;return!1}})},function(e,t,n){"use strict";var r=n(9),o=n(16).f,i=Function.prototype,a=i.toString,c=/^\s*function ([^ (]*)/;r&&!("name"in i)&&o(i,"name",{configurable:!0,get:function(){try{return a.call(this).match(c)[1]}catch(e){return""}}})},function(e,t,n){"use strict";n(4)({global:!0},{globalThis:n(7)})},function(e,t,n){"use strict";var r=n(4),o=n(41),i=n(5),a=o("JSON","stringify"),c=/[\uD800-\uDFFF]/g,u=/^[\uD800-\uDBFF]$/,s=/^[\uDC00-\uDFFF]$/,l=function(e,t,n){var r=n.charAt(t-1),o=n.charAt(t+1);return u.test(e)&&!s.test(o)||s.test(e)&&!u.test(r)?"\\u"+e.charCodeAt(0).toString(16):e},f=i((function(){return'"\\udf06\\ud834"'!==a("\udf06\ud834")||'"\\udead"'!==a("\udead")}));a&&r({target:"JSON",stat:!0,forced:f},{stringify:function(e,t,n){var r=a.apply(null,arguments);return"string"==typeof r?r.replace(c,l):r}})},function(e,t,n){"use strict";var r=n(7);n(49)(r.JSON,"JSON",!0)},function(e,t,n){"use strict";var r=n(88),o=n(170);e.exports=r("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),o)},function(e,t,n){"use strict";var r=n(4),o=n(171),i=Math.acosh,a=Math.log,c=Math.sqrt,u=Math.LN2;r({target:"Math",stat:!0,forced:!i||710!=Math.floor(i(Number.MAX_VALUE))||i(Infinity)!=Infinity},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?a(e)+u:o(e-1+c(e-1)*c(e+1))}})},function(e,t,n){"use strict";var r=n(4),o=Math.asinh,i=Math.log,a=Math.sqrt;r({target:"Math",stat:!0,forced:!(o&&1/o(0)>0)},{asinh:function c(e){return isFinite(e=+e)&&0!=e?e<0?-c(-e):i(e+a(e*e+1)):e}})},function(e,t,n){"use strict";var r=n(4),o=Math.atanh,i=Math.log;r({target:"Math",stat:!0,forced:!(o&&1/o(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:i((1+e)/(1-e))/2}})},function(e,t,n){"use strict";var r=n(4),o=n(126),i=Math.abs,a=Math.pow;r({target:"Math",stat:!0},{cbrt:function(e){return o(e=+e)*a(i(e),1/3)}})},function(e,t,n){"use strict";var r=n(4),o=Math.floor,i=Math.log,a=Math.LOG2E;r({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-o(i(e+.5)*a):32}})},function(e,t,n){"use strict";var r=n(4),o=n(90),i=Math.cosh,a=Math.abs,c=Math.E;r({target:"Math",stat:!0,forced:!i||i(710)===Infinity},{cosh:function(e){var t=o(a(e)-1)+1;return(t+1/(t*c*c))*(c/2)}})},function(e,t,n){"use strict";var r=n(4),o=n(90);r({target:"Math",stat:!0,forced:o!=Math.expm1},{expm1:o})},function(e,t,n){"use strict";n(4)({target:"Math",stat:!0},{fround:n(293)})},function(e,t,n){"use strict";var r=n(126),o=Math.abs,i=Math.pow,a=i(2,-52),c=i(2,-23),u=i(2,127)*(2-c),s=i(2,-126);e.exports=Math.fround||function(e){var t,n,i=o(e),l=r(e);return iu||n!=n?l*Infinity:l*n}},function(e,t,n){"use strict";var r=n(4),o=Math.hypot,i=Math.abs,a=Math.sqrt;r({target:"Math",stat:!0,forced:!!o&&o(Infinity,NaN)!==Infinity},{hypot:function(e,t){for(var n,r,o=0,c=0,u=arguments.length,s=0;c0?(r=n/s)*r:n;return s===Infinity?Infinity:s*a(o)}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=Math.imul;r({target:"Math",stat:!0,forced:o((function(){return-5!=i(4294967295,5)||2!=i.length}))},{imul:function(e,t){var n=+e,r=+t,o=65535&n,i=65535&r;return 0|o*i+((65535&n>>>16)*i+o*(65535&r>>>16)<<16>>>0)}})},function(e,t,n){"use strict";var r=n(4),o=Math.log,i=Math.LOG10E;r({target:"Math",stat:!0},{log10:function(e){return o(e)*i}})},function(e,t,n){"use strict";n(4)({target:"Math",stat:!0},{log1p:n(171)})},function(e,t,n){"use strict";var r=n(4),o=Math.log,i=Math.LN2;r({target:"Math",stat:!0},{log2:function(e){return o(e)/i}})},function(e,t,n){"use strict";n(4)({target:"Math",stat:!0},{sign:n(126)})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(90),a=Math.abs,c=Math.exp,u=Math.E;r({target:"Math",stat:!0,forced:o((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return a(e=+e)<1?(i(e)-i(-e))/2:(c(e-1)-c(-e-1))*(u/2)}})},function(e,t,n){"use strict";var r=n(4),o=n(90),i=Math.exp;r({target:"Math",stat:!0},{tanh:function(e){var t=o(e=+e),n=o(-e);return t==Infinity?1:n==Infinity?-1:(t-n)/(i(e)+i(-e))}})},function(e,t,n){"use strict";n(49)(Math,"Math",!0)},function(e,t,n){"use strict";var r=n(4),o=Math.ceil,i=Math.floor;r({target:"Math",stat:!0},{trunc:function(e){return(e>0?i:o)(e)}})},function(e,t,n){"use strict";var r=n(9),o=n(7),i=n(70),a=n(26),c=n(20),u=n(37),s=n(89),l=n(40),f=n(5),d=n(48),p=n(52).f,h=n(23).f,g=n(16).f,v=n(62).trim,m=o.Number,y=m.prototype,b="Number"==u(d(y)),w=function(e){var t,n,r,o,i,a,c,u,s=l(e,!1);if("string"==typeof s&&s.length>2)if(43===(t=(s=v(s)).charCodeAt(0))||45===t){if(88===(n=s.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(s.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+s}for(a=(i=s.slice(2)).length,c=0;co)return NaN;return parseInt(i,r)}return+s};if(i("Number",!m(" 0o1")||!m("0b1")||m("+0x1"))){for(var x,_=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof _&&(b?f((function(){y.valueOf.call(n)})):"Number"!=u(n))?s(new m(w(t)),n,_):w(t)},E=r?p(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),k=0;E.length>k;k++)c(m,x=E[k])&&!c(_,x)&&g(_,x,h(m,x));_.prototype=y,y.constructor=_,a(o,"Number",_)}},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)})},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{isFinite:n(307)})},function(e,t,n){"use strict";var r=n(7).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&r(e)}},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{isInteger:n(172)})},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{isNaN:function(e){return e!=e}})},function(e,t,n){"use strict";var r=n(4),o=n(172),i=Math.abs;r({target:"Number",stat:!0},{isSafeInteger:function(e){return o(e)&&i(e)<=9007199254740991}})},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991})},function(e,t,n){"use strict";var r=n(4),o=n(314);r({target:"Number",stat:!0,forced:Number.parseFloat!=o},{parseFloat:o})},function(e,t,n){"use strict";var r=n(7),o=n(62).trim,i=n(91),a=r.parseFloat,c=1/a(i+"-0")!=-Infinity;e.exports=c?function(e){var t=o(String(e)),n=a(t);return 0===n&&"-"==t.charAt(0)?-0:n}:a},function(e,t,n){"use strict";var r=n(4),o=n(173);r({target:"Number",stat:!0,forced:Number.parseInt!=o},{parseInt:o})},function(e,t,n){"use strict";var r=n(4),o=n(38),i=n(317),a=n(125),c=n(5),u=1..toFixed,s=Math.floor,l=function f(e,t,n){return 0===t?n:t%2==1?f(e,t-1,n*e):f(e*e,t/2,n)};r({target:"Number",proto:!0,forced:u&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!c((function(){u.call({})}))},{toFixed:function(e){var t,n,r,c,u=i(this),f=o(e),d=[0,0,0,0,0,0],p="",h="0",g=function(e,t){for(var n=-1,r=t;++n<6;)r+=e*d[n],d[n]=r%1e7,r=s(r/1e7)},v=function(e){for(var t=6,n=0;--t>=0;)n+=d[t],d[t]=s(n/e),n=n%e*1e7},m=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==d[e]){var n=String(d[e]);t=""===t?n:t+a.call("0",7-n.length)+n}return t};if(f<0||f>20)throw RangeError("Incorrect fraction digits");if(u!=u)return"NaN";if(u<=-1e21||u>=1e21)return String(u);if(u<0&&(p="-",u=-u),u>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(u*l(2,69,1))-69)<0?u*l(2,-t,1):u/l(2,t,1),n*=4503599627370496,(t=52-t)>0){for(g(0,n),r=f;r>=7;)g(1e7,0),r-=7;for(g(l(10,r,1),0),r=t-1;r>=23;)v(1<<23),r-=23;v(1<0?p+((c=h.length)<=f?"0."+a.call("0",f-c)+h:h.slice(0,c-f)+"."+h.slice(c-f)):p+h}})},function(e,t,n){"use strict";var r=n(37);e.exports=function(e){if("number"!=typeof e&&"Number"!=r(e))throw TypeError("Incorrect invocation");return+e}},function(e,t,n){"use strict";var r=n(4),o=n(319);r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},function(e,t,n){"use strict";var r=n(9),o=n(5),i=n(71),a=n(114),c=n(81),u=n(18),s=n(66),l=Object.assign,f=Object.defineProperty;e.exports=!l||o((function(){if(r&&1!==l({b:1},l(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=l({},e)[n]||"abcdefghijklmnopqrst"!=i(l({},t)).join("")}))?function(e,t){for(var n=u(e),o=arguments.length,l=1,f=a.f,d=c.f;o>l;)for(var p,h=s(arguments[l++]),g=f?i(h).concat(f(h)):i(h),v=g.length,m=0;v>m;)p=g[m++],r&&!d.call(h,p)||(n[p]=h[p]);return n}:l},function(e,t,n){"use strict";n(4)({target:"Object",stat:!0,sham:!n(9)},{create:n(48)})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(92),a=n(18),c=n(28),u=n(16);o&&r({target:"Object",proto:!0,forced:i},{__defineGetter__:function(e,t){u.f(a(this),e,{get:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var r=n(4),o=n(9);r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperties:n(156)})},function(e,t,n){"use strict";var r=n(4),o=n(9);r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperty:n(16).f})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(92),a=n(18),c=n(28),u=n(16);o&&r({target:"Object",proto:!0,forced:i},{__defineSetter__:function(e,t){u.f(a(this),e,{set:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var r=n(4),o=n(174).entries;r({target:"Object",stat:!0},{entries:function(e){return o(e)}})},function(e,t,n){"use strict";var r=n(4),o=n(76),i=n(5),a=n(8),c=n(56).onFreeze,u=Object.freeze;r({target:"Object",stat:!0,forced:i((function(){u(1)})),sham:!o},{freeze:function(e){return u&&a(e)?u(c(e)):e}})},function(e,t,n){"use strict";var r=n(4),o=n(61),i=n(54);r({target:"Object",stat:!0},{fromEntries:function(e){var t={};return o(e,(function(e,n){i(t,e,n)}),undefined,!0),t}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(31),a=n(23).f,c=n(9),u=o((function(){a(1)}));r({target:"Object",stat:!0,forced:!c||u,sham:!c},{getOwnPropertyDescriptor:function(e,t){return a(i(e),t)}})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(112),a=n(31),c=n(23),u=n(54);r({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(e){for(var t,n,r=a(e),o=c.f,s=i(r),l={},f=0;s.length>f;)(n=o(r,t=s[f++]))!==undefined&&u(l,t,n);return l}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(158).f;r({target:"Object",stat:!0,forced:o((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:i})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(18),a=n(42),c=n(122);r({target:"Object",stat:!0,forced:o((function(){a(1)})),sham:!c},{getPrototypeOf:function(e){return a(i(e))}})},function(e,t,n){"use strict";n(4)({target:"Object",stat:!0},{is:n(175)})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(8),a=Object.isExtensible;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isExtensible:function(e){return!!i(e)&&(!a||a(e))}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(8),a=Object.isFrozen;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isFrozen:function(e){return!i(e)||!!a&&a(e)}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(8),a=Object.isSealed;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isSealed:function(e){return!i(e)||!!a&&a(e)}})},function(e,t,n){"use strict";var r=n(4),o=n(18),i=n(71);r({target:"Object",stat:!0,forced:n(5)((function(){i(1)}))},{keys:function(e){return i(o(e))}})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(92),a=n(18),c=n(40),u=n(42),s=n(23).f;o&&r({target:"Object",proto:!0,forced:i},{__lookupGetter__:function(e){var t,n=a(this),r=c(e,!0);do{if(t=s(n,r))return t.get}while(n=u(n))}})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(92),a=n(18),c=n(40),u=n(42),s=n(23).f;o&&r({target:"Object",proto:!0,forced:i},{__lookupSetter__:function(e){var t,n=a(this),r=c(e,!0);do{if(t=s(n,r))return t.set}while(n=u(n))}})},function(e,t,n){"use strict";var r=n(4),o=n(8),i=n(56).onFreeze,a=n(76),c=n(5),u=Object.preventExtensions;r({target:"Object",stat:!0,forced:c((function(){u(1)})),sham:!a},{preventExtensions:function(e){return u&&o(e)?u(i(e)):e}})},function(e,t,n){"use strict";var r=n(4),o=n(8),i=n(56).onFreeze,a=n(76),c=n(5),u=Object.seal;r({target:"Object",stat:!0,forced:c((function(){u(1)})),sham:!a},{seal:function(e){return u&&o(e)?u(i(e)):e}})},function(e,t,n){"use strict";n(4)({target:"Object",stat:!0},{setPrototypeOf:n(55)})},function(e,t,n){"use strict";var r=n(120),o=n(26),i=n(343);r||o(Object.prototype,"toString",i,{unsafe:!0})},function(e,t,n){"use strict";var r=n(120),o=n(84);e.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},function(e,t,n){"use strict";var r=n(4),o=n(174).values;r({target:"Object",stat:!0},{values:function(e){return o(e)}})},function(e,t,n){"use strict";var r=n(4),o=n(173);r({global:!0,forced:parseInt!=o},{parseInt:o})},function(e,t,n){"use strict";var r,o,i,a,c=n(4),u=n(43),s=n(7),l=n(41),f=n(176),d=n(26),p=n(75),h=n(49),g=n(59),v=n(8),m=n(28),y=n(60),b=n(37),w=n(110),x=n(61),_=n(85),E=n(45),k=n(127).set,S=n(178),C=n(179),N=n(347),A=n(128),T=n(180),O=n(33),I=n(70),M=n(15),L=n(116),V=M("species"),R="Promise",P=O.get,B=O.set,D=O.getterFor(R),j=f,F=s.TypeError,K=s.document,z=s.process,Y=l("fetch"),U=A.f,$=U,H="process"==b(z),W=!!(K&&K.createEvent&&s.dispatchEvent),q=I(R,(function(){if(!(w(j)!==String(j))){if(66===L)return!0;if(!H&&"function"!=typeof PromiseRejectionEvent)return!0}if(u&&!j.prototype["finally"])return!0;if(L>=51&&/native code/.test(j))return!1;var e=j.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[V]=t,!(e.then((function(){}))instanceof t)})),G=q||!_((function(e){j.all(e)["catch"]((function(){}))})),X=function(e){var t;return!(!v(e)||"function"!=typeof(t=e.then))&&t},Z=function(e,t,n){if(!t.notified){t.notified=!0;var r=t.reactions;S((function(){for(var o=t.value,i=1==t.state,a=0;r.length>a;){var c,u,s,l=r[a++],f=i?l.ok:l.fail,d=l.resolve,p=l.reject,h=l.domain;try{f?(i||(2===t.rejection&&te(e,t),t.rejection=1),!0===f?c=o:(h&&h.enter(),c=f(o),h&&(h.exit(),s=!0)),c===l.promise?p(F("Promise-chain cycle")):(u=X(c))?u.call(c,d,p):d(c)):p(o)}catch(g){h&&!s&&h.exit(),p(g)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&J(e,t)}))}},Q=function(e,t,n){var r,o;W?((r=K.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),s.dispatchEvent(r)):r={promise:t,reason:n},(o=s["on"+e])?o(r):"unhandledrejection"===e&&N("Unhandled promise rejection",n)},J=function(e,t){k.call(s,(function(){var n,r=t.value;if(ee(t)&&(n=T((function(){H?z.emit("unhandledRejection",r,e):Q("unhandledrejection",e,r)})),t.rejection=H||ee(t)?2:1,n.error))throw n.value}))},ee=function(e){return 1!==e.rejection&&!e.parent},te=function(e,t){k.call(s,(function(){H?z.emit("rejectionHandled",e):Q("rejectionhandled",e,t.value)}))},ne=function(e,t,n,r){return function(o){e(t,n,o,r)}},re=function(e,t,n,r){t.done||(t.done=!0,r&&(t=r),t.value=n,t.state=2,Z(e,t,!0))},oe=function ie(e,t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(e===n)throw F("Promise can't be resolved itself");var o=X(n);o?S((function(){var r={done:!1};try{o.call(n,ne(ie,e,r,t),ne(re,e,r,t))}catch(i){re(e,r,i,t)}})):(t.value=n,t.state=1,Z(e,t,!1))}catch(i){re(e,{done:!1},i,t)}}};q&&(j=function(e){y(this,j,R),m(e),r.call(this);var t=P(this);try{e(ne(oe,this,t),ne(re,this,t))}catch(n){re(this,t,n)}},(r=function(e){B(this,{type:R,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:undefined})}).prototype=p(j.prototype,{then:function(e,t){var n=D(this),r=U(E(this,j));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=H?z.domain:undefined,n.parent=!0,n.reactions.push(r),0!=n.state&&Z(this,n,!1),r.promise},"catch":function(e){return this.then(undefined,e)}}),o=function(){var e=new r,t=P(e);this.promise=e,this.resolve=ne(oe,e,t),this.reject=ne(re,e,t)},A.f=U=function(e){return e===j||e===i?new o(e):$(e)},u||"function"!=typeof f||(a=f.prototype.then,d(f.prototype,"then",(function(e,t){var n=this;return new j((function(e,t){a.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof Y&&c({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return C(j,Y.apply(s,arguments))}}))),c({global:!0,wrap:!0,forced:q},{Promise:j}),h(j,R,!1,!0),g(R),i=l(R),c({target:R,stat:!0,forced:q},{reject:function(e){var t=U(this);return t.reject.call(undefined,e),t.promise}}),c({target:R,stat:!0,forced:u||q},{resolve:function(e){return C(u&&this===i?j:this,e)}}),c({target:R,stat:!0,forced:G},{all:function(e){var t=this,n=U(t),r=n.resolve,o=n.reject,i=T((function(){var n=m(t.resolve),i=[],a=0,c=1;x(e,(function(e){var u=a++,s=!1;i.push(undefined),c++,n.call(t,e).then((function(e){s||(s=!0,i[u]=e,--c||r(i))}),o)})),--c||r(i)}));return i.error&&o(i.value),n.promise},race:function(e){var t=this,n=U(t),r=n.reject,o=T((function(){var o=m(t.resolve);x(e,(function(e){o.call(t,e).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},function(e,t,n){"use strict";var r=n(7);e.exports=function(e,t){var n=r.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},function(e,t,n){"use strict";var r=n(4),o=n(28),i=n(128),a=n(180),c=n(61);r({target:"Promise",stat:!0},{allSettled:function(e){var t=this,n=i.f(t),r=n.resolve,u=n.reject,s=a((function(){var n=o(t.resolve),i=[],a=0,u=1;c(e,(function(e){var o=a++,c=!1;i.push(undefined),u++,n.call(t,e).then((function(e){c||(c=!0,i[o]={status:"fulfilled",value:e},--u||r(i))}),(function(e){c||(c=!0,i[o]={status:"rejected",reason:e},--u||r(i))}))})),--u||r(i)}));return s.error&&u(s.value),n.promise}})},function(e,t,n){"use strict";var r=n(4),o=n(43),i=n(176),a=n(5),c=n(41),u=n(45),s=n(179),l=n(26);r({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){i.prototype["finally"].call({then:function(){}},(function(){}))}))},{"finally":function(e){var t=u(this,c("Promise")),n="function"==typeof e;return this.then(n?function(n){return s(t,e()).then((function(){return n}))}:e,n?function(n){return s(t,e()).then((function(){throw n}))}:e)}}),o||"function"!=typeof i||i.prototype["finally"]||l(i.prototype,"finally",c("Promise").prototype["finally"])},function(e,t,n){"use strict";var r=n(4),o=n(41),i=n(28),a=n(10),c=n(5),u=o("Reflect","apply"),s=Function.apply;r({target:"Reflect",stat:!0,forced:!c((function(){u((function(){}))}))},{apply:function(e,t,n){return i(e),a(n),u?u(e,t,n):s.call(e,t,n)}})},function(e,t,n){"use strict";var r=n(4),o=n(41),i=n(28),a=n(10),c=n(8),u=n(48),s=n(169),l=n(5),f=o("Reflect","construct"),d=l((function(){function e(){}return!(f((function(){}),[],e)instanceof e)})),p=!l((function(){f((function(){}))})),h=d||p;r({target:"Reflect",stat:!0,forced:h,sham:h},{construct:function(e,t){i(e),a(t);var n=arguments.length<3?e:i(arguments[2]);if(p&&!d)return f(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return r.push.apply(r,t),new(s.apply(e,r))}var o=n.prototype,l=u(c(o)?o:Object.prototype),h=Function.apply.call(e,l,t);return c(h)?h:l}})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(10),a=n(40),c=n(16);r({target:"Reflect",stat:!0,forced:n(5)((function(){Reflect.defineProperty(c.f({},1,{value:1}),1,{value:2})})),sham:!o},{defineProperty:function(e,t,n){i(e);var r=a(t,!0);i(n);try{return c.f(e,r,n),!0}catch(o){return!1}}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(23).f;r({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=i(o(e),t);return!(n&&!n.configurable)&&delete e[t]}})},function(e,t,n){"use strict";var r=n(4),o=n(8),i=n(10),a=n(20),c=n(23),u=n(42);r({target:"Reflect",stat:!0},{get:function s(e,t){var n,r,l=arguments.length<3?e:arguments[2];return i(e)===l?e[t]:(n=c.f(e,t))?a(n,"value")?n.value:n.get===undefined?undefined:n.get.call(l):o(r=u(e))?s(r,t,l):void 0}})},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(10),a=n(23);r({target:"Reflect",stat:!0,sham:!o},{getOwnPropertyDescriptor:function(e,t){return a.f(i(e),t)}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(42);r({target:"Reflect",stat:!0,sham:!n(122)},{getPrototypeOf:function(e){return i(o(e))}})},function(e,t,n){"use strict";n(4)({target:"Reflect",stat:!0},{has:function(e,t){return t in e}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=Object.isExtensible;r({target:"Reflect",stat:!0},{isExtensible:function(e){return o(e),!i||i(e)}})},function(e,t,n){"use strict";n(4)({target:"Reflect",stat:!0},{ownKeys:n(112)})},function(e,t,n){"use strict";var r=n(4),o=n(41),i=n(10);r({target:"Reflect",stat:!0,sham:!n(76)},{preventExtensions:function(e){i(e);try{var t=o("Object","preventExtensions");return t&&t(e),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(8),a=n(20),c=n(5),u=n(16),s=n(23),l=n(42),f=n(51);r({target:"Reflect",stat:!0,forced:c((function(){var e=u.f({},"a",{configurable:!0});return!1!==Reflect.set(l(e),"a",1,e)}))},{set:function d(e,t,n){var r,c,p=arguments.length<4?e:arguments[3],h=s.f(o(e),t);if(!h){if(i(c=l(e)))return d(c,t,n,p);h=f(0)}if(a(h,"value")){if(!1===h.writable||!i(p))return!1;if(r=s.f(p,t)){if(r.get||r.set||!1===r.writable)return!1;r.value=n,u.f(p,t,r)}else u.f(p,t,f(0,n));return!0}return h.set!==undefined&&(h.set.call(p,n),!0)}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(166),a=n(55);a&&r({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){o(e),i(t);try{return a(e,t),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var r=n(9),o=n(7),i=n(70),a=n(89),c=n(16).f,u=n(52).f,s=n(93),l=n(77),f=n(94),d=n(26),p=n(5),h=n(33).set,g=n(59),v=n(15)("match"),m=o.RegExp,y=m.prototype,b=/a/g,w=/a/g,x=new m(b)!==b,_=f.UNSUPPORTED_Y;if(r&&i("RegExp",!x||_||p((function(){return w[v]=!1,m(b)!=b||m(w)==w||"/a/i"!=m(b,"i")})))){for(var E=function(e,t){var n,r=this instanceof E,o=s(e),i=t===undefined;if(!r&&o&&e.constructor===E&&i)return e;x?o&&!i&&(e=e.source):e instanceof E&&(i&&(t=l.call(e)),e=e.source),_&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var c=a(x?new m(e,t):m(e,t),r?this:y,E);return _&&n&&h(c,{sticky:n}),c},k=function(e){e in E||c(E,e,{configurable:!0,get:function(){return m[e]},set:function(t){m[e]=t}})},S=u(m),C=0;S.length>C;)k(S[C++]);y.constructor=E,E.prototype=y,d(o,"RegExp",E)}g("RegExp")},function(e,t,n){"use strict";var r=n(9),o=n(16),i=n(77),a=n(94).UNSUPPORTED_Y;r&&("g"!=/./g.flags||a)&&o.f(RegExp.prototype,"flags",{configurable:!0,get:i})},function(e,t,n){"use strict";var r=n(9),o=n(94).UNSUPPORTED_Y,i=n(16).f,a=n(33).get,c=RegExp.prototype;r&&o&&i(RegExp.prototype,"sticky",{configurable:!0,get:function(){if(this===c)return undefined;if(this instanceof RegExp)return!!a(this).sticky;throw TypeError("Incompatible receiver, RegExp required")}})},function(e,t,n){"use strict";n(129);var r,o,i=n(4),a=n(8),c=(r=!1,(o=/[ac]/).exec=function(){return r=!0,/./.exec.apply(this,arguments)},!0===o.test("abc")&&r),u=/./.test;i({target:"RegExp",proto:!0,forced:!c},{test:function(e){if("function"!=typeof this.exec)return u.call(this,e);var t=this.exec(e);if(null!==t&&!a(t))throw new Error("RegExp exec method returned something other than an Object or null");return!!t}})},function(e,t,n){"use strict";var r=n(26),o=n(10),i=n(5),a=n(77),c=RegExp.prototype,u=c.toString,s=i((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),l="toString"!=u.name;(s||l)&&r(RegExp.prototype,"toString",(function(){var e=o(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(n===undefined&&e instanceof RegExp&&!("flags"in c)?a.call(e):n)}),{unsafe:!0})},function(e,t,n){"use strict";var r=n(88),o=n(170);e.exports=r("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),o)},function(e,t,n){"use strict";var r=n(4),o=n(130).codeAt;r({target:"String",proto:!0},{codePointAt:function(e){return o(this,e)}})},function(e,t,n){"use strict";var r,o=n(4),i=n(23).f,a=n(12),c=n(131),u=n(24),s=n(132),l=n(43),f="".endsWith,d=Math.min,p=s("endsWith");o({target:"String",proto:!0,forced:!!(l||p||(r=i(String.prototype,"endsWith"),!r||r.writable))&&!p},{endsWith:function(e){var t=String(u(this));c(e);var n=arguments.length>1?arguments[1]:undefined,r=a(t.length),o=n===undefined?r:d(a(n),r),i=String(e);return f?f.call(t,i,o):t.slice(o-i.length,o)===i}})},function(e,t,n){"use strict";var r=n(4),o=n(47),i=String.fromCharCode,a=String.fromCodePoint;r({target:"String",stat:!0,forced:!!a&&1!=a.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,a=0;r>a;){if(t=+arguments[a++],o(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?i(t):i(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}})},function(e,t,n){"use strict";var r=n(4),o=n(131),i=n(24);r({target:"String",proto:!0,forced:!n(132)("includes")},{includes:function(e){return!!~String(i(this)).indexOf(o(e),arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(130).charAt,o=n(33),i=n(121),a=o.set,c=o.getterFor("String Iterator");i(String,"String",(function(e){a(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=c(this),n=t.string,o=t.index;return o>=n.length?{value:undefined,done:!0}:(e=r(n,o),t.index+=e.length,{value:e,done:!1})}))},function(e,t,n){"use strict";var r=n(96),o=n(10),i=n(12),a=n(24),c=n(97),u=n(98);r("match",1,(function(e,t,n){return[function(t){var n=a(this),r=t==undefined?undefined:t[e];return r!==undefined?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var a=o(e),s=String(this);if(!a.global)return u(a,s);var l=a.unicode;a.lastIndex=0;for(var f,d=[],p=0;null!==(f=u(a,s));){var h=String(f[0]);d[p]=h,""===h&&(a.lastIndex=c(s,i(a.lastIndex),l)),p++}return 0===p?null:d}]}))},function(e,t,n){"use strict";var r=n(4),o=n(164),i=n(24),a=n(12),c=n(28),u=n(10),s=n(37),l=n(93),f=n(77),d=n(32),p=n(5),h=n(15),g=n(45),v=n(97),m=n(33),y=n(43),b=h("matchAll"),w=m.set,x=m.getterFor("RegExp String Iterator"),_=RegExp.prototype,E=_.exec,k="".matchAll,S=!!k&&!p((function(){"a".matchAll(/./)})),C=o((function(e,t,n,r){w(this,{type:"RegExp String Iterator",regexp:e,string:t,global:n,unicode:r,done:!1})}),"RegExp String",(function(){var e=x(this);if(e.done)return{value:undefined,done:!0};var t=e.regexp,n=e.string,r=function(e,t){var n,r=e.exec;if("function"==typeof r){if("object"!=typeof(n=r.call(e,t)))throw TypeError("Incorrect exec result");return n}return E.call(e,t)}(t,n);return null===r?{value:undefined,done:e.done=!0}:e.global?(""==String(r[0])&&(t.lastIndex=v(n,a(t.lastIndex),e.unicode)),{value:r,done:!1}):(e.done=!0,{value:r,done:!1})})),N=function(e){var t,n,r,o,i,c,s=u(this),l=String(e);return t=g(s,RegExp),(n=s.flags)===undefined&&s instanceof RegExp&&!("flags"in _)&&(n=f.call(s)),r=n===undefined?"":String(n),o=new t(t===RegExp?s.source:s,r),i=!!~r.indexOf("g"),c=!!~r.indexOf("u"),o.lastIndex=a(s.lastIndex),new C(o,l,i,c)};r({target:"String",proto:!0,forced:S},{matchAll:function(e){var t,n,r,o=i(this);if(null!=e){if(l(e)&&!~String(i("flags"in _?e.flags:f.call(e))).indexOf("g"))throw TypeError("`.matchAll` does not allow non-global regexes");if(S)return k.apply(o,arguments);if((n=e[b])===undefined&&y&&"RegExp"==s(e)&&(n=N),null!=n)return c(n).call(e,o)}else if(S)return k.apply(o,arguments);return t=String(o),r=new RegExp(e,"g"),y?N.call(r,t):r[b](t)}}),y||b in _||d(_,b,N)},function(e,t,n){"use strict";var r=n(4),o=n(124).end;r({target:"String",proto:!0,forced:n(181)},{padEnd:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(124).start;r({target:"String",proto:!0,forced:n(181)},{padStart:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(31),i=n(12);r({target:"String",stat:!0},{raw:function(e){for(var t=o(e.raw),n=i(t.length),r=arguments.length,a=[],c=0;n>c;)a.push(String(t[c++])),c]*>)/g,g=/\$([$&'`]|\d\d?)/g;r("replace",2,(function(e,t,n,r){var v=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=r.REPLACE_KEEPS_$0,y=v?"$":"$0";return[function(n,r){var o=u(this),i=n==undefined?undefined:n[e];return i!==undefined?i.call(n,o,r):t.call(String(o),n,r)},function(e,r){if(!v&&m||"string"==typeof r&&-1===r.indexOf(y)){var i=n(t,e,this,r);if(i.done)return i.value}var u=o(e),p=String(this),h="function"==typeof r;h||(r=String(r));var g=u.global;if(g){var w=u.unicode;u.lastIndex=0}for(var x=[];;){var _=l(u,p);if(null===_)break;if(x.push(_),!g)break;""===String(_[0])&&(u.lastIndex=s(p,a(u.lastIndex),w))}for(var E,k="",S=0,C=0;C=S&&(k+=p.slice(S,A)+L,S=A+N.length)}return k+p.slice(S)}];function b(e,n,r,o,a,c){var u=r+e.length,s=o.length,l=g;return a!==undefined&&(a=i(a),l=h),t.call(c,l,(function(t,i){var c;switch(i.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,r);case"'":return n.slice(u);case"<":c=a[i.slice(1,-1)];break;default:var l=+i;if(0===l)return t;if(l>s){var f=p(l/10);return 0===f?t:f<=s?o[f-1]===undefined?i.charAt(1):o[f-1]+i.charAt(1):t}c=o[l-1]}return c===undefined?"":c}))}}))},function(e,t,n){"use strict";var r=n(96),o=n(10),i=n(24),a=n(175),c=n(98);r("search",1,(function(e,t,n){return[function(t){var n=i(this),r=t==undefined?undefined:t[e];return r!==undefined?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=o(e),u=String(this),s=i.lastIndex;a(s,0)||(i.lastIndex=0);var l=c(i,u);return a(i.lastIndex,s)||(i.lastIndex=s),null===l?-1:l.index}]}))},function(e,t,n){"use strict";var r=n(96),o=n(93),i=n(10),a=n(24),c=n(45),u=n(97),s=n(12),l=n(98),f=n(95),d=n(5),p=[].push,h=Math.min,g=!d((function(){return!RegExp(4294967295,"y")}));r("split",2,(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(a(this)),i=n===undefined?4294967295:n>>>0;if(0===i)return[];if(e===undefined)return[r];if(!o(e))return t.call(r,e,i);for(var c,u,s,l=[],d=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,g=new RegExp(e.source,d+"g");(c=f.call(g,r))&&!((u=g.lastIndex)>h&&(l.push(r.slice(h,c.index)),c.length>1&&c.index=i));)g.lastIndex===c.index&&g.lastIndex++;return h===r.length?!s&&g.test("")||l.push(""):l.push(r.slice(h)),l.length>i?l.slice(0,i):l}:"0".split(undefined,0).length?function(e,n){return e===undefined&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var o=a(this),i=t==undefined?undefined:t[e];return i!==undefined?i.call(t,o,n):r.call(String(o),t,n)},function(e,o){var a=n(r,e,this,o,r!==t);if(a.done)return a.value;var f=i(e),d=String(this),p=c(f,RegExp),v=f.unicode,m=(f.ignoreCase?"i":"")+(f.multiline?"m":"")+(f.unicode?"u":"")+(g?"y":"g"),y=new p(g?f:"^(?:"+f.source+")",m),b=o===undefined?4294967295:o>>>0;if(0===b)return[];if(0===d.length)return null===l(y,d)?[d]:[];for(var w=0,x=0,_=[];x1?arguments[1]:undefined,t.length)),r=String(e);return f?f.call(t,r,n):t.slice(n,n+r.length)===r}})},function(e,t,n){"use strict";var r=n(4),o=n(62).trim;r({target:"String",proto:!0,forced:n(133)("trim")},{trim:function(){return o(this)}})},function(e,t,n){"use strict";var r=n(4),o=n(62).end,i=n(133)("trimEnd"),a=i?function(){return o(this)}:"".trimEnd;r({target:"String",proto:!0,forced:i},{trimEnd:a,trimRight:a})},function(e,t,n){"use strict";var r=n(4),o=n(62).start,i=n(133)("trimStart"),a=i?function(){return o(this)}:"".trimStart;r({target:"String",proto:!0,forced:i},{trimStart:a,trimLeft:a})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("anchor")},{anchor:function(e){return o(this,"a","name",e)}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("big")},{big:function(){return o(this,"big","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("blink")},{blink:function(){return o(this,"blink","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("bold")},{bold:function(){return o(this,"b","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("fixed")},{fixed:function(){return o(this,"tt","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("fontcolor")},{fontcolor:function(e){return o(this,"font","color",e)}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("fontsize")},{fontsize:function(e){return o(this,"font","size",e)}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("italics")},{italics:function(){return o(this,"i","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("link")},{link:function(e){return o(this,"a","href",e)}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("small")},{small:function(){return o(this,"small","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("strike")},{strike:function(){return o(this,"strike","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("sub")},{sub:function(){return o(this,"sub","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("sup")},{sup:function(){return o(this,"sup","","")}})},function(e,t,n){"use strict";n(46)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";var r=n(38);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},function(e,t,n){"use strict";n(46)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0)},function(e,t,n){"use strict";n(46)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";var r=n(13),o=n(160),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("copyWithin",(function(e,t){return o.call(i(this),e,t,arguments.length>2?arguments[2]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).every,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(117),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",(function(e){return o.apply(i(this),arguments)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).filter,i=n(45),a=r.aTypedArray,c=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("filter",(function(e){for(var t=o(a(this),e,arguments.length>1?arguments[1]:undefined),n=i(this,this.constructor),r=0,u=t.length,s=new(c(n))(u);u>r;)s[r]=t[r++];return s}))},function(e,t,n){"use strict";var r=n(13),o=n(21).find,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).findIndex,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).forEach,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",(function(e){o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(134);(0,n(13).exportTypedArrayStaticMethod)("from",n(183),r)},function(e,t,n){"use strict";var r=n(13),o=n(69).includes,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(69).indexOf,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(13),i=n(163),a=n(15)("iterator"),c=r.Uint8Array,u=i.values,s=i.keys,l=i.entries,f=o.aTypedArray,d=o.exportTypedArrayMethod,p=c&&c.prototype[a],h=!!p&&("values"==p.name||p.name==undefined),g=function(){return u.call(f(this))};d("entries",(function(){return l.call(f(this))})),d("keys",(function(){return s.call(f(this))})),d("values",g,!h),d(a,g,!h)},function(e,t,n){"use strict";var r=n(13),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=[].join;i("join",(function(e){return a.apply(o(this),arguments)}))},function(e,t,n){"use strict";var r=n(13),o=n(167),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",(function(e){return o.apply(i(this),arguments)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).map,i=n(45),a=r.aTypedArray,c=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",(function(e){return o(a(this),e,arguments.length>1?arguments[1]:undefined,(function(e,t){return new(c(i(e,e.constructor)))(t)}))}))},function(e,t,n){"use strict";var r=n(13),o=n(134),i=r.aTypedArrayConstructor;(0,r.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(i(this))(t);t>e;)n[e]=arguments[e++];return n}),o)},function(e,t,n){"use strict";var r=n(13),o=n(86).left,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",(function(e){return o(i(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(86).right,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",(function(e){return o(i(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=Math.floor;i("reverse",(function(){for(var e,t=o(this).length,n=a(t/2),r=0;r1?arguments[1]:undefined,1),n=this.length,r=a(e),c=o(r.length),s=0;if(c+t>n)throw RangeError("Wrong length");for(;si;)l[i]=n[i++];return l}),i((function(){new Int8Array(1).slice()})))},function(e,t,n){"use strict";var r=n(13),o=n(21).some,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=[].sort;i("sort",(function(e){return a.call(o(this),e)}))},function(e,t,n){"use strict";var r=n(13),o=n(12),i=n(47),a=n(45),c=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",(function(e,t){var n=c(this),r=n.length,u=i(e,r);return new(a(n,n.constructor))(n.buffer,n.byteOffset+u*n.BYTES_PER_ELEMENT,o((t===undefined?r:i(t,r))-u))}))},function(e,t,n){"use strict";var r=n(7),o=n(13),i=n(5),a=r.Int8Array,c=o.aTypedArray,u=o.exportTypedArrayMethod,s=[].toLocaleString,l=[].slice,f=!!a&&i((function(){s.call(new a(1))}));u("toLocaleString",(function(){return s.apply(f?l.call(c(this)):c(this),arguments)}),i((function(){return[1,2].toLocaleString()!=new a([1,2]).toLocaleString()}))||!i((function(){a.prototype.toLocaleString.call([1,2])})))},function(e,t,n){"use strict";var r=n(13).exportTypedArrayMethod,o=n(5),i=n(7).Uint8Array,a=i&&i.prototype||{},c=[].toString,u=[].join;o((function(){c.call({})}))&&(c=function(){return u.call(this)});var s=a.toString!=c;r("toString",c,s)},function(e,t,n){"use strict";var r,o=n(7),i=n(75),a=n(56),c=n(88),u=n(184),s=n(8),l=n(33).enforce,f=n(151),d=!o.ActiveXObject&&"ActiveXObject"in o,p=Object.isExtensible,h=function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}},g=e.exports=c("WeakMap",h,u);if(f&&d){r=u.getConstructor(h,"WeakMap",!0),a.REQUIRED=!0;var v=g.prototype,m=v["delete"],y=v.has,b=v.get,w=v.set;i(v,{"delete":function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),m.call(this,e)||t.frozen["delete"](e)}return m.call(this,e)},has:function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),y.call(this,e)||t.frozen.has(e)}return y.call(this,e)},get:function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),y.call(this,e)?b.call(this,e):t.frozen.get(e)}return b.call(this,e)},set:function(e,t){if(s(e)&&!p(e)){var n=l(this);n.frozen||(n.frozen=new r),y.call(this,e)?w.call(this,e,t):n.frozen.set(e,t)}else w.call(this,e,t);return this}})}},function(e,t,n){"use strict";n(88)("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),n(184))},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(127);r({global:!0,bind:!0,enumerable:!0,forced:!o.setImmediate||!o.clearImmediate},{setImmediate:i.set,clearImmediate:i.clear})},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(178),a=n(37),c=o.process,u="process"==a(c);r({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){var t=u&&c.domain;i(t?t.bind(e):e)}})},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(83),a=[].slice,c=function(e){return function(t,n){var r=arguments.length>2,o=r?a.call(arguments,2):undefined;return e(r?function(){("function"==typeof t?t:Function(t)).apply(this,o)}:t,n)}};r({global:!0,bind:!0,forced:/MSIE .\./.test(i)},{setTimeout:c(o.setTimeout),setInterval:c(o.setInterval)})},function(e,t,n){"use strict";var r=function(e){var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",i=r.asyncIterator||"@@asyncIterator",a=r.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(C){c=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var o=t&&t.prototype instanceof f?t:f,i=Object.create(o.prototype),a=new E(r||[]);return i._invoke=function(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return S()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var c=w(a,n);if(c){if(c===l)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var u=s(e,t,n);if("normal"===u.type){if(r=n.done?"completed":"suspendedYield",u.arg===l)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(r="completed",n.method="throw",n.arg=u.arg)}}}(e,n,a),i}function s(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(C){return{type:"throw",arg:C}}}e.wrap=u;var l={};function f(){}function d(){}function p(){}var h={};h[o]=function(){return this};var g=Object.getPrototypeOf,v=g&&g(g(k([])));v&&v!==t&&n.call(v,o)&&(h=v);var m=p.prototype=f.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var r;this._invoke=function(o,i){function a(){return new t((function(r,a){!function c(r,o,i,a){var u=s(e[r],e,o);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==typeof f&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){c("next",e,i,a)}),(function(e){c("throw",e,i,a)})):t.resolve(f).then((function(e){l.value=e,i(l)}),(function(e){return c("throw",e,i,a)}))}a(u.arg)}(o,i,r,a)}))}return r=r?r.then(a,a):a()}}function w(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator["return"]&&(t.method="return",t.arg=void 0,w(e,t),"throw"===t.method))return l;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return l}var r=s(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,l;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,l):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,l)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function _(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function E(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function k(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),_(n),l}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;_(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:k(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),l}},e}(e.exports);try{regeneratorRuntime=r}catch(o){Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){"use strict";!function(t,n){var r,o,i=t.html5||{},a=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,c=/^(?: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,u=0,s={};function l(){var e=h.elements;return"string"==typeof e?e.split(" "):e}function f(e){var t=s[e._html5shiv];return t||(t={},u++,e._html5shiv=u,s[u]=t),t}function d(e,t,r){return t||(t=n),o?t.createElement(e):(r||(r=f(t)),!(i=r.cache[e]?r.cache[e].cloneNode():c.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e)).canHaveChildren||a.test(e)||i.tagUrn?i:r.frag.appendChild(i));var i}function p(e){e||(e=n);var t=f(e);return!h.shivCSS||r||t.hasCSS||(t.hasCSS=!!function(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x",r.insertBefore(n.lastChild,r.firstChild)}(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),o||function(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return h.shivMethods?d(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/[\w\-:]+/g,(function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'}))+");return n}")(h,t.frag)}(e,t),e}!function(){try{var e=n.createElement("a");e.innerHTML="",r="hidden"in e,o=1==e.childNodes.length||function(){n.createElement("a");var e=n.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(t){r=!0,o=!0}}();var h={elements:i.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:"3.7.3",shivCSS:!1!==i.shivCSS,supportsUnknownElements:o,shivMethods:!1!==i.shivMethods,type:"default",shivDocument:p,createElement:d,createDocumentFragment:function(e,t){if(e||(e=n),o)return e.createDocumentFragment();for(var r=(t=t||f(e)).frag.cloneNode(),i=0,a=l(),c=a.length;i3?c(a):null,b=String(a.key),w=String(a.char),x=a.location,_=a.keyCode||(a.keyCode=b)&&b.charCodeAt(0)||0,E=a.charCode||(a.charCode=w)&&w.charCodeAt(0)||0,k=a.bubbles,S=a.cancelable,C=a.repeat,N=a.locale,A=a.view||e;if(a.which||(a.which=a.keyCode),"initKeyEvent"in d)d.initKeyEvent(t,k,S,A,p,g,h,v,_,E);else if(0>>0),t=Element.prototype,n=t.querySelector,r=t.querySelectorAll;function o(t,n,r){t.setAttribute(e,null);var o=n.call(t,String(r).replace(/(^|,\s*)(:scope([ >]|$))/g,(function(t,n,r,o){return n+"["+e+"]"+(o||" ")})));return t.removeAttribute(e),o}t.querySelector=function(e){return o(this,n,e)},t.querySelectorAll=function(e){return o(this,r,e)}}()}}(window),function(e){var t=e.WeakMap||function(){var e,t=0,n=!1,r=!1;function o(t,o,i){r=i,n=!1,e=undefined,t.dispatchEvent(o)}function i(e){this.value=e}function c(){t++,this.__ce__=new a("@DOMMap:"+t+Math.random())}return i.prototype.handleEvent=function(t){n=!0,r?t.currentTarget.removeEventListener(t.type,this,!1):e=this.value},c.prototype={constructor:c,"delete":function(e){return o(e,this.__ce__,!0),n},get:function(t){o(t,this.__ce__,!1);var n=e;return e=undefined,n},has:function(e){return o(e,this.__ce__,!1),n},set:function(e,t){return o(e,this.__ce__,!0),e.addEventListener(this.__ce__.type,new i(t),!1),this}},c}();function n(){}function r(e,t,n){function o(e){o.once&&(e.currentTarget.removeEventListener(e.type,t,o),o.removed=!0),o.passive&&(e.preventDefault=r.preventDefault),"function"==typeof o.callback?o.callback.call(this,e):o.callback&&o.callback.handleEvent(e),o.passive&&delete e.preventDefault}return o.type=e,o.callback=t,o.capture=!!n.capture,o.passive=!!n.passive,o.once=!!n.once,o.removed=!1,o}n.prototype=(Object.create||Object)(null),r.preventDefault=function(){};var o,i,a=e.CustomEvent,c=e.dispatchEvent,u=e.addEventListener,s=e.removeEventListener,l=0,f=function(){l++},d=[].indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},p=function(e){return"".concat(e.capture?"1":"0",e.passive?"1":"0",e.once?"1":"0")};try{u("_",f,{once:!0}),c(new a("_")),c(new a("_")),s("_",f,{once:!0})}catch(h){}1!==l&&(i=new t,o=function(e){if(e){var t=e.prototype;t.addEventListener=function(e){return function(t,o,a){if(a&&"boolean"!=typeof a){var c,u,s,l=i.get(this),f=p(a);l||i.set(this,l=new n),t in l||(l[t]={handler:[],wrap:[]}),u=l[t],(c=d.call(u.handler,o))<0?(c=u.handler.push(o)-1,u.wrap[c]=s=new n):s=u.wrap[c],f in s||(s[f]=r(t,o,a),e.call(this,t,s[f],s[f].capture))}else e.call(this,t,o,a)}}(t.addEventListener),t.removeEventListener=function(e){return function(t,n,r){if(r&&"boolean"!=typeof r){var o,a,c,u,s=i.get(this);if(s&&t in s&&(c=s[t],-1<(a=d.call(c.handler,n))&&(o=p(r))in(u=c.wrap[a]))){for(o in e.call(this,t,u[o],u[o].capture),delete u[o],u)return;c.handler.splice(a,1),c.wrap.splice(a,1),0===c.handler.length&&delete s[t]}}else e.call(this,t,n,r)}}(t.removeEventListener)}},e.EventTarget?o(EventTarget):(o(e.Text),o(e.Element||e.HTMLElement),o(e.HTMLDocument),o(e.Window||{prototype:e}),o(e.XMLHttpRequest)))}(window)},function(e,t,n){"use strict";!function(e){if("undefined"!=typeof e.setAttribute){var t=function(e){return e.replace(/-[a-z]/g,(function(e){return e[1].toUpperCase()}))};e.setProperty=function(e,n){var r=t(e);if(!n)return this.removeAttribute(r);var o=String(n);return this.setAttribute(r,o)},e.getPropertyValue=function(e){var n=t(e);return this.getAttribute(n)||null},e.removeProperty=function(e){var n=t(e),r=this.getAttribute(n);return this.removeAttribute(n),r}}}(CSSStyleDeclaration.prototype)},function(e,t,n){"use strict";window.Int32Array||(window.Int32Array=Array)},,function(e,t,n){"use strict";t.__esModule=!0,t._CI=Ae,t._HI=B,t._M=Te,t._MCCC=Le,t._ME=Ie,t._MFCC=Ve,t._MP=Ce,t._MR=ye,t.__render=je,t.createComponentVNode=function(e,t,n,r,o){var a=new T(1,null,null,e=function(e,t){if(12&e)return e;if(t.prototype&&t.prototype.render)return 4;if(t.render)return 32776;return 8}(e,t),r,function(e,t,n){var r=(32768&e?t.render:t).defaultProps;if(i(r))return n;if(i(n))return l(r,null);return N(n,r)}(e,t,n),function(e,t,n){if(4&e)return n;var r=(32768&e?t.render:t).defaultHooks;if(i(r))return n;if(i(n))return r;return N(n,r)}(e,t,o),t);k.createVNode&&k.createVNode(a);return a},t.createFragment=M,t.createPortal=function(e,t){var n=B(e);return O(1024,1024,null,n,0,null,n.key,t)},t.createRef=function(){return{current:null}},t.createRenderer=function(e){return function(t,n,r,o){e||(e=t),Fe(n,e,r,o)}},t.createTextVNode=I,t.createVNode=O,t.directClone=L,t.findDOMfromVNode=b,t.forwardRef=function(e){return{render:e}},t.getFlagsForElementVnode=function(e){switch(e){case"svg":return 32;case"input":return 64;case"select":return 256;case"textarea":return 128;case"$F":return 8192;default:return 1}},t.linkEvent=function(e,t){if(c(t))return{data:e,event:t};return null},t.normalizeProps=function(e){var t=e.props;if(t){var n=e.flags;481&n&&(void 0!==t.children&&i(e.children)&&P(e,t.children),void 0!==t.className&&(e.className=t.className||null,t.className=undefined)),void 0!==t.key&&(e.key=t.key,t.key=undefined),void 0!==t.ref&&(e.ref=8&n?l(e.ref,t.ref):t.ref,t.ref=undefined)}return e},t.render=Fe,t.rerender=He,t.version=t.options=t.Fragment=t.EMPTY_OBJ=t.Component=void 0;var r=Array.isArray;function o(e){var t=typeof e;return"string"===t||"number"===t}function i(e){return null==e}function a(e){return null===e||!1===e||!0===e||void 0===e}function c(e){return"function"==typeof e}function u(e){return"string"==typeof e}function s(e){return null===e}function l(e,t){var n={};if(e)for(var r in e)n[r]=e[r];if(t)for(var o in t)n[o]=t[o];return n}function f(e){return!s(e)&&"object"==typeof e}var d={};t.EMPTY_OBJ=d;function p(e){return e.substr(2).toLowerCase()}function h(e,t){e.appendChild(t)}function g(e,t,n){s(n)?h(e,t):e.insertBefore(t,n)}function v(e,t){e.removeChild(t)}function m(e){for(var t=0;t0,h=s(d),g=u(d)&&"$"===d[0];p||h||g?(n=n||t.slice(0,l),(p||g)&&(f=L(f)),(h||g)&&(f.key="$"+l),n.push(f)):n&&n.push(f),f.flags|=65536}}i=0===(n=n||t).length?1:8}else(n=t).flags|=65536,81920&t.flags&&(n=L(t)),i=2;return e.children=n,e.childFlags=i,e}function B(e){return a(e)||o(e)?I(e,null):r(e)?M(e,0,null):16384&e.flags?L(e):e}var D="http://www.w3.org/1999/xlink",j="http://www.w3.org/XML/1998/namespace",F={"xlink:actuate":D,"xlink:arcrole":D,"xlink:href":D,"xlink:role":D,"xlink:show":D,"xlink:title":D,"xlink:type":D,"xml:base":j,"xml:lang":j,"xml:space":j};function K(e){return{onClick:e,onDblClick:e,onFocusIn:e,onFocusOut:e,onKeyDown:e,onKeyPress:e,onKeyUp:e,onMouseDown:e,onMouseMove:e,onMouseUp:e,onTouchEnd:e,onTouchMove:e,onTouchStart:e}}var z=K(0),Y=K(null),U=K(!0);function $(e,t){var n=t.$EV;return n||(n=t.$EV=K(null)),n[e]||1==++z[e]&&(Y[e]=function(e){var t="onClick"===e||"onDblClick"===e?function(e){return function(t){0===t.button?W(t,!0,e,Z(t)):t.stopPropagation()}}(e):function(e){return function(t){W(t,!1,e,Z(t))}}(e);return document.addEventListener(p(e),t),t}(e)),n}function H(e,t){var n=t.$EV;n&&n[e]&&(0==--z[e]&&(document.removeEventListener(p(e),Y[e]),Y[e]=null),n[e]=null)}function W(e,t,n,r){var o=function(e){return c(e.composedPath)?e.composedPath()[0]:e.target}(e);do{if(t&&o.disabled)return;var i=o.$EV;if(i){var a=i[n];if(a&&(r.dom=o,a.event?a.event(a.data,e):a(e),e.cancelBubble))return}o=o.parentNode}while(!s(o))}function q(){this.cancelBubble=!0,this.immediatePropagationStopped||this.stopImmediatePropagation()}function G(){return this.defaultPrevented}function X(){return this.cancelBubble}function Z(e){var t={dom:document};return e.isDefaultPrevented=G,e.isPropagationStopped=X,e.stopPropagation=q,Object.defineProperty(e,"currentTarget",{configurable:!0,get:function(){return t.dom}}),t}function Q(e,t,n){if(e[t]){var r=e[t];r.event?r.event(r.data,n):r(n)}else{var o=t.toLowerCase();e[o]&&e[o](n)}}function J(e,t){var n=function(n){var r=this.$V;if(r){var o=r.props||d,i=r.dom;if(u(e))Q(o,e,n);else for(var a=0;a-1&&t.options[a]&&(c=t.options[a].value),n&&i(c)&&(c=e.defaultValue),ae(r,c)}}var se,le,fe=J("onInput",pe),de=J("onChange");function pe(e,t,n){var r=e.value,o=t.value;if(i(r)){if(n){var a=e.defaultValue;i(a)||a===o||(t.defaultValue=a,t.value=a)}}else o!==r&&(t.defaultValue=r,t.value=r)}function he(e,t,n,r,o,i){64&e?ie(r,n):256&e?ue(r,n,o,t):128&e&&pe(r,n,o),i&&(n.$V=t)}function ge(e,t,n){64&e?function(e,t){te(t.type)?(ee(e,"change",re),ee(e,"click",oe)):ee(e,"input",ne)}(t,n):256&e?function(e){ee(e,"change",ce)}(t):128&e&&function(e,t){ee(e,"input",fe),t.onChange&&ee(e,"change",de)}(t,n)}function ve(e){return e.type&&te(e.type)?!i(e.checked):!i(e.value)}function me(e){e&&!A(e,null)&&e.current&&(e.current=null)}function ye(e,t,n){e&&(c(e)||void 0!==e.current)&&n.push((function(){A(e,t)||void 0===e.current||(e.current=t)}))}function be(e,t){we(e),w(e,t)}function we(e){var t,n=e.flags,r=e.children;if(481&n){t=e.ref;var o=e.props;me(t);var a=e.childFlags;if(!s(o))for(var u=Object.keys(o),l=0,f=u.length;l0;for(var c in a&&(i=ve(n))&&ge(t,r,n),n)Se(c,null,n[c],r,o,i,null);a&&he(t,e,r,n,!0,i)}function Ne(e,t,n){var r=B(e.render(t,e.state,n)),o=n;return c(e.getChildContext)&&(o=l(n,e.getChildContext())),e.$CX=o,r}function Ae(e,t,n,r,o,i){var a=new t(n,r),u=a.$N=Boolean(t.getDerivedStateFromProps||a.getSnapshotBeforeUpdate);if(a.$SVG=o,a.$L=i,e.children=a,a.$BS=!1,a.context=r,a.props===d&&(a.props=n),u)a.state=_(a,n,a.state);else if(c(a.componentWillMount)){a.$BR=!0,a.componentWillMount();var l=a.$PS;if(!s(l)){var f=a.state;if(s(f))a.state=l;else for(var p in l)f[p]=l[p];a.$PS=null}a.$BR=!1}return a.$LI=Ne(a,n,r),a}function Te(e,t,n,r,o,i){var a=e.flags|=16384;481&a?Ie(e,t,n,r,o,i):4&a?function(e,t,n,r,o,i){var a=Ae(e,e.type,e.props||d,n,r,i);Te(a.$LI,t,a.$CX,r,o,i),Le(e.ref,a,i)}(e,t,n,r,o,i):8&a?(!function(e,t,n,r,o,i){Te(e.children=B(function(e,t){return 32768&e.flags?e.type.render(e.props||d,e.ref,t):e.type(e.props||d,t)}(e,n)),t,n,r,o,i)}(e,t,n,r,o,i),Ve(e,i)):512&a||16&a?Oe(e,t,o):8192&a?function(e,t,n,r,o,i){var a=e.children,c=e.childFlags;12&c&&0===a.length&&(c=e.childFlags=2,a=e.children=V());2===c?Te(a,n,o,r,o,i):Me(a,n,t,r,o,i)}(e,n,t,r,o,i):1024&a&&function(e,t,n,r,o){Te(e.children,e.ref,t,!1,null,o);var i=V();Oe(i,n,r),e.dom=i.dom}(e,n,t,o,i)}function Oe(e,t,n){var r=e.dom=document.createTextNode(e.children);s(t)||g(t,r,n)}function Ie(e,t,n,r,o,a){var c=e.flags,u=e.props,l=e.className,f=e.children,d=e.childFlags,p=e.dom=function(e,t){return t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e)}(e.type,r=r||(32&c)>0);if(i(l)||""===l||(r?p.setAttribute("class",l):p.className=l),16===d)S(p,f);else if(1!==d){var h=r&&"foreignObject"!==e.type;2===d?(16384&f.flags&&(e.children=f=L(f)),Te(f,p,n,h,null,a)):8!==d&&4!==d||Me(f,p,n,h,null,a)}s(t)||g(t,p,o),s(u)||Ce(e,c,u,p,r),ye(e.ref,p,a)}function Me(e,t,n,r,o,i){for(var a=0;a0,s!==l){var h=s||d;if((c=l||d)!==d)for(var g in(f=(448&o)>0)&&(p=ve(c)),c){var v=h[g],m=c[g];v!==m&&Se(g,v,m,u,r,p,e)}if(h!==d)for(var y in h)i(c[y])&&!i(h[y])&&Se(y,h[y],null,u,r,p,e)}var b=t.children,w=t.className;e.className!==w&&(i(w)?u.removeAttribute("class"):r?u.setAttribute("class",w):u.className=w);4096&o?function(e,t){e.textContent!==t&&(e.textContent=t)}(u,b):Pe(e.childFlags,t.childFlags,e.children,b,u,n,r&&"foreignObject"!==t.type,null,e,a);f&&he(o,t,u,c,!1,p);var x=t.ref,_=e.ref;_!==x&&(me(_),ye(x,u,a))}(e,t,r,o,p,f):4&p?function(e,t,n,r,o,i,a){var u=t.children=e.children;if(s(u))return;u.$L=a;var f=t.props||d,p=t.ref,h=e.ref,g=u.state;if(!u.$N){if(c(u.componentWillReceiveProps)){if(u.$BR=!0,u.componentWillReceiveProps(f,r),u.$UN)return;u.$BR=!1}s(u.$PS)||(g=l(g,u.$PS),u.$PS=null)}Be(u,g,f,n,r,o,!1,i,a),h!==p&&(me(h),ye(p,u,a))}(e,t,n,r,o,u,f):8&p?function(e,t,n,r,o,a,u){var s=!0,l=t.props||d,f=t.ref,p=e.props,h=!i(f),g=e.children;h&&c(f.onComponentShouldUpdate)&&(s=f.onComponentShouldUpdate(p,l));if(!1!==s){h&&c(f.onComponentWillUpdate)&&f.onComponentWillUpdate(p,l);var v=t.type,m=B(32768&t.flags?v.render(l,f,r):v(l,r));Re(g,m,n,r,o,a,u),t.children=m,h&&c(f.onComponentDidUpdate)&&f.onComponentDidUpdate(p,l)}else t.children=g}(e,t,n,r,o,u,f):16&p?function(e,t){var n=t.children,r=t.dom=e.dom;n!==e.children&&(r.nodeValue=n)}(e,t):512&p?t.dom=e.dom:8192&p?function(e,t,n,r,o,i){var a=e.children,c=t.children,u=e.childFlags,s=t.childFlags,l=null;12&s&&0===c.length&&(s=t.childFlags=2,c=t.children=V());var f=0!=(2&s);if(12&u){var d=a.length;(8&u&&8&s||f||!f&&c.length>d)&&(l=b(a[d-1],!1).nextSibling)}Pe(u,s,a,c,n,r,o,l,e,i)}(e,t,n,r,o,f):function(e,t,n,r){var o=e.ref,i=t.ref,c=t.children;if(Pe(e.childFlags,t.childFlags,e.children,c,o,n,!1,null,e,r),t.dom=e.dom,o!==i&&!a(c)){var u=c.dom;v(o,u),h(i,u)}}(e,t,r,f)}function Pe(e,t,n,r,o,i,a,c,u,s){switch(e){case 2:switch(t){case 2:Re(n,r,o,i,a,c,s);break;case 1:be(n,o);break;case 16:we(n),S(o,r);break;default:!function(e,t,n,r,o,i){we(e),Me(t,n,r,o,b(e,!0),i),w(e,n)}(n,r,o,i,a,s)}break;case 1:switch(t){case 2:Te(r,o,i,a,c,s);break;case 1:break;case 16:S(o,r);break;default:Me(r,o,i,a,c,s)}break;case 16:switch(t){case 16:!function(e,t,n){e!==t&&(""!==e?n.firstChild.nodeValue=t:S(n,t))}(n,r,o);break;case 2:_e(o),Te(r,o,i,a,c,s);break;case 1:_e(o);break;default:_e(o),Me(r,o,i,a,c,s)}break;default:switch(t){case 16:xe(n),S(o,r);break;case 2:Ee(o,u,n),Te(r,o,i,a,c,s);break;case 1:Ee(o,u,n);break;default:var l=0|n.length,f=0|r.length;0===l?f>0&&Me(r,o,i,a,c,s):0===f?Ee(o,u,n):8===t&&8===e?function(e,t,n,r,o,i,a,c,u,s){var l,f,d=i-1,p=a-1,h=0,g=e[h],v=t[h];e:{for(;g.key===v.key;){if(16384&v.flags&&(t[h]=v=L(v)),Re(g,v,n,r,o,c,s),e[h]=v,++h>d||h>p)break e;g=e[h],v=t[h]}for(g=e[d],v=t[p];g.key===v.key;){if(16384&v.flags&&(t[p]=v=L(v)),Re(g,v,n,r,o,c,s),e[d]=v,d--,p--,h>d||h>p)break e;g=e[d],v=t[p]}}if(h>d){if(h<=p)for(f=(l=p+1)p)for(;h<=d;)be(e[h++],n);else!function(e,t,n,r,o,i,a,c,u,s,l,f,d){var p,h,g,v=0,m=c,y=c,w=i-c+1,_=a-c+1,E=new Int32Array(_+1),k=w===r,S=!1,C=0,N=0;if(o<4||(w|_)<32)for(v=m;v<=i;++v)if(p=e[v],N<_){for(c=y;c<=a;c++)if(h=t[c],p.key===h.key){if(E[c-y]=v+1,k)for(k=!1;mc?S=!0:C=c,16384&h.flags&&(t[c]=h=L(h)),Re(p,h,u,n,s,l,d),++N;break}!k&&c>a&&be(p,u)}else k||be(p,u);else{var A={};for(v=y;v<=a;++v)A[t[v].key]=v;for(v=m;v<=i;++v)if(p=e[v],N<_)if(void 0!==(c=A[p.key])){if(k)for(k=!1;v>m;)be(e[m++],u);E[c-y]=v+1,C>c?S=!0:C=c,16384&(h=t[c]).flags&&(t[c]=h=L(h)),Re(p,h,u,n,s,l,d),++N}else k||be(p,u);else k||be(p,u)}if(k)Ee(u,f,e),Me(t,u,n,s,l,d);else if(S){var T=function(e){var t=0,n=0,r=0,o=0,i=0,a=0,c=0,u=e.length;u>De&&(De=u,se=new Int32Array(u),le=new Int32Array(u));for(;n>1]]0&&(le[n]=se[i-1]),se[i]=n)}i=o+1;var s=new Int32Array(i);a=se[i-1];for(;i-- >0;)s[i]=a,a=le[a],se[i]=0;return s}(E);for(c=T.length-1,v=_-1;v>=0;v--)0===E[v]?(16384&(h=t[C=v+y]).flags&&(t[C]=h=L(h)),Te(h,u,n,s,(g=C+1)=0;v--)0===E[v]&&(16384&(h=t[C=v+y]).flags&&(t[C]=h=L(h)),Te(h,u,n,s,(g=C+1)a?a:i,d=0;da)for(d=f;d1)for(var n=1;n=0||(o[n]=e[n]);return o}(e,["className"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["BlockQuote",t])},n)))}},function(e,t,n){"use strict";var r,o;t.__esModule=!0,t.VNodeFlags=t.ChildFlags=void 0,t.VNodeFlags=r,function(e){e[e.HtmlElement=1]="HtmlElement",e[e.ComponentUnknown=2]="ComponentUnknown",e[e.ComponentClass=4]="ComponentClass",e[e.ComponentFunction=8]="ComponentFunction",e[e.Text=16]="Text",e[e.SvgElement=32]="SvgElement",e[e.InputElement=64]="InputElement",e[e.TextareaElement=128]="TextareaElement",e[e.SelectElement=256]="SelectElement",e[e.Void=512]="Void",e[e.Portal=1024]="Portal",e[e.ReCreate=2048]="ReCreate",e[e.ContentEditable=4096]="ContentEditable",e[e.Fragment=8192]="Fragment",e[e.InUse=16384]="InUse",e[e.ForwardRef=32768]="ForwardRef",e[e.Normalized=65536]="Normalized",e[e.ForwardRefComponent=32776]="ForwardRefComponent",e[e.FormElement=448]="FormElement",e[e.Element=481]="Element",e[e.Component=14]="Component",e[e.DOMRef=2033]="DOMRef",e[e.InUseOrNormalized=81920]="InUseOrNormalized",e[e.ClearInUse=-16385]="ClearInUse",e[e.ComponentKnown=12]="ComponentKnown"}(r||(t.VNodeFlags=r={})),t.ChildFlags=o,function(e){e[e.UnknownChildren=0]="UnknownChildren",e[e.HasInvalidChildren=1]="HasInvalidChildren",e[e.HasVNodeChildren=2]="HasVNodeChildren",e[e.HasNonKeyedChildren=4]="HasNonKeyedChildren",e[e.HasKeyedChildren=8]="HasKeyedChildren",e[e.HasTextChildren=16]="HasTextChildren",e[e.MultipleChildren=12]="MultipleChildren"}(o||(t.ChildFlags=o={}))},function(e,t,n){"use strict";t.__esModule=!0,t.ByondUi=void 0;var r=n(0),o=n(6),i=n(466),a=n(25),c=n(17);function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var s=(0,a.createLogger)("ByondUi"),l=[];window.addEventListener("beforeunload",(function(){for(var e=0;e=0||(o[n]=e[n]);return o}(t,["data","rangeX","rangeY","fillColor","strokeColor","strokeWidth"]),v=this.state.viewBox,m=function(e,t,n,r){if(0===e.length)return[];var i=(0,o.zipWith)(Math.min).apply(void 0,e),a=(0,o.zipWith)(Math.max).apply(void 0,e);return n!==undefined&&(i[0]=n[0],a[0]=n[1]),r!==undefined&&(i[1]=r[0],a[1]=r[1]),(0,o.map)((function(e){return(0,o.zipWith)((function(e,t,n,r){return(e-t)/(n-t)*r}))(e,i,a,t)}))(e)}(i,v,c,u);if(m.length>0){var y=m[0],b=m[m.length-1];m.push([v[0]+h,b[1]]),m.push([v[0]+h,-h]),m.push([-h,-h]),m.push([-h,y[1]])}var w=function(e){for(var t="",n=0;n=0||(o[n]=e[n]);return o}(t,["children","color","title","buttons"]);return(0,r.createComponentVNode)(2,o.Box,{mb:1,children:[(0,r.createVNode)(1,"div","Table",[(0,r.createVNode)(1,"div","Table__cell",(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Button,Object.assign({fluid:!0,color:u,icon:n?"chevron-down":"chevron-right",onClick:function(){return e.setState({open:!n})}},f,{children:s}))),2),l&&(0,r.createVNode)(1,"div","Table__cell Table__cell--collapsing",l,0)],0),n&&(0,r.createComponentVNode)(2,o.Box,{mt:1,children:a})]})},a}(r.Component);t.Collapsible=a},function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var r=n(0),o=n(6),i=n(17);var a=function(e){var t=e.content,n=(e.children,e.className),a=e.color,c=e.backgroundColor,u=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["content","children","className","color","backgroundColor"]);return u.color=t?null:"transparent",u.backgroundColor=a||c,(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["ColorBox",n,(0,i.computeBoxClassName)(u)]),t||".",0,Object.assign({},(0,i.computeBoxProps)(u))))};t.ColorBox=a,a.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var r=n(0),o=n(6),i=n(17),a=n(104);function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){var t,n;function u(t){var n;return(n=e.call(this,t)||this).state={selected:t.selected,open:!1},n.handleClick=function(){n.state.open&&n.setOpen(!1)},n}n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var s=u.prototype;return s.componentWillUnmount=function(){window.removeEventListener("click",this.handleClick)},s.setOpen=function(e){var t=this;this.setState({open:e}),e?(setTimeout((function(){return window.addEventListener("click",t.handleClick)})),this.menuRef.focus()):window.removeEventListener("click",this.handleClick)},s.setSelected=function(e){this.setState({selected:e}),this.setOpen(!1),this.props.onSelected(e)},s.buildMenu=function(){var e=this,t=this.props.options,n=(void 0===t?[]:t).map((function(t){return(0,r.createComponentVNode)(2,i.Box,{className:"Dropdown__menuentry",onClick:function(){e.setSelected(t)},children:t},t)}));return n.length?n:"No Options Found"},s.render=function(){var e=this,t=this.props,n=t.color,u=void 0===n?"default":n,s=t.over,l=t.noscroll,f=t.nochevron,d=t.width,p=(t.onClick,t.selected,t.disabled),h=c(t,["color","over","noscroll","nochevron","width","onClick","selected","disabled"]),g=h.className,v=c(h,["className"]),m=s?!this.state.open:this.state.open,y=this.state.open?(0,r.createVNode)(1,"div",(0,o.classes)([l?"Dropdown__menu-noscroll":"Dropdown__menu",s&&"Dropdown__over"]),this.buildMenu(),0,{tabIndex:"-1",style:{width:d}},null,(function(t){e.menuRef=t})):null;return(0,r.createVNode)(1,"div","Dropdown",[(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({width:d,className:(0,o.classes)(["Dropdown__control","Button","Button--color--"+u,p&&"Button--disabled",g])},v,{onClick:function(){p&&!e.state.open||e.setOpen(!e.state.open)},children:[(0,r.createVNode)(1,"span","Dropdown__selected-text",this.state.selected,0),!!f||(0,r.createVNode)(1,"span","Dropdown__arrow-button",(0,r.createComponentVNode)(2,a.Icon,{name:m?"chevron-up":"chevron-down"}),2)]}))),y],0)},u}(r.Component);t.Dropdown=u},function(e,t,n){"use strict";t.__esModule=!0,t.GridColumn=t.Grid=void 0;var r=n(0),o=n(196),i=n(6);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t=e.children,n=a(e,["children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Table,Object.assign({},n,{children:(0,r.createComponentVNode)(2,o.Table.Row,{children:t})})))};t.Grid=c,c.defaultHooks=i.pureComponentHooks;var u=function(e){var t=e.size,n=void 0===t?1:t,i=e.style,c=a(e,["size","style"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Table.Cell,Object.assign({style:Object.assign({width:n+"%"},i)},c)))};t.GridColumn=u,c.defaultHooks=i.pureComponentHooks,c.Column=u},function(e,t,n){"use strict";t.__esModule=!0,t.Knob=void 0;var r=n(0),o=n(11),i=n(6),a=n(17),c=n(139),u=n(140);t.Knob=function(e){if(Byond.IS_LTE_IE8)return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,s=e.maxValue,l=e.minValue,f=e.onChange,d=e.onDrag,p=e.step,h=e.stepPixelSize,g=e.suppressFlicker,v=e.unit,m=e.value,y=e.className,b=e.style,w=e.fillValue,x=e.color,_=e.ranges,E=void 0===_?{}:_,k=e.size,S=void 0===k?1:k,C=e.bipolar,N=(e.children,function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["animated","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","style","fillValue","color","ranges","size","bipolar","children"]));return(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[0,-1]},{animated:t,format:n,maxValue:s,minValue:l,onChange:f,onDrag:d,step:p,stepPixelSize:h,suppressFlicker:g,unit:v,value:m},{children:function(e){var t=e.dragging,n=(e.editing,e.value),c=e.displayValue,u=e.displayElement,f=e.inputElement,d=e.handleDragStart,p=(0,o.scale)(null!=w?w:c,l,s),h=(0,o.scale)(c,l,s),g=x||(0,o.keyOfMatchingRange)(null!=w?w:n,E)||"default",v=270*(h-.5);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["Knob","Knob--color--"+g,C&&"Knob--bipolar",y,(0,a.computeBoxClassName)(N)]),[(0,r.createVNode)(1,"div","Knob__circle",(0,r.createVNode)(1,"div","Knob__cursorBox",(0,r.createVNode)(1,"div","Knob__cursor"),2,{style:{transform:"rotate("+v+"deg)"}}),2),t&&(0,r.createVNode)(1,"div","Knob__popupValue",u,0),(0,r.createVNode)(32,"svg","Knob__ring Knob__ringTrackPivot",(0,r.createVNode)(32,"circle","Knob__ringTrack",null,1,{cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),(0,r.createVNode)(32,"svg","Knob__ring Knob__ringFillPivot",(0,r.createVNode)(32,"circle","Knob__ringFill",null,1,{style:{"stroke-dashoffset":((C?2.75:2)-1.5*p)*Math.PI*50},cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),f],0,Object.assign({},(0,a.computeBoxProps)(Object.assign({style:Object.assign({"font-size":S+"em"},b)},N)),{onMouseDown:d})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledControls=void 0;var r=n(0),o=n(195);function i(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var a=function(e){var t=e.children,n=i(e,["children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Flex,Object.assign({mx:-.5,align:"stretch",justify:"space-between"},n,{children:t})))};t.LabeledControls=a;a.Item=function(e){var t=e.label,n=e.children,a=i(e,["label","children"]);return(0,r.createComponentVNode)(2,o.Flex.Item,{mx:1,children:(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Flex,Object.assign({minWidth:"52px",height:"100%",direction:"column",align:"center",textAlign:"center",justify:"space-between"},a,{children:[(0,r.createComponentVNode)(2,o.Flex.Item),(0,r.createComponentVNode)(2,o.Flex.Item,{children:n}),(0,r.createComponentVNode)(2,o.Flex.Item,{color:"label",children:t})]})))})}},function(e,t,n){"use strict";t.__esModule=!0,t.Modal=void 0;var r=n(0),o=n(6),i=n(17),a=n(193);t.Modal=function(e){var t=e.className,n=e.children,c=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","children"]);return(0,r.createComponentVNode)(2,a.Dimmer,{children:(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Modal",t,(0,i.computeBoxClassName)(c)]),n,0,Object.assign({},(0,i.computeBoxProps)(c))))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var r=n(0),o=n(6),i=n(17);var a=function(e){var t=e.className,n=e.color,a=e.info,c=(e.warning,e.success),u=e.danger,s=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","color","info","warning","success","danger"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["NoticeBox",n&&"NoticeBox--color--"+n,a&&"NoticeBox--type--info",c&&"NoticeBox--type--success",u&&"NoticeBox--type--danger",t])},s)))};t.NoticeBox=a,a.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.ProgressBar=void 0;var r=n(0),o=n(11),i=n(6),a=n(17);var c=function(e){var t=e.className,n=e.value,c=e.minValue,u=void 0===c?0:c,s=e.maxValue,l=void 0===s?1:s,f=e.color,d=e.ranges,p=void 0===d?{}:d,h=e.children,g=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","value","minValue","maxValue","color","ranges","children"]),v=(0,o.scale)(n,u,l),m=h!==undefined,y=f||(0,o.keyOfMatchingRange)(n,p)||"default";return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["ProgressBar","ProgressBar--color--"+y,t,(0,a.computeBoxClassName)(g)]),[(0,r.createVNode)(1,"div","ProgressBar__fill ProgressBar__fill--animated",null,1,{style:{width:100*(0,o.clamp01)(v)+"%"}}),(0,r.createVNode)(1,"div","ProgressBar__content",m?h:(0,o.toFixed)(100*v)+"%",0)],4,Object.assign({},(0,a.computeBoxProps)(g))))};t.ProgressBar=c,c.defaultHooks=i.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Section=void 0;var r=n(0),o=n(6),i=n(57),a=n(17);var c=function(e){var t,n;function c(t){var n;return(n=e.call(this,t)||this).ref=(0,r.createRef)(),n.scrollable=t.scrollable,n}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var u=c.prototype;return u.componentDidMount=function(){this.scrollable&&(0,i.addScrollableNode)(this.ref.current)},u.componentWillUnmount=function(){this.scrollable&&(0,i.removeScrollableNode)(this.ref.current)},u.render=function(){var e=this.props,t=e.className,n=e.title,i=e.level,c=void 0===i?1:i,u=e.buttons,s=e.fill,l=e.fitted,f=e.scrollable,d=e.children,p=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","title","level","buttons","fill","fitted","scrollable","children"]),h=(0,o.canRender)(n)||(0,o.canRender)(u),g=(0,o.canRender)(d);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Section","Section--level--"+c,Byond.IS_LTE_IE8&&"Section--iefix",s&&"Section--fill",l&&"Section--fitted",f&&"Section--scrollable",t].concat((0,a.computeBoxClassName)(p))),[h&&(0,r.createVNode)(1,"div","Section__title",[(0,r.createVNode)(1,"span","Section__titleText",n,0),(0,r.createVNode)(1,"div","Section__buttons",u,0)],4),l&&d||g&&(0,r.createVNode)(1,"div","Section__content",d,0)],0,Object.assign({},(0,a.computeBoxProps)(p)),null,this.ref))},c}(r.Component);t.Section=c},function(e,t,n){"use strict";t.__esModule=!0,t.Slider=void 0;var r=n(0),o=n(11),i=n(6),a=n(17),c=n(139),u=n(140);t.Slider=function(e){if(Byond.IS_LTE_IE8)return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,s=e.maxValue,l=e.minValue,f=e.onChange,d=e.onDrag,p=e.step,h=e.stepPixelSize,g=e.suppressFlicker,v=e.unit,m=e.value,y=e.className,b=e.fillValue,w=e.color,x=e.ranges,_=void 0===x?{}:x,E=e.children,k=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["animated","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","fillValue","color","ranges","children"]),S=E!==undefined;return(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[1,0]},{animated:t,format:n,maxValue:s,minValue:l,onChange:f,onDrag:d,step:p,stepPixelSize:h,suppressFlicker:g,unit:v,value:m},{children:function(e){var t=e.dragging,n=(e.editing,e.value),c=e.displayValue,u=e.displayElement,f=e.inputElement,d=e.handleDragStart,p=b!==undefined&&null!==b,h=((0,o.scale)(n,l,s),(0,o.scale)(null!=b?b:c,l,s)),g=(0,o.scale)(c,l,s),v=w||(0,o.keyOfMatchingRange)(null!=b?b:n,_)||"default";return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["Slider","ProgressBar","ProgressBar--color--"+v,y,(0,a.computeBoxClassName)(k)]),[(0,r.createVNode)(1,"div",(0,i.classes)(["ProgressBar__fill",p&&"ProgressBar__fill--animated"]),null,1,{style:{width:100*(0,o.clamp01)(h)+"%",opacity:.4}}),(0,r.createVNode)(1,"div","ProgressBar__fill",null,1,{style:{width:100*(0,o.clamp01)(Math.min(h,g))+"%"}}),(0,r.createVNode)(1,"div","Slider__cursorOffset",[(0,r.createVNode)(1,"div","Slider__cursor"),(0,r.createVNode)(1,"div","Slider__pointer"),t&&(0,r.createVNode)(1,"div","Slider__popupValue",u,0)],0,{style:{width:100*(0,o.clamp01)(g)+"%"}}),(0,r.createVNode)(1,"div","ProgressBar__content",S?E:u,0),f],0,Object.assign({},(0,a.computeBoxProps)(k),{onMouseDown:d})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.TextArea=void 0;var r=n(0),o=n(6),i=n(17),a=n(197),c=n(78);function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var s=function(e){var t,n;function s(t,n){var o;(o=e.call(this,t,n)||this).textareaRef=(0,r.createRef)(),o.fillerRef=(0,r.createRef)(),o.state={editing:!1};var i=t.dontUseTabForIndent,u=void 0!==i&&i;return o.handleOnInput=function(e){var t=o.state.editing,n=o.props.onInput;t||o.setEditing(!0),n&&n(e,e.target.value)},o.handleOnChange=function(e){var t=o.state.editing,n=o.props.onChange;t&&o.setEditing(!1),n&&n(e,e.target.value)},o.handleKeyPress=function(e){var t=o.state.editing,n=o.props.onKeyPress;t||o.setEditing(!0),n&&n(e,e.target.value)},o.handleKeyDown=function(e){var t=o.state.editing,n=o.props.onKeyDown;if(e.keyCode===c.KEY_ESCAPE)return o.setEditing(!1),e.target.value=(0,a.toInputValue)(o.props.value),void e.target.blur();if((t||o.setEditing(!0),!u)&&9===(e.keyCode||e.which)){e.preventDefault();var r=e.target,i=r.value,s=r.selectionStart,l=r.selectionEnd;e.target.value=i.substring(0,s)+"\t"+i.substring(l),e.target.selectionEnd=s+1}n&&n(e,e.target.value)},o.handleFocus=function(e){o.state.editing||o.setEditing(!0)},o.handleBlur=function(e){var t=o.state.editing,n=o.props.onChange;t&&(o.setEditing(!1),n&&n(e,e.target.value))},o}n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var l=s.prototype;return l.componentDidMount=function(){var e=this.props.value,t=this.textareaRef.current;t&&(t.value=(0,a.toInputValue)(e))},l.componentDidUpdate=function(e,t){var n=this.state.editing,r=e.value,o=this.props.value,i=this.textareaRef.current;i&&!n&&r!==o&&(i.value=(0,a.toInputValue)(o))},l.setEditing=function(e){this.setState({editing:e})},l.getValue=function(){return this.textareaRef.current&&this.textareaRef.current.value},l.render=function(){var e=this.props,t=(e.onChange,e.onKeyDown,e.onKeyPress,e.onInput,e.onFocus,e.onBlur,e.onEnter,e.value,e.placeholder),n=u(e,["onChange","onKeyDown","onKeyPress","onInput","onFocus","onBlur","onEnter","value","placeholder"]),a=n.className,c=n.fluid,s=u(n,["className","fluid"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["TextArea",c&&"TextArea--fluid",a])},s,{children:(0,r.createVNode)(128,"textarea","TextArea__textarea",null,1,{placeholder:t,onChange:this.handleOnChange,onKeyDown:this.handleKeyDown,onKeyPress:this.handleKeyPress,onInput:this.handleOnInput,onFocus:this.handleFocus,onBlur:this.handleBlur},null,this.textareaRef)})))},s}(r.Component);t.TextArea=s},function(e,t,n){"use strict";t.__esModule=!0,t.Tabs=void 0;var r=n(0),o=n(6),i=n(17),a=n(104);function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){var t=e.className,n=e.vertical,a=e.fluid,u=e.children,s=c(e,["className","vertical","fluid","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Tabs",n?"Tabs--vertical":"Tabs--horizontal",a&&"Tabs--fluid",t,(0,i.computeBoxClassName)(s)]),u,0,Object.assign({},(0,i.computeBoxProps)(s))))};t.Tabs=u;u.Tab=function(e){var t=e.className,n=e.selected,u=e.color,s=e.icon,l=e.leftSlot,f=e.rightSlot,d=e.children,p=c(e,["className","selected","color","icon","leftSlot","rightSlot","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Tab","Tabs__Tab","Tab--color--"+u,n&&"Tab--selected",t].concat((0,i.computeBoxClassName)(p))),[(0,o.canRender)(l)&&(0,r.createVNode)(1,"div","Tab__left",l,0)||!!s&&(0,r.createVNode)(1,"div","Tab__left",(0,r.createComponentVNode)(2,a.Icon,{name:s}),2),(0,r.createVNode)(1,"div","Tab__text",d,0),(0,o.canRender)(f)&&(0,r.createVNode)(1,"div","Tab__right",f,0)],0,Object.assign({},(0,i.computeBoxProps)(p))))}},function(e,t,n){"use strict";t.__esModule=!0,t.TimeDisplay=void 0;var r=n(11),o=n(0);var i=function(e){return"number"==typeof e&&Number.isFinite(e)&&!Number.isNaN(e)},a=function(e){var t,n;function o(t){var n;return(n=e.call(this,t)||this).timer=null,n.last_seen_value=undefined,n.state={value:0},i(t.value)&&(n.state.value=Number(t.value),n.last_seen_value=Number(t.value)),n}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var a=o.prototype;return a.componentDidUpdate=function(){var e=this;this.props.auto!==undefined&&(clearInterval(this.timer),this.timer=setInterval((function(){return e.tick()}),1e3))},a.tick=function(){var e=Number(this.state.value);this.props.value!==this.last_seen_value&&(this.last_seen_value=this.props.value,e=this.props.value);var t="up"===this.props.auto?10:-10,n=Math.max(0,e+t);this.setState({value:n})},a.componentDidMount=function(){var e=this;this.props.auto!==undefined&&(this.timer=setInterval((function(){return e.tick()}),1e3))},a.componentWillUnmount=function(){clearInterval(this.timer)},a.render=function(){var e=this.state.value;if(!i(e))return this.state.value||null;var t=(0,r.toFixed)(Math.floor(e/10%60)).padStart(2,"0"),n=(0,r.toFixed)(Math.floor(e/600%60)).padStart(2,"0");return(0,r.toFixed)(Math.floor(e/36e3%24)).padStart(2,"0")+":"+n+":"+t},o}(o.Component);t.TimeDisplay=a},function(e,t,n){"use strict";t.__esModule=!0,t.NtosWindow=void 0;var r=n(0),o=n(63),i=n(2),a=n(1),c=n(199),u=function(e,t){var n=e.title,u=e.width,s=void 0===u?575:u,l=e.height,f=void 0===l?700:l,d=e.resizable,p=e.theme,h=void 0===p?"ntos":p,g=e.children,v=(0,i.useBackend)(t),m=v.act,y=v.data,b=y.PC_device_theme,w=y.PC_batteryicon,x=y.PC_showbatteryicon,_=y.PC_batterypercent,E=y.PC_ntneticon,k=y.PC_apclinkicon,S=y.PC_stationtime,C=y.PC_programheaders,N=void 0===C?[]:C,A=y.PC_showexitprogram;return(0,r.createComponentVNode)(2,c.Window,{title:n,width:s,height:f,theme:h,resizable:d,children:(0,r.createVNode)(1,"div","NtosWindow",[(0,r.createVNode)(1,"div","NtosWindow__header NtosHeader",[(0,r.createVNode)(1,"div","NtosHeader__left",[(0,r.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:2,children:S}),(0,r.createComponentVNode)(2,a.Box,{inline:!0,italic:!0,mr:2,opacity:.33,children:["ntos"===b&&"NtOS","syndicate"===b&&"Syndix"]})],4),(0,r.createVNode)(1,"div","NtosHeader__right",[N.map((function(e){return(0,r.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(e.icon)})},e.icon)})),(0,r.createComponentVNode)(2,a.Box,{inline:!0,children:E&&(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(E)})}),!!x&&w&&(0,r.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:[w&&(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(w)}),_&&_]}),k&&(0,r.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(k)})}),!!A&&(0,r.createComponentVNode)(2,a.Button,{width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-minimize-o",tooltip:"Minimize",tooltipPosition:"bottom",onClick:function(){return m("PC_minimize")}}),!!A&&(0,r.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-close-o",tooltip:"Close",tooltipPosition:"bottom-left",onClick:function(){return m("PC_exit")}}),!A&&(0,r.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"power-off",tooltip:"Power off",tooltipPosition:"bottom-left",onClick:function(){return m("PC_shutdown")}})],0)],4),g],0)})};t.NtosWindow=u;u.Content=function(e){return(0,r.createVNode)(1,"div","NtosWindow__content",(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.Window.Content,Object.assign({},e))),2)}},function(e,t,n){"use strict";t.__esModule=!0,t.Pane=void 0;var r=n(0),o=n(6),i=n(2),a=n(1),c=n(137),u=n(141);function s(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var l=function(e,t){var n=e.theme,l=e.children,f=e.className,d=s(e,["theme","children","className"]),p=(0,i.useBackend)(t).suspended,h=(0,c.useDebug)(t).debugLayout;return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.Layout,Object.assign({className:(0,o.classes)(["Window",f]),theme:n},d,{children:(0,r.createComponentVNode)(2,a.Box,{fillPositionedParent:!0,className:h&&"debug-layout",children:!p&&l})})))};t.Pane=l;l.Content=function(e){var t=e.className,n=e.fitted,i=e.children,a=s(e,["className","fitted","children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.Layout.Content,Object.assign({className:(0,o.classes)(["Window__content",t])},a,{children:n&&i||(0,r.createVNode)(1,"div","Window__contentPadding",i,0)})))}},function(e,t,n){"use strict";t.__esModule=!0,t.relayMiddleware=t.debugMiddleware=void 0;var r=n(78),o=n(57),i=n(135),a=n(200),c=["backend/update","chat/message"];t.debugMiddleware=function(e){return(0,i.acquireHotKey)(r.KEY_F11),(0,i.acquireHotKey)(r.KEY_F12),o.globalEvents.on("keydown",(function(t){t.code===r.KEY_F11&&e.dispatch((0,a.toggleDebugLayout)()),t.code===r.KEY_F12&&e.dispatch((0,a.toggleKitchenSink)()),t.ctrl&&t.shift&&t.code===r.KEY_BACKSPACE&&setTimeout((function(){throw new Error("OOPSIE WOOPSIE!! UwU We made a fucky wucky!! A wittle fucko boingo! The code monkeys at our headquarters are working VEWY HAWD to fix this!")}))})),function(e){return function(t){return e(t)}}};t.relayMiddleware=function(e){var t=n(100),u="?external"===location.search;return u?t.subscribe((function(t){var n=t.type,r=t.payload;"relay"===n&&r.windowId===window.__windowId__&&e.dispatch(Object.assign({},r.action,{relayed:!0}))})):((0,i.acquireHotKey)(r.KEY_F10),o.globalEvents.on("keydown",(function(t){t===r.KEY_F10&&e.dispatch((0,a.openExternalBrowser)())}))),function(e){return function(n){var r=n.type,o=(n.payload,n.relayed);if(r!==a.openExternalBrowser.type)return!c.includes(r)||o||u||t.sendMessage({type:"relay",payload:{windowId:window.__windowId__,action:n}}),e(n);window.open(location.href+"?external","_blank")}}}},function(e,t,n){"use strict";t.__esModule=!0,t.debugReducer=void 0;t.debugReducer=function(e,t){void 0===e&&(e={});var n=t.type;t.payload;return"debug/toggleKitchenSink"===n?Object.assign({},e,{kitchenSink:!e.kitchenSink}):"debug/toggleDebugLayout"===n?Object.assign({},e,{debugLayout:!e.debugLayout}):e}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";e.exports=function(){var e=Object.hasOwnProperty,t=Object.setPrototypeOf,n=Object.isFrozen,r=Object.keys,o=Object.freeze,i=Object.seal,a="undefined"!=typeof Reflect&&Reflect,c=a.apply,u=a.construct;c||(c=function(e,t,n){return e.apply(t,n)}),o||(o=function(e){return e}),i||(i=function(e){return e}),u||(u=function(e,t){return new(Function.prototype.bind.apply(e,[null].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1?n-1:0),o=1;o/gm),D=i(/^data-[\-\w.\u00B7-\uFFFF]/),j=i(/^aria-[\-\w]+$/),F=i(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),K=i(/^(?:\w+script|data):/i),z=i(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g),Y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function U(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&arguments[0]!==undefined?arguments[0]:$(),t=function(e){return W(e)};if(t.version="2.0.12",t.removed=[],!e||!e.document||9!==e.document.nodeType)return t.isSupported=!1,t;var n=e.document,i=!1,a=e.document,c=e.DocumentFragment,u=e.HTMLTemplateElement,E=e.Node,k=e.NodeFilter,q=e.NamedNodeMap,G=q===undefined?e.NamedNodeMap||e.MozNamedAttrMap:q,X=e.Text,Z=e.Comment,Q=e.DOMParser,J=e.trustedTypes;if("function"==typeof u){var ee=a.createElement("template");ee.content&&ee.content.ownerDocument&&(a=ee.content.ownerDocument)}var te=H(J,n),ne=te&&Ve?te.createHTML(""):"",re=a,oe=re.implementation,ie=re.createNodeIterator,ae=re.getElementsByTagName,ce=re.createDocumentFragment,ue=n.importNode,se={};t.isSupported=oe&&"undefined"!=typeof oe.createHTMLDocument&&9!==a.documentMode;var le=P,fe=B,de=D,pe=j,he=K,ge=z,ve=F,me=null,ye=S({},[].concat(U(N),U(A),U(T),U(O),U(I))),be=null,we=S({},[].concat(U(M),U(L),U(V),U(R))),xe=null,_e=null,Ee=!0,ke=!0,Se=!1,Ce=!1,Ne=!1,Ae=!1,Te=!1,Oe=!1,Ie=!1,Me=!1,Le=!1,Ve=!1,Re=!0,Pe=!0,Be=!1,De={},je=S({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","plaintext","script","style","svg","template","thead","title","video","xmp"]),Fe=null,Ke=S({},["audio","video","img","source","image","track"]),ze=null,Ye=S({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),Ue=null,$e=a.createElement("form"),He=function(e){Ue&&Ue===e||(e&&"object"===(void 0===e?"undefined":Y(e))||(e={}),me="ALLOWED_TAGS"in e?S({},e.ALLOWED_TAGS):ye,be="ALLOWED_ATTR"in e?S({},e.ALLOWED_ATTR):we,ze="ADD_URI_SAFE_ATTR"in e?S(C(Ye),e.ADD_URI_SAFE_ATTR):Ye,Fe="ADD_DATA_URI_TAGS"in e?S(C(Ke),e.ADD_DATA_URI_TAGS):Ke,xe="FORBID_TAGS"in e?S({},e.FORBID_TAGS):{},_e="FORBID_ATTR"in e?S({},e.FORBID_ATTR):{},De="USE_PROFILES"in e&&e.USE_PROFILES,Ee=!1!==e.ALLOW_ARIA_ATTR,ke=!1!==e.ALLOW_DATA_ATTR,Se=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Ce=e.SAFE_FOR_JQUERY||!1,Ne=e.SAFE_FOR_TEMPLATES||!1,Ae=e.WHOLE_DOCUMENT||!1,Ie=e.RETURN_DOM||!1,Me=e.RETURN_DOM_FRAGMENT||!1,Le=e.RETURN_DOM_IMPORT||!1,Ve=e.RETURN_TRUSTED_TYPE||!1,Oe=e.FORCE_BODY||!1,Re=!1!==e.SANITIZE_DOM,Pe=!1!==e.KEEP_CONTENT,Be=e.IN_PLACE||!1,ve=e.ALLOWED_URI_REGEXP||ve,Ne&&(ke=!1),Me&&(Ie=!0),De&&(me=S({},[].concat(U(I))),be=[],!0===De.html&&(S(me,N),S(be,M)),!0===De.svg&&(S(me,A),S(be,L),S(be,R)),!0===De.svgFilters&&(S(me,T),S(be,L),S(be,R)),!0===De.mathMl&&(S(me,O),S(be,V),S(be,R))),e.ADD_TAGS&&(me===ye&&(me=C(me)),S(me,e.ADD_TAGS)),e.ADD_ATTR&&(be===we&&(be=C(be)),S(be,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&S(ze,e.ADD_URI_SAFE_ATTR),Pe&&(me["#text"]=!0),Ae&&S(me,["html","head","body"]),me.table&&(S(me,["tbody"]),delete xe.tbody),o&&o(e),Ue=e)},We=function(e){p(t.removed,{element:e});try{e.parentNode.removeChild(e)}catch(n){e.outerHTML=ne}},qe=function(e,n){try{p(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch(r){p(t.removed,{attribute:null,from:n})}n.removeAttribute(e)},Ge=function(e){var t=void 0,n=void 0;if(Oe)e=""+e;else{var r=v(e,/^[\r\n\t ]+/);n=r&&r[0]}var o=te?te.createHTML(e):e;try{t=(new Q).parseFromString(o,"text/html")}catch(u){}if(i&&S(xe,["title"]),!t||!t.documentElement){var c=(t=oe.createHTMLDocument("")).body;c.parentNode.removeChild(c.parentNode.firstElementChild),c.outerHTML=o}return e&&n&&t.body.insertBefore(a.createTextNode(n),t.body.childNodes[0]||null),ae.call(t,Ae?"html":"body")[0]};t.isSupported&&function(){try{var e=Ge("</title><img>");w(/<\/title/,e.querySelector("title").innerHTML)&&(i=!0)}catch(t){}}();var Xe=function(e){return ie.call(e.ownerDocument||e,e,k.SHOW_ELEMENT|k.SHOW_COMMENT|k.SHOW_TEXT,(function(){return k.FILTER_ACCEPT}),!1)},Ze=function(e){return!(e instanceof X||e instanceof Z||"string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof G&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute&&"string"==typeof e.namespaceURI)},Qe=function(e){return"object"===(void 0===E?"undefined":Y(E))?e instanceof E:e&&"object"===(void 0===e?"undefined":Y(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},Je=function(e,n,r){se[e]&&s(se[e],(function(e){e.call(t,n,r,Ue)}))},et=function(e){var n=void 0;if(Je("beforeSanitizeElements",e,null),Ze(e))return We(e),!0;var r=g(e.nodeName);if(Je("uponSanitizeElement",e,{tagName:r,allowedTags:me}),("svg"===r||"math"===r)&&0!==e.querySelectorAll("p, br").length)return We(e),!0;if(!me[r]||xe[r]){if(Pe&&!je[r]&&"function"==typeof e.insertAdjacentHTML)try{var o=e.innerHTML;e.insertAdjacentHTML("AfterEnd",te?te.createHTML(o):o)}catch(i){}return We(e),!0}return"noscript"===r&&w(/<\/noscript/i,e.innerHTML)||"noembed"===r&&w(/<\/noembed/i,e.innerHTML)?(We(e),!0):(!Ce||e.firstElementChild||e.content&&e.content.firstElementChild||!w(/</g,e.textContent)||(p(t.removed,{element:e.cloneNode()}),e.innerHTML?e.innerHTML=m(e.innerHTML,/</g,"<"):e.innerHTML=m(e.textContent,/</g,"<")),Ne&&3===e.nodeType&&(n=e.textContent,n=m(n,le," "),n=m(n,fe," "),e.textContent!==n&&(p(t.removed,{element:e.cloneNode()}),e.textContent=n)),Je("afterSanitizeElements",e,null),!1)},tt=function(e,t,n){if(Re&&("id"===t||"name"===t)&&(n in a||n in $e))return!1;if(ke&&w(de,t));else if(Ee&&w(pe,t));else{if(!be[t]||_e[t])return!1;if(ze[t]);else if(w(ve,m(n,ge,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==y(n,"data:")||!Fe[e])if(Se&&!w(he,m(n,ge,"")));else if(n)return!1}return!0},nt=function(e){var n=void 0,o=void 0,i=void 0,a=void 0,c=void 0;Je("beforeSanitizeAttributes",e,null);var u=e.attributes;if(u){var s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:be};for(c=u.length;c--;){var p=n=u[c],v=p.name,y=p.namespaceURI;if(o=b(n.value),i=g(v),s.attrName=i,s.attrValue=o,s.keepAttr=!0,s.forceKeepAttr=undefined,Je("uponSanitizeAttribute",e,s),o=s.attrValue,!s.forceKeepAttr){if("name"===i&&"IMG"===e.nodeName&&u.id)a=u.id,u=h(u,[]),qe("id",e),qe(v,e),l(u,a)>c&&e.setAttribute("id",a.value);else{if("INPUT"===e.nodeName&&"type"===i&&"file"===o&&s.keepAttr&&(be[i]||!_e[i]))continue;"id"===v&&e.setAttribute(v,""),qe(v,e)}if(s.keepAttr)if(Ce&&w(/\/>/i,o))qe(v,e);else if(w(/svg|math/i,e.namespaceURI)&&w(x("</("+f(r(je),"|")+")","i"),o))qe(v,e);else{Ne&&(o=m(o,le," "),o=m(o,fe," "));var _=e.nodeName.toLowerCase();if(tt(_,i,o))try{y?e.setAttributeNS(y,v,o):e.setAttribute(v,o),d(t.removed)}catch(E){}}}}Je("afterSanitizeAttributes",e,null)}},rt=function ot(e){var t=void 0,n=Xe(e);for(Je("beforeSanitizeShadowDOM",e,null);t=n.nextNode();)Je("uponSanitizeShadowNode",t,null),et(t)||(t.content instanceof c&&ot(t.content),nt(t));Je("afterSanitizeShadowDOM",e,null)};return t.sanitize=function(r,o){var i=void 0,a=void 0,u=void 0,s=void 0,l=void 0;if(r||(r="\x3c!--\x3e"),"string"!=typeof r&&!Qe(r)){if("function"!=typeof r.toString)throw _("toString is not a function");if("string"!=typeof(r=r.toString()))throw _("dirty is not a string, aborting")}if(!t.isSupported){if("object"===Y(e.toStaticHTML)||"function"==typeof e.toStaticHTML){if("string"==typeof r)return e.toStaticHTML(r);if(Qe(r))return e.toStaticHTML(r.outerHTML)}return r}if(Te||He(o),t.removed=[],"string"==typeof r&&(Be=!1),Be);else if(r instanceof E)1===(a=(i=Ge("\x3c!--\x3e")).ownerDocument.importNode(r,!0)).nodeType&&"BODY"===a.nodeName||"HTML"===a.nodeName?i=a:i.appendChild(a);else{if(!Ie&&!Ne&&!Ae&&-1===r.indexOf("<"))return te&&Ve?te.createHTML(r):r;if(!(i=Ge(r)))return Ie?null:ne}i&&Oe&&We(i.firstChild);for(var f=Xe(Be?r:i);u=f.nextNode();)3===u.nodeType&&u===s||et(u)||(u.content instanceof c&&rt(u.content),nt(u),s=u);if(s=null,Be)return r;if(Ie){if(Me)for(l=ce.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return Le&&(l=ue.call(n,l,!0)),l}var d=Ae?i.outerHTML:i.innerHTML;return Ne&&(d=m(d,le," "),d=m(d,fe," ")),te&&Ve?te.createHTML(d):d},t.setConfig=function(e){He(e),Te=!0},t.clearConfig=function(){Ue=null,Te=!1},t.isValidAttribute=function(e,t,n){Ue||He({});var r=g(e),o=g(t);return tt(r,o,n)},t.addHook=function(e,t){"function"==typeof t&&(se[e]=se[e]||[],p(se[e],t))},t.removeHook=function(e){se[e]&&d(se[e])},t.removeHooks=function(e){se[e]&&(se[e]=[])},t.removeAllHooks=function(){se={}},t}()}()},function(e,t,n){"use strict";e.exports=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function n(e,n){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,n){if(e){if("string"==typeof e)return t(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){r&&(e=r);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}var r=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){function t(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}e.exports={defaults:{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1},getDefaults:t,changeDefaults:function(t){e.exports.defaults=t}}})),o=(r.defaults,r.getDefaults,r.changeDefaults,/[&<>"']/),i=/[&<>"']/g,a=/[<>"']|&(?!#?\w+;)/,c=/[<>"']|&(?!#?\w+;)/g,u={"&":"&","<":"<",">":">",'"':""","'":"'"},s=function(e){return u[e]},l=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function f(e){return e.replace(l,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var d=/(^|[^\[])\^/g,p=/[^\w:]/g,h=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i,g={},v=/^[^:]+:\/*[^/]*$/,m=/^([^:]+:)[\s\S]*$/,y=/^([^:]+:\/*[^/]*)[\s\S]*$/;function b(e,t){g[" "+e]||(v.test(e)?g[" "+e]=e+"/":g[" "+e]=w(e,"/",!0));var n=-1===(e=g[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(m,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(y,"$1")+t:e+t}function w(e,t,n){var r=e.length;if(0===r)return"";for(var o=0;o<r;){var i=e.charAt(r-o-1);if(i!==t||n){if(i===t||!n)break;o++}else o++}return e.substr(0,r-o)}var x={escape:function(e,t){if(t){if(o.test(e))return e.replace(i,s)}else if(a.test(e))return e.replace(c,s);return e},unescape:f,edit:function(e,t){e=e.source||e,t=t||"";var n={replace:function(t,r){return r=(r=r.source||r).replace(d,"$1"),e=e.replace(t,r),n},getRegex:function(){return new RegExp(e,t)}};return n},cleanUrl:function(e,t,n){if(e){var r;try{r=decodeURIComponent(f(n)).replace(p,"").toLowerCase()}catch(o){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!h.test(n)&&(n=b(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(o){return null}return n},resolveUrl:b,noopTest:{exec:function(){}},merge:function(e){for(var t,n,r=1;r<arguments.length;r++)for(n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},splitCells:function(e,t){var n=e.replace(/\|/g,(function(e,t,n){for(var r=!1,o=t;--o>=0&&"\\"===n[o];)r=!r;return r?"|":" |"})).split(/ \|/),r=0;if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(/\\\|/g,"|");return n},rtrim:w,findClosingBracket:function(e,t){if(-1===e.indexOf(t[1]))return-1;for(var n=e.length,r=0,o=0;o<n;o++)if("\\"===e[o])o++;else if(e[o]===t[0])r++;else if(e[o]===t[1]&&--r<0)return o;return-1},checkSanitizeDeprecation:function(e){e&&e.sanitize&&e.silent}},_=r.defaults,E=x.rtrim,k=x.splitCells,S=x.escape,C=x.findClosingBracket;function N(e,t,n){var r=t.href,o=t.title?S(t.title):null,i=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?{type:"link",raw:n,href:r,title:o,text:i}:{type:"image",raw:n,href:r,title:o,text:S(i)}}var A=function(){function e(e){this.options=e||_}var t=e.prototype;return t.space=function(e){var t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}},t.code=function(e,t){var n=this.rules.block.code.exec(e);if(n){var r=t[t.length-1];if(r&&"paragraph"===r.type)return{raw:n[0],text:n[0].trimRight()};var o=n[0].replace(/^ {4}/gm,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?o:E(o,"\n")}}},t.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],r=function(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var r=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=r.length?e.slice(r.length):e})).join("\n")}(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim():t[2],text:r}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[1].length,text:t[2]}},t.nptable=function(e){var t=this.rules.block.nptable.exec(e);if(t){var n={type:"table",header:k(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[],raw:t[0]};if(n.header.length===n.align.length){var r,o=n.align.length;for(r=0;r<o;r++)/^ *-+: *$/.test(n.align[r])?n.align[r]="right":/^ *:-+: *$/.test(n.align[r])?n.align[r]="center":/^ *:-+ *$/.test(n.align[r])?n.align[r]="left":n.align[r]=null;for(o=n.cells.length,r=0;r<o;r++)n.cells[r]=k(n.cells[r],n.header.length);return n}}},t.hr=function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}},t.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){var n=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],text:n}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){for(var n,r,o,i,a,c,u,s=t[0],l=t[2],f=l.length>1,d=")"===l[l.length-1],p={type:"list",raw:s,ordered:f,start:f?+l.slice(0,-1):"",loose:!1,items:[]},h=t[0].match(this.rules.block.item),g=!1,v=h.length,m=0;m<v;m++)s=n=h[m],r=n.length,~(n=n.replace(/^ *([*+-]|\d+[.)]) */,"")).indexOf("\n ")&&(r-=n.length,n=this.options.pedantic?n.replace(/^ {1,4}/gm,""):n.replace(new RegExp("^ {1,"+r+"}","gm"),"")),m!==v-1&&(o=this.rules.block.bullet.exec(h[m+1])[0],(f?1===o.length||!d&&")"===o[o.length-1]:o.length>1||this.options.smartLists&&o!==l)&&(i=h.slice(m+1).join("\n"),p.raw=p.raw.substring(0,p.raw.length-i.length),m=v-1)),a=g||/\n\n(?!\s*$)/.test(n),m!==v-1&&(g="\n"===n.charAt(n.length-1),a||(a=g)),a&&(p.loose=!0),c=/^\[[ xX]\] /.test(n),u=undefined,c&&(u=" "!==n[1],n=n.replace(/^\[[ xX]\] +/,"")),p.items.push({type:"list_item",raw:s,task:c,checked:u,loose:a,text:n});return p}},t.html=function(e){var t=this.rules.block.html.exec(e);if(t)return{type:this.options.sanitize?"paragraph":"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):S(t[0]):t[0]}},t.def=function(e){var t=this.rules.block.def.exec(e);if(t)return t[3]&&(t[3]=t[3].substring(1,t[3].length-1)),{tag:t[1].toLowerCase().replace(/\s+/g," "),raw:t[0],href:t[2],title:t[3]}},t.table=function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:k(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var r,o=n.align.length;for(r=0;r<o;r++)/^ *-+: *$/.test(n.align[r])?n.align[r]="right":/^ *:-+: *$/.test(n.align[r])?n.align[r]="center":/^ *:-+ *$/.test(n.align[r])?n.align[r]="left":n.align[r]=null;for(o=n.cells.length,r=0;r<o;r++)n.cells[r]=k(n.cells[r].replace(/^ *\| *| *\| *$/g,""),n.header.length);return n}}},t.lheading=function(e){var t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1]}},t.paragraph=function(e){var t=this.rules.block.paragraph.exec(e);if(t)return{type:"paragraph",raw:t[0],text:"\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1]}},t.text=function(e,t){var n=this.rules.block.text.exec(e);if(n){var r=t[t.length-1];return r&&"text"===r.type?{raw:n[0],text:n[0]}:{type:"text",raw:n[0],text:n[0]}}},t.escape=function(e){var t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:S(t[1])}},t.tag=function(e,t,n){var r=this.rules.inline.tag.exec(e);if(r)return!t&&/^<a /i.test(r[0])?t=!0:t&&/^<\/a>/i.test(r[0])&&(t=!1),!n&&/^<(pre|code|kbd|script)(\s|>)/i.test(r[0])?n=!0:n&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(r[0])&&(n=!1),{type:this.options.sanitize?"text":"html",raw:r[0],inLink:t,inRawBlock:n,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):S(r[0]):r[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var n=C(t[2],"()");if(n>-1){var r=(0===t[0].indexOf("!")?5:4)+t[1].length+n;t[2]=t[2].substring(0,n),t[0]=t[0].substring(0,r).trim(),t[3]=""}var o=t[2],i="";if(this.options.pedantic){var a=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(o);a?(o=a[1],i=a[3]):i=""}else i=t[3]?t[3].slice(1,-1):"";return N(t,{href:(o=o.trim().replace(/^<([\s\S]*)>$/,"$1"))?o.replace(this.rules.inline._escapes,"$1"):o,title:i?i.replace(this.rules.inline._escapes,"$1"):i},t[0])}},t.reflink=function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var r=(n[2]||n[1]).replace(/\s+/g," ");if(!(r=t[r.toLowerCase()])||!r.href){var o=n[0].charAt(0);return{type:"text",raw:o,text:o}}return N(n,r,n[0])}},t.strong=function(e,t,n){void 0===n&&(n="");var r=this.rules.inline.strong.start.exec(e);if(r&&(!r[1]||r[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var o,i="**"===r[0]?this.rules.inline.strong.endAst:this.rules.inline.strong.endUnd;for(i.lastIndex=0;null!=(r=i.exec(t));)if(o=this.rules.inline.strong.middle.exec(t.slice(0,r.index+3)))return{type:"strong",raw:e.slice(0,o[0].length),text:e.slice(2,o[0].length-2)}}},t.em=function(e,t,n){void 0===n&&(n="");var r=this.rules.inline.em.start.exec(e);if(r&&(!r[1]||r[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var o,i="*"===r[0]?this.rules.inline.em.endAst:this.rules.inline.em.endUnd;for(i.lastIndex=0;null!=(r=i.exec(t));)if(o=this.rules.inline.em.middle.exec(t.slice(0,r.index+2)))return{type:"em",raw:e.slice(0,o[0].length),text:e.slice(1,o[0].length-1)}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),r=/[^ ]/.test(n),o=n.startsWith(" ")&&n.endsWith(" ");return r&&o&&(n=n.substring(1,n.length-1)),n=S(n,!0),{type:"codespan",raw:t[0],text:n}}},t.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},t.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[1]}},t.autolink=function(e,t){var n,r,o=this.rules.inline.autolink.exec(e);if(o)return r="@"===o[2]?"mailto:"+(n=S(this.options.mangle?t(o[1]):o[1])):n=S(o[1]),{type:"link",raw:o[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}},t.url=function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var r,o;if("@"===n[2])o="mailto:"+(r=S(this.options.mangle?t(n[0]):n[0]));else{var i;do{i=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(i!==n[0]);r=S(n[0]),o="www."===n[1]?"http://"+r:r}return{type:"link",raw:n[0],text:r,href:o,tokens:[{type:"text",raw:r,text:r}]}}},t.inlineText=function(e,t,n){var r,o=this.rules.inline.text.exec(e);if(o)return r=t?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):S(o[0]):o[0]:S(this.options.smartypants?n(o[0]):o[0]),{type:"text",raw:o[0],text:r}},e}(),T=x.noopTest,O=x.edit,I=x.merge,M={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6}) +([^\n]*?)(?: +#+)? *(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|<![A-Z][\\s\\S]*?>\\n*|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\n*|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:T,table:T,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};M.def=O(M.def).replace("label",M._label).replace("title",M._title).getRegex(),M.bullet=/(?:[*+-]|\d{1,9}[.)])/,M.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,M.item=O(M.item,"gm").replace(/bull/g,M.bullet).getRegex(),M.list=O(M.list).replace(/bull/g,M.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+M.def.source+")").getRegex(),M._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",M._comment=/<!--(?!-?>)[\s\S]*?-->/,M.html=O(M.html,"i").replace("comment",M._comment).replace("tag",M._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),M.paragraph=O(M._paragraph).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",M._tag).getRegex(),M.blockquote=O(M.blockquote).replace("paragraph",M.paragraph).getRegex(),M.normal=I({},M),M.gfm=I({},M.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),M.gfm.nptable=O(M.gfm.nptable).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",M._tag).getRegex(),M.gfm.table=O(M.gfm.table).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",M._tag).getRegex(),M.pedantic=I({},M.normal,{html:O("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",M._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:T,paragraph:O(M.normal._paragraph).replace("hr",M.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",M.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var L={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:T,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",strong:{start:/^(?:(\*\*(?=[*punctuation]))|\*\*)(?![\s])|__/,middle:/^\*\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*\*$|^__(?![\s])((?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?)__$/,endAst:/[^punctuation\s]\*\*(?!\*)|[punctuation]\*\*(?!\*)(?:(?=[punctuation\s]|$))/,endUnd:/[^\s]__(?!_)(?:(?=[punctuation\s])|$)/},em:{start:/^(?:(\*(?=[punctuation]))|\*)(?![*\s])|_/,middle:/^\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*$|^_(?![_\s])(?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?_$/,endAst:/[^punctuation\s]\*(?!\*)|[punctuation]\*(?!\*)(?:(?=[punctuation\s]|$))/,endUnd:/[^\s]_(?!_)(?:(?=[punctuation\s])|$)/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:T,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\<!\[`*]|\b_|$)|[^ ](?= {2,}\n))|(?= {2,}\n))/,punctuation:/^([\s*punctuation])/,_punctuation:"!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~"};L.punctuation=O(L.punctuation).replace(/punctuation/g,L._punctuation).getRegex(),L._blockSkip="\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>",L._overlapSkip="__[^_]*?__|\\*\\*\\[^\\*\\]*?\\*\\*",L.em.start=O(L.em.start).replace(/punctuation/g,L._punctuation).getRegex(),L.em.middle=O(L.em.middle).replace(/punctuation/g,L._punctuation).replace(/overlapSkip/g,L._overlapSkip).getRegex(),L.em.endAst=O(L.em.endAst,"g").replace(/punctuation/g,L._punctuation).getRegex(),L.em.endUnd=O(L.em.endUnd,"g").replace(/punctuation/g,L._punctuation).getRegex(),L.strong.start=O(L.strong.start).replace(/punctuation/g,L._punctuation).getRegex(),L.strong.middle=O(L.strong.middle).replace(/punctuation/g,L._punctuation).replace(/blockSkip/g,L._blockSkip).getRegex(),L.strong.endAst=O(L.strong.endAst,"g").replace(/punctuation/g,L._punctuation).getRegex(),L.strong.endUnd=O(L.strong.endUnd,"g").replace(/punctuation/g,L._punctuation).getRegex(),L.blockSkip=O(L._blockSkip,"g").getRegex(),L.overlapSkip=O(L._overlapSkip,"g").getRegex(),L._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,L._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,L._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,L.autolink=O(L.autolink).replace("scheme",L._scheme).replace("email",L._email).getRegex(),L._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,L.tag=O(L.tag).replace("comment",M._comment).replace("attribute",L._attribute).getRegex(),L._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,L._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,L._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,L.link=O(L.link).replace("label",L._label).replace("href",L._href).replace("title",L._title).getRegex(),L.reflink=O(L.reflink).replace("label",L._label).getRegex(),L.reflinkSearch=O(L.reflinkSearch,"g").replace("reflink",L.reflink).replace("nolink",L.nolink).getRegex(),L.normal=I({},L),L.pedantic=I({},L.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:O(/^!?\[(label)\]\((.*?)\)/).replace("label",L._label).getRegex(),reflink:O(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",L._label).getRegex()}),L.gfm=I({},L.normal,{escape:O(L.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\<!\[`*~]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))|(?= {2,}\n|[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))/}),L.gfm.url=O(L.gfm.url,"i").replace("email",L.gfm._extended_email).getRegex(),L.breaks=I({},L.gfm,{br:O(L.br).replace("{2,}","*").getRegex(),text:O(L.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var V={block:M,inline:L},R=r.defaults,P=V.block,B=V.inline;function D(e){return e.replace(/---/g,"\u2014").replace(/--/g,"\u2013").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1\u2018").replace(/'/g,"\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1\u201c").replace(/"/g,"\u201d").replace(/\.{3}/g,"\u2026")}function j(e){var t,n,r="",o=e.length;for(t=0;t<o;t++)n=e.charCodeAt(t),Math.random()>.5&&(n="x"+n.toString(16)),r+="&#"+n+";";return r}var F=function(){function t(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||R,this.options.tokenizer=this.options.tokenizer||new A,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options;var t={block:P.normal,inline:B.normal};this.options.pedantic?(t.block=P.pedantic,t.inline=B.pedantic):this.options.gfm&&(t.block=P.gfm,this.options.breaks?t.inline=B.breaks:t.inline=B.gfm),this.tokenizer.rules=t}t.lex=function(e,n){return new t(n).lex(e)};var n,r,o,i=t.prototype;return i.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens,!0),this.inline(this.tokens),this.tokens},i.blockTokens=function(e,t,n){var r,o,i,a;for(void 0===t&&(t=[]),void 0===n&&(n=!0),e=e.replace(/^ +$/gm,"");e;)if(r=this.tokenizer.space(e))e=e.substring(r.raw.length),r.type&&t.push(r);else if(r=this.tokenizer.code(e,t))e=e.substring(r.raw.length),r.type?t.push(r):((a=t[t.length-1]).raw+="\n"+r.raw,a.text+="\n"+r.text);else if(r=this.tokenizer.fences(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.heading(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.nptable(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.hr(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.blockquote(e))e=e.substring(r.raw.length),r.tokens=this.blockTokens(r.text,[],n),t.push(r);else if(r=this.tokenizer.list(e)){for(e=e.substring(r.raw.length),i=r.items.length,o=0;o<i;o++)r.items[o].tokens=this.blockTokens(r.items[o].text,[],!1);t.push(r)}else if(r=this.tokenizer.html(e))e=e.substring(r.raw.length),t.push(r);else if(n&&(r=this.tokenizer.def(e)))e=e.substring(r.raw.length),this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});else if(r=this.tokenizer.table(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.lheading(e))e=e.substring(r.raw.length),t.push(r);else if(n&&(r=this.tokenizer.paragraph(e)))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.text(e,t))e=e.substring(r.raw.length),r.type?t.push(r):((a=t[t.length-1]).raw+="\n"+r.raw,a.text+="\n"+r.text);else if(e){var c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(c)}return t},i.inline=function(e){var t,n,r,o,i,a,c=e.length;for(t=0;t<c;t++)switch((a=e[t]).type){case"paragraph":case"text":case"heading":a.tokens=[],this.inlineTokens(a.text,a.tokens);break;case"table":for(a.tokens={header:[],cells:[]},o=a.header.length,n=0;n<o;n++)a.tokens.header[n]=[],this.inlineTokens(a.header[n],a.tokens.header[n]);for(o=a.cells.length,n=0;n<o;n++)for(i=a.cells[n],a.tokens.cells[n]=[],r=0;r<i.length;r++)a.tokens.cells[n][r]=[],this.inlineTokens(i[r],a.tokens.cells[n][r]);break;case"blockquote":this.inline(a.tokens);break;case"list":for(o=a.items.length,n=0;n<o;n++)this.inline(a.items[n].tokens)}return e},i.inlineTokens=function(e,t,n,r,o){var i;void 0===t&&(t=[]),void 0===n&&(n=!1),void 0===r&&(r=!1),void 0===o&&(o="");var a,c=e;if(this.tokens.links){var u=Object.keys(this.tokens.links);if(u.length>0)for(;null!=(a=this.tokenizer.rules.inline.reflinkSearch.exec(c));)u.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(c=c.slice(0,a.index)+"["+"a".repeat(a[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(a=this.tokenizer.rules.inline.blockSkip.exec(c));)c=c.slice(0,a.index)+"["+"a".repeat(a[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;e;)if(i=this.tokenizer.escape(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.tag(e,n,r))e=e.substring(i.raw.length),n=i.inLink,r=i.inRawBlock,t.push(i);else if(i=this.tokenizer.link(e))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,r)),t.push(i);else if(i=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,r)),t.push(i);else if(i=this.tokenizer.strong(e,c,o))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,r),t.push(i);else if(i=this.tokenizer.em(e,c,o))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,r),t.push(i);else if(i=this.tokenizer.codespan(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.br(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.del(e))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,r),t.push(i);else if(i=this.tokenizer.autolink(e,j))e=e.substring(i.raw.length),t.push(i);else if(n||!(i=this.tokenizer.url(e,j))){if(i=this.tokenizer.inlineText(e,r,D))e=e.substring(i.raw.length),o=i.raw.slice(-1),t.push(i);else if(e){var s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(s)}}else e=e.substring(i.raw.length),t.push(i);return t},n=t,o=[{key:"rules",get:function(){return{block:P,inline:B}}}],(r=null)&&e(n.prototype,r),o&&e(n,o),t}(),K=r.defaults,z=x.cleanUrl,Y=x.escape,U=function(){function e(e){this.options=e||K}var t=e.prototype;return t.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var o=this.options.highlight(e,r);null!=o&&o!==e&&(n=!0,e=o)}return r?'<pre><code class="'+this.options.langPrefix+Y(r,!0)+'">'+(n?e:Y(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:Y(e,!0))+"</code></pre>\n"},t.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},t.html=function(e){return e},t.heading=function(e,t,n,r){return this.options.headerIds?"<h"+t+' id="'+this.options.headerPrefix+r.slug(n)+'">'+e+"</h"+t+">\n":"<h"+t+">"+e+"</h"+t+">\n"},t.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},t.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+r+">\n"},t.listitem=function(e){return"<li>"+e+"</li>\n"},t.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},t.paragraph=function(e){return"<p>"+e+"</p>\n"},t.table=function(e,t){return t&&(t="<tbody>"+t+"</tbody>"),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"},t.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},t.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"</"+n+">\n"},t.strong=function(e){return"<strong>"+e+"</strong>"},t.em=function(e){return"<em>"+e+"</em>"},t.codespan=function(e){return"<code>"+e+"</code>"},t.br=function(){return this.options.xhtml?"<br/>":"<br>"},t.del=function(e){return"<del>"+e+"</del>"},t.link=function(e,t,n){if(null===(e=z(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<a href="'+Y(e)+'"';return t&&(r+=' title="'+t+'"'),r+=">"+n+"</a>"},t.image=function(e,t,n){if(null===(e=z(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<img src="'+e+'" alt="'+n+'"';return t&&(r+=' title="'+t+'"'),r+=this.options.xhtml?"/>":">"},t.text=function(e){return e},e}(),$=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,n){return""+n},t.image=function(e,t,n){return""+n},t.br=function(){return""},e}(),H=function(){function e(){this.seen={}}return e.prototype.slug=function(e){var t=e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){var n=t;do{this.seen[n]++,t=n+"-"+this.seen[n]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t},e}(),W=r.defaults,q=x.unescape,G=function(){function e(e){this.options=e||W,this.options.renderer=this.options.renderer||new U,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new $,this.slugger=new H}e.parse=function(t,n){return new e(n).parse(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var n,r,o,i,a,c,u,s,l,f,d,p,h,g,v,m,y,b,w="",x=e.length;for(n=0;n<x;n++)switch((f=e[n]).type){case"space":continue;case"hr":w+=this.renderer.hr();continue;case"heading":w+=this.renderer.heading(this.parseInline(f.tokens),f.depth,q(this.parseInline(f.tokens,this.textRenderer)),this.slugger);continue;case"code":w+=this.renderer.code(f.text,f.lang,f.escaped);continue;case"table":for(s="",u="",i=f.header.length,r=0;r<i;r++)u+=this.renderer.tablecell(this.parseInline(f.tokens.header[r]),{header:!0,align:f.align[r]});for(s+=this.renderer.tablerow(u),l="",i=f.cells.length,r=0;r<i;r++){for(u="",a=(c=f.tokens.cells[r]).length,o=0;o<a;o++)u+=this.renderer.tablecell(this.parseInline(c[o]),{header:!1,align:f.align[o]});l+=this.renderer.tablerow(u)}w+=this.renderer.table(s,l);continue;case"blockquote":l=this.parse(f.tokens),w+=this.renderer.blockquote(l);continue;case"list":for(d=f.ordered,p=f.start,h=f.loose,i=f.items.length,l="",r=0;r<i;r++)m=(v=f.items[r]).checked,y=v.task,g="",v.task&&(b=this.renderer.checkbox(m),h?v.tokens.length>0&&"text"===v.tokens[0].type?(v.tokens[0].text=b+" "+v.tokens[0].text,v.tokens[0].tokens&&v.tokens[0].tokens.length>0&&"text"===v.tokens[0].tokens[0].type&&(v.tokens[0].tokens[0].text=b+" "+v.tokens[0].tokens[0].text)):v.tokens.unshift({type:"text",text:b}):g+=b),g+=this.parse(v.tokens,h),l+=this.renderer.listitem(g,y,m);w+=this.renderer.list(l,d,p);continue;case"html":w+=this.renderer.html(f.text);continue;case"paragraph":w+=this.renderer.paragraph(this.parseInline(f.tokens));continue;case"text":for(l=f.tokens?this.parseInline(f.tokens):f.text;n+1<x&&"text"===e[n+1].type;)l+="\n"+((f=e[++n]).tokens?this.parseInline(f.tokens):f.text);w+=t?this.renderer.paragraph(l):l;continue;default:var _='Token with "'+f.type+'" type was not found.';if(this.options.silent)return;throw new Error(_)}return w},t.parseInline=function(e,t){t=t||this.renderer;var n,r,o="",i=e.length;for(n=0;n<i;n++)switch((r=e[n]).type){case"escape":o+=t.text(r.text);break;case"html":o+=t.html(r.text);break;case"link":o+=t.link(r.href,r.title,this.parseInline(r.tokens,t));break;case"image":o+=t.image(r.href,r.title,r.text);break;case"strong":o+=t.strong(this.parseInline(r.tokens,t));break;case"em":o+=t.em(this.parseInline(r.tokens,t));break;case"codespan":o+=t.codespan(r.text);break;case"br":o+=t.br();break;case"del":o+=t.del(this.parseInline(r.tokens,t));break;case"text":o+=t.text(r.text);break;default:var a='Token with "'+r.type+'" type was not found.';if(this.options.silent)return;throw new Error(a)}return o},e}(),X=x.merge,Z=x.checkSanitizeDeprecation,Q=x.escape,J=r.getDefaults,ee=r.changeDefaults,te=r.defaults;function ne(e,t,n){if(null==e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if("function"==typeof t&&(n=t,t=null),t=X({},ne.defaults,t||{}),Z(t),n){var r,o=t.highlight;try{r=F.lex(e,t)}catch(u){return n(u)}var i=function(e){var i;if(!e)try{i=G.parse(r,t)}catch(u){e=u}return t.highlight=o,e?n(e):n(null,i)};if(!o||o.length<3)return i();if(delete t.highlight,!r.length)return i();var a=0;return ne.walkTokens(r,(function(e){"code"===e.type&&(a++,setTimeout((function(){o(e.text,e.lang,(function(t,n){if(t)return i(t);null!=n&&n!==e.text&&(e.text=n,e.escaped=!0),0==--a&&i()}))}),0))})),void(0===a&&i())}try{var c=F.lex(e,t);return t.walkTokens&&ne.walkTokens(c,t.walkTokens),G.parse(c,t)}catch(u){if(u.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+Q(u.message+"",!0)+"</pre>";throw u}}return ne.options=ne.setOptions=function(e){return X(ne.defaults,e),ee(ne.defaults),ne},ne.getDefaults=J,ne.defaults=te,ne.use=function(e){var t=X({},e);if(e.renderer&&function(){var n=ne.defaults.renderer||new U,r=function(t){var r=n[t];n[t]=function(){for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];var c=e.renderer[t].apply(n,i);return!1===c&&(c=r.apply(n,i)),c}};for(var o in e.renderer)r(o);t.renderer=n}(),e.tokenizer&&function(){var n=ne.defaults.tokenizer||new A,r=function(t){var r=n[t];n[t]=function(){for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];var c=e.tokenizer[t].apply(n,i);return!1===c&&(c=r.apply(n,i)),c}};for(var o in e.tokenizer)r(o);t.tokenizer=n}(),e.walkTokens){var n=ne.defaults.walkTokens;t.walkTokens=function(t){e.walkTokens(t),n&&n(t)}}ne.setOptions(t)},ne.walkTokens=function(e,t){for(var r,o=n(e);!(r=o()).done;){var i=r.value;switch(t(i),i.type){case"table":for(var a,c=n(i.tokens.header);!(a=c()).done;){var u=a.value;ne.walkTokens(u,t)}for(var s,l=n(i.tokens.cells);!(s=l()).done;)for(var f,d=n(s.value);!(f=d()).done;){var p=f.value;ne.walkTokens(p,t)}break;case"list":ne.walkTokens(i.items,t);break;default:i.tokens&&ne.walkTokens(i.tokens,t)}}},ne.Parser=G,ne.parser=G.parse,ne.Renderer=U,ne.TextRenderer=$,ne.Lexer=F,ne.lexer=F.lex,ne.Tokenizer=A,ne.Slugger=H,ne.parse=ne,ne}()}]]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[function(e,t,n){"use strict";t.__esModule=!0;var r=n(448);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&(t[e]=r[e])}))},function(e,t,n){"use strict";t.__esModule=!0,t.TimeDisplay=t.Tooltip=t.Tabs=t.TextArea=t.Table=t.Slider=t.Section=t.ProgressBar=t.NumberInput=t.NoticeBox=t.Modal=t.LabeledList=t.LabeledControls=t.Knob=t.Input=t.Icon=t.Grid=t.Flex=t.Dropdown=t.DraggableControl=t.Divider=t.Dimmer=t.ColorBox=t.Collapsible=t.Chart=t.ByondUi=t.Button=t.Box=t.BlockQuote=t.AnimatedNumber=void 0;var r=n(138);t.AnimatedNumber=r.AnimatedNumber;var o=n(464);t.BlockQuote=o.BlockQuote;var i=n(17);t.Box=i.Box;var a=n(191);t.Button=a.Button;var c=n(466);t.ByondUi=c.ByondUi;var u=n(468);t.Chart=u.Chart;var s=n(469);t.Collapsible=s.Collapsible;var l=n(470);t.ColorBox=l.ColorBox;var f=n(193);t.Dimmer=f.Dimmer;var d=n(194);t.Divider=d.Divider;var p=n(139);t.DraggableControl=p.DraggableControl;var h=n(471);t.Dropdown=h.Dropdown;var g=n(195);t.Flex=g.Flex;var v=n(472);t.Grid=v.Grid;var m=n(104);t.Icon=m.Icon;var y=n(197);t.Input=y.Input;var b=n(473);t.Knob=b.Knob;var x=n(474);t.LabeledControls=x.LabeledControls;var w=n(198);t.LabeledList=w.LabeledList;var _=n(475);t.Modal=_.Modal;var E=n(476);t.NoticeBox=E.NoticeBox;var k=n(140);t.NumberInput=k.NumberInput;var S=n(477);t.ProgressBar=S.ProgressBar;var C=n(478);t.Section=C.Section;var N=n(479);t.Slider=N.Slider;var A=n(196);t.Table=A.Table;var T=n(480);t.TextArea=T.TextArea;var O=n(481);t.Tabs=O.Tabs;var I=n(192);t.Tooltip=I.Tooltip;var M=n(482);t.TimeDisplay=M.TimeDisplay},function(e,t,n){"use strict";(function(e){t.__esModule=!0,t.useSharedState=t.useLocalState=t.useBackend=t.selectBackend=t.sendAct=t.sendMessage=t.backendMiddleware=t.backendReducer=t.backendSuspendSuccess=t.backendSuspendStart=t.backendSetSharedState=t.backendUpdate=void 0;var r=n(100),o=n(188),i=n(189),a=n(25),c=n(136);var u=(0,a.createLogger)("backend"),s=function(e){return{type:"backend/update",payload:e}};t.backendUpdate=s;var l=function(e,t){return{type:"backend/setSharedState",payload:{key:e,nextState:t}}};t.backendSetSharedState=l;t.backendSuspendStart=function(){return{type:"backend/suspendStart"}};var f=function(){return{type:"backend/suspendSuccess",payload:{timestamp:Date.now()}}};t.backendSuspendSuccess=f;var d={config:{},data:{},shared:{},suspended:Date.now(),suspending:!1};t.backendReducer=function(e,t){void 0===e&&(e=d);var n=t.type,r=t.payload;if("backend/update"===n){var o=Object.assign({},e.config,r.config),i=Object.assign({},e.data,r.static_data,r.data),a=Object.assign({},e.shared);if(r.shared)for(var c=0,u=Object.keys(r.shared);c<u.length;c++){var s=u[c],l=r.shared[s];a[s]=""===l?undefined:JSON.parse(l)}return Object.assign({},e,{config:o,data:i,shared:a,suspended:!1})}if("backend/setSharedState"===n){var f,p=r.key,h=r.nextState;return Object.assign({},e,{shared:Object.assign({},e.shared,(f={},f[p]=h,f))})}if("backend/suspendStart"===n)return Object.assign({},e,{suspending:!0});if("backend/suspendSuccess"===n){var g=r.timestamp;return Object.assign({},e,{data:{},shared:{},config:Object.assign({},e.config,{title:"",status:1}),suspending:!1,suspended:g})}return e};t.backendMiddleware=function(t){var n,a;return function(l){return function(d){var h=g(t.getState()).suspended,v=d.type,m=d.payload;if("update"!==v)if("suspend"!==v){if("ping"!==v){if("backend/suspendStart"===v&&!a){u.log("suspending ("+window.__windowId__+")");var y=function(){return p({type:"suspend"})};y(),a=setInterval(y,2e3)}if("backend/suspendSuccess"===v&&((0,c.suspendRenderer)(),clearInterval(a),a=undefined,Byond.winset(window.__windowId__,{"is-visible":!1}),e((function(){return(0,i.focusMap)()}))),"backend/update"===v){var b,x,w=null==(b=m.config)||null==(x=b.window)?void 0:x.fancy;n===undefined?n=w:n!==w&&(u.log("changing fancy mode to",w),n=w,Byond.winset(window.__windowId__,{titlebar:!w,"can-resize":!w}))}return"backend/update"===v&&h&&((0,c.resumeRenderer)(),(0,o.setupDrag)(),e((function(){r.perf.mark("resume/start"),g(t.getState()).suspended||(Byond.winset(window.__windowId__,{"is-visible":!0}),r.perf.mark("resume/finish"))}))),l(d)}p({type:"pingReply"})}else t.dispatch(f());else t.dispatch(s(m))}}};var p=function(e){void 0===e&&(e={});var t=e,n=t.payload,r=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(t,["payload"]),o=Object.assign({tgui:1,window_id:window.__windowId__},r);null!==n&&n!==undefined&&(o.payload=JSON.stringify(n)),Byond.topic(o)};t.sendMessage=p;var h=function(e,t){void 0===t&&(t={}),"object"!=typeof t||null===t||Array.isArray(t)?u.error("Payload for act() must be an object, got this:",t):p({type:"act/"+e,payload:t})};t.sendAct=h;var g=function(e){return e.backend||{}};t.selectBackend=g;t.useBackend=function(e){var t=e.store,n=g(t.getState());return Object.assign({},n,{act:h})};t.useLocalState=function(e,t,n){var r,o=e.store,i=null!=(r=g(o.getState()).shared)?r:{},a=t in i?i[t]:n;return[a,function(e){o.dispatch(l(t,"function"==typeof e?e(a):e))}]};t.useSharedState=function(e,t,n){var r,o=e.store,i=null!=(r=g(o.getState()).shared)?r:{},a=t in i?i[t]:n;return[a,function(e){p({type:"setSharedState",key:t,value:JSON.stringify("function"==typeof e?e(a):e)||""})}]}}).call(this,n(102).setImmediate)},function(e,t,n){"use strict";t.__esModule=!0,t.Window=t.Pane=t.NtosWindow=t.Layout=void 0;var r=n(141);t.Layout=r.Layout;var o=n(483);t.NtosWindow=o.NtosWindow;var i=n(484);t.Pane=i.Pane;var a=n(199);t.Window=a.Window},function(e,t,n){"use strict";var r=n(7),o=n(23).f,i=n(32),a=n(26),c=n(109),u=n(152),s=n(70);e.exports=function(e,t){var n,l,f,d,p,h=e.target,g=e.global,v=e.stat;if(n=g?r:v?r[h]||c(h,{}):(r[h]||{}).prototype)for(l in t){if(d=t[l],f=e.noTargetGet?(p=o(n,l))&&p.value:n[l],!s(g?l:h+(v?".":"#")+l,e.forced)&&f!==undefined){if(typeof d==typeof f)continue;u(d,f)}(e.sham||f&&f.sham)&&i(d,"sham",!0),a(n,l,d,e)}}},function(e,t,n){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){"use strict";t.__esModule=!0,t.canRender=t.pureComponentHooks=t.shallowDiffers=t.normalizeChildren=t.classes=void 0;t.classes=function(e){for(var t="",n=0;n<e.length;n++){var r=e[n];"string"==typeof r&&(t+=r+" ")}return t};t.normalizeChildren=function(e){return Array.isArray(e)?e.flat().filter((function(e){return e})):"object"==typeof e?[e]:[]};var r=function(e,t){var n;for(n in e)if(!(n in t))return!0;for(n in t)if(e[n]!==t[n])return!0;return!1};t.shallowDiffers=r;var o={onComponentShouldUpdate:function(e,t){return r(e,t)}};t.pureComponentHooks=o;t.canRender=function(e){return e!==undefined&&null!==e&&"boolean"!=typeof e}},function(e,t,n){"use strict";(function(t){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof t&&t)||Function("return this")()}).call(this,n(81))},function(e,t,n){"use strict";e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){"use strict";t.__esModule=!0,t.keyOfMatchingRange=t.inRange=t.toFixed=t.round=t.scale=t.clamp01=t.clamp=void 0;t.clamp=function(e,t,n){return e<t?t:e>n?n:e};t.clamp01=function(e){return e<0?0:e>1?1:e};t.scale=function(e,t,n){return(e-t)/(n-t)};t.round=function(e,t){return!e||isNaN(e)?e:(t|=0,i=(e*=n=Math.pow(10,t))>0|-(e<0),o=Math.abs(e%1)>=.4999999999854481,r=Math.floor(e),o&&(e=r+(i>0)),(o?e:Math.round(e))/n);var n,r,o,i};t.toFixed=function(e,t){return void 0===t&&(t=0),Number(e).toFixed(Math.max(t,0))};var r=function(e,t){return t&&e>=t[0]&&e<=t[1]};t.inRange=r;t.keyOfMatchingRange=function(e,t){for(var n=0,o=Object.keys(t);n<o.length;n++){var i=o[n],a=t[i];if(r(e,a))return i}}},function(e,t,n){"use strict";var r=n(5);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(e,t,n){"use strict";var r=n(8);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},function(e,t,n){"use strict";var r=n(38),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){"use strict";var r,o=n(123),i=n(10),a=n(7),c=n(8),u=n(20),s=n(85),l=n(32),f=n(26),d=n(16).f,p=n(42),h=n(55),g=n(15),v=n(67),m=a.Int8Array,y=m&&m.prototype,b=a.Uint8ClampedArray,x=b&&b.prototype,w=m&&p(m),_=y&&p(y),E=Object.prototype,k=E.isPrototypeOf,S=g("toStringTag"),C=v("TYPED_ARRAY_TAG"),N=o&&!!h&&"Opera"!==s(a.opera),A=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},O=function(e){var t=s(e);return"DataView"===t||u(T,t)},I=function(e){return c(e)&&u(T,s(e))};for(r in T)a[r]||(N=!1);if((!N||"function"!=typeof w||w===Function.prototype)&&(w=function(){throw TypeError("Incorrect invocation")},N))for(r in T)a[r]&&h(a[r],w);if((!N||!_||_===E)&&(_=w.prototype,N))for(r in T)a[r]&&h(a[r].prototype,_);if(N&&p(x)!==_&&h(x,_),i&&!u(_,S))for(r in A=!0,d(_,S,{get:function(){return c(this)?this[C]:undefined}}),T)a[r]&&l(a[r],C,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:N,TYPED_ARRAY_TAG:A&&C,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(w,e))return e}else for(var t in T)if(u(T,r)){var n=a[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(i){if(n)for(var r in T){var o=a[r];o&&u(o.prototype,e)&&delete o.prototype[e]}_[e]&&!n||f(_,e,n?t:N&&y[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,o;if(i){if(h){if(n)for(r in T)(o=a[r])&&u(o,e)&&delete o[e];if(w[e]&&!n)return;try{return f(w,e,n?t:N&&m[e]||t)}catch(c){}}for(r in T)!(o=a[r])||o[e]&&!n||f(o,e,t)}},isView:O,isTypedArray:I,TypedArray:w,TypedArrayPrototype:_}},function(e,t,n){"use strict";t.__esModule=!0,t.zipWith=t.zip=t.uniqBy=t.reduce=t.sortBy=t.map=t.filter=t.toKeyedArray=t.toArray=void 0;t.toArray=function(e){if(Array.isArray(e))return e;if("object"==typeof e){var t=Object.prototype.hasOwnProperty,n=[];for(var r in e)t.call(e,r)&&n.push(e[r]);return n}return[]};t.toKeyedArray=function(e,t){return void 0===t&&(t="key"),r((function(e,n){var r;return Object.assign(((r={})[t]=n,r),e)}))(e)};t.filter=function(e){return function(t){if(null===t&&t===undefined)return t;if(Array.isArray(t)){for(var n=[],r=0;r<t.length;r++){var o=t[r];e(o,r,t)&&n.push(o)}return n}throw new Error("filter() can't iterate on type "+typeof t)}};var r=function(e){return function(t){if(null===t&&t===undefined)return t;if(Array.isArray(t)){for(var n=[],r=0;r<t.length;r++)n.push(e(t[r],r,t));return n}if("object"==typeof t){var o=Object.prototype.hasOwnProperty,i=[];for(var a in t)o.call(t,a)&&i.push(e(t[a],a,t));return i}throw new Error("map() can't iterate on type "+typeof t)}};t.map=r;var o=function(e,t){for(var n=e.criteria,r=t.criteria,o=n.length,i=0;i<o;i++){var a=n[i],c=r[i];if(a<c)return-1;if(a>c)return 1}return 0};t.sortBy=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){if(!Array.isArray(e))return e;for(var n=e.length,r=[],i=function(n){var o=e[n];r.push({criteria:t.map((function(e){return e(o)})),value:o})},a=0;a<n;a++)i(a);for(r.sort(o);n--;)r[n]=r[n].value;return r}};t.reduce=function(e,t){return function(n){var r,o,i=n.length;for(t===undefined?(r=1,o=n[0]):(r=0,o=t);r<i;r++)o=e(o,n[r],r,n);return o}};t.uniqBy=function(e){return function(t){var n=t.length,r=[],o=e?[]:r,i=-1;e:for(;++i<n;){var a=t[i],c=e?e(a):a;if(a=0!==a?a:0,c==c){for(var u=o.length;u--;)if(o[u]===c)continue e;e&&o.push(c),r.push(a)}else o.includes(c)||(o!==r&&o.push(c),r.push(a))}return r}};var i=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if(0!==t.length){for(var r=t.length,o=t[0].length,i=[],a=0;a<o;a++){for(var c=[],u=0;u<r;u++)c.push(t[u][a]);i.push(c)}return i}};t.zip=i;t.zipWith=function(e){return function(){return r((function(t){return e.apply(void 0,t)}))(i.apply(void 0,arguments))}}},function(e,t,n){"use strict";var r=n(7),o=n(111),i=n(20),a=n(67),c=n(115),u=n(155),s=o("wks"),l=r.Symbol,f=u?l:l&&l.withoutSetter||a;e.exports=function(e){return i(s,e)||(c&&i(l,e)?s[e]=l[e]:s[e]=f("Symbol."+e)),s[e]}},function(e,t,n){"use strict";var r=n(10),o=n(149),i=n(11),a=n(40),c=Object.defineProperty;t.f=r?c:function(e,t,n){if(i(e),t=a(t,!0),i(n),o)try{return c(e,t,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){"use strict";t.__esModule=!0,t.Box=t.computeBoxClassName=t.computeBoxProps=t.halfUnit=t.unit=void 0;var r=n(6),o=n(0),i=n(465),a=n(36);var c=function(e){return"string"==typeof e?e.endsWith("px")&&!Byond.IS_LTE_IE8?parseFloat(e)/12+"rem":e:"number"==typeof e?Byond.IS_LTE_IE8?12*e+"px":e+"rem":void 0};t.unit=c;var u=function(e){return"string"==typeof e?c(e):"number"==typeof e?c(.5*e):void 0};t.halfUnit=u;var s=function(e){return"string"==typeof e&&a.CSS_COLORS.includes(e)},l=function(e){return function(t,n){"number"!=typeof n&&"string"!=typeof n||(t[e]=n)}},f=function(e,t){return function(n,r){"number"!=typeof r&&"string"!=typeof r||(n[e]=t(r))}},d=function(e,t){return function(n,r){r&&(n[e]=t)}},p=function(e,t,n){return function(r,o){if("number"==typeof o||"string"==typeof o)for(var i=0;i<n.length;i++)r[e+"-"+n[i]]=t(o)}},h=function(e){return function(t,n){s(n)||(t[e]=n)}},g={position:l("position"),overflow:l("overflow"),overflowX:l("overflow-x"),overflowY:l("overflow-y"),top:f("top",c),bottom:f("bottom",c),left:f("left",c),right:f("right",c),width:f("width",c),minWidth:f("min-width",c),maxWidth:f("max-width",c),height:f("height",c),minHeight:f("min-height",c),maxHeight:f("max-height",c),fontSize:f("font-size",c),fontFamily:l("font-family"),lineHeight:function(e,t){"number"==typeof t?e["line-height"]=t:"string"==typeof t&&(e["line-height"]=c(t))},opacity:l("opacity"),textAlign:l("text-align"),verticalAlign:l("vertical-align"),inline:d("display","inline-block"),bold:d("font-weight","bold"),italic:d("font-style","italic"),nowrap:d("white-space","nowrap"),m:p("margin",u,["top","bottom","left","right"]),mx:p("margin",u,["left","right"]),my:p("margin",u,["top","bottom"]),mt:f("margin-top",u),mb:f("margin-bottom",u),ml:f("margin-left",u),mr:f("margin-right",u),p:p("padding",u,["top","bottom","left","right"]),px:p("padding",u,["left","right"]),py:p("padding",u,["top","bottom"]),pt:f("padding-top",u),pb:f("padding-bottom",u),pl:f("padding-left",u),pr:f("padding-right",u),color:h("color"),textColor:h("color"),backgroundColor:h("background-color"),fillPositionedParent:function(e,t){t&&(e.position="absolute",e.top=0,e.bottom=0,e.left=0,e.right=0)}},v=function(e){for(var t={},n={},r=0,o=Object.keys(e);r<o.length;r++){var i=o[r];if("style"!==i)if(Byond.IS_LTE_IE8&&"onClick"===i)t.onclick=e[i];else{var a=e[i],c=g[i];c?c(n,a):t[i]=a}}for(var u="",s=0,l=Object.keys(n);s<l.length;s++){var f=l[s];u+=f+":"+n[f]+";"}if(e.style)for(var d=0,p=Object.keys(e.style);d<p.length;d++){var h=p[d];u+=h+":"+e.style[h]+";"}return u.length>0&&(t.style=u),t};t.computeBoxProps=v;var m=function(e){var t=e.textColor||e.color,n=e.backgroundColor;return(0,r.classes)([s(t)&&"color-"+t,s(n)&&"color-bg-"+n])};t.computeBoxClassName=m;var y=function(e){var t=e.as,n=void 0===t?"div":t,r=e.className,a=e.children,c=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["as","className","children"]);if("function"==typeof a)return a(v(e));var u="string"==typeof r?r+" "+m(c):m(c),s=v(c);return(0,o.createVNode)(i.VNodeFlags.HtmlElement,n,u,a,i.ChildFlags.UnknownChildren,s)};t.Box=y,y.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";var r=n(24);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";function r(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}t.__esModule=!0,t.buildQueryString=t.decodeHtmlEntities=t.toTitleCase=t.capitalize=t.createSearch=t.createGlobPattern=t.multiline=void 0;t.multiline=function i(e){if(Array.isArray(e))return i(e.join(""));for(var t,n,o=e.split("\n"),a=r(o);!(n=a()).done;)for(var c=n.value,u=0;u<c.length;u++){if(" "!==c[u]){(t===undefined||u<t)&&(t=u);break}}return t||(t=0),o.map((function(e){return e.substr(t).trimRight()})).join("\n").trim()};t.createGlobPattern=function(e){var t=new RegExp("^"+e.split(/\*+/).map((function(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")})).join(".*")+"$");return function(e){return t.test(e)}};t.createSearch=function(e,t){var n=e.toLowerCase().trim();return function(e){if(!n)return!0;var r=t?t(e):e;return!!r&&r.toLowerCase().includes(n)}};t.capitalize=function a(e){return Array.isArray(e)?e.map(a):e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()};t.toTitleCase=function c(e){if(Array.isArray(e))return e.map(c);if("string"!=typeof e)return e;for(var t=e.replace(/([^\W_]+[^\s-]*) */g,(function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})),n=0,r=["A","An","And","As","At","But","By","For","For","From","In","Into","Near","Nor","Of","On","Onto","Or","The","To","With"];n<r.length;n++){var o=new RegExp("\\s"+r[n]+"\\s","g");t=t.replace(o,(function(e){return e.toLowerCase()}))}for(var i=0,a=["Id","Tv"];i<a.length;i++){var u=new RegExp("\\b"+a[i]+"\\b","g");t=t.replace(u,(function(e){return e.toLowerCase()}))}return t};t.decodeHtmlEntities=function(e){if(!e)return e;var t={nbsp:" ",amp:"&",quot:'"',lt:"<",gt:">",apos:"'"};return e.replace(/<br>/gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(/&(nbsp|amp|quot|lt|gt|apos);/g,(function(e,n){return t[n]})).replace(/&#?([0-9]+);/gi,(function(e,t){var n=parseInt(t,10);return String.fromCharCode(n)})).replace(/&#x?([0-9a-f]+);/gi,(function(e,t){var n=parseInt(t,16);return String.fromCharCode(n)}))};t.buildQueryString=function(e){return Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")}},function(e,t,n){"use strict";var r={}.hasOwnProperty;e.exports=function(e,t){return r.call(e,t)}},function(e,t,n){"use strict";var r=n(53),o=n(66),i=n(18),a=n(12),c=n(72),u=[].push,s=function(e){var t=1==e,n=2==e,s=3==e,l=4==e,f=6==e,d=5==e||f;return function(p,h,g,v){for(var m,y,b=i(p),x=o(b),w=r(h,g,3),_=a(x.length),E=0,k=v||c,S=t?k(p,_):n?k(p,0):undefined;_>E;E++)if((d||E in x)&&(y=w(m=x[E],E,b),e))if(t)S[E]=y;else if(y)switch(e){case 3:return!0;case 5:return m;case 6:return E;case 2:u.call(S,m)}else if(l)return!1;return f?-1:s||l?l:S}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6)}},function(e,t,n){"use strict";t.__esModule=!0,t.useSelector=t.useDispatch=t.createAction=t.combineReducers=t.applyMiddleware=t.createStore=void 0;var r=n(30);function o(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return i(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}t.createStore=function a(e,t){if(t)return t(a)(e);var n,r=[],o=function(t){n=e(n,t);for(var o=0;o<r.length;o++)r[o]()};return o({type:"@@INIT"}),{dispatch:o,subscribe:function(e){r.push(e)},getState:function(){return n}}};t.applyMiddleware=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){return function(n){for(var o=arguments.length,i=new Array(o>1?o-1:0),a=1;a<o;a++)i[a-1]=arguments[a];var c=e.apply(void 0,[n].concat(i)),u=function(){throw new Error("Dispatching while constructing your middleware is not allowed.")},s={getState:c.getState,dispatch:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return u.apply(void 0,[e].concat(n))}},l=t.map((function(e){return e(s)}));return u=r.compose.apply(void 0,l)(c.dispatch),Object.assign({},c,{dispatch:u})}}};t.combineReducers=function(e){var t=Object.keys(e),n=!1;return function(r,i){void 0===r&&(r={});for(var a,c=Object.assign({},r),u=o(t);!(a=u()).done;){var s=a.value,l=e[s],f=r[s],d=l(f,i);f!==d&&(n=!0,c[s]=d)}return n?c:r}};t.createAction=function(e,t){var n=function(){if(!t)return{type:e,payload:arguments.length<=0?undefined:arguments[0]};var n=t.apply(void 0,arguments);if(!n)throw new Error("prepare function did not return an object");var r={type:e};return"payload"in n&&(r.payload=n.payload),"meta"in n&&(r.meta=n.meta),r};return n.toString=function(){return""+e},n.type=e,n.match=function(t){return t.type===e},n};t.useDispatch=function(e){return e.store.dispatch};t.useSelector=function(e,t){return t(e.store.getState())}},function(e,t,n){"use strict";var r=n(10),o=n(82),i=n(51),a=n(31),c=n(40),u=n(20),s=n(149),l=Object.getOwnPropertyDescriptor;t.f=r?l:function(e,t){if(e=a(e),t=c(t,!0),s)try{return l(e,t)}catch(n){}if(u(e,t))return i(!o.f.call(e,t),e[t])}},function(e,t,n){"use strict";e.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){"use strict";t.__esModule=!0,t.logger=t.createLogger=void 0;n(101);var r=0,o=1,i=2,a=3,c=4,u=function(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o<n;o++)r[o-2]=arguments[o];if(e>=i){var a=[t].concat(r).map((function(e){return"string"==typeof e?e:e instanceof Error?e.stack||String(e):JSON.stringify(e)})).filter((function(e){return e})).join(" ")+"\nUser Agent: "+navigator.userAgent;Byond.topic({tgui:1,window_id:window.__windowId__,type:"log",ns:t,message:a})}},s=function(e){return{debug:function(){for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return u.apply(void 0,[r,e].concat(n))},log:function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return u.apply(void 0,[o,e].concat(n))},info:function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return u.apply(void 0,[i,e].concat(n))},warn:function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return u.apply(void 0,[a,e].concat(n))},error:function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return u.apply(void 0,[c,e].concat(n))}}};t.createLogger=s;var l=s();t.logger=l},function(e,t,n){"use strict";var r=n(7),o=n(32),i=n(20),a=n(109),c=n(110),u=n(33),s=u.get,l=u.enforce,f=String(String).split("String");(e.exports=function(e,t,n,c){var u=!!c&&!!c.unsafe,s=!!c&&!!c.enumerable,d=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof t||i(n,"name")||o(n,"name",t),l(n).source=f.join("string"==typeof t?t:"")),e!==r?(u?!d&&e[t]&&(s=!0):delete e[t],s?e[t]=n:o(e,t,n)):s?e[t]=n:a(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||c(this)}))},function(e,t,n){"use strict";var r=n(153),o=n(20),i=n(159),a=n(16).f;e.exports=function(e){var t=r.Symbol||(r.Symbol={});o(t,e)||a(t,e,{value:i.f(e)})}},function(e,t,n){"use strict";e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,t,n){"use strict";var r=n(10),o=n(5),i=n(20),a=Object.defineProperty,c={},u=function(e){throw e};e.exports=function(e,t){if(i(c,e))return c[e];t||(t={});var n=[][e],s=!!i(t,"ACCESSORS")&&t.ACCESSORS,l=i(t,0)?t[0]:u,f=i(t,1)?t[1]:undefined;return c[e]=!!n&&!o((function(){if(s&&!r)return!0;var e={length:-1};s?a(e,1,{enumerable:!0,get:u}):e[1]=1,n.call(e,l,f)}))}},function(e,t,n){"use strict";function r(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}t.__esModule=!0,t.compose=t.flow=void 0;t.flow=function i(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){for(var n=e,o=arguments.length,a=new Array(o>1?o-1:0),c=1;c<o;c++)a[c-1]=arguments[c];for(var u,s=r(t);!(u=s()).done;){var l=u.value;Array.isArray(l)?n=i.apply(void 0,l).apply(void 0,[n].concat(a)):l&&(n=l.apply(void 0,[n].concat(a)))}return n}};t.compose=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce((function(e,t){return function(n){for(var r=arguments.length,o=new Array(r>1?r-1:0),i=1;i<r;i++)o[i-1]=arguments[i];return e.apply(void 0,[t.apply(void 0,[n].concat(o))].concat(o))}}))}},function(e,t,n){"use strict";var r=n(66),o=n(24);e.exports=function(e){return r(o(e))}},function(e,t,n){"use strict";var r=n(10),o=n(16),i=n(51);e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){"use strict";var r,o,i,a=n(151),c=n(7),u=n(8),s=n(32),l=n(20),f=n(83),d=n(68),p=c.WeakMap;if(a){var h=new p,g=h.get,v=h.has,m=h.set;r=function(e,t){return m.call(h,e,t),t},o=function(e){return g.call(h,e)||{}},i=function(e){return v.call(h,e)}}else{var y=f("state");d[y]=!0,r=function(e,t){return s(e,y,t),t},o=function(e){return l(e,y)?e[y]:{}},i=function(e){return l(e,y)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!u(t)||(n=o(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){"use strict";var r=n(24),o=/"/g;e.exports=function(e,t,n,i){var a=String(r(e)),c="<"+t;return""!==n&&(c+=" "+n+'="'+String(i).replace(o,""")+'"'),c+">"+a+"</"+t+">"}},function(e,t,n){"use strict";var r=n(5);e.exports=function(e){return r((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))}},function(e,t,n){"use strict";t.__esModule=!0,t.getGasColor=t.getGasLabel=t.RADIO_CHANNELS=t.CSS_COLORS=t.COLORS=t.UI_CLOSE=t.UI_DISABLED=t.UI_UPDATE=t.UI_INTERACTIVE=void 0;t.UI_INTERACTIVE=2;t.UI_UPDATE=1;t.UI_DISABLED=0;t.UI_CLOSE=-1;t.COLORS={department:{captain:"#c06616",security:"#e74c3c",medbay:"#3498db",science:"#9b59b6",engineering:"#f1c40f",cargo:"#f39c12",centcom:"#00c100",other:"#c38312"},damageType:{oxy:"#3498db",toxin:"#2ecc71",burn:"#e67e22",brute:"#e74c3c"}};t.CSS_COLORS=["black","white","red","orange","yellow","olive","green","teal","blue","violet","purple","pink","brown","grey","good","average","bad","label"];t.RADIO_CHANNELS=[{name:"Syndicate",freq:1213,color:"#a52a2a"},{name:"Red Team",freq:1215,color:"#ff4444"},{name:"Blue Team",freq:1217,color:"#3434fd"},{name:"CentCom",freq:1337,color:"#2681a5"},{name:"Supply",freq:1347,color:"#b88646"},{name:"Service",freq:1349,color:"#6ca729"},{name:"Science",freq:1351,color:"#c68cfa"},{name:"Command",freq:1353,color:"#5177ff"},{name:"Medical",freq:1355,color:"#57b8f0"},{name:"Engineering",freq:1357,color:"#f37746"},{name:"Security",freq:1359,color:"#dd3535"},{name:"AI Private",freq:1447,color:"#d65d95"},{name:"Common",freq:1459,color:"#1ecc43"}];var r=[{id:"o2",name:"Oxygen",label:"O\u2082",color:"blue"},{id:"n2",name:"Nitrogen",label:"N\u2082",color:"red"},{id:"co2",name:"Carbon Dioxide",label:"CO\u2082",color:"grey"},{id:"plasma",name:"Plasma",label:"Plasma",color:"pink"},{id:"water_vapor",name:"Water Vapor",label:"H\u2082O",color:"grey"},{id:"nob",name:"Hyper-noblium",label:"Hyper-nob",color:"teal"},{id:"n2o",name:"Nitrous Oxide",label:"N\u2082O",color:"red"},{id:"no2",name:"Nitryl",label:"NO\u2082",color:"brown"},{id:"tritium",name:"Tritium",label:"Tritium",color:"green"},{id:"bz",name:"BZ",label:"BZ",color:"purple"},{id:"stim",name:"Stimulum",label:"Stimulum",color:"purple"},{id:"pluox",name:"Pluoxium",label:"Pluoxium",color:"blue"},{id:"miasma",name:"Miasma",label:"Miasma",color:"olive"},{id:"hydrogen",name:"Hydrogen",label:"H\u2082",color:"white"}];t.getGasLabel=function(e,t){var n=String(e).toLowerCase(),o=r.find((function(e){return e.id===n||e.name.toLowerCase()===n}));return o&&o.label||t||e};t.getGasColor=function(e){var t=String(e).toLowerCase(),n=r.find((function(e){return e.id===t||e.name.toLowerCase()===t}));return n&&n.color}},function(e,t,n){"use strict";var r={}.toString;e.exports=function(e){return r.call(e).slice(8,-1)}},function(e,t,n){"use strict";var r=Math.ceil,o=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?o:r)(e)}},function(e,t,n){"use strict";t.__esModule=!0,t.formatDb=t.formatMoney=t.formatPower=t.formatSiUnit=void 0;var r=n(9),o=["f","p","n","\u03bc","m"," ","k","M","G","T","P","E","Z","Y"],i=o.indexOf(" "),a=function(e,t,n){if(void 0===t&&(t=-i),void 0===n&&(n=""),"number"!=typeof e||!Number.isFinite(e))return e;var a=Math.floor(Math.log10(e)),c=Math.floor(Math.max(3*t,a)),u=Math.floor(a/3),s=Math.floor(c/3),l=(0,r.clamp)(i+s,0,o.length),f=o[l],d=e/Math.pow(1e3,s),p=u>t?2+3*s-c:0;return((0,r.toFixed)(d,p)+" "+f+n).trim()};t.formatSiUnit=a;t.formatPower=function(e,t){return void 0===t&&(t=0),a(e,t,"W")};t.formatMoney=function(e,t){if(void 0===t&&(t=0),!Number.isFinite(e))return e;var n=(0,r.round)(e,t);t>0&&(n=(0,r.toFixed)(e,t));var o=(n=String(n)).length,i=n.indexOf(".");-1===i&&(i=o);for(var a="",c=0;c<o;c++)c>0&&c<i&&(i-c)%3==0&&(a+="\u2009"),a+=n.charAt(c);return a};t.formatDb=function(e){var t=20*Math.log(e)/Math.log(10),n=t>=0?"+":t<0?"\u2013":"",o=Math.abs(t);return n+(o=o===Infinity?"Inf":(0,r.toFixed)(o,2))+" dB"}},function(e,t,n){"use strict";var r=n(8);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){"use strict";var r=n(153),o=n(7),i=function(e){return"function"==typeof e?e:undefined};e.exports=function(e,t){return arguments.length<2?i(r[e])||i(o[e]):r[e]&&r[e][t]||o[e]&&o[e][t]}},function(e,t,n){"use strict";var r=n(20),o=n(18),i=n(83),a=n(122),c=i("IE_PROTO"),u=Object.prototype;e.exports=a?Object.getPrototypeOf:function(e){return e=o(e),r(e,c)?e[c]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?u:null}},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var r=n(5);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){throw 1},1)}))}},function(e,t,n){"use strict";var r=n(11),o=n(28),i=n(15)("species");e.exports=function(e,t){var n,a=r(e).constructor;return a===undefined||(n=r(a)[i])==undefined?t:o(n)}},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(10),a=n(134),c=n(13),u=n(88),s=n(60),l=n(51),f=n(32),d=n(12),p=n(168),h=n(182),g=n(40),v=n(20),m=n(85),y=n(8),b=n(48),x=n(55),w=n(52).f,_=n(183),E=n(21).forEach,k=n(59),S=n(16),C=n(23),N=n(33),A=n(90),T=N.get,O=N.set,I=S.f,M=C.f,L=Math.round,V=o.RangeError,R=u.ArrayBuffer,P=u.DataView,B=c.NATIVE_ARRAY_BUFFER_VIEWS,D=c.TYPED_ARRAY_TAG,j=c.TypedArray,F=c.TypedArrayPrototype,K=c.aTypedArrayConstructor,z=c.isTypedArray,Y=function(e,t){for(var n=0,r=t.length,o=new(K(e))(r);r>n;)o[n]=t[n++];return o},U=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},$=function(e){var t;return e instanceof R||"ArrayBuffer"==(t=m(e))||"SharedArrayBuffer"==t},H=function(e,t){return z(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},W=function(e,t){return H(e,t=g(t,!0))?l(2,e[t]):M(e,t)},q=function(e,t,n){return!(H(e,t=g(t,!0))&&y(n)&&v(n,"value"))||v(n,"get")||v(n,"set")||n.configurable||v(n,"writable")&&!n.writable||v(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};i?(B||(C.f=W,S.f=q,U(F,"buffer"),U(F,"byteOffset"),U(F,"byteLength"),U(F,"length")),r({target:"Object",stat:!0,forced:!B},{getOwnPropertyDescriptor:W,defineProperty:q}),e.exports=function(e,t,n){var i=e.match(/\d+$/)[0]/8,c=e+(n?"Clamped":"")+"Array",u="get"+e,l="set"+e,g=o[c],v=g,m=v&&v.prototype,S={},C=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[u](t*i+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var o=T(e);n&&(r=(r=L(r))<0?0:r>255?255:255&r),o.view[l](t*i+o.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};B?a&&(v=t((function(e,t,n,r){return s(e,v,c),A(y(t)?$(t)?r!==undefined?new g(t,h(n,i),r):n!==undefined?new g(t,h(n,i)):new g(t):z(t)?Y(v,t):_.call(v,t):new g(p(t)),e,v)})),x&&x(v,j),E(w(g),(function(e){e in v||f(v,e,g[e])})),v.prototype=m):(v=t((function(e,t,n,r){s(e,v,c);var o,a,u,l=0,f=0;if(y(t)){if(!$(t))return z(t)?Y(v,t):_.call(v,t);o=t,f=h(n,i);var g=t.byteLength;if(r===undefined){if(g%i)throw V("Wrong length");if((a=g-f)<0)throw V("Wrong length")}else if((a=d(r)*i)+f>g)throw V("Wrong length");u=a/i}else u=p(t),o=new R(a=u*i);for(O(e,{buffer:o,byteOffset:f,byteLength:a,length:u,view:new P(o)});l<u;)C(e,l++)})),x&&x(v,j),m=v.prototype=b(F)),m.constructor!==v&&f(m,"constructor",v),D&&f(m,D,c),S[c]=v,r({global:!0,forced:v!=g,sham:!B},S),"BYTES_PER_ELEMENT"in v||f(v,"BYTES_PER_ELEMENT",i),"BYTES_PER_ELEMENT"in m||f(m,"BYTES_PER_ELEMENT",i),k(c)}):e.exports=function(){}},function(e,t,n){"use strict";var r=n(38),o=Math.max,i=Math.min;e.exports=function(e,t){var n=r(e);return n<0?o(n+t,0):i(n,t)}},function(e,t,n){"use strict";var r,o=n(11),i=n(156),a=n(113),c=n(68),u=n(157),s=n(108),l=n(83),f=l("IE_PROTO"),d=function(){},p=function(e){return"<script>"+e+"<\/script>"},h=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(o){}var e,t;h=r?function(e){e.write(p("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):((t=s("iframe")).style.display="none",u.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(p("document.F=Object")),e.close(),e.F);for(var n=a.length;n--;)delete h.prototype[a[n]];return h()};c[f]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(d.prototype=o(e),n=new d,d.prototype=null,n[f]=e):n=h(),t===undefined?n:i(n,t)}},function(e,t,n){"use strict";var r=n(16).f,o=n(20),i=n(15)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){"use strict";var r=n(15),o=n(48),i=n(16),a=r("unscopables"),c=Array.prototype;c[a]==undefined&&i.f(c,a,{configurable:!0,value:o(null)}),e.exports=function(e){c[a][e]=!0}},function(e,t,n){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var r=n(154),o=n(113).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(28);e.exports=function(e,t,n){if(r(e),t===undefined)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){"use strict";var r=n(40),o=n(16),i=n(51);e.exports=function(e,t,n){var a=r(t);a in e?o.f(e,a,i(0,n)):e[a]=n}},function(e,t,n){"use strict";var r=n(11),o=n(166);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),t?e.call(n,i):n.__proto__=i,n}}():undefined)},function(e,t,n){"use strict";var r=n(68),o=n(8),i=n(20),a=n(16).f,c=n(67),u=n(76),s=c("meta"),l=0,f=Object.isExtensible||function(){return!0},d=function(e){a(e,s,{value:{objectID:"O"+ ++l,weakData:{}}})},p=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,s)){if(!f(e))return"F";if(!t)return"E";d(e)}return e[s].objectID},getWeakData:function(e,t){if(!i(e,s)){if(!f(e))return!0;if(!t)return!1;d(e)}return e[s].weakData},onFreeze:function(e){return u&&p.REQUIRED&&f(e)&&!i(e,s)&&d(e),e}};r[s]=!0},function(e,t,n){"use strict";t.__esModule=!0,t.removeScrollableNode=t.addScrollableNode=t.canStealFocus=t.setupGlobalEvents=t.globalEvents=void 0;var r=n(185),o=n(78),i=(n(25),new r.EventEmitter);t.globalEvents=i;var a,c=!1;t.setupGlobalEvents=function(e){void 0===e&&(e={}),c=!!e.ignoreWindowFocus};var u=!0,s=function y(e,t){c?u=!0:(a&&(clearTimeout(a),a=null),t?a=setTimeout((function(){return y(e)})):u!==e&&(u=e,i.emit(e?"window-focus":"window-blur"),i.emit("window-focus-change",e)))},l=null,f=function(e){var t=String(e.tagName).toLowerCase();return"input"===t||"textarea"===t};t.canStealFocus=f;var d=function b(){l&&(l.removeEventListener("blur",b),l=null)},p=null,h=null,g=[];t.addScrollableNode=function(e){g.push(e)};t.removeScrollableNode=function(e){var t=g.indexOf(e);t>=0&&g.splice(t,1)};window.addEventListener("mousemove",(function(e){var t=e.target;t!==h&&(h=t,function(e){if(!l&&u)for(var t=document.body;e&&e!==t;){if(g.includes(e)){if(e.contains(p))return;return p=e,void e.focus()}e=e.parentNode}}(t))})),window.addEventListener("focusin",(function(e){if(h=null,p=e.target,s(!0),f(e.target))return t=e.target,d(),void(l=t).addEventListener("blur",d);var t})),window.addEventListener("focusout",(function(e){h=null,s(!1,!0)})),window.addEventListener("blur",(function(e){h=null,s(!1,!0)})),window.addEventListener("beforeunload",(function(e){s(!1)}));var v={},m=function(){function e(e,t,n){this.event=e,this.type=t,this.code=window.event?e.which:e.keyCode,this.ctrl=e.ctrlKey,this.shift=e.shiftKey,this.alt=e.altKey,this.repeat=!!n}var t=e.prototype;return t.hasModifierKeys=function(){return this.ctrl||this.alt||this.shift},t.isModifierKey=function(){return this.code===o.KEY_CTRL||this.code===o.KEY_SHIFT||this.code===o.KEY_ALT},t.isDown=function(){return"keydown"===this.type},t.isUp=function(){return"keyup"===this.type},t.toString=function(){return this._str||(this._str="",this.ctrl&&(this._str+="Ctrl+"),this.alt&&(this._str+="Alt+"),this.shift&&(this._str+="Shift+"),this.code>=48&&this.code<=90?this._str+=String.fromCharCode(this.code):this.code>=o.KEY_F1&&this.code<=o.KEY_F12?this._str+="F"+(this.code-111):this._str+="["+this.code+"]"),this._str},e}();document.addEventListener("keydown",(function(e){if(!f(e.target)){var t=e.keyCode,n=new m(e,"keydown",v[t]);i.emit("keydown",n),i.emit("key",n),v[t]=!0}})),document.addEventListener("keyup",(function(e){if(!f(e.target)){var t=e.keyCode,n=new m(e,"keyup");i.emit("keyup",n),i.emit("key",n),v[t]=!1}}))},function(e,t,n){"use strict";var r=n(37);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){"use strict";var r=n(41),o=n(16),i=n(15),a=n(10),c=i("species");e.exports=function(e){var t=r(e),n=o.f;a&&t&&!t[c]&&n(t,c,{configurable:!0,get:function(){return this}})}},function(e,t,n){"use strict";e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},function(e,t,n){"use strict";var r=n(11),o=n(118),i=n(12),a=n(53),c=n(119),u=n(162),s=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,t,n,l,f){var d,p,h,g,v,m,y,b=a(t,n,l?2:1);if(f)d=e;else{if("function"!=typeof(p=c(e)))throw TypeError("Target is not iterable");if(o(p)){for(h=0,g=i(e.length);g>h;h++)if((v=l?b(r(y=e[h])[0],y[1]):b(e[h]))&&v instanceof s)return v;return new s(!1)}d=p.call(e)}for(m=d.next;!(y=m.call(d)).done;)if("object"==typeof(v=u(d,b,y.value,l))&&v&&v instanceof s)return v;return new s(!1)}).stop=function(e){return new s(!0,e)}},function(e,t,n){"use strict";var r=n(24),o="["+n(92)+"]",i=RegExp("^"+o+o+"*"),a=RegExp(o+o+"*$"),c=function(e){return function(t){var n=String(r(t));return 1&e&&(n=n.replace(i,"")),2&e&&(n=n.replace(a,"")),n}};e.exports={start:c(1),end:c(2),trim:c(3)}},function(e,t,n){"use strict";t.__esModule=!0,t.assetMiddleware=t.resolveAsset=t.loadStyleSheet=void 0;var r=n(459),o=(0,n(25).createLogger)("assets"),i=[/v4shim/i],a={},c={},u=function l(e,t){if(void 0===t&&(t=1),!a[e]){a[e]=!0,o.log("loading stylesheet '"+e+"'");var n=(0,r.loadCSS)(e);n.addEventListener("load",(function(){if(!s(n,e))return n.parentNode.removeChild(n),n=null,a[e]=null,t>=5?void o.error("Error: Failed to load the stylesheet '"+e+"' after 5 attempts.\nIt was either not found, or you're trying to load an empty stylesheet that has no CSS rules in it."):void setTimeout((function(){return l(e,t+1)}),3e3)}))}};t.loadStyleSheet=u;var s=function(e,t){var n=e.sheet;if(n)return n.rules.length>0;for(var r=document.styleSheets,i=r.length,a=0;a<i;a++){var c=r[a];if(c.href.includes(t))return c.rules.length>0}return o.warn("Warning: stylesheet '"+t+"' was not found in the DOM"),!1};t.resolveAsset=function(e){return c[e]||e};t.assetMiddleware=function(e){return function(e){return function(t){var n=t.type,r=t.payload;if("asset/stylesheet"!==n)if("asset/mappings"!==n)e(t);else for(var o=function(){var e=s[a];if(i.some((function(t){return t.test(e)})))return"continue";var t=r[e],n=e.split(".").pop();c[e]=t,"css"===n&&u(t)},a=0,s=Object.keys(r);a<s.length;a++)o();else u(r)}}}},,,function(e,t,n){"use strict";var r=n(5),o=n(37),i="".split;e.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==o(e)?i.call(e,""):Object(e)}:Object},function(e,t,n){"use strict";var r=0,o=Math.random();e.exports=function(e){return"Symbol("+String(e===undefined?"":e)+")_"+(++r+o).toString(36)}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var r=n(31),o=n(12),i=n(47),a=function(e){return function(t,n,a){var c,u=r(t),s=o(u.length),l=i(a,s);if(e&&n!=n){for(;s>l;)if((c=u[l++])!=c)return!0}else for(;s>l;l++)if((e||l in u)&&u[l]===n)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},function(e,t,n){"use strict";var r=n(5),o=/#|\.prototype\./,i=function(e,t){var n=c[a(e)];return n==s||n!=u&&("function"==typeof t?r(t):!!t)},a=i.normalize=function(e){return String(e).replace(o,".").toLowerCase()},c=i.data={},u=i.NATIVE="N",s=i.POLYFILL="P";e.exports=i},function(e,t,n){"use strict";var r=n(154),o=n(113);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(8),o=n(58),i=n(15)("species");e.exports=function(e,t){var n;return o(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=undefined):n=undefined),new(n===undefined?Array:n)(0===t?0:t)}},function(e,t,n){"use strict";var r=n(5),o=n(15),i=n(116),a=o("species");e.exports=function(e){return i>=51||!r((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var r=n(26);e.exports=function(e,t,n){for(var o in t)r(e,o,t[o],n);return e}},function(e,t,n){"use strict";var r=n(5);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(e,t,n){"use strict";var r=n(11);e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,n){"use strict";t.__esModule=!0,t.KEY_QUOTE=t.KEY_RIGHT_BRACKET=t.KEY_BACKSLASH=t.KEY_LEFT_BRACKET=t.KEY_SLASH=t.KEY_PERIOD=t.KEY_MINUS=t.KEY_COMMA=t.KEY_EQUAL=t.KEY_SEMICOLON=t.KEY_F12=t.KEY_F11=t.KEY_F10=t.KEY_F9=t.KEY_F8=t.KEY_F7=t.KEY_F6=t.KEY_F5=t.KEY_F4=t.KEY_F3=t.KEY_F2=t.KEY_F1=t.KEY_Z=t.KEY_Y=t.KEY_X=t.KEY_W=t.KEY_V=t.KEY_U=t.KEY_T=t.KEY_S=t.KEY_R=t.KEY_Q=t.KEY_P=t.KEY_O=t.KEY_N=t.KEY_M=t.KEY_L=t.KEY_K=t.KEY_J=t.KEY_I=t.KEY_H=t.KEY_G=t.KEY_F=t.KEY_E=t.KEY_D=t.KEY_C=t.KEY_B=t.KEY_A=t.KEY_9=t.KEY_8=t.KEY_7=t.KEY_6=t.KEY_5=t.KEY_4=t.KEY_3=t.KEY_2=t.KEY_1=t.KEY_0=t.KEY_DELETE=t.KEY_INSERT=t.KEY_DOWN=t.KEY_RIGHT=t.KEY_UP=t.KEY_LEFT=t.KEY_HOME=t.KEY_END=t.KEY_PAGEDOWN=t.KEY_PAGEUP=t.KEY_SPACE=t.KEY_ESCAPE=t.KEY_CAPSLOCK=t.KEY_PAUSE=t.KEY_ALT=t.KEY_CTRL=t.KEY_SHIFT=t.KEY_ENTER=t.KEY_TAB=t.KEY_BACKSPACE=void 0;t.KEY_BACKSPACE=8;t.KEY_TAB=9;t.KEY_ENTER=13;t.KEY_SHIFT=16;t.KEY_CTRL=17;t.KEY_ALT=18;t.KEY_PAUSE=19;t.KEY_CAPSLOCK=20;t.KEY_ESCAPE=27;t.KEY_SPACE=32;t.KEY_PAGEUP=33;t.KEY_PAGEDOWN=34;t.KEY_END=35;t.KEY_HOME=36;t.KEY_LEFT=37;t.KEY_UP=38;t.KEY_RIGHT=39;t.KEY_DOWN=40;t.KEY_INSERT=45;t.KEY_DELETE=46;t.KEY_0=48;t.KEY_1=49;t.KEY_2=50;t.KEY_3=51;t.KEY_4=52;t.KEY_5=53;t.KEY_6=54;t.KEY_7=55;t.KEY_8=56;t.KEY_9=57;t.KEY_A=65;t.KEY_B=66;t.KEY_C=67;t.KEY_D=68;t.KEY_E=69;t.KEY_F=70;t.KEY_G=71;t.KEY_H=72;t.KEY_I=73;t.KEY_J=74;t.KEY_K=75;t.KEY_L=76;t.KEY_M=77;t.KEY_N=78;t.KEY_O=79;t.KEY_P=80;t.KEY_Q=81;t.KEY_R=82;t.KEY_S=83;t.KEY_T=84;t.KEY_U=85;t.KEY_V=86;t.KEY_W=87;t.KEY_X=88;t.KEY_Y=89;t.KEY_Z=90;t.KEY_F1=112;t.KEY_F2=113;t.KEY_F3=114;t.KEY_F4=115;t.KEY_F5=116;t.KEY_F6=117;t.KEY_F7=118;t.KEY_F8=119;t.KEY_F9=120;t.KEY_F10=121;t.KEY_F11=122;t.KEY_F12=123;t.KEY_SEMICOLON=186;t.KEY_EQUAL=187;t.KEY_COMMA=188;t.KEY_MINUS=189;t.KEY_PERIOD=190;t.KEY_SLASH=191;t.KEY_LEFT_BRACKET=219;t.KEY_BACKSLASH=220;t.KEY_RIGHT_BRACKET=221;t.KEY_QUOTE=222},function(e,t,n){"use strict";function r(e,t,n,r,o,i,a){try{var c=e[i](a),u=c.value}catch(s){return void n(s)}c.done?t(u):Promise.resolve(u).then(r,o)}function o(e){return function(){var t=this,n=arguments;return new Promise((function(o,i){var a=e.apply(t,n);function c(e){r(a,o,i,c,u,"next",e)}function u(e){r(a,o,i,c,u,"throw",e)}c(undefined)}))}}t.__esModule=!0,t.storage=t.IMPL_INDEXED_DB=t.IMPL_LOCAL_STORAGE=t.IMPL_MEMORY=void 0;t.IMPL_MEMORY=0;t.IMPL_LOCAL_STORAGE=1;t.IMPL_INDEXED_DB=2;var i=function(e){return function(){try{return Boolean(e())}catch(t){return!1}}},a=i((function(){return window.localStorage&&window.localStorage.getItem})),c=i((function(){return(window.indexedDB||window.msIndexedDB)&&(window.IDBTransaction||window.msIDBTransaction)})),u=function(){function e(){this.impl=0,this.store={}}var t=e.prototype;return t.get=function(e){return this.store[e]},t.set=function(e,t){this.store[e]=t},t.remove=function(e){this.store[e]=undefined},t.clear=function(){this.store={}},e}(),s=function(){function e(){this.impl=1}var t=e.prototype;return t.get=function(e){var t=localStorage.getItem(e);if("string"==typeof t)return JSON.parse(t)},t.set=function(e,t){localStorage.setItem(e,JSON.stringify(t))},t.remove=function(e){localStorage.removeItem(e)},t.clear=function(){localStorage.clear()},e}(),l=function(){function e(){this.impl=2,this.dbPromise=new Promise((function(e,t){var n=(window.indexedDB||window.msIndexedDB).open("tgui",1);n.onupgradeneeded=function(){try{n.result.createObjectStore("storage-v1")}catch(e){t(new Error("Failed to upgrade IDB: "+n.error))}},n.onsuccess=function(){return e(n.result)},n.onerror=function(){t(new Error("Failed to open IDB: "+n.error))}}))}var t=e.prototype;return t.getStore=function(e){return this.dbPromise.then((function(t){return t.transaction("storage-v1",e).objectStore("storage-v1")}))},t.get=function(){var e=o(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getStore("readonly");case 2:return n=t.sent,t.abrupt("return",new Promise((function(t,r){var o=n.get(e);o.onsuccess=function(){return t(o.result)},o.onerror=function(){return r(o.error)}})));case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.set=function(){var e=o(regeneratorRuntime.mark((function t(e,n){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return null===n&&(n=undefined),t.next=3,this.getStore("readwrite");case 3:t.sent.put(n,e);case 5:case"end":return t.stop()}}),t,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.remove=function(){var e=o(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getStore("readwrite");case 2:t.sent["delete"](e);case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.clear=function(){var e=o(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getStore("readwrite");case 2:e.sent.clear();case 4:case"end":return e.stop()}}),t,this)})));return function(){return e.apply(this,arguments)}}(),e}(),f=new(function(){function e(){this.backendPromise=o(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!c()){e.next=10;break}return e.prev=1,t=new l,e.next=5,t.dbPromise;case 5:return e.abrupt("return",t);case 8:e.prev=8,e.t0=e["catch"](1);case 10:if(!a()){e.next=12;break}return e.abrupt("return",new s);case 12:return e.abrupt("return",new u);case 13:case"end":return e.stop()}}),e,null,[[1,8]])})))()}var t=e.prototype;return t.get=function(){var e=o(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return n=t.sent,t.abrupt("return",n.get(e));case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.set=function(){var e=o(regeneratorRuntime.mark((function t(e,n){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return r=t.sent,t.abrupt("return",r.set(e,n));case 4:case"end":return t.stop()}}),t,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.remove=function(){var e=o(regeneratorRuntime.mark((function t(e){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return n=t.sent,t.abrupt("return",n.remove(e));case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.clear=function(){var e=o(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return e=t.sent,t.abrupt("return",e.clear());case 4:case"end":return t.stop()}}),t,this)})));return function(){return e.apply(this,arguments)}}(),e}());t.storage=f},,function(e,t,n){"use strict";var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(o){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);t.f=i?function(e){var t=o(this,e);return!!t&&t.enumerable}:r},function(e,t,n){"use strict";var r=n(111),o=n(67),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e,t,n){"use strict";var r=n(41);e.exports=r("navigator","userAgent")||""},function(e,t,n){"use strict";var r=n(120),o=n(37),i=n(15)("toStringTag"),a="Arguments"==o(function(){return arguments}());e.exports=r?o:function(e){var t,n,r;return e===undefined?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(n){}}(t=Object(e),i))?n:a?o(t):"Object"==(r=o(t))&&"function"==typeof t.callee?"Arguments":r}},function(e,t,n){"use strict";var r=n(15)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},"return":function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(c){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var i={};i[r]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(c){}return n}},function(e,t,n){"use strict";var r=n(28),o=n(18),i=n(66),a=n(12),c=function(e){return function(t,n,c,u){r(n);var s=o(t),l=i(s),f=a(s.length),d=e?f-1:0,p=e?-1:1;if(c<2)for(;;){if(d in l){u=l[d],d+=p;break}if(d+=p,e?d<0:f<=d)throw TypeError("Reduce of empty array with no initial value")}for(;e?d>=0:f>d;d+=p)d in l&&(u=n(u,l[d],d,s));return u}};e.exports={left:c(!1),right:c(!0)}},function(e,t,n){"use strict";var r=n(7),o=n(10),i=n(123),a=n(32),c=n(75),u=n(5),s=n(60),l=n(38),f=n(12),d=n(168),p=n(268),h=n(42),g=n(55),v=n(52).f,m=n(16).f,y=n(117),b=n(49),x=n(33),w=x.get,_=x.set,E=r.ArrayBuffer,k=E,S=r.DataView,C=S&&S.prototype,N=Object.prototype,A=r.RangeError,T=p.pack,O=p.unpack,I=function(e){return[255&e]},M=function(e){return[255&e,e>>8&255]},L=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},V=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},R=function(e){return T(e,23,4)},P=function(e){return T(e,52,8)},B=function(e,t){m(e.prototype,t,{get:function(){return w(this)[t]}})},D=function(e,t,n,r){var o=d(n),i=w(e);if(o+t>i.byteLength)throw A("Wrong index");var a=w(i.buffer).bytes,c=o+i.byteOffset,u=a.slice(c,c+t);return r?u:u.reverse()},j=function(e,t,n,r,o,i){var a=d(n),c=w(e);if(a+t>c.byteLength)throw A("Wrong index");for(var u=w(c.buffer).bytes,s=a+c.byteOffset,l=r(+o),f=0;f<t;f++)u[s+f]=l[i?f:t-f-1]};if(i){if(!u((function(){E(1)}))||!u((function(){new E(-1)}))||u((function(){return new E,new E(1.5),new E(NaN),"ArrayBuffer"!=E.name}))){for(var F,K=(k=function(e){return s(this,k),new E(d(e))}).prototype=E.prototype,z=v(E),Y=0;z.length>Y;)(F=z[Y++])in k||a(k,F,E[F]);K.constructor=k}g&&h(C)!==N&&g(C,N);var U=new S(new k(2)),$=C.setInt8;U.setInt8(0,2147483648),U.setInt8(1,2147483649),!U.getInt8(0)&&U.getInt8(1)||c(C,{setInt8:function(e,t){$.call(this,e,t<<24>>24)},setUint8:function(e,t){$.call(this,e,t<<24>>24)}},{unsafe:!0})}else k=function(e){s(this,k,"ArrayBuffer");var t=d(e);_(this,{bytes:y.call(new Array(t),0),byteLength:t}),o||(this.byteLength=t)},S=function(e,t,n){s(this,S,"DataView"),s(e,k,"DataView");var r=w(e).byteLength,i=l(t);if(i<0||i>r)throw A("Wrong offset");if(i+(n=n===undefined?r-i:f(n))>r)throw A("Wrong length");_(this,{buffer:e,byteLength:n,byteOffset:i}),o||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},o&&(B(k,"byteLength"),B(S,"buffer"),B(S,"byteLength"),B(S,"byteOffset")),c(S.prototype,{getInt8:function(e){return D(this,1,e)[0]<<24>>24},getUint8:function(e){return D(this,1,e)[0]},getInt16:function(e){var t=D(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=D(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return V(D(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return V(D(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return O(D(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return O(D(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){j(this,1,e,I,t)},setUint8:function(e,t){j(this,1,e,I,t)},setInt16:function(e,t){j(this,2,e,M,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){j(this,2,e,M,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){j(this,4,e,L,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){j(this,4,e,L,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){j(this,4,e,R,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){j(this,8,e,P,t,arguments.length>2?arguments[2]:undefined)}});b(k,"ArrayBuffer"),b(S,"DataView"),e.exports={ArrayBuffer:k,DataView:S}},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(70),a=n(26),c=n(56),u=n(61),s=n(60),l=n(8),f=n(5),d=n(86),p=n(49),h=n(90);e.exports=function(e,t,n){var g=-1!==e.indexOf("Map"),v=-1!==e.indexOf("Weak"),m=g?"set":"add",y=o[e],b=y&&y.prototype,x=y,w={},_=function(e){var t=b[e];a(b,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(v&&!l(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return v&&!l(e)?undefined:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(v&&!l(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(i(e,"function"!=typeof y||!(v||b.forEach&&!f((function(){(new y).entries().next()})))))x=n.getConstructor(t,e,g,m),c.REQUIRED=!0;else if(i(e,!0)){var E=new x,k=E[m](v?{}:-0,1)!=E,S=f((function(){E.has(1)})),C=d((function(e){new y(e)})),N=!v&&f((function(){for(var e=new y,t=5;t--;)e[m](t,t);return!e.has(-0)}));C||((x=t((function(t,n){s(t,x,e);var r=h(new y,t,x);return n!=undefined&&u(n,r[m],r,g),r}))).prototype=b,b.constructor=x),(S||N)&&(_("delete"),_("has"),g&&_("get")),(N||k)&&_(m),v&&b.clear&&delete b.clear}return w[e]=x,r({global:!0,forced:x!=y},w),p(x,e),v||n.setStrong(x,e,g),x}},function(e,t,n){"use strict";var r=n(8),o=n(55);e.exports=function(e,t,n){var i,a;return o&&"function"==typeof(i=t.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(e,a),e}},function(e,t,n){"use strict";var r=Math.expm1,o=Math.exp;e.exports=!r||r(10)>22025.465794806718||r(10)<22025.465794806718||-2e-17!=r(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:o(e)-1}:r},function(e,t,n){"use strict";e.exports="\t\n\x0B\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},function(e,t,n){"use strict";var r=n(43),o=n(7),i=n(5);e.exports=r||!i((function(){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete o[e]}))},function(e,t,n){"use strict";var r=n(8),o=n(37),i=n(15)("match");e.exports=function(e){var t;return r(e)&&((t=e[i])!==undefined?!!t:"RegExp"==o(e))}},function(e,t,n){"use strict";var r=n(5);function o(e,t){return RegExp(e,t)}t.UNSUPPORTED_Y=r((function(){var e=o("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),t.BROKEN_CARET=r((function(){var e=o("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},function(e,t,n){"use strict";var r,o,i=n(77),a=n(95),c=RegExp.prototype.exec,u=String.prototype.replace,s=c,l=(r=/a/,o=/b*/g,c.call(r,"a"),c.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),f=a.UNSUPPORTED_Y||a.BROKEN_CARET,d=/()??/.exec("")[1]!==undefined;(l||d||f)&&(s=function(e){var t,n,r,o,a=this,s=f&&a.sticky,p=i.call(a),h=a.source,g=0,v=e;return s&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),v=String(e).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==e[a.lastIndex-1])&&(h="(?: "+h+")",v=" "+v,g++),n=new RegExp("^(?:"+h+")",p)),d&&(n=new RegExp("^"+h+"$(?!\\s)",p)),l&&(t=a.lastIndex),r=c.call(s?n:a,v),s?r?(r.input=r.input.slice(g),r[0]=r[0].slice(g),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:l&&r&&(a.lastIndex=a.global?r.index+r[0].length:t),d&&r&&r.length>1&&u.call(r[0],n,(function(){for(o=1;o<arguments.length-2;o++)arguments[o]===undefined&&(r[o]=undefined)})),r}),e.exports=s},function(e,t,n){"use strict";n(129);var r=n(26),o=n(5),i=n(15),a=n(96),c=n(32),u=i("species"),s=!o((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),l="$0"==="a".replace(/./,"$0"),f=i("replace"),d=!!/./[f]&&""===/./[f]("a","$0"),p=!o((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,f){var h=i(e),g=!o((function(){var t={};return t[h]=function(){return 7},7!=""[e](t)})),v=g&&!o((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[u]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t}));if(!g||!v||"replace"===e&&(!s||!l||d)||"split"===e&&!p){var m=/./[h],y=n(h,""[e],(function(e,t,n,r,o){return t.exec===a?g&&!o?{done:!0,value:m.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:l,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:d}),b=y[0],x=y[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return x.call(e,this,t)}:function(e){return x.call(e,this)})}f&&c(RegExp.prototype[h],"sham",!0)}},function(e,t,n){"use strict";var r=n(130).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},function(e,t,n){"use strict";var r=n(37),o=n(96);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var i=n.call(e,t);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(e,t)}},function(e,t,n){"use strict";var r;t.__esModule=!0,t.perf=void 0;null==(r=window.performance)||r.now;var o={mark:function(e,t){0},measure:function(e,t){}};t.perf=o},function(e,t,n){"use strict";t.__esModule=!0,t.setupHotReloading=t.sendLogEntry=t.sendMessage=t.subscribe=void 0;var r=[];t.subscribe=function(e){return r.push(e)};t.sendMessage=function(e){};t.sendLogEntry=function(e,t){};t.setupHotReloading=function(){0}},function(e,t,n){"use strict";(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(460),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||void 0,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||void 0}).call(this,n(81))},function(e,t,n){"use strict";t.__esModule=!0,t.vecNormalize=t.vecLength=t.vecInverse=t.vecScale=t.vecDivide=t.vecMultiply=t.vecSubtract=t.vecAdd=void 0;var r=n(14),o=function(e,t){return e+t},i=function(e,t){return e-t},a=function(e,t){return e*t},c=function(e,t){return e/t};t.vecAdd=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,r.reduce)((function(e,t){return(0,r.zipWith)(o)(e,t)}))(t)};t.vecSubtract=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,r.reduce)((function(e,t){return(0,r.zipWith)(i)(e,t)}))(t)};t.vecMultiply=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,r.reduce)((function(e,t){return(0,r.zipWith)(a)(e,t)}))(t)};var u=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,r.reduce)((function(e,t){return(0,r.zipWith)(c)(e,t)}))(t)};t.vecDivide=u;t.vecScale=function(e,t){return(0,r.map)((function(e){return e*t}))(e)};t.vecInverse=function(e){return(0,r.map)((function(e){return-e}))(e)};var s=function(e){return Math.sqrt((0,r.reduce)(o)((0,r.zipWith)(a)(e,e)))};t.vecLength=s;t.vecNormalize=function(e){return u(e,s(e))}},function(e,t,n){"use strict";t.__esModule=!0,t.Icon=void 0;var r=n(0),o=n(6),i=n(17);var a=/-o$/,c=function(e){var t=e.name,n=e.size,c=e.spin,u=e.className,s=e.style,l=void 0===s?{}:s,f=e.rotation,d=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["name","size","spin","className","style","rotation"]);n&&(l["font-size"]=100*n+"%"),"number"==typeof f&&(l.transform="rotate("+f+"deg)");var p=a.test(t),h=t.replace(a,"");return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({as:"i",className:(0,o.classes)([u,p?"far":"fas","fa-"+h,c&&"fa-spin"]),style:l},d)))};t.Icon=c,c.defaultHooks=o.pureComponentHooks},,,,function(e,t,n){"use strict";var r=n(7),o=n(8),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},function(e,t,n){"use strict";var r=n(7),o=n(32);e.exports=function(e,t){try{o(r,e,t)}catch(n){r[e]=t}return t}},function(e,t,n){"use strict";var r=n(150),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return o.call(e)}),e.exports=r.inspectSource},function(e,t,n){"use strict";var r=n(43),o=n(150);(e.exports=function(e,t){return o[e]||(o[e]=t!==undefined?t:{})})("versions",[]).push({version:"3.6.5",mode:r?"pure":"global",copyright:"\xa9 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t,n){"use strict";var r=n(41),o=n(52),i=n(114),a=n(11);e.exports=r("Reflect","ownKeys")||function(e){var t=o.f(a(e)),n=i.f;return n?t.concat(n(e)):t}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var r=n(5);e.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},function(e,t,n){"use strict";var r,o,i=n(7),a=n(84),c=i.process,u=c&&c.versions,s=u&&u.v8;s?o=(r=s.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),e.exports=o&&+o},function(e,t,n){"use strict";var r=n(18),o=n(47),i=n(12);e.exports=function(e){for(var t=r(this),n=i(t.length),a=arguments.length,c=o(a>1?arguments[1]:undefined,n),u=a>2?arguments[2]:undefined,s=u===undefined?n:o(u,n);s>c;)t[c++]=e;return t}},function(e,t,n){"use strict";var r=n(15),o=n(74),i=r("iterator"),a=Array.prototype;e.exports=function(e){return e!==undefined&&(o.Array===e||a[i]===e)}},function(e,t,n){"use strict";var r=n(85),o=n(74),i=n(15)("iterator");e.exports=function(e){if(e!=undefined)return e[i]||e["@@iterator"]||o[r(e)]}},function(e,t,n){"use strict";var r={};r[n(15)("toStringTag")]="z",e.exports="[object z]"===String(r)},function(e,t,n){"use strict";var r=n(4),o=n(164),i=n(42),a=n(55),c=n(49),u=n(32),s=n(26),l=n(15),f=n(43),d=n(74),p=n(165),h=p.IteratorPrototype,g=p.BUGGY_SAFARI_ITERATORS,v=l("iterator"),m=function(){return this};e.exports=function(e,t,n,l,p,y,b){o(n,t,l);var x,w,_,E=function(e){if(e===p&&A)return A;if(!g&&e in C)return C[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},k=t+" Iterator",S=!1,C=e.prototype,N=C[v]||C["@@iterator"]||p&&C[p],A=!g&&N||E(p),T="Array"==t&&C.entries||N;if(T&&(x=i(T.call(new e)),h!==Object.prototype&&x.next&&(f||i(x)===h||(a?a(x,h):"function"!=typeof x[v]&&u(x,v,m)),c(x,k,!0,!0),f&&(d[k]=m))),"values"==p&&N&&"values"!==N.name&&(S=!0,A=function(){return N.call(this)}),f&&!b||C[v]===A||u(C,v,A),d[t]=A,p)if(w={values:E("values"),keys:y?A:E("keys"),entries:E("entries")},b)for(_ in w)(g||S||!(_ in C))&&s(C,_,w[_]);else r({target:t,proto:!0,forced:g||S},w);return w}},function(e,t,n){"use strict";var r=n(5);e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},function(e,t,n){"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},function(e,t,n){"use strict";var r=n(12),o=n(125),i=n(24),a=Math.ceil,c=function(e){return function(t,n,c){var u,s,l=String(i(t)),f=l.length,d=c===undefined?" ":String(c),p=r(n);return p<=f||""==d?l:(u=p-f,(s=o.call(d,a(u/d.length))).length>u&&(s=s.slice(0,u)),e?l+s:s+l)}};e.exports={start:c(!1),end:c(!0)}},function(e,t,n){"use strict";var r=n(38),o=n(24);e.exports="".repeat||function(e){var t=String(o(this)),n="",i=r(e);if(i<0||i==Infinity)throw RangeError("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(t+=t))1&i&&(n+=t);return n}},function(e,t,n){"use strict";e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,t,n){"use strict";var r,o,i,a=n(7),c=n(5),u=n(37),s=n(53),l=n(157),f=n(108),d=n(177),p=a.location,h=a.setImmediate,g=a.clearImmediate,v=a.process,m=a.MessageChannel,y=a.Dispatch,b=0,x={},w=function(e){if(x.hasOwnProperty(e)){var t=x[e];delete x[e],t()}},_=function(e){return function(){w(e)}},E=function(e){w(e.data)},k=function(e){a.postMessage(e+"",p.protocol+"//"+p.host)};h&&g||(h=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return x[++b]=function(){("function"==typeof e?e:Function(e)).apply(undefined,t)},r(b),b},g=function(e){delete x[e]},"process"==u(v)?r=function(e){v.nextTick(_(e))}:y&&y.now?r=function(e){y.now(_(e))}:m&&!d?(i=(o=new m).port2,o.port1.onmessage=E,r=s(i.postMessage,i,1)):!a.addEventListener||"function"!=typeof postMessage||a.importScripts||c(k)||"file:"===p.protocol?r="onreadystatechange"in f("script")?function(e){l.appendChild(f("script")).onreadystatechange=function(){l.removeChild(this),w(e)}}:function(e){setTimeout(_(e),0)}:(r=k,a.addEventListener("message",E,!1))),e.exports={set:h,clear:g}},function(e,t,n){"use strict";var r=n(28),o=function(e){var t,n;this.promise=new e((function(e,r){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=r(t),this.reject=r(n)};e.exports.f=function(e){return new o(e)}},function(e,t,n){"use strict";var r=n(4),o=n(96);r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(e,t,n){"use strict";var r=n(38),o=n(24),i=function(e){return function(t,n){var i,a,c=String(o(t)),u=r(n),s=c.length;return u<0||u>=s?e?"":undefined:(i=c.charCodeAt(u))<55296||i>56319||u+1===s||(a=c.charCodeAt(u+1))<56320||a>57343?e?c.charAt(u):i:e?c.slice(u,u+2):a-56320+(i-55296<<10)+65536}};e.exports={codeAt:i(!1),charAt:i(!0)}},function(e,t,n){"use strict";var r=n(94);e.exports=function(e){if(r(e))throw TypeError("The method doesn't accept regular expressions");return e}},function(e,t,n){"use strict";var r=n(15)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[r]=!1,"/./"[e](t)}catch(o){}}return!1}},function(e,t,n){"use strict";var r=n(5),o=n(92);e.exports=function(e){return r((function(){return!!o[e]()||"\u200b\x85\u180e"!="\u200b\x85\u180e"[e]()||o[e].name!==e}))}},function(e,t,n){"use strict";var r=n(7),o=n(5),i=n(86),a=n(13).NATIVE_ARRAY_BUFFER_VIEWS,c=r.ArrayBuffer,u=r.Int8Array;e.exports=!a||!o((function(){u(1)}))||!o((function(){new u(-1)}))||!i((function(e){new u,new u(null),new u(1.5),new u(e)}),!0)||o((function(){return 1!==new u(new c(2),1,undefined).length}))},function(e,t,n){"use strict";t.__esModule=!0,t.setupHotKeys=t.releaseHeldKeys=t.releaseHotKey=t.acquireHotKey=void 0;var r=n(78),o=n(57),i=(0,n(25).createLogger)("hotkeys"),a={},c=[r.KEY_ESCAPE,r.KEY_ENTER,r.KEY_SPACE,r.KEY_TAB,r.KEY_CTRL,r.KEY_SHIFT,r.KEY_F5],u={},s=function(e){if(!e.ctrl||e.code!==r.KEY_F5&&e.code!==r.KEY_R){if(!(e.ctrl&&e.code===r.KEY_F||e.event.defaultPrevented||e.isModifierKey()||c.includes(e.code))){var t,n=16===(t=e.code)?"Shift":17===t?"Ctrl":18===t?"Alt":33===t?"Northeast":34===t?"Southeast":35===t?"Southwest":36===t?"Northwest":37===t?"West":38===t?"North":39===t?"East":40===t?"South":45===t?"Insert":46===t?"Delete":t>=48&&t<=57||t>=65&&t<=90?String.fromCharCode(t):t>=96&&t<=105?"Numpad"+(t-96):t>=112&&t<=123?"F"+(t-111):188===t?",":189===t?"-":190===t?".":void 0;if(n){var o=a[n];if(o)return i.debug("macro",o),Byond.command(o);if(e.isDown()&&!u[n]){u[n]=!0;var s='KeyDown "'+n+'"';return i.debug(s),Byond.command(s)}if(e.isUp()&&u[n]){u[n]=!1;var l='KeyUp "'+n+'"';return i.debug(l),Byond.command(l)}}}}else location.reload()};t.acquireHotKey=function(e){c.push(e)};t.releaseHotKey=function(e){var t=c.indexOf(e);t>=0&&c.splice(t,1)};var l=function(){for(var e=0,t=Object.keys(u);e<t.length;e++){var n=t[e];u[n]&&(u[n]=!1,i.log('releasing key "'+n+'"'),Byond.command('KeyUp "'+n+'"'))}};t.releaseHeldKeys=l;t.setupHotKeys=function(){Byond.winget("default.*").then((function(e){for(var t={},n=0,r=Object.keys(e);n<r.length;n++){var o=r[n],c=o.split("."),u=c[1],s=c[2];u&&s&&(t[u]||(t[u]={}),t[u][s]=e[o])}for(var l=/\\"/g,f=function(e){return e.substring(1,e.length-1).replace(l,'"')},d=0,p=Object.keys(t);d<p.length;d++){var h=t[p[d]],g=f(h.name);a[g]=f(h.command)}i.debug("loaded macros",a)})),o.globalEvents.on("window-blur",(function(){l()})),o.globalEvents.on("key",(function(e){s(e)}))}},function(e,t,n){"use strict";t.__esModule=!0,t.createRenderer=t.suspendRenderer=t.resumeRenderer=void 0;var r,o=n(100),i=n(0),a=((0,n(25).createLogger)("renderer"),!0),c=!1;t.resumeRenderer=function(){a=a||"resumed",c=!1};t.suspendRenderer=function(){c=!0};t.createRenderer=function(e){return function(){o.perf.mark("render/start"),r||(r=document.getElementById("react-root")),(0,i.render)(e(),r),o.perf.mark("render/finish"),c||a&&(a=!1)}}},function(e,t,n){"use strict";t.__esModule=!0,t.debugReducer=t.relayMiddleware=t.debugMiddleware=t.KitchenSink=t.useDebug=void 0;var r=n(462);t.useDebug=r.useDebug;var o=n(463);t.KitchenSink=o.KitchenSink;var i=n(485);t.debugMiddleware=i.debugMiddleware,t.relayMiddleware=i.relayMiddleware;var a=n(486);t.debugReducer=a.debugReducer},function(e,t,n){"use strict";t.__esModule=!0,t.AnimatedNumber=void 0;var r=n(9),o=n(0);var i=function(e){return"number"==typeof e&&Number.isFinite(e)&&!Number.isNaN(e)},a=function(e){var t,n;function o(t){var n;return(n=e.call(this,t)||this).timer=null,n.state={value:0},i(t.initial)?n.state.value=t.initial:i(t.value)&&(n.state.value=Number(t.value)),n}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var a=o.prototype;return a.tick=function(){var e=this.props,t=this.state,n=Number(t.value),r=Number(e.value);if(i(r)){var o=.5*n+.5*r;this.setState({value:o})}},a.componentDidMount=function(){var e=this;this.timer=setInterval((function(){return e.tick()}),50)},a.componentWillUnmount=function(){clearTimeout(this.timer)},a.render=function(){var e=this.props,t=this.state,n=e.format,o=e.children,a=t.value,c=e.value;if(!i(c))return c||null;var u=a;if(n)u=n(a);else{var s=String(c).split(".")[1],l=s?s.length:0;u=(0,r.toFixed)(a,(0,r.clamp)(l,0,8))}return"function"==typeof o?o(u,a):u},o}(o.Component);t.AnimatedNumber=a},function(e,t,n){"use strict";t.__esModule=!0,t.DraggableControl=void 0;var r=n(0),o=n(9),i=n(6),a=n(138);var c=function(e,t){return e.screenX*t[0]+e.screenY*t[1]},u=function(e){var t,n;function i(t){var n;return(n=e.call(this,t)||this).inputRef=(0,r.createRef)(),n.state={value:t.value,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props,r=t.value,o=t.dragMatrix;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:c(e,o),value:r,internalValue:r}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,r=t.dragging,o=t.value,i=n.props.onDrag;r&&i&&i(e,o)}),n.props.updateRate||400),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,r=t.minValue,i=t.maxValue,a=t.step,u=t.stepPixelSize,s=t.dragMatrix;n.setState((function(t){var n=Object.assign({},t),l=c(e,s)-n.origin;if(t.dragging){var f=Number.isFinite(r)?r%a:0;n.internalValue=(0,o.clamp)(n.internalValue+l*a/u,r-a,i+a),n.value=(0,o.clamp)(n.internalValue-n.internalValue%a+f,r,i),n.origin=c(e,s)}else Math.abs(l)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,r=t.onChange,o=t.onDrag,i=n.state,a=i.dragging,c=i.value,u=i.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!a,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a)n.suppressFlicker(),r&&r(e,c),o&&o(e,c);else if(n.inputRef){var s=n.inputRef.current;s.value=u;try{s.focus(),s.select()}catch(l){}}},n}return n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.prototype.render=function(){var e=this,t=this.state,n=t.dragging,i=t.editing,c=t.value,u=t.suppressingFlicker,s=this.props,l=s.animated,f=s.value,d=s.unit,p=s.minValue,h=s.maxValue,g=s.format,v=s.onChange,m=s.onDrag,y=s.children,b=s.height,x=s.lineHeight,w=s.fontSize,_=f;(n||u)&&(_=c);var E=function(e){return e+(d?" "+d:"")},k=l&&!n&&!u&&(0,r.createComponentVNode)(2,a.AnimatedNumber,{value:_,format:g,children:E})||E(g?g(_):_),S=(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:i?undefined:"none",height:b,"line-height":x,"font-size":w},onBlur:function(t){if(i){var n=(0,o.clamp)(parseFloat(t.target.value),p,h);Number.isNaN(n)?e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),v&&v(t,n),m&&m(t,n))}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,o.clamp)(parseFloat(t.target.value),p,h);return Number.isNaN(n)?void e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),v&&v(t,n),void(m&&m(t,n)))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef);return y({dragging:n,editing:i,value:f,displayValue:_,displayElement:k,inputElement:S,handleDragStart:this.handleDragStart})},i}(r.Component);t.DraggableControl=u,u.defaultHooks=i.pureComponentHooks,u.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50,dragMatrix:[1,0]}},function(e,t,n){"use strict";t.__esModule=!0,t.NumberInput=void 0;var r=n(0),o=n(9),i=n(6),a=n(138),c=n(17);var u=function(e){var t,n;function u(t){var n;n=e.call(this,t)||this;var i=t.value;return n.inputRef=(0,r.createRef)(),n.state={value:i,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props.value;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:e.screenY,value:t,internalValue:t}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,r=t.dragging,o=t.value,i=n.props.onDrag;r&&i&&i(e,o)}),n.props.updateRate||400),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,r=t.minValue,i=t.maxValue,a=t.step,c=t.stepPixelSize;n.setState((function(t){var n=Object.assign({},t),u=n.origin-e.screenY;if(t.dragging){var s=Number.isFinite(r)?r%a:0;n.internalValue=(0,o.clamp)(n.internalValue+u*a/c,r-a,i+a),n.value=(0,o.clamp)(n.internalValue-n.internalValue%a+s,r,i),n.origin=e.screenY}else Math.abs(u)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,r=t.onChange,o=t.onDrag,i=n.state,a=i.dragging,c=i.value,u=i.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!a,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a)n.suppressFlicker(),r&&r(e,c),o&&o(e,c);else if(n.inputRef){var s=n.inputRef.current;s.value=u;try{s.focus(),s.select()}catch(l){}}},n}return n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,u.prototype.render=function(){var e=this,t=this.state,n=t.dragging,u=t.editing,s=t.value,l=t.suppressingFlicker,f=this.props,d=f.className,p=f.fluid,h=f.animated,g=f.value,v=f.unit,m=f.minValue,y=f.maxValue,b=f.height,x=f.width,w=f.lineHeight,_=f.fontSize,E=f.format,k=f.onChange,S=f.onDrag,C=g;(n||l)&&(C=s);var N=function(e){return(0,r.createVNode)(1,"div","NumberInput__content",e+(v?" "+v:""),0,{unselectable:Byond.IS_LTE_IE8})},A=h&&!n&&!l&&(0,r.createComponentVNode)(2,a.AnimatedNumber,{value:C,format:E,children:N})||N(E?E(C):C);return(0,r.createComponentVNode)(2,c.Box,{className:(0,i.classes)(["NumberInput",p&&"NumberInput--fluid",d]),minWidth:x,minHeight:b,lineHeight:w,fontSize:_,onMouseDown:this.handleDragStart,children:[(0,r.createVNode)(1,"div","NumberInput__barContainer",(0,r.createVNode)(1,"div","NumberInput__bar",null,1,{style:{height:(0,o.clamp)((C-m)/(y-m)*100,0,100)+"%"}}),2),A,(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:u?undefined:"none",height:b,"line-height":w,"font-size":_},onBlur:function(t){if(u){var n=(0,o.clamp)(parseFloat(t.target.value),m,y);Number.isNaN(n)?e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),k&&k(t,n),S&&S(t,n))}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,o.clamp)(parseFloat(t.target.value),m,y);return Number.isNaN(n)?void e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),k&&k(t,n),void(S&&S(t,n)))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef)]})},u}(r.Component);t.NumberInput=u,u.defaultHooks=i.pureComponentHooks,u.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50}},function(e,t,n){"use strict";t.__esModule=!0,t.Layout=void 0;var r=n(0),o=n(6),i=n(17),a=n(57);function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var u=function(e){var t=e.className,n=e.theme,a=void 0===n?"nanotrasen":n,u=e.children,s=c(e,["className","theme","children"]);return(0,r.createVNode)(1,"div","theme-"+a,(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Layout",t].concat((0,i.computeBoxClassName)(s))),u,0,Object.assign({},(0,i.computeBoxProps)(s)))),2)};t.Layout=u;var s=function(e){var t=e.className,n=e.scrollable,a=e.children,u=c(e,["className","scrollable","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Layout__content",n&&"Layout__content--scrollable",t].concat((0,i.computeBoxClassName)(u))),a,0,Object.assign({},(0,i.computeBoxProps)(u))))};s.defaultHooks={onComponentDidMount:function(e){return(0,a.addScrollableNode)(e)},onComponentWillUnmount:function(e){return(0,a.removeScrollableNode)(e)}},u.Content=s},,,,,,,function(e,t,n){"use strict";n(223),n(224),n(225),n(226),n(227),n(228),n(229),n(230),n(231),n(232),n(233),n(234),n(235),n(236),n(237),n(238),n(239),n(240),n(241),n(242),n(243),n(244),n(245),n(246),n(247),n(249),n(251),n(252),n(253),n(163),n(254),n(255),n(256),n(257),n(258),n(259),n(260),n(261),n(262),n(263),n(264),n(265),n(266),n(267),n(269),n(270),n(271),n(272),n(273),n(275),n(276),n(278),n(279),n(280),n(281),n(282),n(283),n(284),n(285),n(286),n(287),n(288),n(289),n(290),n(291),n(292),n(293),n(295),n(296),n(297),n(298),n(299),n(300),n(301),n(302),n(303),n(304),n(305),n(306),n(307),n(309),n(310),n(311),n(312),n(313),n(314),n(316),n(317),n(319),n(321),n(322),n(323),n(324),n(325),n(326),n(327),n(328),n(329),n(330),n(331),n(332),n(333),n(334),n(335),n(336),n(337),n(338),n(339),n(340),n(341),n(342),n(343),n(345),n(346),n(347),n(349),n(350),n(351),n(352),n(353),n(354),n(355),n(356),n(357),n(358),n(359),n(360),n(361),n(362),n(363),n(364),n(129),n(365),n(366),n(367),n(368),n(369),n(370),n(371),n(372),n(373),n(374),n(375),n(376),n(377),n(378),n(379),n(380),n(381),n(382),n(383),n(384),n(385),n(386),n(387),n(388),n(389),n(390),n(391),n(392),n(393),n(394),n(395),n(396),n(397),n(398),n(399),n(400),n(401),n(403),n(404),n(405),n(406),n(407),n(408),n(409),n(410),n(411),n(412),n(413),n(414),n(415),n(416),n(417),n(418),n(419),n(420),n(421),n(422),n(423),n(424),n(425),n(426),n(427),n(428),n(429),n(430),n(431),n(432),n(433),n(434),n(435),n(436),n(437),n(438),n(439),n(440),n(441),n(442),n(443),n(444),n(445),n(446)},function(e,t,n){"use strict";var r=n(10),o=n(5),i=n(108);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var r=n(7),o=n(109),i=r["__core-js_shared__"]||o("__core-js_shared__",{});e.exports=i},function(e,t,n){"use strict";var r=n(7),o=n(110),i=r.WeakMap;e.exports="function"==typeof i&&/native code/.test(o(i))},function(e,t,n){"use strict";var r=n(20),o=n(112),i=n(23),a=n(16);e.exports=function(e,t){for(var n=o(t),c=a.f,u=i.f,s=0;s<n.length;s++){var l=n[s];r(e,l)||c(e,l,u(t,l))}}},function(e,t,n){"use strict";var r=n(7);e.exports=r},function(e,t,n){"use strict";var r=n(20),o=n(31),i=n(69).indexOf,a=n(68);e.exports=function(e,t){var n,c=o(e),u=0,s=[];for(n in c)!r(a,n)&&r(c,n)&&s.push(n);for(;t.length>u;)r(c,n=t[u++])&&(~i(s,n)||s.push(n));return s}},function(e,t,n){"use strict";var r=n(115);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,n){"use strict";var r=n(10),o=n(16),i=n(11),a=n(71);e.exports=r?Object.defineProperties:function(e,t){i(e);for(var n,r=a(t),c=r.length,u=0;c>u;)o.f(e,n=r[u++],t[n]);return e}},function(e,t,n){"use strict";var r=n(41);e.exports=r("document","documentElement")},function(e,t,n){"use strict";var r=n(31),o=n(52).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==i.call(e)?function(e){try{return o(e)}catch(t){return a.slice()}}(e):o(r(e))}},function(e,t,n){"use strict";var r=n(15);t.f=r},function(e,t,n){"use strict";var r=n(18),o=n(47),i=n(12),a=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),c=i(n.length),u=o(e,c),s=o(t,c),l=arguments.length>2?arguments[2]:undefined,f=a((l===undefined?c:o(l,c))-s,c-u),d=1;for(s<u&&u<s+f&&(d=-1,s+=f-1,u+=f-1);f-- >0;)s in n?n[u]=n[s]:delete n[u],u+=d,s+=d;return n}},function(e,t,n){"use strict";var r=n(58),o=n(12),i=n(53);e.exports=function a(e,t,n,c,u,s,l,f){for(var d,p=u,h=0,g=!!l&&i(l,f,3);h<c;){if(h in n){if(d=g?g(n[h],h,t):n[h],s>0&&r(d))p=a(e,t,d,o(d.length),p,s-1)-1;else{if(p>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[p]=d}p++}h++}return p}},function(e,t,n){"use strict";var r=n(11);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(a){var i=e["return"];throw i!==undefined&&r(i.call(e)),a}}},function(e,t,n){"use strict";var r=n(31),o=n(50),i=n(74),a=n(33),c=n(121),u=a.set,s=a.getterFor("Array Iterator");e.exports=c(Array,"Array",(function(e,t){u(this,{type:"Array Iterator",target:r(e),index:0,kind:t})}),(function(){var e=s(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=undefined,{value:undefined,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},function(e,t,n){"use strict";var r=n(165).IteratorPrototype,o=n(48),i=n(51),a=n(49),c=n(74),u=function(){return this};e.exports=function(e,t,n){var s=t+" Iterator";return e.prototype=o(r,{next:i(1,n)}),a(e,s,!1,!0),c[s]=u,e}},function(e,t,n){"use strict";var r,o,i,a=n(42),c=n(32),u=n(20),s=n(15),l=n(43),f=s("iterator"),d=!1;[].keys&&("next"in(i=[].keys())?(o=a(a(i)))!==Object.prototype&&(r=o):d=!0),r==undefined&&(r={}),l||u(r,f)||c(r,f,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},function(e,t,n){"use strict";var r=n(8);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},function(e,t,n){"use strict";var r=n(31),o=n(38),i=n(12),a=n(44),c=n(29),u=Math.min,s=[].lastIndexOf,l=!!s&&1/[1].lastIndexOf(1,-0)<0,f=a("lastIndexOf"),d=c("indexOf",{ACCESSORS:!0,1:0}),p=l||!f||!d;e.exports=p?function(e){if(l)return s.apply(this,arguments)||0;var t=r(this),n=i(t.length),a=n-1;for(arguments.length>1&&(a=u(a,o(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in t&&t[a]===e)return a||0;return-1}:s},function(e,t,n){"use strict";var r=n(38),o=n(12);e.exports=function(e){if(e===undefined)return 0;var t=r(e),n=o(t);if(t!==n)throw RangeError("Wrong length or index");return n}},function(e,t,n){"use strict";var r=n(28),o=n(8),i=[].slice,a={},c=function(e,t,n){if(!(t in a)){for(var r=[],o=0;o<t;o++)r[o]="a["+o+"]";a[t]=Function("C,a","return new C("+r.join(",")+")")}return a[t](e,n)};e.exports=Function.bind||function(e){var t=r(this),n=i.call(arguments,1),a=function(){var r=n.concat(i.call(arguments));return this instanceof a?c(t,r.length,r):t.apply(e,r)};return o(t.prototype)&&(a.prototype=t.prototype),a}},function(e,t,n){"use strict";var r=n(16).f,o=n(48),i=n(75),a=n(53),c=n(60),u=n(61),s=n(121),l=n(59),f=n(10),d=n(56).fastKey,p=n(33),h=p.set,g=p.getterFor;e.exports={getConstructor:function(e,t,n,s){var l=e((function(e,r){c(e,l,t),h(e,{type:t,index:o(null),first:undefined,last:undefined,size:0}),f||(e.size=0),r!=undefined&&u(r,e[s],e,n)})),p=g(t),v=function(e,t,n){var r,o,i=p(e),a=m(e,t);return a?a.value=n:(i.last=a={index:o=d(t,!0),key:t,value:n,previous:r=i.last,next:undefined,removed:!1},i.first||(i.first=a),r&&(r.next=a),f?i.size++:e.size++,"F"!==o&&(i.index[o]=a)),e},m=function(e,t){var n,r=p(e),o=d(t);if("F"!==o)return r.index[o];for(n=r.first;n;n=n.next)if(n.key==t)return n};return i(l.prototype,{clear:function(){for(var e=p(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=undefined),delete t[n.index],n=n.next;e.first=e.last=undefined,f?e.size=0:this.size=0},"delete":function(e){var t=p(this),n=m(this,e);if(n){var r=n.next,o=n.previous;delete t.index[n.index],n.removed=!0,o&&(o.next=r),r&&(r.previous=o),t.first==n&&(t.first=r),t.last==n&&(t.last=o),f?t.size--:this.size--}return!!n},forEach:function(e){for(var t,n=p(this),r=a(e,arguments.length>1?arguments[1]:undefined,3);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!m(this,e)}}),i(l.prototype,n?{get:function(e){var t=m(this,e);return t&&t.value},set:function(e,t){return v(this,0===e?0:e,t)}}:{add:function(e){return v(this,e=0===e?0:e,e)}}),f&&r(l.prototype,"size",{get:function(){return p(this).size}}),l},setStrong:function(e,t,n){var r=t+" Iterator",o=g(t),i=g(r);s(e,t,(function(e,t){h(this,{type:r,target:e,state:o(e),kind:t,last:undefined})}),(function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),l(t)}}},function(e,t,n){"use strict";var r=Math.log;e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:r(1+e)}},function(e,t,n){"use strict";var r=n(8),o=Math.floor;e.exports=function(e){return!r(e)&&isFinite(e)&&o(e)===e}},function(e,t,n){"use strict";var r=n(7),o=n(62).trim,i=n(92),a=r.parseInt,c=/^[+-]?0[Xx]/,u=8!==a(i+"08")||22!==a(i+"0x16");e.exports=u?function(e,t){var n=o(String(e));return a(n,t>>>0||(c.test(n)?16:10))}:a},function(e,t,n){"use strict";var r=n(10),o=n(71),i=n(31),a=n(82).f,c=function(e){return function(t){for(var n,c=i(t),u=o(c),s=u.length,l=0,f=[];s>l;)n=u[l++],r&&!a.call(c,n)||f.push(e?[n,c[n]]:c[n]);return f}};e.exports={entries:c(!0),values:c(!1)}},function(e,t,n){"use strict";e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},function(e,t,n){"use strict";var r=n(7);e.exports=r.Promise},function(e,t,n){"use strict";var r=n(84);e.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},function(e,t,n){"use strict";var r,o,i,a,c,u,s,l,f=n(7),d=n(23).f,p=n(37),h=n(127).set,g=n(177),v=f.MutationObserver||f.WebKitMutationObserver,m=f.process,y=f.Promise,b="process"==p(m),x=d(f,"queueMicrotask"),w=x&&x.value;w||(r=function(){var e,t;for(b&&(e=m.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(n){throw o?a():i=undefined,n}}i=undefined,e&&e.enter()},b?a=function(){m.nextTick(r)}:v&&!g?(c=!0,u=document.createTextNode(""),new v(r).observe(u,{characterData:!0}),a=function(){u.data=c=!c}):y&&y.resolve?(s=y.resolve(undefined),l=s.then,a=function(){l.call(s,r)}):a=function(){h.call(f,r)}),e.exports=w||function(e){var t={fn:e,next:undefined};i&&(i.next=t),o||(o=t,a()),i=t}},function(e,t,n){"use strict";var r=n(11),o=n(8),i=n(128);e.exports=function(e,t){if(r(e),o(t)&&t.constructor===e)return t;var n=i.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(t){return{error:!0,value:t}}}},function(e,t,n){"use strict";var r=n(84);e.exports=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(r)},function(e,t,n){"use strict";var r=n(402);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},function(e,t,n){"use strict";var r=n(18),o=n(12),i=n(119),a=n(118),c=n(53),u=n(13).aTypedArrayConstructor;e.exports=function(e){var t,n,s,l,f,d,p=r(e),h=arguments.length,g=h>1?arguments[1]:undefined,v=g!==undefined,m=i(p);if(m!=undefined&&!a(m))for(d=(f=m.call(p)).next,p=[];!(l=d.call(f)).done;)p.push(l.value);for(v&&h>2&&(g=c(g,arguments[2],2)),n=o(p.length),s=new(u(this))(n),t=0;n>t;t++)s[t]=v?g(p[t],t):p[t];return s}},function(e,t,n){"use strict";var r=n(75),o=n(56).getWeakData,i=n(11),a=n(8),c=n(60),u=n(61),s=n(21),l=n(20),f=n(33),d=f.set,p=f.getterFor,h=s.find,g=s.findIndex,v=0,m=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},b=function(e,t){return h(e.entries,(function(e){return e[0]===t}))};y.prototype={get:function(e){var t=b(this,e);if(t)return t[1]},has:function(e){return!!b(this,e)},set:function(e,t){var n=b(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=g(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,s){var f=e((function(e,r){c(e,f,t),d(e,{type:t,id:v++,frozen:undefined}),r!=undefined&&u(r,e[s],e,n)})),h=p(t),g=function(e,t,n){var r=h(e),a=o(i(t),!0);return!0===a?m(r).set(t,n):a[r.id]=n,e};return r(f.prototype,{"delete":function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?m(t)["delete"](e):n&&l(n,t.id)&&delete n[t.id]},has:function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?m(t).has(e):n&&l(n,t.id)}}),r(f.prototype,n?{get:function(e){var t=h(this);if(a(e)){var n=o(e);return!0===n?m(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return g(this,e,t)}}:{add:function(e){return g(this,e,!0)}}),f}}},function(e,t,n){"use strict";t.__esModule=!0,t.EventEmitter=void 0;var r=function(){function e(){this.listeners={}}var t=e.prototype;return t.on=function(e,t){this.listeners[e]=this.listeners[e]||[],this.listeners[e].push(t)},t.off=function(e,t){var n=this.listeners[e];if(!n)throw new Error('There is no listeners for "'+e+'"');this.listeners[e]=n.filter((function(e){return e!==t}))},t.emit=function(e){var t=this.listeners[e];if(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];for(var i=0,a=t.length;i<a;i+=1){var c=t[i];c.apply(void 0,r)}}},t.clear=function(){this.listeners={}},e}();t.EventEmitter=r},function(e,t,n){"use strict";t.__esModule=!0,t.captureExternalLinks=void 0;t.captureExternalLinks=function(){document.addEventListener("click",(function(e){var t=String(e.target.tagName).toLowerCase(),n=e.target.getAttribute("href")||"";if("a"===t&&!("?"===n.charAt(0)||n.startsWith("byond://"))){e.preventDefault();var r=n;r.toLowerCase().startsWith("www")&&(r="https://"+r),Byond.topic({tgui:1,window_id:window.__windowId__,type:"openLink",url:r})}}))}},function(e,t,n){"use strict";t.__esModule=!0,t.StoreProvider=t.configureStore=void 0;var r=n(30),o=n(22),i=n(0),a=n(63),c=n(2),u=n(137);var s=(0,n(25).createLogger)("store");t.configureStore=function(e){var t,n;void 0===e&&(e={});var i=(0,r.flow)([(0,o.combineReducers)({debug:u.debugReducer,backend:c.backendReducer}),e.reducer]),s=[].concat((null==(t=e.middleware)?void 0:t.pre)||[],[a.assetMiddleware,c.backendMiddleware],(null==(n=e.middleware)?void 0:n.post)||[]);var f=o.applyMiddleware.apply(void 0,s),d=(0,o.createStore)(i,f);return window.__store__=d,window.__augmentStack__=l(d),d};var l=function(e){return function(t,n){var r,o;n?"object"!=typeof n||n.stack||(n.stack=t):(n=new Error(t.split("\n")[0])).stack=t,s.log("FatalError:",n);var i=e.getState(),a=null==i||null==(r=i.backend)?void 0:r.config,c=t;return c+="\nUser Agent: "+navigator.userAgent,c+="\nState: "+JSON.stringify({ckey:null==a||null==(o=a.client)?void 0:o.ckey,"interface":null==a?void 0:a["interface"],window:null==a?void 0:a.window})}},f=function(e){var t,n;function r(){return e.apply(this,arguments)||this}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var o=r.prototype;return o.getChildContext=function(){return{store:this.props.store}},o.render=function(){return this.props.children},r}(i.Component);t.StoreProvider=f},function(e,t,n){"use strict";t.__esModule=!0,t.resizeStartHandler=t.dragStartHandler=t.setupDrag=t.recallWindowGeometry=t.storeWindowGeometry=t.getScreenSize=t.getScreenPosition=t.setWindowSize=t.setWindowPosition=t.getWindowSize=t.getWindowPosition=t.setWindowKey=void 0;var r=n(79),o=n(103);function i(e,t,n,r,o,i,a){try{var c=e[i](a),u=c.value}catch(s){return void n(s)}c.done?t(u):Promise.resolve(u).then(r,o)}function a(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function c(e){i(a,r,o,c,u,"next",e)}function u(e){i(a,r,o,c,u,"throw",e)}c(undefined)}))}}var c,u,s,l,f,d=(0,n(25).createLogger)("drag"),p=window.__windowId__,h=!1,g=!1,v=[0,0];t.setWindowKey=function(e){p=e};var m=function(){return[window.screenLeft,window.screenTop]};t.getWindowPosition=m;var y=function(){return[window.innerWidth,window.innerHeight]};t.getWindowSize=y;var b=function(e){var t=(0,o.vecAdd)(e,v);return Byond.winset(window.__windowId__,{pos:t[0]+","+t[1]})};t.setWindowPosition=b;var x=function(e){return Byond.winset(window.__windowId__,{size:e[0]+"x"+e[1]})};t.setWindowSize=x;var w=function(){return[0-v[0],0-v[1]]};t.getScreenPosition=w;var _=function(){return[window.screen.availWidth,window.screen.availHeight]};t.getScreenSize=_;var E=function(e,t,n){void 0===n&&(n=50);for(var r,o=[t],i=0;i<e.length;i++){var a=e[i];a!==t&&(o.length<n?o.push(a):r=a)}return[o,r]},k=function(){var e=a(regeneratorRuntime.mark((function t(){var e,n,o,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return d.log("storing geometry"),e={pos:m(),size:y()},r.storage.set(p,e),t.t0=E,t.next=6,r.storage.get("geometries");case 6:if(t.t1=t.sent,t.t1){t.next=9;break}t.t1=[];case 9:t.t2=t.t1,t.t3=p,n=(0,t.t0)(t.t2,t.t3),o=n[0],(i=n[1])&&r.storage.remove(i),r.storage.set("geometries",o);case 16:case"end":return t.stop()}}),t)})));return function(){return e.apply(this,arguments)}}();t.storeWindowGeometry=k;var S=function(){var e=a(regeneratorRuntime.mark((function t(e){var n,i,a,u,s;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(void 0===e&&(e={}),t.t0=e.fancy,!t.t0){t.next=6;break}return t.next=5,r.storage.get(p);case 5:t.t0=t.sent;case 6:if((n=t.t0)&&d.log("recalled geometry:",n),i=(null==n?void 0:n.pos)||e.pos,(a=e.size)&&x(a),!i){t.next=18;break}return t.next=14,c;case 14:a&&e.locked&&(i=N(i,a)[1]),b(i),t.next=24;break;case 18:if(!a){t.next=24;break}return t.next=21,c;case 21:u=[window.screen.availWidth-Math.abs(v[0]),window.screen.availHeight-Math.abs(v[1])],s=(0,o.vecAdd)((0,o.vecScale)(u,.5),(0,o.vecScale)(a,-.5),(0,o.vecScale)(v,-1)),b(s);case 24:case"end":return t.stop()}}),t)})));return function(t){return e.apply(this,arguments)}}();t.recallWindowGeometry=S;var C=function(){var e=a(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=Byond.winget(window.__windowId__,"pos").then((function(e){return[e.x-window.screenLeft,e.y-window.screenTop]})),e.next=3,c;case 3:v=e.sent,d.debug("screen offset",v);case 5:case"end":return e.stop()}}),t)})));return function(){return e.apply(this,arguments)}}();t.setupDrag=C;var N=function(e,t){for(var n=w(),r=_(),o=[e[0],e[1]],i=!1,a=0;a<2;a++){var c=n[a],u=n[a]+r[a];e[a]<c?(o[a]=c,i=!0):e[a]+t[a]>u&&(o[a]=u-t[a],i=!0)}return[i,o]};t.dragStartHandler=function(e){d.log("drag start"),h=!0,u=[window.screenLeft-e.screenX,window.screenTop-e.screenY],document.addEventListener("mousemove",T),document.addEventListener("mouseup",A),T(e)};var A=function M(e){d.log("drag end"),T(e),document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",M),h=!1,k()},T=function(e){h&&(e.preventDefault(),b((0,o.vecAdd)([e.screenX,e.screenY],u)))};t.resizeStartHandler=function(e,t){return function(n){s=[e,t],d.log("resize start",s),g=!0,u=[window.screenLeft-n.screenX,window.screenTop-n.screenY],l=[window.innerWidth,window.innerHeight],document.addEventListener("mousemove",I),document.addEventListener("mouseup",O),I(n)}};var O=function L(e){d.log("resize end",f),I(e),document.removeEventListener("mousemove",I),document.removeEventListener("mouseup",L),g=!1,k()},I=function(e){g&&(e.preventDefault(),(f=(0,o.vecAdd)(l,(0,o.vecMultiply)(s,(0,o.vecAdd)([e.screenX,e.screenY],(0,o.vecInverse)([window.screenLeft,window.screenTop]),u,[1,1]))))[0]=Math.max(f[0],150),f[1]=Math.max(f[1],50),x(f))}},function(e,t,n){"use strict";t.__esModule=!0,t.focusWindow=t.focusMap=void 0;t.focusMap=function(){Byond.winset("mapwindow.map",{focus:!0})};t.focusWindow=function(){Byond.winset(window.__windowId__,{focus:!0})}},function(e,t,n){"use strict";t.__esModule=!0,t.selectDebug=void 0;t.selectDebug=function(e){return e.debug}},function(e,t,n){"use strict";t.__esModule=!0,t.ButtonInput=t.ButtonConfirm=t.ButtonCheckbox=t.Button=void 0;var r=n(0),o=n(6),i=n(135),a=n(25),c=n(17),u=n(104),s=n(192);function l(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function f(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var d=(0,a.createLogger)("Button"),p=function(e){var t=e.className,n=e.fluid,a=e.icon,l=e.iconRotation,p=e.iconSpin,h=e.color,g=e.disabled,v=e.selected,m=e.tooltip,y=e.tooltipPosition,b=e.ellipsis,x=e.compact,w=e.circular,_=e.content,E=e.children,k=e.onclick,S=e.onClick,C=f(e,["className","fluid","icon","iconRotation","iconSpin","color","disabled","selected","tooltip","tooltipPosition","ellipsis","compact","circular","content","children","onclick","onClick"]),N=!(!_&&!E);return k&&d.warn("Lowercase 'onclick' is not supported on Button and lowercase prop names are discouraged in general. Please use a camelCase'onClick' instead and read: https://infernojs.org/docs/guides/event-handling"),(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.Box,Object.assign({className:(0,o.classes)(["Button",n&&"Button--fluid",g&&"Button--disabled",v&&"Button--selected",N&&"Button--hasContent",b&&"Button--ellipsis",w&&"Button--circular",x&&"Button--compact",h&&"string"==typeof h?"Button--color--"+h:"Button--color--default",t]),tabIndex:!g&&"0",unselectable:Byond.IS_LTE_IE8,onClick:function(e){!g&&S&&S(e)},onKeyDown:function(e){var t=window.event?e.which:e.keyCode;if(t===i.KEY_SPACE||t===i.KEY_ENTER)return e.preventDefault(),void(!g&&S&&S(e));t!==i.KEY_ESCAPE||e.preventDefault()}},C,{children:[a&&(0,r.createComponentVNode)(2,u.Icon,{name:a,rotation:l,spin:p}),_,E,m&&(0,r.createComponentVNode)(2,s.Tooltip,{content:m,position:y})]})))};t.Button=p,p.defaultHooks=o.pureComponentHooks;var h=function(e){var t=e.checked,n=f(e,["checked"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,p,Object.assign({color:"transparent",icon:t?"check-square-o":"square-o",selected:t},n)))};t.ButtonCheckbox=h,p.Checkbox=h;var g=function(e){function t(){var t;return(t=e.call(this)||this).state={clickedOnce:!1},t.handleClick=function(){t.state.clickedOnce&&t.setClickedOnce(!1)},t}l(t,e);var n=t.prototype;return n.setClickedOnce=function(e){var t=this;this.setState({clickedOnce:e}),e?setTimeout((function(){return window.addEventListener("click",t.handleClick)})):window.removeEventListener("click",this.handleClick)},n.render=function(){var e=this,t=this.props,n=t.confirmContent,o=void 0===n?"Confirm?":n,i=t.confirmColor,a=void 0===i?"bad":i,c=t.confirmIcon,u=t.icon,s=t.color,l=t.content,d=t.onClick,h=f(t,["confirmContent","confirmColor","confirmIcon","icon","color","content","onClick"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,p,Object.assign({content:this.state.clickedOnce?o:l,icon:this.state.clickedOnce?c:u,color:this.state.clickedOnce?a:s,onClick:function(){return e.state.clickedOnce?d():e.setClickedOnce(!0)}},h)))},t}(r.Component);t.ButtonConfirm=g,p.Confirm=g;var v=function(e){function t(){var t;return(t=e.call(this)||this).inputRef=(0,r.createRef)(),t.state={inInput:!1},t}l(t,e);var n=t.prototype;return n.setInInput=function(e){if(this.setState({inInput:e}),this.inputRef){var t=this.inputRef.current;if(e){t.value=this.props.currentValue||"";try{t.focus(),t.select()}catch(n){}}}},n.commitResult=function(e){if(this.inputRef){var t=this.inputRef.current;if(""!==t.value)return void this.props.onCommit(e,t.value);if(!this.props.defaultValue)return;this.props.onCommit(e,this.props.defaultValue)}},n.render=function(){var e=this,t=this.props,n=t.fluid,a=t.content,l=t.icon,d=t.iconRotation,p=t.iconSpin,h=t.tooltip,g=t.tooltipPosition,v=t.color,m=void 0===v?"default":v,y=(t.placeholder,t.maxLength,f(t,["fluid","content","icon","iconRotation","iconSpin","tooltip","tooltipPosition","color","placeholder","maxLength"]));return(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.Box,Object.assign({className:(0,o.classes)(["Button",n&&"Button--fluid","Button--color--"+m])},y,{onClick:function(){return e.setInInput(!0)},children:[l&&(0,r.createComponentVNode)(2,u.Icon,{name:l,rotation:d,spin:p}),(0,r.createVNode)(1,"div",null,a,0),(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:this.state.inInput?undefined:"none","text-align":"left"},onBlur:function(t){e.state.inInput&&(e.setInInput(!1),e.commitResult(t))},onKeyDown:function(t){if(t.keyCode===i.KEY_ENTER)return e.setInInput(!1),void e.commitResult(t);t.keyCode===i.KEY_ESCAPE&&e.setInInput(!1)}},null,this.inputRef),h&&(0,r.createComponentVNode)(2,s.Tooltip,{content:h,position:g})]})))},t}(r.Component);t.ButtonInput=v,p.Input=v},function(e,t,n){"use strict";t.__esModule=!0,t.Tooltip=void 0;var r=n(0),o=n(6);t.Tooltip=function(e){var t=e.content,n=e.position,i=void 0===n?"bottom":n,a="string"==typeof t&&t.length>35;return(0,r.createVNode)(1,"div",(0,o.classes)(["Tooltip",a&&"Tooltip--long",i&&"Tooltip--"+i]),null,1,{"data-tooltip":t})}},function(e,t,n){"use strict";t.__esModule=!0,t.Dimmer=void 0;var r=n(0),o=n(6),i=n(17);t.Dimmer=function(e){var t=e.className,n=e.children,a=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["className","children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Dimmer"].concat(t))},a,{children:(0,r.createVNode)(1,"div","Dimmer__inner",n,0)})))}},function(e,t,n){"use strict";t.__esModule=!0,t.Divider=void 0;var r=n(0),o=n(6);t.Divider=function(e){var t=e.vertical,n=e.hidden;return(0,r.createVNode)(1,"div",(0,o.classes)(["Divider",n&&"Divider--hidden",t?"Divider--vertical":"Divider--horizontal"]))}},function(e,t,n){"use strict";t.__esModule=!0,t.FlexItem=t.computeFlexItemProps=t.Flex=t.computeFlexProps=void 0;var r=n(0),o=n(6),i=n(17);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var c=function(e){var t=e.className,n=e.direction,r=e.wrap,i=e.align,c=e.justify,u=e.inline,s=e.spacing,l=void 0===s?0:s,f=a(e,["className","direction","wrap","align","justify","inline","spacing"]);return Object.assign({className:(0,o.classes)(["Flex",Byond.IS_LTE_IE10&&("column"===n?"Flex--iefix--column":"Flex--iefix"),u&&"Flex--inline",l>0&&"Flex--spacing--"+l,t]),style:Object.assign({},f.style,{"flex-direction":n,"flex-wrap":r,"align-items":i,"justify-content":c})},f)};t.computeFlexProps=c;var u=function(e){return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({},c(e))))};t.Flex=u,u.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.className,n=e.style,r=e.grow,c=e.order,u=e.shrink,s=e.basis,l=void 0===s?e.width:s,f=e.align,d=a(e,["className","style","grow","order","shrink","basis","align"]);return Object.assign({className:(0,o.classes)(["Flex__item",Byond.IS_LTE_IE10&&"Flex__item--iefix",Byond.IS_LTE_IE10&&r>0&&"Flex__item--iefix--grow",t]),style:Object.assign({},n,{"flex-grow":r,"flex-shrink":u,"flex-basis":(0,i.unit)(l),order:c,"align-self":f})},d)};t.computeFlexItemProps=s;var l=function(e){return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({},s(e))))};t.FlexItem=l,l.defaultHooks=o.pureComponentHooks,u.Item=l},function(e,t,n){"use strict";t.__esModule=!0,t.TableCell=t.TableRow=t.Table=void 0;var r=n(0),o=n(6),i=n(17);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var c=function(e){var t=e.className,n=e.collapsing,c=e.children,u=a(e,["className","collapsing","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"table",(0,o.classes)(["Table",n&&"Table--collapsing",t,(0,i.computeBoxClassName)(u)]),(0,r.createVNode)(1,"tbody",null,c,0),2,Object.assign({},(0,i.computeBoxProps)(u))))};t.Table=c,c.defaultHooks=o.pureComponentHooks;var u=function(e){var t=e.className,n=e.header,c=a(e,["className","header"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"tr",(0,o.classes)(["Table__row",n&&"Table__row--header",t,(0,i.computeBoxClassName)(e)]),null,1,Object.assign({},(0,i.computeBoxProps)(c))))};t.TableRow=u,u.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.className,n=e.collapsing,c=e.header,u=a(e,["className","collapsing","header"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"td",(0,o.classes)(["Table__cell",n&&"Table__cell--collapsing",c&&"Table__cell--header",t,(0,i.computeBoxClassName)(e)]),null,1,Object.assign({},(0,i.computeBoxProps)(u))))};t.TableCell=s,s.defaultHooks=o.pureComponentHooks,c.Row=u,c.Cell=s},function(e,t,n){"use strict";t.__esModule=!0,t.Input=t.toInputValue=void 0;var r=n(0),o=n(6),i=n(17),a=n(78);function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var u=function(e){return"number"!=typeof e&&"string"!=typeof e?"":String(e)};t.toInputValue=u;var s=function(e){var t,n;function s(){var t;return(t=e.call(this)||this).inputRef=(0,r.createRef)(),t.state={editing:!1},t.handleInput=function(e){var n=t.state.editing,r=t.props.onInput;n||t.setEditing(!0),r&&r(e,e.target.value)},t.handleFocus=function(e){t.state.editing||t.setEditing(!0)},t.handleBlur=function(e){var n=t.state.editing,r=t.props.onChange;n&&(t.setEditing(!1),r&&r(e,e.target.value))},t.handleKeyDown=function(e){var n=t.props,r=n.onInput,o=n.onChange,i=n.onEnter;return e.keyCode===a.KEY_ENTER?(t.setEditing(!1),o&&o(e,e.target.value),r&&r(e,e.target.value),i&&i(e,e.target.value),void(t.props.selfClear?e.target.value="":e.target.blur())):e.keyCode===a.KEY_ESCAPE?(t.setEditing(!1),e.target.value=u(t.props.value),void e.target.blur()):void 0},t}n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var l=s.prototype;return l.componentDidMount=function(){var e=this.props.value,t=this.inputRef.current;t&&(t.value=u(e)),this.props.autoFocus&&setTimeout((function(){return t.focus()}),1)},l.componentDidUpdate=function(e,t){var n=this.state.editing,r=e.value,o=this.props.value,i=this.inputRef.current;i&&!n&&r!==o&&(i.value=u(o))},l.setEditing=function(e){this.setState({editing:e})},l.render=function(){var e=this.props,t=(e.selfClear,e.onInput,e.onChange,e.onEnter,e.value,e.maxLength),n=e.placeholder,a=c(e,["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder"]),u=a.className,s=a.fluid,l=a.monospace,f=c(a,["className","fluid","monospace"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Input",s&&"Input--fluid",l&&"Input--monospace",u])},f,{children:[(0,r.createVNode)(1,"div","Input__baseline",".",16),(0,r.createVNode)(64,"input","Input__input",null,1,{placeholder:n,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,maxLength:t},null,this.inputRef)]})))},s}(r.Component);t.Input=s},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledListDivider=t.LabeledListItem=t.LabeledList=void 0;var r=n(0),o=n(6),i=n(17),a=n(194),c=function(e){var t=e.children;return(0,r.createVNode)(1,"table","LabeledList",t,0)};t.LabeledList=c,c.defaultHooks=o.pureComponentHooks;var u=function(e){var t=e.className,n=e.label,a=e.labelColor,c=void 0===a?"label":a,u=e.color,s=e.textAlign,l=e.buttons,f=e.content,d=e.children;return(0,r.createVNode)(1,"tr",(0,o.classes)(["LabeledList__row",t]),[(0,r.createComponentVNode)(2,i.Box,{as:"td",color:c,className:(0,o.classes)(["LabeledList__cell","LabeledList__label"]),children:n?n+":":null}),(0,r.createComponentVNode)(2,i.Box,{as:"td",color:u,textAlign:s,className:(0,o.classes)(["LabeledList__cell","LabeledList__content"]),colSpan:l?undefined:2,children:[f,d]}),l&&(0,r.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",l,0)],0)};t.LabeledListItem=u,u.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.size?(0,i.unit)(Math.max(0,e.size-1)):0;return(0,r.createVNode)(1,"tr","LabeledList__row",(0,r.createVNode)(1,"td",null,(0,r.createComponentVNode)(2,a.Divider),2,{colSpan:3,style:{"padding-top":t,"padding-bottom":t}}),2)};t.LabeledListDivider=s,s.defaultHooks=o.pureComponentHooks,c.Item=u,c.Divider=s},function(e,t,n){"use strict";t.__esModule=!0,t.Window=void 0;var r=n(0),o=n(6),i=n(22),a=n(19),c=n(2),u=n(1),s=n(36),l=n(137),f=(n(200),n(188)),d=n(25),p=n(141);var h=(0,d.createLogger)("Window"),g=[400,600],v=function(e){var t,n;function u(){return e.apply(this,arguments)||this}n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var d=u.prototype;return d.componentDidMount=function(){var e,t=(0,c.useBackend)(this.context),n=t.config;if(!t.suspended){h.log("mounting");var r=Object.assign({size:g},n.window);this.props.width&&this.props.height&&(r.size=[this.props.width,this.props.height]),(null==(e=n.window)?void 0:e.key)&&(0,f.setWindowKey)(n.window.key),(0,f.recallWindowGeometry)(r)}},d.render=function(){var e,t=this.props,n=t.resizable,u=t.theme,d=t.title,g=t.children,v=(0,c.useBackend)(this.context),m=v.config,b=v.suspended,x=(0,l.useDebug)(this.context).debugLayout,w=(0,i.useDispatch)(this.context),_=null==(e=m.window)?void 0:e.fancy,E=m.user&&(m.user.observer?m.status<s.UI_DISABLED:m.status<s.UI_INTERACTIVE);return(0,r.createComponentVNode)(2,p.Layout,{className:"Window",theme:u,children:[(0,r.createComponentVNode)(2,y,{className:"Window__titleBar",title:!b&&(d||(0,a.decodeHtmlEntities)(m.title)),status:m.status,fancy:_,onDragStart:f.dragStartHandler,onClose:function(){h.log("pressed close"),w((0,c.backendSuspendStart)())}}),(0,r.createVNode)(1,"div",(0,o.classes)(["Window__rest",x&&"debug-layout"]),[!b&&g,E&&(0,r.createVNode)(1,"div","Window__dimmer")],0),_&&n&&(0,r.createFragment)([(0,r.createVNode)(1,"div","Window__resizeHandle__e",null,1,{onMousedown:(0,f.resizeStartHandler)(1,0)}),(0,r.createVNode)(1,"div","Window__resizeHandle__s",null,1,{onMousedown:(0,f.resizeStartHandler)(0,1)}),(0,r.createVNode)(1,"div","Window__resizeHandle__se",null,1,{onMousedown:(0,f.resizeStartHandler)(1,1)})],4)]})},u}(r.Component);t.Window=v;v.Content=function(e){var t=e.className,n=e.fitted,i=e.children,a=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["className","fitted","children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,p.Layout.Content,Object.assign({className:(0,o.classes)(["Window__content",t])},a,{children:n&&i||(0,r.createVNode)(1,"div","Window__contentPadding",i,0)})))};var m=function(e){switch(e){case s.UI_INTERACTIVE:return"good";case s.UI_UPDATE:return"average";case s.UI_DISABLED:default:return"bad"}},y=function(e,t){var n=e.className,c=e.title,s=e.status,l=e.fancy,f=e.onDragStart,d=e.onClose;(0,i.useDispatch)(t);return(0,r.createVNode)(1,"div",(0,o.classes)(["TitleBar",n]),[s===undefined&&(0,r.createComponentVNode)(2,u.Icon,{className:"TitleBar__statusIcon",name:"tools",opacity:.5})||(0,r.createComponentVNode)(2,u.Icon,{className:"TitleBar__statusIcon",color:m(s),name:"eye"}),(0,r.createVNode)(1,"div","TitleBar__title","string"==typeof c&&c===c.toLowerCase()&&(0,a.toTitleCase)(c)||c,0),(0,r.createVNode)(1,"div","TitleBar__dragZone",null,1,{onMousedown:function(e){return l&&f(e)}}),!1,!!l&&(0,r.createVNode)(1,"div","TitleBar__close TitleBar__clickable",Byond.IS_LTE_IE8?"x":"\xd7",0,{onclick:d})],0)}},function(e,t,n){"use strict";t.__esModule=!0,t.openExternalBrowser=t.toggleDebugLayout=t.toggleKitchenSink=void 0;var r=n(22),o=(0,r.createAction)("debug/toggleKitchenSink");t.toggleKitchenSink=o;var i=(0,r.createAction)("debug/toggleDebugLayout");t.toggleDebugLayout=i;var a=(0,r.createAction)("debug/openExternalBrowser");t.openExternalBrowser=a},,,,function(e,t,n){"use strict";t.__esModule=!0,t.createUuid=void 0;t.createUuid=function(){var e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===t?n:3&n|8).toString(16)}))}},,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(41),a=n(43),c=n(10),u=n(115),s=n(155),l=n(5),f=n(20),d=n(58),p=n(8),h=n(11),g=n(18),v=n(31),m=n(40),y=n(51),b=n(48),x=n(71),w=n(52),_=n(158),E=n(114),k=n(23),S=n(16),C=n(82),N=n(32),A=n(26),T=n(111),O=n(83),I=n(68),M=n(67),L=n(15),V=n(159),R=n(27),P=n(49),B=n(33),D=n(21).forEach,j=O("hidden"),F=L("toPrimitive"),K=B.set,z=B.getterFor("Symbol"),Y=Object.prototype,U=o.Symbol,$=i("JSON","stringify"),H=k.f,W=S.f,q=_.f,G=C.f,X=T("symbols"),Z=T("op-symbols"),Q=T("string-to-symbol-registry"),J=T("symbol-to-string-registry"),ee=T("wks"),te=o.QObject,ne=!te||!te.prototype||!te.prototype.findChild,re=c&&l((function(){return 7!=b(W({},"a",{get:function(){return W(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=H(Y,t);r&&delete Y[t],W(e,t,n),r&&e!==Y&&W(Y,t,r)}:W,oe=function(e,t){var n=X[e]=b(U.prototype);return K(n,{type:"Symbol",tag:e,description:t}),c||(n.description=t),n},ie=s?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof U},ae=function(e,t,n){e===Y&&ae(Z,t,n),h(e);var r=m(t,!0);return h(n),f(X,r)?(n.enumerable?(f(e,j)&&e[j][r]&&(e[j][r]=!1),n=b(n,{enumerable:y(0,!1)})):(f(e,j)||W(e,j,y(1,{})),e[j][r]=!0),re(e,r,n)):W(e,r,n)},ce=function(e,t){h(e);var n=v(t),r=x(n).concat(de(n));return D(r,(function(t){c&&!se.call(n,t)||ae(e,t,n[t])})),e},ue=function(e,t){return t===undefined?b(e):ce(b(e),t)},se=function(e){var t=m(e,!0),n=G.call(this,t);return!(this===Y&&f(X,t)&&!f(Z,t))&&(!(n||!f(this,t)||!f(X,t)||f(this,j)&&this[j][t])||n)},le=function(e,t){var n=v(e),r=m(t,!0);if(n!==Y||!f(X,r)||f(Z,r)){var o=H(n,r);return!o||!f(X,r)||f(n,j)&&n[j][r]||(o.enumerable=!0),o}},fe=function(e){var t=q(v(e)),n=[];return D(t,(function(e){f(X,e)||f(I,e)||n.push(e)})),n},de=function(e){var t=e===Y,n=q(t?Z:v(e)),r=[];return D(n,(function(e){!f(X,e)||t&&!f(Y,e)||r.push(X[e])})),r};(u||(A((U=function(){if(this instanceof U)throw TypeError("Symbol is not a constructor");var e=arguments.length&&arguments[0]!==undefined?String(arguments[0]):undefined,t=M(e),n=function r(e){this===Y&&r.call(Z,e),f(this,j)&&f(this[j],t)&&(this[j][t]=!1),re(this,t,y(1,e))};return c&&ne&&re(Y,t,{configurable:!0,set:n}),oe(t,e)}).prototype,"toString",(function(){return z(this).tag})),A(U,"withoutSetter",(function(e){return oe(M(e),e)})),C.f=se,S.f=ae,k.f=le,w.f=_.f=fe,E.f=de,V.f=function(e){return oe(L(e),e)},c&&(W(U.prototype,"description",{configurable:!0,get:function(){return z(this).description}}),a||A(Y,"propertyIsEnumerable",se,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!u,sham:!u},{Symbol:U}),D(x(ee),(function(e){R(e)})),r({target:"Symbol",stat:!0,forced:!u},{"for":function(e){var t=String(e);if(f(Q,t))return Q[t];var n=U(t);return Q[t]=n,J[n]=t,n},keyFor:function(e){if(!ie(e))throw TypeError(e+" is not a symbol");if(f(J,e))return J[e]},useSetter:function(){ne=!0},useSimple:function(){ne=!1}}),r({target:"Object",stat:!0,forced:!u,sham:!c},{create:ue,defineProperty:ae,defineProperties:ce,getOwnPropertyDescriptor:le}),r({target:"Object",stat:!0,forced:!u},{getOwnPropertyNames:fe,getOwnPropertySymbols:de}),r({target:"Object",stat:!0,forced:l((function(){E.f(1)}))},{getOwnPropertySymbols:function(e){return E.f(g(e))}}),$)&&r({target:"JSON",stat:!0,forced:!u||l((function(){var e=U();return"[null]"!=$([e])||"{}"!=$({a:e})||"{}"!=$(Object(e))}))},{stringify:function(e,t,n){for(var r,o=[e],i=1;arguments.length>i;)o.push(arguments[i++]);if(r=t,(p(t)||e!==undefined)&&!ie(e))return d(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!ie(t))return t}),o[1]=t,$.apply(null,o)}});U.prototype[F]||N(U.prototype,F,U.prototype.valueOf),P(U,"Symbol"),I[j]=!0},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(7),a=n(20),c=n(8),u=n(16).f,s=n(152),l=i.Symbol;if(o&&"function"==typeof l&&(!("description"in l.prototype)||l().description!==undefined)){var f={},d=function(){var e=arguments.length<1||arguments[0]===undefined?undefined:String(arguments[0]),t=this instanceof d?new l(e):e===undefined?l():l(e);return""===e&&(f[t]=!0),t};s(d,l);var p=d.prototype=l.prototype;p.constructor=d;var h=p.toString,g="Symbol(test)"==String(l("test")),v=/^Symbol\((.*)\)[^)]+$/;u(p,"description",{configurable:!0,get:function(){var e=c(this)?this.valueOf():this,t=h.call(e);if(a(f,e))return"";var n=g?t.slice(7,-1):t.replace(v,"$1");return""===n?undefined:n}}),r({global:!0,forced:!0},{Symbol:d})}},function(e,t,n){"use strict";n(27)("asyncIterator")},function(e,t,n){"use strict";n(27)("hasInstance")},function(e,t,n){"use strict";n(27)("isConcatSpreadable")},function(e,t,n){"use strict";n(27)("iterator")},function(e,t,n){"use strict";n(27)("match")},function(e,t,n){"use strict";n(27)("matchAll")},function(e,t,n){"use strict";n(27)("replace")},function(e,t,n){"use strict";n(27)("search")},function(e,t,n){"use strict";n(27)("species")},function(e,t,n){"use strict";n(27)("split")},function(e,t,n){"use strict";n(27)("toPrimitive")},function(e,t,n){"use strict";n(27)("toStringTag")},function(e,t,n){"use strict";n(27)("unscopables")},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(58),a=n(8),c=n(18),u=n(12),s=n(54),l=n(72),f=n(73),d=n(15),p=n(116),h=d("isConcatSpreadable"),g=p>=51||!o((function(){var e=[];return e[h]=!1,e.concat()[0]!==e})),v=f("concat"),m=function(e){if(!a(e))return!1;var t=e[h];return t!==undefined?!!t:i(e)};r({target:"Array",proto:!0,forced:!g||!v},{concat:function(e){var t,n,r,o,i,a=c(this),f=l(a,0),d=0;for(t=-1,r=arguments.length;t<r;t++)if(m(i=-1===t?a:arguments[t])){if(d+(o=u(i.length))>9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n<o;n++,d++)n in i&&s(f,d,i[n])}else{if(d>=9007199254740991)throw TypeError("Maximum allowed index exceeded");s(f,d++,i)}return f.length=d,f}})},function(e,t,n){"use strict";var r=n(4),o=n(160),i=n(50);r({target:"Array",proto:!0},{copyWithin:o}),i("copyWithin")},function(e,t,n){"use strict";var r=n(4),o=n(21).every,i=n(44),a=n(29),c=i("every"),u=a("every");r({target:"Array",proto:!0,forced:!c||!u},{every:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(117),i=n(50);r({target:"Array",proto:!0},{fill:o}),i("fill")},function(e,t,n){"use strict";var r=n(4),o=n(21).filter,i=n(73),a=n(29),c=i("filter"),u=a("filter");r({target:"Array",proto:!0,forced:!c||!u},{filter:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(21).find,i=n(50),a=n(29),c=!0,u=a("find");"find"in[]&&Array(1).find((function(){c=!1})),r({target:"Array",proto:!0,forced:c||!u},{find:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("find")},function(e,t,n){"use strict";var r=n(4),o=n(21).findIndex,i=n(50),a=n(29),c=!0,u=a("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){c=!1})),r({target:"Array",proto:!0,forced:c||!u},{findIndex:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("findIndex")},function(e,t,n){"use strict";var r=n(4),o=n(161),i=n(18),a=n(12),c=n(38),u=n(72);r({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:undefined,t=i(this),n=a(t.length),r=u(t,0);return r.length=o(r,t,t,n,0,e===undefined?1:c(e)),r}})},function(e,t,n){"use strict";var r=n(4),o=n(161),i=n(18),a=n(12),c=n(28),u=n(72);r({target:"Array",proto:!0},{flatMap:function(e){var t,n=i(this),r=a(n.length);return c(e),(t=u(n,0)).length=o(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:undefined),t}})},function(e,t,n){"use strict";var r=n(4),o=n(248);r({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},function(e,t,n){"use strict";var r=n(21).forEach,o=n(44),i=n(29),a=o("forEach"),c=i("forEach");e.exports=a&&c?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}},function(e,t,n){"use strict";var r=n(4),o=n(250);r({target:"Array",stat:!0,forced:!n(86)((function(e){Array.from(e)}))},{from:o})},function(e,t,n){"use strict";var r=n(53),o=n(18),i=n(162),a=n(118),c=n(12),u=n(54),s=n(119);e.exports=function(e){var t,n,l,f,d,p,h=o(e),g="function"==typeof this?this:Array,v=arguments.length,m=v>1?arguments[1]:undefined,y=m!==undefined,b=s(h),x=0;if(y&&(m=r(m,v>2?arguments[2]:undefined,2)),b==undefined||g==Array&&a(b))for(n=new g(t=c(h.length));t>x;x++)p=y?m(h[x],x):h[x],u(n,x,p);else for(d=(f=b.call(h)).next,n=new g;!(l=d.call(f)).done;x++)p=y?i(f,m,[l.value,x],!0):l.value,u(n,x,p);return n.length=x,n}},function(e,t,n){"use strict";var r=n(4),o=n(69).includes,i=n(50);r({target:"Array",proto:!0,forced:!n(29)("indexOf",{ACCESSORS:!0,1:0})},{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("includes")},function(e,t,n){"use strict";var r=n(4),o=n(69).indexOf,i=n(44),a=n(29),c=[].indexOf,u=!!c&&1/[1].indexOf(1,-0)<0,s=i("indexOf"),l=a("indexOf",{ACCESSORS:!0,1:0});r({target:"Array",proto:!0,forced:u||!s||!l},{indexOf:function(e){return u?c.apply(this,arguments)||0:o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";n(4)({target:"Array",stat:!0},{isArray:n(58)})},function(e,t,n){"use strict";var r=n(4),o=n(66),i=n(31),a=n(44),c=[].join,u=o!=Object,s=a("join",",");r({target:"Array",proto:!0,forced:u||!s},{join:function(e){return c.call(i(this),e===undefined?",":e)}})},function(e,t,n){"use strict";var r=n(4),o=n(167);r({target:"Array",proto:!0,forced:o!==[].lastIndexOf},{lastIndexOf:o})},function(e,t,n){"use strict";var r=n(4),o=n(21).map,i=n(73),a=n(29),c=i("map"),u=a("map");r({target:"Array",proto:!0,forced:!c||!u},{map:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(54);r({target:"Array",stat:!0,forced:o((function(){function e(){}return!(Array.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);t>e;)i(n,e,arguments[e++]);return n.length=t,n}})},function(e,t,n){"use strict";var r=n(4),o=n(87).left,i=n(44),a=n(29),c=i("reduce"),u=a("reduce",{1:0});r({target:"Array",proto:!0,forced:!c||!u},{reduce:function(e){return o(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(87).right,i=n(44),a=n(29),c=i("reduceRight"),u=a("reduce",{1:0});r({target:"Array",proto:!0,forced:!c||!u},{reduceRight:function(e){return o(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(8),i=n(58),a=n(47),c=n(12),u=n(31),s=n(54),l=n(15),f=n(73),d=n(29),p=f("slice"),h=d("slice",{ACCESSORS:!0,0:0,1:2}),g=l("species"),v=[].slice,m=Math.max;r({target:"Array",proto:!0,forced:!p||!h},{slice:function(e,t){var n,r,l,f=u(this),d=c(f.length),p=a(e,d),h=a(t===undefined?d:t,d);if(i(f)&&("function"!=typeof(n=f.constructor)||n!==Array&&!i(n.prototype)?o(n)&&null===(n=n[g])&&(n=undefined):n=undefined,n===Array||n===undefined))return v.call(f,p,h);for(r=new(n===undefined?Array:n)(m(h-p,0)),l=0;p<h;p++,l++)p in f&&s(r,l,f[p]);return r.length=l,r}})},function(e,t,n){"use strict";var r=n(4),o=n(21).some,i=n(44),a=n(29),c=i("some"),u=a("some");r({target:"Array",proto:!0,forced:!c||!u},{some:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(28),i=n(18),a=n(5),c=n(44),u=[],s=u.sort,l=a((function(){u.sort(undefined)})),f=a((function(){u.sort(null)})),d=c("sort");r({target:"Array",proto:!0,forced:l||!f||!d},{sort:function(e){return e===undefined?s.call(i(this)):s.call(i(this),o(e))}})},function(e,t,n){"use strict";n(59)("Array")},function(e,t,n){"use strict";var r=n(4),o=n(47),i=n(38),a=n(12),c=n(18),u=n(72),s=n(54),l=n(73),f=n(29),d=l("splice"),p=f("splice",{ACCESSORS:!0,0:0,1:2}),h=Math.max,g=Math.min;r({target:"Array",proto:!0,forced:!d||!p},{splice:function(e,t){var n,r,l,f,d,p,v=c(this),m=a(v.length),y=o(e,m),b=arguments.length;if(0===b?n=r=0:1===b?(n=0,r=m-y):(n=b-2,r=g(h(i(t),0),m-y)),m+n-r>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(l=u(v,r),f=0;f<r;f++)(d=y+f)in v&&s(l,f,v[d]);if(l.length=r,n<r){for(f=y;f<m-r;f++)p=f+n,(d=f+r)in v?v[p]=v[d]:delete v[p];for(f=m;f>m-r+n;f--)delete v[f-1]}else if(n>r)for(f=m-r;f>y;f--)p=f+n-1,(d=f+r-1)in v?v[p]=v[d]:delete v[p];for(f=0;f<n;f++)v[f+y]=arguments[f+2];return v.length=m-r+n,l}})},function(e,t,n){"use strict";n(50)("flat")},function(e,t,n){"use strict";n(50)("flatMap")},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(88),a=n(59),c=i.ArrayBuffer;r({global:!0,forced:o.ArrayBuffer!==c},{ArrayBuffer:c}),a("ArrayBuffer")},function(e,t,n){"use strict";var r=Math.abs,o=Math.pow,i=Math.floor,a=Math.log,c=Math.LN2;e.exports={pack:function(e,t,n){var u,s,l,f=new Array(n),d=8*n-t-1,p=(1<<d)-1,h=p>>1,g=23===t?o(2,-24)-o(2,-77):0,v=e<0||0===e&&1/e<0?1:0,m=0;for((e=r(e))!=e||e===1/0?(s=e!=e?1:0,u=p):(u=i(a(e)/c),e*(l=o(2,-u))<1&&(u--,l*=2),(e+=u+h>=1?g/l:g*o(2,1-h))*l>=2&&(u++,l/=2),u+h>=p?(s=0,u=p):u+h>=1?(s=(e*l-1)*o(2,t),u+=h):(s=e*o(2,h-1)*o(2,t),u=0));t>=8;f[m++]=255&s,s/=256,t-=8);for(u=u<<t|s,d+=t;d>0;f[m++]=255&u,u/=256,d-=8);return f[--m]|=128*v,f},unpack:function(e,t){var n,r=e.length,i=8*r-t-1,a=(1<<i)-1,c=a>>1,u=i-7,s=r-1,l=e[s--],f=127&l;for(l>>=7;u>0;f=256*f+e[s],s--,u-=8);for(n=f&(1<<-u)-1,f>>=-u,u+=t;u>0;n=256*n+e[s],s--,u-=8);if(0===f)f=1-c;else{if(f===a)return n?NaN:l?-1/0:1/0;n+=o(2,t),f-=c}return(l?-1:1)*n*o(2,f-t)}}},function(e,t,n){"use strict";var r=n(4),o=n(13);r({target:"ArrayBuffer",stat:!0,forced:!o.NATIVE_ARRAY_BUFFER_VIEWS},{isView:o.isView})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(88),a=n(11),c=n(47),u=n(12),s=n(45),l=i.ArrayBuffer,f=i.DataView,d=l.prototype.slice;r({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:o((function(){return!new l(2).slice(1,undefined).byteLength}))},{slice:function(e,t){if(d!==undefined&&t===undefined)return d.call(a(this),e);for(var n=a(this).byteLength,r=c(e,n),o=c(t===undefined?n:t,n),i=new(s(this,l))(u(o-r)),p=new f(this),h=new f(i),g=0;r<o;)h.setUint8(g++,p.getUint8(r++));return i}})},function(e,t,n){"use strict";var r=n(4),o=n(88);r({global:!0,forced:!n(123)},{DataView:o.DataView})},function(e,t,n){"use strict";n(4)({target:"Date",stat:!0},{now:function(){return(new Date).getTime()}})},function(e,t,n){"use strict";var r=n(4),o=n(274);r({target:"Date",proto:!0,forced:Date.prototype.toISOString!==o},{toISOString:o})},function(e,t,n){"use strict";var r=n(5),o=n(124).start,i=Math.abs,a=Date.prototype,c=a.getTime,u=a.toISOString;e.exports=r((function(){return"0385-07-25T07:06:39.999Z"!=u.call(new Date(-50000000000001))}))||!r((function(){u.call(new Date(NaN))}))?function(){if(!isFinite(c.call(this)))throw RangeError("Invalid time value");var e=this.getUTCFullYear(),t=this.getUTCMilliseconds(),n=e<0?"-":e>9999?"+":"";return n+o(i(e),n?6:4,0)+"-"+o(this.getUTCMonth()+1,2,0)+"-"+o(this.getUTCDate(),2,0)+"T"+o(this.getUTCHours(),2,0)+":"+o(this.getUTCMinutes(),2,0)+":"+o(this.getUTCSeconds(),2,0)+"."+o(t,3,0)+"Z"}:u},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(18),a=n(40);r({target:"Date",proto:!0,forced:o((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(e){var t=i(this),n=a(t);return"number"!=typeof n||isFinite(n)?t.toISOString():null}})},function(e,t,n){"use strict";var r=n(32),o=n(277),i=n(15)("toPrimitive"),a=Date.prototype;i in a||r(a,i,o)},function(e,t,n){"use strict";var r=n(11),o=n(40);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return o(r(this),"number"!==e)}},function(e,t,n){"use strict";var r=n(26),o=Date.prototype,i=o.toString,a=o.getTime;new Date(NaN)+""!="Invalid Date"&&r(o,"toString",(function(){var e=a.call(this);return e==e?i.call(this):"Invalid Date"}))},function(e,t,n){"use strict";n(4)({target:"Function",proto:!0},{bind:n(169)})},function(e,t,n){"use strict";var r=n(8),o=n(16),i=n(42),a=n(15)("hasInstance"),c=Function.prototype;a in c||o.f(c,a,{value:function(e){if("function"!=typeof this||!r(e))return!1;if(!r(this.prototype))return e instanceof this;for(;e=i(e);)if(this.prototype===e)return!0;return!1}})},function(e,t,n){"use strict";var r=n(10),o=n(16).f,i=Function.prototype,a=i.toString,c=/^\s*function ([^ (]*)/;r&&!("name"in i)&&o(i,"name",{configurable:!0,get:function(){try{return a.call(this).match(c)[1]}catch(e){return""}}})},function(e,t,n){"use strict";n(4)({global:!0},{globalThis:n(7)})},function(e,t,n){"use strict";var r=n(4),o=n(41),i=n(5),a=o("JSON","stringify"),c=/[\uD800-\uDFFF]/g,u=/^[\uD800-\uDBFF]$/,s=/^[\uDC00-\uDFFF]$/,l=function(e,t,n){var r=n.charAt(t-1),o=n.charAt(t+1);return u.test(e)&&!s.test(o)||s.test(e)&&!u.test(r)?"\\u"+e.charCodeAt(0).toString(16):e},f=i((function(){return'"\\udf06\\ud834"'!==a("\udf06\ud834")||'"\\udead"'!==a("\udead")}));a&&r({target:"JSON",stat:!0,forced:f},{stringify:function(e,t,n){var r=a.apply(null,arguments);return"string"==typeof r?r.replace(c,l):r}})},function(e,t,n){"use strict";var r=n(7);n(49)(r.JSON,"JSON",!0)},function(e,t,n){"use strict";var r=n(89),o=n(170);e.exports=r("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),o)},function(e,t,n){"use strict";var r=n(4),o=n(171),i=Math.acosh,a=Math.log,c=Math.sqrt,u=Math.LN2;r({target:"Math",stat:!0,forced:!i||710!=Math.floor(i(Number.MAX_VALUE))||i(Infinity)!=Infinity},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?a(e)+u:o(e-1+c(e-1)*c(e+1))}})},function(e,t,n){"use strict";var r=n(4),o=Math.asinh,i=Math.log,a=Math.sqrt;r({target:"Math",stat:!0,forced:!(o&&1/o(0)>0)},{asinh:function c(e){return isFinite(e=+e)&&0!=e?e<0?-c(-e):i(e+a(e*e+1)):e}})},function(e,t,n){"use strict";var r=n(4),o=Math.atanh,i=Math.log;r({target:"Math",stat:!0,forced:!(o&&1/o(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:i((1+e)/(1-e))/2}})},function(e,t,n){"use strict";var r=n(4),o=n(126),i=Math.abs,a=Math.pow;r({target:"Math",stat:!0},{cbrt:function(e){return o(e=+e)*a(i(e),1/3)}})},function(e,t,n){"use strict";var r=n(4),o=Math.floor,i=Math.log,a=Math.LOG2E;r({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-o(i(e+.5)*a):32}})},function(e,t,n){"use strict";var r=n(4),o=n(91),i=Math.cosh,a=Math.abs,c=Math.E;r({target:"Math",stat:!0,forced:!i||i(710)===Infinity},{cosh:function(e){var t=o(a(e)-1)+1;return(t+1/(t*c*c))*(c/2)}})},function(e,t,n){"use strict";var r=n(4),o=n(91);r({target:"Math",stat:!0,forced:o!=Math.expm1},{expm1:o})},function(e,t,n){"use strict";n(4)({target:"Math",stat:!0},{fround:n(294)})},function(e,t,n){"use strict";var r=n(126),o=Math.abs,i=Math.pow,a=i(2,-52),c=i(2,-23),u=i(2,127)*(2-c),s=i(2,-126);e.exports=Math.fround||function(e){var t,n,i=o(e),l=r(e);return i<s?l*(i/s/c+1/a-1/a)*s*c:(n=(t=(1+c/a)*i)-(t-i))>u||n!=n?l*Infinity:l*n}},function(e,t,n){"use strict";var r=n(4),o=Math.hypot,i=Math.abs,a=Math.sqrt;r({target:"Math",stat:!0,forced:!!o&&o(Infinity,NaN)!==Infinity},{hypot:function(e,t){for(var n,r,o=0,c=0,u=arguments.length,s=0;c<u;)s<(n=i(arguments[c++]))?(o=o*(r=s/n)*r+1,s=n):o+=n>0?(r=n/s)*r:n;return s===Infinity?Infinity:s*a(o)}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=Math.imul;r({target:"Math",stat:!0,forced:o((function(){return-5!=i(4294967295,5)||2!=i.length}))},{imul:function(e,t){var n=+e,r=+t,o=65535&n,i=65535&r;return 0|o*i+((65535&n>>>16)*i+o*(65535&r>>>16)<<16>>>0)}})},function(e,t,n){"use strict";var r=n(4),o=Math.log,i=Math.LOG10E;r({target:"Math",stat:!0},{log10:function(e){return o(e)*i}})},function(e,t,n){"use strict";n(4)({target:"Math",stat:!0},{log1p:n(171)})},function(e,t,n){"use strict";var r=n(4),o=Math.log,i=Math.LN2;r({target:"Math",stat:!0},{log2:function(e){return o(e)/i}})},function(e,t,n){"use strict";n(4)({target:"Math",stat:!0},{sign:n(126)})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(91),a=Math.abs,c=Math.exp,u=Math.E;r({target:"Math",stat:!0,forced:o((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return a(e=+e)<1?(i(e)-i(-e))/2:(c(e-1)-c(-e-1))*(u/2)}})},function(e,t,n){"use strict";var r=n(4),o=n(91),i=Math.exp;r({target:"Math",stat:!0},{tanh:function(e){var t=o(e=+e),n=o(-e);return t==Infinity?1:n==Infinity?-1:(t-n)/(i(e)+i(-e))}})},function(e,t,n){"use strict";n(49)(Math,"Math",!0)},function(e,t,n){"use strict";var r=n(4),o=Math.ceil,i=Math.floor;r({target:"Math",stat:!0},{trunc:function(e){return(e>0?i:o)(e)}})},function(e,t,n){"use strict";var r=n(10),o=n(7),i=n(70),a=n(26),c=n(20),u=n(37),s=n(90),l=n(40),f=n(5),d=n(48),p=n(52).f,h=n(23).f,g=n(16).f,v=n(62).trim,m=o.Number,y=m.prototype,b="Number"==u(d(y)),x=function(e){var t,n,r,o,i,a,c,u,s=l(e,!1);if("string"==typeof s&&s.length>2)if(43===(t=(s=v(s)).charCodeAt(0))||45===t){if(88===(n=s.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(s.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+s}for(a=(i=s.slice(2)).length,c=0;c<a;c++)if((u=i.charCodeAt(c))<48||u>o)return NaN;return parseInt(i,r)}return+s};if(i("Number",!m(" 0o1")||!m("0b1")||m("+0x1"))){for(var w,_=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof _&&(b?f((function(){y.valueOf.call(n)})):"Number"!=u(n))?s(new m(x(t)),n,_):x(t)},E=r?p(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),k=0;E.length>k;k++)c(m,w=E[k])&&!c(_,w)&&g(_,w,h(m,w));_.prototype=y,y.constructor=_,a(o,"Number",_)}},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)})},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{isFinite:n(308)})},function(e,t,n){"use strict";var r=n(7).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&r(e)}},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{isInteger:n(172)})},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{isNaN:function(e){return e!=e}})},function(e,t,n){"use strict";var r=n(4),o=n(172),i=Math.abs;r({target:"Number",stat:!0},{isSafeInteger:function(e){return o(e)&&i(e)<=9007199254740991}})},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){"use strict";n(4)({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991})},function(e,t,n){"use strict";var r=n(4),o=n(315);r({target:"Number",stat:!0,forced:Number.parseFloat!=o},{parseFloat:o})},function(e,t,n){"use strict";var r=n(7),o=n(62).trim,i=n(92),a=r.parseFloat,c=1/a(i+"-0")!=-Infinity;e.exports=c?function(e){var t=o(String(e)),n=a(t);return 0===n&&"-"==t.charAt(0)?-0:n}:a},function(e,t,n){"use strict";var r=n(4),o=n(173);r({target:"Number",stat:!0,forced:Number.parseInt!=o},{parseInt:o})},function(e,t,n){"use strict";var r=n(4),o=n(38),i=n(318),a=n(125),c=n(5),u=1..toFixed,s=Math.floor,l=function f(e,t,n){return 0===t?n:t%2==1?f(e,t-1,n*e):f(e*e,t/2,n)};r({target:"Number",proto:!0,forced:u&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!c((function(){u.call({})}))},{toFixed:function(e){var t,n,r,c,u=i(this),f=o(e),d=[0,0,0,0,0,0],p="",h="0",g=function(e,t){for(var n=-1,r=t;++n<6;)r+=e*d[n],d[n]=r%1e7,r=s(r/1e7)},v=function(e){for(var t=6,n=0;--t>=0;)n+=d[t],d[t]=s(n/e),n=n%e*1e7},m=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==d[e]){var n=String(d[e]);t=""===t?n:t+a.call("0",7-n.length)+n}return t};if(f<0||f>20)throw RangeError("Incorrect fraction digits");if(u!=u)return"NaN";if(u<=-1e21||u>=1e21)return String(u);if(u<0&&(p="-",u=-u),u>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(u*l(2,69,1))-69)<0?u*l(2,-t,1):u/l(2,t,1),n*=4503599627370496,(t=52-t)>0){for(g(0,n),r=f;r>=7;)g(1e7,0),r-=7;for(g(l(10,r,1),0),r=t-1;r>=23;)v(1<<23),r-=23;v(1<<r),g(1,1),v(2),h=m()}else g(0,n),g(1<<-t,0),h=m()+a.call("0",f);return h=f>0?p+((c=h.length)<=f?"0."+a.call("0",f-c)+h:h.slice(0,c-f)+"."+h.slice(c-f)):p+h}})},function(e,t,n){"use strict";var r=n(37);e.exports=function(e){if("number"!=typeof e&&"Number"!=r(e))throw TypeError("Incorrect invocation");return+e}},function(e,t,n){"use strict";var r=n(4),o=n(320);r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},function(e,t,n){"use strict";var r=n(10),o=n(5),i=n(71),a=n(114),c=n(82),u=n(18),s=n(66),l=Object.assign,f=Object.defineProperty;e.exports=!l||o((function(){if(r&&1!==l({b:1},l(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=l({},e)[n]||"abcdefghijklmnopqrst"!=i(l({},t)).join("")}))?function(e,t){for(var n=u(e),o=arguments.length,l=1,f=a.f,d=c.f;o>l;)for(var p,h=s(arguments[l++]),g=f?i(h).concat(f(h)):i(h),v=g.length,m=0;v>m;)p=g[m++],r&&!d.call(h,p)||(n[p]=h[p]);return n}:l},function(e,t,n){"use strict";n(4)({target:"Object",stat:!0,sham:!n(10)},{create:n(48)})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(93),a=n(18),c=n(28),u=n(16);o&&r({target:"Object",proto:!0,forced:i},{__defineGetter__:function(e,t){u.f(a(this),e,{get:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var r=n(4),o=n(10);r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperties:n(156)})},function(e,t,n){"use strict";var r=n(4),o=n(10);r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperty:n(16).f})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(93),a=n(18),c=n(28),u=n(16);o&&r({target:"Object",proto:!0,forced:i},{__defineSetter__:function(e,t){u.f(a(this),e,{set:c(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var r=n(4),o=n(174).entries;r({target:"Object",stat:!0},{entries:function(e){return o(e)}})},function(e,t,n){"use strict";var r=n(4),o=n(76),i=n(5),a=n(8),c=n(56).onFreeze,u=Object.freeze;r({target:"Object",stat:!0,forced:i((function(){u(1)})),sham:!o},{freeze:function(e){return u&&a(e)?u(c(e)):e}})},function(e,t,n){"use strict";var r=n(4),o=n(61),i=n(54);r({target:"Object",stat:!0},{fromEntries:function(e){var t={};return o(e,(function(e,n){i(t,e,n)}),undefined,!0),t}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(31),a=n(23).f,c=n(10),u=o((function(){a(1)}));r({target:"Object",stat:!0,forced:!c||u,sham:!c},{getOwnPropertyDescriptor:function(e,t){return a(i(e),t)}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(112),a=n(31),c=n(23),u=n(54);r({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(e){for(var t,n,r=a(e),o=c.f,s=i(r),l={},f=0;s.length>f;)(n=o(r,t=s[f++]))!==undefined&&u(l,t,n);return l}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(158).f;r({target:"Object",stat:!0,forced:o((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:i})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(18),a=n(42),c=n(122);r({target:"Object",stat:!0,forced:o((function(){a(1)})),sham:!c},{getPrototypeOf:function(e){return a(i(e))}})},function(e,t,n){"use strict";n(4)({target:"Object",stat:!0},{is:n(175)})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(8),a=Object.isExtensible;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isExtensible:function(e){return!!i(e)&&(!a||a(e))}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(8),a=Object.isFrozen;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isFrozen:function(e){return!i(e)||!!a&&a(e)}})},function(e,t,n){"use strict";var r=n(4),o=n(5),i=n(8),a=Object.isSealed;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isSealed:function(e){return!i(e)||!!a&&a(e)}})},function(e,t,n){"use strict";var r=n(4),o=n(18),i=n(71);r({target:"Object",stat:!0,forced:n(5)((function(){i(1)}))},{keys:function(e){return i(o(e))}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(93),a=n(18),c=n(40),u=n(42),s=n(23).f;o&&r({target:"Object",proto:!0,forced:i},{__lookupGetter__:function(e){var t,n=a(this),r=c(e,!0);do{if(t=s(n,r))return t.get}while(n=u(n))}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(93),a=n(18),c=n(40),u=n(42),s=n(23).f;o&&r({target:"Object",proto:!0,forced:i},{__lookupSetter__:function(e){var t,n=a(this),r=c(e,!0);do{if(t=s(n,r))return t.set}while(n=u(n))}})},function(e,t,n){"use strict";var r=n(4),o=n(8),i=n(56).onFreeze,a=n(76),c=n(5),u=Object.preventExtensions;r({target:"Object",stat:!0,forced:c((function(){u(1)})),sham:!a},{preventExtensions:function(e){return u&&o(e)?u(i(e)):e}})},function(e,t,n){"use strict";var r=n(4),o=n(8),i=n(56).onFreeze,a=n(76),c=n(5),u=Object.seal;r({target:"Object",stat:!0,forced:c((function(){u(1)})),sham:!a},{seal:function(e){return u&&o(e)?u(i(e)):e}})},function(e,t,n){"use strict";n(4)({target:"Object",stat:!0},{setPrototypeOf:n(55)})},function(e,t,n){"use strict";var r=n(120),o=n(26),i=n(344);r||o(Object.prototype,"toString",i,{unsafe:!0})},function(e,t,n){"use strict";var r=n(120),o=n(85);e.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},function(e,t,n){"use strict";var r=n(4),o=n(174).values;r({target:"Object",stat:!0},{values:function(e){return o(e)}})},function(e,t,n){"use strict";var r=n(4),o=n(173);r({global:!0,forced:parseInt!=o},{parseInt:o})},function(e,t,n){"use strict";var r,o,i,a,c=n(4),u=n(43),s=n(7),l=n(41),f=n(176),d=n(26),p=n(75),h=n(49),g=n(59),v=n(8),m=n(28),y=n(60),b=n(37),x=n(110),w=n(61),_=n(86),E=n(45),k=n(127).set,S=n(178),C=n(179),N=n(348),A=n(128),T=n(180),O=n(33),I=n(70),M=n(15),L=n(116),V=M("species"),R="Promise",P=O.get,B=O.set,D=O.getterFor(R),j=f,F=s.TypeError,K=s.document,z=s.process,Y=l("fetch"),U=A.f,$=U,H="process"==b(z),W=!!(K&&K.createEvent&&s.dispatchEvent),q=I(R,(function(){if(!(x(j)!==String(j))){if(66===L)return!0;if(!H&&"function"!=typeof PromiseRejectionEvent)return!0}if(u&&!j.prototype["finally"])return!0;if(L>=51&&/native code/.test(j))return!1;var e=j.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[V]=t,!(e.then((function(){}))instanceof t)})),G=q||!_((function(e){j.all(e)["catch"]((function(){}))})),X=function(e){var t;return!(!v(e)||"function"!=typeof(t=e.then))&&t},Z=function(e,t,n){if(!t.notified){t.notified=!0;var r=t.reactions;S((function(){for(var o=t.value,i=1==t.state,a=0;r.length>a;){var c,u,s,l=r[a++],f=i?l.ok:l.fail,d=l.resolve,p=l.reject,h=l.domain;try{f?(i||(2===t.rejection&&te(e,t),t.rejection=1),!0===f?c=o:(h&&h.enter(),c=f(o),h&&(h.exit(),s=!0)),c===l.promise?p(F("Promise-chain cycle")):(u=X(c))?u.call(c,d,p):d(c)):p(o)}catch(g){h&&!s&&h.exit(),p(g)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&J(e,t)}))}},Q=function(e,t,n){var r,o;W?((r=K.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),s.dispatchEvent(r)):r={promise:t,reason:n},(o=s["on"+e])?o(r):"unhandledrejection"===e&&N("Unhandled promise rejection",n)},J=function(e,t){k.call(s,(function(){var n,r=t.value;if(ee(t)&&(n=T((function(){H?z.emit("unhandledRejection",r,e):Q("unhandledrejection",e,r)})),t.rejection=H||ee(t)?2:1,n.error))throw n.value}))},ee=function(e){return 1!==e.rejection&&!e.parent},te=function(e,t){k.call(s,(function(){H?z.emit("rejectionHandled",e):Q("rejectionhandled",e,t.value)}))},ne=function(e,t,n,r){return function(o){e(t,n,o,r)}},re=function(e,t,n,r){t.done||(t.done=!0,r&&(t=r),t.value=n,t.state=2,Z(e,t,!0))},oe=function ie(e,t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(e===n)throw F("Promise can't be resolved itself");var o=X(n);o?S((function(){var r={done:!1};try{o.call(n,ne(ie,e,r,t),ne(re,e,r,t))}catch(i){re(e,r,i,t)}})):(t.value=n,t.state=1,Z(e,t,!1))}catch(i){re(e,{done:!1},i,t)}}};q&&(j=function(e){y(this,j,R),m(e),r.call(this);var t=P(this);try{e(ne(oe,this,t),ne(re,this,t))}catch(n){re(this,t,n)}},(r=function(e){B(this,{type:R,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:undefined})}).prototype=p(j.prototype,{then:function(e,t){var n=D(this),r=U(E(this,j));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=H?z.domain:undefined,n.parent=!0,n.reactions.push(r),0!=n.state&&Z(this,n,!1),r.promise},"catch":function(e){return this.then(undefined,e)}}),o=function(){var e=new r,t=P(e);this.promise=e,this.resolve=ne(oe,e,t),this.reject=ne(re,e,t)},A.f=U=function(e){return e===j||e===i?new o(e):$(e)},u||"function"!=typeof f||(a=f.prototype.then,d(f.prototype,"then",(function(e,t){var n=this;return new j((function(e,t){a.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof Y&&c({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return C(j,Y.apply(s,arguments))}}))),c({global:!0,wrap:!0,forced:q},{Promise:j}),h(j,R,!1,!0),g(R),i=l(R),c({target:R,stat:!0,forced:q},{reject:function(e){var t=U(this);return t.reject.call(undefined,e),t.promise}}),c({target:R,stat:!0,forced:u||q},{resolve:function(e){return C(u&&this===i?j:this,e)}}),c({target:R,stat:!0,forced:G},{all:function(e){var t=this,n=U(t),r=n.resolve,o=n.reject,i=T((function(){var n=m(t.resolve),i=[],a=0,c=1;w(e,(function(e){var u=a++,s=!1;i.push(undefined),c++,n.call(t,e).then((function(e){s||(s=!0,i[u]=e,--c||r(i))}),o)})),--c||r(i)}));return i.error&&o(i.value),n.promise},race:function(e){var t=this,n=U(t),r=n.reject,o=T((function(){var o=m(t.resolve);w(e,(function(e){o.call(t,e).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},function(e,t,n){"use strict";var r=n(7);e.exports=function(e,t){var n=r.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},function(e,t,n){"use strict";var r=n(4),o=n(28),i=n(128),a=n(180),c=n(61);r({target:"Promise",stat:!0},{allSettled:function(e){var t=this,n=i.f(t),r=n.resolve,u=n.reject,s=a((function(){var n=o(t.resolve),i=[],a=0,u=1;c(e,(function(e){var o=a++,c=!1;i.push(undefined),u++,n.call(t,e).then((function(e){c||(c=!0,i[o]={status:"fulfilled",value:e},--u||r(i))}),(function(e){c||(c=!0,i[o]={status:"rejected",reason:e},--u||r(i))}))})),--u||r(i)}));return s.error&&u(s.value),n.promise}})},function(e,t,n){"use strict";var r=n(4),o=n(43),i=n(176),a=n(5),c=n(41),u=n(45),s=n(179),l=n(26);r({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){i.prototype["finally"].call({then:function(){}},(function(){}))}))},{"finally":function(e){var t=u(this,c("Promise")),n="function"==typeof e;return this.then(n?function(n){return s(t,e()).then((function(){return n}))}:e,n?function(n){return s(t,e()).then((function(){throw n}))}:e)}}),o||"function"!=typeof i||i.prototype["finally"]||l(i.prototype,"finally",c("Promise").prototype["finally"])},function(e,t,n){"use strict";var r=n(4),o=n(41),i=n(28),a=n(11),c=n(5),u=o("Reflect","apply"),s=Function.apply;r({target:"Reflect",stat:!0,forced:!c((function(){u((function(){}))}))},{apply:function(e,t,n){return i(e),a(n),u?u(e,t,n):s.call(e,t,n)}})},function(e,t,n){"use strict";var r=n(4),o=n(41),i=n(28),a=n(11),c=n(8),u=n(48),s=n(169),l=n(5),f=o("Reflect","construct"),d=l((function(){function e(){}return!(f((function(){}),[],e)instanceof e)})),p=!l((function(){f((function(){}))})),h=d||p;r({target:"Reflect",stat:!0,forced:h,sham:h},{construct:function(e,t){i(e),a(t);var n=arguments.length<3?e:i(arguments[2]);if(p&&!d)return f(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return r.push.apply(r,t),new(s.apply(e,r))}var o=n.prototype,l=u(c(o)?o:Object.prototype),h=Function.apply.call(e,l,t);return c(h)?h:l}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(11),a=n(40),c=n(16);r({target:"Reflect",stat:!0,forced:n(5)((function(){Reflect.defineProperty(c.f({},1,{value:1}),1,{value:2})})),sham:!o},{defineProperty:function(e,t,n){i(e);var r=a(t,!0);i(n);try{return c.f(e,r,n),!0}catch(o){return!1}}})},function(e,t,n){"use strict";var r=n(4),o=n(11),i=n(23).f;r({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=i(o(e),t);return!(n&&!n.configurable)&&delete e[t]}})},function(e,t,n){"use strict";var r=n(4),o=n(8),i=n(11),a=n(20),c=n(23),u=n(42);r({target:"Reflect",stat:!0},{get:function s(e,t){var n,r,l=arguments.length<3?e:arguments[2];return i(e)===l?e[t]:(n=c.f(e,t))?a(n,"value")?n.value:n.get===undefined?undefined:n.get.call(l):o(r=u(e))?s(r,t,l):void 0}})},function(e,t,n){"use strict";var r=n(4),o=n(10),i=n(11),a=n(23);r({target:"Reflect",stat:!0,sham:!o},{getOwnPropertyDescriptor:function(e,t){return a.f(i(e),t)}})},function(e,t,n){"use strict";var r=n(4),o=n(11),i=n(42);r({target:"Reflect",stat:!0,sham:!n(122)},{getPrototypeOf:function(e){return i(o(e))}})},function(e,t,n){"use strict";n(4)({target:"Reflect",stat:!0},{has:function(e,t){return t in e}})},function(e,t,n){"use strict";var r=n(4),o=n(11),i=Object.isExtensible;r({target:"Reflect",stat:!0},{isExtensible:function(e){return o(e),!i||i(e)}})},function(e,t,n){"use strict";n(4)({target:"Reflect",stat:!0},{ownKeys:n(112)})},function(e,t,n){"use strict";var r=n(4),o=n(41),i=n(11);r({target:"Reflect",stat:!0,sham:!n(76)},{preventExtensions:function(e){i(e);try{var t=o("Object","preventExtensions");return t&&t(e),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var r=n(4),o=n(11),i=n(8),a=n(20),c=n(5),u=n(16),s=n(23),l=n(42),f=n(51);r({target:"Reflect",stat:!0,forced:c((function(){var e=u.f({},"a",{configurable:!0});return!1!==Reflect.set(l(e),"a",1,e)}))},{set:function d(e,t,n){var r,c,p=arguments.length<4?e:arguments[3],h=s.f(o(e),t);if(!h){if(i(c=l(e)))return d(c,t,n,p);h=f(0)}if(a(h,"value")){if(!1===h.writable||!i(p))return!1;if(r=s.f(p,t)){if(r.get||r.set||!1===r.writable)return!1;r.value=n,u.f(p,t,r)}else u.f(p,t,f(0,n));return!0}return h.set!==undefined&&(h.set.call(p,n),!0)}})},function(e,t,n){"use strict";var r=n(4),o=n(11),i=n(166),a=n(55);a&&r({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){o(e),i(t);try{return a(e,t),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var r=n(10),o=n(7),i=n(70),a=n(90),c=n(16).f,u=n(52).f,s=n(94),l=n(77),f=n(95),d=n(26),p=n(5),h=n(33).set,g=n(59),v=n(15)("match"),m=o.RegExp,y=m.prototype,b=/a/g,x=/a/g,w=new m(b)!==b,_=f.UNSUPPORTED_Y;if(r&&i("RegExp",!w||_||p((function(){return x[v]=!1,m(b)!=b||m(x)==x||"/a/i"!=m(b,"i")})))){for(var E=function(e,t){var n,r=this instanceof E,o=s(e),i=t===undefined;if(!r&&o&&e.constructor===E&&i)return e;w?o&&!i&&(e=e.source):e instanceof E&&(i&&(t=l.call(e)),e=e.source),_&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var c=a(w?new m(e,t):m(e,t),r?this:y,E);return _&&n&&h(c,{sticky:n}),c},k=function(e){e in E||c(E,e,{configurable:!0,get:function(){return m[e]},set:function(t){m[e]=t}})},S=u(m),C=0;S.length>C;)k(S[C++]);y.constructor=E,E.prototype=y,d(o,"RegExp",E)}g("RegExp")},function(e,t,n){"use strict";var r=n(10),o=n(16),i=n(77),a=n(95).UNSUPPORTED_Y;r&&("g"!=/./g.flags||a)&&o.f(RegExp.prototype,"flags",{configurable:!0,get:i})},function(e,t,n){"use strict";var r=n(10),o=n(95).UNSUPPORTED_Y,i=n(16).f,a=n(33).get,c=RegExp.prototype;r&&o&&i(RegExp.prototype,"sticky",{configurable:!0,get:function(){if(this===c)return undefined;if(this instanceof RegExp)return!!a(this).sticky;throw TypeError("Incompatible receiver, RegExp required")}})},function(e,t,n){"use strict";n(129);var r,o,i=n(4),a=n(8),c=(r=!1,(o=/[ac]/).exec=function(){return r=!0,/./.exec.apply(this,arguments)},!0===o.test("abc")&&r),u=/./.test;i({target:"RegExp",proto:!0,forced:!c},{test:function(e){if("function"!=typeof this.exec)return u.call(this,e);var t=this.exec(e);if(null!==t&&!a(t))throw new Error("RegExp exec method returned something other than an Object or null");return!!t}})},function(e,t,n){"use strict";var r=n(26),o=n(11),i=n(5),a=n(77),c=RegExp.prototype,u=c.toString,s=i((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),l="toString"!=u.name;(s||l)&&r(RegExp.prototype,"toString",(function(){var e=o(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(n===undefined&&e instanceof RegExp&&!("flags"in c)?a.call(e):n)}),{unsafe:!0})},function(e,t,n){"use strict";var r=n(89),o=n(170);e.exports=r("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),o)},function(e,t,n){"use strict";var r=n(4),o=n(130).codeAt;r({target:"String",proto:!0},{codePointAt:function(e){return o(this,e)}})},function(e,t,n){"use strict";var r,o=n(4),i=n(23).f,a=n(12),c=n(131),u=n(24),s=n(132),l=n(43),f="".endsWith,d=Math.min,p=s("endsWith");o({target:"String",proto:!0,forced:!!(l||p||(r=i(String.prototype,"endsWith"),!r||r.writable))&&!p},{endsWith:function(e){var t=String(u(this));c(e);var n=arguments.length>1?arguments[1]:undefined,r=a(t.length),o=n===undefined?r:d(a(n),r),i=String(e);return f?f.call(t,i,o):t.slice(o-i.length,o)===i}})},function(e,t,n){"use strict";var r=n(4),o=n(47),i=String.fromCharCode,a=String.fromCodePoint;r({target:"String",stat:!0,forced:!!a&&1!=a.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,a=0;r>a;){if(t=+arguments[a++],o(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?i(t):i(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}})},function(e,t,n){"use strict";var r=n(4),o=n(131),i=n(24);r({target:"String",proto:!0,forced:!n(132)("includes")},{includes:function(e){return!!~String(i(this)).indexOf(o(e),arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(130).charAt,o=n(33),i=n(121),a=o.set,c=o.getterFor("String Iterator");i(String,"String",(function(e){a(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=c(this),n=t.string,o=t.index;return o>=n.length?{value:undefined,done:!0}:(e=r(n,o),t.index+=e.length,{value:e,done:!1})}))},function(e,t,n){"use strict";var r=n(97),o=n(11),i=n(12),a=n(24),c=n(98),u=n(99);r("match",1,(function(e,t,n){return[function(t){var n=a(this),r=t==undefined?undefined:t[e];return r!==undefined?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var a=o(e),s=String(this);if(!a.global)return u(a,s);var l=a.unicode;a.lastIndex=0;for(var f,d=[],p=0;null!==(f=u(a,s));){var h=String(f[0]);d[p]=h,""===h&&(a.lastIndex=c(s,i(a.lastIndex),l)),p++}return 0===p?null:d}]}))},function(e,t,n){"use strict";var r=n(4),o=n(164),i=n(24),a=n(12),c=n(28),u=n(11),s=n(37),l=n(94),f=n(77),d=n(32),p=n(5),h=n(15),g=n(45),v=n(98),m=n(33),y=n(43),b=h("matchAll"),x=m.set,w=m.getterFor("RegExp String Iterator"),_=RegExp.prototype,E=_.exec,k="".matchAll,S=!!k&&!p((function(){"a".matchAll(/./)})),C=o((function(e,t,n,r){x(this,{type:"RegExp String Iterator",regexp:e,string:t,global:n,unicode:r,done:!1})}),"RegExp String",(function(){var e=w(this);if(e.done)return{value:undefined,done:!0};var t=e.regexp,n=e.string,r=function(e,t){var n,r=e.exec;if("function"==typeof r){if("object"!=typeof(n=r.call(e,t)))throw TypeError("Incorrect exec result");return n}return E.call(e,t)}(t,n);return null===r?{value:undefined,done:e.done=!0}:e.global?(""==String(r[0])&&(t.lastIndex=v(n,a(t.lastIndex),e.unicode)),{value:r,done:!1}):(e.done=!0,{value:r,done:!1})})),N=function(e){var t,n,r,o,i,c,s=u(this),l=String(e);return t=g(s,RegExp),(n=s.flags)===undefined&&s instanceof RegExp&&!("flags"in _)&&(n=f.call(s)),r=n===undefined?"":String(n),o=new t(t===RegExp?s.source:s,r),i=!!~r.indexOf("g"),c=!!~r.indexOf("u"),o.lastIndex=a(s.lastIndex),new C(o,l,i,c)};r({target:"String",proto:!0,forced:S},{matchAll:function(e){var t,n,r,o=i(this);if(null!=e){if(l(e)&&!~String(i("flags"in _?e.flags:f.call(e))).indexOf("g"))throw TypeError("`.matchAll` does not allow non-global regexes");if(S)return k.apply(o,arguments);if((n=e[b])===undefined&&y&&"RegExp"==s(e)&&(n=N),null!=n)return c(n).call(e,o)}else if(S)return k.apply(o,arguments);return t=String(o),r=new RegExp(e,"g"),y?N.call(r,t):r[b](t)}}),y||b in _||d(_,b,N)},function(e,t,n){"use strict";var r=n(4),o=n(124).end;r({target:"String",proto:!0,forced:n(181)},{padEnd:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(124).start;r({target:"String",proto:!0,forced:n(181)},{padStart:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(4),o=n(31),i=n(12);r({target:"String",stat:!0},{raw:function(e){for(var t=o(e.raw),n=i(t.length),r=arguments.length,a=[],c=0;n>c;)a.push(String(t[c++])),c<r&&a.push(String(arguments[c]));return a.join("")}})},function(e,t,n){"use strict";n(4)({target:"String",proto:!0},{repeat:n(125)})},function(e,t,n){"use strict";var r=n(97),o=n(11),i=n(18),a=n(12),c=n(38),u=n(24),s=n(98),l=n(99),f=Math.max,d=Math.min,p=Math.floor,h=/\$([$&'`]|\d\d?|<[^>]*>)/g,g=/\$([$&'`]|\d\d?)/g;r("replace",2,(function(e,t,n,r){var v=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=r.REPLACE_KEEPS_$0,y=v?"$":"$0";return[function(n,r){var o=u(this),i=n==undefined?undefined:n[e];return i!==undefined?i.call(n,o,r):t.call(String(o),n,r)},function(e,r){if(!v&&m||"string"==typeof r&&-1===r.indexOf(y)){var i=n(t,e,this,r);if(i.done)return i.value}var u=o(e),p=String(this),h="function"==typeof r;h||(r=String(r));var g=u.global;if(g){var x=u.unicode;u.lastIndex=0}for(var w=[];;){var _=l(u,p);if(null===_)break;if(w.push(_),!g)break;""===String(_[0])&&(u.lastIndex=s(p,a(u.lastIndex),x))}for(var E,k="",S=0,C=0;C<w.length;C++){_=w[C];for(var N=String(_[0]),A=f(d(c(_.index),p.length),0),T=[],O=1;O<_.length;O++)T.push((E=_[O])===undefined?E:String(E));var I=_.groups;if(h){var M=[N].concat(T,A,p);I!==undefined&&M.push(I);var L=String(r.apply(undefined,M))}else L=b(N,p,A,T,I,r);A>=S&&(k+=p.slice(S,A)+L,S=A+N.length)}return k+p.slice(S)}];function b(e,n,r,o,a,c){var u=r+e.length,s=o.length,l=g;return a!==undefined&&(a=i(a),l=h),t.call(c,l,(function(t,i){var c;switch(i.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,r);case"'":return n.slice(u);case"<":c=a[i.slice(1,-1)];break;default:var l=+i;if(0===l)return t;if(l>s){var f=p(l/10);return 0===f?t:f<=s?o[f-1]===undefined?i.charAt(1):o[f-1]+i.charAt(1):t}c=o[l-1]}return c===undefined?"":c}))}}))},function(e,t,n){"use strict";var r=n(97),o=n(11),i=n(24),a=n(175),c=n(99);r("search",1,(function(e,t,n){return[function(t){var n=i(this),r=t==undefined?undefined:t[e];return r!==undefined?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=o(e),u=String(this),s=i.lastIndex;a(s,0)||(i.lastIndex=0);var l=c(i,u);return a(i.lastIndex,s)||(i.lastIndex=s),null===l?-1:l.index}]}))},function(e,t,n){"use strict";var r=n(97),o=n(94),i=n(11),a=n(24),c=n(45),u=n(98),s=n(12),l=n(99),f=n(96),d=n(5),p=[].push,h=Math.min,g=!d((function(){return!RegExp(4294967295,"y")}));r("split",2,(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(a(this)),i=n===undefined?4294967295:n>>>0;if(0===i)return[];if(e===undefined)return[r];if(!o(e))return t.call(r,e,i);for(var c,u,s,l=[],d=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,g=new RegExp(e.source,d+"g");(c=f.call(g,r))&&!((u=g.lastIndex)>h&&(l.push(r.slice(h,c.index)),c.length>1&&c.index<r.length&&p.apply(l,c.slice(1)),s=c[0].length,h=u,l.length>=i));)g.lastIndex===c.index&&g.lastIndex++;return h===r.length?!s&&g.test("")||l.push(""):l.push(r.slice(h)),l.length>i?l.slice(0,i):l}:"0".split(undefined,0).length?function(e,n){return e===undefined&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var o=a(this),i=t==undefined?undefined:t[e];return i!==undefined?i.call(t,o,n):r.call(String(o),t,n)},function(e,o){var a=n(r,e,this,o,r!==t);if(a.done)return a.value;var f=i(e),d=String(this),p=c(f,RegExp),v=f.unicode,m=(f.ignoreCase?"i":"")+(f.multiline?"m":"")+(f.unicode?"u":"")+(g?"y":"g"),y=new p(g?f:"^(?:"+f.source+")",m),b=o===undefined?4294967295:o>>>0;if(0===b)return[];if(0===d.length)return null===l(y,d)?[d]:[];for(var x=0,w=0,_=[];w<d.length;){y.lastIndex=g?w:0;var E,k=l(y,g?d:d.slice(w));if(null===k||(E=h(s(y.lastIndex+(g?0:w)),d.length))===x)w=u(d,w,v);else{if(_.push(d.slice(x,w)),_.length===b)return _;for(var S=1;S<=k.length-1;S++)if(_.push(k[S]),_.length===b)return _;w=x=E}}return _.push(d.slice(x)),_}]}),!g)},function(e,t,n){"use strict";var r,o=n(4),i=n(23).f,a=n(12),c=n(131),u=n(24),s=n(132),l=n(43),f="".startsWith,d=Math.min,p=s("startsWith");o({target:"String",proto:!0,forced:!!(l||p||(r=i(String.prototype,"startsWith"),!r||r.writable))&&!p},{startsWith:function(e){var t=String(u(this));c(e);var n=a(d(arguments.length>1?arguments[1]:undefined,t.length)),r=String(e);return f?f.call(t,r,n):t.slice(n,n+r.length)===r}})},function(e,t,n){"use strict";var r=n(4),o=n(62).trim;r({target:"String",proto:!0,forced:n(133)("trim")},{trim:function(){return o(this)}})},function(e,t,n){"use strict";var r=n(4),o=n(62).end,i=n(133)("trimEnd"),a=i?function(){return o(this)}:"".trimEnd;r({target:"String",proto:!0,forced:i},{trimEnd:a,trimRight:a})},function(e,t,n){"use strict";var r=n(4),o=n(62).start,i=n(133)("trimStart"),a=i?function(){return o(this)}:"".trimStart;r({target:"String",proto:!0,forced:i},{trimStart:a,trimLeft:a})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("anchor")},{anchor:function(e){return o(this,"a","name",e)}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("big")},{big:function(){return o(this,"big","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("blink")},{blink:function(){return o(this,"blink","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("bold")},{bold:function(){return o(this,"b","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("fixed")},{fixed:function(){return o(this,"tt","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("fontcolor")},{fontcolor:function(e){return o(this,"font","color",e)}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("fontsize")},{fontsize:function(e){return o(this,"font","size",e)}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("italics")},{italics:function(){return o(this,"i","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("link")},{link:function(e){return o(this,"a","href",e)}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("small")},{small:function(){return o(this,"small","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("strike")},{strike:function(){return o(this,"strike","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("sub")},{sub:function(){return o(this,"sub","","")}})},function(e,t,n){"use strict";var r=n(4),o=n(34);r({target:"String",proto:!0,forced:n(35)("sup")},{sup:function(){return o(this,"sup","","")}})},function(e,t,n){"use strict";n(46)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";var r=n(38);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},function(e,t,n){"use strict";n(46)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0)},function(e,t,n){"use strict";n(46)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(46)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";var r=n(13),o=n(160),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("copyWithin",(function(e,t){return o.call(i(this),e,t,arguments.length>2?arguments[2]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).every,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(117),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",(function(e){return o.apply(i(this),arguments)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).filter,i=n(45),a=r.aTypedArray,c=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("filter",(function(e){for(var t=o(a(this),e,arguments.length>1?arguments[1]:undefined),n=i(this,this.constructor),r=0,u=t.length,s=new(c(n))(u);u>r;)s[r]=t[r++];return s}))},function(e,t,n){"use strict";var r=n(13),o=n(21).find,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).findIndex,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).forEach,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",(function(e){o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(134);(0,n(13).exportTypedArrayStaticMethod)("from",n(183),r)},function(e,t,n){"use strict";var r=n(13),o=n(69).includes,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(69).indexOf,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(13),i=n(163),a=n(15)("iterator"),c=r.Uint8Array,u=i.values,s=i.keys,l=i.entries,f=o.aTypedArray,d=o.exportTypedArrayMethod,p=c&&c.prototype[a],h=!!p&&("values"==p.name||p.name==undefined),g=function(){return u.call(f(this))};d("entries",(function(){return l.call(f(this))})),d("keys",(function(){return s.call(f(this))})),d("values",g,!h),d(a,g,!h)},function(e,t,n){"use strict";var r=n(13),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=[].join;i("join",(function(e){return a.apply(o(this),arguments)}))},function(e,t,n){"use strict";var r=n(13),o=n(167),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",(function(e){return o.apply(i(this),arguments)}))},function(e,t,n){"use strict";var r=n(13),o=n(21).map,i=n(45),a=r.aTypedArray,c=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",(function(e){return o(a(this),e,arguments.length>1?arguments[1]:undefined,(function(e,t){return new(c(i(e,e.constructor)))(t)}))}))},function(e,t,n){"use strict";var r=n(13),o=n(134),i=r.aTypedArrayConstructor;(0,r.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(i(this))(t);t>e;)n[e]=arguments[e++];return n}),o)},function(e,t,n){"use strict";var r=n(13),o=n(87).left,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",(function(e){return o(i(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=n(87).right,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",(function(e){return o(i(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=Math.floor;i("reverse",(function(){for(var e,t=o(this).length,n=a(t/2),r=0;r<n;)e=this[r],this[r++]=this[--t],this[t]=e;return this}))},function(e,t,n){"use strict";var r=n(13),o=n(12),i=n(182),a=n(18),c=n(5),u=r.aTypedArray;(0,r.exportTypedArrayMethod)("set",(function(e){u(this);var t=i(arguments.length>1?arguments[1]:undefined,1),n=this.length,r=a(e),c=o(r.length),s=0;if(c+t>n)throw RangeError("Wrong length");for(;s<c;)this[t+s]=r[s++]}),c((function(){new Int8Array(1).set({})})))},function(e,t,n){"use strict";var r=n(13),o=n(45),i=n(5),a=r.aTypedArray,c=r.aTypedArrayConstructor,u=r.exportTypedArrayMethod,s=[].slice;u("slice",(function(e,t){for(var n=s.call(a(this),e,t),r=o(this,this.constructor),i=0,u=n.length,l=new(c(r))(u);u>i;)l[i]=n[i++];return l}),i((function(){new Int8Array(1).slice()})))},function(e,t,n){"use strict";var r=n(13),o=n(21).some,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(13),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=[].sort;i("sort",(function(e){return a.call(o(this),e)}))},function(e,t,n){"use strict";var r=n(13),o=n(12),i=n(47),a=n(45),c=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",(function(e,t){var n=c(this),r=n.length,u=i(e,r);return new(a(n,n.constructor))(n.buffer,n.byteOffset+u*n.BYTES_PER_ELEMENT,o((t===undefined?r:i(t,r))-u))}))},function(e,t,n){"use strict";var r=n(7),o=n(13),i=n(5),a=r.Int8Array,c=o.aTypedArray,u=o.exportTypedArrayMethod,s=[].toLocaleString,l=[].slice,f=!!a&&i((function(){s.call(new a(1))}));u("toLocaleString",(function(){return s.apply(f?l.call(c(this)):c(this),arguments)}),i((function(){return[1,2].toLocaleString()!=new a([1,2]).toLocaleString()}))||!i((function(){a.prototype.toLocaleString.call([1,2])})))},function(e,t,n){"use strict";var r=n(13).exportTypedArrayMethod,o=n(5),i=n(7).Uint8Array,a=i&&i.prototype||{},c=[].toString,u=[].join;o((function(){c.call({})}))&&(c=function(){return u.call(this)});var s=a.toString!=c;r("toString",c,s)},function(e,t,n){"use strict";var r,o=n(7),i=n(75),a=n(56),c=n(89),u=n(184),s=n(8),l=n(33).enforce,f=n(151),d=!o.ActiveXObject&&"ActiveXObject"in o,p=Object.isExtensible,h=function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}},g=e.exports=c("WeakMap",h,u);if(f&&d){r=u.getConstructor(h,"WeakMap",!0),a.REQUIRED=!0;var v=g.prototype,m=v["delete"],y=v.has,b=v.get,x=v.set;i(v,{"delete":function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),m.call(this,e)||t.frozen["delete"](e)}return m.call(this,e)},has:function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),y.call(this,e)||t.frozen.has(e)}return y.call(this,e)},get:function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),y.call(this,e)?b.call(this,e):t.frozen.get(e)}return b.call(this,e)},set:function(e,t){if(s(e)&&!p(e)){var n=l(this);n.frozen||(n.frozen=new r),y.call(this,e)?x.call(this,e,t):n.frozen.set(e,t)}else x.call(this,e,t);return this}})}},function(e,t,n){"use strict";n(89)("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),n(184))},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(127);r({global:!0,bind:!0,enumerable:!0,forced:!o.setImmediate||!o.clearImmediate},{setImmediate:i.set,clearImmediate:i.clear})},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(178),a=n(37),c=o.process,u="process"==a(c);r({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){var t=u&&c.domain;i(t?t.bind(e):e)}})},function(e,t,n){"use strict";var r=n(4),o=n(7),i=n(84),a=[].slice,c=function(e){return function(t,n){var r=arguments.length>2,o=r?a.call(arguments,2):undefined;return e(r?function(){("function"==typeof t?t:Function(t)).apply(this,o)}:t,n)}};r({global:!0,bind:!0,forced:/MSIE .\./.test(i)},{setTimeout:c(o.setTimeout),setInterval:c(o.setInterval)})},function(e,t,n){"use strict";var r=function(e){var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",i=r.asyncIterator||"@@asyncIterator",a=r.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(C){c=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var o=t&&t.prototype instanceof f?t:f,i=Object.create(o.prototype),a=new E(r||[]);return i._invoke=function(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return S()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var c=x(a,n);if(c){if(c===l)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var u=s(e,t,n);if("normal"===u.type){if(r=n.done?"completed":"suspendedYield",u.arg===l)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(r="completed",n.method="throw",n.arg=u.arg)}}}(e,n,a),i}function s(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(C){return{type:"throw",arg:C}}}e.wrap=u;var l={};function f(){}function d(){}function p(){}var h={};h[o]=function(){return this};var g=Object.getPrototypeOf,v=g&&g(g(k([])));v&&v!==t&&n.call(v,o)&&(h=v);var m=p.prototype=f.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var r;this._invoke=function(o,i){function a(){return new t((function(r,a){!function c(r,o,i,a){var u=s(e[r],e,o);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==typeof f&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){c("next",e,i,a)}),(function(e){c("throw",e,i,a)})):t.resolve(f).then((function(e){l.value=e,i(l)}),(function(e){return c("throw",e,i,a)}))}a(u.arg)}(o,i,r,a)}))}return r=r?r.then(a,a):a()}}function x(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator["return"]&&(t.method="return",t.arg=void 0,x(e,t),"throw"===t.method))return l;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return l}var r=s(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,l;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,l):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,l)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function _(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function E(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(w,this),this.reset(!0)}function k(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:S}}function S(){return{value:void 0,done:!0}}return d.prototype=m.constructor=p,p.constructor=d,d.displayName=c(p,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===d||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,c(e,a,"GeneratorFunction")),e.prototype=Object.create(m),e},e.awrap=function(e){return{__await:e}},y(b.prototype),b.prototype[i]=function(){return this},e.AsyncIterator=b,e.async=function(t,n,r,o,i){void 0===i&&(i=Promise);var a=new b(u(t,n,r,o),i);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},y(m),c(m,a,"Generator"),m[o]=function(){return this},m.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},e.values=k,E.prototype={constructor:E,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(_),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return a.type="throw",a.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,l):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),l},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),_(n),l}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;_(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:k(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),l}},e}(e.exports);try{regeneratorRuntime=r}catch(o){Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){"use strict";!function(t,n){var r,o,i=t.html5||{},a=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,c=/^(?: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,u=0,s={};function l(){var e=h.elements;return"string"==typeof e?e.split(" "):e}function f(e){var t=s[e._html5shiv];return t||(t={},u++,e._html5shiv=u,s[u]=t),t}function d(e,t,r){return t||(t=n),o?t.createElement(e):(r||(r=f(t)),!(i=r.cache[e]?r.cache[e].cloneNode():c.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e)).canHaveChildren||a.test(e)||i.tagUrn?i:r.frag.appendChild(i));var i}function p(e){e||(e=n);var t=f(e);return!h.shivCSS||r||t.hasCSS||(t.hasCSS=!!function(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x<style>"+t+"</style>",r.insertBefore(n.lastChild,r.firstChild)}(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),o||function(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return h.shivMethods?d(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/[\w\-:]+/g,(function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'}))+");return n}")(h,t.frag)}(e,t),e}!function(){try{var e=n.createElement("a");e.innerHTML="<xyz></xyz>",r="hidden"in e,o=1==e.childNodes.length||function(){n.createElement("a");var e=n.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(t){r=!0,o=!0}}();var h={elements:i.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:"3.7.3",shivCSS:!1!==i.shivCSS,supportsUnknownElements:o,shivMethods:!1!==i.shivMethods,type:"default",shivDocument:p,createElement:d,createDocumentFragment:function(e,t){if(e||(e=n),o)return e.createDocumentFragment();for(var r=(t=t||f(e)).frag.cloneNode(),i=0,a=l(),c=a.length;i<c;i++)r.createElement(a[i]);return r},addElements:function(e,t){var n=h.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),h.elements=n+" "+e,p(t)}};t.html5=h,p(n),e.exports&&(e.exports=h)}(window,document)},function(e,t,n){"use strict";!function(e){if(!document.createEvent){var t,n=!0,r=!1,o="__IE8__"+Math.random(),i=Object.defineProperty||function(e,t,n){e[t]=n.value},a=Object.defineProperties||function(t,n){for(var r in n)if(u.call(n,r))try{i(t,r,n[r])}catch(o){e.console}},c=Object.getOwnPropertyDescriptor,u=Object.prototype.hasOwnProperty,s=e.Element.prototype,l=e.Text.prototype,f=/^[a-z]+$/,d=/loaded|complete/,p={},h=document.createElement("div"),g=document.documentElement,v=g.removeAttribute,m=g.setAttribute,y=function(e){return{enumerable:!0,writable:!0,configurable:!0,value:e}};E(e.HTMLCommentElement.prototype,s,"nodeValue"),E(e.HTMLScriptElement.prototype,null,"text"),E(l,null,"nodeValue"),E(e.HTMLTitleElement.prototype,null,"text"),i(e.HTMLStyleElement.prototype,"textContent",(t=c(e.CSSStyleSheet.prototype,"cssText"),_((function(){return t.get.call(this.styleSheet)}),(function(e){t.set.call(this.styleSheet,e)}))));var b=/\b\s*alpha\s*\(\s*opacity\s*=\s*(\d+)\s*\)/;i(e.CSSStyleDeclaration.prototype,"opacity",{get:function(){var e=this.filter.match(b);return e?(e[1]/100).toString():""},set:function(e){this.zoom=1;var t=!1;e=e<1?" alpha(opacity="+Math.round(100*e)+")":"",this.filter=this.filter.replace(b,(function(){return t=!0,e})),!t&&e&&(this.filter+=e)}}),a(s,{textContent:{get:S,set:T},firstElementChild:{get:function(){for(var e=this.childNodes||[],t=0,n=e.length;t<n;t++)if(1==e[t].nodeType)return e[t]}},lastElementChild:{get:function(){for(var e=this.childNodes||[],t=e.length;t--;)if(1==e[t].nodeType)return e[t]}},oninput:{get:function(){return this._oninput||null},set:function(e){this._oninput&&(this.removeEventListener("input",this._oninput),this._oninput=e,e&&this.addEventListener("input",e))}},previousElementSibling:{get:function(){for(var e=this.previousSibling;e&&1!=e.nodeType;)e=e.previousSibling;return e}},nextElementSibling:{get:function(){for(var e=this.nextSibling;e&&1!=e.nodeType;)e=e.nextSibling;return e}},childElementCount:{get:function(){for(var e=0,t=this.childNodes||[],n=t.length;n--;e+=1==t[n].nodeType);return e}},addEventListener:y((function(e,t,n){if("function"==typeof t||"object"==typeof t){var r,a,c=this,s="on"+e,l=c[o]||i(c,o,{value:{}})[o],d=l[s]||(l[s]={}),g=d.h||(d.h=[]);if(!u.call(d,"w")){if(d.w=function(e){return e[o]||w(c,O(0,e),g,!1)},!u.call(p,s))if(f.test(e)){try{(r=document.createEventObject())[o]=!0,9!=c.nodeType&&(null==c.parentNode&&h.appendChild(c),(a=c.getAttribute(s))&&v.call(c,s)),c.fireEvent(s,r),p[s]=!0}catch(y){for(p[s]=!1;h.hasChildNodes();)h.removeChild(h.firstChild)}null!=a&&m.call(c,s,a)}else p[s]=!1;(d.n=p[s])&&c.attachEvent(s,d.w)}k(g,t)<0&&g[n?"unshift":"push"](t),"input"===e&&c.attachEvent("onkeyup",C)}})),dispatchEvent:y((function(e){var t,n="on"+e.type,r=this[o],i=r&&r[n],a=!!i;return e.target||(e.target=this),a?i.n?this.fireEvent(n,e):w(this,e,i.h,!0):!(t=this.parentNode)||t.dispatchEvent(e),!e.defaultPrevented})),removeEventListener:y((function(e,t,n){if("function"==typeof t||"object"==typeof t){var r="on"+e,i=this[o],a=i&&i[r],c=a&&a.h,u=c?k(c,t):-1;-1<u&&c.splice(u,1)}}))}),a(l,{addEventListener:y(s.addEventListener),dispatchEvent:y(s.dispatchEvent),removeEventListener:y(s.removeEventListener)}),a(e.XMLHttpRequest.prototype,{addEventListener:y((function(e,t,n){var r=this,a="on"+e,c=r[o]||i(r,o,{value:{}})[o],u=c[a]||(c[a]={}),s=u.h||(u.h=[]);k(s,t)<0&&(r[a]||(r[a]=function(){var t=document.createEvent("Event");t.initEvent(e,!0,!0),r.dispatchEvent(t)}),s[n?"unshift":"push"](t))})),dispatchEvent:y((function(e){var t="on"+e.type,n=this[o],r=n&&n[t];return!!r&&(r.n?this.fireEvent(t,e):w(this,e,r.h,!0))})),removeEventListener:y(s.removeEventListener)});var x=c(Event.prototype,"button").get;a(e.Event.prototype,{bubbles:y(!0),cancelable:y(!0),preventDefault:y((function(){this.cancelable&&(this.returnValue=!1)})),stopPropagation:y((function(){this.stoppedPropagation=!0,this.cancelBubble=!0})),stopImmediatePropagation:y((function(){this.stoppedImmediatePropagation=!0,this.stopPropagation()})),initEvent:y((function(e,t,n){this.type=e,this.bubbles=!!t,this.cancelable=!!n,this.bubbles||this.stopPropagation()})),pageX:{get:function(){return this._pageX||(this._pageX=this.clientX+e.scrollX-(g.clientLeft||0))}},pageY:{get:function(){return this._pageY||(this._pageY=this.clientY+e.scrollY-(g.clientTop||0))}},which:{get:function(){return this.keyCode?this.keyCode:isNaN(this.button)?undefined:this.button+1}},charCode:{get:function(){return this.keyCode&&"keypress"==this.type?this.keyCode:0}},buttons:{get:function(){return x.call(this)}},button:{get:function(){var e=this.buttons;return 1&e?0:2&e?2:4&e?1:undefined}},defaultPrevented:{get:function(){var e=this.returnValue;return!(void 0===e||e)}},relatedTarget:{get:function(){var e=this.type;return"mouseover"===e?this.fromElement:"mouseout"===e?this.toElement:null}}}),a(e.HTMLDocument.prototype,{defaultView:{get:function(){return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType?S.call(this):null},set:function(e){11===this.nodeType&&T.call(this,e)}},addEventListener:y((function(t,r,o){var i=this;s.addEventListener.call(i,t,r,o),n&&"DOMContentLoaded"===t&&!d.test(i.readyState)&&(n=!1,i.attachEvent("onreadystatechange",N),e==top&&function a(e){try{i.documentElement.doScroll("left"),N()}catch(t){setTimeout(a,50)}}())})),dispatchEvent:y(s.dispatchEvent),removeEventListener:y(s.removeEventListener),createEvent:y((function(e){var t;if("Event"!==e)throw new Error("unsupported "+e);return(t=document.createEventObject()).timeStamp=(new Date).getTime(),t}))}),a(e.Window.prototype,{getComputedStyle:y(function(){var e=/^(?:[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/,t=/^(top|right|bottom|left)$/,n=/\-([a-z])/g,r=function(e,t){return t.toUpperCase()};function o(e){this._=e}function i(){}return o.prototype.getPropertyValue=function(o){var i,a,c,u=this._,s=u.style,l=u.currentStyle,f=u.runtimeStyle;return"opacity"==o?s.opacity||"1":(o=("float"===o?"style-float":o).replace(n,r),i=l?l[o]:s[o],e.test(i)&&!t.test(o)&&(a=s.left,(c=f&&f.left)&&(f.left=l.left),s.left="fontSize"===o?"1em":i,i=s.pixelLeft+"px",s.left=a,c&&(f.left=c)),null==i?i:i+""||"auto")},i.prototype.getPropertyValue=function(){return null},function(e,t){return t?new i(e):new o(e)}}()),addEventListener:y((function(t,n,r){var i,a=e,c="on"+t;a[c]||(a[c]=function(e){return w(a,O(0,e),i,!1)&&undefined}),k(i=a[c][o]||(a[c][o]=[]),n)<0&&i[r?"unshift":"push"](n)})),dispatchEvent:y((function(t){var n=e["on"+t.type];return!n||!1!==n.call(e,t)&&!t.defaultPrevented})),removeEventListener:y((function(t,n,r){var i=(e["on"+t]||Object)[o],a=i?k(i,n):-1;-1<a&&i.splice(a,1)})),pageXOffset:{get:A("scrollLeft")},pageYOffset:{get:A("scrollTop")},scrollX:{get:A("scrollLeft")},scrollY:{get:A("scrollTop")},innerWidth:{get:A("clientWidth")},innerHeight:{get:A("clientHeight")}}),e.HTMLElement=e.Element,function(e,t,n){for(n=0;n<t.length;n++)document.createElement(t[n]);e.length||document.createStyleSheet(""),e[0].addRule(t.join(","),"display:block;")}(document.styleSheets,["header","nav","section","article","aside","footer"]),function(){if(!document.createRange){document.createRange=function(){return new n};var e=n.prototype;e.cloneContents=function(){for(var e=this._start.ownerDocument.createDocumentFragment(),n=t(this._start,this._end),r=0,o=n.length;r<o;r++)e.appendChild(n[r].cloneNode(!0));return e},e.cloneRange=function(){var e=new n;return e._start=this._start,e._end=this._end,e},e.deleteContents=function(){for(var e=this._start.parentNode,n=t(this._start,this._end),r=0,o=n.length;r<o;r++)e.removeChild(n[r])},e.extractContents=function(){for(var e=this._start.ownerDocument.createDocumentFragment(),n=t(this._start,this._end),r=0,o=n.length;r<o;r++)e.appendChild(n[r]);return e},e.setEndAfter=function(e){this._end=e},e.setEndBefore=function(e){this._end=e.previousSibling},e.setStartAfter=function(e){this._start=e.nextSibling},e.setStartBefore=function(e){this._start=e}}function t(e,t){for(var n=[e];e!==t;)n.push(e=e.nextSibling);return n}function n(){}}()}function w(e,t,n,r){for(var o,i,a=n.slice(),c=function(e,t){return e.currentTarget=t,e.eventPhase=e.target===e.currentTarget?2:3,e}(t,e),u=0,s=a.length;u<s&&("object"==typeof(o=a[u])?"function"==typeof o.handleEvent&&o.handleEvent(c):o.call(e,c),!c.stoppedImmediatePropagation);u++);return i=!c.stoppedPropagation,r&&i&&e.parentNode?e.parentNode.dispatchEvent(c):!c.defaultPrevented}function _(e,t){return{configurable:!0,get:e,set:t}}function E(e,t,n){var r=c(t||e,n);i(e,"textContent",_((function(){return r.get.call(this)}),(function(e){r.set.call(this,e)})))}function k(e,t){for(var n=e.length;n--&&e[n]!==t;);return n}function S(){if("BR"===this.tagName)return"\n";for(var e=this.firstChild,t=[];e;)8!==e.nodeType&&7!==e.nodeType&&t.push(e.textContent),e=e.nextSibling;return t.join("")}function C(e){var t=document.createEvent("Event");t.initEvent("input",!0,!0),(e.srcElement||e.fromElement||document).dispatchEvent(t)}function N(e){!r&&d.test(document.readyState)&&(r=!r,document.detachEvent("onreadystatechange",N),(e=document.createEvent("Event")).initEvent("DOMContentLoaded",!0,!0),document.dispatchEvent(e))}function A(e){return function(){return g[e]||document.body&&document.body[e]||0}}function T(e){for(var t;t=this.lastChild;)this.removeChild(t);null!=e&&this.appendChild(document.createTextNode(e))}function O(t,n){return n||(n=e.event),n.target||(n.target=n.srcElement||n.fromElement||document),n.timeStamp||(n.timeStamp=(new Date).getTime()),n}}(window)},function(e,t,n){"use strict";!function(e){function t(){return f.createDocumentFragment()}function n(e){return f.createElement(e)}function r(e,t){if(!e)throw new Error("Failed to construct "+t+": 1 argument required, but only 0 present.")}function o(e){if(1===e.length)return i(e[0]);for(var n=t(),r=M.call(e),o=0;o<e.length;o++)n.appendChild(i(r[o]));return n}function i(e){return"object"==typeof e?e:f.createTextNode(e)}for(var a,c,u,s,l,f=e.document,d=Object.prototype.hasOwnProperty,p=Object.defineProperty||function(e,t,n){return d.call(n,"value")?e[t]=n.value:(d.call(n,"get")&&e.__defineGetter__(t,n.get),d.call(n,"set")&&e.__defineSetter__(t,n.set)),e},h=[].indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},g=function(e){var t="undefined"==typeof e.className,n=t?e.getAttribute("class")||"":e.className,r=t||"object"==typeof n,o=(r?t?n:n.baseVal:n).replace(m,"");o.length&&I.push.apply(this,o.split(y)),this._isSVG=r,this._=e},v={get:function(){return new g(this)},set:function(){}},m=/^\s+|\s+$/g,y=/\s+/,b=function(e,t){return this.contains(e)?t||this.remove(e):(t===undefined||t)&&(t=!0,this.add(e)),!!t},x=e.DocumentFragment&&DocumentFragment.prototype,w=e.Node,_=(w||Element).prototype,E=e.CharacterData||w,k=E&&E.prototype,S=e.DocumentType,C=S&&S.prototype,N=(e.Element||w||e.HTMLElement).prototype,A=e.HTMLSelectElement||n("select").constructor,T=A.prototype.remove,O=e.SVGElement,I=["matches",N.matchesSelector||N.webkitMatchesSelector||N.khtmlMatchesSelector||N.mozMatchesSelector||N.msMatchesSelector||N.oMatchesSelector||function(e){var t=this.parentNode;return!!t&&-1<h.call(t.querySelectorAll(e),this)},"closest",function(e){for(var t,n=this;(t=n&&n.matches)&&!n.matches(e);)n=n.parentNode;return t?n:null},"prepend",function(){var e=this.firstChild,t=o(arguments);e?this.insertBefore(t,e):this.appendChild(t)},"append",function(){this.appendChild(o(arguments))},"before",function(){var e=this.parentNode;e&&e.insertBefore(o(arguments),this)},"after",function(){var e=this.parentNode,t=this.nextSibling,n=o(arguments);e&&(t?e.insertBefore(n,t):e.appendChild(n))},"toggleAttribute",function(e,t){var n=this.hasAttribute(e);return 1<arguments.length?n&&!t?this.removeAttribute(e):t&&!n&&this.setAttribute(e,""):n?this.removeAttribute(e):this.setAttribute(e,""),this.hasAttribute(e)},"replace",function(){this.replaceWith.apply(this,arguments)},"replaceWith",function(){var e=this.parentNode;e&&e.replaceChild(o(arguments),this)},"remove",function(){var e=this.parentNode;e&&e.removeChild(this)}],M=I.slice,L=I.length;L;L-=2)if((c=I[L-2])in N||(N[c]=I[L-1]),"remove"!==c||T._dom4||((A.prototype[c]=function(){return 0<arguments.length?T.apply(this,arguments):N.remove.call(this)})._dom4=!0),/^(?:before|after|replace|replaceWith|remove)$/.test(c)&&(E&&!(c in k)&&(k[c]=I[L-1]),S&&!(c in C)&&(C[c]=I[L-1])),/^(?:append|prepend)$/.test(c))if(x)c in x||(x[c]=I[L-1]);else try{t().constructor.prototype[c]=I[L-1]}catch(R){}var V;n("a").matches("a")||(N[c]=(V=N[c],function(e){return V.call(this.parentNode?this:t().appendChild(this),e)})),g.prototype={length:0,add:function(){for(var e,t=0;t<arguments.length;t++)e=arguments[t],this.contains(e)||I.push.call(this,c);this._isSVG?this._.setAttribute("class",""+this):this._.className=""+this},contains:function(e){return function(t){return-1<(L=e.call(this,c=function(e){if(!e)throw"SyntaxError";if(y.test(e))throw"InvalidCharacterError";return e}(t)))}}([].indexOf||function(e){for(L=this.length;L--&&this[L]!==e;);return L}),item:function(e){return this[e]||null},remove:function(){for(var e,t=0;t<arguments.length;t++)e=arguments[t],this.contains(e)&&I.splice.call(this,L,1);this._isSVG?this._.setAttribute("class",""+this):this._.className=""+this},toggle:b,toString:function(){return I.join.call(this," ")}},O&&!("classList"in O.prototype)&&p(O.prototype,"classList",v),"classList"in f.documentElement?((s=n("div").classList).add("a","b","a"),"a b"!=s&&("add"in(u=s.constructor.prototype)||(u=e.TemporaryTokenList.prototype),l=function(e){return function(){for(var t=0;t<arguments.length;)e.call(this,arguments[t++])}},u.add=l(u.add),u.remove=l(u.remove),u.toggle=b)):p(N,"classList",v),"contains"in _||p(_,"contains",{value:function(e){for(;e&&e!==this;)e=e.parentNode;return this===e}}),"head"in f||p(f,"head",{get:function(){return a||(a=f.getElementsByTagName("head")[0])}}),function(){for(var t,n=e.requestAnimationFrame,r=e.cancelAnimationFrame,o=["o","ms","moz","webkit"],i=o.length;!r&&i--;)n=n||e[o[i]+"RequestAnimationFrame"],r=e[o[i]+"CancelAnimationFrame"]||e[o[i]+"CancelRequestAnimationFrame"];r||(n?(t=n,n=function(e){var n=!0;return t((function(){n&&e.apply(this,arguments)})),function(){n=!1}},r=function(e){e()}):(n=function(e){return setTimeout(e,15,15)},r=function(e){clearTimeout(e)})),e.requestAnimationFrame=n,e.cancelAnimationFrame=r}();try{new e.CustomEvent("?")}catch(R){e.CustomEvent=function(e,t){function n(e,t,n,r){this.initEvent(e,t,n),this.detail=r}return function(r,o){var i=f.createEvent(e);if("string"!=typeof r)throw new Error("An event name must be provided");return"Event"==e&&(i.initCustomEvent=n),null==o&&(o=t),i.initCustomEvent(r,o.bubbles,o.cancelable,o.detail),i}}(e.CustomEvent?"CustomEvent":"Event",{bubbles:!1,cancelable:!1,detail:null})}try{new Event("_")}catch(R){R=function(e){function t(e,t){r(arguments.length,"Event");var n=f.createEvent("Event");return t||(t={}),n.initEvent(e,!!t.bubbles,!!t.cancelable),n}return t.prototype=e.prototype,t}(e.Event||function(){}),p(e,"Event",{value:R}),Event!==R&&(Event=R)}try{new KeyboardEvent("_",{})}catch(R){R=function(t){var n,o=0,i={char:"",key:"",location:0,ctrlKey:!1,shiftKey:!1,altKey:!1,metaKey:!1,altGraphKey:!1,repeat:!1,locale:navigator.language,detail:0,bubbles:!1,cancelable:!1,keyCode:0,charCode:0,which:0};try{var a=f.createEvent("KeyboardEvent");a.initKeyboardEvent("keyup",!1,!1,e,"+",3,!0,!1,!0,!1,!1),o="+"==(a.keyIdentifier||a.key)&&3==(a.keyLocation||a.location)&&(a.ctrlKey?a.altKey?1:3:a.shiftKey?2:4)||9}catch(R){}function c(e){for(var t=[],n=["ctrlKey","Control","shiftKey","Shift","altKey","Alt","metaKey","Meta","altGraphKey","AltGraph"],r=0;r<n.length;r+=2)e[n[r]]&&t.push(n[r+1]);return t.join(" ")}function u(e,t){for(var n in t)t.hasOwnProperty(n)&&!t.hasOwnProperty.call(e,n)&&(e[n]=t[n]);return e}function s(e,t,n){try{t[e]=n[e]}catch(R){}}function l(t,a){r(arguments.length,"KeyboardEvent"),a=u(a||{},i);var l,d=f.createEvent(n),p=a.ctrlKey,h=a.shiftKey,g=a.altKey,v=a.metaKey,m=a.altGraphKey,y=o>3?c(a):null,b=String(a.key),x=String(a.char),w=a.location,_=a.keyCode||(a.keyCode=b)&&b.charCodeAt(0)||0,E=a.charCode||(a.charCode=x)&&x.charCodeAt(0)||0,k=a.bubbles,S=a.cancelable,C=a.repeat,N=a.locale,A=a.view||e;if(a.which||(a.which=a.keyCode),"initKeyEvent"in d)d.initKeyEvent(t,k,S,A,p,g,h,v,_,E);else if(0<o&&"initKeyboardEvent"in d){switch(l=[t,k,S,A],o){case 1:l.push(b,w,p,h,g,v,m);break;case 2:l.push(p,g,h,v,_,E);break;case 3:l.push(b,w,p,g,h,v,m);break;case 4:l.push(b,w,y,C,N);break;default:l.push(char,b,w,y,C,N)}d.initKeyboardEvent.apply(d,l)}else d.initEvent(t,k,S);for(b in d)i.hasOwnProperty(b)&&d[b]!==a[b]&&s(b,d,a);return d}return n=0<o?"KeyboardEvent":"Event",l.prototype=t.prototype,l}(e.KeyboardEvent||function(){}),p(e,"KeyboardEvent",{value:R}),KeyboardEvent!==R&&(KeyboardEvent=R)}try{new MouseEvent("_",{})}catch(R){R=function(t){function n(t,n){r(arguments.length,"MouseEvent");var o=f.createEvent("MouseEvent");return n||(n={}),o.initMouseEvent(t,!!n.bubbles,!!n.cancelable,n.view||e,n.detail||1,n.screenX||0,n.screenY||0,n.clientX||0,n.clientY||0,!!n.ctrlKey,!!n.altKey,!!n.shiftKey,!!n.metaKey,n.button||0,n.relatedTarget||null),o}return n.prototype=t.prototype,n}(e.MouseEvent||function(){}),p(e,"MouseEvent",{value:R}),MouseEvent!==R&&(MouseEvent=R)}f.querySelectorAll("*").forEach||function(){function e(e){var t=e.querySelectorAll;e.querySelectorAll=function(e){var n=t.call(this,e);return n.forEach=Array.prototype.forEach,n}}e(f),e(Element.prototype)}();try{f.querySelector(":scope *")}catch(R){!function(){var e="data-scope-"+(1e9*Math.random()>>>0),t=Element.prototype,n=t.querySelector,r=t.querySelectorAll;function o(t,n,r){t.setAttribute(e,null);var o=n.call(t,String(r).replace(/(^|,\s*)(:scope([ >]|$))/g,(function(t,n,r,o){return n+"["+e+"]"+(o||" ")})));return t.removeAttribute(e),o}t.querySelector=function(e){return o(this,n,e)},t.querySelectorAll=function(e){return o(this,r,e)}}()}}(window),function(e){var t=e.WeakMap||function(){var e,t=0,n=!1,r=!1;function o(t,o,i){r=i,n=!1,e=undefined,t.dispatchEvent(o)}function i(e){this.value=e}function c(){t++,this.__ce__=new a("@DOMMap:"+t+Math.random())}return i.prototype.handleEvent=function(t){n=!0,r?t.currentTarget.removeEventListener(t.type,this,!1):e=this.value},c.prototype={constructor:c,"delete":function(e){return o(e,this.__ce__,!0),n},get:function(t){o(t,this.__ce__,!1);var n=e;return e=undefined,n},has:function(e){return o(e,this.__ce__,!1),n},set:function(e,t){return o(e,this.__ce__,!0),e.addEventListener(this.__ce__.type,new i(t),!1),this}},c}();function n(){}function r(e,t,n){function o(e){o.once&&(e.currentTarget.removeEventListener(e.type,t,o),o.removed=!0),o.passive&&(e.preventDefault=r.preventDefault),"function"==typeof o.callback?o.callback.call(this,e):o.callback&&o.callback.handleEvent(e),o.passive&&delete e.preventDefault}return o.type=e,o.callback=t,o.capture=!!n.capture,o.passive=!!n.passive,o.once=!!n.once,o.removed=!1,o}n.prototype=(Object.create||Object)(null),r.preventDefault=function(){};var o,i,a=e.CustomEvent,c=e.dispatchEvent,u=e.addEventListener,s=e.removeEventListener,l=0,f=function(){l++},d=[].indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},p=function(e){return"".concat(e.capture?"1":"0",e.passive?"1":"0",e.once?"1":"0")};try{u("_",f,{once:!0}),c(new a("_")),c(new a("_")),s("_",f,{once:!0})}catch(h){}1!==l&&(i=new t,o=function(e){if(e){var t=e.prototype;t.addEventListener=function(e){return function(t,o,a){if(a&&"boolean"!=typeof a){var c,u,s,l=i.get(this),f=p(a);l||i.set(this,l=new n),t in l||(l[t]={handler:[],wrap:[]}),u=l[t],(c=d.call(u.handler,o))<0?(c=u.handler.push(o)-1,u.wrap[c]=s=new n):s=u.wrap[c],f in s||(s[f]=r(t,o,a),e.call(this,t,s[f],s[f].capture))}else e.call(this,t,o,a)}}(t.addEventListener),t.removeEventListener=function(e){return function(t,n,r){if(r&&"boolean"!=typeof r){var o,a,c,u,s=i.get(this);if(s&&t in s&&(c=s[t],-1<(a=d.call(c.handler,n))&&(o=p(r))in(u=c.wrap[a]))){for(o in e.call(this,t,u[o],u[o].capture),delete u[o],u)return;c.handler.splice(a,1),c.wrap.splice(a,1),0===c.handler.length&&delete s[t]}}else e.call(this,t,n,r)}}(t.removeEventListener)}},e.EventTarget?o(EventTarget):(o(e.Text),o(e.Element||e.HTMLElement),o(e.HTMLDocument),o(e.Window||{prototype:e}),o(e.XMLHttpRequest)))}(window)},function(e,t,n){"use strict";!function(e){if("undefined"!=typeof e.setAttribute){var t=function(e){return e.replace(/-[a-z]/g,(function(e){return e[1].toUpperCase()}))};e.setProperty=function(e,n){var r=t(e);if(!n)return this.removeAttribute(r);var o=String(n);return this.setAttribute(r,o)},e.getPropertyValue=function(e){var n=t(e);return this.getAttribute(n)||null},e.removeProperty=function(e){var n=t(e),r=this.getAttribute(n);return this.removeAttribute(n),r}}}(CSSStyleDeclaration.prototype)},function(e,t,n){"use strict";window.Int32Array||(window.Int32Array=Array)},,function(e,t,n){"use strict";t.__esModule=!0,t._CI=Ae,t._HI=B,t._M=Te,t._MCCC=Le,t._ME=Ie,t._MFCC=Ve,t._MP=Ce,t._MR=ye,t.__render=je,t.createComponentVNode=function(e,t,n,r,o){var a=new T(1,null,null,e=function(e,t){if(12&e)return e;if(t.prototype&&t.prototype.render)return 4;if(t.render)return 32776;return 8}(e,t),r,function(e,t,n){var r=(32768&e?t.render:t).defaultProps;if(i(r))return n;if(i(n))return l(r,null);return N(n,r)}(e,t,n),function(e,t,n){if(4&e)return n;var r=(32768&e?t.render:t).defaultHooks;if(i(r))return n;if(i(n))return r;return N(n,r)}(e,t,o),t);k.createVNode&&k.createVNode(a);return a},t.createFragment=M,t.createPortal=function(e,t){var n=B(e);return O(1024,1024,null,n,0,null,n.key,t)},t.createRef=function(){return{current:null}},t.createRenderer=function(e){return function(t,n,r,o){e||(e=t),Fe(n,e,r,o)}},t.createTextVNode=I,t.createVNode=O,t.directClone=L,t.findDOMfromVNode=b,t.forwardRef=function(e){return{render:e}},t.getFlagsForElementVnode=function(e){switch(e){case"svg":return 32;case"input":return 64;case"select":return 256;case"textarea":return 128;case"$F":return 8192;default:return 1}},t.linkEvent=function(e,t){if(c(t))return{data:e,event:t};return null},t.normalizeProps=function(e){var t=e.props;if(t){var n=e.flags;481&n&&(void 0!==t.children&&i(e.children)&&P(e,t.children),void 0!==t.className&&(e.className=t.className||null,t.className=undefined)),void 0!==t.key&&(e.key=t.key,t.key=undefined),void 0!==t.ref&&(e.ref=8&n?l(e.ref,t.ref):t.ref,t.ref=undefined)}return e},t.render=Fe,t.rerender=He,t.version=t.options=t.Fragment=t.EMPTY_OBJ=t.Component=void 0;var r=Array.isArray;function o(e){var t=typeof e;return"string"===t||"number"===t}function i(e){return null==e}function a(e){return null===e||!1===e||!0===e||void 0===e}function c(e){return"function"==typeof e}function u(e){return"string"==typeof e}function s(e){return null===e}function l(e,t){var n={};if(e)for(var r in e)n[r]=e[r];if(t)for(var o in t)n[o]=t[o];return n}function f(e){return!s(e)&&"object"==typeof e}var d={};t.EMPTY_OBJ=d;function p(e){return e.substr(2).toLowerCase()}function h(e,t){e.appendChild(t)}function g(e,t,n){s(n)?h(e,t):e.insertBefore(t,n)}function v(e,t){e.removeChild(t)}function m(e){for(var t=0;t<e.length;t++)e[t]()}function y(e,t,n){var r=e.children;return 4&n?r.$LI:8192&n?2===e.childFlags?r:r[t?0:r.length-1]:r}function b(e,t){for(var n;e;){if(2033&(n=e.flags))return e.dom;e=y(e,t,n)}return null}function x(e,t){do{var n=e.flags;if(2033&n)return void v(t,e.dom);var r=e.children;if(4&n&&(e=r.$LI),8&n&&(e=r),8192&n){if(2!==e.childFlags){for(var o=0,i=r.length;o<i;++o)x(r[o],t);return}e=r}}while(e)}function w(e,t,n){do{var r=e.flags;if(2033&r)return void g(t,e.dom,n);var o=e.children;if(4&r&&(e=o.$LI),8&r&&(e=o),8192&r){if(2!==e.childFlags){for(var i=0,a=o.length;i<a;++i)w(o[i],t,n);return}e=o}}while(e)}function _(e,t,n){return e.constructor.getDerivedStateFromProps?l(n,e.constructor.getDerivedStateFromProps(t,n)):n}t.Fragment="$F";var E={v:!1},k={componentComparator:null,createVNode:null,renderComplete:null};function S(e,t){e.textContent=t}function C(e,t){return f(e)&&e.event===t.event&&e.data===t.data}function N(e,t){for(var n in t)void 0===e[n]&&(e[n]=t[n]);return e}function A(e,t){return!!c(e)&&(e(t),!0)}t.options=k;function T(e,t,n,r,o,i,a,c){this.childFlags=e,this.children=t,this.className=n,this.dom=null,this.flags=r,this.key=void 0===o?null:o,this.props=void 0===i?null:i,this.ref=void 0===a?null:a,this.type=c}function O(e,t,n,r,o,i,a,c){var u=void 0===o?1:o,s=new T(u,r,n,e,a,i,c,t);return k.createVNode&&k.createVNode(s),0===u&&P(s,s.children),s}function I(e,t){return new T(1,i(e)||!0===e||!1===e?"":e,null,16,t,null,null,null)}function M(e,t,n){var r=O(8192,8192,null,e,t,null,n,null);switch(r.childFlags){case 1:r.children=V(),r.childFlags=2;break;case 16:r.children=[I(e)],r.childFlags=4}return r}function L(e){var t=-16385&e.flags,n=e.props;if(14&t&&!s(n)){var r=n;for(var o in n={},r)n[o]=r[o]}return 0==(8192&t)?new T(e.childFlags,e.children,e.className,t,e.key,n,e.ref,e.type):function(e){var t,n=e.children,r=e.childFlags;if(2===r)t=L(n);else if(12&r){t=[];for(var o=0,i=n.length;o<i;++o)t.push(L(n[o]))}return M(t,r,e.key)}(e)}function V(){return I("",null)}function R(e,t,n,i){for(var c=e.length;n<c;n++){var l=e[n];if(!a(l)){var f=i+"$"+n;if(r(l))R(l,t,0,f);else{if(o(l))l=I(l,f);else{var d=l.key,p=u(d)&&"$"===d[0];(81920&l.flags||p)&&(l=L(l)),l.flags|=65536,p?d.substring(0,i.length)!==i&&(l.key=i+d):s(d)?l.key=f:l.key=i+d}t.push(l)}}}}function P(e,t){var n,i=1;if(a(t))n=t;else if(o(t))i=16,n=t;else if(r(t)){for(var c=t.length,l=0;l<c;++l){var f=t[l];if(a(f)||r(f)){n=n||t.slice(0,l),R(t,n,l,"");break}if(o(f))(n=n||t.slice(0,l)).push(I(f,"$"+l));else{var d=f.key,p=(81920&f.flags)>0,h=s(d),g=u(d)&&"$"===d[0];p||h||g?(n=n||t.slice(0,l),(p||g)&&(f=L(f)),(h||g)&&(f.key="$"+l),n.push(f)):n&&n.push(f),f.flags|=65536}}i=0===(n=n||t).length?1:8}else(n=t).flags|=65536,81920&t.flags&&(n=L(t)),i=2;return e.children=n,e.childFlags=i,e}function B(e){return a(e)||o(e)?I(e,null):r(e)?M(e,0,null):16384&e.flags?L(e):e}var D="http://www.w3.org/1999/xlink",j="http://www.w3.org/XML/1998/namespace",F={"xlink:actuate":D,"xlink:arcrole":D,"xlink:href":D,"xlink:role":D,"xlink:show":D,"xlink:title":D,"xlink:type":D,"xml:base":j,"xml:lang":j,"xml:space":j};function K(e){return{onClick:e,onDblClick:e,onFocusIn:e,onFocusOut:e,onKeyDown:e,onKeyPress:e,onKeyUp:e,onMouseDown:e,onMouseMove:e,onMouseUp:e,onTouchEnd:e,onTouchMove:e,onTouchStart:e}}var z=K(0),Y=K(null),U=K(!0);function $(e,t){var n=t.$EV;return n||(n=t.$EV=K(null)),n[e]||1==++z[e]&&(Y[e]=function(e){var t="onClick"===e||"onDblClick"===e?function(e){return function(t){0===t.button?W(t,!0,e,Z(t)):t.stopPropagation()}}(e):function(e){return function(t){W(t,!1,e,Z(t))}}(e);return document.addEventListener(p(e),t),t}(e)),n}function H(e,t){var n=t.$EV;n&&n[e]&&(0==--z[e]&&(document.removeEventListener(p(e),Y[e]),Y[e]=null),n[e]=null)}function W(e,t,n,r){var o=function(e){return c(e.composedPath)?e.composedPath()[0]:e.target}(e);do{if(t&&o.disabled)return;var i=o.$EV;if(i){var a=i[n];if(a&&(r.dom=o,a.event?a.event(a.data,e):a(e),e.cancelBubble))return}o=o.parentNode}while(!s(o))}function q(){this.cancelBubble=!0,this.immediatePropagationStopped||this.stopImmediatePropagation()}function G(){return this.defaultPrevented}function X(){return this.cancelBubble}function Z(e){var t={dom:document};return e.isDefaultPrevented=G,e.isPropagationStopped=X,e.stopPropagation=q,Object.defineProperty(e,"currentTarget",{configurable:!0,get:function(){return t.dom}}),t}function Q(e,t,n){if(e[t]){var r=e[t];r.event?r.event(r.data,n):r(n)}else{var o=t.toLowerCase();e[o]&&e[o](n)}}function J(e,t){var n=function(n){var r=this.$V;if(r){var o=r.props||d,i=r.dom;if(u(e))Q(o,e,n);else for(var a=0;a<e.length;++a)Q(o,e[a],n);if(c(t)){var s=this.$V,l=s.props||d;t(l,i,!1,s)}}};return Object.defineProperty(n,"wrapped",{configurable:!1,enumerable:!1,value:!0,writable:!1}),n}function ee(e,t,n){var r="$"+t,o=e[r];if(o){if(o[1].wrapped)return;e.removeEventListener(o[0],o[1]),e[r]=null}c(n)&&(e.addEventListener(t,n),e[r]=[t,n])}function te(e){return"checkbox"===e||"radio"===e}var ne=J("onInput",ie),re=J(["onClick","onChange"],ie);function oe(e){e.stopPropagation()}function ie(e,t){var n=e.type,r=e.value,o=e.checked,a=e.multiple,c=e.defaultValue,u=!i(r);n&&n!==t.type&&t.setAttribute("type",n),i(a)||a===t.multiple||(t.multiple=a),i(c)||u||(t.defaultValue=c+""),te(n)?(u&&(t.value=r),i(o)||(t.checked=o)):u&&t.value!==r?(t.defaultValue=r,t.value=r):i(o)||(t.checked=o)}function ae(e,t){if("option"===e.type)!function(e,t){var n=e.props||d,o=e.dom;o.value=n.value,n.value===t||r(t)&&-1!==t.indexOf(n.value)?o.selected=!0:i(t)&&i(n.selected)||(o.selected=n.selected||!1)}(e,t);else{var n=e.children,o=e.flags;if(4&o)ae(n.$LI,t);else if(8&o)ae(n,t);else if(2===e.childFlags)ae(n,t);else if(12&e.childFlags)for(var a=0,c=n.length;a<c;++a)ae(n[a],t)}}oe.wrapped=!0;var ce=J("onChange",ue);function ue(e,t,n,r){var o=Boolean(e.multiple);i(e.multiple)||o===t.multiple||(t.multiple=o);var a=e.selectedIndex;if(-1===a&&(t.selectedIndex=-1),1!==r.childFlags){var c=e.value;"number"==typeof a&&a>-1&&t.options[a]&&(c=t.options[a].value),n&&i(c)&&(c=e.defaultValue),ae(r,c)}}var se,le,fe=J("onInput",pe),de=J("onChange");function pe(e,t,n){var r=e.value,o=t.value;if(i(r)){if(n){var a=e.defaultValue;i(a)||a===o||(t.defaultValue=a,t.value=a)}}else o!==r&&(t.defaultValue=r,t.value=r)}function he(e,t,n,r,o,i){64&e?ie(r,n):256&e?ue(r,n,o,t):128&e&&pe(r,n,o),i&&(n.$V=t)}function ge(e,t,n){64&e?function(e,t){te(t.type)?(ee(e,"change",re),ee(e,"click",oe)):ee(e,"input",ne)}(t,n):256&e?function(e){ee(e,"change",ce)}(t):128&e&&function(e,t){ee(e,"input",fe),t.onChange&&ee(e,"change",de)}(t,n)}function ve(e){return e.type&&te(e.type)?!i(e.checked):!i(e.value)}function me(e){e&&!A(e,null)&&e.current&&(e.current=null)}function ye(e,t,n){e&&(c(e)||void 0!==e.current)&&n.push((function(){A(e,t)||void 0===e.current||(e.current=t)}))}function be(e,t){xe(e),x(e,t)}function xe(e){var t,n=e.flags,r=e.children;if(481&n){t=e.ref;var o=e.props;me(t);var a=e.childFlags;if(!s(o))for(var u=Object.keys(o),l=0,f=u.length;l<f;l++){var p=u[l];U[p]&&H(p,e.dom)}12&a?we(r):2===a&&xe(r)}else r&&(4&n?(c(r.componentWillUnmount)&&r.componentWillUnmount(),me(e.ref),r.$UN=!0,xe(r.$LI)):8&n?(!i(t=e.ref)&&c(t.onComponentWillUnmount)&&t.onComponentWillUnmount(b(e,!0),e.props||d),xe(r)):1024&n?be(r,e.ref):8192&n&&12&e.childFlags&&we(r))}function we(e){for(var t=0,n=e.length;t<n;++t)xe(e[t])}function _e(e){e.textContent=""}function Ee(e,t,n){we(n),8192&t.flags?x(t,e):_e(e)}function ke(e,t,n,r){var o=e&&e.__html||"",a=t&&t.__html||"";o!==a&&(i(a)||function(e,t){var n=document.createElement("i");return n.innerHTML=t,n.innerHTML===e.innerHTML}(r,a)||(s(n)||(12&n.childFlags?we(n.children):2===n.childFlags&&xe(n.children),n.children=null,n.childFlags=1),r.innerHTML=a))}function Se(e,t,n,r,o,a,s){switch(e){case"children":case"childrenType":case"className":case"defaultValue":case"key":case"multiple":case"ref":case"selectedIndex":break;case"autoFocus":r.autofocus=!!n;break;case"allowfullscreen":case"autoplay":case"capture":case"checked":case"controls":case"default":case"disabled":case"hidden":case"indeterminate":case"loop":case"muted":case"novalidate":case"open":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"selected":r[e]=!!n;break;case"defaultChecked":case"value":case"volume":if(a&&"value"===e)break;var l=i(n)?"":n;r[e]!==l&&(r[e]=l);break;case"style":!function(e,t,n){if(i(t))n.removeAttribute("style");else{var r,o,a=n.style;if(u(t))a.cssText=t;else if(i(e)||u(e))for(r in t)o=t[r],a.setProperty(r,o);else{for(r in t)(o=t[r])!==e[r]&&a.setProperty(r,o);for(r in e)i(t[r])&&a.removeProperty(r)}}}(t,n,r);break;case"dangerouslySetInnerHTML":ke(t,n,s,r);break;default:U[e]?function(e,t,n,r){if(c(n))$(e,r)[e]=n;else if(f(n)){if(C(t,n))return;$(e,r)[e]=n}else H(e,r)}(e,t,n,r):111===e.charCodeAt(0)&&110===e.charCodeAt(1)?function(e,t,n,r){if(f(n)){if(C(t,n))return;n=function(e){var t=e.event;return function(n){t(e.data,n)}}(n)}ee(r,p(e),n)}(e,t,n,r):i(n)?r.removeAttribute(e):o&&F[e]?r.setAttributeNS(F[e],e,n):r.setAttribute(e,n)}}function Ce(e,t,n,r,o){var i=!1,a=(448&t)>0;for(var c in a&&(i=ve(n))&&ge(t,r,n),n)Se(c,null,n[c],r,o,i,null);a&&he(t,e,r,n,!0,i)}function Ne(e,t,n){var r=B(e.render(t,e.state,n)),o=n;return c(e.getChildContext)&&(o=l(n,e.getChildContext())),e.$CX=o,r}function Ae(e,t,n,r,o,i){var a=new t(n,r),u=a.$N=Boolean(t.getDerivedStateFromProps||a.getSnapshotBeforeUpdate);if(a.$SVG=o,a.$L=i,e.children=a,a.$BS=!1,a.context=r,a.props===d&&(a.props=n),u)a.state=_(a,n,a.state);else if(c(a.componentWillMount)){a.$BR=!0,a.componentWillMount();var l=a.$PS;if(!s(l)){var f=a.state;if(s(f))a.state=l;else for(var p in l)f[p]=l[p];a.$PS=null}a.$BR=!1}return a.$LI=Ne(a,n,r),a}function Te(e,t,n,r,o,i){var a=e.flags|=16384;481&a?Ie(e,t,n,r,o,i):4&a?function(e,t,n,r,o,i){var a=Ae(e,e.type,e.props||d,n,r,i);Te(a.$LI,t,a.$CX,r,o,i),Le(e.ref,a,i)}(e,t,n,r,o,i):8&a?(!function(e,t,n,r,o,i){Te(e.children=B(function(e,t){return 32768&e.flags?e.type.render(e.props||d,e.ref,t):e.type(e.props||d,t)}(e,n)),t,n,r,o,i)}(e,t,n,r,o,i),Ve(e,i)):512&a||16&a?Oe(e,t,o):8192&a?function(e,t,n,r,o,i){var a=e.children,c=e.childFlags;12&c&&0===a.length&&(c=e.childFlags=2,a=e.children=V());2===c?Te(a,n,o,r,o,i):Me(a,n,t,r,o,i)}(e,n,t,r,o,i):1024&a&&function(e,t,n,r,o){Te(e.children,e.ref,t,!1,null,o);var i=V();Oe(i,n,r),e.dom=i.dom}(e,n,t,o,i)}function Oe(e,t,n){var r=e.dom=document.createTextNode(e.children);s(t)||g(t,r,n)}function Ie(e,t,n,r,o,a){var c=e.flags,u=e.props,l=e.className,f=e.children,d=e.childFlags,p=e.dom=function(e,t){return t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e)}(e.type,r=r||(32&c)>0);if(i(l)||""===l||(r?p.setAttribute("class",l):p.className=l),16===d)S(p,f);else if(1!==d){var h=r&&"foreignObject"!==e.type;2===d?(16384&f.flags&&(e.children=f=L(f)),Te(f,p,n,h,null,a)):8!==d&&4!==d||Me(f,p,n,h,null,a)}s(t)||g(t,p,o),s(u)||Ce(e,c,u,p,r),ye(e.ref,p,a)}function Me(e,t,n,r,o,i){for(var a=0;a<e.length;++a){var c=e[a];16384&c.flags&&(e[a]=c=L(c)),Te(c,t,n,r,o,i)}}function Le(e,t,n){ye(e,t,n),c(t.componentDidMount)&&n.push(function(e){return function(){e.componentDidMount()}}(t))}function Ve(e,t){var n=e.ref;i(n)||(A(n.onComponentWillMount,e.props||d),c(n.onComponentDidMount)&&t.push(function(e,t){return function(){e.onComponentDidMount(b(t,!0),t.props||d)}}(n,e)))}function Re(e,t,n,r,o,u,f){var p=t.flags|=16384;e.flags!==p||e.type!==t.type||e.key!==t.key||2048&p?16384&e.flags?function(e,t,n,r,o,i){xe(e),0!=(t.flags&e.flags&2033)?(Te(t,null,r,o,null,i),function(e,t,n){e.replaceChild(t,n)}(n,t.dom,e.dom)):(Te(t,n,r,o,b(e,!0),i),x(e,n))}(e,t,n,r,o,f):Te(t,n,r,o,u,f):481&p?function(e,t,n,r,o,a){var c,u=t.dom=e.dom,s=e.props,l=t.props,f=!1,p=!1;if(r=r||(32&o)>0,s!==l){var h=s||d;if((c=l||d)!==d)for(var g in(f=(448&o)>0)&&(p=ve(c)),c){var v=h[g],m=c[g];v!==m&&Se(g,v,m,u,r,p,e)}if(h!==d)for(var y in h)i(c[y])&&!i(h[y])&&Se(y,h[y],null,u,r,p,e)}var b=t.children,x=t.className;e.className!==x&&(i(x)?u.removeAttribute("class"):r?u.setAttribute("class",x):u.className=x);4096&o?function(e,t){e.textContent!==t&&(e.textContent=t)}(u,b):Pe(e.childFlags,t.childFlags,e.children,b,u,n,r&&"foreignObject"!==t.type,null,e,a);f&&he(o,t,u,c,!1,p);var w=t.ref,_=e.ref;_!==w&&(me(_),ye(w,u,a))}(e,t,r,o,p,f):4&p?function(e,t,n,r,o,i,a){var u=t.children=e.children;if(s(u))return;u.$L=a;var f=t.props||d,p=t.ref,h=e.ref,g=u.state;if(!u.$N){if(c(u.componentWillReceiveProps)){if(u.$BR=!0,u.componentWillReceiveProps(f,r),u.$UN)return;u.$BR=!1}s(u.$PS)||(g=l(g,u.$PS),u.$PS=null)}Be(u,g,f,n,r,o,!1,i,a),h!==p&&(me(h),ye(p,u,a))}(e,t,n,r,o,u,f):8&p?function(e,t,n,r,o,a,u){var s=!0,l=t.props||d,f=t.ref,p=e.props,h=!i(f),g=e.children;h&&c(f.onComponentShouldUpdate)&&(s=f.onComponentShouldUpdate(p,l));if(!1!==s){h&&c(f.onComponentWillUpdate)&&f.onComponentWillUpdate(p,l);var v=t.type,m=B(32768&t.flags?v.render(l,f,r):v(l,r));Re(g,m,n,r,o,a,u),t.children=m,h&&c(f.onComponentDidUpdate)&&f.onComponentDidUpdate(p,l)}else t.children=g}(e,t,n,r,o,u,f):16&p?function(e,t){var n=t.children,r=t.dom=e.dom;n!==e.children&&(r.nodeValue=n)}(e,t):512&p?t.dom=e.dom:8192&p?function(e,t,n,r,o,i){var a=e.children,c=t.children,u=e.childFlags,s=t.childFlags,l=null;12&s&&0===c.length&&(s=t.childFlags=2,c=t.children=V());var f=0!=(2&s);if(12&u){var d=a.length;(8&u&&8&s||f||!f&&c.length>d)&&(l=b(a[d-1],!1).nextSibling)}Pe(u,s,a,c,n,r,o,l,e,i)}(e,t,n,r,o,f):function(e,t,n,r){var o=e.ref,i=t.ref,c=t.children;if(Pe(e.childFlags,t.childFlags,e.children,c,o,n,!1,null,e,r),t.dom=e.dom,o!==i&&!a(c)){var u=c.dom;v(o,u),h(i,u)}}(e,t,r,f)}function Pe(e,t,n,r,o,i,a,c,u,s){switch(e){case 2:switch(t){case 2:Re(n,r,o,i,a,c,s);break;case 1:be(n,o);break;case 16:xe(n),S(o,r);break;default:!function(e,t,n,r,o,i){xe(e),Me(t,n,r,o,b(e,!0),i),x(e,n)}(n,r,o,i,a,s)}break;case 1:switch(t){case 2:Te(r,o,i,a,c,s);break;case 1:break;case 16:S(o,r);break;default:Me(r,o,i,a,c,s)}break;case 16:switch(t){case 16:!function(e,t,n){e!==t&&(""!==e?n.firstChild.nodeValue=t:S(n,t))}(n,r,o);break;case 2:_e(o),Te(r,o,i,a,c,s);break;case 1:_e(o);break;default:_e(o),Me(r,o,i,a,c,s)}break;default:switch(t){case 16:we(n),S(o,r);break;case 2:Ee(o,u,n),Te(r,o,i,a,c,s);break;case 1:Ee(o,u,n);break;default:var l=0|n.length,f=0|r.length;0===l?f>0&&Me(r,o,i,a,c,s):0===f?Ee(o,u,n):8===t&&8===e?function(e,t,n,r,o,i,a,c,u,s){var l,f,d=i-1,p=a-1,h=0,g=e[h],v=t[h];e:{for(;g.key===v.key;){if(16384&v.flags&&(t[h]=v=L(v)),Re(g,v,n,r,o,c,s),e[h]=v,++h>d||h>p)break e;g=e[h],v=t[h]}for(g=e[d],v=t[p];g.key===v.key;){if(16384&v.flags&&(t[p]=v=L(v)),Re(g,v,n,r,o,c,s),e[d]=v,d--,p--,h>d||h>p)break e;g=e[d],v=t[p]}}if(h>d){if(h<=p)for(f=(l=p+1)<a?b(t[l],!0):c;h<=p;)16384&(v=t[h]).flags&&(t[h]=v=L(v)),++h,Te(v,n,r,o,f,s)}else if(h>p)for(;h<=d;)be(e[h++],n);else!function(e,t,n,r,o,i,a,c,u,s,l,f,d){var p,h,g,v=0,m=c,y=c,x=i-c+1,_=a-c+1,E=new Int32Array(_+1),k=x===r,S=!1,C=0,N=0;if(o<4||(x|_)<32)for(v=m;v<=i;++v)if(p=e[v],N<_){for(c=y;c<=a;c++)if(h=t[c],p.key===h.key){if(E[c-y]=v+1,k)for(k=!1;m<v;)be(e[m++],u);C>c?S=!0:C=c,16384&h.flags&&(t[c]=h=L(h)),Re(p,h,u,n,s,l,d),++N;break}!k&&c>a&&be(p,u)}else k||be(p,u);else{var A={};for(v=y;v<=a;++v)A[t[v].key]=v;for(v=m;v<=i;++v)if(p=e[v],N<_)if(void 0!==(c=A[p.key])){if(k)for(k=!1;v>m;)be(e[m++],u);E[c-y]=v+1,C>c?S=!0:C=c,16384&(h=t[c]).flags&&(t[c]=h=L(h)),Re(p,h,u,n,s,l,d),++N}else k||be(p,u);else k||be(p,u)}if(k)Ee(u,f,e),Me(t,u,n,s,l,d);else if(S){var T=function(e){var t=0,n=0,r=0,o=0,i=0,a=0,c=0,u=e.length;u>De&&(De=u,se=new Int32Array(u),le=new Int32Array(u));for(;n<u;++n)if(0!==(t=e[n])){if(r=se[o],e[r]<t){le[n]=r,se[++o]=n;continue}for(i=0,a=o;i<a;)e[se[c=i+a>>1]]<t?i=c+1:a=c;t<e[se[i]]&&(i>0&&(le[n]=se[i-1]),se[i]=n)}i=o+1;var s=new Int32Array(i);a=se[i-1];for(;i-- >0;)s[i]=a,a=le[a],se[i]=0;return s}(E);for(c=T.length-1,v=_-1;v>=0;v--)0===E[v]?(16384&(h=t[C=v+y]).flags&&(t[C]=h=L(h)),Te(h,u,n,s,(g=C+1)<o?b(t[g],!0):l,d)):c<0||v!==T[c]?w(h=t[C=v+y],u,(g=C+1)<o?b(t[g],!0):l):c--}else if(N!==_)for(v=_-1;v>=0;v--)0===E[v]&&(16384&(h=t[C=v+y]).flags&&(t[C]=h=L(h)),Te(h,u,n,s,(g=C+1)<o?b(t[g],!0):l,d))}(e,t,r,i,a,d,p,h,n,o,c,u,s)}(n,r,o,i,a,l,f,c,u,s):function(e,t,n,r,o,i,a,c,u){for(var s,l,f=i>a?a:i,d=0;d<f;++d)s=t[d],l=e[d],16384&s.flags&&(s=t[d]=L(s)),Re(l,s,n,r,o,c,u),e[d]=s;if(i<a)for(d=f;d<a;++d)16384&(s=t[d]).flags&&(s=t[d]=L(s)),Te(s,n,r,o,c,u);else if(i>a)for(d=f;d<i;++d)be(e[d],n)}(n,r,o,i,a,l,f,c,s)}}}function Be(e,t,n,r,o,i,a,u,s){var f=e.state,d=e.props,p=Boolean(e.$N),h=c(e.shouldComponentUpdate);if(p&&(t=_(e,n,t!==f?l(f,t):t)),a||!h||h&&e.shouldComponentUpdate(n,t,o)){!p&&c(e.componentWillUpdate)&&e.componentWillUpdate(n,t,o),e.props=n,e.state=t,e.context=o;var g=null,v=Ne(e,n,o);p&&c(e.getSnapshotBeforeUpdate)&&(g=e.getSnapshotBeforeUpdate(d,f)),Re(e.$LI,v,r,e.$CX,i,u,s),e.$LI=v,c(e.componentDidUpdate)&&function(e,t,n,r,o){o.push((function(){e.componentDidUpdate(t,n,r)}))}(e,d,f,g,s)}else e.props=n,e.state=t,e.context=o}var De=0;function je(e,t,n,r){var o=[],a=t.$V;E.v=!0,i(a)?i(e)||(16384&e.flags&&(e=L(e)),Te(e,t,r,!1,null,o),t.$V=e,a=e):i(e)?(be(a,t),t.$V=null):(16384&e.flags&&(e=L(e)),Re(a,e,t,r,!1,null,o),a=t.$V=e),m(o),E.v=!1,c(n)&&n(),c(k.renderComplete)&&k.renderComplete(a,t)}function Fe(e,t,n,r){void 0===n&&(n=null),void 0===r&&(r=d),je(e,t,n,r)}"undefined"!=typeof document&&window.Node&&(Node.prototype.$EV=null,Node.prototype.$V=null);var Ke=[],ze="undefined"!=typeof Promise?Promise.resolve().then.bind(Promise.resolve()):function(e){window.setTimeout(e,0)},Ye=!1;function Ue(e,t,n,r){var o=e.$PS;if(c(t)&&(t=t(o?l(e.state,o):e.state,e.props,e.context)),i(o))e.$PS=t;else for(var a in t)o[a]=t[a];if(e.$BR)c(n)&&e.$L.push(n.bind(e));else{if(!E.v&&0===Ke.length)return We(e,r),void(c(n)&&n.call(e));if(-1===Ke.indexOf(e)&&Ke.push(e),Ye||(Ye=!0,ze(He)),c(n)){var u=e.$QU;u||(u=e.$QU=[]),u.push(n)}}}function $e(e){for(var t=e.$QU,n=0;n<t.length;++n)t[n].call(e);e.$QU=null}function He(){var e;for(Ye=!1;e=Ke.shift();)e.$UN||(We(e,!1),e.$QU&&$e(e))}function We(e,t){if(t||!e.$BR){var n=e.$PS;e.$PS=null;var r=[];E.v=!0,Be(e,l(e.state,n),e.props,b(e.$LI,!0).parentNode,e.context,e.$SVG,t,null,r),m(r),E.v=!1}else e.state=e.$PS,e.$PS=null}var qe=function(e,t){this.state=null,this.$BR=!1,this.$BS=!0,this.$PS=null,this.$LI=null,this.$UN=!1,this.$CX=null,this.$QU=null,this.$N=!1,this.$L=null,this.$SVG=!1,this.props=e||d,this.context=t||d};t.Component=qe,qe.prototype.forceUpdate=function(e){this.$UN||Ue(this,{},e,!0)},qe.prototype.setState=function(e,t){this.$UN||this.$BS||Ue(this,e,t,!1)},qe.prototype.render=function(e,t,n){return null};t.version="7.4.2"},,,,,,,,,,,function(e,t,n){"use strict";(function(e){var n;n=void 0!==e?e:void 0,t.loadCSS=function(e,t,r,o){var i,a=n.document,c=a.createElement("link");if(t)i=t;else{var u=(a.body||a.getElementsByTagName("head")[0]).childNodes;i=u[u.length-1]}var s=a.styleSheets;if(o)for(var l in o)o.hasOwnProperty(l)&&c.setAttribute(l,o[l]);c.rel="stylesheet",c.href=e,c.media="only x",function p(e){if(a.body)return e();setTimeout((function(){p(e)}))}((function(){i.parentNode.insertBefore(c,t?i:i.nextSibling)}));var f=function h(e){for(var t=c.href,n=s.length;n--;)if(s[n].href===t)return e();setTimeout((function(){h(e)}))};function d(){c.addEventListener&&c.removeEventListener("load",d),c.media=r||"all"}return c.addEventListener&&c.addEventListener("load",d),c.onloadcssdefined=f,f(d),c}}).call(this,n(81))},function(e,t,n){"use strict";(function(e,t){!function(e,n){if(!e.setImmediate){var r,o,i,a,c,u=1,s={},l=!1,f=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){h(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((i=new MessageChannel).port1.onmessage=function(e){h(e.data)},r=function(e){i.port2.postMessage(e)}):f&&"onreadystatechange"in f.createElement("script")?(o=f.documentElement,r=function(e){var t=f.createElement("script");t.onreadystatechange=function(){h(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):r=function(e){setTimeout(h,0,e)}:(a="setImmediate$"+Math.random()+"$",c=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(a)&&h(+t.data.slice(a.length))},e.addEventListener?e.addEventListener("message",c,!1):e.attachEvent("onmessage",c),r=function(t){e.postMessage(a+t,"*")}),d.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var o={callback:e,args:t};return s[u]=o,r(u),u++},d.clearImmediate=p}function p(e){delete s[e]}function h(e){if(l)setTimeout(h,0,e);else{var t=s[e];if(t){l=!0;try{!function(e){var t=e.callback,n=e.args;switch(n.length){case 0:t();break;case 1:t(n[0]);break;case 2:t(n[0],n[1]);break;case 3:t(n[0],n[1],n[2]);break;default:t.apply(void 0,n)}}(t)}finally{p(e),l=!1}}}}}("undefined"==typeof self?void 0===e?void 0:e:self)}).call(this,n(81),n(461))},function(e,t,n){"use strict";var r,o,i=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function c(){throw new Error("clearTimeout has not been defined")}function u(e){if(r===setTimeout)return setTimeout(e,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(e){r=a}try{o="function"==typeof clearTimeout?clearTimeout:c}catch(e){o=c}}();var s,l=[],f=!1,d=-1;function p(){f&&s&&(f=!1,s.length?l=s.concat(l):d=-1,l.length&&h())}function h(){if(!f){var e=u(p);f=!0;for(var t=l.length;t;){for(s=l,l=[];++d<t;)s&&s[d].run();d=-1,t=l.length}s=null,f=!1,function(e){if(o===clearTimeout)return clearTimeout(e);if((o===c||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(e);try{o(e)}catch(t){try{return o.call(null,e)}catch(t){return o.call(this,e)}}}(e)}}function g(e,t){this.fun=e,this.array=t}function v(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new g(e,t)),1!==l.length||f||u(h)},g.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=v,i.addListener=v,i.once=v,i.off=v,i.removeListener=v,i.removeAllListeners=v,i.emit=v,i.prependListener=v,i.prependOnceListener=v,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(e,t,n){"use strict";t.__esModule=!0,t.useDebug=void 0;var r=n(22),o=n(190);t.useDebug=function(e){return(0,r.useSelector)(e,o.selectDebug)}},function(e,t,n){"use strict";(function(e){t.__esModule=!0,t.KitchenSink=void 0;var r=n(0),o=n(2),i=n(1),a=n(39),c=n(3),u=(0,n(25).createLogger)("KitchenSink"),s=["red","orange","yellow","olive","green","teal","blue","violet","purple","pink","brown","grey"],l=["good","average","bad","black","white"],f=[{title:"Button",component:function(){return d}},{title:"Box",component:function(){return p}},{title:"Flex & Sections",component:function(){return h}},{title:"ProgressBar",component:function(){return g}},{title:"Tabs",component:function(){return v}},{title:"Tooltip",component:function(){return m}},{title:"Input / Control",component:function(){return y}},{title:"Collapsible",component:function(){return b}},{title:"BlockQuote",component:function(){return w}},{title:"ByondUi",component:function(){return _}},{title:"Themes",component:function(){return E}},{title:"Storage",component:function(){return k}}];t.KitchenSink=function(e,t){var n=e.panel,a=(0,o.useLocalState)(t,"kitchenSinkTheme")[0],u=(0,o.useLocalState)(t,"pageIndex",0),s=u[0],l=u[1],d=f[s].component(),p=n?c.Pane:c.Window;return(0,r.createComponentVNode)(2,p,{title:"Kitchen Sink",width:600,height:500,theme:a,resizable:!0,children:(0,r.createComponentVNode)(2,i.Flex,{height:"100%",children:[(0,r.createComponentVNode)(2,i.Flex.Item,{m:1,mr:0,children:(0,r.createComponentVNode)(2,i.Section,{fill:!0,fitted:!0,children:(0,r.createComponentVNode)(2,i.Tabs,{vertical:!0,children:f.map((function(e,t){return(0,r.createComponentVNode)(2,i.Tabs.Tab,{color:"transparent",selected:t===s,onClick:function(){return l(t)},children:e.title},t)}))})})}),(0,r.createComponentVNode)(2,i.Flex.Item,{position:"relative",grow:1,children:(0,r.createComponentVNode)(2,p.Content,{scrollable:!0,children:(0,r.createComponentVNode)(2,d)})})]})})};var d=function(e){return(0,r.createComponentVNode)(2,i.Section,{children:[(0,r.createComponentVNode)(2,i.Box,{mb:1,children:[(0,r.createComponentVNode)(2,i.Button,{content:"Simple"}),(0,r.createComponentVNode)(2,i.Button,{selected:!0,content:"Selected"}),(0,r.createComponentVNode)(2,i.Button,{altSelected:!0,content:"Alt Selected"}),(0,r.createComponentVNode)(2,i.Button,{disabled:!0,content:"Disabled"}),(0,r.createComponentVNode)(2,i.Button,{color:"transparent",content:"Transparent"}),(0,r.createComponentVNode)(2,i.Button,{icon:"cog",content:"Icon"}),(0,r.createComponentVNode)(2,i.Button,{icon:"power-off"}),(0,r.createComponentVNode)(2,i.Button,{fluid:!0,content:"Fluid"}),(0,r.createComponentVNode)(2,i.Button,{my:1,lineHeight:2,minWidth:15,textAlign:"center",content:"With Box props"})]}),(0,r.createComponentVNode)(2,i.Box,{mb:1,children:[l.map((function(e){return(0,r.createComponentVNode)(2,i.Button,{color:e,content:e},e)})),(0,r.createVNode)(1,"br"),s.map((function(e){return(0,r.createComponentVNode)(2,i.Button,{color:e,content:e},e)})),(0,r.createVNode)(1,"br"),s.map((function(e){return(0,r.createComponentVNode)(2,i.Box,{inline:!0,mx:"7px",color:e,children:e},e)}))]})]})},p=function(e){return(0,r.createComponentVNode)(2,i.Section,{children:[(0,r.createComponentVNode)(2,i.Box,{bold:!0,children:"bold"}),(0,r.createComponentVNode)(2,i.Box,{italic:!0,children:"italic"}),(0,r.createComponentVNode)(2,i.Box,{opacity:.5,children:"opacity 0.5"}),(0,r.createComponentVNode)(2,i.Box,{opacity:.25,children:"opacity 0.25"}),(0,r.createComponentVNode)(2,i.Box,{m:2,children:"m: 2"}),(0,r.createComponentVNode)(2,i.Box,{textAlign:"left",children:"left"}),(0,r.createComponentVNode)(2,i.Box,{textAlign:"center",children:"center"}),(0,r.createComponentVNode)(2,i.Box,{textAlign:"right",children:"right"})]})},h=function(e,t){var n=(0,o.useLocalState)(t,"fs_grow",1),a=n[0],c=n[1],u=(0,o.useLocalState)(t,"fs_direction","column"),s=u[0],l=u[1],f=(0,o.useLocalState)(t,"fs_fill",!0),d=f[0],p=f[1],h=(0,o.useLocalState)(t,"fs_title",!0),g=h[0],v=h[1];return(0,r.createComponentVNode)(2,i.Flex,{height:"100%",direction:"column",children:[(0,r.createComponentVNode)(2,i.Flex.Item,{mb:1,children:(0,r.createComponentVNode)(2,i.Section,{children:[(0,r.createComponentVNode)(2,i.Button,{fluid:!0,onClick:function(){return l("column"===s?"row":"column")},children:'Flex direction="'+s+'"'}),(0,r.createComponentVNode)(2,i.Button,{fluid:!0,onClick:function(){return c(Number(!a))},children:"Flex.Item grow={"+a+"}"}),(0,r.createComponentVNode)(2,i.Button,{fluid:!0,onClick:function(){return p(!d)},children:"Section fill={"+String(d)+"}"}),(0,r.createComponentVNode)(2,i.Button,{fluid:!0,selected:g,onClick:function(){return v(!g)},children:"Section title"})]})}),(0,r.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,r.createComponentVNode)(2,i.Flex,{height:"100%",direction:s,children:[(0,r.createComponentVNode)(2,i.Flex.Item,{mr:"row"===s&&1,mb:"column"===s&&1,grow:a,children:(0,r.createComponentVNode)(2,i.Section,{title:g&&"Section 1",fill:d,children:"Content"})}),(0,r.createComponentVNode)(2,i.Flex.Item,{grow:a,children:(0,r.createComponentVNode)(2,i.Section,{title:g&&"Section 2",fill:d,children:"Content"})})]})})]})},g=function(e,t){var n=(0,o.useLocalState)(t,"progress",.5),a=n[0],c=n[1];return(0,r.createComponentVNode)(2,i.Section,{children:[(0,r.createComponentVNode)(2,i.ProgressBar,{ranges:{good:[.5,Infinity],bad:[-Infinity,.1],average:[0,.5]},minValue:-1,maxValue:1,value:a,children:["Value: ",Number(a).toFixed(1)]}),(0,r.createComponentVNode)(2,i.Box,{mt:1,children:[(0,r.createComponentVNode)(2,i.Button,{content:"-0.1",onClick:function(){return c(a-.1)}}),(0,r.createComponentVNode)(2,i.Button,{content:"+0.1",onClick:function(){return c(a+.1)}})]})]})},v=function(e,t){var n=(0,o.useLocalState)(t,"tabIndex",0),a=n[0],c=n[1],u=(0,o.useLocalState)(t,"tabProps",{}),s=u[0],l=u[1];return(0,r.createFragment)([(0,r.createComponentVNode)(2,i.Section,{children:[(0,r.createComponentVNode)(2,i.Button.Checkbox,{inline:!0,content:"vertical",checked:s.vertical,onClick:function(){return l(Object.assign({},s,{vertical:!s.vertical}))}}),(0,r.createComponentVNode)(2,i.Button.Checkbox,{inline:!0,content:"leftSlot",checked:s.leftSlot,onClick:function(){return l(Object.assign({},s,{leftSlot:!s.leftSlot}))}}),(0,r.createComponentVNode)(2,i.Button.Checkbox,{inline:!0,content:"rightSlot",checked:s.rightSlot,onClick:function(){return l(Object.assign({},s,{rightSlot:!s.rightSlot}))}}),(0,r.createComponentVNode)(2,i.Button.Checkbox,{inline:!0,content:"icon",checked:s.icon,onClick:function(){return l(Object.assign({},s,{icon:!s.icon}))}}),(0,r.createComponentVNode)(2,i.Button.Checkbox,{inline:!0,content:"fluid",checked:s.fluid,onClick:function(){return l(Object.assign({},s,{fluid:!s.fluid}))}}),(0,r.createComponentVNode)(2,i.Button.Checkbox,{inline:!0,content:"left aligned",checked:s.leftAligned,onClick:function(){return l(Object.assign({},s,{leftAligned:!s.leftAligned}))}})]}),(0,r.createComponentVNode)(2,i.Section,{fitted:!0,children:(0,r.createComponentVNode)(2,i.Tabs,{vertical:s.vertical,fluid:s.fluid,textAlign:s.leftAligned&&"left",children:["Tab #1","Tab #2","Tab #3","Tab #4"].map((function(e,t){return(0,r.createComponentVNode)(2,i.Tabs.Tab,{selected:t===a,icon:s.icon&&"info-circle",leftSlot:s.leftSlot&&(0,r.createComponentVNode)(2,i.Button,{circular:!0,compact:!0,color:"transparent",icon:"times"}),rightSlot:s.rightSlot&&(0,r.createComponentVNode)(2,i.Button,{circular:!0,compact:!0,color:"transparent",icon:"times"}),onClick:function(){return c(t)},children:e},t)}))})})],4)},m=function(e){return(0,r.createComponentVNode)(2,i.Section,{children:[(0,r.createComponentVNode)(2,i.Box,{children:[(0,r.createComponentVNode)(2,i.Box,{inline:!0,position:"relative",mr:1,children:["Box (hover me).",(0,r.createComponentVNode)(2,i.Tooltip,{content:"Tooltip text."})]}),(0,r.createComponentVNode)(2,i.Button,{tooltip:"Tooltip text.",content:"Button"})]}),(0,r.createComponentVNode)(2,i.Box,{mt:1,children:["top","left","right","bottom","bottom-left","bottom-right"].map((function(e){return(0,r.createComponentVNode)(2,i.Button,{color:"transparent",tooltip:"Tooltip text.",tooltipPosition:e,content:e},e)}))})]})},y=function(e,t){var n=(0,o.useLocalState)(t,"number",0),a=n[0],c=n[1],u=(0,o.useLocalState)(t,"text","Sample text"),s=u[0],l=u[1];return(0,r.createComponentVNode)(2,i.Section,{children:(0,r.createComponentVNode)(2,i.LabeledList,{children:[(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Input (onChange)",children:(0,r.createComponentVNode)(2,i.Input,{value:s,onChange:function(e,t){return l(t)}})}),(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Input (onInput)",children:(0,r.createComponentVNode)(2,i.Input,{value:s,onInput:function(e,t){return l(t)}})}),(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"NumberInput (onChange)",children:(0,r.createComponentVNode)(2,i.NumberInput,{animated:!0,width:"40px",step:1,stepPixelSize:5,value:a,minValue:-100,maxValue:100,onChange:function(e,t){return c(t)}})}),(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"NumberInput (onDrag)",children:(0,r.createComponentVNode)(2,i.NumberInput,{animated:!0,width:"40px",step:1,stepPixelSize:5,value:a,minValue:-100,maxValue:100,onDrag:function(e,t){return c(t)}})}),(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Slider (onDrag)",children:(0,r.createComponentVNode)(2,i.Slider,{step:1,stepPixelSize:5,value:a,minValue:-100,maxValue:100,onDrag:function(e,t){return c(t)}})}),(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Knob (onDrag)",children:[(0,r.createComponentVNode)(2,i.Knob,{inline:!0,size:1,step:1,stepPixelSize:2,value:a,minValue:-100,maxValue:100,onDrag:function(e,t){return c(t)}}),(0,r.createComponentVNode)(2,i.Knob,{ml:1,inline:!0,bipolar:!0,size:1,step:1,stepPixelSize:2,value:a,minValue:-100,maxValue:100,onDrag:function(e,t){return c(t)}})]}),(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Rotating Icon",children:(0,r.createComponentVNode)(2,i.Box,{inline:!0,position:"relative",children:(0,r.createComponentVNode)(2,i.DraggableControl,{value:a,minValue:-100,maxValue:100,dragMatrix:[0,-1],step:1,stepPixelSize:5,onDrag:function(e,t){return c(t)},children:function(e){return(0,r.createComponentVNode)(2,i.Box,{onMouseDown:e.handleDragStart,children:[(0,r.createComponentVNode)(2,i.Icon,{size:4,color:"yellow",name:"times",rotation:4*e.displayValue}),e.inputElement]})}})})})]})})},b=function(e){return(0,r.createComponentVNode)(2,i.Section,{children:(0,r.createComponentVNode)(2,i.Collapsible,{title:"Collapsible Demo",buttons:(0,r.createComponentVNode)(2,i.Button,{icon:"cog"}),children:(0,r.createComponentVNode)(2,x)})})},x=function(e){return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({},e,{children:[(0,r.createComponentVNode)(2,i.Box,{italic:!0,children:"Jackdaws love my big sphinx of quartz."}),(0,r.createComponentVNode)(2,i.Box,{mt:1,bold:!0,children:"The wide electrification of the southern provinces will give a powerful impetus to the growth of agriculture."})]})))},w=function(e){return(0,r.createComponentVNode)(2,i.Section,{children:(0,r.createComponentVNode)(2,i.BlockQuote,{children:(0,r.createComponentVNode)(2,x)})})},_=function(t,n){(0,o.useBackend)(n).config;var a=(0,o.useLocalState)(n,"byondUiEvalCode","Byond.winset('"+window.__windowId__+"', {\n 'is-visible': true,\n})"),c=a[0],s=a[1];return(0,r.createFragment)([(0,r.createComponentVNode)(2,i.Section,{title:"Button",children:(0,r.createComponentVNode)(2,i.ByondUi,{params:{type:"button",text:"Button"}})}),(0,r.createComponentVNode)(2,i.Section,{title:"Make BYOND calls",buttons:(0,r.createComponentVNode)(2,i.Button,{icon:"chevron-right",onClick:function(){return e((function(){try{var e=new Function("return ("+c+")")();e&&e.then?(u.log("Promise"),e.then(u.log)):u.log(e)}catch(t){u.log(t)}}))},children:"Evaluate"}),children:(0,r.createComponentVNode)(2,i.Box,{as:"textarea",width:"100%",height:"10em",onChange:function(e){return s(e.target.value)},children:c})})],4)},E=function(e,t){var n=(0,o.useLocalState)(t,"kitchenSinkTheme"),a=n[0],c=n[1];return(0,r.createComponentVNode)(2,i.Section,{children:(0,r.createComponentVNode)(2,i.LabeledList,{children:(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Use theme",children:(0,r.createComponentVNode)(2,i.Input,{placeholder:"theme_name",value:a,onInput:function(e,t){return c(t)}})})})})},k=function(e,t){return window.localStorage?(0,r.createComponentVNode)(2,i.Section,{title:"Local Storage",buttons:(0,r.createComponentVNode)(2,i.Button,{icon:"recycle",onClick:function(){localStorage.clear()},children:"Clear"}),children:(0,r.createComponentVNode)(2,i.LabeledList,{children:[(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Keys in use",children:localStorage.length}),(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Remaining space",children:(0,a.formatSiUnit)(localStorage.remainingSpace,0,"B")})]})}):(0,r.createComponentVNode)(2,i.NoticeBox,{children:"Local storage is not available."})}}).call(this,n(102).setImmediate)},function(e,t,n){"use strict";t.__esModule=!0,t.BlockQuote=void 0;var r=n(0),o=n(6),i=n(17);t.BlockQuote=function(e){var t=e.className,n=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["className"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["BlockQuote",t])},n)))}},function(e,t,n){"use strict";var r,o;t.__esModule=!0,t.VNodeFlags=t.ChildFlags=void 0,t.VNodeFlags=r,function(e){e[e.HtmlElement=1]="HtmlElement",e[e.ComponentUnknown=2]="ComponentUnknown",e[e.ComponentClass=4]="ComponentClass",e[e.ComponentFunction=8]="ComponentFunction",e[e.Text=16]="Text",e[e.SvgElement=32]="SvgElement",e[e.InputElement=64]="InputElement",e[e.TextareaElement=128]="TextareaElement",e[e.SelectElement=256]="SelectElement",e[e.Void=512]="Void",e[e.Portal=1024]="Portal",e[e.ReCreate=2048]="ReCreate",e[e.ContentEditable=4096]="ContentEditable",e[e.Fragment=8192]="Fragment",e[e.InUse=16384]="InUse",e[e.ForwardRef=32768]="ForwardRef",e[e.Normalized=65536]="Normalized",e[e.ForwardRefComponent=32776]="ForwardRefComponent",e[e.FormElement=448]="FormElement",e[e.Element=481]="Element",e[e.Component=14]="Component",e[e.DOMRef=2033]="DOMRef",e[e.InUseOrNormalized=81920]="InUseOrNormalized",e[e.ClearInUse=-16385]="ClearInUse",e[e.ComponentKnown=12]="ComponentKnown"}(r||(t.VNodeFlags=r={})),t.ChildFlags=o,function(e){e[e.UnknownChildren=0]="UnknownChildren",e[e.HasInvalidChildren=1]="HasInvalidChildren",e[e.HasVNodeChildren=2]="HasVNodeChildren",e[e.HasNonKeyedChildren=4]="HasNonKeyedChildren",e[e.HasKeyedChildren=8]="HasKeyedChildren",e[e.HasTextChildren=16]="HasTextChildren",e[e.MultipleChildren=12]="MultipleChildren"}(o||(t.ChildFlags=o={}))},function(e,t,n){"use strict";t.__esModule=!0,t.ByondUi=void 0;var r=n(0),o=n(6),i=n(467),a=n(25),c=n(17);function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var s=(0,a.createLogger)("ByondUi"),l=[];window.addEventListener("beforeunload",(function(){for(var e=0;e<l.length;e++){var t=l[e];"string"==typeof t&&(s.log("unmounting '"+t+"' (beforeunload)"),l[e]=null,Byond.winset(t,{parent:""}))}}));var f=function(e){var t,n;function a(t){var n,o;return(o=e.call(this,t)||this).containerRef=(0,r.createRef)(),o.byondUiElement=function(e){var t=l.length;l.push(null);var n=e||"byondui_"+t;return s.log("allocated '"+n+"'"),{render:function(e){s.log("rendering '"+n+"'"),l[t]=n,Byond.winset(n,e)},unmount:function(){s.log("unmounting '"+n+"'"),l[t]=null,Byond.winset(n,{parent:""})}}}(null==(n=t.params)?void 0:n.id),o.handleResize=(0,i.debounce)((function(){o.forceUpdate()}),100),o}n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var f=a.prototype;return f.shouldComponentUpdate=function(e){var t=this.props,n=t.params,r=void 0===n?{}:n,i=u(t,["params"]),a=e.params,c=void 0===a?{}:a,s=u(e,["params"]);return(0,o.shallowDiffers)(r,c)||(0,o.shallowDiffers)(i,s)},f.componentDidMount=function(){Byond.IS_LTE_IE10||(window.addEventListener("resize",this.handleResize),this.componentDidUpdate(),this.handleResize())},f.componentDidUpdate=function(){if(!Byond.IS_LTE_IE10){var e,t,n=this.props.params,r=void 0===n?{}:n,o=(e=this.containerRef.current,{pos:[(t=e.getBoundingClientRect()).left,t.top],size:[t.right-t.left,t.bottom-t.top]});s.debug("bounding box",o),this.byondUiElement.render(Object.assign({parent:window.__windowId__},r,{pos:o.pos[0]+","+o.pos[1],size:o.size[0]+"x"+o.size[1]}))}},f.componentWillUnmount=function(){Byond.IS_LTE_IE10||(window.removeEventListener("resize",this.handleResize),this.byondUiElement.unmount())},f.render=function(){var e=this.props,t=(e.params,u(e,["params"])),n=(0,c.computeBoxProps)(t);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",null,(0,r.createVNode)(1,"div",null,null,1,{style:{"min-height":"22px"}}),0,Object.assign({},n),null,this.containerRef))},a}(r.Component);t.ByondUi=f},function(e,t,n){"use strict";t.__esModule=!0,t.sleep=t.debounce=void 0;t.debounce=function(e,t,n){var r;return void 0===n&&(n=!1),function(){for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];var c=function(){r=null,n||e.apply(void 0,i)},u=n&&!r;clearTimeout(r),r=setTimeout(c,t),u&&e.apply(void 0,i)}};t.sleep=function(e){return new Promise((function(t){return setTimeout(t,e)}))}},function(e,t,n){"use strict";t.__esModule=!0,t.Chart=void 0;var r=n(0),o=n(14),i=n(6),a=n(17);var c=function(e){var t,n;function i(t){var n;return(n=e.call(this,t)||this).ref=(0,r.createRef)(),n.state={viewBox:[600,200]},n.handleResize=function(){var e=n.ref.current;n.setState({viewBox:[e.offsetWidth,e.offsetHeight]})},n}n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=i.prototype;return c.componentDidMount=function(){window.addEventListener("resize",this.handleResize),this.handleResize()},c.componentWillUnmount=function(){window.removeEventListener("resize",this.handleResize)},c.render=function(){var e=this,t=this.props,n=t.data,i=void 0===n?[]:n,c=t.rangeX,u=t.rangeY,s=t.fillColor,l=void 0===s?"none":s,f=t.strokeColor,d=void 0===f?"#ffffff":f,p=t.strokeWidth,h=void 0===p?2:p,g=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(t,["data","rangeX","rangeY","fillColor","strokeColor","strokeWidth"]),v=this.state.viewBox,m=function(e,t,n,r){if(0===e.length)return[];var i=(0,o.zipWith)(Math.min).apply(void 0,e),a=(0,o.zipWith)(Math.max).apply(void 0,e);return n!==undefined&&(i[0]=n[0],a[0]=n[1]),r!==undefined&&(i[1]=r[0],a[1]=r[1]),(0,o.map)((function(e){return(0,o.zipWith)((function(e,t,n,r){return(e-t)/(n-t)*r}))(e,i,a,t)}))(e)}(i,v,c,u);if(m.length>0){var y=m[0],b=m[m.length-1];m.push([v[0]+h,b[1]]),m.push([v[0]+h,-h]),m.push([-h,-h]),m.push([-h,y[1]])}var x=function(e){for(var t="",n=0;n<e.length;n++){var r=e[n];t+=r[0]+","+r[1]+" "}return t}(m);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,a.Box,Object.assign({position:"relative"},g,{children:function(t){return(0,r.normalizeProps)((0,r.createVNode)(1,"div",null,(0,r.createVNode)(32,"svg",null,(0,r.createVNode)(32,"polyline",null,null,1,{transform:"scale(1, -1) translate(0, -"+v[1]+")",fill:l,stroke:d,"stroke-width":h,points:x}),2,{viewBox:"0 0 "+v[0]+" "+v[1],preserveAspectRatio:"none",style:{position:"absolute",top:0,left:0,right:0,bottom:0,overflow:"hidden"}}),2,Object.assign({},t),null,e.ref))}})))},i}(r.Component);c.defaultHooks=i.pureComponentHooks;var u={Line:Byond.IS_LTE_IE8?function(e){return null}:c};t.Chart=u},function(e,t,n){"use strict";t.__esModule=!0,t.Collapsible=void 0;var r=n(0),o=n(17),i=n(191);var a=function(e){var t,n;function a(t){var n;n=e.call(this,t)||this;var r=t.open;return n.state={open:r||!1},n}return n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,a.prototype.render=function(){var e=this,t=this.props,n=this.state.open,a=t.children,c=t.color,u=void 0===c?"default":c,s=t.title,l=t.buttons,f=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(t,["children","color","title","buttons"]);return(0,r.createComponentVNode)(2,o.Box,{mb:1,children:[(0,r.createVNode)(1,"div","Table",[(0,r.createVNode)(1,"div","Table__cell",(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Button,Object.assign({fluid:!0,color:u,icon:n?"chevron-down":"chevron-right",onClick:function(){return e.setState({open:!n})}},f,{children:s}))),2),l&&(0,r.createVNode)(1,"div","Table__cell Table__cell--collapsing",l,0)],0),n&&(0,r.createComponentVNode)(2,o.Box,{mt:1,children:a})]})},a}(r.Component);t.Collapsible=a},function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var r=n(0),o=n(6),i=n(17);var a=function(e){var t=e.content,n=(e.children,e.className),a=e.color,c=e.backgroundColor,u=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["content","children","className","color","backgroundColor"]);return u.color=t?null:"transparent",u.backgroundColor=a||c,(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["ColorBox",n,(0,i.computeBoxClassName)(u)]),t||".",0,Object.assign({},(0,i.computeBoxProps)(u))))};t.ColorBox=a,a.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var r=n(0),o=n(6),i=n(17),a=n(104);function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var u=function(e){var t,n;function u(t){var n;return(n=e.call(this,t)||this).state={selected:t.selected,open:!1},n.handleClick=function(){n.state.open&&n.setOpen(!1)},n}n=e,(t=u).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var s=u.prototype;return s.componentWillUnmount=function(){window.removeEventListener("click",this.handleClick)},s.setOpen=function(e){var t=this;this.setState({open:e}),e?(setTimeout((function(){return window.addEventListener("click",t.handleClick)})),this.menuRef.focus()):window.removeEventListener("click",this.handleClick)},s.setSelected=function(e){this.setState({selected:e}),this.setOpen(!1),this.props.onSelected(e)},s.buildMenu=function(){var e=this,t=this.props.options,n=(void 0===t?[]:t).map((function(t){return(0,r.createComponentVNode)(2,i.Box,{className:"Dropdown__menuentry",onClick:function(){e.setSelected(t)},children:t},t)}));return n.length?n:"No Options Found"},s.render=function(){var e=this,t=this.props,n=t.color,u=void 0===n?"default":n,s=t.over,l=t.noscroll,f=t.nochevron,d=t.width,p=(t.onClick,t.selected,t.disabled),h=c(t,["color","over","noscroll","nochevron","width","onClick","selected","disabled"]),g=h.className,v=c(h,["className"]),m=s?!this.state.open:this.state.open,y=this.state.open?(0,r.createVNode)(1,"div",(0,o.classes)([l?"Dropdown__menu-noscroll":"Dropdown__menu",s&&"Dropdown__over"]),this.buildMenu(),0,{tabIndex:"-1",style:{width:d}},null,(function(t){e.menuRef=t})):null;return(0,r.createVNode)(1,"div","Dropdown",[(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({width:d,className:(0,o.classes)(["Dropdown__control","Button","Button--color--"+u,p&&"Button--disabled",g])},v,{onClick:function(){p&&!e.state.open||e.setOpen(!e.state.open)},children:[(0,r.createVNode)(1,"span","Dropdown__selected-text",this.state.selected,0),!!f||(0,r.createVNode)(1,"span","Dropdown__arrow-button",(0,r.createComponentVNode)(2,a.Icon,{name:m?"chevron-up":"chevron-down"}),2)]}))),y],0)},u}(r.Component);t.Dropdown=u},function(e,t,n){"use strict";t.__esModule=!0,t.GridColumn=t.Grid=void 0;var r=n(0),o=n(196),i=n(6);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var c=function(e){var t=e.children,n=a(e,["children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Table,Object.assign({},n,{children:(0,r.createComponentVNode)(2,o.Table.Row,{children:t})})))};t.Grid=c,c.defaultHooks=i.pureComponentHooks;var u=function(e){var t=e.size,n=void 0===t?1:t,i=e.style,c=a(e,["size","style"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Table.Cell,Object.assign({style:Object.assign({width:n+"%"},i)},c)))};t.GridColumn=u,c.defaultHooks=i.pureComponentHooks,c.Column=u},function(e,t,n){"use strict";t.__esModule=!0,t.Knob=void 0;var r=n(0),o=n(9),i=n(6),a=n(17),c=n(139),u=n(140);t.Knob=function(e){if(Byond.IS_LTE_IE8)return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,s=e.maxValue,l=e.minValue,f=e.onChange,d=e.onDrag,p=e.step,h=e.stepPixelSize,g=e.suppressFlicker,v=e.unit,m=e.value,y=e.className,b=e.style,x=e.fillValue,w=e.color,_=e.ranges,E=void 0===_?{}:_,k=e.size,S=void 0===k?1:k,C=e.bipolar,N=(e.children,function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["animated","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","style","fillValue","color","ranges","size","bipolar","children"]));return(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[0,-1]},{animated:t,format:n,maxValue:s,minValue:l,onChange:f,onDrag:d,step:p,stepPixelSize:h,suppressFlicker:g,unit:v,value:m},{children:function(e){var t=e.dragging,n=(e.editing,e.value),c=e.displayValue,u=e.displayElement,f=e.inputElement,d=e.handleDragStart,p=(0,o.scale)(null!=x?x:c,l,s),h=(0,o.scale)(c,l,s),g=w||(0,o.keyOfMatchingRange)(null!=x?x:n,E)||"default",v=270*(h-.5);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["Knob","Knob--color--"+g,C&&"Knob--bipolar",y,(0,a.computeBoxClassName)(N)]),[(0,r.createVNode)(1,"div","Knob__circle",(0,r.createVNode)(1,"div","Knob__cursorBox",(0,r.createVNode)(1,"div","Knob__cursor"),2,{style:{transform:"rotate("+v+"deg)"}}),2),t&&(0,r.createVNode)(1,"div","Knob__popupValue",u,0),(0,r.createVNode)(32,"svg","Knob__ring Knob__ringTrackPivot",(0,r.createVNode)(32,"circle","Knob__ringTrack",null,1,{cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),(0,r.createVNode)(32,"svg","Knob__ring Knob__ringFillPivot",(0,r.createVNode)(32,"circle","Knob__ringFill",null,1,{style:{"stroke-dashoffset":((C?2.75:2)-1.5*p)*Math.PI*50},cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),f],0,Object.assign({},(0,a.computeBoxProps)(Object.assign({style:Object.assign({"font-size":S+"em"},b)},N)),{onMouseDown:d})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledControls=void 0;var r=n(0),o=n(195);function i(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var a=function(e){var t=e.children,n=i(e,["children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Flex,Object.assign({mx:-.5,align:"stretch",justify:"space-between"},n,{children:t})))};t.LabeledControls=a;a.Item=function(e){var t=e.label,n=e.children,a=i(e,["label","children"]);return(0,r.createComponentVNode)(2,o.Flex.Item,{mx:1,children:(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Flex,Object.assign({minWidth:"52px",height:"100%",direction:"column",align:"center",textAlign:"center",justify:"space-between"},a,{children:[(0,r.createComponentVNode)(2,o.Flex.Item),(0,r.createComponentVNode)(2,o.Flex.Item,{children:n}),(0,r.createComponentVNode)(2,o.Flex.Item,{color:"label",children:t})]})))})}},function(e,t,n){"use strict";t.__esModule=!0,t.Modal=void 0;var r=n(0),o=n(6),i=n(17),a=n(193);t.Modal=function(e){var t=e.className,n=e.children,c=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["className","children"]);return(0,r.createComponentVNode)(2,a.Dimmer,{children:(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Modal",t,(0,i.computeBoxClassName)(c)]),n,0,Object.assign({},(0,i.computeBoxProps)(c))))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var r=n(0),o=n(6),i=n(17);var a=function(e){var t=e.className,n=e.color,a=e.info,c=(e.warning,e.success),u=e.danger,s=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["className","color","info","warning","success","danger"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["NoticeBox",n&&"NoticeBox--color--"+n,a&&"NoticeBox--type--info",c&&"NoticeBox--type--success",u&&"NoticeBox--type--danger",t])},s)))};t.NoticeBox=a,a.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.ProgressBar=void 0;var r=n(0),o=n(9),i=n(6),a=n(17);var c=function(e){var t=e.className,n=e.value,c=e.minValue,u=void 0===c?0:c,s=e.maxValue,l=void 0===s?1:s,f=e.color,d=e.ranges,p=void 0===d?{}:d,h=e.children,g=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["className","value","minValue","maxValue","color","ranges","children"]),v=(0,o.scale)(n,u,l),m=h!==undefined,y=f||(0,o.keyOfMatchingRange)(n,p)||"default";return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["ProgressBar","ProgressBar--color--"+y,t,(0,a.computeBoxClassName)(g)]),[(0,r.createVNode)(1,"div","ProgressBar__fill ProgressBar__fill--animated",null,1,{style:{width:100*(0,o.clamp01)(v)+"%"}}),(0,r.createVNode)(1,"div","ProgressBar__content",m?h:(0,o.toFixed)(100*v)+"%",0)],4,Object.assign({},(0,a.computeBoxProps)(g))))};t.ProgressBar=c,c.defaultHooks=i.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Section=void 0;var r=n(0),o=n(6),i=n(57),a=n(17);var c=function(e){var t,n;function c(t){var n;return(n=e.call(this,t)||this).ref=(0,r.createRef)(),n.scrollable=t.scrollable,n}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var u=c.prototype;return u.componentDidMount=function(){this.scrollable&&(0,i.addScrollableNode)(this.ref.current)},u.componentWillUnmount=function(){this.scrollable&&(0,i.removeScrollableNode)(this.ref.current)},u.render=function(){var e=this.props,t=e.className,n=e.title,i=e.level,c=void 0===i?1:i,u=e.buttons,s=e.fill,l=e.fitted,f=e.scrollable,d=e.children,p=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["className","title","level","buttons","fill","fitted","scrollable","children"]),h=(0,o.canRender)(n)||(0,o.canRender)(u),g=(0,o.canRender)(d);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Section","Section--level--"+c,Byond.IS_LTE_IE8&&"Section--iefix",s&&"Section--fill",l&&"Section--fitted",f&&"Section--scrollable",t].concat((0,a.computeBoxClassName)(p))),[h&&(0,r.createVNode)(1,"div","Section__title",[(0,r.createVNode)(1,"span","Section__titleText",n,0),(0,r.createVNode)(1,"div","Section__buttons",u,0)],4),l&&d||g&&(0,r.createVNode)(1,"div","Section__content",d,0)],0,Object.assign({},(0,a.computeBoxProps)(p)),null,this.ref))},c}(r.Component);t.Section=c},function(e,t,n){"use strict";t.__esModule=!0,t.Slider=void 0;var r=n(0),o=n(9),i=n(6),a=n(17),c=n(139),u=n(140);t.Slider=function(e){if(Byond.IS_LTE_IE8)return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,s=e.maxValue,l=e.minValue,f=e.onChange,d=e.onDrag,p=e.step,h=e.stepPixelSize,g=e.suppressFlicker,v=e.unit,m=e.value,y=e.className,b=e.fillValue,x=e.color,w=e.ranges,_=void 0===w?{}:w,E=e.children,k=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,["animated","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","fillValue","color","ranges","children"]),S=E!==undefined;return(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[1,0]},{animated:t,format:n,maxValue:s,minValue:l,onChange:f,onDrag:d,step:p,stepPixelSize:h,suppressFlicker:g,unit:v,value:m},{children:function(e){var t=e.dragging,n=(e.editing,e.value),c=e.displayValue,u=e.displayElement,f=e.inputElement,d=e.handleDragStart,p=b!==undefined&&null!==b,h=((0,o.scale)(n,l,s),(0,o.scale)(null!=b?b:c,l,s)),g=(0,o.scale)(c,l,s),v=x||(0,o.keyOfMatchingRange)(null!=b?b:n,_)||"default";return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["Slider","ProgressBar","ProgressBar--color--"+v,y,(0,a.computeBoxClassName)(k)]),[(0,r.createVNode)(1,"div",(0,i.classes)(["ProgressBar__fill",p&&"ProgressBar__fill--animated"]),null,1,{style:{width:100*(0,o.clamp01)(h)+"%",opacity:.4}}),(0,r.createVNode)(1,"div","ProgressBar__fill",null,1,{style:{width:100*(0,o.clamp01)(Math.min(h,g))+"%"}}),(0,r.createVNode)(1,"div","Slider__cursorOffset",[(0,r.createVNode)(1,"div","Slider__cursor"),(0,r.createVNode)(1,"div","Slider__pointer"),t&&(0,r.createVNode)(1,"div","Slider__popupValue",u,0)],0,{style:{width:100*(0,o.clamp01)(g)+"%"}}),(0,r.createVNode)(1,"div","ProgressBar__content",S?E:u,0),f],0,Object.assign({},(0,a.computeBoxProps)(k),{onMouseDown:d})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.TextArea=void 0;var r=n(0),o=n(6),i=n(17),a=n(197),c=n(78);function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var s=function(e){var t,n;function s(t,n){var o;(o=e.call(this,t,n)||this).textareaRef=(0,r.createRef)(),o.fillerRef=(0,r.createRef)(),o.state={editing:!1};var i=t.dontUseTabForIndent,u=void 0!==i&&i;return o.handleOnInput=function(e){var t=o.state.editing,n=o.props.onInput;t||o.setEditing(!0),n&&n(e,e.target.value)},o.handleOnChange=function(e){var t=o.state.editing,n=o.props.onChange;t&&o.setEditing(!1),n&&n(e,e.target.value)},o.handleKeyPress=function(e){var t=o.state.editing,n=o.props.onKeyPress;t||o.setEditing(!0),n&&n(e,e.target.value)},o.handleKeyDown=function(e){var t=o.state.editing,n=o.props.onKeyDown;if(e.keyCode===c.KEY_ESCAPE)return o.setEditing(!1),e.target.value=(0,a.toInputValue)(o.props.value),void e.target.blur();if((t||o.setEditing(!0),!u)&&9===(e.keyCode||e.which)){e.preventDefault();var r=e.target,i=r.value,s=r.selectionStart,l=r.selectionEnd;e.target.value=i.substring(0,s)+"\t"+i.substring(l),e.target.selectionEnd=s+1}n&&n(e,e.target.value)},o.handleFocus=function(e){o.state.editing||o.setEditing(!0)},o.handleBlur=function(e){var t=o.state.editing,n=o.props.onChange;t&&(o.setEditing(!1),n&&n(e,e.target.value))},o}n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var l=s.prototype;return l.componentDidMount=function(){var e=this.props.value,t=this.textareaRef.current;t&&(t.value=(0,a.toInputValue)(e))},l.componentDidUpdate=function(e,t){var n=this.state.editing,r=e.value,o=this.props.value,i=this.textareaRef.current;i&&!n&&r!==o&&(i.value=(0,a.toInputValue)(o))},l.setEditing=function(e){this.setState({editing:e})},l.getValue=function(){return this.textareaRef.current&&this.textareaRef.current.value},l.render=function(){var e=this.props,t=(e.onChange,e.onKeyDown,e.onKeyPress,e.onInput,e.onFocus,e.onBlur,e.onEnter,e.value,e.placeholder),n=u(e,["onChange","onKeyDown","onKeyPress","onInput","onFocus","onBlur","onEnter","value","placeholder"]),a=n.className,c=n.fluid,s=u(n,["className","fluid"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["TextArea",c&&"TextArea--fluid",a])},s,{children:(0,r.createVNode)(128,"textarea","TextArea__textarea",null,1,{placeholder:t,onChange:this.handleOnChange,onKeyDown:this.handleKeyDown,onKeyPress:this.handleKeyPress,onInput:this.handleOnInput,onFocus:this.handleFocus,onBlur:this.handleBlur},null,this.textareaRef)})))},s}(r.Component);t.TextArea=s},function(e,t,n){"use strict";t.__esModule=!0,t.Tabs=void 0;var r=n(0),o=n(6),i=n(17),a=n(104);function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var u=function(e){var t=e.className,n=e.vertical,a=e.fluid,u=e.children,s=c(e,["className","vertical","fluid","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Tabs",n?"Tabs--vertical":"Tabs--horizontal",a&&"Tabs--fluid",t,(0,i.computeBoxClassName)(s)]),u,0,Object.assign({},(0,i.computeBoxProps)(s))))};t.Tabs=u;u.Tab=function(e){var t=e.className,n=e.selected,u=e.color,s=e.icon,l=e.leftSlot,f=e.rightSlot,d=e.children,p=c(e,["className","selected","color","icon","leftSlot","rightSlot","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Tab","Tabs__Tab","Tab--color--"+u,n&&"Tab--selected",t].concat((0,i.computeBoxClassName)(p))),[(0,o.canRender)(l)&&(0,r.createVNode)(1,"div","Tab__left",l,0)||!!s&&(0,r.createVNode)(1,"div","Tab__left",(0,r.createComponentVNode)(2,a.Icon,{name:s}),2),(0,r.createVNode)(1,"div","Tab__text",d,0),(0,o.canRender)(f)&&(0,r.createVNode)(1,"div","Tab__right",f,0)],0,Object.assign({},(0,i.computeBoxProps)(p))))}},function(e,t,n){"use strict";t.__esModule=!0,t.TimeDisplay=void 0;var r=n(9),o=n(0);var i=function(e){return"number"==typeof e&&Number.isFinite(e)&&!Number.isNaN(e)},a=function(e){var t,n;function o(t){var n;return(n=e.call(this,t)||this).timer=null,n.last_seen_value=undefined,n.state={value:0},i(t.value)&&(n.state.value=Number(t.value),n.last_seen_value=Number(t.value)),n}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var a=o.prototype;return a.componentDidUpdate=function(){var e=this;this.props.auto!==undefined&&(clearInterval(this.timer),this.timer=setInterval((function(){return e.tick()}),1e3))},a.tick=function(){var e=Number(this.state.value);this.props.value!==this.last_seen_value&&(this.last_seen_value=this.props.value,e=this.props.value);var t="up"===this.props.auto?10:-10,n=Math.max(0,e+t);this.setState({value:n})},a.componentDidMount=function(){var e=this;this.props.auto!==undefined&&(this.timer=setInterval((function(){return e.tick()}),1e3))},a.componentWillUnmount=function(){clearInterval(this.timer)},a.render=function(){var e=this.state.value;if(!i(e))return this.state.value||null;var t=(0,r.toFixed)(Math.floor(e/10%60)).padStart(2,"0"),n=(0,r.toFixed)(Math.floor(e/600%60)).padStart(2,"0");return(0,r.toFixed)(Math.floor(e/36e3%24)).padStart(2,"0")+":"+n+":"+t},o}(o.Component);t.TimeDisplay=a},function(e,t,n){"use strict";t.__esModule=!0,t.NtosWindow=void 0;var r=n(0),o=n(63),i=n(2),a=n(1),c=n(199),u=function(e,t){var n=e.title,u=e.width,s=void 0===u?575:u,l=e.height,f=void 0===l?700:l,d=e.resizable,p=e.theme,h=void 0===p?"ntos":p,g=e.children,v=(0,i.useBackend)(t),m=v.act,y=v.data,b=y.PC_device_theme,x=y.PC_batteryicon,w=y.PC_showbatteryicon,_=y.PC_batterypercent,E=y.PC_ntneticon,k=y.PC_apclinkicon,S=y.PC_stationtime,C=y.PC_programheaders,N=void 0===C?[]:C,A=y.PC_showexitprogram;return(0,r.createComponentVNode)(2,c.Window,{title:n,width:s,height:f,theme:h,resizable:d,children:(0,r.createVNode)(1,"div","NtosWindow",[(0,r.createVNode)(1,"div","NtosWindow__header NtosHeader",[(0,r.createVNode)(1,"div","NtosHeader__left",[(0,r.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:2,children:S}),(0,r.createComponentVNode)(2,a.Box,{inline:!0,italic:!0,mr:2,opacity:.33,children:["ntos"===b&&"NtOS","syndicate"===b&&"Syndix"]})],4),(0,r.createVNode)(1,"div","NtosHeader__right",[N.map((function(e){return(0,r.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(e.icon)})},e.icon)})),(0,r.createComponentVNode)(2,a.Box,{inline:!0,children:E&&(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(E)})}),!!w&&x&&(0,r.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:[x&&(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(x)}),_&&_]}),k&&(0,r.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(k)})}),!!A&&(0,r.createComponentVNode)(2,a.Button,{width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-minimize-o",tooltip:"Minimize",tooltipPosition:"bottom",onClick:function(){return m("PC_minimize")}}),!!A&&(0,r.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-close-o",tooltip:"Close",tooltipPosition:"bottom-left",onClick:function(){return m("PC_exit")}}),!A&&(0,r.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"power-off",tooltip:"Power off",tooltipPosition:"bottom-left",onClick:function(){return m("PC_shutdown")}})],0)],4),g],0)})};t.NtosWindow=u;u.Content=function(e){return(0,r.createVNode)(1,"div","NtosWindow__content",(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.Window.Content,Object.assign({},e))),2)}},function(e,t,n){"use strict";t.__esModule=!0,t.Pane=void 0;var r=n(0),o=n(6),i=n(2),a=n(1),c=n(137),u=n(141);function s(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var l=function(e,t){var n=e.theme,l=e.children,f=e.className,d=s(e,["theme","children","className"]),p=(0,i.useBackend)(t).suspended,h=(0,c.useDebug)(t).debugLayout;return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.Layout,Object.assign({className:(0,o.classes)(["Window",f]),theme:n},d,{children:(0,r.createComponentVNode)(2,a.Box,{fillPositionedParent:!0,className:h&&"debug-layout",children:!p&&l})})))};t.Pane=l;l.Content=function(e){var t=e.className,n=e.fitted,i=e.children,a=s(e,["className","fitted","children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.Layout.Content,Object.assign({className:(0,o.classes)(["Window__content",t])},a,{children:n&&i||(0,r.createVNode)(1,"div","Window__contentPadding",i,0)})))}},function(e,t,n){"use strict";t.__esModule=!0,t.relayMiddleware=t.debugMiddleware=void 0;var r=n(78),o=n(57),i=n(135),a=n(200),c=["backend/update","chat/message"];t.debugMiddleware=function(e){return(0,i.acquireHotKey)(r.KEY_F11),(0,i.acquireHotKey)(r.KEY_F12),o.globalEvents.on("keydown",(function(t){t.code===r.KEY_F11&&e.dispatch((0,a.toggleDebugLayout)()),t.code===r.KEY_F12&&e.dispatch((0,a.toggleKitchenSink)()),t.ctrl&&t.shift&&t.code===r.KEY_BACKSPACE&&setTimeout((function(){throw new Error("OOPSIE WOOPSIE!! UwU We made a fucky wucky!! A wittle fucko boingo! The code monkeys at our headquarters are working VEWY HAWD to fix this!")}))})),function(e){return function(t){return e(t)}}};t.relayMiddleware=function(e){var t=n(101),u="?external"===location.search;return u?t.subscribe((function(t){var n=t.type,r=t.payload;"relay"===n&&r.windowId===window.__windowId__&&e.dispatch(Object.assign({},r.action,{relayed:!0}))})):((0,i.acquireHotKey)(r.KEY_F10),o.globalEvents.on("keydown",(function(t){t===r.KEY_F10&&e.dispatch((0,a.openExternalBrowser)())}))),function(e){return function(n){var r=n.type,o=(n.payload,n.relayed);if(r!==a.openExternalBrowser.type)return!c.includes(r)||o||u||t.sendMessage({type:"relay",payload:{windowId:window.__windowId__,action:n}}),e(n);window.open(location.href+"?external","_blank")}}}},function(e,t,n){"use strict";t.__esModule=!0,t.debugReducer=void 0;t.debugReducer=function(e,t){void 0===e&&(e={});var n=t.type;t.payload;return"debug/toggleKitchenSink"===n?Object.assign({},e,{kitchenSink:!e.kitchenSink}):"debug/toggleDebugLayout"===n?Object.assign({},e,{debugLayout:!e.debugLayout}):e}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";e.exports=function(){var e=Object.hasOwnProperty,t=Object.setPrototypeOf,n=Object.isFrozen,r=Object.keys,o=Object.freeze,i=Object.seal,a="undefined"!=typeof Reflect&&Reflect,c=a.apply,u=a.construct;c||(c=function(e,t,n){return e.apply(t,n)}),o||(o=function(e){return e}),i||(i=function(e){return e}),u||(u=function(e,t){return new(Function.prototype.bind.apply(e,[null].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(t))))});var s=E(Array.prototype.forEach),l=E(Array.prototype.indexOf),f=E(Array.prototype.join),d=E(Array.prototype.pop),p=E(Array.prototype.push),h=E(Array.prototype.slice),g=E(String.prototype.toLowerCase),v=E(String.prototype.match),m=E(String.prototype.replace),y=E(String.prototype.indexOf),b=E(String.prototype.trim),x=E(RegExp.prototype.test),w=k(RegExp),_=k(TypeError);function E(e){return function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return c(e,t,r)}}function k(e){return function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return u(e,n)}}function S(e,r){t&&t(e,null);for(var o=r.length;o--;){var i=r[o];if("string"==typeof i){var a=g(i);a!==i&&(n(r)||(r[o]=a),i=a)}e[i]=!0}return e}function C(t){var n={},r=void 0;for(r in t)c(e,t,[r])&&(n[r]=t[r]);return n}var N=o(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),A=o(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","audio","canvas","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","video","view","vkern"]),T=o(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),O=o(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),I=o(["#text"]),M=o(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns"]),L=o(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),V=o(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),R=o(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),P=i(/\{\{[\s\S]*|[\s\S]*\}\}/gm),B=i(/<%[\s\S]*|[\s\S]*%>/gm),D=i(/^data-[\-\w.\u00B7-\uFFFF]/),j=i(/^aria-[\-\w]+$/),F=i(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),K=i(/^(?:\w+script|data):/i),z=i(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g),Y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function U(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var $=function(){return"undefined"==typeof window?null:window},H=function(e,t){if("object"!==(void 0===e?"undefined":Y(e))||"function"!=typeof e.createPolicy)return null;var n=null;t.currentScript&&t.currentScript.hasAttribute("data-tt-policy-suffix")&&(n=t.currentScript.getAttribute("data-tt-policy-suffix"));var r="dompurify"+(n?"#"+n:"");try{return e.createPolicy(r,{createHTML:function(e){return e}})}catch(o){return null}};return function W(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:$(),t=function(e){return W(e)};if(t.version="2.0.12",t.removed=[],!e||!e.document||9!==e.document.nodeType)return t.isSupported=!1,t;var n=e.document,i=!1,a=e.document,c=e.DocumentFragment,u=e.HTMLTemplateElement,E=e.Node,k=e.NodeFilter,q=e.NamedNodeMap,G=q===undefined?e.NamedNodeMap||e.MozNamedAttrMap:q,X=e.Text,Z=e.Comment,Q=e.DOMParser,J=e.trustedTypes;if("function"==typeof u){var ee=a.createElement("template");ee.content&&ee.content.ownerDocument&&(a=ee.content.ownerDocument)}var te=H(J,n),ne=te&&Ve?te.createHTML(""):"",re=a,oe=re.implementation,ie=re.createNodeIterator,ae=re.getElementsByTagName,ce=re.createDocumentFragment,ue=n.importNode,se={};t.isSupported=oe&&"undefined"!=typeof oe.createHTMLDocument&&9!==a.documentMode;var le=P,fe=B,de=D,pe=j,he=K,ge=z,ve=F,me=null,ye=S({},[].concat(U(N),U(A),U(T),U(O),U(I))),be=null,xe=S({},[].concat(U(M),U(L),U(V),U(R))),we=null,_e=null,Ee=!0,ke=!0,Se=!1,Ce=!1,Ne=!1,Ae=!1,Te=!1,Oe=!1,Ie=!1,Me=!1,Le=!1,Ve=!1,Re=!0,Pe=!0,Be=!1,De={},je=S({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","plaintext","script","style","svg","template","thead","title","video","xmp"]),Fe=null,Ke=S({},["audio","video","img","source","image","track"]),ze=null,Ye=S({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),Ue=null,$e=a.createElement("form"),He=function(e){Ue&&Ue===e||(e&&"object"===(void 0===e?"undefined":Y(e))||(e={}),me="ALLOWED_TAGS"in e?S({},e.ALLOWED_TAGS):ye,be="ALLOWED_ATTR"in e?S({},e.ALLOWED_ATTR):xe,ze="ADD_URI_SAFE_ATTR"in e?S(C(Ye),e.ADD_URI_SAFE_ATTR):Ye,Fe="ADD_DATA_URI_TAGS"in e?S(C(Ke),e.ADD_DATA_URI_TAGS):Ke,we="FORBID_TAGS"in e?S({},e.FORBID_TAGS):{},_e="FORBID_ATTR"in e?S({},e.FORBID_ATTR):{},De="USE_PROFILES"in e&&e.USE_PROFILES,Ee=!1!==e.ALLOW_ARIA_ATTR,ke=!1!==e.ALLOW_DATA_ATTR,Se=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Ce=e.SAFE_FOR_JQUERY||!1,Ne=e.SAFE_FOR_TEMPLATES||!1,Ae=e.WHOLE_DOCUMENT||!1,Ie=e.RETURN_DOM||!1,Me=e.RETURN_DOM_FRAGMENT||!1,Le=e.RETURN_DOM_IMPORT||!1,Ve=e.RETURN_TRUSTED_TYPE||!1,Oe=e.FORCE_BODY||!1,Re=!1!==e.SANITIZE_DOM,Pe=!1!==e.KEEP_CONTENT,Be=e.IN_PLACE||!1,ve=e.ALLOWED_URI_REGEXP||ve,Ne&&(ke=!1),Me&&(Ie=!0),De&&(me=S({},[].concat(U(I))),be=[],!0===De.html&&(S(me,N),S(be,M)),!0===De.svg&&(S(me,A),S(be,L),S(be,R)),!0===De.svgFilters&&(S(me,T),S(be,L),S(be,R)),!0===De.mathMl&&(S(me,O),S(be,V),S(be,R))),e.ADD_TAGS&&(me===ye&&(me=C(me)),S(me,e.ADD_TAGS)),e.ADD_ATTR&&(be===xe&&(be=C(be)),S(be,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&S(ze,e.ADD_URI_SAFE_ATTR),Pe&&(me["#text"]=!0),Ae&&S(me,["html","head","body"]),me.table&&(S(me,["tbody"]),delete we.tbody),o&&o(e),Ue=e)},We=function(e){p(t.removed,{element:e});try{e.parentNode.removeChild(e)}catch(n){e.outerHTML=ne}},qe=function(e,n){try{p(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch(r){p(t.removed,{attribute:null,from:n})}n.removeAttribute(e)},Ge=function(e){var t=void 0,n=void 0;if(Oe)e="<remove></remove>"+e;else{var r=v(e,/^[\r\n\t ]+/);n=r&&r[0]}var o=te?te.createHTML(e):e;try{t=(new Q).parseFromString(o,"text/html")}catch(u){}if(i&&S(we,["title"]),!t||!t.documentElement){var c=(t=oe.createHTMLDocument("")).body;c.parentNode.removeChild(c.parentNode.firstElementChild),c.outerHTML=o}return e&&n&&t.body.insertBefore(a.createTextNode(n),t.body.childNodes[0]||null),ae.call(t,Ae?"html":"body")[0]};t.isSupported&&function(){try{var e=Ge("<x/><title></title><img>");x(/<\/title/,e.querySelector("title").innerHTML)&&(i=!0)}catch(t){}}();var Xe=function(e){return ie.call(e.ownerDocument||e,e,k.SHOW_ELEMENT|k.SHOW_COMMENT|k.SHOW_TEXT,(function(){return k.FILTER_ACCEPT}),!1)},Ze=function(e){return!(e instanceof X||e instanceof Z||"string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof G&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute&&"string"==typeof e.namespaceURI)},Qe=function(e){return"object"===(void 0===E?"undefined":Y(E))?e instanceof E:e&&"object"===(void 0===e?"undefined":Y(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},Je=function(e,n,r){se[e]&&s(se[e],(function(e){e.call(t,n,r,Ue)}))},et=function(e){var n=void 0;if(Je("beforeSanitizeElements",e,null),Ze(e))return We(e),!0;var r=g(e.nodeName);if(Je("uponSanitizeElement",e,{tagName:r,allowedTags:me}),("svg"===r||"math"===r)&&0!==e.querySelectorAll("p, br").length)return We(e),!0;if(!me[r]||we[r]){if(Pe&&!je[r]&&"function"==typeof e.insertAdjacentHTML)try{var o=e.innerHTML;e.insertAdjacentHTML("AfterEnd",te?te.createHTML(o):o)}catch(i){}return We(e),!0}return"noscript"===r&&x(/<\/noscript/i,e.innerHTML)||"noembed"===r&&x(/<\/noembed/i,e.innerHTML)?(We(e),!0):(!Ce||e.firstElementChild||e.content&&e.content.firstElementChild||!x(/</g,e.textContent)||(p(t.removed,{element:e.cloneNode()}),e.innerHTML?e.innerHTML=m(e.innerHTML,/</g,"<"):e.innerHTML=m(e.textContent,/</g,"<")),Ne&&3===e.nodeType&&(n=e.textContent,n=m(n,le," "),n=m(n,fe," "),e.textContent!==n&&(p(t.removed,{element:e.cloneNode()}),e.textContent=n)),Je("afterSanitizeElements",e,null),!1)},tt=function(e,t,n){if(Re&&("id"===t||"name"===t)&&(n in a||n in $e))return!1;if(ke&&x(de,t));else if(Ee&&x(pe,t));else{if(!be[t]||_e[t])return!1;if(ze[t]);else if(x(ve,m(n,ge,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==y(n,"data:")||!Fe[e])if(Se&&!x(he,m(n,ge,"")));else if(n)return!1}return!0},nt=function(e){var n=void 0,o=void 0,i=void 0,a=void 0,c=void 0;Je("beforeSanitizeAttributes",e,null);var u=e.attributes;if(u){var s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:be};for(c=u.length;c--;){var p=n=u[c],v=p.name,y=p.namespaceURI;if(o=b(n.value),i=g(v),s.attrName=i,s.attrValue=o,s.keepAttr=!0,s.forceKeepAttr=undefined,Je("uponSanitizeAttribute",e,s),o=s.attrValue,!s.forceKeepAttr){if("name"===i&&"IMG"===e.nodeName&&u.id)a=u.id,u=h(u,[]),qe("id",e),qe(v,e),l(u,a)>c&&e.setAttribute("id",a.value);else{if("INPUT"===e.nodeName&&"type"===i&&"file"===o&&s.keepAttr&&(be[i]||!_e[i]))continue;"id"===v&&e.setAttribute(v,""),qe(v,e)}if(s.keepAttr)if(Ce&&x(/\/>/i,o))qe(v,e);else if(x(/svg|math/i,e.namespaceURI)&&x(w("</("+f(r(je),"|")+")","i"),o))qe(v,e);else{Ne&&(o=m(o,le," "),o=m(o,fe," "));var _=e.nodeName.toLowerCase();if(tt(_,i,o))try{y?e.setAttributeNS(y,v,o):e.setAttribute(v,o),d(t.removed)}catch(E){}}}}Je("afterSanitizeAttributes",e,null)}},rt=function ot(e){var t=void 0,n=Xe(e);for(Je("beforeSanitizeShadowDOM",e,null);t=n.nextNode();)Je("uponSanitizeShadowNode",t,null),et(t)||(t.content instanceof c&&ot(t.content),nt(t));Je("afterSanitizeShadowDOM",e,null)};return t.sanitize=function(r,o){var i=void 0,a=void 0,u=void 0,s=void 0,l=void 0;if(r||(r="\x3c!--\x3e"),"string"!=typeof r&&!Qe(r)){if("function"!=typeof r.toString)throw _("toString is not a function");if("string"!=typeof(r=r.toString()))throw _("dirty is not a string, aborting")}if(!t.isSupported){if("object"===Y(e.toStaticHTML)||"function"==typeof e.toStaticHTML){if("string"==typeof r)return e.toStaticHTML(r);if(Qe(r))return e.toStaticHTML(r.outerHTML)}return r}if(Te||He(o),t.removed=[],"string"==typeof r&&(Be=!1),Be);else if(r instanceof E)1===(a=(i=Ge("\x3c!--\x3e")).ownerDocument.importNode(r,!0)).nodeType&&"BODY"===a.nodeName||"HTML"===a.nodeName?i=a:i.appendChild(a);else{if(!Ie&&!Ne&&!Ae&&-1===r.indexOf("<"))return te&&Ve?te.createHTML(r):r;if(!(i=Ge(r)))return Ie?null:ne}i&&Oe&&We(i.firstChild);for(var f=Xe(Be?r:i);u=f.nextNode();)3===u.nodeType&&u===s||et(u)||(u.content instanceof c&&rt(u.content),nt(u),s=u);if(s=null,Be)return r;if(Ie){if(Me)for(l=ce.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return Le&&(l=ue.call(n,l,!0)),l}var d=Ae?i.outerHTML:i.innerHTML;return Ne&&(d=m(d,le," "),d=m(d,fe," ")),te&&Ve?te.createHTML(d):d},t.setConfig=function(e){He(e),Te=!0},t.clearConfig=function(){Ue=null,Te=!1},t.isValidAttribute=function(e,t,n){Ue||He({});var r=g(e),o=g(t);return tt(r,o,n)},t.addHook=function(e,t){"function"==typeof t&&(se[e]=se[e]||[],p(se[e],t))},t.removeHook=function(e){se[e]&&d(se[e])},t.removeHooks=function(e){se[e]&&(se[e]=[])},t.removeAllHooks=function(){se={}},t}()}()},function(e,t,n){"use strict";e.exports=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function n(e,n){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,n){if(e){if("string"==typeof e)return t(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){r&&(e=r);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}var r=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){function t(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}e.exports={defaults:{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1},getDefaults:t,changeDefaults:function(t){e.exports.defaults=t}}})),o=(r.defaults,r.getDefaults,r.changeDefaults,/[&<>"']/),i=/[&<>"']/g,a=/[<>"']|&(?!#?\w+;)/,c=/[<>"']|&(?!#?\w+;)/g,u={"&":"&","<":"<",">":">",'"':""","'":"'"},s=function(e){return u[e]},l=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function f(e){return e.replace(l,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var d=/(^|[^\[])\^/g,p=/[^\w:]/g,h=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i,g={},v=/^[^:]+:\/*[^/]*$/,m=/^([^:]+:)[\s\S]*$/,y=/^([^:]+:\/*[^/]*)[\s\S]*$/;function b(e,t){g[" "+e]||(v.test(e)?g[" "+e]=e+"/":g[" "+e]=x(e,"/",!0));var n=-1===(e=g[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(m,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(y,"$1")+t:e+t}function x(e,t,n){var r=e.length;if(0===r)return"";for(var o=0;o<r;){var i=e.charAt(r-o-1);if(i!==t||n){if(i===t||!n)break;o++}else o++}return e.substr(0,r-o)}var w={escape:function(e,t){if(t){if(o.test(e))return e.replace(i,s)}else if(a.test(e))return e.replace(c,s);return e},unescape:f,edit:function(e,t){e=e.source||e,t=t||"";var n={replace:function(t,r){return r=(r=r.source||r).replace(d,"$1"),e=e.replace(t,r),n},getRegex:function(){return new RegExp(e,t)}};return n},cleanUrl:function(e,t,n){if(e){var r;try{r=decodeURIComponent(f(n)).replace(p,"").toLowerCase()}catch(o){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!h.test(n)&&(n=b(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(o){return null}return n},resolveUrl:b,noopTest:{exec:function(){}},merge:function(e){for(var t,n,r=1;r<arguments.length;r++)for(n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},splitCells:function(e,t){var n=e.replace(/\|/g,(function(e,t,n){for(var r=!1,o=t;--o>=0&&"\\"===n[o];)r=!r;return r?"|":" |"})).split(/ \|/),r=0;if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(/\\\|/g,"|");return n},rtrim:x,findClosingBracket:function(e,t){if(-1===e.indexOf(t[1]))return-1;for(var n=e.length,r=0,o=0;o<n;o++)if("\\"===e[o])o++;else if(e[o]===t[0])r++;else if(e[o]===t[1]&&--r<0)return o;return-1},checkSanitizeDeprecation:function(e){e&&e.sanitize&&e.silent}},_=r.defaults,E=w.rtrim,k=w.splitCells,S=w.escape,C=w.findClosingBracket;function N(e,t,n){var r=t.href,o=t.title?S(t.title):null,i=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?{type:"link",raw:n,href:r,title:o,text:i}:{type:"image",raw:n,href:r,title:o,text:S(i)}}var A=function(){function e(e){this.options=e||_}var t=e.prototype;return t.space=function(e){var t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}},t.code=function(e,t){var n=this.rules.block.code.exec(e);if(n){var r=t[t.length-1];if(r&&"paragraph"===r.type)return{raw:n[0],text:n[0].trimRight()};var o=n[0].replace(/^ {4}/gm,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?o:E(o,"\n")}}},t.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],r=function(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var r=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=r.length?e.slice(r.length):e})).join("\n")}(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim():t[2],text:r}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[1].length,text:t[2]}},t.nptable=function(e){var t=this.rules.block.nptable.exec(e);if(t){var n={type:"table",header:k(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[],raw:t[0]};if(n.header.length===n.align.length){var r,o=n.align.length;for(r=0;r<o;r++)/^ *-+: *$/.test(n.align[r])?n.align[r]="right":/^ *:-+: *$/.test(n.align[r])?n.align[r]="center":/^ *:-+ *$/.test(n.align[r])?n.align[r]="left":n.align[r]=null;for(o=n.cells.length,r=0;r<o;r++)n.cells[r]=k(n.cells[r],n.header.length);return n}}},t.hr=function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}},t.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){var n=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],text:n}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){for(var n,r,o,i,a,c,u,s=t[0],l=t[2],f=l.length>1,d=")"===l[l.length-1],p={type:"list",raw:s,ordered:f,start:f?+l.slice(0,-1):"",loose:!1,items:[]},h=t[0].match(this.rules.block.item),g=!1,v=h.length,m=0;m<v;m++)s=n=h[m],r=n.length,~(n=n.replace(/^ *([*+-]|\d+[.)]) */,"")).indexOf("\n ")&&(r-=n.length,n=this.options.pedantic?n.replace(/^ {1,4}/gm,""):n.replace(new RegExp("^ {1,"+r+"}","gm"),"")),m!==v-1&&(o=this.rules.block.bullet.exec(h[m+1])[0],(f?1===o.length||!d&&")"===o[o.length-1]:o.length>1||this.options.smartLists&&o!==l)&&(i=h.slice(m+1).join("\n"),p.raw=p.raw.substring(0,p.raw.length-i.length),m=v-1)),a=g||/\n\n(?!\s*$)/.test(n),m!==v-1&&(g="\n"===n.charAt(n.length-1),a||(a=g)),a&&(p.loose=!0),c=/^\[[ xX]\] /.test(n),u=undefined,c&&(u=" "!==n[1],n=n.replace(/^\[[ xX]\] +/,"")),p.items.push({type:"list_item",raw:s,task:c,checked:u,loose:a,text:n});return p}},t.html=function(e){var t=this.rules.block.html.exec(e);if(t)return{type:this.options.sanitize?"paragraph":"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):S(t[0]):t[0]}},t.def=function(e){var t=this.rules.block.def.exec(e);if(t)return t[3]&&(t[3]=t[3].substring(1,t[3].length-1)),{tag:t[1].toLowerCase().replace(/\s+/g," "),raw:t[0],href:t[2],title:t[3]}},t.table=function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:k(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var r,o=n.align.length;for(r=0;r<o;r++)/^ *-+: *$/.test(n.align[r])?n.align[r]="right":/^ *:-+: *$/.test(n.align[r])?n.align[r]="center":/^ *:-+ *$/.test(n.align[r])?n.align[r]="left":n.align[r]=null;for(o=n.cells.length,r=0;r<o;r++)n.cells[r]=k(n.cells[r].replace(/^ *\| *| *\| *$/g,""),n.header.length);return n}}},t.lheading=function(e){var t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1]}},t.paragraph=function(e){var t=this.rules.block.paragraph.exec(e);if(t)return{type:"paragraph",raw:t[0],text:"\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1]}},t.text=function(e,t){var n=this.rules.block.text.exec(e);if(n){var r=t[t.length-1];return r&&"text"===r.type?{raw:n[0],text:n[0]}:{type:"text",raw:n[0],text:n[0]}}},t.escape=function(e){var t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:S(t[1])}},t.tag=function(e,t,n){var r=this.rules.inline.tag.exec(e);if(r)return!t&&/^<a /i.test(r[0])?t=!0:t&&/^<\/a>/i.test(r[0])&&(t=!1),!n&&/^<(pre|code|kbd|script)(\s|>)/i.test(r[0])?n=!0:n&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(r[0])&&(n=!1),{type:this.options.sanitize?"text":"html",raw:r[0],inLink:t,inRawBlock:n,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):S(r[0]):r[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var n=C(t[2],"()");if(n>-1){var r=(0===t[0].indexOf("!")?5:4)+t[1].length+n;t[2]=t[2].substring(0,n),t[0]=t[0].substring(0,r).trim(),t[3]=""}var o=t[2],i="";if(this.options.pedantic){var a=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(o);a?(o=a[1],i=a[3]):i=""}else i=t[3]?t[3].slice(1,-1):"";return N(t,{href:(o=o.trim().replace(/^<([\s\S]*)>$/,"$1"))?o.replace(this.rules.inline._escapes,"$1"):o,title:i?i.replace(this.rules.inline._escapes,"$1"):i},t[0])}},t.reflink=function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var r=(n[2]||n[1]).replace(/\s+/g," ");if(!(r=t[r.toLowerCase()])||!r.href){var o=n[0].charAt(0);return{type:"text",raw:o,text:o}}return N(n,r,n[0])}},t.strong=function(e,t,n){void 0===n&&(n="");var r=this.rules.inline.strong.start.exec(e);if(r&&(!r[1]||r[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var o,i="**"===r[0]?this.rules.inline.strong.endAst:this.rules.inline.strong.endUnd;for(i.lastIndex=0;null!=(r=i.exec(t));)if(o=this.rules.inline.strong.middle.exec(t.slice(0,r.index+3)))return{type:"strong",raw:e.slice(0,o[0].length),text:e.slice(2,o[0].length-2)}}},t.em=function(e,t,n){void 0===n&&(n="");var r=this.rules.inline.em.start.exec(e);if(r&&(!r[1]||r[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var o,i="*"===r[0]?this.rules.inline.em.endAst:this.rules.inline.em.endUnd;for(i.lastIndex=0;null!=(r=i.exec(t));)if(o=this.rules.inline.em.middle.exec(t.slice(0,r.index+2)))return{type:"em",raw:e.slice(0,o[0].length),text:e.slice(1,o[0].length-1)}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),r=/[^ ]/.test(n),o=n.startsWith(" ")&&n.endsWith(" ");return r&&o&&(n=n.substring(1,n.length-1)),n=S(n,!0),{type:"codespan",raw:t[0],text:n}}},t.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},t.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[1]}},t.autolink=function(e,t){var n,r,o=this.rules.inline.autolink.exec(e);if(o)return r="@"===o[2]?"mailto:"+(n=S(this.options.mangle?t(o[1]):o[1])):n=S(o[1]),{type:"link",raw:o[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}},t.url=function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var r,o;if("@"===n[2])o="mailto:"+(r=S(this.options.mangle?t(n[0]):n[0]));else{var i;do{i=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(i!==n[0]);r=S(n[0]),o="www."===n[1]?"http://"+r:r}return{type:"link",raw:n[0],text:r,href:o,tokens:[{type:"text",raw:r,text:r}]}}},t.inlineText=function(e,t,n){var r,o=this.rules.inline.text.exec(e);if(o)return r=t?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):S(o[0]):o[0]:S(this.options.smartypants?n(o[0]):o[0]),{type:"text",raw:o[0],text:r}},e}(),T=w.noopTest,O=w.edit,I=w.merge,M={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6}) +([^\n]*?)(?: +#+)? *(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|<![A-Z][\\s\\S]*?>\\n*|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\n*|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:T,table:T,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};M.def=O(M.def).replace("label",M._label).replace("title",M._title).getRegex(),M.bullet=/(?:[*+-]|\d{1,9}[.)])/,M.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,M.item=O(M.item,"gm").replace(/bull/g,M.bullet).getRegex(),M.list=O(M.list).replace(/bull/g,M.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+M.def.source+")").getRegex(),M._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",M._comment=/<!--(?!-?>)[\s\S]*?-->/,M.html=O(M.html,"i").replace("comment",M._comment).replace("tag",M._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),M.paragraph=O(M._paragraph).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",M._tag).getRegex(),M.blockquote=O(M.blockquote).replace("paragraph",M.paragraph).getRegex(),M.normal=I({},M),M.gfm=I({},M.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),M.gfm.nptable=O(M.gfm.nptable).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",M._tag).getRegex(),M.gfm.table=O(M.gfm.table).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",M._tag).getRegex(),M.pedantic=I({},M.normal,{html:O("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",M._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:T,paragraph:O(M.normal._paragraph).replace("hr",M.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",M.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var L={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:T,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",strong:{start:/^(?:(\*\*(?=[*punctuation]))|\*\*)(?![\s])|__/,middle:/^\*\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*\*$|^__(?![\s])((?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?)__$/,endAst:/[^punctuation\s]\*\*(?!\*)|[punctuation]\*\*(?!\*)(?:(?=[punctuation\s]|$))/,endUnd:/[^\s]__(?!_)(?:(?=[punctuation\s])|$)/},em:{start:/^(?:(\*(?=[punctuation]))|\*)(?![*\s])|_/,middle:/^\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*$|^_(?![_\s])(?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?_$/,endAst:/[^punctuation\s]\*(?!\*)|[punctuation]\*(?!\*)(?:(?=[punctuation\s]|$))/,endUnd:/[^\s]_(?!_)(?:(?=[punctuation\s])|$)/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:T,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\<!\[`*]|\b_|$)|[^ ](?= {2,}\n))|(?= {2,}\n))/,punctuation:/^([\s*punctuation])/,_punctuation:"!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~"};L.punctuation=O(L.punctuation).replace(/punctuation/g,L._punctuation).getRegex(),L._blockSkip="\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>",L._overlapSkip="__[^_]*?__|\\*\\*\\[^\\*\\]*?\\*\\*",L.em.start=O(L.em.start).replace(/punctuation/g,L._punctuation).getRegex(),L.em.middle=O(L.em.middle).replace(/punctuation/g,L._punctuation).replace(/overlapSkip/g,L._overlapSkip).getRegex(),L.em.endAst=O(L.em.endAst,"g").replace(/punctuation/g,L._punctuation).getRegex(),L.em.endUnd=O(L.em.endUnd,"g").replace(/punctuation/g,L._punctuation).getRegex(),L.strong.start=O(L.strong.start).replace(/punctuation/g,L._punctuation).getRegex(),L.strong.middle=O(L.strong.middle).replace(/punctuation/g,L._punctuation).replace(/blockSkip/g,L._blockSkip).getRegex(),L.strong.endAst=O(L.strong.endAst,"g").replace(/punctuation/g,L._punctuation).getRegex(),L.strong.endUnd=O(L.strong.endUnd,"g").replace(/punctuation/g,L._punctuation).getRegex(),L.blockSkip=O(L._blockSkip,"g").getRegex(),L.overlapSkip=O(L._overlapSkip,"g").getRegex(),L._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,L._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,L._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,L.autolink=O(L.autolink).replace("scheme",L._scheme).replace("email",L._email).getRegex(),L._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,L.tag=O(L.tag).replace("comment",M._comment).replace("attribute",L._attribute).getRegex(),L._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,L._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,L._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,L.link=O(L.link).replace("label",L._label).replace("href",L._href).replace("title",L._title).getRegex(),L.reflink=O(L.reflink).replace("label",L._label).getRegex(),L.reflinkSearch=O(L.reflinkSearch,"g").replace("reflink",L.reflink).replace("nolink",L.nolink).getRegex(),L.normal=I({},L),L.pedantic=I({},L.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:O(/^!?\[(label)\]\((.*?)\)/).replace("label",L._label).getRegex(),reflink:O(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",L._label).getRegex()}),L.gfm=I({},L.normal,{escape:O(L.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\<!\[`*~]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))|(?= {2,}\n|[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))/}),L.gfm.url=O(L.gfm.url,"i").replace("email",L.gfm._extended_email).getRegex(),L.breaks=I({},L.gfm,{br:O(L.br).replace("{2,}","*").getRegex(),text:O(L.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var V={block:M,inline:L},R=r.defaults,P=V.block,B=V.inline;function D(e){return e.replace(/---/g,"\u2014").replace(/--/g,"\u2013").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1\u2018").replace(/'/g,"\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1\u201c").replace(/"/g,"\u201d").replace(/\.{3}/g,"\u2026")}function j(e){var t,n,r="",o=e.length;for(t=0;t<o;t++)n=e.charCodeAt(t),Math.random()>.5&&(n="x"+n.toString(16)),r+="&#"+n+";";return r}var F=function(){function t(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||R,this.options.tokenizer=this.options.tokenizer||new A,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options;var t={block:P.normal,inline:B.normal};this.options.pedantic?(t.block=P.pedantic,t.inline=B.pedantic):this.options.gfm&&(t.block=P.gfm,this.options.breaks?t.inline=B.breaks:t.inline=B.gfm),this.tokenizer.rules=t}t.lex=function(e,n){return new t(n).lex(e)};var n,r,o,i=t.prototype;return i.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens,!0),this.inline(this.tokens),this.tokens},i.blockTokens=function(e,t,n){var r,o,i,a;for(void 0===t&&(t=[]),void 0===n&&(n=!0),e=e.replace(/^ +$/gm,"");e;)if(r=this.tokenizer.space(e))e=e.substring(r.raw.length),r.type&&t.push(r);else if(r=this.tokenizer.code(e,t))e=e.substring(r.raw.length),r.type?t.push(r):((a=t[t.length-1]).raw+="\n"+r.raw,a.text+="\n"+r.text);else if(r=this.tokenizer.fences(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.heading(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.nptable(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.hr(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.blockquote(e))e=e.substring(r.raw.length),r.tokens=this.blockTokens(r.text,[],n),t.push(r);else if(r=this.tokenizer.list(e)){for(e=e.substring(r.raw.length),i=r.items.length,o=0;o<i;o++)r.items[o].tokens=this.blockTokens(r.items[o].text,[],!1);t.push(r)}else if(r=this.tokenizer.html(e))e=e.substring(r.raw.length),t.push(r);else if(n&&(r=this.tokenizer.def(e)))e=e.substring(r.raw.length),this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});else if(r=this.tokenizer.table(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.lheading(e))e=e.substring(r.raw.length),t.push(r);else if(n&&(r=this.tokenizer.paragraph(e)))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.text(e,t))e=e.substring(r.raw.length),r.type?t.push(r):((a=t[t.length-1]).raw+="\n"+r.raw,a.text+="\n"+r.text);else if(e){var c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(c)}return t},i.inline=function(e){var t,n,r,o,i,a,c=e.length;for(t=0;t<c;t++)switch((a=e[t]).type){case"paragraph":case"text":case"heading":a.tokens=[],this.inlineTokens(a.text,a.tokens);break;case"table":for(a.tokens={header:[],cells:[]},o=a.header.length,n=0;n<o;n++)a.tokens.header[n]=[],this.inlineTokens(a.header[n],a.tokens.header[n]);for(o=a.cells.length,n=0;n<o;n++)for(i=a.cells[n],a.tokens.cells[n]=[],r=0;r<i.length;r++)a.tokens.cells[n][r]=[],this.inlineTokens(i[r],a.tokens.cells[n][r]);break;case"blockquote":this.inline(a.tokens);break;case"list":for(o=a.items.length,n=0;n<o;n++)this.inline(a.items[n].tokens)}return e},i.inlineTokens=function(e,t,n,r,o){var i;void 0===t&&(t=[]),void 0===n&&(n=!1),void 0===r&&(r=!1),void 0===o&&(o="");var a,c=e;if(this.tokens.links){var u=Object.keys(this.tokens.links);if(u.length>0)for(;null!=(a=this.tokenizer.rules.inline.reflinkSearch.exec(c));)u.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(c=c.slice(0,a.index)+"["+"a".repeat(a[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(a=this.tokenizer.rules.inline.blockSkip.exec(c));)c=c.slice(0,a.index)+"["+"a".repeat(a[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;e;)if(i=this.tokenizer.escape(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.tag(e,n,r))e=e.substring(i.raw.length),n=i.inLink,r=i.inRawBlock,t.push(i);else if(i=this.tokenizer.link(e))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,r)),t.push(i);else if(i=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,r)),t.push(i);else if(i=this.tokenizer.strong(e,c,o))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,r),t.push(i);else if(i=this.tokenizer.em(e,c,o))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,r),t.push(i);else if(i=this.tokenizer.codespan(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.br(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.del(e))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,r),t.push(i);else if(i=this.tokenizer.autolink(e,j))e=e.substring(i.raw.length),t.push(i);else if(n||!(i=this.tokenizer.url(e,j))){if(i=this.tokenizer.inlineText(e,r,D))e=e.substring(i.raw.length),o=i.raw.slice(-1),t.push(i);else if(e){var s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(s)}}else e=e.substring(i.raw.length),t.push(i);return t},n=t,o=[{key:"rules",get:function(){return{block:P,inline:B}}}],(r=null)&&e(n.prototype,r),o&&e(n,o),t}(),K=r.defaults,z=w.cleanUrl,Y=w.escape,U=function(){function e(e){this.options=e||K}var t=e.prototype;return t.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var o=this.options.highlight(e,r);null!=o&&o!==e&&(n=!0,e=o)}return r?'<pre><code class="'+this.options.langPrefix+Y(r,!0)+'">'+(n?e:Y(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:Y(e,!0))+"</code></pre>\n"},t.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},t.html=function(e){return e},t.heading=function(e,t,n,r){return this.options.headerIds?"<h"+t+' id="'+this.options.headerPrefix+r.slug(n)+'">'+e+"</h"+t+">\n":"<h"+t+">"+e+"</h"+t+">\n"},t.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},t.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+r+">\n"},t.listitem=function(e){return"<li>"+e+"</li>\n"},t.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},t.paragraph=function(e){return"<p>"+e+"</p>\n"},t.table=function(e,t){return t&&(t="<tbody>"+t+"</tbody>"),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"},t.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},t.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"</"+n+">\n"},t.strong=function(e){return"<strong>"+e+"</strong>"},t.em=function(e){return"<em>"+e+"</em>"},t.codespan=function(e){return"<code>"+e+"</code>"},t.br=function(){return this.options.xhtml?"<br/>":"<br>"},t.del=function(e){return"<del>"+e+"</del>"},t.link=function(e,t,n){if(null===(e=z(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<a href="'+Y(e)+'"';return t&&(r+=' title="'+t+'"'),r+=">"+n+"</a>"},t.image=function(e,t,n){if(null===(e=z(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<img src="'+e+'" alt="'+n+'"';return t&&(r+=' title="'+t+'"'),r+=this.options.xhtml?"/>":">"},t.text=function(e){return e},e}(),$=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,n){return""+n},t.image=function(e,t,n){return""+n},t.br=function(){return""},e}(),H=function(){function e(){this.seen={}}return e.prototype.slug=function(e){var t=e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){var n=t;do{this.seen[n]++,t=n+"-"+this.seen[n]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t},e}(),W=r.defaults,q=w.unescape,G=function(){function e(e){this.options=e||W,this.options.renderer=this.options.renderer||new U,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new $,this.slugger=new H}e.parse=function(t,n){return new e(n).parse(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var n,r,o,i,a,c,u,s,l,f,d,p,h,g,v,m,y,b,x="",w=e.length;for(n=0;n<w;n++)switch((f=e[n]).type){case"space":continue;case"hr":x+=this.renderer.hr();continue;case"heading":x+=this.renderer.heading(this.parseInline(f.tokens),f.depth,q(this.parseInline(f.tokens,this.textRenderer)),this.slugger);continue;case"code":x+=this.renderer.code(f.text,f.lang,f.escaped);continue;case"table":for(s="",u="",i=f.header.length,r=0;r<i;r++)u+=this.renderer.tablecell(this.parseInline(f.tokens.header[r]),{header:!0,align:f.align[r]});for(s+=this.renderer.tablerow(u),l="",i=f.cells.length,r=0;r<i;r++){for(u="",a=(c=f.tokens.cells[r]).length,o=0;o<a;o++)u+=this.renderer.tablecell(this.parseInline(c[o]),{header:!1,align:f.align[o]});l+=this.renderer.tablerow(u)}x+=this.renderer.table(s,l);continue;case"blockquote":l=this.parse(f.tokens),x+=this.renderer.blockquote(l);continue;case"list":for(d=f.ordered,p=f.start,h=f.loose,i=f.items.length,l="",r=0;r<i;r++)m=(v=f.items[r]).checked,y=v.task,g="",v.task&&(b=this.renderer.checkbox(m),h?v.tokens.length>0&&"text"===v.tokens[0].type?(v.tokens[0].text=b+" "+v.tokens[0].text,v.tokens[0].tokens&&v.tokens[0].tokens.length>0&&"text"===v.tokens[0].tokens[0].type&&(v.tokens[0].tokens[0].text=b+" "+v.tokens[0].tokens[0].text)):v.tokens.unshift({type:"text",text:b}):g+=b),g+=this.parse(v.tokens,h),l+=this.renderer.listitem(g,y,m);x+=this.renderer.list(l,d,p);continue;case"html":x+=this.renderer.html(f.text);continue;case"paragraph":x+=this.renderer.paragraph(this.parseInline(f.tokens));continue;case"text":for(l=f.tokens?this.parseInline(f.tokens):f.text;n+1<w&&"text"===e[n+1].type;)l+="\n"+((f=e[++n]).tokens?this.parseInline(f.tokens):f.text);x+=t?this.renderer.paragraph(l):l;continue;default:var _='Token with "'+f.type+'" type was not found.';if(this.options.silent)return;throw new Error(_)}return x},t.parseInline=function(e,t){t=t||this.renderer;var n,r,o="",i=e.length;for(n=0;n<i;n++)switch((r=e[n]).type){case"escape":o+=t.text(r.text);break;case"html":o+=t.html(r.text);break;case"link":o+=t.link(r.href,r.title,this.parseInline(r.tokens,t));break;case"image":o+=t.image(r.href,r.title,r.text);break;case"strong":o+=t.strong(this.parseInline(r.tokens,t));break;case"em":o+=t.em(this.parseInline(r.tokens,t));break;case"codespan":o+=t.codespan(r.text);break;case"br":o+=t.br();break;case"del":o+=t.del(this.parseInline(r.tokens,t));break;case"text":o+=t.text(r.text);break;default:var a='Token with "'+r.type+'" type was not found.';if(this.options.silent)return;throw new Error(a)}return o},e}(),X=w.merge,Z=w.checkSanitizeDeprecation,Q=w.escape,J=r.getDefaults,ee=r.changeDefaults,te=r.defaults;function ne(e,t,n){if(null==e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if("function"==typeof t&&(n=t,t=null),t=X({},ne.defaults,t||{}),Z(t),n){var r,o=t.highlight;try{r=F.lex(e,t)}catch(u){return n(u)}var i=function(e){var i;if(!e)try{i=G.parse(r,t)}catch(u){e=u}return t.highlight=o,e?n(e):n(null,i)};if(!o||o.length<3)return i();if(delete t.highlight,!r.length)return i();var a=0;return ne.walkTokens(r,(function(e){"code"===e.type&&(a++,setTimeout((function(){o(e.text,e.lang,(function(t,n){if(t)return i(t);null!=n&&n!==e.text&&(e.text=n,e.escaped=!0),0==--a&&i()}))}),0))})),void(0===a&&i())}try{var c=F.lex(e,t);return t.walkTokens&&ne.walkTokens(c,t.walkTokens),G.parse(c,t)}catch(u){if(u.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+Q(u.message+"",!0)+"</pre>";throw u}}return ne.options=ne.setOptions=function(e){return X(ne.defaults,e),ee(ne.defaults),ne},ne.getDefaults=J,ne.defaults=te,ne.use=function(e){var t=X({},e);if(e.renderer&&function(){var n=ne.defaults.renderer||new U,r=function(t){var r=n[t];n[t]=function(){for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];var c=e.renderer[t].apply(n,i);return!1===c&&(c=r.apply(n,i)),c}};for(var o in e.renderer)r(o);t.renderer=n}(),e.tokenizer&&function(){var n=ne.defaults.tokenizer||new A,r=function(t){var r=n[t];n[t]=function(){for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];var c=e.tokenizer[t].apply(n,i);return!1===c&&(c=r.apply(n,i)),c}};for(var o in e.tokenizer)r(o);t.tokenizer=n}(),e.walkTokens){var n=ne.defaults.walkTokens;t.walkTokens=function(t){e.walkTokens(t),n&&n(t)}}ne.setOptions(t)},ne.walkTokens=function(e,t){for(var r,o=n(e);!(r=o()).done;){var i=r.value;switch(t(i),i.type){case"table":for(var a,c=n(i.tokens.header);!(a=c()).done;){var u=a.value;ne.walkTokens(u,t)}for(var s,l=n(i.tokens.cells);!(s=l()).done;)for(var f,d=n(s.value);!(f=d()).done;){var p=f.value;ne.walkTokens(p,t)}break;case"list":ne.walkTokens(i.items,t);break;default:i.tokens&&ne.walkTokens(i.tokens,t)}}},ne.Parser=G,ne.parser=G.parse,ne.Renderer=U,ne.TextRenderer=$,ne.Lexer=F,ne.lexer=F.lex,ne.Tokenizer=A,ne.Slugger=H,ne.parse=ne,ne}()}]]); \ No newline at end of file diff --git a/tgui/public/tgui-panel.bundle.css b/tgui/public/tgui-panel.bundle.css index 66089a9dda..ba3c920f89 100644 --- a/tgui/public/tgui-panel.bundle.css +++ b/tgui/public/tgui-panel.bundle.css @@ -1 +1 @@ -body,html{box-sizing:border-box;height:100%;margin:0;font-size:12px}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:.5rem 0}h1{font-size:18px;font-size:1.5rem}h2{font-size:16px;font-size:1.333rem}h3{font-size:14px;font-size:1.167rem}h4{font-size:12px;font-size:1rem}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#1a1a1a!important}.color-white{color:#fff!important}.color-red{color:#df3e3e!important}.color-orange{color:#f37f33!important}.color-yellow{color:#fbda21!important}.color-olive{color:#cbe41c!important}.color-green{color:#25ca4c!important}.color-teal{color:#00d6cc!important}.color-blue{color:#2e93de!important}.color-violet{color:#7349cf!important}.color-purple{color:#ad45d0!important}.color-pink{color:#e34da1!important}.color-brown{color:#b97447!important}.color-grey{color:#848484!important}.color-good{color:#68c22d!important}.color-average{color:#f29a29!important}.color-bad{color:#df3e3e!important}.color-label{color:#8b9bb0!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.debug-layout,.debug-layout :not(g):not(path){color:hsla(0,0%,100%,.9)!important;background:transparent!important;outline:1px solid hsla(0,0%,100%,.5)!important;box-shadow:none!important;filter:none!important}.debug-layout:hover,.debug-layout :not(g):not(path):hover{outline-color:hsla(0,0%,100%,.8)!important}.outline-dotted{outline-style:dotted!important}.outline-dashed{outline-style:dashed!important}.outline-solid{outline-style:solid!important}.outline-double{outline-style:double!important}.outline-groove{outline-style:groove!important}.outline-ridge{outline-style:ridge!important}.outline-inset{outline-style:inset!important}.outline-outset{outline-style:outset!important}.outline-color-black{outline:.167rem solid #1a1a1a!important}.outline-color-white{outline:.167rem solid #fff!important}.outline-color-red{outline:.167rem solid #df3e3e!important}.outline-color-orange{outline:.167rem solid #f37f33!important}.outline-color-yellow{outline:.167rem solid #fbda21!important}.outline-color-olive{outline:.167rem solid #cbe41c!important}.outline-color-green{outline:.167rem solid #25ca4c!important}.outline-color-teal{outline:.167rem solid #00d6cc!important}.outline-color-blue{outline:.167rem solid #2e93de!important}.outline-color-violet{outline:.167rem solid #7349cf!important}.outline-color-purple{outline:.167rem solid #ad45d0!important}.outline-color-pink{outline:.167rem solid #e34da1!important}.outline-color-brown{outline:.167rem solid #b97447!important}.outline-color-grey{outline:.167rem solid #848484!important}.outline-color-good{outline:.167rem solid #68c22d!important}.outline-color-average{outline:.167rem solid #f29a29!important}.outline-color-bad{outline:.167rem solid #df3e3e!important}.outline-color-label{outline:.167rem solid #8b9bb0!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8b9bb0;border-left:.1666666667em solid #8b9bb0;padding-left:.5em;margin-bottom:.5em}.BlockQuote:last-child{margin-bottom:0}.Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0;margin-bottom:0}.Button .fa,.Button .far,.Button .fas{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.Button--hasContent .fa,.Button--hasContent .far,.Button--hasContent .fas{margin-right:.25em}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--circular{border-radius:50%}.Button--compact{padding:0 .25em;line-height:1.333em}.Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.Button--color--black:hover{transition:color 0ms,background-color 0ms}.Button--color--black:focus{transition:color .1s,background-color .1s}.Button--color--black:focus,.Button--color--black:hover{background-color:#0a0a0a;color:#fff}.Button--color--white{transition:color 50ms,background-color 50ms;background-color:#d9d9d9;color:#000}.Button--color--white:hover{transition:color 0ms,background-color 0ms}.Button--color--white:focus{transition:color .1s,background-color .1s}.Button--color--white:focus,.Button--color--white:hover{background-color:#f3f3f3;color:#000}.Button--color--red{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--red:hover{transition:color 0ms,background-color 0ms}.Button--color--red:focus{transition:color .1s,background-color .1s}.Button--color--red:focus,.Button--color--red:hover{background-color:#d52b2b;color:#fff}.Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#d95e0c;color:#fff}.Button--color--orange:hover{transition:color 0ms,background-color 0ms}.Button--color--orange:focus{transition:color .1s,background-color .1s}.Button--color--orange:focus,.Button--color--orange:hover{background-color:#ed6f1d;color:#fff}.Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.Button--color--yellow:focus{transition:color .1s,background-color .1s}.Button--color--yellow:focus,.Button--color--yellow:hover{background-color:#f3d00e;color:#000}.Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#9aad14;color:#fff}.Button--color--olive:hover{transition:color 0ms,background-color 0ms}.Button--color--olive:focus{transition:color .1s,background-color .1s}.Button--color--olive:focus,.Button--color--olive:hover{background-color:#afc41f;color:#fff}.Button--color--green{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--color--green:hover{transition:color 0ms,background-color 0ms}.Button--color--green:focus{transition:color .1s,background-color .1s}.Button--color--green:focus,.Button--color--green:hover{background-color:#27ab46;color:#fff}.Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#009a93;color:#fff}.Button--color--teal:hover{transition:color 0ms,background-color 0ms}.Button--color--teal:focus{transition:color .1s,background-color .1s}.Button--color--teal:focus,.Button--color--teal:hover{background-color:#0aafa8;color:#fff}.Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#1c71b1;color:#fff}.Button--color--blue:hover{transition:color 0ms,background-color 0ms}.Button--color--blue:focus{transition:color .1s,background-color .1s}.Button--color--blue:focus,.Button--color--blue:hover{background-color:#2883c8;color:#fff}.Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#552dab;color:#fff}.Button--color--violet:hover{transition:color 0ms,background-color 0ms}.Button--color--violet:focus{transition:color .1s,background-color .1s}.Button--color--violet:focus,.Button--color--violet:hover{background-color:#653ac1;color:#fff}.Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#8b2baa;color:#fff}.Button--color--purple:hover{transition:color 0ms,background-color 0ms}.Button--color--purple:focus{transition:color .1s,background-color .1s}.Button--color--purple:focus,.Button--color--purple:hover{background-color:#9e38c1;color:#fff}.Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#cf2082;color:#fff}.Button--color--pink:hover{transition:color 0ms,background-color 0ms}.Button--color--pink:focus{transition:color .1s,background-color .1s}.Button--color--pink:focus,.Button--color--pink:hover{background-color:#dd3794;color:#fff}.Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#8c5836;color:#fff}.Button--color--brown:hover{transition:color 0ms,background-color 0ms}.Button--color--brown:focus{transition:color .1s,background-color .1s}.Button--color--brown:focus,.Button--color--brown:hover{background-color:#a06844;color:#fff}.Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#646464;color:#fff}.Button--color--grey:hover{transition:color 0ms,background-color 0ms}.Button--color--grey:focus{transition:color .1s,background-color .1s}.Button--color--grey:focus,.Button--color--grey:hover{background-color:#757575;color:#fff}.Button--color--good{transition:color 50ms,background-color 50ms;background-color:#4d9121;color:#fff}.Button--color--good:hover{transition:color 0ms,background-color 0ms}.Button--color--good:focus{transition:color .1s,background-color .1s}.Button--color--good:focus,.Button--color--good:hover{background-color:#5da52d;color:#fff}.Button--color--average{transition:color 50ms,background-color 50ms;background-color:#cd7a0d;color:#fff}.Button--color--average:hover{transition:color 0ms,background-color 0ms}.Button--color--average:focus{transition:color .1s,background-color .1s}.Button--color--average:focus,.Button--color--average:hover{background-color:#e68d18;color:#fff}.Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--bad:hover{transition:color 0ms,background-color 0ms}.Button--color--bad:focus{transition:color .1s,background-color .1s}.Button--color--bad:focus,.Button--color--bad:hover{background-color:#d52b2b;color:#fff}.Button--color--label{transition:color 50ms,background-color 50ms;background-color:#657a94;color:#fff}.Button--color--label:hover{transition:color 0ms,background-color 0ms}.Button--color--label:focus{transition:color .1s,background-color .1s}.Button--color--label:focus,.Button--color--label:hover{background-color:#7b8da4;color:#fff}.Button--color--default{transition:color 50ms,background-color 50ms;background-color:#3e6189;color:#fff}.Button--color--default:hover{transition:color 0ms,background-color 0ms}.Button--color--default:focus{transition:color .1s,background-color .1s}.Button--color--default:focus,.Button--color--default:hover{background-color:#4c729d;color:#fff}.Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--caution:hover{transition:color 0ms,background-color 0ms}.Button--color--caution:focus{transition:color .1s,background-color .1s}.Button--color--caution:focus,.Button--color--caution:hover{background-color:#f3d00e;color:#000}.Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--danger:hover{transition:color 0ms,background-color 0ms}.Button--color--danger:focus{transition:color .1s,background-color .1s}.Button--color--danger:focus,.Button--color--danger:hover{background-color:#d52b2b;color:#fff}.Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#202020;color:#fff;background-color:rgba(32,32,32,0);color:hsla(0,0%,100%,.5)}.Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.Button--color--transparent:focus{transition:color .1s,background-color .1s}.Button--color--transparent:focus,.Button--color--transparent:hover{background-color:#2c2c2c;color:#fff}.Button--disabled{background-color:#999!important}.Button--selected{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--selected:hover{transition:color 0ms,background-color 0ms}.Button--selected:focus{transition:color .1s,background-color .1s}.Button--selected:focus,.Button--selected:hover{background-color:#27ab46;color:#fff}.ColorBox{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center}.Dimmer{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.75);z-index:1}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid hsla(0,0%,100%,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid hsla(0,0%,100%,.1)}.Dropdown{position:relative}.Dropdown__control{position:relative;display:inline-block;font-family:Verdana,sans-serif;font-size:1em;width:8.3333333333em;line-height:1.4166666667em;user-select:none}.Dropdown__arrow-button{float:right;padding-left:.5em;border-left:.0833333333em solid #000;border-left:.0833333333em solid rgba(0,0,0,.25)}.Dropdown__menu{overflow-y:auto;overflow-y:scroll}.Dropdown__menu,.Dropdown__menu-noscroll{position:absolute;z-index:5;width:8.3333333333em;max-height:16.6666666667em;border-radius:0 0 .1666666667em .1666666667em;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menu-noscroll{overflow-y:auto}.Dropdown__menuentry{padding:.1666666667em .3333333333em;font-family:Verdana,sans-serif;font-size:1em;line-height:1.4166666667em;transition:background-color .1s}.Dropdown__menuentry:hover{background-color:hsla(0,0%,100%,.2);transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.FatalError{display:block!important;position:absolute;top:0;left:0;right:0;bottom:0;padding:12px;font-size:12px;font-family:Consolas,monospace;color:#fff;background-color:#00d;z-index:1000;overflow:hidden;text-align:center}.FatalError__logo{display:inline-block;text-align:left;font-size:10px;line-height:8px;position:relative;margin-top:12px;top:0;left:0;animation:FatalError__rainbow 2s linear infinite alternate,FatalError__shadow 4s linear infinite alternate,FatalError__tfmX 3s infinite alternate,FatalError__tfmY 4s infinite alternate;white-space:pre-wrap;word-break:break-all}.FatalError__header{margin-top:12px}.FatalError__stack{text-align:left;white-space:pre-wrap;word-break:break-all;margin-top:24px;margin-bottom:24px}.FatalError__footer{margin-bottom:24px}@keyframes FatalError__rainbow{0%{color:#ff0}50%{color:#0ff}to{color:#f0f}}@keyframes FatalError__shadow{0%{left:-2px;text-shadow:4px 0 #f0f}50%{left:0;text-shadow:0 0 #0ff}to{left:2px;text-shadow:-4px 0 #ff0}}@keyframes FatalError__tfmX{0%{left:15px}to{left:-15px}}@keyframes FatalError__tfmY{to{top:-15px}}.Flex{display:-ms-flexbox;display:flex}.Flex--inline{display:inline-flex}.Flex--iefix{display:table!important;width:105%;border-collapse:collapse;border-spacing:0}.Flex--iefix:after{content:"";display:table-cell;width:5%}.Flex--iefix--column{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Flex--iefix--column>.Flex__item--iefix{display:table-row!important}.Flex--iefix--column>.Flex__item--iefix--grow{height:100%!important}.Flex__item--iefix{display:table-cell!important;width:1%!important;min-width:99%}.Flex__item--iefix--grow{width:auto!important}.Flex--spacing--1{margin:0 -.25em}.Flex--spacing--1>.Flex__item{margin:0 .25em}.Flex--spacing--2{margin:0 -.5em}.Flex--spacing--2>.Flex__item{margin:0 .5em}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.Knob:after{content:".";color:transparent;line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(180deg,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,0));border-radius:50%;box-shadow:0 .05em .5em 0 rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:hsla(0,0%,100%,.9)}.Knob__popupValue{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotate(135deg)}.Knob__ringTrack{fill:transparent;stroke:hsla(0,0%,100%,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotate(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.Knob__ringFill{fill:transparent;stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-.25em -.5em 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.Modal{background-color:#202020;max-width:calc(100% - 1rem);padding:1rem}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:transparent;transition:border-color .5s}.ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.ProgressBar__fill--animated{transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--black{border:.0833333333em solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:.0833333333em solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:.0833333333em solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.Section{position:relative;margin-bottom:.5em;background-color:#131313;box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__content{padding:.66em .5em}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--fill .Section__content{flex-grow:1}.Section--iefix.Section--fill{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Section--iefix.Section--fill .Section__content{display:table-row!important;height:100%!important}.Section--scrollable{overflow-x:hidden;overflow-y:scroll}.Section--level--1 .Section__titleText{font-size:1.1666666667em}.Section--level--2 .Section__titleText{font-size:1.0833333333em}.Section--level--3 .Section__titleText{font-size:1em}.Section--level--2,.Section--level--3{background-color:transparent;box-shadow:none;margin-left:-.5em;margin-right:-.5em}.Slider{cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid transparent;border-right:.4166666667em solid transparent;border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__cell--header,.Table__row--header .Table__cell{font-weight:700;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden}.Tabs--vertical{flex-direction:column}.Tabs--horizontal{margin-bottom:.5em}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;color:hsla(0,0%,100%,.5);min-height:2.25em;min-width:4em}.Tab--selected{color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{margin-left:.25em}.Tab__left,.Tab__right{min-width:1.5em;text-align:center}.Tab__right{margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid transparent;border-bottom:.1666666667em solid transparent}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid transparent;border-right:.1666666667em solid transparent}.Tabs--vertical .Tab--selected{border-right:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-right-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-right-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-right-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-right-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-right-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-right-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-right-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-right-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-right-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-right-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-right-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-right-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-right-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-right-color:#848484}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-right-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-right-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-right-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-right-color:#8b9bb0}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:transparent}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.Input--monospace .Input__input{font-family:Consolas,monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:transparent;color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.Tooltip{position:absolute;top:0;left:0;right:0;bottom:0;font-style:normal;font-weight:400}.Tooltip:after{position:absolute;display:block;white-space:nowrap;z-index:2;padding:.5em .75em;transform:translateX(-50%);pointer-events:none;visibility:hidden;opacity:0;text-align:left;content:attr(data-tooltip);transition:all .15s;background-color:#000;box-shadow:.1em .1em 1.25em -.1em rgba(0,0,0,.5);border-radius:.16em}.Tooltip:hover:after{transition:all 70ms;pointer-events:none;visibility:visible;opacity:1}.Tooltip--long:after{width:20.8333333333em;white-space:normal}.Tooltip--top:after{bottom:100%;left:50%;transform:translateX(-50%) translateY(.5em)}.Tooltip--bottom:after,.Tooltip--top:hover:after{transform:translateX(-50%) translateY(-.5em)}.Tooltip--bottom:after{top:100%;left:50%}.Tooltip--bottom:hover:after{transform:translateX(-50%) translateY(.5em)}.Tooltip--bottom-left:after{top:100%;right:50%;transform:translateX(12px) translateY(-.5em)}.Tooltip--bottom-left:hover:after{transform:translateX(12px) translateY(.5em)}.Tooltip--bottom-right:after{top:100%;left:50%;transform:translateX(-12px) translateY(-.5em)}.Tooltip--bottom-right:hover:after{transform:translateX(-12px) translateY(.5em)}.Tooltip--left:after{top:50%;right:100%;transform:translateX(.5em) translateY(-50%)}.Tooltip--left:hover:after,.Tooltip--right:after{transform:translateX(-.5em) translateY(-50%)}.Tooltip--right:after{top:50%;left:100%}.Tooltip--right:hover:after{transform:translateX(.5em) translateY(-50%)}.Chat{color:#abc6ec}.Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.Chat__badge:before{content:"x"}.Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.Chat__scrollButton{position:fixed;right:2em;bottom:1em}.Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#131313}.Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.Chat__highlight{color:#000}.Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.ChatMessage{word-wrap:break-word}.ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.Ping{position:relative;padding:.125em .25em;border:.0833333333em solid hsla(0,0%,54.9%,.5);border-radius:.25em;width:3.75em;text-align:right}.Ping__indicator{content:"";position:absolute;top:.5em;left:.5em;width:.5em;height:.5em;background-color:#888;border-radius:.25em}.Notifications{position:absolute;bottom:1em;left:1em;right:2em}.Notification{color:#fff;background-color:#dc143c;padding:.5em;margin:1em 0}.Notification:first-child{margin-top:0}.Notification:last-child{margin-bottom:0}.Layout,.Layout *{scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.Window{bottom:0;right:0;color:#fff;background-color:#202020;background-image:linear-gradient(180deg,#202020 0,#202020)}.Window,.Window__titleBar{position:fixed;top:0;left:0}.Window__titleBar{z-index:1;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(56,56,56,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}a{color:#397ea5}a.visited,a:visited{color:#7c00e6}a.popt{text-decoration:none}.popup{position:fixed;top:50%;left:50%;background:#ddd}.popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.popup .close:hover,.popup .head{background:#999}.popup .head{color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.popup input[type=text]:active,.popup input[type=text]:focus,.popup input[type=text]:hover{border-color:green}.popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.popup input[type=submit]:active,.popup input[type=submit]:focus,.popup input[type=submit]:hover{background:#aaa;cursor:pointer}.changeFont{padding:10px}.changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.changeFont a:hover{background:#ccc}.highlightPopup{padding:10px;text-align:center}.highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.highlightPopup input.highlightColor{background-color:#ff0}.highlightPopup input.highlightTermSubmit{margin-top:5px}.contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.contextMenu a:hover{background-color:#ccc}.filterMessages{padding:5px}.filterMessages div{padding:2px 0}.icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.motd{color:#a4bad6;font-family:Verdana,sans-serif;white-space:normal}.motd h1,.motd h2,.motd h3,.motd h4,.motd h5,.motd h6{color:#a4bad6;text-decoration:underline}.motd a,.motd a:active,.motd a:hover,.motd a:link,.motd a:visited{color:#a4bad6}.admin,.adminooc,.bold,.looc,.medal,.name,.ooc,.prefix,.yell{font-weight:700}.emote,.italic,.italics{font-style:italic}.highlight{background:#ff0}h1,h2,h3,h4,h5,h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}h1.alert,h2.alert{color:#a4bad6}em{font-style:normal}.ooc,em{font-weight:700}.ooc{color:#cca300}.looc{color:#69c;font-weight:700}.antagooc{color:#b8002e;font-weight:700}.adminobserverooc{color:#09c;font-weight:700}.adminooc{color:#3d5bc3;font-weight:700}.adminsay{color:#ff4500;font-weight:700}.adminobserver{color:#960;font-weight:700}.admin{color:#5975da;font-weight:700}.mentorsay{color:#e236d8;font-weight:700}.mentorsay_admin{color:#8a2be2;font-weight:700}.name{font-weight:700}.deadsay{color:#e2c1ff}.binarysay{color:#1e90ff}.binarysay a{color:#0f0}.binarysay a:active,.binarysay a:visited{color:#8f8}.radio{color:#1ecc43}.sciradio{color:#c68cfa}.comradio{color:#fcdf03}.secradio{color:#dd3535}.medradio{color:#57b8f0}.engradio{color:#f37746}.suppradio{color:#b88646}.servradio{color:#6ca729}.syndradio{color:#8f4a4b}.centcomradio{color:#2681a5}.aiprivradio{color:#d65d95}.redteamradio{color:#f44}.blueteamradio{color:#3434fd}.yell{font-weight:700}.alert{color:#d82020}.emote{font-style:italic}.userdanger{font-weight:700;font-size:185%}.danger,.userdanger,.warning{color:#c51e1e}.warning{font-style:italic}.alertwarning{color:red;font-weight:700}.boldwarning{font-style:italic}.announce,.boldannounce,.boldwarning{color:#c51e1e;font-weight:700}.greenannounce{color:#059223;font-weight:700}.rose{color:#ff5050}.info{color:#9ab0ff}.notice{color:#6685f5}.tinynotice{font-size:85%}.smallnotice,.tinynotice{color:#6685f5;font-style:italic}.smallnotice{font-size:90%}.boldnotice{color:#6685f5;font-weight:700}.hear{font-style:italic}.adminnotice,.hear{color:#6685f5}.adminhelp{color:red;font-weight:700}.unconscious{color:#a4bad6;font-weight:700}.suicide{color:#ff5050;font-style:italic}.green{color:#059223}.red{color:red}.blue{color:#215cff}.nicegreen{color:#059223}.userlove{color:#ff42a6;font-weight:700;text-shadow:0 0 6px #82365e}.love,.userlove{font-style:italic}.love{color:#ff4591;text-shadow:0 0 6px #994449}.cult{color:#aa1c1c}.cultbold,.cultitalic{color:#aa1c1c;font-style:italic}.cultbold{font-weight:700}.cultboldtalic,.cultlarge{color:#aa1c1c;font-weight:700;font-size:185%}.narsie{font-size:925%}.narsie,.narsiesmall{color:#aa1c1c;font-weight:700}.narsiesmall{font-size:370%}.colossus{color:#7f282a;font-size:310%}.hierophant{color:#b441ee;font-weight:700;font-style:italic}.hierophant_warning{color:#c56bf1;font-style:italic}.purple{color:#9956d3}.holoparasite{color:#88809c}.revennotice{color:#c099e2}.revenbignotice,.revenboldnotice{color:#c099e2;font-weight:700}.revenbignotice{font-size:185%}.revenminor{color:#823abb}.revenwarning{color:#760fbb;font-style:italic}.revendanger{color:#760fbb;font-weight:700;font-size:185%}.umbra{color:#5000a0}.umbra_emphasis,.umbra_large{color:#5000a0;font-weight:700;font-style:italic}.umbra_large{font-size:3}.deconversion_message{color:#5000a0;font-size:185%;font-style:italic}.brass,.heavy_brass{color:#be8700}.heavy_brass{font-weight:700;font-style:italic}.large_brass{color:#be8700;font-size:185%}.big_brass{font-size:185%}.big_brass,.ratvar{color:#be8700;font-weight:700;font-style:italic}.ratvar{font-size:6}.alloy{color:#42474d}.heavy_alloy,.nezbere_large{color:#42474d;font-weight:700;font-style:italic}.nezbere_large{font-size:185%}.nezbere{font-weight:700;font-style:italic}.nezbere,.nezbere_small{color:#42474d}.sevtug_large{font-size:185%}.sevtug,.sevtug_large{color:#af0aaf;font-weight:700;font-style:italic}.sevtug_small{color:#af0aaf}.inathneq_large{font-size:185%}.inathneq,.inathneq_large{color:#1e8ce1;font-weight:700;font-style:italic}.inathneq_small{color:#1e8ce1}.nzcrentr_large{font-size:185%}.nzcrentr,.nzcrentr_large{color:#daaa18;font-weight:700;font-style:italic}.nzcrentr_small{color:#daaa18}.neovgre_large{font-size:185%}.neovgre,.neovgre_large{color:#6e001a;font-weight:700;font-style:italic}.neovgre_small{color:#6e001a}.ghostalert{color:#60f;font-style:italic;font-weight:700}.alien{color:#855d85}.alertalien,.noticealien{color:#059223}.alertalien{font-weight:700}.changeling{color:#059223;font-style:italic}.alertsyndie{color:red}.alertsyndie,.spider{font-size:185%;font-weight:700}.spider{color:#80f}.interface{color:#750e75}.sans{font-family:Comic Sans MS,cursive,sans-serif}.papyrus{font-family:Papyrus,cursive,sans-serif}.robot{font-family:Courier New,cursive,sans-serif}.command_headset{font-weight:700;font-size:160%}.small{font-size:60%}.big{font-size:185%}.reallybig{font-size:245%}.extremelybig{font-size:310%}.greentext{color:#059223;font-size:185%}.redtext{color:#c51e1e;font-size:185%}.yellowtext{color:#fc0;font-size:185%}.clown{color:#ff70c1;font-size:160%;font-family:Comic Sans MS,cursive,sans-serif;font-weight:700}.singing{font-family:Trebuchet MS,cursive,sans-serif;font-style:italic}.his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.hypnophrase{color:#202020;font-weight:700;animation:hypnocolor 1.5s infinite;animation-direction:alternate}.velvet{color:#660015;font-weight:700;animation:velvet 5s infinite;animation-direction:alternate}.phobia{color:#d00;font-weight:700;animation:phobia .75s infinite}.icon{height:1em;width:auto}.memo{color:#638500}.memo,.memoedit{text-align:center}.memoedit{font-size:125%}.abductor{color:#c204c2;font-style:italic}.mind_control{color:#df3da9;font-size:100%;font-weight:700;font-style:italic}.slime{color:#00ced1}.drone{color:#848482}.monkey{color:#975032}.swarmer{color:#2c75ff}.resonate{color:#298f85}.monkeyhive{color:#a56408}.monkeylead{color:#af6805;font-size:80%}.connectionClosed,.fatalError{background:red;color:#fff;padding:5px}.connectionClosed.restored{background:green}.internal.boldnshit{color:#3d5bc3;font-weight:700}.text-normal{font-weight:400;font-style:normal}.hidden{display:none;visibility:hidden}.ml-1{margin-left:1em}.ml-2{margin-left:2em}.ml-3{margin-left:3em}.theme-light .color-black{color:#000!important}.theme-light .color-white{color:#e6e6e6!important}.theme-light .color-red{color:#c82121!important}.theme-light .color-orange{color:#e6630d!important}.theme-light .color-yellow{color:#e5c304!important}.theme-light .color-olive{color:#a3b816!important}.theme-light .color-green{color:#1d9f3b!important}.theme-light .color-teal{color:#00a39c!important}.theme-light .color-blue{color:#1e78bb!important}.theme-light .color-violet{color:#5a30b5!important}.theme-light .color-purple{color:#932eb4!important}.theme-light .color-pink{color:#db228a!important}.theme-light .color-brown{color:#955d39!important}.theme-light .color-grey{color:#e6e6e6!important}.theme-light .color-good{color:#529923!important}.theme-light .color-average{color:#da810e!important}.theme-light .color-bad{color:#c82121!important}.theme-light .color-label{color:#353535!important}.theme-light .color-bg-black{background-color:#000!important}.theme-light .color-bg-white{background-color:#bfbfbf!important}.theme-light .color-bg-red{background-color:#a61c1c!important}.theme-light .color-bg-orange{background-color:#c0530b!important}.theme-light .color-bg-yellow{background-color:#bfa303!important}.theme-light .color-bg-olive{background-color:#889912!important}.theme-light .color-bg-green{background-color:#188532!important}.theme-light .color-bg-teal{background-color:#008882!important}.theme-light .color-bg-blue{background-color:#19649c!important}.theme-light .color-bg-violet{background-color:#4b2897!important}.theme-light .color-bg-purple{background-color:#7a2696!important}.theme-light .color-bg-pink{background-color:#b61d73!important}.theme-light .color-bg-brown{background-color:#7c4d2f!important}.theme-light .color-bg-grey{background-color:#bfbfbf!important}.theme-light .color-bg-good{background-color:#44801d!important}.theme-light .color-bg-average{background-color:#b56b0b!important}.theme-light .color-bg-bad{background-color:#a61c1c!important}.theme-light .color-bg-label{background-color:#2c2c2c!important}.theme-light .Tabs{display:flex;align-items:stretch;overflow:hidden}.theme-light .Tabs--vertical{flex-direction:column}.theme-light .Tabs--horizontal{margin-bottom:.5em}.theme-light .Tabs--horizontal:last-child{margin-bottom:0}.theme-light .Tabs__Tab{flex-grow:0}.theme-light .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-light .Tab{display:flex;align-items:center;justify-content:space-between;color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em}.theme-light .Tab--selected{color:#404040}.theme-light .Tab__text{flex-grow:1;margin:0 .5em}.theme-light .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-light .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-light .Tabs--horizontal .Tab{border-top:.1666666667em solid transparent;border-bottom:.1666666667em solid transparent}.theme-light .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-light .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid transparent;border-right:.1666666667em solid transparent}.theme-light .Tabs--vertical .Tab--selected{border-right:.1666666667em solid #000}.theme-light .Tab--selected.Tab--color--black{color:#404040}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-light .Tabs--vertical .Tab--selected.Tab--color--black{border-right-color:#000}.theme-light .Tab--selected.Tab--color--white{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--white{border-right-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--red{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--red{border-right-color:#c82121}.theme-light .Tab--selected.Tab--color--orange{color:#f48942}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--orange{border-right-color:#e6630d}.theme-light .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-light .Tabs--vertical .Tab--selected.Tab--color--yellow{border-right-color:#e5c304}.theme-light .Tab--selected.Tab--color--olive{color:#d0e732}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-light .Tabs--vertical .Tab--selected.Tab--color--olive{border-right-color:#a3b816}.theme-light .Tab--selected.Tab--color--green{color:#33da5a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-light .Tabs--vertical .Tab--selected.Tab--color--green{border-right-color:#1d9f3b}.theme-light .Tab--selected.Tab--color--teal{color:#00faef}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-light .Tabs--vertical .Tab--selected.Tab--color--teal{border-right-color:#00a39c}.theme-light .Tab--selected.Tab--color--blue{color:#419ce1}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-light .Tabs--vertical .Tab--selected.Tab--color--blue{border-right-color:#1e78bb}.theme-light .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-light .Tabs--vertical .Tab--selected.Tab--color--violet{border-right-color:#5a30b5}.theme-light .Tab--selected.Tab--color--purple{color:#b455d4}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-light .Tabs--vertical .Tab--selected.Tab--color--purple{border-right-color:#932eb4}.theme-light .Tab--selected.Tab--color--pink{color:#e558a7}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-light .Tabs--vertical .Tab--selected.Tab--color--pink{border-right-color:#db228a}.theme-light .Tab--selected.Tab--color--brown{color:#c0825a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-light .Tabs--vertical .Tab--selected.Tab--color--brown{border-right-color:#955d39}.theme-light .Tab--selected.Tab--color--grey{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--grey{border-right-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--good{color:#77d23b}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-light .Tabs--vertical .Tab--selected.Tab--color--good{border-right-color:#529923}.theme-light .Tab--selected.Tab--color--average{color:#f3a23a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-light .Tabs--vertical .Tab--selected.Tab--color--average{border-right-color:#da810e}.theme-light .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--bad{border-right-color:#c82121}.theme-light .Tab--selected.Tab--color--label{color:#686868}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-light .Tabs--vertical .Tab--selected.Tab--color--label{border-right-color:#353535}.theme-light .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-light .Section:last-child{margin-bottom:0}.theme-light .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-light .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-light .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-light .Section__content{padding:.66em .5em}.theme-light .Section--fill{display:flex;flex-direction:column;height:100%}.theme-light .Section--fill .Section__content{flex-grow:1}.theme-light .Section--iefix.Section--fill{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-light .Section--iefix.Section--fill .Section__content{display:table-row!important;height:100%!important}.theme-light .Section--scrollable{overflow-x:hidden;overflow-y:scroll}.theme-light .Section--level--1 .Section__titleText{font-size:1.1666666667em}.theme-light .Section--level--2 .Section__titleText{font-size:1.0833333333em}.theme-light .Section--level--3 .Section__titleText{font-size:1em}.theme-light .Section--level--2,.theme-light .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-.5em;margin-right:-.5em}.theme-light .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-light .Button:last-child{margin-right:0;margin-bottom:0}.theme-light .Button .fa,.theme-light .Button .far,.theme-light .Button .fas{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-light .Button--hasContent .fa,.theme-light .Button--hasContent .far,.theme-light .Button--hasContent .fas{margin-right:.25em}.theme-light .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-light .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-light .Button--circular{border-radius:50%}.theme-light .Button--compact{padding:0 .25em;line-height:1.333em}.theme-light .Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.theme-light .Button--color--black:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--black:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--black:focus,.theme-light .Button--color--black:hover{background-color:#0a0a0a;color:#fff}.theme-light .Button--color--white{transition:color 50ms,background-color 50ms;background-color:#bfbfbf;color:#000}.theme-light .Button--color--white:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--white:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--white:focus,.theme-light .Button--color--white:hover{background-color:#d7d7d7;color:#000}.theme-light .Button--color--red{transition:color 50ms,background-color 50ms;background-color:#a61c1c;color:#fff}.theme-light .Button--color--red:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--red:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--red:focus,.theme-light .Button--color--red:hover{background-color:#bc2828;color:#fff}.theme-light .Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#c0530b;color:#fff}.theme-light .Button--color--orange:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--orange:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--orange:focus,.theme-light .Button--color--orange:hover{background-color:#d76316;color:#fff}.theme-light .Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#bfa303;color:#fff}.theme-light .Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--yellow:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--yellow:focus,.theme-light .Button--color--yellow:hover{background-color:#d7b90d;color:#fff}.theme-light .Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#889912;color:#fff}.theme-light .Button--color--olive:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--olive:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--olive:focus,.theme-light .Button--color--olive:hover{background-color:#9cae1d;color:#fff}.theme-light .Button--color--green{transition:color 50ms,background-color 50ms;background-color:#188532;color:#fff}.theme-light .Button--color--green:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--green:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--green:focus,.theme-light .Button--color--green:hover{background-color:#24993f;color:#fff}.theme-light .Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#008882;color:#fff}.theme-light .Button--color--teal:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--teal:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--teal:focus,.theme-light .Button--color--teal:hover{background-color:#0a9c95;color:#fff}.theme-light .Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#19649c;color:#fff}.theme-light .Button--color--blue:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--blue:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--blue:focus,.theme-light .Button--color--blue:hover{background-color:#2475b1;color:#fff}.theme-light .Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#4b2897;color:#fff}.theme-light .Button--color--violet:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--violet:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--violet:focus,.theme-light .Button--color--violet:hover{background-color:#5a35ac;color:#fff}.theme-light .Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#7a2696;color:#fff}.theme-light .Button--color--purple:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--purple:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--purple:focus,.theme-light .Button--color--purple:hover{background-color:#8d33ab;color:#fff}.theme-light .Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#b61d73;color:#fff}.theme-light .Button--color--pink:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--pink:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--pink:focus,.theme-light .Button--color--pink:hover{background-color:#ce2985;color:#fff}.theme-light .Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#7c4d2f;color:#fff}.theme-light .Button--color--brown:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--brown:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--brown:focus,.theme-light .Button--color--brown:hover{background-color:#8f5d3c;color:#fff}.theme-light .Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#bfbfbf;color:#000}.theme-light .Button--color--grey:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--grey:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--grey:focus,.theme-light .Button--color--grey:hover{background-color:#d7d7d7;color:#000}.theme-light .Button--color--good{transition:color 50ms,background-color 50ms;background-color:#44801d;color:#fff}.theme-light .Button--color--good:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--good:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--good:focus,.theme-light .Button--color--good:hover{background-color:#539329;color:#fff}.theme-light .Button--color--average{transition:color 50ms,background-color 50ms;background-color:#b56b0b;color:#fff}.theme-light .Button--color--average:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--average:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--average:focus,.theme-light .Button--color--average:hover{background-color:#cd7d16;color:#fff}.theme-light .Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#a61c1c;color:#fff}.theme-light .Button--color--bad:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--bad:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--bad:focus,.theme-light .Button--color--bad:hover{background-color:#bc2828;color:#fff}.theme-light .Button--color--label{transition:color 50ms,background-color 50ms;background-color:#2c2c2c;color:#fff}.theme-light .Button--color--label:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--label:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--label:focus,.theme-light .Button--color--label:hover{background-color:#393939;color:#fff}.theme-light .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#bbb;color:#000}.theme-light .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--default:focus,.theme-light .Button--color--default:hover{background-color:#d3d3d3;color:#000}.theme-light .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-light .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--caution:focus,.theme-light .Button--color--caution:hover{background-color:#d67313;color:#fff}.theme-light .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-light .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--danger:focus,.theme-light .Button--color--danger:hover{background-color:#afb30a;color:#fff}.theme-light .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#eee;color:#000;background-color:hsla(0,0%,93.3%,0);color:rgba(0,0,0,.5)}.theme-light .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--transparent:focus,.theme-light .Button--color--transparent:hover{background-color:#fcfcfc;color:#000}.theme-light .Button--disabled{background-color:#363636!important}.theme-light .Button--selected{transition:color 50ms,background-color 50ms;background-color:#0668b8;color:#fff}.theme-light .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--selected:focus{transition:color .1s,background-color .1s}.theme-light .Button--selected:focus,.theme-light .Button--selected:hover{background-color:#107ad0;color:#fff}.theme-light .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#fff;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-light .NumberInput--fluid{display:block}.theme-light .NumberInput__content{margin-left:.5em}.theme-light .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-light .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-light .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;text-align:right}.theme-light .Input,.theme-light .NumberInput__input{line-height:1.4166666667em;background-color:#fff;color:#000}.theme-light .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;padding:0 .3333333333em;margin-right:.1666666667em;overflow:visible}.theme-light .Input--fluid{display:block;width:auto}.theme-light .Input__baseline{display:inline-block;color:transparent}.theme-light .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:transparent;color:#000;color:inherit}.theme-light .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-light .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-light .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#fff;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-light .TextArea--fluid{display:block;width:auto;height:auto}.theme-light .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:transparent;color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-light .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-light .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-light .Knob:after{content:".";color:transparent;line-height:2.5em}.theme-light .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(180deg,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,0));border-radius:50%;box-shadow:0 .05em .5em 0 rgba(0,0,0,.5)}.theme-light .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-light .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:hsla(0,0%,100%,.9)}.theme-light .Knob__popupValue{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.theme-light .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-light .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-light .Knob__ringTrack{fill:transparent;stroke:hsla(0,0%,100%,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-light .Knob__ringFillPivot{transform:rotate(135deg)}.theme-light .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-light .Knob__ringFill{fill:transparent;stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-light .Knob--color--black .Knob__ringFill{stroke:#000}.theme-light .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-light .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-light .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-light .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-light .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-light .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-light .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-light .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-light .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-light .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-light .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-light .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-light .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-light .Slider{cursor:e-resize}.theme-light .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-light .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-light .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid transparent;border-right:.4166666667em solid transparent;border-bottom:.4166666667em solid #000}.theme-light .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.theme-light .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:transparent;transition:border-color .5s}.theme-light .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-light .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-light .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-light .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-light .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-light .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-light .ProgressBar--color--white{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--red{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--orange{border:.0833333333em solid #c0530b!important}.theme-light .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-light .ProgressBar--color--yellow{border:.0833333333em solid #bfa303!important}.theme-light .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-light .ProgressBar--color--olive{border:.0833333333em solid #889912!important}.theme-light .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-light .ProgressBar--color--green{border:.0833333333em solid #188532!important}.theme-light .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-light .ProgressBar--color--teal{border:.0833333333em solid #008882!important}.theme-light .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-light .ProgressBar--color--blue{border:.0833333333em solid #19649c!important}.theme-light .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-light .ProgressBar--color--violet{border:.0833333333em solid #4b2897!important}.theme-light .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-light .ProgressBar--color--purple{border:.0833333333em solid #7a2696!important}.theme-light .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-light .ProgressBar--color--pink{border:.0833333333em solid #b61d73!important}.theme-light .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-light .ProgressBar--color--brown{border:.0833333333em solid #7c4d2f!important}.theme-light .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-light .ProgressBar--color--grey{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--good{border:.0833333333em solid #44801d!important}.theme-light .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-light .ProgressBar--color--average{border:.0833333333em solid #b56b0b!important}.theme-light .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-light .ProgressBar--color--bad{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--label{border:.0833333333em solid #2c2c2c!important}.theme-light .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-light .Chat{color:#000}.theme-light .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-light .Chat__badge:before{content:"x"}.theme-light .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-light .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-light .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-light .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-light .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-light .Chat__highlight{color:#000}.theme-light .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-light .ChatMessage{word-wrap:break-word}.theme-light .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-light .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-light .Layout,.theme-light .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-light .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-light .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-light .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(180deg,#eee 0,#eee)}.theme-light .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-light .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-light .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-light .Window__contentPadding:after{height:0}.theme-light .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-light .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:hsla(0,0%,98.8%,.25);pointer-events:none}.theme-light .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-light .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-light .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-light .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-light .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s,background-color .25s}.theme-light .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-light .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-light .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-light .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-light .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-light .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-light body,.theme-light html{padding:0;margin:0;height:100%;color:#000}.theme-light body{background:#e0e0e0;font-family:Verdana,sans-serif;font-size:13px;line-height:1.2;overflow-x:hidden;overflow-y:scroll;word-wrap:break-word}.theme-light img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}.theme-light img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.theme-light a{color:#00f}.theme-light a.visited,.theme-light a:visited{color:#f0f}.theme-light a.popt{text-decoration:none}.theme-light .popup{position:fixed;top:50%;left:50%;background:#ddd}.theme-light .popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.theme-light .popup .close:hover{background:#999}.theme-light .popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.theme-light .popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.theme-light .popup input[type=text]:active,.theme-light .popup input[type=text]:focus,.theme-light .popup input[type=text]:hover{border-color:green}.theme-light .popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.theme-light .popup input[type=submit]:active,.theme-light .popup input[type=submit]:focus,.theme-light .popup input[type=submit]:hover{background:#aaa;cursor:pointer}.theme-light .changeFont{padding:10px}.theme-light .changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.theme-light .changeFont a:hover{background:#ccc}.theme-light .highlightPopup{padding:10px;text-align:center}.theme-light .highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.theme-light .highlightPopup input.highlightColor{background-color:#ff0}.theme-light .highlightPopup input.highlightTermSubmit{margin-top:5px}.theme-light .contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.theme-light .contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.theme-light .contextMenu a:hover{background-color:#ccc}.theme-light .filterMessages{padding:5px}.theme-light .filterMessages div{padding:2px 0}.theme-light .icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.theme-light .motd{color:#638500;font-family:Verdana,sans-serif;white-space:normal}.theme-light .motd h1,.theme-light .motd h2,.theme-light .motd h3,.theme-light .motd h4,.theme-light .motd h5,.theme-light .motd h6{color:#638500;text-decoration:underline}.theme-light .motd a,.theme-light .motd a:active,.theme-light .motd a:hover,.theme-light .motd a:link,.theme-light .motd a:visited{color:#638500}.theme-light .admin,.theme-light .adminooc,.theme-light .bold,.theme-light .looc,.theme-light .medal,.theme-light .name,.theme-light .ooc,.theme-light .prefix,.theme-light .yell{font-weight:700}.theme-light .emote,.theme-light .italic,.theme-light .italics{font-style:italic}.theme-light .highlight{background:#ff0}.theme-light h1,.theme-light h2,.theme-light h3,.theme-light h4,.theme-light h5,.theme-light h6{color:#00f;font-family:Georgia,Verdana,sans-serif}.theme-light em{font-style:normal;font-weight:700}.theme-light .ooc{color:#002eb8;font-weight:700}.theme-light .looc{color:#69c;font-weight:700}.theme-light .antagooc{color:#b8002e;font-weight:700}.theme-light .adminobserverooc{color:#09c;font-weight:700}.theme-light .adminooc{color:#700038;font-weight:700}.theme-light .adminsay{color:#ff4500;font-weight:700}.theme-light .adminobserver{color:#960;font-weight:700}.theme-light .admin{color:#4473ff;font-weight:700}.theme-light .mentorsay{color:#e236d8;font-weight:700}.theme-light .mentorsay_admin{color:#8a2be2;font-weight:700}.theme-light .name{font-weight:700}.theme-light .deadsay{color:#5c00e6}.theme-light .binarysay{color:#20c20e;background-color:#000;display:block}.theme-light .binarysay a{color:#0f0}.theme-light .binarysay a:active,.theme-light .binarysay a:visited{color:#8f8}.theme-light .radio{color:green}.theme-light .sciradio{color:#939}.theme-light .comradio{color:#948f02}.theme-light .secradio{color:#a30000}.theme-light .medradio{color:#337296}.theme-light .engradio{color:#fb5613}.theme-light .suppradio{color:#a8732b}.theme-light .servradio{color:#6eaa2c}.theme-light .syndradio{color:#6d3f40}.theme-light .centcomradio{color:#686868}.theme-light .aiprivradio{color:#f0f}.theme-light .redteamradio{color:red}.theme-light .blueteamradio{color:#00f}.theme-light .yell{font-weight:700}.theme-light .alert{color:red}.theme-light h1.alert,.theme-light h2.alert{color:#000}.theme-light .emote{font-style:italic}.theme-light .userdanger{font-size:185%}.theme-light .bolddanger,.theme-light .userdanger{color:red;font-weight:700}.theme-light .danger{color:red}.theme-light .tinydanger{color:red;font-size:85%}.theme-light .smalldanger{color:red;font-size:90%}.theme-light .warning{color:red;font-style:italic}.theme-light .alertwarning{color:red;font-weight:700}.theme-light .boldwarning{color:red;font-style:italic;font-weight:700}.theme-light .announce{color:#228b22;font-weight:700}.theme-light .boldannounce{color:red;font-weight:700}.theme-light .greenannounce{color:#0f0;font-weight:700}.theme-light .rose{color:#ff5050}.theme-light .info{color:#00c}.theme-light .notice{color:#009}.theme-light .tinynotice{color:#009;font-style:italic;font-size:85%}.theme-light .smallnotice{color:#009;font-size:90%}.theme-light .smallnoticeital{color:#009;font-style:italic;font-size:90%}.theme-light .boldnotice{color:#009;font-weight:700}.theme-light .hear{color:#009;font-style:italic}.theme-light .adminnotice{color:#00f}.theme-light .adminhelp{color:red;font-weight:700}.theme-light .unconscious{color:#00f;font-weight:700}.theme-light .suicide{color:#ff5050;font-style:italic}.theme-light .green{color:#03ff39}.theme-light .red{color:red}.theme-light .blue{color:#00f}.theme-light .nicegreen{color:#14a833}.theme-light .userlove{color:#ff1493;font-style:italic;font-weight:700;text-shadow:0 0 6px #ff6dbc}.theme-light .love{color:#ff006a;font-style:italic;text-shadow:0 0 6px #ff6d6d}.theme-light .cult{color:#960000}.theme-light .cultbold,.theme-light .cultitalic{color:#960000;font-style:italic}.theme-light .cultbold{font-weight:700}.theme-light .cultboldtalic,.theme-light .cultlarge{color:#960000;font-weight:700;font-size:185%}.theme-light .narsie{color:#960000;font-weight:700;font-size:925%}.theme-light .narsiesmall{color:#960000;font-weight:700;font-size:370%}.theme-light .colossus{color:#7f282a;font-size:310%}.theme-light .hierophant{font-weight:700}.theme-light .hierophant,.theme-light .hierophant_warning{color:#609;font-style:italic}.theme-light .purple{color:#5e2d79}.theme-light .holoparasite{color:#35333a}.theme-light .revennotice{color:#1d2953}.theme-light .revenbignotice,.theme-light .revenboldnotice{color:#1d2953;font-weight:700}.theme-light .revenbignotice{font-size:185%}.theme-light .revenminor{color:#823abb}.theme-light .revenwarning{color:#760fbb;font-style:italic}.theme-light .revendanger{color:#760fbb;font-weight:700;font-size:185%}.theme-light .umbra{color:#5000a0}.theme-light .umbra_emphasis,.theme-light .umbra_large{color:#5000a0;font-weight:700;font-style:italic}.theme-light .umbra_large{font-size:3}.theme-light .deconversion_message{color:#5000a0;font-size:185%;font-style:italic}.theme-light .brass{color:#be8700}.theme-light .heavy_brass{color:#be8700;font-weight:700;font-style:italic}.theme-light .big_brass,.theme-light .large_brass{color:#be8700;font-size:185%}.theme-light .big_brass,.theme-light .ratvar{font-weight:700;font-style:italic}.theme-light .ratvar{color:#be8700;font-size:6}.theme-light .alloy{color:#42474d}.theme-light .heavy_alloy,.theme-light .nezbere_large{color:#42474d;font-weight:700;font-style:italic}.theme-light .nezbere_large{font-size:185%}.theme-light .nezbere{color:#42474d;font-weight:700;font-style:italic}.theme-light .nezbere_small{color:#42474d}.theme-light .sevtug_large{font-size:185%}.theme-light .sevtug,.theme-light .sevtug_large{color:#af0aaf;font-weight:700;font-style:italic}.theme-light .sevtug_small{color:#af0aaf}.theme-light .inathneq_large{font-size:185%}.theme-light .inathneq,.theme-light .inathneq_large{color:#1e8ce1;font-weight:700;font-style:italic}.theme-light .inathneq_small{color:#1e8ce1}.theme-light .nzcrentr_large{font-size:185%}.theme-light .nzcrentr,.theme-light .nzcrentr_large{color:#daaa18;font-weight:700;font-style:italic}.theme-light .nzcrentr_small{color:#daaa18}.theme-light .neovgre_large{font-size:185%}.theme-light .neovgre,.theme-light .neovgre_large{color:#6e001a;font-weight:700;font-style:italic}.theme-light .neovgre_small{color:#6e001a}.theme-light .ghostalert{color:#5c00e6;font-style:italic;font-weight:700}.theme-light .alien{color:#543354}.theme-light .noticealien{color:#00c000}.theme-light .alertalien{color:#00c000;font-weight:700}.theme-light .changeling{color:purple;font-style:italic}.theme-light .alertsyndie{color:red;font-size:185%;font-weight:700}.theme-light .spider{color:#4d004d;font-weight:700;font-size:185%}.theme-light .interface{color:#303}.theme-light .sans{font-family:Comic Sans MS,cursive,sans-serif}.theme-light .papyrus{font-family:Papyrus,cursive,sans-serif}.theme-light .robot{font-family:Courier New,cursive,sans-serif}.theme-light .command_headset{font-weight:700;font-size:160%}.theme-light .small{font-size:60%}.theme-light .big{font-size:185%}.theme-light .reallybig{font-size:245%}.theme-light .extremelybig{font-size:310%}.theme-light .greentext{color:#0f0;font-size:185%}.theme-light .redtext{color:red;font-size:185%}.theme-light .yellowtext{color:#fc0;font-size:185%}.theme-light .clown{color:#ff69bf;font-size:160%;font-family:Comic Sans MS,cursive,sans-serif;font-weight:700}.theme-light .singing{font-family:Trebuchet MS,cursive,sans-serif;font-style:italic}.theme-light .his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.theme-light .hypnophrase{color:#0d0d0d;font-weight:700;animation:hypnocolor 1.5s infinite;animation-direction:alternate}@keyframes hypnocolor{0%{color:#0d0d0d}25%{color:#410194}50%{color:#7f17d8}75%{color:#410194}to{color:#3bb5d3}}.theme-light .velvet{color:#660015;font-weight:700;animation:velvet 5s infinite;animation-direction:alternate}@keyframes velvet{0%{color:#400020}40%{color:red}50%{color:#f88}60%{color:red}to{color:#400020}}.theme-light .phobia{color:#d00;font-weight:700;animation:phobia .75s infinite}@keyframes phobia{0%{color:#0d0d0d}50%{color:#d00}to{color:#0d0d0d}}.theme-light .icon{height:1em;width:auto}.theme-light .memo{color:#638500;text-align:center}.theme-light .memoedit{text-align:center;font-size:125%}.theme-light .abductor{color:purple;font-style:italic}.theme-light .mind_control{color:#a00d6f;font-size:100%;font-weight:700;font-style:italic}.theme-light .slime{color:#00ced1}.theme-light .drone{color:#848482}.theme-light .monkey{color:#975032}.theme-light .swarmer{color:#2c75ff}.theme-light .resonate{color:#298f85}.theme-light .monkeyhive{color:#774704}.theme-light .monkeylead{color:#774704;font-size:80%}.theme-light .connectionClosed,.theme-light .fatalError{background:red;color:#fff;padding:5px}.theme-light .connectionClosed.restored{background:green}.theme-light .internal.boldnshit{color:#00f;font-weight:700}.theme-light .text-normal{font-weight:400;font-style:normal}.theme-light .hidden{display:none;visibility:hidden}.theme-light .ml-1{margin-left:1em}.theme-light .ml-2{margin-left:2em}.theme-light .ml-3{margin-left:3em} \ No newline at end of file +body,html{box-sizing:border-box;height:100%;margin:0;font-size:12px}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:.5rem 0}h1{font-size:18px;font-size:1.5rem}h2{font-size:16px;font-size:1.333rem}h3{font-size:14px;font-size:1.167rem}h4{font-size:12px;font-size:1rem}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#1a1a1a!important}.color-white{color:#fff!important}.color-red{color:#df3e3e!important}.color-orange{color:#f37f33!important}.color-yellow{color:#fbda21!important}.color-olive{color:#cbe41c!important}.color-green{color:#25ca4c!important}.color-teal{color:#00d6cc!important}.color-blue{color:#2e93de!important}.color-violet{color:#7349cf!important}.color-purple{color:#ad45d0!important}.color-pink{color:#e34da1!important}.color-brown{color:#b97447!important}.color-grey{color:#848484!important}.color-good{color:#68c22d!important}.color-average{color:#f29a29!important}.color-bad{color:#df3e3e!important}.color-label{color:#8b9bb0!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.debug-layout,.debug-layout :not(g):not(path){color:hsla(0,0%,100%,.9)!important;background:transparent!important;outline:1px solid hsla(0,0%,100%,.5)!important;box-shadow:none!important;filter:none!important}.debug-layout:hover,.debug-layout :not(g):not(path):hover{outline-color:hsla(0,0%,100%,.8)!important}.outline-dotted{outline-style:dotted!important}.outline-dashed{outline-style:dashed!important}.outline-solid{outline-style:solid!important}.outline-double{outline-style:double!important}.outline-groove{outline-style:groove!important}.outline-ridge{outline-style:ridge!important}.outline-inset{outline-style:inset!important}.outline-outset{outline-style:outset!important}.outline-color-black{outline:.167rem solid #1a1a1a!important}.outline-color-white{outline:.167rem solid #fff!important}.outline-color-red{outline:.167rem solid #df3e3e!important}.outline-color-orange{outline:.167rem solid #f37f33!important}.outline-color-yellow{outline:.167rem solid #fbda21!important}.outline-color-olive{outline:.167rem solid #cbe41c!important}.outline-color-green{outline:.167rem solid #25ca4c!important}.outline-color-teal{outline:.167rem solid #00d6cc!important}.outline-color-blue{outline:.167rem solid #2e93de!important}.outline-color-violet{outline:.167rem solid #7349cf!important}.outline-color-purple{outline:.167rem solid #ad45d0!important}.outline-color-pink{outline:.167rem solid #e34da1!important}.outline-color-brown{outline:.167rem solid #b97447!important}.outline-color-grey{outline:.167rem solid #848484!important}.outline-color-good{outline:.167rem solid #68c22d!important}.outline-color-average{outline:.167rem solid #f29a29!important}.outline-color-bad{outline:.167rem solid #df3e3e!important}.outline-color-label{outline:.167rem solid #8b9bb0!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8b9bb0;border-left:.1666666667em solid #8b9bb0;padding-left:.5em;margin-bottom:.5em}.BlockQuote:last-child{margin-bottom:0}.Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0;margin-bottom:0}.Button .fa,.Button .far,.Button .fas{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.Button--hasContent .fa,.Button--hasContent .far,.Button--hasContent .fas{margin-right:.25em}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--circular{border-radius:50%}.Button--compact{padding:0 .25em;line-height:1.333em}.Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.Button--color--black:hover{transition:color 0ms,background-color 0ms}.Button--color--black:focus{transition:color .1s,background-color .1s}.Button--color--black:focus,.Button--color--black:hover{background-color:#0a0a0a;color:#fff}.Button--color--white{transition:color 50ms,background-color 50ms;background-color:#d9d9d9;color:#000}.Button--color--white:hover{transition:color 0ms,background-color 0ms}.Button--color--white:focus{transition:color .1s,background-color .1s}.Button--color--white:focus,.Button--color--white:hover{background-color:#f3f3f3;color:#000}.Button--color--red{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--red:hover{transition:color 0ms,background-color 0ms}.Button--color--red:focus{transition:color .1s,background-color .1s}.Button--color--red:focus,.Button--color--red:hover{background-color:#d52b2b;color:#fff}.Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#d95e0c;color:#fff}.Button--color--orange:hover{transition:color 0ms,background-color 0ms}.Button--color--orange:focus{transition:color .1s,background-color .1s}.Button--color--orange:focus,.Button--color--orange:hover{background-color:#ed6f1d;color:#fff}.Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.Button--color--yellow:focus{transition:color .1s,background-color .1s}.Button--color--yellow:focus,.Button--color--yellow:hover{background-color:#f3d00e;color:#000}.Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#9aad14;color:#fff}.Button--color--olive:hover{transition:color 0ms,background-color 0ms}.Button--color--olive:focus{transition:color .1s,background-color .1s}.Button--color--olive:focus,.Button--color--olive:hover{background-color:#afc41f;color:#fff}.Button--color--green{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--color--green:hover{transition:color 0ms,background-color 0ms}.Button--color--green:focus{transition:color .1s,background-color .1s}.Button--color--green:focus,.Button--color--green:hover{background-color:#27ab46;color:#fff}.Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#009a93;color:#fff}.Button--color--teal:hover{transition:color 0ms,background-color 0ms}.Button--color--teal:focus{transition:color .1s,background-color .1s}.Button--color--teal:focus,.Button--color--teal:hover{background-color:#0aafa8;color:#fff}.Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#1c71b1;color:#fff}.Button--color--blue:hover{transition:color 0ms,background-color 0ms}.Button--color--blue:focus{transition:color .1s,background-color .1s}.Button--color--blue:focus,.Button--color--blue:hover{background-color:#2883c8;color:#fff}.Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#552dab;color:#fff}.Button--color--violet:hover{transition:color 0ms,background-color 0ms}.Button--color--violet:focus{transition:color .1s,background-color .1s}.Button--color--violet:focus,.Button--color--violet:hover{background-color:#653ac1;color:#fff}.Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#8b2baa;color:#fff}.Button--color--purple:hover{transition:color 0ms,background-color 0ms}.Button--color--purple:focus{transition:color .1s,background-color .1s}.Button--color--purple:focus,.Button--color--purple:hover{background-color:#9e38c1;color:#fff}.Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#cf2082;color:#fff}.Button--color--pink:hover{transition:color 0ms,background-color 0ms}.Button--color--pink:focus{transition:color .1s,background-color .1s}.Button--color--pink:focus,.Button--color--pink:hover{background-color:#dd3794;color:#fff}.Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#8c5836;color:#fff}.Button--color--brown:hover{transition:color 0ms,background-color 0ms}.Button--color--brown:focus{transition:color .1s,background-color .1s}.Button--color--brown:focus,.Button--color--brown:hover{background-color:#a06844;color:#fff}.Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#646464;color:#fff}.Button--color--grey:hover{transition:color 0ms,background-color 0ms}.Button--color--grey:focus{transition:color .1s,background-color .1s}.Button--color--grey:focus,.Button--color--grey:hover{background-color:#757575;color:#fff}.Button--color--good{transition:color 50ms,background-color 50ms;background-color:#4d9121;color:#fff}.Button--color--good:hover{transition:color 0ms,background-color 0ms}.Button--color--good:focus{transition:color .1s,background-color .1s}.Button--color--good:focus,.Button--color--good:hover{background-color:#5da52d;color:#fff}.Button--color--average{transition:color 50ms,background-color 50ms;background-color:#cd7a0d;color:#fff}.Button--color--average:hover{transition:color 0ms,background-color 0ms}.Button--color--average:focus{transition:color .1s,background-color .1s}.Button--color--average:focus,.Button--color--average:hover{background-color:#e68d18;color:#fff}.Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--bad:hover{transition:color 0ms,background-color 0ms}.Button--color--bad:focus{transition:color .1s,background-color .1s}.Button--color--bad:focus,.Button--color--bad:hover{background-color:#d52b2b;color:#fff}.Button--color--label{transition:color 50ms,background-color 50ms;background-color:#657a94;color:#fff}.Button--color--label:hover{transition:color 0ms,background-color 0ms}.Button--color--label:focus{transition:color .1s,background-color .1s}.Button--color--label:focus,.Button--color--label:hover{background-color:#7b8da4;color:#fff}.Button--color--default{transition:color 50ms,background-color 50ms;background-color:#3e6189;color:#fff}.Button--color--default:hover{transition:color 0ms,background-color 0ms}.Button--color--default:focus{transition:color .1s,background-color .1s}.Button--color--default:focus,.Button--color--default:hover{background-color:#4c729d;color:#fff}.Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--caution:hover{transition:color 0ms,background-color 0ms}.Button--color--caution:focus{transition:color .1s,background-color .1s}.Button--color--caution:focus,.Button--color--caution:hover{background-color:#f3d00e;color:#000}.Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--danger:hover{transition:color 0ms,background-color 0ms}.Button--color--danger:focus{transition:color .1s,background-color .1s}.Button--color--danger:focus,.Button--color--danger:hover{background-color:#d52b2b;color:#fff}.Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#202020;color:#fff;background-color:rgba(32,32,32,0);color:hsla(0,0%,100%,.5)}.Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.Button--color--transparent:focus{transition:color .1s,background-color .1s}.Button--color--transparent:focus,.Button--color--transparent:hover{background-color:#2c2c2c;color:#fff}.Button--disabled{background-color:#999!important}.Button--selected{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--selected:hover{transition:color 0ms,background-color 0ms}.Button--selected:focus{transition:color .1s,background-color .1s}.Button--selected:focus,.Button--selected:hover{background-color:#27ab46;color:#fff}.ColorBox{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center}.Dimmer{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.75);z-index:1}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid hsla(0,0%,100%,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid hsla(0,0%,100%,.1)}.Dropdown{position:relative}.Dropdown__control{position:relative;display:inline-block;font-family:Verdana,sans-serif;font-size:1em;width:8.3333333333em;line-height:1.4166666667em;user-select:none}.Dropdown__arrow-button{float:right;padding-left:.5em;border-left:.0833333333em solid #000;border-left:.0833333333em solid rgba(0,0,0,.25)}.Dropdown__menu{overflow-y:auto;overflow-y:scroll}.Dropdown__menu,.Dropdown__menu-noscroll{position:absolute;z-index:5;width:8.3333333333em;max-height:16.6666666667em;border-radius:0 0 .1666666667em .1666666667em;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menu-noscroll{overflow-y:auto}.Dropdown__menuentry{padding:.1666666667em .3333333333em;font-family:Verdana,sans-serif;font-size:1em;line-height:1.4166666667em;transition:background-color .1s}.Dropdown__menuentry:hover{background-color:hsla(0,0%,100%,.2);transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.FatalError{display:block!important;position:absolute;top:0;left:0;right:0;bottom:0;padding:12px;font-size:12px;font-family:Consolas,monospace;color:#fff;background-color:#00d;z-index:1000;overflow:hidden;text-align:center}.FatalError__logo{display:inline-block;text-align:left;font-size:10px;line-height:8px;position:relative;margin-top:12px;top:0;left:0;animation:FatalError__rainbow 2s linear infinite alternate,FatalError__shadow 4s linear infinite alternate,FatalError__tfmX 3s infinite alternate,FatalError__tfmY 4s infinite alternate;white-space:pre-wrap;word-break:break-all}.FatalError__header{margin-top:12px}.FatalError__stack{text-align:left;white-space:pre-wrap;word-break:break-all;margin-top:24px;margin-bottom:24px}.FatalError__footer{margin-bottom:24px}@keyframes FatalError__rainbow{0%{color:#ff0}50%{color:#0ff}to{color:#f0f}}@keyframes FatalError__shadow{0%{left:-2px;text-shadow:4px 0 #f0f}50%{left:0;text-shadow:0 0 #0ff}to{left:2px;text-shadow:-4px 0 #ff0}}@keyframes FatalError__tfmX{0%{left:15px}to{left:-15px}}@keyframes FatalError__tfmY{to{top:-15px}}.Flex{display:-ms-flexbox;display:flex}.Flex--inline{display:inline-flex}.Flex--iefix{display:table!important;width:105%;border-collapse:collapse;border-spacing:0}.Flex--iefix:after{content:"";display:table-cell;width:5%}.Flex--iefix--column{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Flex--iefix--column>.Flex__item--iefix{display:table-row!important}.Flex--iefix--column>.Flex__item--iefix--grow{height:100%!important}.Flex__item--iefix{display:table-cell!important;width:1%!important;min-width:99%}.Flex__item--iefix--grow{width:auto!important}.Flex--spacing--1{margin:0 -.25em}.Flex--spacing--1>.Flex__item{margin:0 .25em}.Flex--spacing--2{margin:0 -.5em}.Flex--spacing--2>.Flex__item{margin:0 .5em}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.Knob:after{content:".";color:transparent;line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(180deg,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,0));border-radius:50%;box-shadow:0 .05em .5em 0 rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:hsla(0,0%,100%,.9)}.Knob__popupValue{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotate(135deg)}.Knob__ringTrack{fill:transparent;stroke:hsla(0,0%,100%,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotate(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.Knob__ringFill{fill:transparent;stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-.25em -.5em 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.Modal{background-color:#202020;max-width:calc(100% - 1rem);padding:1rem}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:transparent;transition:border-color .5s}.ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.ProgressBar__fill--animated{transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--black{border:.0833333333em solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:.0833333333em solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:.0833333333em solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.Section{position:relative;margin-bottom:.5em;background-color:#131313;box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__content{padding:.66em .5em}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--fill .Section__content{flex-grow:1}.Section--iefix.Section--fill{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Section--iefix.Section--fill .Section__content{display:table-row!important;height:100%!important}.Section--scrollable{overflow-x:hidden;overflow-y:scroll}.Section--level--1 .Section__titleText{font-size:1.1666666667em}.Section--level--2 .Section__titleText{font-size:1.0833333333em}.Section--level--3 .Section__titleText{font-size:1em}.Section--level--2,.Section--level--3{background-color:transparent;box-shadow:none;margin-left:-.5em;margin-right:-.5em}.Slider{cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid transparent;border-right:.4166666667em solid transparent;border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__cell--header,.Table__row--header .Table__cell{font-weight:700;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden}.Tabs--vertical{flex-direction:column}.Tabs--horizontal{margin-bottom:.5em}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;color:hsla(0,0%,100%,.5);min-height:2.25em;min-width:4em}.Tab--selected{color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{margin-left:.25em}.Tab__left,.Tab__right{min-width:1.5em;text-align:center}.Tab__right{margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid transparent;border-bottom:.1666666667em solid transparent}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid transparent;border-right:.1666666667em solid transparent}.Tabs--vertical .Tab--selected{border-right:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-right-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-right-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-right-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-right-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-right-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-right-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-right-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-right-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-right-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-right-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-right-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-right-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-right-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-right-color:#848484}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-right-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-right-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-right-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-right-color:#8b9bb0}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:transparent}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.Input--monospace .Input__input{font-family:Consolas,monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:transparent;color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.Tooltip{position:absolute;top:0;left:0;right:0;bottom:0;font-style:normal;font-weight:400}.Tooltip:after{position:absolute;display:block;white-space:nowrap;z-index:2;padding:.5em .75em;transform:translateX(-50%);pointer-events:none;visibility:hidden;opacity:0;text-align:left;content:attr(data-tooltip);transition:all .15s;background-color:#000;box-shadow:.1em .1em 1.25em -.1em rgba(0,0,0,.5);border-radius:.16em}.Tooltip:hover:after{transition:all 70ms;pointer-events:none;visibility:visible;opacity:1}.Tooltip--long:after{width:20.8333333333em;white-space:normal}.Tooltip--top:after{bottom:100%;left:50%;transform:translateX(-50%) translateY(.5em)}.Tooltip--bottom:after,.Tooltip--top:hover:after{transform:translateX(-50%) translateY(-.5em)}.Tooltip--bottom:after{top:100%;left:50%}.Tooltip--bottom:hover:after{transform:translateX(-50%) translateY(.5em)}.Tooltip--bottom-left:after{top:100%;right:50%;transform:translateX(12px) translateY(-.5em)}.Tooltip--bottom-left:hover:after{transform:translateX(12px) translateY(.5em)}.Tooltip--bottom-right:after{top:100%;left:50%;transform:translateX(-12px) translateY(-.5em)}.Tooltip--bottom-right:hover:after{transform:translateX(-12px) translateY(.5em)}.Tooltip--left:after{top:50%;right:100%;transform:translateX(.5em) translateY(-50%)}.Tooltip--left:hover:after,.Tooltip--right:after{transform:translateX(-.5em) translateY(-50%)}.Tooltip--right:after{top:50%;left:100%}.Tooltip--right:hover:after{transform:translateX(.5em) translateY(-50%)}.Chat{color:#abc6ec}.Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.Chat__badge:before{content:"x"}.Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.Chat__scrollButton{position:fixed;right:2em;bottom:1em}.Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#131313}.Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.Chat__highlight{color:#000}.Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.ChatMessage{word-wrap:break-word}.ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.Ping{position:relative;padding:.125em .25em;border:.0833333333em solid hsla(0,0%,54.9%,.5);border-radius:.25em;width:3.75em;text-align:right}.Ping__indicator{content:"";position:absolute;top:.5em;left:.5em;width:.5em;height:.5em;background-color:#888;border-radius:.25em}.Notifications{position:absolute;bottom:1em;left:1em;right:2em}.Notification{color:#fff;background-color:#dc143c;padding:.5em;margin:1em 0}.Notification:first-child{margin-top:0}.Notification:last-child{margin-bottom:0}.Layout,.Layout *{scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.Window{bottom:0;right:0;color:#fff;background-color:#202020;background-image:linear-gradient(180deg,#202020 0,#202020)}.Window,.Window__titleBar{position:fixed;top:0;left:0}.Window__titleBar{z-index:1;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(56,56,56,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}a{color:#397ea5}a.visited,a:visited{color:#7c00e6}a.popt{text-decoration:none}.popup{position:fixed;top:50%;left:50%;background:#ddd}.popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.popup .close:hover,.popup .head{background:#999}.popup .head{color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.popup input[type=text]:active,.popup input[type=text]:focus,.popup input[type=text]:hover{border-color:green}.popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.popup input[type=submit]:active,.popup input[type=submit]:focus,.popup input[type=submit]:hover{background:#aaa;cursor:pointer}.changeFont{padding:10px}.changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.changeFont a:hover{background:#ccc}.highlightPopup{padding:10px;text-align:center}.highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.highlightPopup input.highlightColor{background-color:#ff0}.highlightPopup input.highlightTermSubmit{margin-top:5px}.contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.contextMenu a:hover{background-color:#ccc}.filterMessages{padding:5px}.filterMessages div{padding:2px 0}.icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.motd{color:#a4bad6;font-family:Verdana,sans-serif;white-space:normal}.motd h1,.motd h2,.motd h3,.motd h4,.motd h5,.motd h6{color:#a4bad6;text-decoration:underline}.motd a,.motd a:active,.motd a:hover,.motd a:link,.motd a:visited{color:#a4bad6}.admin,.adminooc,.bold,.looc,.medal,.name,.ooc,.prefix,.yell{font-weight:700}.emote,.italic,.italics{font-style:italic}.highlight{background:#ff0}h1,h2,h3,h4,h5,h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}h1.alert,h2.alert{color:#a4bad6}em{font-style:normal}.ooc,em{font-weight:700}.ooc{color:#cca300}.looc{color:#69c;font-weight:700}.antagooc{color:#b8002e;font-weight:700}.adminobserverooc{color:#09c;font-weight:700}.adminooc{color:#3d5bc3;font-weight:700}.adminsay{color:#ff4500;font-weight:700}.adminobserver{color:#960;font-weight:700}.admin{color:#5975da;font-weight:700}.mentorsay{color:#e236d8;font-weight:700}.mentorsay_admin{color:#8a2be2;font-weight:700}.name{font-weight:700}.deadsay{color:#e2c1ff}.binarysay{color:#1e90ff}.binarysay a{color:#0f0}.binarysay a:active,.binarysay a:visited{color:#8f8}.radio{color:#1ecc43}.sciradio{color:#c68cfa}.comradio{color:#fcdf03}.secradio{color:#dd3535}.medradio{color:#57b8f0}.engradio{color:#f37746}.suppradio{color:#b88646}.servradio{color:#6ca729}.syndradio{color:#8f4a4b}.centcomradio{color:#2681a5}.aiprivradio{color:#d65d95}.redteamradio{color:#f44}.blueteamradio{color:#3434fd}.yell{font-weight:700}.alert{color:#d82020}.emote{font-style:italic}.userdanger{font-weight:700;font-size:185%}.danger,.userdanger,.warning{color:#c51e1e}.warning{font-style:italic}.alertwarning{color:red;font-weight:700}.boldwarning{font-style:italic}.announce,.boldannounce,.boldwarning{color:#c51e1e;font-weight:700}.greenannounce{color:#059223;font-weight:700}.rose{color:#ff5050}.info{color:#9ab0ff}.notice{color:#6685f5}.tinynotice{font-size:85%}.smallnotice,.tinynotice{color:#6685f5;font-style:italic}.smallnotice{font-size:90%}.boldnotice{color:#6685f5;font-weight:700}.hear{font-style:italic}.adminnotice,.hear{color:#6685f5}.adminhelp{color:red;font-weight:700}.unconscious{color:#a4bad6;font-weight:700}.suicide{color:#ff5050;font-style:italic}.green{color:#059223}.red{color:red}.blue{color:#215cff}.nicegreen{color:#059223}.userlove{color:#ff42a6;font-weight:700;text-shadow:0 0 6px #82365e}.love,.userlove{font-style:italic}.love{color:#ff4591;text-shadow:0 0 6px #994449}.cult{color:#aa1c1c}.cultbold,.cultitalic{color:#aa1c1c;font-style:italic}.cultbold{font-weight:700}.cultboldtalic,.cultlarge{color:#aa1c1c;font-weight:700;font-size:185%}.narsie{font-size:925%}.narsie,.narsiesmall{color:#aa1c1c;font-weight:700}.narsiesmall{font-size:370%}.colossus{color:#7f282a;font-size:310%}.hierophant{color:#b441ee;font-weight:700;font-style:italic}.hierophant_warning{color:#c56bf1;font-style:italic}.purple{color:#9956d3}.holoparasite{color:#88809c}.revennotice{color:#c099e2}.revenbignotice,.revenboldnotice{color:#c099e2;font-weight:700}.revenbignotice{font-size:185%}.revenminor{color:#823abb}.revenwarning{color:#760fbb;font-style:italic}.revendanger{color:#760fbb;font-weight:700;font-size:185%}.umbra{color:#5000a0}.umbra_emphasis,.umbra_large{color:#5000a0;font-weight:700;font-style:italic}.umbra_large{font-size:3}.deconversion_message{color:#5000a0;font-size:185%;font-style:italic}.brass,.heavy_brass{color:#be8700}.heavy_brass{font-weight:700;font-style:italic}.large_brass{color:#be8700;font-size:185%}.big_brass{font-size:185%}.big_brass,.ratvar{color:#be8700;font-weight:700;font-style:italic}.ratvar{font-size:6}.alloy{color:#42474d}.heavy_alloy,.nezbere_large{color:#42474d;font-weight:700;font-style:italic}.nezbere_large{font-size:185%}.nezbere{font-weight:700;font-style:italic}.nezbere,.nezbere_small{color:#42474d}.sevtug_large{font-size:185%}.sevtug,.sevtug_large{color:#af0aaf;font-weight:700;font-style:italic}.sevtug_small{color:#af0aaf}.inathneq_large{font-size:185%}.inathneq,.inathneq_large{color:#1e8ce1;font-weight:700;font-style:italic}.inathneq_small{color:#1e8ce1}.nzcrentr_large{font-size:185%}.nzcrentr,.nzcrentr_large{color:#daaa18;font-weight:700;font-style:italic}.nzcrentr_small{color:#daaa18}.neovgre_large{font-size:185%}.neovgre,.neovgre_large{color:#6e001a;font-weight:700;font-style:italic}.neovgre_small{color:#6e001a}.ghostalert{color:#60f;font-style:italic;font-weight:700}.alien{color:#855d85}.alertalien,.noticealien{color:#059223}.alertalien{font-weight:700}.changeling{color:#059223;font-style:italic}.alertsyndie{color:red}.alertsyndie,.spider{font-size:185%;font-weight:700}.spider{color:#80f}.interface{color:#750e75}.sans{font-family:Comic Sans MS,cursive,sans-serif}.papyrus{font-family:Papyrus,cursive,sans-serif}.robot{font-family:Courier New,cursive,sans-serif}.command_headset{font-weight:700;font-size:160%}.small{font-size:60%}.big{font-size:185%}.reallybig{font-size:245%}.extremelybig{font-size:310%}.greentext{color:#059223;font-size:185%}.redtext{color:#c51e1e;font-size:185%}.yellowtext{color:#fc0;font-size:185%}.clown{color:#ff70c1;font-size:160%;font-family:Comic Sans MS,cursive,sans-serif;font-weight:700}.singing{font-family:Trebuchet MS,cursive,sans-serif;font-style:italic}.his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.spooky{color:#ff9100}.hypnophrase{color:#202020;font-weight:700;animation:hypnocolor 1.5s infinite;animation-direction:alternate}.velvet{color:#660015;font-weight:700;animation:velvet 5s infinite;animation-direction:alternate}.phobia{color:#d00;font-weight:700;animation:phobia .75s infinite}.icon{height:1em;width:auto}.memo{color:#638500}.memo,.memoedit{text-align:center}.memoedit{font-size:125%}.abductor{color:#c204c2;font-style:italic}.mind_control{color:#df3da9;font-size:100%;font-weight:700;font-style:italic}.slime{color:#00ced1}.drone{color:#848482}.monkey{color:#975032}.swarmer{color:#2c75ff}.resonate{color:#298f85}.monkeyhive{color:#a56408}.monkeylead{color:#af6805;font-size:80%}.connectionClosed,.fatalError{background:red;color:#fff;padding:5px}.connectionClosed.restored{background:green}.internal.boldnshit{color:#3d5bc3;font-weight:700}.text-normal{font-weight:400;font-style:normal}.hidden{display:none;visibility:hidden}.ml-1{margin-left:1em}.ml-2{margin-left:2em}.ml-3{margin-left:3em}.theme-light .color-black{color:#000!important}.theme-light .color-white{color:#e6e6e6!important}.theme-light .color-red{color:#c82121!important}.theme-light .color-orange{color:#e6630d!important}.theme-light .color-yellow{color:#e5c304!important}.theme-light .color-olive{color:#a3b816!important}.theme-light .color-green{color:#1d9f3b!important}.theme-light .color-teal{color:#00a39c!important}.theme-light .color-blue{color:#1e78bb!important}.theme-light .color-violet{color:#5a30b5!important}.theme-light .color-purple{color:#932eb4!important}.theme-light .color-pink{color:#db228a!important}.theme-light .color-brown{color:#955d39!important}.theme-light .color-grey{color:#e6e6e6!important}.theme-light .color-good{color:#529923!important}.theme-light .color-average{color:#da810e!important}.theme-light .color-bad{color:#c82121!important}.theme-light .color-label{color:#353535!important}.theme-light .color-bg-black{background-color:#000!important}.theme-light .color-bg-white{background-color:#bfbfbf!important}.theme-light .color-bg-red{background-color:#a61c1c!important}.theme-light .color-bg-orange{background-color:#c0530b!important}.theme-light .color-bg-yellow{background-color:#bfa303!important}.theme-light .color-bg-olive{background-color:#889912!important}.theme-light .color-bg-green{background-color:#188532!important}.theme-light .color-bg-teal{background-color:#008882!important}.theme-light .color-bg-blue{background-color:#19649c!important}.theme-light .color-bg-violet{background-color:#4b2897!important}.theme-light .color-bg-purple{background-color:#7a2696!important}.theme-light .color-bg-pink{background-color:#b61d73!important}.theme-light .color-bg-brown{background-color:#7c4d2f!important}.theme-light .color-bg-grey{background-color:#bfbfbf!important}.theme-light .color-bg-good{background-color:#44801d!important}.theme-light .color-bg-average{background-color:#b56b0b!important}.theme-light .color-bg-bad{background-color:#a61c1c!important}.theme-light .color-bg-label{background-color:#2c2c2c!important}.theme-light .Tabs{display:flex;align-items:stretch;overflow:hidden}.theme-light .Tabs--vertical{flex-direction:column}.theme-light .Tabs--horizontal{margin-bottom:.5em}.theme-light .Tabs--horizontal:last-child{margin-bottom:0}.theme-light .Tabs__Tab{flex-grow:0}.theme-light .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-light .Tab{display:flex;align-items:center;justify-content:space-between;color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em}.theme-light .Tab--selected{color:#404040}.theme-light .Tab__text{flex-grow:1;margin:0 .5em}.theme-light .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-light .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-light .Tabs--horizontal .Tab{border-top:.1666666667em solid transparent;border-bottom:.1666666667em solid transparent}.theme-light .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-light .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid transparent;border-right:.1666666667em solid transparent}.theme-light .Tabs--vertical .Tab--selected{border-right:.1666666667em solid #000}.theme-light .Tab--selected.Tab--color--black{color:#404040}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-light .Tabs--vertical .Tab--selected.Tab--color--black{border-right-color:#000}.theme-light .Tab--selected.Tab--color--white{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--white{border-right-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--red{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--red{border-right-color:#c82121}.theme-light .Tab--selected.Tab--color--orange{color:#f48942}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--orange{border-right-color:#e6630d}.theme-light .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-light .Tabs--vertical .Tab--selected.Tab--color--yellow{border-right-color:#e5c304}.theme-light .Tab--selected.Tab--color--olive{color:#d0e732}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-light .Tabs--vertical .Tab--selected.Tab--color--olive{border-right-color:#a3b816}.theme-light .Tab--selected.Tab--color--green{color:#33da5a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-light .Tabs--vertical .Tab--selected.Tab--color--green{border-right-color:#1d9f3b}.theme-light .Tab--selected.Tab--color--teal{color:#00faef}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-light .Tabs--vertical .Tab--selected.Tab--color--teal{border-right-color:#00a39c}.theme-light .Tab--selected.Tab--color--blue{color:#419ce1}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-light .Tabs--vertical .Tab--selected.Tab--color--blue{border-right-color:#1e78bb}.theme-light .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-light .Tabs--vertical .Tab--selected.Tab--color--violet{border-right-color:#5a30b5}.theme-light .Tab--selected.Tab--color--purple{color:#b455d4}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-light .Tabs--vertical .Tab--selected.Tab--color--purple{border-right-color:#932eb4}.theme-light .Tab--selected.Tab--color--pink{color:#e558a7}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-light .Tabs--vertical .Tab--selected.Tab--color--pink{border-right-color:#db228a}.theme-light .Tab--selected.Tab--color--brown{color:#c0825a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-light .Tabs--vertical .Tab--selected.Tab--color--brown{border-right-color:#955d39}.theme-light .Tab--selected.Tab--color--grey{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--grey{border-right-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--good{color:#77d23b}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-light .Tabs--vertical .Tab--selected.Tab--color--good{border-right-color:#529923}.theme-light .Tab--selected.Tab--color--average{color:#f3a23a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-light .Tabs--vertical .Tab--selected.Tab--color--average{border-right-color:#da810e}.theme-light .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--bad{border-right-color:#c82121}.theme-light .Tab--selected.Tab--color--label{color:#686868}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-light .Tabs--vertical .Tab--selected.Tab--color--label{border-right-color:#353535}.theme-light .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-light .Section:last-child{margin-bottom:0}.theme-light .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-light .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-light .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-light .Section__content{padding:.66em .5em}.theme-light .Section--fill{display:flex;flex-direction:column;height:100%}.theme-light .Section--fill .Section__content{flex-grow:1}.theme-light .Section--iefix.Section--fill{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-light .Section--iefix.Section--fill .Section__content{display:table-row!important;height:100%!important}.theme-light .Section--scrollable{overflow-x:hidden;overflow-y:scroll}.theme-light .Section--level--1 .Section__titleText{font-size:1.1666666667em}.theme-light .Section--level--2 .Section__titleText{font-size:1.0833333333em}.theme-light .Section--level--3 .Section__titleText{font-size:1em}.theme-light .Section--level--2,.theme-light .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-.5em;margin-right:-.5em}.theme-light .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-light .Button:last-child{margin-right:0;margin-bottom:0}.theme-light .Button .fa,.theme-light .Button .far,.theme-light .Button .fas{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-light .Button--hasContent .fa,.theme-light .Button--hasContent .far,.theme-light .Button--hasContent .fas{margin-right:.25em}.theme-light .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-light .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-light .Button--circular{border-radius:50%}.theme-light .Button--compact{padding:0 .25em;line-height:1.333em}.theme-light .Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.theme-light .Button--color--black:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--black:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--black:focus,.theme-light .Button--color--black:hover{background-color:#0a0a0a;color:#fff}.theme-light .Button--color--white{transition:color 50ms,background-color 50ms;background-color:#bfbfbf;color:#000}.theme-light .Button--color--white:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--white:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--white:focus,.theme-light .Button--color--white:hover{background-color:#d7d7d7;color:#000}.theme-light .Button--color--red{transition:color 50ms,background-color 50ms;background-color:#a61c1c;color:#fff}.theme-light .Button--color--red:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--red:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--red:focus,.theme-light .Button--color--red:hover{background-color:#bc2828;color:#fff}.theme-light .Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#c0530b;color:#fff}.theme-light .Button--color--orange:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--orange:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--orange:focus,.theme-light .Button--color--orange:hover{background-color:#d76316;color:#fff}.theme-light .Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#bfa303;color:#fff}.theme-light .Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--yellow:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--yellow:focus,.theme-light .Button--color--yellow:hover{background-color:#d7b90d;color:#fff}.theme-light .Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#889912;color:#fff}.theme-light .Button--color--olive:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--olive:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--olive:focus,.theme-light .Button--color--olive:hover{background-color:#9cae1d;color:#fff}.theme-light .Button--color--green{transition:color 50ms,background-color 50ms;background-color:#188532;color:#fff}.theme-light .Button--color--green:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--green:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--green:focus,.theme-light .Button--color--green:hover{background-color:#24993f;color:#fff}.theme-light .Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#008882;color:#fff}.theme-light .Button--color--teal:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--teal:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--teal:focus,.theme-light .Button--color--teal:hover{background-color:#0a9c95;color:#fff}.theme-light .Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#19649c;color:#fff}.theme-light .Button--color--blue:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--blue:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--blue:focus,.theme-light .Button--color--blue:hover{background-color:#2475b1;color:#fff}.theme-light .Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#4b2897;color:#fff}.theme-light .Button--color--violet:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--violet:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--violet:focus,.theme-light .Button--color--violet:hover{background-color:#5a35ac;color:#fff}.theme-light .Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#7a2696;color:#fff}.theme-light .Button--color--purple:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--purple:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--purple:focus,.theme-light .Button--color--purple:hover{background-color:#8d33ab;color:#fff}.theme-light .Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#b61d73;color:#fff}.theme-light .Button--color--pink:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--pink:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--pink:focus,.theme-light .Button--color--pink:hover{background-color:#ce2985;color:#fff}.theme-light .Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#7c4d2f;color:#fff}.theme-light .Button--color--brown:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--brown:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--brown:focus,.theme-light .Button--color--brown:hover{background-color:#8f5d3c;color:#fff}.theme-light .Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#bfbfbf;color:#000}.theme-light .Button--color--grey:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--grey:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--grey:focus,.theme-light .Button--color--grey:hover{background-color:#d7d7d7;color:#000}.theme-light .Button--color--good{transition:color 50ms,background-color 50ms;background-color:#44801d;color:#fff}.theme-light .Button--color--good:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--good:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--good:focus,.theme-light .Button--color--good:hover{background-color:#539329;color:#fff}.theme-light .Button--color--average{transition:color 50ms,background-color 50ms;background-color:#b56b0b;color:#fff}.theme-light .Button--color--average:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--average:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--average:focus,.theme-light .Button--color--average:hover{background-color:#cd7d16;color:#fff}.theme-light .Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#a61c1c;color:#fff}.theme-light .Button--color--bad:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--bad:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--bad:focus,.theme-light .Button--color--bad:hover{background-color:#bc2828;color:#fff}.theme-light .Button--color--label{transition:color 50ms,background-color 50ms;background-color:#2c2c2c;color:#fff}.theme-light .Button--color--label:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--label:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--label:focus,.theme-light .Button--color--label:hover{background-color:#393939;color:#fff}.theme-light .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#bbb;color:#000}.theme-light .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--default:focus,.theme-light .Button--color--default:hover{background-color:#d3d3d3;color:#000}.theme-light .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-light .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--caution:focus,.theme-light .Button--color--caution:hover{background-color:#d67313;color:#fff}.theme-light .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-light .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--danger:focus,.theme-light .Button--color--danger:hover{background-color:#afb30a;color:#fff}.theme-light .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#eee;color:#000;background-color:hsla(0,0%,93.3%,0);color:rgba(0,0,0,.5)}.theme-light .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--transparent:focus,.theme-light .Button--color--transparent:hover{background-color:#fcfcfc;color:#000}.theme-light .Button--disabled{background-color:#363636!important}.theme-light .Button--selected{transition:color 50ms,background-color 50ms;background-color:#0668b8;color:#fff}.theme-light .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--selected:focus{transition:color .1s,background-color .1s}.theme-light .Button--selected:focus,.theme-light .Button--selected:hover{background-color:#107ad0;color:#fff}.theme-light .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#fff;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-light .NumberInput--fluid{display:block}.theme-light .NumberInput__content{margin-left:.5em}.theme-light .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-light .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-light .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;text-align:right}.theme-light .Input,.theme-light .NumberInput__input{line-height:1.4166666667em;background-color:#fff;color:#000}.theme-light .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;padding:0 .3333333333em;margin-right:.1666666667em;overflow:visible}.theme-light .Input--fluid{display:block;width:auto}.theme-light .Input__baseline{display:inline-block;color:transparent}.theme-light .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:transparent;color:#000;color:inherit}.theme-light .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-light .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-light .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#fff;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-light .TextArea--fluid{display:block;width:auto;height:auto}.theme-light .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:transparent;color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-light .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-light .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-light .Knob:after{content:".";color:transparent;line-height:2.5em}.theme-light .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(180deg,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,0));border-radius:50%;box-shadow:0 .05em .5em 0 rgba(0,0,0,.5)}.theme-light .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-light .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:hsla(0,0%,100%,.9)}.theme-light .Knob__popupValue{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.theme-light .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-light .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-light .Knob__ringTrack{fill:transparent;stroke:hsla(0,0%,100%,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-light .Knob__ringFillPivot{transform:rotate(135deg)}.theme-light .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-light .Knob__ringFill{fill:transparent;stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-light .Knob--color--black .Knob__ringFill{stroke:#000}.theme-light .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-light .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-light .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-light .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-light .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-light .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-light .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-light .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-light .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-light .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-light .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-light .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-light .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-light .Slider{cursor:e-resize}.theme-light .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-light .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-light .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid transparent;border-right:.4166666667em solid transparent;border-bottom:.4166666667em solid #000}.theme-light .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.theme-light .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:transparent;transition:border-color .5s}.theme-light .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-light .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-light .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-light .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-light .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-light .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-light .ProgressBar--color--white{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--red{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--orange{border:.0833333333em solid #c0530b!important}.theme-light .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-light .ProgressBar--color--yellow{border:.0833333333em solid #bfa303!important}.theme-light .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-light .ProgressBar--color--olive{border:.0833333333em solid #889912!important}.theme-light .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-light .ProgressBar--color--green{border:.0833333333em solid #188532!important}.theme-light .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-light .ProgressBar--color--teal{border:.0833333333em solid #008882!important}.theme-light .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-light .ProgressBar--color--blue{border:.0833333333em solid #19649c!important}.theme-light .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-light .ProgressBar--color--violet{border:.0833333333em solid #4b2897!important}.theme-light .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-light .ProgressBar--color--purple{border:.0833333333em solid #7a2696!important}.theme-light .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-light .ProgressBar--color--pink{border:.0833333333em solid #b61d73!important}.theme-light .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-light .ProgressBar--color--brown{border:.0833333333em solid #7c4d2f!important}.theme-light .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-light .ProgressBar--color--grey{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--good{border:.0833333333em solid #44801d!important}.theme-light .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-light .ProgressBar--color--average{border:.0833333333em solid #b56b0b!important}.theme-light .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-light .ProgressBar--color--bad{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--label{border:.0833333333em solid #2c2c2c!important}.theme-light .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-light .Chat{color:#000}.theme-light .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-light .Chat__badge:before{content:"x"}.theme-light .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-light .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-light .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-light .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-light .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-light .Chat__highlight{color:#000}.theme-light .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-light .ChatMessage{word-wrap:break-word}.theme-light .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-light .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-light .Layout,.theme-light .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-light .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-light .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-light .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(180deg,#eee 0,#eee)}.theme-light .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-light .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-light .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-light .Window__contentPadding:after{height:0}.theme-light .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-light .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:hsla(0,0%,98.8%,.25);pointer-events:none}.theme-light .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-light .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-light .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-light .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-light .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s,background-color .25s}.theme-light .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-light .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-light .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-light .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-light .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-light .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-light body,.theme-light html{padding:0;margin:0;height:100%;color:#000}.theme-light body{background:#e0e0e0;font-family:Verdana,sans-serif;font-size:13px;line-height:1.2;overflow-x:hidden;overflow-y:scroll;word-wrap:break-word}.theme-light img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}.theme-light img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.theme-light a{color:#00f}.theme-light a.visited,.theme-light a:visited{color:#f0f}.theme-light a.popt{text-decoration:none}.theme-light .popup{position:fixed;top:50%;left:50%;background:#ddd}.theme-light .popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.theme-light .popup .close:hover{background:#999}.theme-light .popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.theme-light .popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.theme-light .popup input[type=text]:active,.theme-light .popup input[type=text]:focus,.theme-light .popup input[type=text]:hover{border-color:green}.theme-light .popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.theme-light .popup input[type=submit]:active,.theme-light .popup input[type=submit]:focus,.theme-light .popup input[type=submit]:hover{background:#aaa;cursor:pointer}.theme-light .changeFont{padding:10px}.theme-light .changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.theme-light .changeFont a:hover{background:#ccc}.theme-light .highlightPopup{padding:10px;text-align:center}.theme-light .highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.theme-light .highlightPopup input.highlightColor{background-color:#ff0}.theme-light .highlightPopup input.highlightTermSubmit{margin-top:5px}.theme-light .contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.theme-light .contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.theme-light .contextMenu a:hover{background-color:#ccc}.theme-light .filterMessages{padding:5px}.theme-light .filterMessages div{padding:2px 0}.theme-light .icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.theme-light .motd{color:#638500;font-family:Verdana,sans-serif;white-space:normal}.theme-light .motd h1,.theme-light .motd h2,.theme-light .motd h3,.theme-light .motd h4,.theme-light .motd h5,.theme-light .motd h6{color:#638500;text-decoration:underline}.theme-light .motd a,.theme-light .motd a:active,.theme-light .motd a:hover,.theme-light .motd a:link,.theme-light .motd a:visited{color:#638500}.theme-light .admin,.theme-light .adminooc,.theme-light .bold,.theme-light .looc,.theme-light .medal,.theme-light .name,.theme-light .ooc,.theme-light .prefix,.theme-light .yell{font-weight:700}.theme-light .emote,.theme-light .italic,.theme-light .italics{font-style:italic}.theme-light .highlight{background:#ff0}.theme-light h1,.theme-light h2,.theme-light h3,.theme-light h4,.theme-light h5,.theme-light h6{color:#00f;font-family:Georgia,Verdana,sans-serif}.theme-light em{font-style:normal;font-weight:700}.theme-light .ooc{color:#002eb8;font-weight:700}.theme-light .looc{color:#69c;font-weight:700}.theme-light .antagooc{color:#b8002e;font-weight:700}.theme-light .adminobserverooc{color:#09c;font-weight:700}.theme-light .adminooc{color:#700038;font-weight:700}.theme-light .adminsay{color:#ff4500;font-weight:700}.theme-light .adminobserver{color:#960;font-weight:700}.theme-light .admin{color:#4473ff;font-weight:700}.theme-light .mentorsay{color:#e236d8;font-weight:700}.theme-light .mentorsay_admin{color:#8a2be2;font-weight:700}.theme-light .name{font-weight:700}.theme-light .deadsay{color:#5c00e6}.theme-light .binarysay{color:#20c20e;background-color:#000;display:block}.theme-light .binarysay a{color:#0f0}.theme-light .binarysay a:active,.theme-light .binarysay a:visited{color:#8f8}.theme-light .radio{color:green}.theme-light .sciradio{color:#939}.theme-light .comradio{color:#948f02}.theme-light .secradio{color:#a30000}.theme-light .medradio{color:#337296}.theme-light .engradio{color:#fb5613}.theme-light .suppradio{color:#a8732b}.theme-light .servradio{color:#6eaa2c}.theme-light .syndradio{color:#6d3f40}.theme-light .centcomradio{color:#686868}.theme-light .aiprivradio{color:#f0f}.theme-light .redteamradio{color:red}.theme-light .blueteamradio{color:#00f}.theme-light .yell{font-weight:700}.theme-light .alert{color:red}.theme-light h1.alert,.theme-light h2.alert{color:#000}.theme-light .emote{font-style:italic}.theme-light .userdanger{font-size:185%}.theme-light .bolddanger,.theme-light .userdanger{color:red;font-weight:700}.theme-light .danger{color:red}.theme-light .tinydanger{color:red;font-size:85%}.theme-light .smalldanger{color:red;font-size:90%}.theme-light .warning{color:red;font-style:italic}.theme-light .alertwarning{color:red;font-weight:700}.theme-light .boldwarning{color:red;font-style:italic;font-weight:700}.theme-light .announce{color:#228b22;font-weight:700}.theme-light .boldannounce{color:red;font-weight:700}.theme-light .greenannounce{color:#0f0;font-weight:700}.theme-light .rose{color:#ff5050}.theme-light .info{color:#00c}.theme-light .notice{color:#009}.theme-light .tinynotice{color:#009;font-style:italic;font-size:85%}.theme-light .smallnotice{color:#009;font-size:90%}.theme-light .smallnoticeital{color:#009;font-style:italic;font-size:90%}.theme-light .boldnotice{color:#009;font-weight:700}.theme-light .hear{color:#009;font-style:italic}.theme-light .adminnotice{color:#00f}.theme-light .adminhelp{color:red;font-weight:700}.theme-light .unconscious{color:#00f;font-weight:700}.theme-light .suicide{color:#ff5050;font-style:italic}.theme-light .green{color:#03ff39}.theme-light .red{color:red}.theme-light .blue{color:#00f}.theme-light .nicegreen{color:#14a833}.theme-light .userlove{color:#ff1493;font-style:italic;font-weight:700;text-shadow:0 0 6px #ff6dbc}.theme-light .love{color:#ff006a;font-style:italic;text-shadow:0 0 6px #ff6d6d}.theme-light .cult{color:#960000}.theme-light .cultbold,.theme-light .cultitalic{color:#960000;font-style:italic}.theme-light .cultbold{font-weight:700}.theme-light .cultboldtalic,.theme-light .cultlarge{color:#960000;font-weight:700;font-size:185%}.theme-light .narsie{color:#960000;font-weight:700;font-size:925%}.theme-light .narsiesmall{color:#960000;font-weight:700;font-size:370%}.theme-light .colossus{color:#7f282a;font-size:310%}.theme-light .hierophant{font-weight:700}.theme-light .hierophant,.theme-light .hierophant_warning{color:#609;font-style:italic}.theme-light .purple{color:#5e2d79}.theme-light .holoparasite{color:#35333a}.theme-light .revennotice{color:#1d2953}.theme-light .revenbignotice,.theme-light .revenboldnotice{color:#1d2953;font-weight:700}.theme-light .revenbignotice{font-size:185%}.theme-light .revenminor{color:#823abb}.theme-light .revenwarning{color:#760fbb;font-style:italic}.theme-light .revendanger{color:#760fbb;font-weight:700;font-size:185%}.theme-light .umbra{color:#5000a0}.theme-light .umbra_emphasis,.theme-light .umbra_large{color:#5000a0;font-weight:700;font-style:italic}.theme-light .umbra_large{font-size:3}.theme-light .deconversion_message{color:#5000a0;font-size:185%;font-style:italic}.theme-light .brass{color:#be8700}.theme-light .heavy_brass{color:#be8700;font-weight:700;font-style:italic}.theme-light .big_brass,.theme-light .large_brass{color:#be8700;font-size:185%}.theme-light .big_brass,.theme-light .ratvar{font-weight:700;font-style:italic}.theme-light .ratvar{color:#be8700;font-size:6}.theme-light .alloy{color:#42474d}.theme-light .heavy_alloy,.theme-light .nezbere_large{color:#42474d;font-weight:700;font-style:italic}.theme-light .nezbere_large{font-size:185%}.theme-light .nezbere{color:#42474d;font-weight:700;font-style:italic}.theme-light .nezbere_small{color:#42474d}.theme-light .sevtug_large{font-size:185%}.theme-light .sevtug,.theme-light .sevtug_large{color:#af0aaf;font-weight:700;font-style:italic}.theme-light .sevtug_small{color:#af0aaf}.theme-light .inathneq_large{font-size:185%}.theme-light .inathneq,.theme-light .inathneq_large{color:#1e8ce1;font-weight:700;font-style:italic}.theme-light .inathneq_small{color:#1e8ce1}.theme-light .nzcrentr_large{font-size:185%}.theme-light .nzcrentr,.theme-light .nzcrentr_large{color:#daaa18;font-weight:700;font-style:italic}.theme-light .nzcrentr_small{color:#daaa18}.theme-light .neovgre_large{font-size:185%}.theme-light .neovgre,.theme-light .neovgre_large{color:#6e001a;font-weight:700;font-style:italic}.theme-light .neovgre_small{color:#6e001a}.theme-light .ghostalert{color:#5c00e6;font-style:italic;font-weight:700}.theme-light .alien{color:#543354}.theme-light .noticealien{color:#00c000}.theme-light .alertalien{color:#00c000;font-weight:700}.theme-light .changeling{color:purple;font-style:italic}.theme-light .alertsyndie{color:red;font-size:185%;font-weight:700}.theme-light .spider{color:#4d004d;font-weight:700;font-size:185%}.theme-light .interface{color:#303}.theme-light .sans{font-family:Comic Sans MS,cursive,sans-serif}.theme-light .papyrus{font-family:Papyrus,cursive,sans-serif}.theme-light .robot{font-family:Courier New,cursive,sans-serif}.theme-light .command_headset{font-weight:700;font-size:160%}.theme-light .small{font-size:60%}.theme-light .big{font-size:185%}.theme-light .reallybig{font-size:245%}.theme-light .extremelybig{font-size:310%}.theme-light .greentext{color:#0f0;font-size:185%}.theme-light .redtext{color:red;font-size:185%}.theme-light .yellowtext{color:#fc0;font-size:185%}.theme-light .clown{color:#ff69bf;font-size:160%;font-family:Comic Sans MS,cursive,sans-serif;font-weight:700}.theme-light .singing{font-family:Trebuchet MS,cursive,sans-serif;font-style:italic}.theme-light .his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.theme-light .spooky{color:#ff9100}.theme-light .hypnophrase{color:#0d0d0d;font-weight:700;animation:hypnocolor 1.5s infinite;animation-direction:alternate}@keyframes hypnocolor{0%{color:#0d0d0d}25%{color:#410194}50%{color:#7f17d8}75%{color:#410194}to{color:#3bb5d3}}.theme-light .velvet{color:#660015;font-weight:700;animation:velvet 5s infinite;animation-direction:alternate}@keyframes velvet{0%{color:#400020}40%{color:red}50%{color:#f88}60%{color:red}to{color:#400020}}.theme-light .phobia{color:#d00;font-weight:700;animation:phobia .75s infinite}@keyframes phobia{0%{color:#0d0d0d}50%{color:#d00}to{color:#0d0d0d}}.theme-light .icon{height:1em;width:auto}.theme-light .memo{color:#638500;text-align:center}.theme-light .memoedit{text-align:center;font-size:125%}.theme-light .abductor{color:purple;font-style:italic}.theme-light .mind_control{color:#a00d6f;font-size:100%;font-weight:700;font-style:italic}.theme-light .slime{color:#00ced1}.theme-light .drone{color:#848482}.theme-light .monkey{color:#975032}.theme-light .swarmer{color:#2c75ff}.theme-light .resonate{color:#298f85}.theme-light .monkeyhive{color:#774704}.theme-light .monkeylead{color:#774704;font-size:80%}.theme-light .connectionClosed,.theme-light .fatalError{background:red;color:#fff;padding:5px}.theme-light .connectionClosed.restored{background:green}.theme-light .internal.boldnshit{color:#00f;font-weight:700}.theme-light .text-normal{font-weight:400;font-style:normal}.theme-light .hidden{display:none;visibility:hidden}.theme-light .ml-1{margin-left:1em}.theme-light .ml-2{margin-left:2em}.theme-light .ml-3{margin-left:3em} \ No newline at end of file diff --git a/tgui/public/tgui-panel.bundle.js b/tgui/public/tgui-panel.bundle.js index 88d64b8d47..b958f1b2b5 100644 --- a/tgui/public/tgui-panel.bundle.js +++ b/tgui/public/tgui-panel.bundle.js @@ -1 +1 @@ -!function(e){function t(t){for(var o,a,c=t[0],s=t[1],l=t[2],d=0,g=[];d<c.length;d++)a=c[d],Object.prototype.hasOwnProperty.call(r,a)&&r[a]&&g.push(r[a][0]),r[a]=0;for(o in s)Object.prototype.hasOwnProperty.call(s,o)&&(e[o]=s[o]);for(u&&u(t);g.length;)g.shift()();return i.push.apply(i,l||[]),n()}function n(){for(var e,t=0;t<i.length;t++){for(var n=i[t],o=!0,c=1;c<n.length;c++){var s=n[c];0!==r[s]&&(o=!1)}o&&(i.splice(t--,1),e=a(a.s=n[0]))}return e}var o={},r={2:0},i=[];function a(t){if(o[t])return o[t].exports;var n=o[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=e,a.c=o,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)a.d(n,o,function(t){return e[t]}.bind(null,o));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="";var c=window.webpackJsonp=window.webpackJsonp||[],s=c.push.bind(c);c.push=t,c=c.slice();for(var l=0;l<c.length;l++)t(c[l]);var u=s;i.push([668,0]),n()}({105:function(e,t,n){"use strict";t.__esModule=!0,t.selectActiveTab=t.selectSettings=void 0;t.selectSettings=function(e){return e.settings};t.selectActiveTab=function(e){return e.settings.view.activeTab}},106:function(e,t,n){"use strict";t.__esModule=!0,t.isSameMessage=t.serializeMessage=t.createMessage=t.createMainPage=t.createPage=t.canPageAcceptType=void 0;var o=n(681),r=n(107);function i(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return a(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}t.canPageAcceptType=function(e,t){return t.startsWith(r.MESSAGE_TYPE_INTERNAL)||e.acceptedTypes[t]};var c=function(e){return Object.assign({id:(0,o.createUuid)(),name:"New Tab",acceptedTypes:{},unreadCount:0,createdAt:Date.now()},e)};t.createPage=c;t.createMainPage=function(){for(var e,t={},n=i(r.MESSAGE_TYPES);!(e=n()).done;){t[e.value.type]=!0}return c({name:"Main",acceptedTypes:t})};t.createMessage=function(e){return Object.assign({createdAt:Date.now()},e)};t.serializeMessage=function(e){return{type:e.type,text:e.text,html:e.html,times:e.times,createdAt:e.createdAt}};t.isSameMessage=function(e,t){return"string"==typeof e.text&&e.text===t.text||"string"==typeof e.html&&e.html===t.html}},107:function(e,t,n){"use strict";t.__esModule=!0,t.MESSAGE_TYPES=t.MESSAGE_TYPE_DEBUG=t.MESSAGE_TYPE_ATTACKLOG=t.MESSAGE_TYPE_ADMINLOG=t.MESSAGE_TYPE_EVENTCHAT=t.MESSAGE_TYPE_MODCHAT=t.MESSAGE_TYPE_ADMINCHAT=t.MESSAGE_TYPE_COMBAT=t.MESSAGE_TYPE_ADMINPM=t.MESSAGE_TYPE_OOC=t.MESSAGE_TYPE_DEADCHAT=t.MESSAGE_TYPE_WARNING=t.MESSAGE_TYPE_INFO=t.MESSAGE_TYPE_RADIO=t.MESSAGE_TYPE_LOCALCHAT=t.MESSAGE_TYPE_SYSTEM=t.MESSAGE_TYPE_INTERNAL=t.MESSAGE_TYPE_UNKNOWN=t.IMAGE_RETRY_MESSAGE_AGE=t.IMAGE_RETRY_LIMIT=t.IMAGE_RETRY_DELAY=t.COMBINE_MAX_TIME_WINDOW=t.COMBINE_MAX_MESSAGES=t.MESSAGE_PRUNE_INTERVAL=t.MESSAGE_SAVE_INTERVAL=t.MAX_PERSISTED_MESSAGES=t.MAX_VISIBLE_MESSAGES=void 0;t.MAX_VISIBLE_MESSAGES=2500;t.MAX_PERSISTED_MESSAGES=1e3;t.MESSAGE_SAVE_INTERVAL=1e4;t.MESSAGE_PRUNE_INTERVAL=6e4;t.COMBINE_MAX_MESSAGES=5;t.COMBINE_MAX_TIME_WINDOW=5e3;t.IMAGE_RETRY_DELAY=250;t.IMAGE_RETRY_LIMIT=10;t.IMAGE_RETRY_MESSAGE_AGE=6e4;t.MESSAGE_TYPE_UNKNOWN="unknown";t.MESSAGE_TYPE_INTERNAL="internal";t.MESSAGE_TYPE_SYSTEM="system";t.MESSAGE_TYPE_LOCALCHAT="localchat";t.MESSAGE_TYPE_RADIO="radio";t.MESSAGE_TYPE_INFO="info";t.MESSAGE_TYPE_WARNING="warning";t.MESSAGE_TYPE_DEADCHAT="deadchat";t.MESSAGE_TYPE_OOC="ooc";t.MESSAGE_TYPE_ADMINPM="adminpm";t.MESSAGE_TYPE_COMBAT="combat";t.MESSAGE_TYPE_ADMINCHAT="adminchat";t.MESSAGE_TYPE_MODCHAT="modchat";t.MESSAGE_TYPE_EVENTCHAT="eventchat";t.MESSAGE_TYPE_ADMINLOG="adminlog";t.MESSAGE_TYPE_ATTACKLOG="attacklog";t.MESSAGE_TYPE_DEBUG="debug";var o=[{type:"system",name:"System Messages",description:"Messages from your client, always enabled",selector:".boldannounce",important:!0},{type:"localchat",name:"Local",description:"In-character local messages (say, emote, etc)",selector:".say, .emote"},{type:"radio",name:"Radio",description:"All departments of radio messages",selector:".alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster"},{type:"info",name:"Info",description:"Non-urgent messages from the game and items",selector:".notice:not(.pm), .adminnotice, .info, .sinister, .cult"},{type:"warning",name:"Warnings",description:"Urgent messages from the game and items",selector:".warning:not(.pm), .critical, .userdanger, .italics"},{type:"deadchat",name:"Deadchat",description:"All of deadchat",selector:".deadsay"},{type:"ooc",name:"OOC",description:"The bluewall of global OOC messages",selector:".ooc, .adminooc"},{type:"looc",name:"LOOC",description:"Local OOC Chat. Less of a bluewall",selector:".filter_looc, .looc"},{type:"antagooc",name:"AOOC",description:"Antag OOC Chat.",selector:".filter_aooc, .antagooc"},{type:"adminpm",name:"Admin PMs",description:"Messages to/from admins (adminhelp)",selector:".pm, .adminhelp"},{type:"combat",name:"Combat Log",description:"Urist McTraitor has stabbed you with a knife!",selector:".danger"},{type:"unknown",name:"Unsorted",description:"Everything we could not sort, always enabled"},{type:"adminchat",name:"Admin Chat",description:"ASAY messages",selector:".admin_channel, .adminsay",admin:!0},{type:"modchat",name:"Mod Chat",description:"MSAY messages",selector:".mod_channel",admin:!0},{type:"adminlog",name:"Admin Log",description:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",selector:".log_message",admin:!0},{type:"attacklog",name:"Attack Log",description:"Urist McTraitor has shot John Doe",admin:!0},{type:"debug",name:"Debug Log",description:"DEBUG: SSPlanets subsystem Recover().",admin:!0}];t.MESSAGE_TYPES=o},144:function(e,t,n){"use strict";t.__esModule=!0,t.SettingsPanel=t.settingsReducer=t.settingsMiddleware=t.useSettings=void 0;var o=n(676);t.useSettings=o.useSettings;var r=n(677);t.settingsMiddleware=r.settingsMiddleware;var i=n(678);t.settingsReducer=i.settingsReducer;var a=n(679);t.SettingsPanel=a.SettingsPanel},145:function(e,t,n){"use strict";t.__esModule=!0,t.chatReducer=t.chatMiddleware=t.ChatTabs=t.ChatPanel=t.ChatPageSettings=void 0;var o=n(680);t.ChatPageSettings=o.ChatPageSettings;var r=n(682);t.ChatPanel=r.ChatPanel;var i=n(684);t.ChatTabs=i.ChatTabs;var a=n(685);t.chatMiddleware=a.chatMiddleware;var c=n(686);t.chatReducer=c.chatReducer},146:function(e,t,n){"use strict";t.__esModule=!0,t.selectChatPageById=t.selectCurrentChatPage=t.selectChatPages=t.selectChat=void 0;var o=n(14);t.selectChat=function(e){return e.chat};t.selectChatPages=function(e){return(0,o.map)((function(t){return e.chat.pageById[t]}))(e.chat.pages)};t.selectCurrentChatPage=function(e){return e.chat.pageById[e.chat.currentPageId]};t.selectChatPageById=function(e){return function(t){return t.chat.pageById[e]}}},147:function(e,t,n){"use strict";t.__esModule=!0,t.pingReply=t.pingFail=t.pingSuccess=void 0;var o=n(22),r=(0,o.createAction)("ping/success",(function(e){var t=Date.now(),n=.5*(t-e.sentAt);return{payload:{lastId:e.id,roundtrip:n},meta:{now:t}}}));t.pingSuccess=r;var i=(0,o.createAction)("ping/fail");t.pingFail=i;var a=(0,o.createAction)("ping/reply");t.pingReply=a},211:function(e,t,n){"use strict";t.__esModule=!0,t.audioReducer=t.NowPlayingWidget=t.audioMiddleware=t.useAudio=void 0;var o=n(672);t.useAudio=o.useAudio;var r=n(673);t.audioMiddleware=r.audioMiddleware;var i=n(675);t.NowPlayingWidget=i.NowPlayingWidget;var a=n(687);t.audioReducer=a.audioReducer},212:function(e,t,n){"use strict";t.__esModule=!0,t.selectAudio=void 0;t.selectAudio=function(e){return e.audio}},213:function(e,t,n){"use strict";t.__esModule=!0,t.setClientTheme=t.THEMES=void 0;t.THEMES=["light","dark","default"];var o=null;t.setClientTheme=function(e){if(clearInterval(o),Byond.command(".output statbrowser:set_theme "+e),o=setTimeout((function(){Byond.command(".output statbrowser:set_theme "+e)}),1500),"light"===e)return Byond.winset({"infowindow.background-color":"#E6E6E6","infowindow.text-color":"#000000","info.background-color":"#F0F0F0","info.text-color":"#000000","browseroutput.background-color":"#E6E6E6","browseroutput.text-color":"#000000","outputwindow.background-color":"#E6E6E6","outputwindow.text-color":"#000000","mainwindow.background-color":"#E6E6E6","split.background-color":"#F0F0F0","changelog.background-color":"#90B3DD","changelog.text-color":"#000000","rules.background-color":"#90B3DD","rules.text-color":"#000000","wiki.background-color":"#90B3DD","wiki.text-color":"#000000","forum.background-color":"#90B3DD","forum.text-color":"#000000","github.background-color":"#90B3DD","github.text-color":"#000000","report-issue.background-color":"#EF7F7F","report-issue.text-color":"#000000","output.background-color":"#F0F0F0","output.text-color":"#000000","statwindow.background-color":"#E6E6E6","statwindow.text-color":"#000000","stat.background-color":"#F0F0F0","stat.tab-background-color":"#E6E6E6","stat.text-color":"#000000","stat.tab-text-color":"#000000","stat.prefix-color":"#000000","stat.suffix-color":"#000000","saybutton.background-color":"#E6E6E6","saybutton.text-color":"#000000","asset_cache_browser.background-color":"#E6E6E6","asset_cache_browser.text-color":"#000000","tooltip.background-color":"#F0F0F0","tooltip.text-color":"#000000"});"dark"===e&&Byond.winset({"infowindow.background-color":"#242424","infowindow.text-color":"#E0E0E0","info.background-color":"#272727","info.text-color":"#E0E0E0","browseroutput.background-color":"#272727","browseroutput.text-color":"#E0E0E0","outputwindow.background-color":"#272727","outputwindow.text-color":"#E0E0E0","mainwindow.background-color":"#242424","split.background-color":"#272727","changelog.background-color":"#40628A","changelog.text-color":"#E0E0E0","rules.background-color":"#40628A","rules.text-color":"#E0E0E0","wiki.background-color":"#40628A","wiki.text-color":"#E0E0E0","forum.background-color":"#40628A","forum.text-color":"#E0E0E0","github.background-color":"#40628A","github.text-color":"#E0E0E0","report-issue.background-color":"#A92C2C","report-issue.text-color":"#E0E0E0","output.background-color":"#272727","output.text-color":"#E0E0E0","statwindow.background-color":"#242424","statwindow.text-color":"#E0E0E0","stat.background-color":"#242424","stat.tab-background-color":"#272727","stat.text-color":"#E0E0E0","stat.tab-text-color":"#E0E0E0","stat.prefix-color":"#E0E0E0","stat.suffix-color":"#E0E0E0","saybutton.background-color":"#272727","saybutton.text-color":"#E0E0E0","asset_cache_browser.background-color":"#272727","asset_cache_browser.text-color":"#E0E0E0","tooltip.background-color":"#272727","tooltip.text-color":"#E0E0E0"}),"default"===e&&Byond.winset({"infowindow.background-color":"#242424","infowindow.text-color":"#E0E0E0","info.background-color":"#272727","info.text-color":"#E0E0E0","browseroutput.background-color":"#272727","browseroutput.text-color":"#E0E0E0","outputwindow.background-color":"#272727","outputwindow.text-color":"#E0E0E0","mainwindow.background-color":"#242424","split.background-color":"#272727","changelog.background-color":"#40628A","changelog.text-color":"#E0E0E0","rules.background-color":"#40628A","rules.text-color":"#E0E0E0","wiki.background-color":"#40628A","wiki.text-color":"#E0E0E0","forum.background-color":"#40628A","forum.text-color":"#E0E0E0","github.background-color":"#40628A","github.text-color":"#E0E0E0","report-issue.background-color":"#A92C2C","report-issue.text-color":"#E0E0E0","output.background-color":"#272727","output.text-color":"#E0E0E0","statwindow.background-color":"#242424","statwindow.text-color":"#E0E0E0","stat.background-color":"#242424","stat.tab-background-color":"#272727","stat.text-color":"#E0E0E0","stat.tab-text-color":"#E0E0E0","stat.prefix-color":"#E0E0E0","stat.suffix-color":"#E0E0E0","saybutton.background-color":"#272727","saybutton.text-color":"#E0E0E0","asset_cache_browser.background-color":"#272727","asset_cache_browser.text-color":"#E0E0E0","tooltip.background-color":"#272727","tooltip.text-color":"#E0E0E0"})}},214:function(e,t,n){"use strict";t.__esModule=!0,t.SETTINGS_TABS=void 0;t.SETTINGS_TABS=[{id:"general",name:"General"},{id:"chatPage",name:"Chat Tabs"}]},215:function(e,t,n){"use strict";(function(e){t.__esModule=!0,t.chatRenderer=void 0;var o=n(185),r=n(6),i=n(25),a=n(107),c=n(106),s=n(683);function l(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var d=(0,i.createLogger)("chatRenderer"),g=function(e,t){var n=document.createElement("span");return n.className="Chat__highlight",n.setAttribute("style","background-color:"+t),n.textContent=e,n},p=function(){var e=document.createElement("div");return e.className="ChatMessage",e},h=function(){var e=document.createElement("div");return e.className="Chat__reconnected",e},f=function(e){setTimeout((function(){var t=e.target,n=parseInt(t.getAttribute("data-reload-n"),10)||0;if(n>=a.IMAGE_RETRY_LIMIT)d.error("failed to load an image after "+n+" attempts");else{var o=t.src;t.src=null,t.src=o+"#"+n,t.setAttribute("data-reload-n",n+1)}}),a.IMAGE_RETRY_DELAY)},m=function(e){var t=e.node,n=e.times;if(t&&n){var o=t.querySelector(".Chat__badge"),i=o||document.createElement("div");i.textContent=n,i.className=(0,r.classes)(["Chat__badge","Chat__badge--animate"]),requestAnimationFrame((function(){i.className="Chat__badge"})),o||t.appendChild(i)}},v=function(){function t(){var e=this;this.loaded=!1,this.rootNode=null,this.queue=[],this.messages=[],this.visibleMessages=[],this.page=null,this.events=new o.EventEmitter,this.scrollNode=null,this.scrollTracking=!0,this.handleScroll=function(t){var n=e.scrollNode,o=n.scrollHeight,r=n.scrollTop+n.offsetHeight,i=Math.abs(o-r)<24;i!==e.scrollTracking&&(e.scrollTracking=i,e.events.emit("scrollTrackingChanged",i),d.debug("tracking",e.scrollTracking))},this.ensureScrollTracking=function(){e.scrollTracking&&e.scrollToBottom()},setInterval((function(){return e.pruneMessages()}),a.MESSAGE_PRUNE_INTERVAL)}var n=t.prototype;return n.isReady=function(){return this.loaded&&this.rootNode&&this.page},n.mount=function(t){var n=this;this.rootNode?t.appendChild(this.rootNode):this.rootNode=t,this.scrollNode=function(e){for(var t=document.body,n=e;n&&n!==t;){if(n.scrollWidth<n.offsetWidth)return n;n=n.parentNode}return window}(this.rootNode),this.scrollNode.addEventListener("scroll",this.handleScroll),e((function(){n.scrollToBottom()})),this.tryFlushQueue()},n.onStateLoaded=function(){this.loaded=!0,this.tryFlushQueue()},n.tryFlushQueue=function(){this.isReady()&&this.queue.length>0&&(this.processBatch(this.queue),this.queue=[])},n.assignStyle=function(e){void 0===e&&(e={});for(var t=0,n=Object.keys(e);t<n.length;t++){var o=n[t];this.rootNode.style.setProperty(o,e[o])}},n.setHighlight=function(e,t){if(!e||!t)return this.highlightRegex=null,void(this.highlightColor=null);var n=/^[a-z0-9_\-\s]+$/gi,o=String(e).split(",").map((function(e){return e.trim()})).filter((function(e){return e&&e.length>1&&n.test(e)}));if(0===o.length)return this.highlightRegex=null,void(this.highlightColor=null);this.highlightRegex=new RegExp("("+o.join("|")+")","gi"),this.highlightColor=t},n.scrollToBottom=function(){this.scrollNode.scrollTop=this.scrollNode.scrollHeight},n.changePage=function(e){if(!this.isReady())return this.page=e,void this.tryFlushQueue();this.page=e,this.rootNode.textContent="",this.visibleMessages=[];for(var t,n,o=document.createDocumentFragment(),r=l(this.messages);!(n=r()).done;){var i=n.value;(0,c.canPageAcceptType)(e,i.type)&&(t=i.node,o.appendChild(t),this.visibleMessages.push(i))}t&&(this.rootNode.appendChild(o),t.scrollIntoView())},n.getCombinableMessage=function(e){for(var t=Date.now(),n=this.visibleMessages.length,o=n-1,r=Math.max(0,n-a.COMBINE_MAX_MESSAGES),i=o;i>=r;i--){var s=this.visibleMessages[i];if(!s.type.startsWith(a.MESSAGE_TYPE_INTERNAL)&&(0,c.isSameMessage)(s,e)&&t<s.createdAt+a.COMBINE_MAX_TIME_WINDOW)return s}return null},n.processBatch=function(t,n){var o=this;void 0===n&&(n={});var r=n,i=r.prepend,u=r.notifyListeners,v=void 0===u||u,E=Date.now();if(this.isReady()){for(var y,b,S=document.createDocumentFragment(),_={},C=l(t);!(b=C()).done;){var A=b.value,M=(0,c.createMessage)(A),T=this.getCombinableMessage(M);if(T)T.times=(T.times||1)+1,m(T);else{if(M.node)y=M.node;else if("internal/reconnected"===M.type)y=h();else if(y=p(),M.text?y.textContent=M.text:M.html?y.innerHTML=M.html:d.error("Error: message is missing text payload",M),!M.avoidHighlighting&&this.highlightRegex&&(0,s.highlightNode)(y,this.highlightRegex,(function(e){return g(e,o.highlightColor)}))&&(y.className+=" ChatMessage--highlighted"),(0,s.linkifyNode)(y),E<M.createdAt+a.IMAGE_RETRY_MESSAGE_AGE)for(var w=y.querySelectorAll("img"),N=0;N<w.length;N++)w[N].addEventListener("error",f);if(M.node=y,!M.type){var I=!Byond.IS_LTE_IE8&&a.MESSAGE_TYPES.find((function(e){return e.selector&&y.querySelector(e.selector)}));M.type=(null==I?void 0:I.type)||a.MESSAGE_TYPE_UNKNOWN}m(M),_[M.type]||(_[M.type]=0),_[M.type]+=1,this.messages.push(M),(0,c.canPageAcceptType)(this.page,M.type)&&(S.appendChild(y),this.visibleMessages.push(M))}}if(y){var x=this.rootNode.childNodes[0];i&&x?this.rootNode.insertBefore(S,x):this.rootNode.appendChild(S),this.scrollTracking&&e((function(){return o.scrollToBottom()}))}v&&this.events.emit("batchProcessed",_)}else this.queue=i?[].concat(t,this.queue):[].concat(this.queue,t)},n.pruneMessages=function(){if(this.isReady())if(this.scrollTracking){var e=this.visibleMessages,t=Math.max(0,e.length-a.MAX_VISIBLE_MESSAGES);if(t>0){this.visibleMessages=e.slice(t);for(var n=0;n<t;n++){var o=e[n];this.rootNode.removeChild(o.node),o.node="pruned"}this.messages=this.messages.filter((function(e){return"pruned"!==e.node})),d.log("pruned "+t+" visible messages")}var r=Math.max(0,this.messages.length-a.MAX_PERSISTED_MESSAGES);r>0&&(this.messages=this.messages.slice(r),d.log("pruned "+r+" stored messages"))}else d.debug("pruning delayed")},n.rebuildChat=function(){if(this.isReady()){for(var e,t=Math.max(0,this.messages.length-a.MAX_PERSISTED_MESSAGES),n=this.messages.slice(t),o=l(n);!(e=o()).done;)e.value.node=undefined;this.rootNode.textContent="",this.messages=[],this.visibleMessages=[],this.processBatch(n,{notifyListeners:!1})}},n.saveToDisk=function(){if(!Byond.IS_LTE_IE10){for(var e="",t=document.styleSheets,n=0;n<t.length;n++)for(var o=t[n].cssRules,r=0;r<o.length;r++)e+=o[r].cssText+"\n";e+="body, html { background-color: #141414 }\n";for(var i,a="",c=l(this.messages);!(i=c()).done;){var s=i.value;s.node&&(a+=s.node.outerHTML+"\n")}var u=new Blob(["<!doctype html>\n<html>\n<head>\n<title>SS13 Chat Log\n\n\n\n
    \n'+a+"
    \n\n\n"]),d=(new Date).toISOString().substring(0,19).replace(/[-:]/g,"").replace("T","-");window.navigator.msSaveBlob(u,"ss13-chatlog-"+d+".html")}},t}();window.__chatRenderer__||(window.__chatRenderer__=new v);var E=window.__chatRenderer__;t.chatRenderer=E}).call(this,n(101).setImmediate)},216:function(e,t,n){"use strict";t.__esModule=!0,t.gameReducer=t.gameMiddleware=t.useGame=void 0;var o=n(688);t.useGame=o.useGame;var r=n(689);t.gameMiddleware=r.gameMiddleware;var i=n(691);t.gameReducer=i.gameReducer},217:function(e,t,n){"use strict";t.__esModule=!0,t.selectGame=void 0;t.selectGame=function(e){return e.game}},218:function(e,t,n){"use strict";t.__esModule=!0,t.connectionRestored=t.connectionLost=t.roundRestarted=void 0;var o=n(22),r=(0,o.createAction)("roundrestart");t.roundRestarted=r;var i=(0,o.createAction)("game/connectionLost");t.connectionLost=i;var a=(0,o.createAction)("game/connectionRestored");t.connectionRestored=a},219:function(e,t,n){"use strict";t.__esModule=!0,t.pingReducer=t.PingIndicator=t.pingMiddleware=void 0;var o=n(693);t.pingMiddleware=o.pingMiddleware;var r=n(694);t.PingIndicator=r.PingIndicator;var i=n(697);t.pingReducer=i.pingReducer},220:function(e,t,n){"use strict";t.__esModule=!0,t.PING_ROUNDTRIP_WORST=t.PING_ROUNDTRIP_BEST=t.PING_QUEUE_SIZE=t.PING_MAX_FAILS=t.PING_TIMEOUT=t.PING_INTERVAL=void 0;t.PING_INTERVAL=2500;t.PING_TIMEOUT=2e3;t.PING_MAX_FAILS=3;t.PING_QUEUE_SIZE=8;t.PING_ROUNDTRIP_BEST=50;t.PING_ROUNDTRIP_WORST=200},65:function(e,t,n){"use strict";t.__esModule=!0,t.openChatSettings=t.toggleSettings=t.changeSettingsTab=t.loadSettings=t.updateSettings=void 0;var o=n(22),r=(0,o.createAction)("settings/update");t.updateSettings=r;var i=(0,o.createAction)("settings/load");t.loadSettings=i;var a=(0,o.createAction)("settings/changeTab");t.changeSettingsTab=a;var c=(0,o.createAction)("settings/toggle");t.toggleSettings=c;var s=(0,o.createAction)("settings/openChatTab");t.openChatSettings=s},668:function(e,t,n){n(148),e.exports=n(669)},669:function(e,t,n){"use strict";var o=n(0);n(670),n(671);var r,i,a=n(99),c=n(22),s=(n(100),n(57)),l=n(186),u=n(136),d=n(187),g=n(211),p=n(145),h=n(216),f=n(692),m=n(219),v=n(144),E=n(698);function y(e,t,n,o,r,i,a){try{var c=e[i](a),s=c.value}catch(l){return void n(l)}c.done?t(s):Promise.resolve(s).then(o,r)}a.perf.mark("inception",null==(r=window.performance)||null==(i=r.timing)?void 0:i.navigationStart),a.perf.mark("init");var b=(0,d.configureStore)({reducer:(0,c.combineReducers)({audio:g.audioReducer,chat:p.chatReducer,game:h.gameReducer,ping:m.pingReducer,settings:v.settingsReducer}),middleware:{pre:[p.chatMiddleware,m.pingMiddleware,E.telemetryMiddleware,v.settingsMiddleware,g.audioMiddleware,h.gameMiddleware]}}),S=(0,u.createRenderer)((function(){var e=n(699).Panel;return(0,o.createComponentVNode)(2,d.StoreProvider,{store:b,children:(0,o.createComponentVNode)(2,e)})})),_=function(){var e,t=(e=regeneratorRuntime.mark((function n(e){var t;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return void 0===e&&(e="output"),n.next=3,Byond.winget(e);case 3:t=n.sent,Byond.winset("browseroutput",{size:t.size});case 5:case"end":return n.stop()}}),n)})),function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){y(i,o,r,a,c,"next",e)}function c(e){y(i,o,r,a,c,"throw",e)}a(undefined)}))});return function(e){return t.apply(this,arguments)}}();!function C(){if("loading"!==document.readyState){for((0,s.setupGlobalEvents)({ignoreWindowFocus:!0}),(0,f.setupPanelFocusHacks)(),(0,l.captureExternalLinks)(),b.subscribe(S),window.update=function(e){return b.dispatch(Byond.parseJson(e))};;){var e=window.__updateQueue__.shift();if(!e)break;window.update(e)}Byond.winset("output",{"is-visible":!1}),Byond.winset("browseroutput",{"is-visible":!0,"is-disabled":!1,pos:"0x0",size:"0x0"}),_()}else document.addEventListener("DOMContentLoaded",C)}()},670:function(e,t,n){},671:function(e,t,n){},672:function(e,t,n){"use strict";t.__esModule=!0,t.useAudio=void 0;var o=n(22),r=n(212);t.useAudio=function(e){var t=(0,o.useSelector)(e,r.selectAudio),n=(0,o.useDispatch)(e);return Object.assign({},t,{toggle:function(){return n({type:"audio/toggle"})}})}},673:function(e,t,n){"use strict";t.__esModule=!0,t.audioMiddleware=void 0;var o=n(674);t.audioMiddleware=function(e){var t=new o.AudioPlayer;return t.onPlay((function(){e.dispatch({type:"audio/playing"})})),t.onStop((function(){e.dispatch({type:"audio/stopped"})})),function(e){return function(n){var o=n.type,r=n.payload;if("audio/playMusic"===o){var i=r.url,a=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(r,["url"]);return t.play(i,a),e(n)}if("audio/stopMusic"===o)return t.stop(),e(n);if("settings/update"===o||"settings/load"===o){var c=null==r?void 0:r.adminMusicVolume;return"number"==typeof c&&t.setVolume(c),e(n)}return e(n)}}}},674:function(e,t,n){"use strict";function o(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&e.node.currentTime>=e.options.end&&e.stop())}),1e3))}var t=e.prototype;return t.destroy=function(){this.node&&(this.node.stop(),document.removeChild(this.node),clearInterval(this.playbackInterval))},t.play=function(e,t){void 0===t&&(t={}),this.node&&(i.log("playing",e,t),this.options=t,this.node.src=e)},t.stop=function(){if(this.node){if(this.playing)for(var e,t=o(this.onStopSubscribers);!(e=t()).done;)(0,e.value)();i.log("stopping"),this.playing=!1,this.node.src=""}},t.setVolume=function(e){this.node&&(this.volume=e,this.node.volume=e)},t.onPlay=function(e){this.node&&this.onPlaySubscribers.push(e)},t.onStop=function(e){this.node&&this.onStopSubscribers.push(e)},e}();t.AudioPlayer=a},675:function(e,t,n){"use strict";t.__esModule=!0,t.NowPlayingWidget=void 0;var o=n(0),r=n(11),i=n(22),a=n(1),c=n(144),s=n(212);t.NowPlayingWidget=function(e,t){var n,l=(0,i.useSelector)(t,s.selectAudio),u=(0,i.useDispatch)(t),d=(0,c.useSettings)(t),g=null==(n=l.meta)?void 0:n.title;return(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[l.playing&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:0,mx:.5,color:"label",children:"Now playing:"}),(0,o.createComponentVNode)(2,a.Flex.Item,{mx:.5,grow:1,style:{"white-space":"nowrap",overflow:"hidden","text-overflow":"ellipsis"},children:g||"Unknown Track"})],4)||(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,color:"label",children:"Nothing to play."}),l.playing&&(0,o.createComponentVNode)(2,a.Flex.Item,{mx:.5,fontSize:"0.9em",children:(0,o.createComponentVNode)(2,a.Button,{tooltip:"Stop",icon:"stop",onClick:function(){return u({type:"audio/stopMusic"})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mx:.5,fontSize:"0.9em",children:(0,o.createComponentVNode)(2,a.Knob,{minValue:0,maxValue:1,value:d.adminMusicVolume,step:.0025,stepPixelSize:1,format:function(e){return(0,r.toFixed)(100*e)+"%"},onDrag:function(e,t){return d.update({adminMusicVolume:t})}})})]})}},676:function(e,t,n){"use strict";t.__esModule=!0,t.useSettings=void 0;var o=n(22),r=n(65),i=n(105);t.useSettings=function(e){var t=(0,o.useSelector)(e,i.selectSettings),n=(0,o.useDispatch)(e);return Object.assign({},t,{visible:t.view.visible,toggle:function(){return n((0,r.toggleSettings)())},update:function(e){return n((0,r.updateSettings)(e))}})}},677:function(e,t,n){"use strict";t.__esModule=!0,t.settingsMiddleware=void 0;var o=n(102),r=n(213),i=n(65),a=n(105);t.settingsMiddleware=function(e){var t=!1;return function(n){return function(c){var s,l=c.type,u=c.payload;if(t||(t=!0,o.storage.get("panel-settings").then((function(t){e.dispatch((0,i.loadSettings)(t))}))),l===i.updateSettings.type||l===i.loadSettings.type){var d=null==u?void 0:u.theme;d&&(0,r.setClientTheme)(d),n(c);var g=(0,a.selectSettings)(e.getState());return s=g.fontSize,document.documentElement.style.setProperty("font-size",s+"px"),document.body.style.setProperty("font-size",s+"px"),void o.storage.set("panel-settings",g)}return n(c)}}}},678:function(e,t,n){"use strict";t.__esModule=!0,t.settingsReducer=void 0;var o=n(65),r={version:1,fontSize:13,lineHeight:1.2,theme:"default",adminMusicVolume:.5,highlightText:"",highlightColor:"#ffdd44",view:{visible:!1,activeTab:n(214).SETTINGS_TABS[0].id}};t.settingsReducer=function(e,t){void 0===e&&(e=r);var n=t.type,i=t.payload;if(n===o.updateSettings.type)return Object.assign({},e,i);if(n===o.loadSettings.type)return(null==i?void 0:i.version)?(delete i.view,Object.assign({},e,i)):e;if(n===o.toggleSettings.type)return Object.assign({},e,{view:Object.assign({},e.view,{visible:!e.view.visible})});if(n===o.openChatSettings.type)return Object.assign({},e,{view:Object.assign({},e.view,{visible:!0,activeTab:"chatPage"})});if(n===o.changeSettingsTab.type){var a=i.tabId;return Object.assign({},e,{view:Object.assign({},e.view,{activeTab:a})})}return e}},679:function(e,t,n){"use strict";t.__esModule=!0,t.SettingsGeneral=t.SettingsPanel=void 0;var o=n(0),r=n(11),i=n(22),a=n(1),c=n(145),s=n(79),l=n(213),u=n(65),d=n(214),g=n(105);t.SettingsPanel=function(e,t){var n=(0,i.useSelector)(t,g.selectActiveTab),r=(0,i.useDispatch)(t);return(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:1,children:(0,o.createComponentVNode)(2,a.Section,{fitted:!0,fill:!0,minHeight:"8em",children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:d.SETTINGS_TABS.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:e.id===n,onClick:function(){return r((0,u.changeSettingsTab)({tabId:e.id}))},children:e.name},e.id)}))})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:["general"===n&&(0,o.createComponentVNode)(2,p),"chatPage"===n&&(0,o.createComponentVNode)(2,c.ChatPageSettings)]})]})};var p=function(e,t){var n=(0,i.useSelector)(t,g.selectSettings),c=n.theme,d=n.fontSize,p=n.lineHeight,h=n.highlightText,f=n.highlightColor,m=(0,i.useDispatch)(t);return(0,o.createComponentVNode)(2,a.Section,{fill:!0,children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Theme",children:(0,o.createComponentVNode)(2,a.Dropdown,{selected:c,options:l.THEMES,onSelected:function(e){return m((0,u.updateSettings)({theme:e}))}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Font size",children:(0,o.createComponentVNode)(2,a.NumberInput,{width:"4em",step:1,stepPixelSize:10,minValue:8,maxValue:32,value:d,unit:"px",format:function(e){return(0,r.toFixed)(e)},onChange:function(e,t){return m((0,u.updateSettings)({fontSize:t}))}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Line height",children:(0,o.createComponentVNode)(2,a.NumberInput,{width:"4em",step:.01,stepPixelSize:2,minValue:.8,maxValue:5,value:p,format:function(e){return(0,r.toFixed)(e,2)},onDrag:function(e,t){return m((0,u.updateSettings)({lineHeight:t}))}})})]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Flex,{mb:1,color:"label",align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:"Highlight words (comma separated):"}),(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:0,children:[(0,o.createComponentVNode)(2,a.ColorBox,{mr:1,color:f}),(0,o.createComponentVNode)(2,a.Input,{width:"5em",monospace:!0,placeholder:"#ffffff",value:f,onInput:function(e,t){return m((0,u.updateSettings)({highlightColor:t}))}})]})]}),(0,o.createComponentVNode)(2,a.TextArea,{height:"3em",value:h,onChange:function(e,t){return m((0,u.updateSettings)({highlightText:t}))}})]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"check",onClick:function(){return m((0,s.rebuildChat)())},children:"Apply now"}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,fontSize:"0.9em",ml:1,color:"label",children:"Can freeze the chat for a while."})]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){return m((0,s.saveChatToDisk)())},children:"Save chat log"})]})};t.SettingsGeneral=p},680:function(e,t,n){"use strict";t.__esModule=!0,t.ChatPageSettings=void 0;var o=n(0),r=n(22),i=n(1),a=n(79),c=n(107),s=n(146);t.ChatPageSettings=function(e,t){var n=(0,r.useSelector)(t,s.selectCurrentChatPage),l=(0,r.useDispatch)(t);return(0,o.createComponentVNode)(2,i.Section,{fill:!0,children:[(0,o.createComponentVNode)(2,i.Flex,{mx:-.5,align:"center",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{mx:.5,grow:1,children:(0,o.createComponentVNode)(2,i.Input,{fluid:!0,value:n.name,onChange:function(e,t){return l((0,a.updateChatPage)({pageId:n.id,name:t}))}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{mx:.5,children:(0,o.createComponentVNode)(2,i.Button,{icon:"times",color:"red",onClick:function(){return l((0,a.removeChatPage)({pageId:n.id}))},children:"Remove"})})]}),(0,o.createComponentVNode)(2,i.Divider),(0,o.createComponentVNode)(2,i.Section,{title:"Messages to display",level:2,children:[c.MESSAGE_TYPES.filter((function(e){return!e.important&&!e.admin})).map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:n.acceptedTypes[e.type],onClick:function(){return l((0,a.toggleAcceptedType)({pageId:n.id,type:e.type}))},children:e.name},e.type)})),(0,o.createComponentVNode)(2,i.Collapsible,{mt:1,color:"transparent",title:"Admin stuff",children:c.MESSAGE_TYPES.filter((function(e){return!e.important&&e.admin})).map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:n.acceptedTypes[e.type],onClick:function(){return l((0,a.toggleAcceptedType)({pageId:n.id,type:e.type}))},children:e.name},e.type)}))})]})]})}},681:function(e,t,n){"use strict";t.__esModule=!0,t.createUuid=void 0;t.createUuid=function(){var e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===t?n:3&n|8).toString(16)}))}},682:function(e,t,n){"use strict";t.__esModule=!0,t.ChatPanel=void 0;var o=n(0),r=n(6),i=n(1),a=n(215);var c=function(e){var t,n;function c(){var t;return(t=e.call(this)||this).ref=(0,o.createRef)(),t.state={scrollTracking:!0},t.handleScrollTrackingChange=function(e){return t.setState({scrollTracking:e})},t}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var s=c.prototype;return s.componentDidMount=function(){a.chatRenderer.mount(this.ref.current),a.chatRenderer.events.on("scrollTrackingChanged",this.handleScrollTrackingChange),this.componentDidUpdate()},s.componentWillUnmount=function(){a.chatRenderer.events.off("scrollTrackingChanged",this.handleScrollTrackingChange)},s.componentDidUpdate=function(e){requestAnimationFrame((function(){a.chatRenderer.ensureScrollTracking()})),(!e||(0,r.shallowDiffers)(this.props,e))&&a.chatRenderer.assignStyle({width:"100%","white-space":"pre-wrap","font-size":this.props.fontSize,"line-height":this.props.lineHeight})},s.render=function(){var e=this.state.scrollTracking;return(0,o.createFragment)([(0,o.createVNode)(1,"div","Chat",null,1,null,null,this.ref),!e&&(0,o.createComponentVNode)(2,i.Button,{className:"Chat__scrollButton",icon:"arrow-down",onClick:function(){return a.chatRenderer.scrollToBottom()},children:"Scroll to bottom"})],0)},c}(o.Component);t.ChatPanel=c},683:function(e,t,n){"use strict";t.__esModule=!0,t.linkifyNode=t.highlightNode=t.replaceInTextNode=void 0;var o=function(e,t){return function(n){for(var o,r,i=n.textContent,a=i.length,c=0,s=0;o=e.exec(i);){s+=1,r||(r=document.createDocumentFragment());var l=o[0],u=l.length,d=o.index;c0&&(0,o.createComponentVNode)(2,l,{value:e.unreadCount}),onClick:function(){return d((0,a.changeChatPage)({pageId:e.id}))},children:e.name},e.id)}))})}),(0,o.createComponentVNode)(2,i.Flex.Item,{ml:1,children:(0,o.createComponentVNode)(2,i.Button,{color:"transparent",icon:"plus",onClick:function(){d((0,a.addChatPage)()),d((0,s.openChatSettings)())}})})]})}},685:function(e,t,n){"use strict";t.__esModule=!0,t.chatMiddleware=void 0;var o=n(102),r=n(65),i=n(105),a=n(79),c=n(107),s=n(106),l=n(215),u=n(146);n(25);function d(e,t,n,o,r,i,a){try{var c=e[i](a),s=c.value}catch(l){return void n(l)}c.done?t(s):Promise.resolve(s).then(o,r)}function g(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){d(i,o,r,a,c,"next",e)}function c(e){d(i,o,r,a,c,"throw",e)}a(undefined)}))}}var p=function(){var e=g(regeneratorRuntime.mark((function t(e){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=(0,u.selectChat)(e.getState()),r=Math.max(0,l.chatRenderer.messages.length-c.MAX_PERSISTED_MESSAGES),i=l.chatRenderer.messages.slice(r).map((function(e){return(0,s.serializeMessage)(e)})),o.storage.set("chat-state",n),o.storage.set("chat-messages",i);case 5:case"end":return t.stop()}}),t)})));return function(t){return e.apply(this,arguments)}}(),h=function(){var e=g(regeneratorRuntime.mark((function t(e){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Promise.all([o.storage.get("chat-state"),o.storage.get("chat-messages")]);case 2:if(n=t.sent,r=n[0],i=n[1],!(r&&r.version<=4)){t.next=8;break}return e.dispatch((0,a.loadChat)()),t.abrupt("return");case 8:i&&(c=[].concat(i,[(0,s.createMessage)({type:"internal/reconnected"})]),l.chatRenderer.processBatch(c,{prepend:!0})),e.dispatch((0,a.loadChat)(r));case 10:case"end":return t.stop()}}),t)})));return function(t){return e.apply(this,arguments)}}();t.chatMiddleware=function(e){var t=!1,n=!1;return l.chatRenderer.events.on("batchProcessed",(function(t){n&&e.dispatch((0,a.updateMessageCount)(t))})),l.chatRenderer.events.on("scrollTrackingChanged",(function(t){e.dispatch((0,a.changeScrollTracking)(t))})),setInterval((function(){return p(e)}),c.MESSAGE_SAVE_INTERVAL),function(o){return function(c){var s=c.type,d=c.payload;if(t||(t=!0,h(e)),"chat/message"!==s){if(s===a.loadChat.type){o(c);var g=(0,u.selectCurrentChatPage)(e.getState());return l.chatRenderer.changePage(g),l.chatRenderer.onStateLoaded(),void(n=!0)}if(s!==a.changeChatPage.type&&s!==a.addChatPage.type&&s!==a.removeChatPage.type&&s!==a.toggleAcceptedType.type){if(s===a.rebuildChat.type)return l.chatRenderer.rebuildChat(),o(c);if(s!==r.updateSettings.type&&s!==r.loadSettings.type){if("roundrestart"===s)return p(e),o(c);if(s!==a.saveChatToDisk.type)return o(c);l.chatRenderer.saveToDisk()}else{o(c);var f=(0,i.selectSettings)(e.getState());l.chatRenderer.setHighlight(f.highlightText,f.highlightColor)}}else{o(c);var m=(0,u.selectCurrentChatPage)(e.getState());l.chatRenderer.changePage(m)}}else{var v=Array.isArray(d)?d:[d];l.chatRenderer.processBatch(v)}}}}},686:function(e,t,n){"use strict";t.__esModule=!0,t.chatReducer=t.initialState=void 0;var o,r=n(79),i=n(106);function a(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&(_[A.id]=Object.assign({},A,{unreadCount:A.unreadCount+M}))}return Object.assign({},e,{pageById:_})}if(o===r.addChatPage.type)return Object.assign({},e,{currentPageId:c.id,pages:[].concat(e.pages,[c.id]),pageById:Object.assign({},e.pageById,(n={},n[c.id]=c,n))});if(o===r.changeChatPage.type){var I,x=c.pageId,P=Object.assign({},e.pageById[x],{unreadCount:0});return Object.assign({},e,{currentPageId:x,pageById:Object.assign({},e.pageById,(I={},I[x]=P,I))})}if(o===r.updateChatPage.type){var k,R=c.pageId,O=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(c,["pageId"]),V=Object.assign({},e.pageById[R],O);return Object.assign({},e,{pageById:Object.assign({},e.pageById,(k={},k[R]=V,k))})}if(o===r.toggleAcceptedType.type){var G,B=c.pageId,L=c.type,D=Object.assign({},e.pageById[B]);return D.acceptedTypes=Object.assign({},D.acceptedTypes),D.acceptedTypes[L]=!D.acceptedTypes[L],Object.assign({},e,{pageById:Object.assign({},e.pageById,(G={},G[B]=D,G))})}if(o===r.removeChatPage.type){var F=c.pageId,j=Object.assign({},e,{pages:[].concat(e.pages),pageById:Object.assign({},e.pageById)});return delete j.pageById[F],j.pages=j.pages.filter((function(e){return e!==F})),0===j.pages.length&&(j.pages.push(s.id),j.pageById[s.id]=s,j.currentPageId=s.id),j.currentPageId&&j.currentPageId!==F||(j.currentPageId=j.pages[0]),j}return e}},687:function(e,t,n){"use strict";t.__esModule=!0,t.audioReducer=void 0;var o={visible:!1,playing:!1,track:null};t.audioReducer=function(e,t){void 0===e&&(e=o);var n=t.type,r=t.payload;return"audio/playing"===n?Object.assign({},e,{visible:!0,playing:!0}):"audio/stopped"===n?Object.assign({},e,{visible:!1,playing:!1}):"audio/playMusic"===n?Object.assign({},e,{meta:r}):"audio/stopMusic"===n?Object.assign({},e,{visible:!1,playing:!1,meta:null}):"audio/toggle"===n?Object.assign({},e,{visible:!e.visible}):e}},688:function(e,t,n){"use strict";t.__esModule=!0,t.useGame=void 0;var o=n(22),r=n(217);t.useGame=function(e){return(0,o.useSelector)(e,r.selectGame)}},689:function(e,t,n){"use strict";t.__esModule=!0,t.gameMiddleware=void 0;var o=n(147),r=n(218),i=n(217),a=n(690),c=function(e){return Object.assign({},e,{meta:Object.assign({},e.meta,{now:Date.now()})})};t.gameMiddleware=function(e){var t;return setInterval((function(){var n=e.getState();if(n){var o=(0,i.selectGame)(n),s=t&&Date.now()>=t+a.CONNECTION_LOST_AFTER;!o.connectionLostAt&&s&&e.dispatch(c((0,r.connectionLost)())),o.connectionLostAt&&!s&&e.dispatch(c((0,r.connectionRestored)()))}}),1e3),function(e){return function(n){var i=n.type,a=(n.payload,n.meta);return i===o.pingSuccess.type?(t=a.now,e(n)):i===r.roundRestarted.type?e(c(n)):e(n)}}}},690:function(e,t,n){"use strict";t.__esModule=!0,t.CONNECTION_LOST_AFTER=void 0;t.CONNECTION_LOST_AFTER=15e3},691:function(e,t,n){"use strict";t.__esModule=!0,t.gameReducer=void 0;var o=n(218),r={roundId:null,roundTime:null,roundRestartedAt:null,connectionLostAt:null};t.gameReducer=function(e,t){void 0===e&&(e=r);var n=t.type,i=(t.payload,t.meta);return"roundrestart"===n?Object.assign({},e,{roundRestartedAt:i.now}):n===o.connectionLost.type?Object.assign({},e,{connectionLostAt:i.now}):n===o.connectionRestored.type?Object.assign({},e,{connectionLostAt:null}):e}},692:function(e,t,n){"use strict";(function(e){t.__esModule=!0,t.setupPanelFocusHacks=void 0;var o=n(103),r=n(57),i=n(189),a=function(){return e((function(){return(0,i.focusMap)()}))};t.setupPanelFocusHacks=function(){var e=!1,t=null;window.addEventListener("focusin",(function(t){e=(0,r.canStealFocus)(t.target)})),window.addEventListener("mousedown",(function(e){t=[e.screenX,e.screenY]})),window.addEventListener("mouseup",(function(n){if(t){var r=[n.screenX,n.screenY];(0,o.vecLength)((0,o.vecSubtract)(r,t))>=10&&(e=!0)}e||a()})),r.globalEvents.on("keydown",(function(e){e.isModifierKey()||a()}))}}).call(this,n(101).setImmediate)},693:function(e,t,n){"use strict";t.__esModule=!0,t.pingMiddleware=void 0;var o=n(2),r=n(147),i=n(220);t.pingMiddleware=function(e){var t=!1,n=0,a=[],c=function(){for(var t=0;ti.PING_TIMEOUT&&(a[t]=null,e.dispatch((0,r.pingFail)()))}var s={index:n,sentAt:Date.now()};a[n]=s,(0,o.sendMessage)({type:"ping",payload:{index:n}}),n=(n+1)%i.PING_QUEUE_SIZE};return function(e){return function(n){var o=n.type,s=n.payload;if(t||(t=!0,setInterval(c,i.PING_INTERVAL),c()),"pingReply"===o){var l=s.index,u=a[l];if(!u)return;return a[l]=null,e((0,r.pingSuccess)(u))}return e(n)}}}},694:function(e,t,n){"use strict";t.__esModule=!0,t.PingIndicator=void 0;var o=n(0),r=n(695),i=n(11),a=n(22),c=n(1),s=n(696);t.PingIndicator=function(e,t){var n=(0,a.useSelector)(t,s.selectPing),l=r.Color.lookup(n.networkQuality,[new r.Color(220,40,40),new r.Color(220,200,40),new r.Color(60,220,40)]),u=n.roundtrip?(0,i.toFixed)(n.roundtrip):"--";return(0,o.createVNode)(1,"div","Ping",[(0,o.createComponentVNode)(2,c.Box,{className:"Ping__indicator",backgroundColor:l}),u],0)}},695:function(e,t,n){"use strict";t.__esModule=!0,t.Color=void 0;var o=function(){function e(e,t,n,o){void 0===e&&(e=0),void 0===t&&(t=0),void 0===n&&(n=0),void 0===o&&(o=1),this.r=e,this.g=t,this.b=n,this.a=o}return e.prototype.toString=function(){return"rgba("+(0|this.r)+", "+(0|this.g)+", "+(0|this.b)+", "+(0|this.a)+")"},e}();t.Color=o,o.fromHex=function(e){return new o(parseInt(e.substr(1,2),16),parseInt(e.substr(3,2),16),parseInt(e.substr(5,2),16))},o.lerp=function(e,t,n){return new o((t.r-e.r)*n+e.r,(t.g-e.g)*n+e.g,(t.b-e.b)*n+e.b,(t.a-e.a)*n+e.a)},o.lookup=function(e,t){void 0===t&&(t=[]);var n=t.length;if(n<2)throw new Error("Needs at least two colors!");var r=e*(n-1);if(e<1e-4)return t[0];if(e>=.9999)return t[n-1];var i=r%1,a=0|r;return o.lerp(t[a],t[a+1],i)}},696:function(e,t,n){"use strict";t.__esModule=!0,t.selectPing=void 0;t.selectPing=function(e){return e.ping}},697:function(e,t,n){"use strict";t.__esModule=!0,t.pingReducer=void 0;var o=n(11),r=n(147),i=n(220);t.pingReducer=function(e,t){void 0===e&&(e={});var n=t.type,a=t.payload;if(n===r.pingSuccess.type){var c=a.roundtrip,s=e.roundtripAvg||c,l=Math.round(.4*s+.6*c);return{roundtrip:c,roundtripAvg:l,failCount:0,networkQuality:1-(0,o.scale)(l,i.PING_ROUNDTRIP_BEST,i.PING_ROUNDTRIP_WORST)}}if(n===r.pingFail.type){var u=e.failCount,d=void 0===u?0:u,g=(0,o.clamp01)(e.networkQuality-d/i.PING_MAX_FAILS),p=Object.assign({},e,{failCount:d+1,networkQuality:g});return d>i.PING_MAX_FAILS&&(p.roundtrip=undefined,p.roundtripAvg=undefined),p}return e}},698:function(e,t,n){"use strict";t.__esModule=!0,t.telemetryMiddleware=void 0;var o=n(2),r=n(102);function i(e,t,n,o,r,i,a){try{var c=e[i](a),s=c.value}catch(l){return void n(l)}c.done?t(s):Promise.resolve(s).then(o,r)}var a=(0,n(25).createLogger)("telemetry");t.telemetryMiddleware=function(e){var t,n;return function(c){return function(s){var l,u=s.type,d=s.payload;if("telemetry/request"!==u)return"backend/update"===u?(c(s),void(l=regeneratorRuntime.mark((function h(){var o,i,c,s;return regeneratorRuntime.wrap((function(l){for(;;)switch(l.prev=l.next){case 0:if(i=null==d||null==(o=d.config)?void 0:o.client){l.next=4;break}return a.error("backend/update payload is missing client data!"),l.abrupt("return");case 4:if(t){l.next=13;break}return l.next=7,r.storage.get("telemetry");case 7:if(l.t0=l.sent,l.t0){l.next=10;break}l.t0={};case 10:(t=l.t0).connections||(t.connections=[]),a.debug("retrieved telemetry from storage",t);case 13:c=!1,t.connections.find((function(e){return n=i,(t=e).ckey===n.ckey&&t.address===n.address&&t.computer_id===n.computer_id;var t,n}))||(c=!0,t.connections.unshift(i),t.connections.length>10&&t.connections.pop()),c&&(a.debug("saving telemetry to storage",t),r.storage.set("telemetry",t)),n&&(s=n,n=null,e.dispatch({type:"telemetry/request",payload:s}));case 18:case"end":return l.stop()}}),h)})),function(){var e=this,t=arguments;return new Promise((function(n,o){var r=l.apply(e,t);function a(e){i(r,n,o,a,c,"next",e)}function c(e){i(r,n,o,a,c,"throw",e)}a(undefined)}))})()):c(s);if(!t)return a.debug("deferred"),void(n=d);a.debug("sending");var g=(null==d?void 0:d.limits)||{},p=t.connections.slice(0,g.connections);(0,o.sendMessage)({type:"telemetry",payload:{connections:p}})}}}},699:function(e,t,n){"use strict";t.__esModule=!0,t.Panel=void 0;var o=n(0),r=n(1),i=n(3),a=n(211),c=n(145),s=n(216),l=n(700),u=n(219),d=n(144);t.Panel=function(e,t){if(Byond.IS_LTE_IE10)return(0,o.createComponentVNode)(2,g);var n=(0,a.useAudio)(t),p=(0,d.useSettings)(t),h=(0,s.useGame)(t);return(0,o.createComponentVNode)(2,i.Pane,{theme:"default"===p.theme?"light":p.theme,children:(0,o.createComponentVNode)(2,r.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Section,{fitted:!0,children:(0,o.createComponentVNode)(2,r.Flex,{mx:.5,align:"center",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{mx:.5,grow:1,overflowX:"auto",children:(0,o.createComponentVNode)(2,c.ChatTabs)}),(0,o.createComponentVNode)(2,r.Flex.Item,{mx:.5,children:(0,o.createComponentVNode)(2,u.PingIndicator)}),(0,o.createComponentVNode)(2,r.Flex.Item,{mx:.5,children:(0,o.createComponentVNode)(2,r.Button,{color:"grey",selected:n.visible,icon:"music",tooltip:"Music player",tooltipPosition:"bottom-left",onClick:function(){return n.toggle()}})}),(0,o.createComponentVNode)(2,r.Flex.Item,{mx:.5,children:(0,o.createComponentVNode)(2,r.Button,{icon:p.visible?"times":"cog",selected:p.visible,tooltip:p.visible?"Close settings":"Open settings",tooltipPosition:"bottom-left",onClick:function(){return p.toggle()}})})]})})}),n.visible&&(0,o.createComponentVNode)(2,r.Flex.Item,{mt:1,children:(0,o.createComponentVNode)(2,r.Section,{children:(0,o.createComponentVNode)(2,a.NowPlayingWidget)})}),p.visible&&(0,o.createComponentVNode)(2,r.Flex.Item,{mt:1,children:(0,o.createComponentVNode)(2,d.SettingsPanel)}),(0,o.createComponentVNode)(2,r.Flex.Item,{mt:1,grow:1,children:(0,o.createComponentVNode)(2,r.Section,{fill:!0,fitted:!0,position:"relative",children:[(0,o.createComponentVNode)(2,i.Pane.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.ChatPanel,{lineHeight:p.lineHeight})}),(0,o.createComponentVNode)(2,l.Notifications,{children:[h.connectionLostAt&&(0,o.createComponentVNode)(2,l.Notifications.Item,{rightSlot:(0,o.createComponentVNode)(2,r.Button,{color:"white",onClick:function(){return Byond.command(".reconnect")},children:"Reconnect"}),children:"You are either AFK, experiencing lag or the connection has closed."}),h.roundRestartedAt&&(0,o.createComponentVNode)(2,l.Notifications.Item,{children:"The connection has been closed because the server is restarting. Please wait while you automatically reconnect."})]})]})})]})})};var g=function(e,t){var n=(0,d.useSettings)(t);return(0,o.createComponentVNode)(2,i.Pane,{theme:"default"===n.theme?"light":n.theme,children:(0,o.createComponentVNode)(2,i.Pane.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,r.Button,{style:{position:"fixed",top:"1em",right:"2em","z-index":1e3},selected:n.visible,onClick:function(){return n.toggle()},children:"Settings"}),n.visible&&(0,o.createComponentVNode)(2,r.Flex.Item,{mt:1,children:(0,o.createComponentVNode)(2,d.SettingsPanel)})||(0,o.createComponentVNode)(2,c.ChatPanel,{lineHeight:n.lineHeight})]})})}},700:function(e,t,n){"use strict";t.__esModule=!0,t.Notifications=void 0;var o=n(0),r=n(1),i=function(e){var t=e.children;return(0,o.createVNode)(1,"div","Notifications",t,0)};t.Notifications=i;i.Item=function(e){var t=e.rightSlot,n=e.children;return(0,o.createComponentVNode)(2,r.Flex,{align:"center",className:"Notification",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{className:"Notification__content",grow:1,children:n}),t&&(0,o.createComponentVNode)(2,r.Flex.Item,{className:"Notification__rightSlot",children:t})]})}},79:function(e,t,n){"use strict";t.__esModule=!0,t.saveChatToDisk=t.changeScrollTracking=t.removeChatPage=t.toggleAcceptedType=t.updateChatPage=t.changeChatPage=t.addChatPage=t.updateMessageCount=t.rebuildChat=t.loadChat=void 0;var o=n(22),r=n(106),i=(0,o.createAction)("chat/load");t.loadChat=i;var a=(0,o.createAction)("chat/rebuild");t.rebuildChat=a;var c=(0,o.createAction)("chat/updateMessageCount");t.updateMessageCount=c;var s=(0,o.createAction)("chat/addPage",(function(){return{payload:(0,r.createPage)()}}));t.addChatPage=s;var l=(0,o.createAction)("chat/changePage");t.changeChatPage=l;var u=(0,o.createAction)("chat/updatePage");t.updateChatPage=u;var d=(0,o.createAction)("chat/toggleAcceptedType");t.toggleAcceptedType=d;var g=(0,o.createAction)("chat/removePage");t.removeChatPage=g;var p=(0,o.createAction)("chat/changeScrollTracking");t.changeScrollTracking=p;var h=(0,o.createAction)("chat/saveToDisk");t.saveChatToDisk=h}}); \ No newline at end of file +!function(e){function t(t){for(var o,a,c=t[0],s=t[1],l=t[2],d=0,g=[];d=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=a.IMAGE_RETRY_LIMIT)d.error("failed to load an image after "+n+" attempts");else{var o=t.src;t.src=null,t.src=o+"#"+n,t.setAttribute("data-reload-n",n+1)}}),a.IMAGE_RETRY_DELAY)},m=function(e){var t=e.node,n=e.times;if(t&&n){var o=t.querySelector(".Chat__badge"),i=o||document.createElement("div");i.textContent=n,i.className=(0,r.classes)(["Chat__badge","Chat__badge--animate"]),requestAnimationFrame((function(){i.className="Chat__badge"})),o||t.appendChild(i)}},v=function(){function t(){var e=this;this.loaded=!1,this.rootNode=null,this.queue=[],this.messages=[],this.visibleMessages=[],this.page=null,this.events=new o.EventEmitter,this.scrollNode=null,this.scrollTracking=!0,this.handleScroll=function(t){var n=e.scrollNode,o=n.scrollHeight,r=n.scrollTop+n.offsetHeight,i=Math.abs(o-r)<24;i!==e.scrollTracking&&(e.scrollTracking=i,e.events.emit("scrollTrackingChanged",i),d.debug("tracking",e.scrollTracking))},this.ensureScrollTracking=function(){e.scrollTracking&&e.scrollToBottom()},setInterval((function(){return e.pruneMessages()}),a.MESSAGE_PRUNE_INTERVAL)}var n=t.prototype;return n.isReady=function(){return this.loaded&&this.rootNode&&this.page},n.mount=function(t){var n=this;this.rootNode?t.appendChild(this.rootNode):this.rootNode=t,this.scrollNode=function(e){for(var t=document.body,n=e;n&&n!==t;){if(n.scrollWidth0&&(this.processBatch(this.queue),this.queue=[])},n.assignStyle=function(e){void 0===e&&(e={});for(var t=0,n=Object.keys(e);t1&&n.test(e)}));if(0===o.length)return this.highlightRegex=null,void(this.highlightColor=null);this.highlightRegex=new RegExp("("+o.join("|")+")","gi"),this.highlightColor=t},n.scrollToBottom=function(){this.scrollNode.scrollTop=this.scrollNode.scrollHeight},n.changePage=function(e){if(!this.isReady())return this.page=e,void this.tryFlushQueue();this.page=e,this.rootNode.textContent="",this.visibleMessages=[];for(var t,n,o=document.createDocumentFragment(),r=l(this.messages);!(n=r()).done;){var i=n.value;(0,c.canPageAcceptType)(e,i.type)&&(t=i.node,o.appendChild(t),this.visibleMessages.push(i))}t&&(this.rootNode.appendChild(o),t.scrollIntoView())},n.getCombinableMessage=function(e){for(var t=Date.now(),n=this.visibleMessages.length,o=n-1,r=Math.max(0,n-a.COMBINE_MAX_MESSAGES),i=o;i>=r;i--){var s=this.visibleMessages[i];if(!s.type.startsWith(a.MESSAGE_TYPE_INTERNAL)&&(0,c.isSameMessage)(s,e)&&t0){this.visibleMessages=e.slice(t);for(var n=0;n0&&(this.messages=this.messages.slice(r),d.log("pruned "+r+" stored messages"))}else d.debug("pruning delayed")},n.rebuildChat=function(){if(this.isReady()){for(var e,t=Math.max(0,this.messages.length-a.MAX_PERSISTED_MESSAGES),n=this.messages.slice(t),o=l(n);!(e=o()).done;)e.value.node=undefined;this.rootNode.textContent="",this.messages=[],this.visibleMessages=[],this.processBatch(n,{notifyListeners:!1})}},n.saveToDisk=function(){if(!Byond.IS_LTE_IE10){for(var e="",t=document.styleSheets,n=0;n\n\n\nSS13 Chat Log\n\n\n\n
    \n'+a+"
    \n\n\n"]),d=(new Date).toISOString().substring(0,19).replace(/[-:]/g,"").replace("T","-");window.navigator.msSaveBlob(u,"ss13-chatlog-"+d+".html")}},t}();window.__chatRenderer__||(window.__chatRenderer__=new v);var E=window.__chatRenderer__;t.chatRenderer=E}).call(this,n(102).setImmediate)},217:function(e,t,n){"use strict";t.__esModule=!0,t.gameReducer=t.gameMiddleware=t.useGame=void 0;var o=n(688);t.useGame=o.useGame;var r=n(689);t.gameMiddleware=r.gameMiddleware;var i=n(691);t.gameReducer=i.gameReducer},218:function(e,t,n){"use strict";t.__esModule=!0,t.selectGame=void 0;t.selectGame=function(e){return e.game}},219:function(e,t,n){"use strict";t.__esModule=!0,t.connectionRestored=t.connectionLost=t.roundRestarted=void 0;var o=n(22),r=(0,o.createAction)("roundrestart");t.roundRestarted=r;var i=(0,o.createAction)("game/connectionLost");t.connectionLost=i;var a=(0,o.createAction)("game/connectionRestored");t.connectionRestored=a},220:function(e,t,n){"use strict";t.__esModule=!0,t.pingReducer=t.PingIndicator=t.pingMiddleware=void 0;var o=n(693);t.pingMiddleware=o.pingMiddleware;var r=n(694);t.PingIndicator=r.PingIndicator;var i=n(697);t.pingReducer=i.pingReducer},221:function(e,t,n){"use strict";t.__esModule=!0,t.PING_ROUNDTRIP_WORST=t.PING_ROUNDTRIP_BEST=t.PING_QUEUE_SIZE=t.PING_MAX_FAILS=t.PING_TIMEOUT=t.PING_INTERVAL=void 0;t.PING_INTERVAL=2500;t.PING_TIMEOUT=2e3;t.PING_MAX_FAILS=3;t.PING_QUEUE_SIZE=8;t.PING_ROUNDTRIP_BEST=50;t.PING_ROUNDTRIP_WORST=200},65:function(e,t,n){"use strict";t.__esModule=!0,t.openChatSettings=t.toggleSettings=t.changeSettingsTab=t.loadSettings=t.updateSettings=void 0;var o=n(22),r=(0,o.createAction)("settings/update");t.updateSettings=r;var i=(0,o.createAction)("settings/load");t.loadSettings=i;var a=(0,o.createAction)("settings/changeTab");t.changeSettingsTab=a;var c=(0,o.createAction)("settings/toggle");t.toggleSettings=c;var s=(0,o.createAction)("settings/openChatTab");t.openChatSettings=s},669:function(e,t,n){n(148),e.exports=n(670)},670:function(e,t,n){"use strict";var o=n(0);n(671),n(672);var r,i,a=n(100),c=n(22),s=(n(101),n(57)),l=n(186),u=n(136),d=n(187),g=n(212),p=n(145),h=n(217),f=n(692),m=n(220),v=n(144),E=n(698);function y(e,t,n,o,r,i,a){try{var c=e[i](a),s=c.value}catch(l){return void n(l)}c.done?t(s):Promise.resolve(s).then(o,r)}a.perf.mark("inception",null==(r=window.performance)||null==(i=r.timing)?void 0:i.navigationStart),a.perf.mark("init");var b=(0,d.configureStore)({reducer:(0,c.combineReducers)({audio:g.audioReducer,chat:p.chatReducer,game:h.gameReducer,ping:m.pingReducer,settings:v.settingsReducer}),middleware:{pre:[p.chatMiddleware,m.pingMiddleware,E.telemetryMiddleware,v.settingsMiddleware,g.audioMiddleware,h.gameMiddleware]}}),S=(0,u.createRenderer)((function(){var e=n(699).Panel;return(0,o.createComponentVNode)(2,d.StoreProvider,{store:b,children:(0,o.createComponentVNode)(2,e)})})),_=function(){var e,t=(e=regeneratorRuntime.mark((function n(e){var t;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return void 0===e&&(e="output"),n.next=3,Byond.winget(e);case 3:t=n.sent,Byond.winset("browseroutput",{size:t.size});case 5:case"end":return n.stop()}}),n)})),function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){y(i,o,r,a,c,"next",e)}function c(e){y(i,o,r,a,c,"throw",e)}a(undefined)}))});return function(e){return t.apply(this,arguments)}}();!function C(){if("loading"!==document.readyState){for((0,s.setupGlobalEvents)({ignoreWindowFocus:!0}),(0,f.setupPanelFocusHacks)(),(0,l.captureExternalLinks)(),b.subscribe(S),window.update=function(e){return b.dispatch(Byond.parseJson(e))};;){var e=window.__updateQueue__.shift();if(!e)break;window.update(e)}Byond.winset("output",{"is-visible":!1}),Byond.winset("browseroutput",{"is-visible":!0,"is-disabled":!1,pos:"0x0",size:"0x0"}),_()}else document.addEventListener("DOMContentLoaded",C)}()},671:function(e,t,n){},672:function(e,t,n){},673:function(e,t,n){"use strict";t.__esModule=!0,t.useAudio=void 0;var o=n(22),r=n(213);t.useAudio=function(e){var t=(0,o.useSelector)(e,r.selectAudio),n=(0,o.useDispatch)(e);return Object.assign({},t,{toggle:function(){return n({type:"audio/toggle"})}})}},674:function(e,t,n){"use strict";t.__esModule=!0,t.audioMiddleware=void 0;var o=n(675);t.audioMiddleware=function(e){var t=new o.AudioPlayer;return t.onPlay((function(){e.dispatch({type:"audio/playing"})})),t.onStop((function(){e.dispatch({type:"audio/stopped"})})),function(e){return function(n){var o=n.type,r=n.payload;if("audio/playMusic"===o){var i=r.url,a=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(r,["url"]);return t.play(i,a),e(n)}if("audio/stopMusic"===o)return t.stop(),e(n);if("settings/update"===o||"settings/load"===o){var c=null==r?void 0:r.adminMusicVolume;return"number"==typeof c&&t.setVolume(c),e(n)}return e(n)}}}},675:function(e,t,n){"use strict";function o(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&e.node.currentTime>=e.options.end&&e.stop())}),1e3))}var t=e.prototype;return t.destroy=function(){this.node&&(this.node.stop(),document.removeChild(this.node),clearInterval(this.playbackInterval))},t.play=function(e,t){void 0===t&&(t={}),this.node&&(i.log("playing",e,t),this.options=t,this.node.src=e)},t.stop=function(){if(this.node){if(this.playing)for(var e,t=o(this.onStopSubscribers);!(e=t()).done;)(0,e.value)();i.log("stopping"),this.playing=!1,this.node.src=""}},t.setVolume=function(e){this.node&&(this.volume=e,this.node.volume=e)},t.onPlay=function(e){this.node&&this.onPlaySubscribers.push(e)},t.onStop=function(e){this.node&&this.onStopSubscribers.push(e)},e}();t.AudioPlayer=a},676:function(e,t,n){"use strict";t.__esModule=!0,t.NowPlayingWidget=void 0;var o=n(0),r=n(9),i=n(22),a=n(1),c=n(144),s=n(213);t.NowPlayingWidget=function(e,t){var n,l=(0,i.useSelector)(t,s.selectAudio),u=(0,i.useDispatch)(t),d=(0,c.useSettings)(t),g=null==(n=l.meta)?void 0:n.title;return(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[l.playing&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:0,mx:.5,color:"label",children:"Now playing:"}),(0,o.createComponentVNode)(2,a.Flex.Item,{mx:.5,grow:1,style:{"white-space":"nowrap",overflow:"hidden","text-overflow":"ellipsis"},children:g||"Unknown Track"})],4)||(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,color:"label",children:"Nothing to play."}),l.playing&&(0,o.createComponentVNode)(2,a.Flex.Item,{mx:.5,fontSize:"0.9em",children:(0,o.createComponentVNode)(2,a.Button,{tooltip:"Stop",icon:"stop",onClick:function(){return u({type:"audio/stopMusic"})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mx:.5,fontSize:"0.9em",children:(0,o.createComponentVNode)(2,a.Knob,{minValue:0,maxValue:1,value:d.adminMusicVolume,step:.0025,stepPixelSize:1,format:function(e){return(0,r.toFixed)(100*e)+"%"},onDrag:function(e,t){return d.update({adminMusicVolume:t})}})})]})}},677:function(e,t,n){"use strict";t.__esModule=!0,t.useSettings=void 0;var o=n(22),r=n(65),i=n(105);t.useSettings=function(e){var t=(0,o.useSelector)(e,i.selectSettings),n=(0,o.useDispatch)(e);return Object.assign({},t,{visible:t.view.visible,toggle:function(){return n((0,r.toggleSettings)())},update:function(e){return n((0,r.updateSettings)(e))}})}},678:function(e,t,n){"use strict";t.__esModule=!0,t.settingsMiddleware=void 0;var o=n(79),r=n(214),i=n(65),a=n(105);t.settingsMiddleware=function(e){var t=!1;return function(n){return function(c){var s,l=c.type,u=c.payload;if(t||(t=!0,o.storage.get("panel-settings").then((function(t){e.dispatch((0,i.loadSettings)(t))}))),l===i.updateSettings.type||l===i.loadSettings.type){var d=null==u?void 0:u.theme;d&&(0,r.setClientTheme)(d),n(c);var g=(0,a.selectSettings)(e.getState());return s=g.fontSize,document.documentElement.style.setProperty("font-size",s+"px"),document.body.style.setProperty("font-size",s+"px"),void o.storage.set("panel-settings",g)}return n(c)}}}},679:function(e,t,n){"use strict";t.__esModule=!0,t.settingsReducer=void 0;var o=n(65),r={version:1,fontSize:13,lineHeight:1.2,theme:"default",adminMusicVolume:.5,highlightText:"",highlightColor:"#ffdd44",view:{visible:!1,activeTab:n(215).SETTINGS_TABS[0].id}};t.settingsReducer=function(e,t){void 0===e&&(e=r);var n=t.type,i=t.payload;if(n===o.updateSettings.type)return Object.assign({},e,i);if(n===o.loadSettings.type)return(null==i?void 0:i.version)?(delete i.view,Object.assign({},e,i)):e;if(n===o.toggleSettings.type)return Object.assign({},e,{view:Object.assign({},e.view,{visible:!e.view.visible})});if(n===o.openChatSettings.type)return Object.assign({},e,{view:Object.assign({},e.view,{visible:!0,activeTab:"chatPage"})});if(n===o.changeSettingsTab.type){var a=i.tabId;return Object.assign({},e,{view:Object.assign({},e.view,{activeTab:a})})}return e}},680:function(e,t,n){"use strict";t.__esModule=!0,t.SettingsGeneral=t.SettingsPanel=void 0;var o=n(0),r=n(9),i=n(22),a=n(1),c=n(145),s=n(80),l=n(214),u=n(65),d=n(215),g=n(105);t.SettingsPanel=function(e,t){var n=(0,i.useSelector)(t,g.selectActiveTab),r=(0,i.useDispatch)(t);return(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:1,children:(0,o.createComponentVNode)(2,a.Section,{fitted:!0,fill:!0,minHeight:"8em",children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:d.SETTINGS_TABS.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:e.id===n,onClick:function(){return r((0,u.changeSettingsTab)({tabId:e.id}))},children:e.name},e.id)}))})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:["general"===n&&(0,o.createComponentVNode)(2,p),"chatPage"===n&&(0,o.createComponentVNode)(2,c.ChatPageSettings)]})]})};var p=function(e,t){var n=(0,i.useSelector)(t,g.selectSettings),c=n.theme,d=n.fontSize,p=n.lineHeight,h=n.highlightText,f=n.highlightColor,m=(0,i.useDispatch)(t);return(0,o.createComponentVNode)(2,a.Section,{fill:!0,children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Theme",children:(0,o.createComponentVNode)(2,a.Dropdown,{selected:c,options:l.THEMES,onSelected:function(e){return m((0,u.updateSettings)({theme:e}))}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Font size",children:(0,o.createComponentVNode)(2,a.NumberInput,{width:"4em",step:1,stepPixelSize:10,minValue:8,maxValue:32,value:d,unit:"px",format:function(e){return(0,r.toFixed)(e)},onChange:function(e,t){return m((0,u.updateSettings)({fontSize:t}))}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Line height",children:(0,o.createComponentVNode)(2,a.NumberInput,{width:"4em",step:.01,stepPixelSize:2,minValue:.8,maxValue:5,value:p,format:function(e){return(0,r.toFixed)(e,2)},onDrag:function(e,t){return m((0,u.updateSettings)({lineHeight:t}))}})})]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Flex,{mb:1,color:"label",align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:"Highlight words (comma separated):"}),(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:0,children:[(0,o.createComponentVNode)(2,a.ColorBox,{mr:1,color:f}),(0,o.createComponentVNode)(2,a.Input,{width:"5em",monospace:!0,placeholder:"#ffffff",value:f,onInput:function(e,t){return m((0,u.updateSettings)({highlightColor:t}))}})]})]}),(0,o.createComponentVNode)(2,a.TextArea,{height:"3em",value:h,onChange:function(e,t){return m((0,u.updateSettings)({highlightText:t}))}})]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"check",onClick:function(){return m((0,s.rebuildChat)())},children:"Apply now"}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,fontSize:"0.9em",ml:1,color:"label",children:"Can freeze the chat for a while."})]}),(0,o.createComponentVNode)(2,a.Divider),(0,o.createComponentVNode)(2,a.Button,{icon:"save",onClick:function(){return m((0,s.saveChatToDisk)())},children:"Save chat log"})]})};t.SettingsGeneral=p},681:function(e,t,n){"use strict";t.__esModule=!0,t.ChatPageSettings=void 0;var o=n(0),r=n(22),i=n(1),a=n(80),c=n(107),s=n(146);t.ChatPageSettings=function(e,t){var n=(0,r.useSelector)(t,s.selectCurrentChatPage),l=(0,r.useDispatch)(t);return(0,o.createComponentVNode)(2,i.Section,{fill:!0,children:[(0,o.createComponentVNode)(2,i.Flex,{mx:-.5,align:"center",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{mx:.5,grow:1,children:(0,o.createComponentVNode)(2,i.Input,{fluid:!0,value:n.name,onChange:function(e,t){return l((0,a.updateChatPage)({pageId:n.id,name:t}))}})}),(0,o.createComponentVNode)(2,i.Flex.Item,{mx:.5,children:(0,o.createComponentVNode)(2,i.Button,{icon:"times",color:"red",onClick:function(){return l((0,a.removeChatPage)({pageId:n.id}))},children:"Remove"})})]}),(0,o.createComponentVNode)(2,i.Divider),(0,o.createComponentVNode)(2,i.Section,{title:"Messages to display",level:2,children:[c.MESSAGE_TYPES.filter((function(e){return!e.important&&!e.admin})).map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:n.acceptedTypes[e.type],onClick:function(){return l((0,a.toggleAcceptedType)({pageId:n.id,type:e.type}))},children:e.name},e.type)})),(0,o.createComponentVNode)(2,i.Collapsible,{mt:1,color:"transparent",title:"Admin stuff",children:c.MESSAGE_TYPES.filter((function(e){return!e.important&&e.admin})).map((function(e){return(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:n.acceptedTypes[e.type],onClick:function(){return l((0,a.toggleAcceptedType)({pageId:n.id,type:e.type}))},children:e.name},e.type)}))})]})]})}},682:function(e,t,n){"use strict";t.__esModule=!0,t.ChatPanel=void 0;var o=n(0),r=n(6),i=n(1),a=n(216);var c=function(e){var t,n;function c(){var t;return(t=e.call(this)||this).ref=(0,o.createRef)(),t.state={scrollTracking:!0},t.handleScrollTrackingChange=function(e){return t.setState({scrollTracking:e})},t}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var s=c.prototype;return s.componentDidMount=function(){a.chatRenderer.mount(this.ref.current),a.chatRenderer.events.on("scrollTrackingChanged",this.handleScrollTrackingChange),this.componentDidUpdate()},s.componentWillUnmount=function(){a.chatRenderer.events.off("scrollTrackingChanged",this.handleScrollTrackingChange)},s.componentDidUpdate=function(e){requestAnimationFrame((function(){a.chatRenderer.ensureScrollTracking()})),(!e||(0,r.shallowDiffers)(this.props,e))&&a.chatRenderer.assignStyle({width:"100%","white-space":"pre-wrap","font-size":this.props.fontSize,"line-height":this.props.lineHeight})},s.render=function(){var e=this.state.scrollTracking;return(0,o.createFragment)([(0,o.createVNode)(1,"div","Chat",null,1,null,null,this.ref),!e&&(0,o.createComponentVNode)(2,i.Button,{className:"Chat__scrollButton",icon:"arrow-down",onClick:function(){return a.chatRenderer.scrollToBottom()},children:"Scroll to bottom"})],0)},c}(o.Component);t.ChatPanel=c},683:function(e,t,n){"use strict";t.__esModule=!0,t.linkifyNode=t.highlightNode=t.replaceInTextNode=void 0;var o=function(e,t){return function(n){for(var o,r,i=n.textContent,a=i.length,c=0,s=0;o=e.exec(i);){s+=1,r||(r=document.createDocumentFragment());var l=o[0],u=l.length,d=o.index;c0&&(0,o.createComponentVNode)(2,l,{value:e.unreadCount}),onClick:function(){return d((0,a.changeChatPage)({pageId:e.id}))},children:e.name},e.id)}))})}),(0,o.createComponentVNode)(2,i.Flex.Item,{ml:1,children:(0,o.createComponentVNode)(2,i.Button,{color:"transparent",icon:"plus",onClick:function(){d((0,a.addChatPage)()),d((0,s.openChatSettings)())}})})]})}},685:function(e,t,n){"use strict";t.__esModule=!0,t.chatMiddleware=void 0;var o=n(79),r=n(65),i=n(105),a=n(80),c=n(107),s=n(106),l=n(216),u=n(146);n(25);function d(e,t,n,o,r,i,a){try{var c=e[i](a),s=c.value}catch(l){return void n(l)}c.done?t(s):Promise.resolve(s).then(o,r)}function g(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var i=e.apply(t,n);function a(e){d(i,o,r,a,c,"next",e)}function c(e){d(i,o,r,a,c,"throw",e)}a(undefined)}))}}var p=function(){var e=g(regeneratorRuntime.mark((function t(e){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=(0,u.selectChat)(e.getState()),r=Math.max(0,l.chatRenderer.messages.length-c.MAX_PERSISTED_MESSAGES),i=l.chatRenderer.messages.slice(r).map((function(e){return(0,s.serializeMessage)(e)})),o.storage.set("chat-state",n),o.storage.set("chat-messages",i);case 5:case"end":return t.stop()}}),t)})));return function(t){return e.apply(this,arguments)}}(),h=function(){var e=g(regeneratorRuntime.mark((function t(e){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Promise.all([o.storage.get("chat-state"),o.storage.get("chat-messages")]);case 2:if(n=t.sent,r=n[0],i=n[1],!(r&&r.version<=4)){t.next=8;break}return e.dispatch((0,a.loadChat)()),t.abrupt("return");case 8:i&&(c=[].concat(i,[(0,s.createMessage)({type:"internal/reconnected"})]),l.chatRenderer.processBatch(c,{prepend:!0})),e.dispatch((0,a.loadChat)(r));case 10:case"end":return t.stop()}}),t)})));return function(t){return e.apply(this,arguments)}}();t.chatMiddleware=function(e){var t=!1,n=!1;return l.chatRenderer.events.on("batchProcessed",(function(t){n&&e.dispatch((0,a.updateMessageCount)(t))})),l.chatRenderer.events.on("scrollTrackingChanged",(function(t){e.dispatch((0,a.changeScrollTracking)(t))})),setInterval((function(){return p(e)}),c.MESSAGE_SAVE_INTERVAL),function(o){return function(c){var s=c.type,d=c.payload;if(t||(t=!0,h(e)),"chat/message"!==s){if(s===a.loadChat.type){o(c);var g=(0,u.selectCurrentChatPage)(e.getState());return l.chatRenderer.changePage(g),l.chatRenderer.onStateLoaded(),void(n=!0)}if(s!==a.changeChatPage.type&&s!==a.addChatPage.type&&s!==a.removeChatPage.type&&s!==a.toggleAcceptedType.type){if(s===a.rebuildChat.type)return l.chatRenderer.rebuildChat(),o(c);if(s!==r.updateSettings.type&&s!==r.loadSettings.type){if("roundrestart"===s)return p(e),o(c);if(s!==a.saveChatToDisk.type)return o(c);l.chatRenderer.saveToDisk()}else{o(c);var f=(0,i.selectSettings)(e.getState());l.chatRenderer.setHighlight(f.highlightText,f.highlightColor)}}else{o(c);var m=(0,u.selectCurrentChatPage)(e.getState());l.chatRenderer.changePage(m)}}else{var v=Array.isArray(d)?d:[d];l.chatRenderer.processBatch(v)}}}}},686:function(e,t,n){"use strict";t.__esModule=!0,t.chatReducer=t.initialState=void 0;var o,r=n(80),i=n(106);function a(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&(_[A.id]=Object.assign({},A,{unreadCount:A.unreadCount+M}))}return Object.assign({},e,{pageById:_})}if(o===r.addChatPage.type)return Object.assign({},e,{currentPageId:c.id,pages:[].concat(e.pages,[c.id]),pageById:Object.assign({},e.pageById,(n={},n[c.id]=c,n))});if(o===r.changeChatPage.type){var I,P=c.pageId,x=Object.assign({},e.pageById[P],{unreadCount:0});return Object.assign({},e,{currentPageId:P,pageById:Object.assign({},e.pageById,(I={},I[P]=x,I))})}if(o===r.updateChatPage.type){var k,R=c.pageId,O=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(c,["pageId"]),V=Object.assign({},e.pageById[R],O);return Object.assign({},e,{pageById:Object.assign({},e.pageById,(k={},k[R]=V,k))})}if(o===r.toggleAcceptedType.type){var G,B=c.pageId,L=c.type,D=Object.assign({},e.pageById[B]);return D.acceptedTypes=Object.assign({},D.acceptedTypes),D.acceptedTypes[L]=!D.acceptedTypes[L],Object.assign({},e,{pageById:Object.assign({},e.pageById,(G={},G[B]=D,G))})}if(o===r.removeChatPage.type){var F=c.pageId,j=Object.assign({},e,{pages:[].concat(e.pages),pageById:Object.assign({},e.pageById)});return delete j.pageById[F],j.pages=j.pages.filter((function(e){return e!==F})),0===j.pages.length&&(j.pages.push(s.id),j.pageById[s.id]=s,j.currentPageId=s.id),j.currentPageId&&j.currentPageId!==F||(j.currentPageId=j.pages[0]),j}return e}},687:function(e,t,n){"use strict";t.__esModule=!0,t.audioReducer=void 0;var o={visible:!1,playing:!1,track:null};t.audioReducer=function(e,t){void 0===e&&(e=o);var n=t.type,r=t.payload;return"audio/playing"===n?Object.assign({},e,{visible:!0,playing:!0}):"audio/stopped"===n?Object.assign({},e,{visible:!1,playing:!1}):"audio/playMusic"===n?Object.assign({},e,{meta:r}):"audio/stopMusic"===n?Object.assign({},e,{visible:!1,playing:!1,meta:null}):"audio/toggle"===n?Object.assign({},e,{visible:!e.visible}):e}},688:function(e,t,n){"use strict";t.__esModule=!0,t.useGame=void 0;var o=n(22),r=n(218);t.useGame=function(e){return(0,o.useSelector)(e,r.selectGame)}},689:function(e,t,n){"use strict";t.__esModule=!0,t.gameMiddleware=void 0;var o=n(147),r=n(219),i=n(218),a=n(690),c=function(e){return Object.assign({},e,{meta:Object.assign({},e.meta,{now:Date.now()})})};t.gameMiddleware=function(e){var t;return setInterval((function(){var n=e.getState();if(n){var o=(0,i.selectGame)(n),s=t&&Date.now()>=t+a.CONNECTION_LOST_AFTER;!o.connectionLostAt&&s&&e.dispatch(c((0,r.connectionLost)())),o.connectionLostAt&&!s&&e.dispatch(c((0,r.connectionRestored)()))}}),1e3),function(e){return function(n){var i=n.type,a=(n.payload,n.meta);return i===o.pingSuccess.type?(t=a.now,e(n)):i===r.roundRestarted.type?e(c(n)):e(n)}}}},690:function(e,t,n){"use strict";t.__esModule=!0,t.CONNECTION_LOST_AFTER=void 0;t.CONNECTION_LOST_AFTER=15e3},691:function(e,t,n){"use strict";t.__esModule=!0,t.gameReducer=void 0;var o=n(219),r={roundId:null,roundTime:null,roundRestartedAt:null,connectionLostAt:null};t.gameReducer=function(e,t){void 0===e&&(e=r);var n=t.type,i=(t.payload,t.meta);return"roundrestart"===n?Object.assign({},e,{roundRestartedAt:i.now}):n===o.connectionLost.type?Object.assign({},e,{connectionLostAt:i.now}):n===o.connectionRestored.type?Object.assign({},e,{connectionLostAt:null}):e}},692:function(e,t,n){"use strict";(function(e){t.__esModule=!0,t.setupPanelFocusHacks=void 0;var o=n(103),r=n(57),i=n(189),a=function(){return e((function(){return(0,i.focusMap)()}))};t.setupPanelFocusHacks=function(){var e=!1,t=null;window.addEventListener("focusin",(function(t){e=(0,r.canStealFocus)(t.target)})),window.addEventListener("mousedown",(function(e){t=[e.screenX,e.screenY]})),window.addEventListener("mouseup",(function(n){if(t){var r=[n.screenX,n.screenY];(0,o.vecLength)((0,o.vecSubtract)(r,t))>=10&&(e=!0)}e||a()})),r.globalEvents.on("keydown",(function(e){e.isModifierKey()||a()}))}}).call(this,n(102).setImmediate)},693:function(e,t,n){"use strict";t.__esModule=!0,t.pingMiddleware=void 0;var o=n(2),r=n(147),i=n(221);t.pingMiddleware=function(e){var t=!1,n=0,a=[],c=function(){for(var t=0;ti.PING_TIMEOUT&&(a[t]=null,e.dispatch((0,r.pingFail)()))}var s={index:n,sentAt:Date.now()};a[n]=s,(0,o.sendMessage)({type:"ping",payload:{index:n}}),n=(n+1)%i.PING_QUEUE_SIZE};return function(e){return function(n){var o=n.type,s=n.payload;if(t||(t=!0,setInterval(c,i.PING_INTERVAL),c()),"pingReply"===o){var l=s.index,u=a[l];if(!u)return;return a[l]=null,e((0,r.pingSuccess)(u))}return e(n)}}}},694:function(e,t,n){"use strict";t.__esModule=!0,t.PingIndicator=void 0;var o=n(0),r=n(695),i=n(9),a=n(22),c=n(1),s=n(696);t.PingIndicator=function(e,t){var n=(0,a.useSelector)(t,s.selectPing),l=r.Color.lookup(n.networkQuality,[new r.Color(220,40,40),new r.Color(220,200,40),new r.Color(60,220,40)]),u=n.roundtrip?(0,i.toFixed)(n.roundtrip):"--";return(0,o.createVNode)(1,"div","Ping",[(0,o.createComponentVNode)(2,c.Box,{className:"Ping__indicator",backgroundColor:l}),u],0)}},695:function(e,t,n){"use strict";t.__esModule=!0,t.Color=void 0;var o=function(){function e(e,t,n,o){void 0===e&&(e=0),void 0===t&&(t=0),void 0===n&&(n=0),void 0===o&&(o=1),this.r=e,this.g=t,this.b=n,this.a=o}return e.prototype.toString=function(){return"rgba("+(0|this.r)+", "+(0|this.g)+", "+(0|this.b)+", "+(0|this.a)+")"},e}();t.Color=o,o.fromHex=function(e){return new o(parseInt(e.substr(1,2),16),parseInt(e.substr(3,2),16),parseInt(e.substr(5,2),16))},o.lerp=function(e,t,n){return new o((t.r-e.r)*n+e.r,(t.g-e.g)*n+e.g,(t.b-e.b)*n+e.b,(t.a-e.a)*n+e.a)},o.lookup=function(e,t){void 0===t&&(t=[]);var n=t.length;if(n<2)throw new Error("Needs at least two colors!");var r=e*(n-1);if(e<1e-4)return t[0];if(e>=.9999)return t[n-1];var i=r%1,a=0|r;return o.lerp(t[a],t[a+1],i)}},696:function(e,t,n){"use strict";t.__esModule=!0,t.selectPing=void 0;t.selectPing=function(e){return e.ping}},697:function(e,t,n){"use strict";t.__esModule=!0,t.pingReducer=void 0;var o=n(9),r=n(147),i=n(221);t.pingReducer=function(e,t){void 0===e&&(e={});var n=t.type,a=t.payload;if(n===r.pingSuccess.type){var c=a.roundtrip,s=e.roundtripAvg||c,l=Math.round(.4*s+.6*c);return{roundtrip:c,roundtripAvg:l,failCount:0,networkQuality:1-(0,o.scale)(l,i.PING_ROUNDTRIP_BEST,i.PING_ROUNDTRIP_WORST)}}if(n===r.pingFail.type){var u=e.failCount,d=void 0===u?0:u,g=(0,o.clamp01)(e.networkQuality-d/i.PING_MAX_FAILS),p=Object.assign({},e,{failCount:d+1,networkQuality:g});return d>i.PING_MAX_FAILS&&(p.roundtrip=undefined,p.roundtripAvg=undefined),p}return e}},698:function(e,t,n){"use strict";t.__esModule=!0,t.telemetryMiddleware=void 0;var o=n(2),r=n(79);function i(e,t,n,o,r,i,a){try{var c=e[i](a),s=c.value}catch(l){return void n(l)}c.done?t(s):Promise.resolve(s).then(o,r)}var a=(0,n(25).createLogger)("telemetry");t.telemetryMiddleware=function(e){var t,n;return function(c){return function(s){var l,u=s.type,d=s.payload;if("telemetry/request"!==u)return"backend/update"===u?(c(s),void(l=regeneratorRuntime.mark((function h(){var o,i,c,s;return regeneratorRuntime.wrap((function(l){for(;;)switch(l.prev=l.next){case 0:if(i=null==d||null==(o=d.config)?void 0:o.client){l.next=4;break}return a.error("backend/update payload is missing client data!"),l.abrupt("return");case 4:if(t){l.next=13;break}return l.next=7,r.storage.get("telemetry");case 7:if(l.t0=l.sent,l.t0){l.next=10;break}l.t0={};case 10:(t=l.t0).connections||(t.connections=[]),a.debug("retrieved telemetry from storage",t);case 13:c=!1,t.connections.find((function(e){return n=i,(t=e).ckey===n.ckey&&t.address===n.address&&t.computer_id===n.computer_id;var t,n}))||(c=!0,t.connections.unshift(i),t.connections.length>10&&t.connections.pop()),c&&(a.debug("saving telemetry to storage",t),r.storage.set("telemetry",t)),n&&(s=n,n=null,e.dispatch({type:"telemetry/request",payload:s}));case 18:case"end":return l.stop()}}),h)})),function(){var e=this,t=arguments;return new Promise((function(n,o){var r=l.apply(e,t);function a(e){i(r,n,o,a,c,"next",e)}function c(e){i(r,n,o,a,c,"throw",e)}a(undefined)}))})()):c(s);if(!t)return a.debug("deferred"),void(n=d);a.debug("sending");var g=(null==d?void 0:d.limits)||{},p=t.connections.slice(0,g.connections);(0,o.sendMessage)({type:"telemetry",payload:{connections:p}})}}}},699:function(e,t,n){"use strict";t.__esModule=!0,t.Panel=void 0;var o=n(0),r=n(1),i=n(3),a=n(212),c=n(145),s=n(217),l=n(700),u=n(220),d=n(144);t.Panel=function(e,t){if(Byond.IS_LTE_IE10)return(0,o.createComponentVNode)(2,g);var n=(0,a.useAudio)(t),p=(0,d.useSettings)(t),h=(0,s.useGame)(t);return(0,o.createComponentVNode)(2,i.Pane,{theme:"default"===p.theme?"light":p.theme,children:(0,o.createComponentVNode)(2,r.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{children:(0,o.createComponentVNode)(2,r.Section,{fitted:!0,children:(0,o.createComponentVNode)(2,r.Flex,{mx:.5,align:"center",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{mx:.5,grow:1,overflowX:"auto",children:(0,o.createComponentVNode)(2,c.ChatTabs)}),(0,o.createComponentVNode)(2,r.Flex.Item,{mx:.5,children:(0,o.createComponentVNode)(2,u.PingIndicator)}),(0,o.createComponentVNode)(2,r.Flex.Item,{mx:.5,children:(0,o.createComponentVNode)(2,r.Button,{color:"grey",selected:n.visible,icon:"music",tooltip:"Music player",tooltipPosition:"bottom-left",onClick:function(){return n.toggle()}})}),(0,o.createComponentVNode)(2,r.Flex.Item,{mx:.5,children:(0,o.createComponentVNode)(2,r.Button,{icon:p.visible?"times":"cog",selected:p.visible,tooltip:p.visible?"Close settings":"Open settings",tooltipPosition:"bottom-left",onClick:function(){return p.toggle()}})})]})})}),n.visible&&(0,o.createComponentVNode)(2,r.Flex.Item,{mt:1,children:(0,o.createComponentVNode)(2,r.Section,{children:(0,o.createComponentVNode)(2,a.NowPlayingWidget)})}),p.visible&&(0,o.createComponentVNode)(2,r.Flex.Item,{mt:1,children:(0,o.createComponentVNode)(2,d.SettingsPanel)}),(0,o.createComponentVNode)(2,r.Flex.Item,{mt:1,grow:1,children:(0,o.createComponentVNode)(2,r.Section,{fill:!0,fitted:!0,position:"relative",children:[(0,o.createComponentVNode)(2,i.Pane.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.ChatPanel,{lineHeight:p.lineHeight})}),(0,o.createComponentVNode)(2,l.Notifications,{children:[h.connectionLostAt&&(0,o.createComponentVNode)(2,l.Notifications.Item,{rightSlot:(0,o.createComponentVNode)(2,r.Button,{color:"white",onClick:function(){return Byond.command(".reconnect")},children:"Reconnect"}),children:"You are either AFK, experiencing lag or the connection has closed."}),h.roundRestartedAt&&(0,o.createComponentVNode)(2,l.Notifications.Item,{children:"The connection has been closed because the server is restarting. Please wait while you automatically reconnect."})]})]})})]})})};var g=function(e,t){var n=(0,d.useSettings)(t);return(0,o.createComponentVNode)(2,i.Pane,{theme:"default"===n.theme?"light":n.theme,children:(0,o.createComponentVNode)(2,i.Pane.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,r.Button,{style:{position:"fixed",top:"1em",right:"2em","z-index":1e3},selected:n.visible,onClick:function(){return n.toggle()},children:"Settings"}),n.visible&&(0,o.createComponentVNode)(2,r.Flex.Item,{mt:1,children:(0,o.createComponentVNode)(2,d.SettingsPanel)})||(0,o.createComponentVNode)(2,c.ChatPanel,{lineHeight:n.lineHeight})]})})}},700:function(e,t,n){"use strict";t.__esModule=!0,t.Notifications=void 0;var o=n(0),r=n(1),i=function(e){var t=e.children;return(0,o.createVNode)(1,"div","Notifications",t,0)};t.Notifications=i;i.Item=function(e){var t=e.rightSlot,n=e.children;return(0,o.createComponentVNode)(2,r.Flex,{align:"center",className:"Notification",children:[(0,o.createComponentVNode)(2,r.Flex.Item,{className:"Notification__content",grow:1,children:n}),t&&(0,o.createComponentVNode)(2,r.Flex.Item,{className:"Notification__rightSlot",children:t})]})}},80:function(e,t,n){"use strict";t.__esModule=!0,t.saveChatToDisk=t.changeScrollTracking=t.removeChatPage=t.toggleAcceptedType=t.updateChatPage=t.changeChatPage=t.addChatPage=t.updateMessageCount=t.rebuildChat=t.loadChat=void 0;var o=n(22),r=n(106),i=(0,o.createAction)("chat/load");t.loadChat=i;var a=(0,o.createAction)("chat/rebuild");t.rebuildChat=a;var c=(0,o.createAction)("chat/updateMessageCount");t.updateMessageCount=c;var s=(0,o.createAction)("chat/addPage",(function(){return{payload:(0,r.createPage)()}}));t.addChatPage=s;var l=(0,o.createAction)("chat/changePage");t.changeChatPage=l;var u=(0,o.createAction)("chat/updatePage");t.updateChatPage=u;var d=(0,o.createAction)("chat/toggleAcceptedType");t.toggleAcceptedType=d;var g=(0,o.createAction)("chat/removePage");t.removeChatPage=g;var p=(0,o.createAction)("chat/changeScrollTracking");t.changeScrollTracking=p;var h=(0,o.createAction)("chat/saveToDisk");t.saveChatToDisk=h}}); \ No newline at end of file diff --git a/tgui/public/tgui.bundle.js b/tgui/public/tgui.bundle.js index 42aaa3f8f5..26ef3b1f3f 100644 --- a/tgui/public/tgui.bundle.js +++ b/tgui/public/tgui.bundle.js @@ -1 +1 @@ -!function(e){function t(t){for(var o,c,i=t[0],l=t[1],d=t[2],s=0,m=[];s0&&g.flatMap((function(e){return e.items||[]})).filter(L).filter((function(e,t){return t<25}))||(null==(l=g.find((function(e){return e.name===_})))?void 0:l.items)||[];return(0,o.createComponentVNode)(2,c.Section,{title:(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:s>0?"good":"bad",children:[(0,i.formatMoney)(s)," ",p]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,c.Input,{autoFocus:!0,value:k,onInput:function(e,t){return x(t)},mx:1}),(0,o.createComponentVNode)(2,c.Button,{icon:V?"list":"info",content:V?"Compact":"Detailed",onClick:function(){return h("compact_toggle")}}),!!b&&(0,o.createComponentVNode)(2,c.Button,{icon:"lock",content:"Lock",onClick:function(){return h("lock")}})],0),children:(0,o.createComponentVNode)(2,c.Flex,{children:[0===k.length&&(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:g.map((function(e){var t;return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:e.name===_,onClick:function(){return w(e.name)},children:[e.name," (",(null==(t=e.items)?void 0:t.length)||0,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:[0===y.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:0===k.length?"No items in this category.":"No results found."}),(0,o.createComponentVNode)(2,u,{compactMode:k.length>0||V,currencyAmount:s,currencySymbol:p,items:y})]})]})})};t.GenericUplink=d;var u=function(e,t){var n=e.compactMode,l=e.currencyAmount,d=e.currencySymbol,u=(0,a.useBackend)(t).act,s=(0,a.useLocalState)(t,"hoveredItem",{}),m=s[0],p=s[1],C=m&&m.cost||0,h=e.items.map((function(e){var t=m&&m.name!==e.name,n=l-C50?"battery-half":"battery-quarter")||1===t&&"bolt"||2===t&&"battery-full",color:0===t&&(n>50?"yellow":"red")||1===t&&"yellow"||2===t&&"green"}),(0,o.createComponentVNode)(2,d.Box,{inline:!0,width:"36px",textAlign:"right",children:(0,c.toFixed)(n)+"%"})],4)};t.AreaCharge=C,C.defaultHooks=i.pureComponentHooks;var h=function(e){var t=e.status,n=Boolean(2&t),r=Boolean(1&t),a=(n?"On":"Off")+" ["+(r?"auto":"manual")+"]";return(0,o.createComponentVNode)(2,d.ColorBox,{color:n?"good":"bad",content:r?undefined:"M",title:a})};h.defaultHooks=i.pureComponentHooks},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";t.__esModule=!0,t.AiRestorerContent=t.AiRestorer=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.AiRestorer=function(){return(0,o.createComponentVNode)(2,c.Window,{width:370,height:360,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.AI_present,d=i.error,u=i.name,s=i.laws,m=i.isDead,p=i.restoring,C=i.health,h=i.ejectable;return(0,o.createFragment)([d&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:d}),!!h&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:l?u:"----------",disabled:!l,onClick:function(){return c("PRG_eject")}}),!!l&&(0,o.createComponentVNode)(2,a.Section,{title:h?"System Status":u,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:m?"bad":"good",children:m?"Nonfunctional":"Functional"}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:C,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})})}),!!p&&(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"20px",color:"good",mt:1,children:"RECONSTRUCTION IN PROGRESS"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"plus",content:"Begin Reconstruction",disabled:p,mt:1,onClick:function(){return c("PRG_beginReconstruction")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{className:"candystripe",children:e},e)}))})]})],0)};t.AiRestorerContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.AccessList=void 0;var o=n(0),r=n(14),a=n(2),c=n(1);function i(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&"yellow",selected:"requests"===m,onClick:function(){return C("requests")},children:["Requests (",V.length,")"]}),!h&&(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"shopping-cart",textColor:"cart"!==m&&N.length>0&&"yellow",selected:"cart"===m,onClick:function(){return C("cart")},children:["Checkout (",N.length,")"]})]})}),"catalog"===m&&(0,o.createComponentVNode)(2,u),"requests"===m&&(0,o.createComponentVNode)(2,s),"cart"===m&&(0,o.createComponentVNode)(2,p)]})})};var d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.away,u=l.docked,s=l.loan,m=l.loan_dispatched,p=l.location,C=l.message,h=l.points,N=l.requestonly;return(0,o.createComponentVNode)(2,c.Section,{title:"Cargo",buttons:(0,o.createComponentVNode)(2,c.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:h,format:function(e){return(0,i.formatMoney)(e)}})," credits"]}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Shuttle",children:u&&!N&&(0,o.createComponentVNode)(2,c.Button,{content:p,onClick:function(){return r("send")}})||p}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"CentCom Message",children:C}),!!s&&!N&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Loan",children:!m&&(0,o.createComponentVNode)(2,c.Button,{content:"Loan Shuttle",disabled:!(d&&u),onClick:function(){return r("loan")}})||(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Loaned to Centcom"})})]})})},u=function(e,t){var n,l=e.express,d=(0,a.useBackend)(t),u=d.act,s=d.data,p=s.self_paid,C=(0,r.toArray)(s.supplies),h=(0,a.useSharedState)(t,"supply",null==(n=C[0])?void 0:n.name),N=h[0],V=h[1],b=C.find((function(e){return e.name===N}));return(0,o.createComponentVNode)(2,c.Section,{title:"Catalog",buttons:!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,m),(0,o.createComponentVNode)(2,c.Button.Checkbox,{ml:2,content:"Buy Privately",checked:p,onClick:function(){return u("toggleprivate")}})],4),children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{ml:-1,mr:1,children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:C.map((function(e){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:e.name===N,onClick:function(){return V(e.name)},children:[e.name," (",e.packs.length,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,c.Table,{children:null==b?void 0:b.packs.map((function(e){var t=[];return e.small_item&&t.push("Small"),e.access&&t.push("Restricted"),(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",textAlign:"right",children:t.join(", ")}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,tooltip:e.desc,tooltipPosition:"left",onClick:function(){return u("add",{id:e.id})},children:[(0,i.formatMoney)(p&&!e.goody?Math.round(1.1*e.cost):e.cost)," cr"]})})]},e.name)}))})})]})})};t.CargoCatalog=u;var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.requests||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Active Requests",buttons:!d&&(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Clear",color:"transparent",onClick:function(){return r("denyall")}}),children:[0===u.length&&(0,o.createComponentVNode)(2,c.Box,{color:"good",children:"No Requests"}),u.length>0&&(0,o.createComponentVNode)(2,c.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",children:["#",e.id]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.object}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createVNode)(1,"b",null,e.orderer,0)}),(0,o.createComponentVNode)(2,c.Table.Cell,{width:"25%",children:(0,o.createVNode)(1,"i",null,e.reason,0)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:[(0,i.formatMoney)(e.cost)," cr"]}),!d&&(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.Button,{icon:"check",color:"good",onClick:function(){return r("approve",{id:e.id})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",color:"bad",onClick:function(){return r("deny",{id:e.id})}})]})]},e.id)}))})]})},m=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.cart||[],s=u.reduce((function(e,t){return e+t.cost}),0);return d?null:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{inline:!0,mx:1,children:[0===u.length&&"Cart is empty",1===u.length&&"1 item",u.length>=2&&u.length+" items"," ",s>0&&"("+(0,i.formatMoney)(s)+" cr)"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",color:"transparent",content:"Clear",onClick:function(){return r("clear")}})],4)},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.away,s=l.docked,p=l.location,C=l.cart||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Current Cart",buttons:(0,o.createComponentVNode)(2,m),children:[0===C.length&&(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"Nothing in cart"}),C.length>0&&(0,o.createComponentVNode)(2,c.Table,{children:C.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",children:["#",e.id]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.object}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:!!e.paid&&(0,o.createVNode)(1,"b",null,"[Paid Privately]",16)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:[(0,i.formatMoney)(e.cost)," cr"]}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,c.Button,{icon:"minus",onClick:function(){return r("remove",{id:e.id})}})})]},e.id)}))}),C.length>0&&!d&&(0,o.createComponentVNode)(2,c.Box,{mt:2,children:1===u&&1===s&&(0,o.createComponentVNode)(2,c.Button,{color:"green",style:{"line-height":"28px",padding:"0 12px"},content:"Confirm the order",onClick:function(){return r("send")}})||(0,o.createComponentVNode)(2,c.Box,{opacity:.5,children:["Shuttle in ",p,"."]})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.BeakerContents=void 0;var o=n(0),r=n(1);t.BeakerContents=function(e){var t=e.beakerLoaded,n=e.beakerContents;return(0,o.createComponentVNode)(2,r.Box,{children:[!t&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"No beaker loaded."})||0===n.length&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"Beaker is empty."}),n.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{color:"label",children:[e.volume," units of ",e.name]},e.name)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadConsole=t.LaunchpadControl=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createComponentVNode)(2,a.Grid,{width:"1px",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:-1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",mb:1,onClick:function(){return n("move_pos",{x:-1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:-1,y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",mb:1,onClick:function(){return n("move_pos",{y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"R",mb:1,onClick:function(){return n("set_pos",{x:0,y:0})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",mb:1,onClick:function(){return n("move_pos",{y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",mb:1,onClick:function(){return n("move_pos",{x:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:1,y:-1})}})]})]})},l=function(e,t){var n=e.topLevel,c=(0,r.useBackend)(t),l=c.act,d=c.data,u=d.x,s=d.y,m=d.pad_name,p=d.range;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:m,width:"170px",onChange:function(e,t){return l("rename",{name:t})}}),level:n?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return l("remove")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Controls",level:2,children:(0,o.createComponentVNode)(2,i)})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Target",level:2,children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"26px",children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"X:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:u,minValue:-p,maxValue:p,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",stepPixelSize:10,onChange:function(e,t){return l("set_pos",{x:t})}})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"Y:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:s,minValue:-p,maxValue:p,stepPixelSize:10,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",onChange:function(e,t){return l("set_pos",{y:t})}})]})]})})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return l("launch")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Pull",textAlign:"center",onClick:function(){return l("pull")}})})]})]})};t.LaunchpadControl=l;t.LaunchpadConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data,u=d.launchpads,s=void 0===u?[]:u,m=d.selected_id;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:260,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:0===s.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"})||(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{minHeight:"190px",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"140px",minHeight:"190px",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,ellipsis:!0,content:e.name,selected:m===e.id,color:"transparent",onClick:function(){return i("select_pad",{id:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{minHeight:"100%",children:(0,o.createComponentVNode)(2,a.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,minHeight:"100%",children:m&&(0,o.createComponentVNode)(2,l)||(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCyborgRemoteMonitorContent=t.NtosCyborgRemoteMonitor=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosCyborgRemoteMonitor=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:600,height:800,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.card,d=i.cyborgs,u=void 0===d?[]:d;return u.length?(0,o.createFragment)([!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Certain features require an ID card login."}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Send Message",color:"blue",disabled:!l,onClick:function(){return c("messagebot",{ref:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":e.locked_down?"average":"good",children:e.status?"Not Responding":e.locked_down?"Locked Down":e.shell_discon?"Nominal/Disconnected":"Nominal"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,a.Box,{color:e.charge<=30?"bad":e.charge<=70?"average":"good",children:"number"==typeof e.charge?e.charge+"%":"Not Found"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upgrades",children:e.upgrades})]})},e.ref)}))],0):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cyborg units detected."})};t.NtosCyborgRemoteMonitorContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRadarContent=t.NtosRadar=void 0;var o=n(0),r=n(6),a=n(63),c=n(2),i=n(1),l=n(3);t.NtosRadar=function(e,t){return(0,o.createComponentVNode)(2,l.NtosWindow,{width:800,height:600,theme:"ntos",children:(0,o.createComponentVNode)(2,d,{sig_err:"Signal Lost"})})};var d=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.selected,m=u.object,p=void 0===m?[]:m,C=u.target,h=void 0===C?[]:C,N=u.scanning,V=e.sig_err;return(0,o.createComponentVNode)(2,i.Flex,{direction:"row",hight:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{position:"relative",width:20.5,hight:"100%",children:(0,o.createComponentVNode)(2,l.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"redo-alt",content:N?"Scanning...":"Scan",color:"blue",disabled:N,onClick:function(){return d("scan")}}),!p.length&&!N&&(0,o.createVNode)(1,"div",null,"No trackable signals found",16),!N&&p.map((function(e){return(0,o.createVNode)(1,"div",(0,r.classes)(["Button","Button--fluid","Button--color--transparent","Button--ellipsis",e.ref===s&&"Button--selected"]),e.name,0,{title:e.name,onClick:function(){d("selecttarget",{ref:e.ref})}},e.dev)}))]})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{style:{"background-image":'url("'+(0,a.resolveAsset)("ntosradarbackground.png")+'")',"background-position":"center","background-repeat":"no-repeat",top:"20px"},position:"relative",m:1.5,width:45,height:45,children:0===Object.keys(h).length?!!s&&(0,o.createComponentVNode)(2,i.NoticeBox,{position:"absolute",top:20.6,left:1.35,width:42,fontSize:"30px",textAlign:"center",children:V}):!!h.userot&&(0,o.createComponentVNode)(2,i.Box,{as:"img",src:(0,a.resolveAsset)(h.arrowstyle),position:"absolute",top:"20px",left:"243px",style:{transform:"rotate("+h.rot+"deg)"}})||(0,o.createComponentVNode)(2,i.Icon,{name:h.pointer,position:"absolute",size:2,color:h.color,top:10*h.locy+19+"px",left:10*h.locx+16+"px"})})]})};t.NtosRadarContent=d},function(e,t,n){"use strict";t.__esModule=!0,t.RequestKioskContent=t.RequestKiosk=void 0;var o=n(0),r=n(2),a=n(1),c=n(39),i=n(3);t.RequestKiosk=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:550,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.accountName,u=l.requests,s=void 0===u?[]:u,m=l.applicants,p=void 0===m?[]:m,C=l.bountyValue;l.bountyText;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"Log out",onClick:function(){return i("clear")}}),children:d||"N/A"})})}),(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:null==s?void 0:s.map((function(e){return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.owner,width:"300px",children:(0,o.createComponentVNode)(2,a.Section,{width:"300px",children:[(0,o.createComponentVNode)(2,a.Flex,{spacing:1,align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,width:"310px",children:e.owner}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"100px",children:(0,c.formatMoney)(e.value)+" cr"}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"pen-fancy",content:"Apply",onClick:function(){return i("apply",{request:e.acc_number})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"trash-alt",content:"Delete",color:"red",onClick:function(){return i("deleteRequest",{request:e.acc_number})}})]})]}),(0,o.createComponentVNode)(2,a.Section,{align:"center",children:(0,o.createVNode)(1,"i",null,[(0,o.createTextVNode)('"'),e.description,(0,o.createTextVNode)('"')],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Request Applicants",children:null==p?void 0:p.map((function(t){return t.request_id===e.acc_number&&(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,p:.5,backgroundColor:"rgba(0, 0, 69, 0.5)",width:"510px",style:{border:"2px solid rgba(13, 13, 213, 0.7)"},children:t.name}),(0,o.createComponentVNode)(2,a.Flex.Item,{align:"end",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"cash-register",onClick:function(){return i("payApplicant",{applicant:t.requestee_id,request:e.acc_number})}})})]})}))})]},e.name)},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Collapsible,{title:"New Bounty",width:"220px",color:"green",children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.TextArea,{fluid:!0,height:"250px",width:"200px",backgroundColor:"black",textColor:"white",onChange:function(e,t){return i("bountyText",{bountytext:t})}}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.NumberInput,{animate:!0,unit:"cr",minValue:1,maxValue:1e3,value:C,width:"80px",onChange:function(e,t){return i("bountyVal",{bountyval:t})}})}),(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Submit bounty",onClick:function(){return i("createBounty")}})]})})})]})],4)};t.RequestKioskContent=l},function(e,t,n){"use strict";t.__esModule=!0,t.StationAlertConsoleContent=t.StationAlertConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.StationAlertConsole=function(){return(0,o.createComponentVNode)(2,c.Window,{width:325,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t).data.alarms||[],c=n.Fire||[],i=n.Atmosphere||[],l=n.Power||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Fire Alarms",children:(0,o.createVNode)(1,"ul",null,[0===c.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),c.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Atmospherics Alarms",children:(0,o.createVNode)(1,"ul",null,[0===i.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),i.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Alarms",children:(0,o.createVNode)(1,"ul",null,[0===l.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),l.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)})],4)};t.StationAlertConsoleContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.PortableBasicInfo=void 0;var o=n(0),r=n(2),a=n(1);t.PortableBasicInfo=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.connected,d=i.holding,u=i.on,s=i.pressure;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return c("power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:s})," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Port",color:l?"good":"average",children:l?"Connected":"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",minHeight:"82px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!d,onClick:function(){return c("eject")}}),children:d?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:d.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.pressure})," kPa"]})]}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No holding tank"})})],4)}},,,,,,,,,,,function(e,t,n){n(148),e.exports=n(446)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var o=n(0);n(448),n(449),n(450),n(451),n(452),n(453),n(454),n(455),n(456),n(457);var r,a,c=n(99),i=(n(100),n(135)),l=n(186),d=n(136),u=n(187),s=n(57);c.perf.mark("inception",null==(r=window.performance)||null==(a=r.timing)?void 0:a.navigationStart),c.perf.mark("init");var m=(0,u.configureStore)(),p=(0,d.createRenderer)((function(){var e=(0,n(486).getRoutedComponent)(m);return(0,o.createComponentVNode)(2,u.StoreProvider,{store:m,children:(0,o.createComponentVNode)(2,e)})}));!function C(){if("loading"!==document.readyState){for((0,s.setupGlobalEvents)(),(0,i.setupHotKeys)(),(0,l.captureExternalLinks)(),m.subscribe(p),window.update=function(e){return m.dispatch(Byond.parseJson(e))};;){var e=window.__updateQueue__.shift();if(!e)break;window.update(e)}0}else document.addEventListener("DOMContentLoaded",C)}()},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";t.__esModule=!0,t.getRoutedComponent=void 0;var o=n(0),r=n(2),a=(n(190),n(3)),c=n(487),i=function(e,t){return function(){return(0,o.createComponentVNode)(2,a.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:["notFound"===e&&(0,o.createVNode)(1,"div",null,[(0,o.createTextVNode)("Interface "),(0,o.createVNode)(1,"b",null,t,0),(0,o.createTextVNode)(" was not found.")],4),"missingExport"===e&&(0,o.createVNode)(1,"div",null,[(0,o.createTextVNode)("Interface "),(0,o.createVNode)(1,"b",null,t,0),(0,o.createTextVNode)(" is missing an export.")],4)]})})}},l=function(){return(0,o.createComponentVNode)(2,a.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0})})};t.getRoutedComponent=function(e){var t=e.getState(),n=(0,r.selectBackend)(t),o=n.suspended,a=n.config;if(o)return l;var d,u=null==a?void 0:a["interface"];try{d=c("./"+u+".js")}catch(m){if("MODULE_NOT_FOUND"===m.code)return i("notFound",u);throw m}var s=d[u];return s||i("missingExport",u)}},function(e,t,n){var o={"./AbductorConsole.js":488,"./Achievements.js":489,"./AiAirlock.js":490,"./AiRestorer.js":201,"./AirAlarm.js":491,"./AirlockElectronics.js":493,"./Apc.js":494,"./ApcControl.js":495,"./AtmosAlertConsole.js":496,"./AtmosControlConsole.js":497,"./AtmosControlPanel.js":498,"./AtmosFilter.js":499,"./AtmosMixer.js":500,"./AtmosPump.js":501,"./AtmosRelief.js":502,"./AutomatedAnnouncement.js":503,"./BankMachine.js":504,"./Bepis.js":505,"./Biogenerator.js":506,"./BlackmarketUplink.js":507,"./BluespaceArtillery.js":508,"./BluespaceLocator.js":509,"./BorgPanel.js":510,"./BrigTimer.js":511,"./CameraConsole.js":512,"./Canister.js":513,"./Canvas.js":514,"./Cargo.js":203,"./CargoBountyConsole.js":515,"./CargoExpress.js":516,"./CargoHoldTerminal.js":517,"./CellularEmporium.js":518,"./CentcomPodLauncher.js":519,"./ChemAcclimator.js":520,"./ChemDebugSynthesizer.js":521,"./ChemDispenser.js":522,"./ChemFilter.js":523,"./ChemHeater.js":524,"./ChemMaster.js":525,"./ChemPress.js":526,"./ChemReactionChamber.js":527,"./ChemSplitter.js":528,"./ChemSynthesizer.js":529,"./CivCargoHoldTerminal.js":530,"./ClockworkSlab.js":531,"./CodexGigas.js":532,"./ComputerFabricator.js":533,"./Crayon.js":534,"./CrewConsole.js":535,"./Cryo.js":536,"./DecalPainter.js":537,"./DisposalUnit.js":538,"./DnaConsole.js":539,"./DnaVault.js":540,"./EightBallVote.js":541,"./Electrolyzer.js":542,"./Electropack.js":543,"./EmergencyShuttleConsole.js":544,"./EngravedMessage.js":545,"./ExosuitControlConsole.js":546,"./ExosuitFabricator.js":547,"./ForbiddenLore.js":548,"./Gateway.js":549,"./GhostPoolProtection.js":550,"./GlandDispenser.js":551,"./Gps.js":552,"./GravityGenerator.js":553,"./GulagItemReclaimer.js":554,"./GulagTeleporterConsole.js":555,"./Holodeck.js":556,"./Holopad.js":557,"./HypnoChair.js":558,"./ImplantChair.js":559,"./InfraredEmitter.js":560,"./Intellicard.js":561,"./Jukebox.js":562,"./KeycardAuth.js":563,"./LaborClaimConsole.js":564,"./LanguageMenu.js":565,"./LaunchpadConsole.js":205,"./LaunchpadRemote.js":566,"./MafiaPanel.js":567,"./MalfunctionModulePicker.js":568,"./MechBayPowerConsole.js":569,"./MechpadConsole.js":570,"./MedicalKiosk.js":571,"./Microscope.js":572,"./MiningVendor.js":573,"./Mint.js":574,"./Mule.js":575,"./NaniteChamberControl.js":576,"./NaniteCloudControl.js":577,"./NaniteProgramHub.js":578,"./NaniteProgrammer.js":579,"./NaniteRemote.js":580,"./NotificationPreferences.js":581,"./NtnetRelay.js":582,"./NtosAiRestorer.js":583,"./NtosArcade.js":584,"./NtosAtmos.js":585,"./NtosBountyConsole.js":586,"./NtosCard.js":587,"./NtosConfiguration.js":588,"./NtosCrewManifest.js":589,"./NtosCyborgRemoteMonitor.js":206,"./NtosCyborgRemoteMonitorSyndicate.js":590,"./NtosFileManager.js":591,"./NtosJobManager.js":592,"./NtosMain.js":593,"./NtosNetChat.js":594,"./NtosNetDos.js":595,"./NtosNetDownloader.js":596,"./NtosNetMonitor.js":597,"./NtosPowerMonitor.js":598,"./NtosRadar.js":207,"./NtosRadarSyndicate.js":599,"./NtosRequestKiosk.js":600,"./NtosRevelation.js":601,"./NtosRoboControl.js":602,"./NtosShipping.js":603,"./NtosStationAlertConsole.js":604,"./NtosSupermatterMonitor.js":605,"./NuclearBomb.js":606,"./OperatingComputer.js":607,"./Orbit.js":608,"./OreBox.js":609,"./OreRedemptionMachine.js":610,"./Pandemic.js":611,"./PaperSheet.js":612,"./ParticleAccelerator.js":615,"./PersonalCrafting.js":616,"./Photocopier.js":617,"./PortableChemMixer.js":618,"./PortableGenerator.js":619,"./PortablePump.js":620,"./PortableScrubber.js":621,"./PortableTurret.js":622,"./PowerMonitor.js":143,"./ProbingConsole.js":623,"./ProximitySensor.js":624,"./Radio.js":625,"./RadioactiveMicrolaser.js":626,"./RapidPipeDispenser.js":627,"./RemoteRobotControl.js":628,"./RequestKiosk.js":208,"./RoboticsControlConsole.js":629,"./Roulette.js":630,"./SatelliteControl.js":631,"./ScannerGate.js":632,"./SeedExtractor.js":633,"./ShuttleConsole.js":634,"./ShuttleManipulator.js":635,"./Signaler.js":636,"./SkillPanel.js":637,"./SkillStation.js":638,"./Sleeper.js":639,"./SlimeBodySwapper.js":640,"./SmartVend.js":641,"./Smes.js":642,"./SmokeMachine.js":643,"./SolarControl.js":644,"./SpaceHeater.js":645,"./SpawnersMenu.js":646,"./StationAlertConsole.js":209,"./SuitStorageUnit.js":647,"./SyndContractor.js":648,"./TachyonArray.js":649,"./Tank.js":650,"./TankDispenser.js":651,"./Telecomms.js":652,"./TelecommsInteraction.js":653,"./TelecommsLogBrowser.js":654,"./TelecommsMonitor.js":655,"./TelecommsPDALog.js":656,"./Teleporter.js":657,"./ThermoMachine.js":658,"./Timer.js":659,"./TransferValve.js":660,"./TurbineComputer.js":661,"./TurretControl.js":662,"./Uplink.js":142,"./VaultController.js":663,"./Vendatray.js":664,"./Vending.js":665,"./VrSleeper.js":666,"./Wires.js":667};function r(e){var t=a(e);return n(t)}function a(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=a,e.exports=r,r.id=487},function(e,t,n){"use strict";t.__esModule=!0,t.AbductorConsole=void 0;var o=n(0),r=n(142),a=n(2),c=n(1),i=n(3);t.AbductorConsole=function(e,t){var n=(0,a.useSharedState)(t,"tab",1),r=n[0],s=n[1];return(0,o.createComponentVNode)(2,i.Window,{theme:"abductor",width:600,height:532,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:1===r,onClick:function(){return s(1)},children:"Abductsoft 3000"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:2===r,onClick:function(){return s(2)},children:"Mission Settings"})]}),1===r&&(0,o.createComponentVNode)(2,l),2===r&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,u)],4)]})})};var l=function(e,t){var n=(0,a.useBackend)(t),i=(n.act,n.data),l=i.experiment,d=i.points,u=i.credits;return l?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Collected Samples",children:d})})}),(0,o.createComponentVNode)(2,r.GenericUplink,{currencyAmount:u,currencySymbol:"Credits"})],4):(0,o.createComponentVNode)(2,c.NoticeBox,{danger:!0,children:"No Experiment Machine Detected"})},d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.pad,d=i.gizmo;return l?(0,o.createComponentVNode)(2,c.Section,{title:"Emergency Teleport",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"exclamation-circle",content:"Activate",color:"bad",onClick:function(){return r("teleporter_send")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mark Retrieval",children:(0,o.createComponentVNode)(2,c.Button,{icon:d?"user-plus":"user-slash",content:d?"Retrieve":"No Mark",disabled:!d,onClick:function(){return r("teleporter_retrieve")}})})})}):(0,o.createComponentVNode)(2,c.NoticeBox,{danger:!0,children:"No Telepad Detected"})},u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.vest,d=i.vest_mode,u=i.vest_lock;return l?(0,o.createComponentVNode)(2,c.Section,{title:"Agent Vest Settings",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"lock":"unlock",content:u?"Locked":"Unlocked",onClick:function(){return r("toggle_vest")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,c.Button,{icon:1===d?"eye-slash":"fist-raised",content:1===d?"Stealth":"Combat",onClick:function(){return r("flip_vest")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Disguise",children:(0,o.createComponentVNode)(2,c.Button,{icon:"user-secret",content:"Select",onClick:function(){return r("select_disguise")}})})]})}):(0,o.createComponentVNode)(2,c.NoticeBox,{danger:!0,children:"No Agent Vest Detected"})}},function(e,t,n){"use strict";t.__esModule=!0,t.Achievements=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Achievements=function(e,t){var n=(0,r.useBackend)(t).data,l=n.categories,u=(0,r.useLocalState)(t,"category",l[0]),s=u[0],m=u[1],p=n.achievements.filter((function(e){return e.category===s}));return(0,o.createComponentVNode)(2,c.Window,{title:"Achievements",width:540,height:680,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[l.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:s===e,onClick:function(){return m(e)},children:e},e)})),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:"High Scores"===s,onClick:function(){return m("High Scores")},children:"High Scores"})]}),"High Scores"===s&&(0,o.createComponentVNode)(2,d)||(0,o.createComponentVNode)(2,i,{achievements:p})]})})};var i=function(e,t){var n=e.achievements;return(0,o.createComponentVNode)(2,a.Table,{children:n.map((function(e){return(0,o.createComponentVNode)(2,l,{achievement:e},e.name)}))})},l=function(e){var t=e.achievement,n=t.name,r=t.desc,c=t.icon_class,i=t.value,l=t.score;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Box,{m:1,className:c})}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",children:[(0,o.createVNode)(1,"h1",null,n,0),r,l&&(0,o.createComponentVNode)(2,a.Box,{color:i>0?"good":"bad",children:i>0?"Earned "+i+" times":"Locked"})||(0,o.createComponentVNode)(2,a.Box,{color:i?"good":"bad",children:i?"Unlocked":"Locked"})]})]},n)},d=function(e,t){var n=(0,r.useBackend)(t).data,c=n.highscore,i=n.user_ckey,l=(0,r.useLocalState)(t,"highscore",0),d=l[0],u=l[1],s=c[d];if(!s)return null;var m=Object.keys(s.scores).map((function(e){return{ckey:e,value:s.scores[e]}}));return(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:c.map((function(e,t){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:d===t,onClick:function(){return u(t)},children:e.name},e.name)}))})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"#"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"Key"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"Score"})]}),m.map((function(e,t){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",m:2,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:t+1}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:e.ckey===i&&"green",textAlign:"center",children:[0===t&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"yellow",mr:2}),e.ckey,0===t&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"yellow",ml:2})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.value})]},e.ckey)}))]})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AiAirlock=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i={2:{color:"good",localStatusText:"Offline"},1:{color:"average",localStatusText:"Caution"},0:{color:"bad",localStatusText:"Optimal"}};t.AiAirlock=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=i[d.power.main]||i[0],s=i[d.power.backup]||i[0],m=i[d.shock]||i[0];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:390,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main",color:u.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!d.power.main,content:"Disrupt",onClick:function(){return l("disrupt-main")}}),children:[d.power.main?"Online":"Offline"," ",d.wires.main_1&&d.wires.main_2?d.power.main_timeleft>0&&"["+d.power.main_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Backup",color:s.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!d.power.backup,content:"Disrupt",onClick:function(){return l("disrupt-backup")}}),children:[d.power.backup?"Online":"Offline"," ",d.wires.backup_1&&d.wires.backup_2?d.power.backup_timeleft>0&&"["+d.power.backup_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Electrify",color:m.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",disabled:!(d.wires.shock&&0===d.shock),content:"Restore",onClick:function(){return l("shock-restore")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Temporary",onClick:function(){return l("shock-temp")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Permanent",onClick:function(){return l("shock-perm")}})],4),children:[2===d.shock?"Safe":"Electrified"," ",(d.wires.shock?d.shock_timeleft>0&&"["+d.shock_timeleft+"s]":"[Wires have been cut!]")||-1===d.shock_timeleft&&"[Permanent]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Access and Door Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Scan",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.id_scanner?"power-off":"times",content:d.id_scanner?"Enabled":"Disabled",selected:d.id_scanner,disabled:!d.wires.id_scanner,onClick:function(){return l("idscan-toggle")}}),children:!d.wires.id_scanner&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Access",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.emergency?"power-off":"times",content:d.emergency?"Enabled":"Disabled",selected:d.emergency,onClick:function(){return l("emergency-toggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolts",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.locked?"lock":"unlock",content:d.locked?"Lowered":"Raised",selected:d.locked,disabled:!d.wires.bolts,onClick:function(){return l("bolt-toggle")}}),children:!d.wires.bolts&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolt Lights",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.lights?"power-off":"times",content:d.lights?"Enabled":"Disabled",selected:d.lights,disabled:!d.wires.lights,onClick:function(){return l("light-toggle")}}),children:!d.wires.lights&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Force Sensors",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.safe?"power-off":"times",content:d.safe?"Enabled":"Disabled",selected:d.safe,disabled:!d.wires.safe,onClick:function(){return l("safe-toggle")}}),children:!d.wires.safe&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Timing Safety",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.speed?"power-off":"times",content:d.speed?"Enabled":"Disabled",selected:d.speed,disabled:!d.wires.timing,onClick:function(){return l("speed-toggle")}}),children:!d.wires.timing&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Control",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.opened?"sign-out-alt":"sign-in-alt",content:d.opened?"Open":"Closed",selected:d.opened,disabled:d.locked||d.welded,onClick:function(){return l("open-close")}}),children:!(!d.locked&&!d.welded)&&(0,o.createVNode)(1,"span",null,[(0,o.createTextVNode)("[Door is "),d.locked?"bolted":"",d.locked&&d.welded?" and ":"",d.welded?"welded":"",(0,o.createTextVNode)("!]")],0)})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AirAlarm=void 0;var o=n(0),r=n(11),a=(n(19),n(2)),c=n(1),i=(n(36),n(3)),l=n(64),d=n(492);t.AirAlarm=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),c=r.locked&&!r.siliconUser;return(0,o.createComponentVNode)(2,i.Window,{width:440,height:650,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,u),!c&&(0,o.createComponentVNode)(2,m)]})})};var u=function(e,t){var n=(0,a.useBackend)(t).data,i=(n.environment_data||[]).filter((function(e){return e.value>=.01})),l={0:{color:"good",localStatusText:"Optimal"},1:{color:"average",localStatusText:"Caution"},2:{color:"bad",localStatusText:"Danger (Internals Required)"}},d=l[n.danger_level]||l[0];return(0,o.createComponentVNode)(2,c.Section,{title:"Air Status",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[i.length>0&&(0,o.createFragment)([i.map((function(e){var t=l[e.danger_level]||l[0];return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,color:t.color,children:[(0,r.toFixed)(e.value,2),e.unit]},e.name)})),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Local status",color:d.color,children:d.localStatusText}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Area status",color:n.atmos_alarm||n.fire_alarm?"bad":"good",children:(n.atmos_alarm?"Atmosphere Alarm":n.fire_alarm&&"Fire Alarm")||"Nominal"})],0)||(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Cannot obtain air sample for analysis."}),!!n.emagged&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Safety measures offline. Device may exhibit abnormal behavior."})]})})},s={home:{title:"Air Controls",component:function(){return p}},vents:{title:"Vent Controls",component:function(){return C}},scrubbers:{title:"Scrubber Controls",component:function(){return h}},modes:{title:"Operating Mode",component:function(){return N}},thresholds:{title:"Alarm Thresholds",component:function(){return V}}},m=function(e,t){var n=(0,a.useLocalState)(t,"screen"),r=n[0],i=n[1],l=s[r]||s.home,d=l.component();return(0,o.createComponentVNode)(2,c.Section,{title:l.title,buttons:r&&(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-left",content:"Back",onClick:function(){return i()}}),children:(0,o.createComponentVNode)(2,d)})},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=(0,a.useLocalState)(t,"screen"),d=(l[0],l[1]),u=i.mode,s=i.atmos_alarm;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:s?"exclamation-triangle":"exclamation",color:s&&"caution",content:"Area Atmosphere Alarm",onClick:function(){return r(s?"reset":"alarm")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:3===u?"exclamation-triangle":"exclamation",color:3===u&&"danger",content:"Panic Siphon",onClick:function(){return r("mode",{mode:3===u?1:3})}}),(0,o.createComponentVNode)(2,c.Box,{mt:2}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"Vent Controls",onClick:function(){return d("vents")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"filter",content:"Scrubber Controls",onClick:function(){return d("scrubbers")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"cog",content:"Operating Mode",onClick:function(){return d("modes")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"chart-bar",content:"Alarm Thresholds",onClick:function(){return d("thresholds")}})],4)},C=function(e,t){var n=(0,a.useBackend)(t).data.vents;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,d.Vent,{vent:e},e.id_tag)})):"Nothing to show"},h=function(e,t){var n=(0,a.useBackend)(t).data.scrubbers;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,d.Scrubber,{scrubber:e},e.id_tag)})):"Nothing to show"},N=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.modes;return i&&0!==i.length?i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:e.selected?"check-square-o":"square-o",selected:e.selected,color:e.selected&&e.danger&&"danger",content:e.name,onClick:function(){return r("mode",{mode:e.mode})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1})],4,e.mode)})):"Nothing to show"},V=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.thresholds;return(0,o.createVNode)(1,"table","LabeledList",[(0,o.createVNode)(1,"thead",null,(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","color-bad","min2",16),(0,o.createVNode)(1,"td","color-average","min1",16),(0,o.createVNode)(1,"td","color-average","max1",16),(0,o.createVNode)(1,"td","color-bad","max2",16)],4),2),(0,o.createVNode)(1,"tbody",null,l.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","LabeledList__label",e.name,0),e.settings.map((function(e){return(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Button,{content:(0,r.toFixed)(e.selected,2),onClick:function(){return i("threshold",{env:e.env,"var":e.val})}}),2,null,e.val)}))],0,null,e.name)})),0)],4,{style:{width:"100%"}})}},function(e,t,n){"use strict";t.__esModule=!0,t.Scrubber=t.Vent=void 0;var o=n(0),r=n(19),a=n(2),c=n(1),i=n(36);t.Vent=function(e,t){var n=e.vent,i=(0,a.useBackend)(t).act,l=n.id_tag,d=n.long_name,u=n.power,s=n.checks,m=n.excheck,p=n.incheck,C=n.direction,h=n.external,N=n.internal,V=n.extdefault,b=n.intdefault;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,r.decodeHtmlEntities)(d),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return i("power",{id_tag:l,val:Number(!u)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:C?"Pressurizing":"Scrubbing",color:!C&&"danger",onClick:function(){return i("direction",{id_tag:l,val:Number(!C)})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:"Internal",selected:p,onClick:function(){return i("incheck",{id_tag:l,val:s})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"External",selected:m,onClick:function(){return i("excheck",{id_tag:l,val:s})}})]}),!!p&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Internal Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(N),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return i("set_internal_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:b,content:"Reset",onClick:function(){return i("reset_internal_pressure",{id_tag:l})}})]}),!!m&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"External Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(h),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return i("set_external_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:V,content:"Reset",onClick:function(){return i("reset_external_pressure",{id_tag:l})}})]})]})})};t.Scrubber=function(e,t){var n=e.scrubber,l=(0,a.useBackend)(t).act,d=n.long_name,u=n.power,s=n.scrubbing,m=n.id_tag,p=n.widenet,C=n.filter_types;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,r.decodeHtmlEntities)(d),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power",{id_tag:m,val:Number(!u)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,c.Button,{icon:s?"filter":"sign-in-alt",color:s||"danger",content:s?"Scrubbing":"Siphoning",onClick:function(){return l("scrubbing",{id_tag:m,val:Number(!s)})}}),(0,o.createComponentVNode)(2,c.Button,{icon:p?"expand":"compress",selected:p,content:p?"Expanded range":"Normal range",onClick:function(){return l("widenet",{id_tag:m,val:Number(!p)})}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Filters",children:s&&C.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,i.getGasLabel)(e.gas_id,e.gas_name),title:e.gas_name,selected:e.enabled,onClick:function(){return l("toggle_filter",{id_tag:m,val:e.gas_id})}},e.gas_id)}))||"N/A"})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AirlockElectronics=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(202);t.AirlockElectronics=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.oneAccess,s=d.unres_direction,m=d.regions||[],p=d.accesses||[];return(0,o.createComponentVNode)(2,c.Window,{width:420,height:485,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Main",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Access Required",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"unlock":"lock",content:u?"One":"All",onClick:function(){return l("one_access")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Unrestricted Access",children:[(0,o.createComponentVNode)(2,a.Button,{icon:1&s?"check-square-o":"square-o",content:"North",selected:1&s,onClick:function(){return l("direc_set",{unres_direction:"1"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:2&s?"check-square-o":"square-o",content:"South",selected:2&s,onClick:function(){return l("direc_set",{unres_direction:"2"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:4&s?"check-square-o":"square-o",content:"East",selected:4&s,onClick:function(){return l("direc_set",{unres_direction:"4"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:8&s?"check-square-o":"square-o",content:"West",selected:8&s,onClick:function(){return l("direc_set",{unres_direction:"8"})}})]})]})}),(0,o.createComponentVNode)(2,i.AccessList,{accesses:m,selectedList:p,accessMod:function(e){return l("set",{access:e})},grantAll:function(){return l("grant_all")},denyAll:function(){return l("clear_all")},grantDep:function(e){return l("grant_region",{region:e})},denyDep:function(e){return l("deny_region",{region:e})}})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Apc=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(64);t.Apc=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:450,height:445,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,u)})})};var l={2:{color:"good",externalPowerText:"External Power",chargingText:"Fully Charged"},1:{color:"average",externalPowerText:"Low External Power",chargingText:"Charging"},0:{color:"bad",externalPowerText:"No External Power",chargingText:"Not Charging"}},d={1:{icon:"terminal",content:"Override Programming",action:"hack"},2:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"},3:{icon:"caret-square-left",content:"Return to Main Core",action:"deoccupy"},4:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"}},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.locked&&!u.siliconUser,m=l[u.externalPower]||l[0],p=l[u.chargingStatus]||l[0],C=u.powerChannels||[],h=d[u.malfStatus]||d[0],N=u.powerCellStatus/100;return u.failTime>0?(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createVNode)(1,"b",null,(0,o.createVNode)(1,"h3",null,"SYSTEM FAILURE",16),2),(0,o.createVNode)(1,"i",null,"I/O regulators malfunction detected! Waiting for system reboot...",16),(0,o.createVNode)(1,"br"),"Automatic reboot in ",u.failTime," seconds...",(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Reboot Now",onClick:function(){return c("reboot")}})]}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main Breaker",color:m.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.isOperating?"power-off":"times",content:u.isOperating?"On":"Off",selected:u.isOperating&&!s,disabled:s,onClick:function(){return c("breaker")}}),children:["[ ",m.externalPowerText," ]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power Cell",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:"good",value:N})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",color:p.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.chargeMode?"sync":"close",content:u.chargeMode?"Auto":"Off",disabled:s,onClick:function(){return c("charge")}}),children:["[ ",p.chargingText," ]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Channels",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[C.map((function(e){var t=e.topicParams;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.title,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,mx:2,color:e.status>=2?"good":"bad",children:e.status>=2?"On":"Off"}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:!s&&(1===e.status||3===e.status),disabled:s,onClick:function(){return c("channel",t.auto)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"On",selected:!s&&2===e.status,disabled:s,onClick:function(){return c("channel",t.on)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:!s&&0===e.status,disabled:s,onClick:function(){return c("channel",t.off)}})],4),children:e.powerLoad},e.title)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Load",children:(0,o.createVNode)(1,"b",null,u.totalLoad,0)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Misc",buttons:!!u.siliconUser&&(0,o.createFragment)([!!u.malfStatus&&(0,o.createComponentVNode)(2,a.Button,{icon:h.icon,content:h.content,color:"bad",onClick:function(){return c(h.action)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:"Overload",onClick:function(){return c("overload")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cover Lock",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.coverLocked?"lock":"unlock",content:u.coverLocked?"Engaged":"Disengaged",disabled:s,onClick:function(){return c("cover")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.emergencyLights?"Enabled":"Disabled",disabled:s,onClick:function(){return c("emergency_lighting")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Night Shift Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.nightshiftLights?"Enabled":"Disabled",onClick:function(){return c("toggle_nightshift")}})})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ApcControl=void 0;var o=n(0),r=n(14),a=n(30),c=n(6),i=n(2),l=n(1),d=n(3),u=n(143);t.ApcControl=function(e,t){var n=(0,i.useBackend)(t).data;return(0,o.createComponentVNode)(2,d.Window,{title:"APC Controller",width:550,height:500,resizable:!0,children:[1===n.authenticated&&(0,o.createComponentVNode)(2,m),0===n.authenticated&&(0,o.createComponentVNode)(2,s)]})};var s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.emagged,c=1===a?"Open":"Log In";return(0,o.createComponentVNode)(2,d.Window.Content,{children:(0,o.createComponentVNode)(2,l.Button,{fluid:!0,color:1===a?"":"good",content:c,onClick:function(){return r("log-in")}})})},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.restoring,c=(0,i.useLocalState)(t,"tab-index",1),u=c[0],s=c[1];return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Tabs,{children:[(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:1===u,onClick:function(){s(1),r("check-apcs")},children:"APC Control Panel"}),(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:2===u,onClick:function(){s(2),r("check-logs")},children:"Log View Panel"})]}),1===a&&(0,o.createComponentVNode)(2,l.Dimmer,{fontSize:"32px",children:[(0,o.createComponentVNode)(2,l.Icon,{name:"cog",spin:!0})," Resetting..."]}),1===u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,l.Box,{fillPositionedParent:!0,top:"53px",children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,C)})})],4),2===u&&(0,o.createComponentVNode)(2,l.Box,{fillPositionedParent:!0,top:"20px",children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,h)})})],0)},p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data,c=a.emagged,d=a.logging,u=(0,i.useLocalState)(t,"sortByField",null),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,l.Flex,{children:[(0,o.createComponentVNode)(2,l.Flex.Item,{children:[(0,o.createComponentVNode)(2,l.Box,{inline:!0,mr:2,color:"label",children:"Sort by:"}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"name"===s,content:"Name",onClick:function(){return m("name"!==s&&"name")}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"charge"===s,content:"Charge",onClick:function(){return m("charge"!==s&&"charge")}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"draw"===s,content:"Draw",onClick:function(){return m("draw"!==s&&"draw")}})]}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,l.Flex.Item,{children:[1===c&&(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Button,{color:1===d?"bad":"good",content:1===d?"Stop Logging":"Restore Logging",onClick:function(){return r("toggle-logs")}}),(0,o.createComponentVNode)(2,l.Button,{content:"Reset Console",onClick:function(){return r("restore-console")}})],4),(0,o.createComponentVNode)(2,l.Button,{color:"bad",content:"Log Out",onClick:function(){return r("log-out")}})]})]})},C=function(e,t){var n=(0,i.useBackend)(t),c=n.data,d=n.act,s=(0,i.useLocalState)(t,"sortByField",null)[0],m=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.name+t})})),"name"===s&&(0,r.sortBy)((function(e){return e.name})),"charge"===s&&(0,r.sortBy)((function(e){return-e.charge})),"draw"===s&&(0,r.sortBy)((function(e){return-(0,u.powerRank)(e.load)}),(function(e){return-parseFloat(e.load)}))])(c.apcs);return(0,o.createComponentVNode)(2,l.Table,{children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"On/Off"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Area"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:"Charge"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,textAlign:"right",children:"Draw"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Equipment",children:"Eqp"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Lighting",children:"Lgt"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Environment",children:"Env"})]}),m.map((function(e,t){return(0,o.createVNode)(1,"tr","Table__row candystripe",[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,l.Button,{icon:e.operating?"power-off":"times",color:e.operating?"good":"bad",onClick:function(){return d("breaker",{ref:e.ref})}}),2),(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,l.Button,{onClick:function(){return d("access-apc",{ref:e.ref})},children:e.name}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",(0,o.createComponentVNode)(2,u.AreaCharge,{charging:e.charging,charge:e.charge}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",e.load,0),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"equipment",status:e.eqp,apc:e,act:d}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"lighting",status:e.lgt,apc:e,act:d}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"environ",status:e.env,apc:e,act:d}),2)],4,null,e.id)}))]})},h=function(e,t){var n=(0,i.useBackend)(t).data,c=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.entry+t})})),function(e){return e.reverse()}])(n.logs);return(0,o.createComponentVNode)(2,l.Box,{m:-.5,children:c.map((function(e){return(0,o.createComponentVNode)(2,l.Box,{p:.5,className:"candystripe",bold:!0,children:e.entry},e.id)}))})},N=function(e){var t=e.target,n=e.status,r=e.apc,a=e.act,c=Boolean(2&n),i=Boolean(1&n);return(0,o.createComponentVNode)(2,l.Button,{icon:i?"sync":"power-off",color:c?"good":"bad",onClick:function(){return a("toggle-minor",{type:t,value:V(n),ref:r.ref})}})},V=function(e){return 0===e?2:2===e?3:0};N.defaultHooks=c.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.AtmosAlertConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.priority||[],u=l.minor||[];return(0,o.createComponentVNode)(2,c.Window,{width:350,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Alarms",children:(0,o.createVNode)(1,"ul",null,[0===d.length&&(0,o.createVNode)(1,"li","color-good","No Priority Alerts",16),d.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"bad",onClick:function(){return i("clear",{zone:e})}}),2,null,e)})),0===u.length&&(0,o.createVNode)(1,"li","color-good","No Minor Alerts",16),u.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"average",onClick:function(){return i("clear",{zone:e})}}),2,null,e)}))],0)})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlConsole=void 0;var o=n(0),r=n(14),a=n(11),c=n(2),i=n(1),l=n(3);t.AtmosControlConsole=function(e,t){var n,d=(0,c.useBackend)(t),u=d.act,s=d.data,m=s.sensors||[];return(0,o.createComponentVNode)(2,l.Window,{width:500,height:315,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:!!s.tank&&(null==(n=m[0])?void 0:n.long_name),children:m.map((function(e){var t=e.gases||{};return(0,o.createComponentVNode)(2,i.Section,{title:!s.tank&&e.long_name,level:2,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:(0,a.toFixed)(e.pressure,2)+" kPa"}),!!e.temperature&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",children:(0,a.toFixed)(e.temperature,2)+" K"}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:t,children:(0,a.toFixed)(e,2)+"%"})}))(t)]})},e.id_tag)}))}),s.tank&&(0,o.createComponentVNode)(2,i.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",content:"Reconnect",onClick:function(){return u("reconnect")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Input Injector",children:(0,o.createComponentVNode)(2,i.Button,{icon:s.inputting?"power-off":"times",content:s.inputting?"Injecting":"Off",selected:s.inputting,onClick:function(){return u("input")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Input Rate",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:s.inputRate,unit:"L/s",width:"63px",minValue:0,maxValue:200,suppressFlicker:2e3,onChange:function(e,t){return u("rate",{rate:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Regulator",children:(0,o.createComponentVNode)(2,i.Button,{icon:s.outputting?"power-off":"times",content:s.outputting?"Open":"Closed",selected:s.outputting,onClick:function(){return u("output")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Pressure",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:parseFloat(s.outputPressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,suppressFlicker:2e3,onChange:function(e,t){return u("pressure",{pressure:t})}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlPanel=void 0;var o=n(0),r=n(14),a=n(30),c=n(2),i=n(1),l=n(3);t.AtmosControlPanel=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.area+t})})),(0,r.sortBy)((function(e){return e.id}))])(u.excited_groups);return(0,o.createComponentVNode)(2,l.Window,{title:"SSAir Control Panel",width:900,height:500,resizable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{m:1,children:(0,o.createComponentVNode)(2,i.Flex,{justify:"space-between",align:"baseline",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return d("toggle-freeze")},color:1===u.frozen?"good":"bad",children:1===u.frozen?"Freeze Subsystem":"Unfreeze Subsystem"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Fire Cnt: ",u.fire_count]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Active Turfs: ",u.active_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Excited Groups: ",u.excited_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Hotspots: ",u.hotspots_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Superconductors: ",u.conducting_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:u.showing_user,onClick:function(){return d("toggle_user_display")},children:"Personal View"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:u.show_all,onClick:function(){return d("toggle_show_all")},children:"Display all"})})]})}),(0,o.createComponentVNode)(2,i.Box,{fillPositionedParent:!0,top:"45px",children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Area Name"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Breakdown"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Dismantle"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Turfs"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:1===u.display_max&&"Max Share"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Display"})]}),s.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,i.Button,{content:e.area,onClick:function(){return d("move-to-target",{spot:e.jump_to})}}),2),(0,o.createVNode)(1,"td",null,e.breakdown,0),(0,o.createVNode)(1,"td",null,e.dismantle,0),(0,o.createVNode)(1,"td",null,e.size,0),(0,o.createVNode)(1,"td",null,1===u.display_max&&e.max_share,0),(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:e.should_show,onClick:function(){return d("toggle_show_group",{group:e.group})}}),2)],4,null,e.id)}))]})})})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosFilter=void 0;var o=n(0),r=n(2),a=n(1),c=n(36),i=n(3);t.AtmosFilter=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.filter_types||[];return(0,o.createComponentVNode)(2,i.Window,{width:390,height:187,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.on?"power-off":"times",content:d.on?"On":"Off",selected:d.on,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(d.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onDrag:function(e,t){return l("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:d.rate===d.max_rate,onClick:function(){return l("rate",{rate:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filter",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:e.selected,content:(0,c.getGasLabel)(e.id,e.name),onClick:function(){return l("filter",{mode:e.id})}},e.id)}))})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosMixer=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.AtmosMixer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:370,height:165,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.set_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return i("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.set_pressure===l.max_pressure,onClick:function(){return i("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 1",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:l.node1_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return i("node1",{concentration:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 2",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:l.node2_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return i("node2",{concentration:t})}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosPump=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.AtmosPump=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:335,height:115,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return i("power")}})}),l.max_rate?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onChange:function(e,t){return i("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.rate===l.max_rate,onClick:function(){return i("rate",{rate:"max"})}})]}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return i("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.pressure===l.max_pressure,onClick:function(){return i("pressure",{pressure:"max"})}})]})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosRelief=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.AtmosRelief=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:335,height:115,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Open Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.open_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:l.max_pressure||4500,step:10,onChange:function(e,t){return i("open_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.open_pressure===l.max_pressure,onClick:function(){return i("open_pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Close Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.close_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:l.max_pressure||4500,step:10,onChange:function(e,t){return i("close_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.close_pressure===l.max_pressure,onClick:function(){return i("close_pressure",{pressure:"max"})}})]})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AutomatedAnnouncement=void 0;var o=n(0),r=(n(19),n(2)),a=n(1),c=n(3),i="%PERSON will be replaced with their name.\n%RANK with their job.";t.AutomatedAnnouncement=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.arrivalToggle,s=d.arrival,m=d.newheadToggle,p=d.newhead;return(0,o.createComponentVNode)(2,c.Window,{title:"Automated Announcement System",width:500,height:225,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Arrival Announcement",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return l("ArrivalToggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"info",tooltip:i,tooltipPosition:"left"}),children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:s,onChange:function(e,t){return l("ArrivalText",{newText:t})}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Departmental Head Announcement",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return l("NewheadToggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"info",tooltip:i,tooltipPosition:"left"}),children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:p,onChange:function(e,t){return l("NewheadText",{newText:t})}})})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BankMachine=void 0;var o=n(0),r=n(2),a=n(1),c=n(39),i=n(3);t.BankMachine=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.current_balance,s=d.siphoning,m=d.station_name;return(0,o.createComponentVNode)(2,i.Window,{width:350,height:155,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"Authorized personnel only"}),(0,o.createComponentVNode)(2,a.Section,{title:m+" Vault",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Balance",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:s?"times":"sync",content:s?"Stop Siphoning":"Siphon Credits",selected:s,onClick:function(){return l(s?"halt":"siphon")}}),children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u,format:function(e){return(0,c.formatMoney)(e)}})," cr"]})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Bepis=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Bepis=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.amount;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:480,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Business Exploration Protocol Incubation Sink",children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:l.manual_power?"Off":"On",selected:!l.manual_power,onClick:function(){return i("toggle_power")}}),children:"All you need to know about the B.E.P.I.S. and you! The B.E.P.I.S. performs hundreds of tests a second using electrical and financial resources to invent new products, or discover new technologies otherwise overlooked for being too risky or too niche to produce!"}),(0,o.createComponentVNode)(2,a.Section,{title:"Payer's Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"redo-alt",content:"Reset Account",onClick:function(){return i("account_reset")}}),children:["Console is currently being operated by ",l.account_owner?l.account_owner:"no one","."]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Data and Statistics",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposited Credits",children:l.stored_cash}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Investment Variability",children:[l.accuracy_percentage,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Innovation Bonus",children:l.positive_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Risk Offset",color:"bad",children:l.negative_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposit Amount",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"Credits",minValue:100,maxValue:3e4,step:100,stepPixelSize:2,onChange:function(e,t){return i("amount",{amount:t})}})})]})}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"donate",content:"Deposit Credits",disabled:1===l.manual_power||1===l.silicon_check,onClick:function(){return i("deposit_cash")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Withdraw Credits",disabled:1===l.manual_power,onClick:function(){return i("withdraw_cash")}})]})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Market Data and Analysis",children:[(0,o.createComponentVNode)(2,a.Box,{children:["Average technology cost: ",l.mean_value]}),(0,o.createComponentVNode)(2,a.Box,{children:["Current chance of Success: Est. ",l.success_estimate,"%"]}),l.error_name&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Previous Failure Reason: Deposited cash value too low. Please insert more money for future success."}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"microscope",disabled:1===l.manual_power,onClick:function(){return i("begin_experiment")},content:"Begin Testing"})]})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BiogeneratorContent=t.Biogenerator=void 0;var o=n(0),r=n(6),a=n(19),c=n(2),i=n(1),l=n(39),d=n(3);t.Biogenerator=function(e,t){var n=(0,c.useBackend)(t).data,r=n.beaker,a=n.processing;return(0,o.createComponentVNode)(2,d.Window,{width:550,height:380,resizable:!0,children:[!!a&&(0,o.createComponentVNode)(2,i.Dimmer,{fontSize:"32px",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"cog",spin:1})," Processing..."]}),(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:[!r&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No Container"}),!!r&&(0,o.createComponentVNode)(2,u)]})]})};var u=function(e,t){var n,r,d=(0,c.useBackend)(t),u=d.act,m=d.data,p=m.biomass,C=m.can_process,h=m.categories,N=void 0===h?[]:h,V=(0,c.useLocalState)(t,"searchText",""),b=V[0],f=V[1],g=(0,c.useLocalState)(t,"category",null==(n=N[0])?void 0:n.name),v=g[0],k=g[1],x=(0,a.createSearch)(b,(function(e){return e.name})),B=b.length>0&&N.flatMap((function(e){return e.items||[]})).filter(x).filter((function(e,t){return t<25}))||(null==(r=N.find((function(e){return e.name===v})))?void 0:r.items)||[];return(0,o.createComponentVNode)(2,i.Section,{title:(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:p>0?"good":"bad",children:[(0,l.formatMoney)(p)," Biomass"]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,i.Input,{autoFocus:!0,value:b,onInput:function(e,t){return f(t)},mx:1}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",onClick:function(){return u("detach")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Activate",disabled:!C,onClick:function(){return u("activate")}})],4),children:(0,o.createComponentVNode)(2,i.Flex,{children:[0===b.length&&(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:N.map((function(e){var t;return(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:e.name===v,onClick:function(){return k(e.name)},children:[e.name," (",(null==(t=e.items)?void 0:t.length)||0,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,basis:0,children:[0===B.length&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:0===b.length?"No items in this category.":"No results found."}),(0,o.createComponentVNode)(2,i.Table,{children:(0,o.createComponentVNode)(2,s,{biomass:p,items:B})})]})]})})};t.BiogeneratorContent=u;var s=function(e,t){var n=(0,c.useBackend)(t).act,a=(0,c.useLocalState)(t,"hoveredItem",{}),l=a[0],d=a[1],u=l&&l.cost||0;return e.items.map((function(n){var o=(0,c.useLocalState)(t,"amount"+n.name,1),r=o[0],a=o[1],i=l&&l.name!==n.name,d=e.biomass-u*l.amountV,onClick:function(){return d("select",{item:e.id})}})})]}),e.desc]},e.name)}))})]})]})]})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.buying,u=l.ltsrbt_built,s=l.money;if(!d)return null;var m=l.delivery_methods.map((function(e){var t=l.delivery_method_description[e.name];return Object.assign({},e,{description:t})}));return(0,o.createComponentVNode)(2,a.Modal,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:m.map((function(e){return"LTSRBT"!==e.name||u?(0,o.createComponentVNode)(2,a.Flex.Item,{mx:1,width:"250px",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"30px",children:e.name}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:e.description}),(0,o.createComponentVNode)(2,a.Button,{mt:2,content:(0,c.formatMoney)(e.price)+" cr",disabled:s=0||(r[n]=e[n]);return r}(t,["res","value"]),a=l(n),c=a[0],i=a[1];return(0,o.normalizeProps)((0,o.createVNode)(1,"canvas",null,"Canvas failed to render.",16,Object.assign({width:28*c||300,height:28*i||300},r,{onClick:function(t){return e.clickwrapper(t)}}),null,this.canvasRef))},r}(o.Component),l=function(e){var t=e.length;return[t,0!==t?e[0].length:0]};t.Canvas=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=l(u.grid),m=s[0],p=s[1];return(0,o.createComponentVNode)(2,c.Window,{width:Math.min(400,28*m*32+24),height:Math.min(400,28*p*32+24),resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i,{value:u.grid,onCanvasClick:function(e,t){return d("paint",{x:e,y:t})}}),(0,o.createComponentVNode)(2,a.Box,{children:[!u.finalized&&(0,o.createComponentVNode)(2,a.Button.Confirm,{onClick:function(){return d("finalize")},content:"Finalize"}),u.name]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CargoBountyConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(39),i=n(3);t.CargoBountyConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data.bountydata,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.Window,{width:750,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print Bounty List",onClick:function(){return c("Print")}}),children:(0,o.createComponentVNode)(2,a.Table,{border:!0,children:[(0,o.createComponentVNode)(2,a.Table.Row,{bold:!0,italic:!0,color:"label",fontSize:1.25,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Bounty Object"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Description"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Progress"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Claim"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{backgroundColor:1===e.priority?"rgba(252, 152, 3, 0.25)":"",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{italic:!0,textAlign:"center",p:1,children:e.description}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:[1===e.priority?(0,o.createComponentVNode)(2,a.Box,{children:"High Priority"}):"",e.completion_string]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:e.reward_string}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:1===e.claimed?"check":"",content:1===e.claimed?"Claimed":"Claim",disabled:1===e.claimed,color:1===e.can_claim?"green":"red",onClick:function(){return c("ClaimBounty",{bounty:e.bounty_ref})}})})]},e.name)}))]})})})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.stored_cash);return(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i,format:function(e){return(0,c.formatMoney)(e)}})," credits"]})}},function(e,t,n){"use strict";t.__esModule=!0,t.CargoExpress=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(203),l=n(64);t.CargoExpress=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data);return(0,o.createComponentVNode)(2,c.Window,{width:600,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.InterfaceLockNoticeBox,{accessText:"a QM-level ID card"}),!a.locked&&(0,o.createComponentVNode)(2,d)]})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Express",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(l.points)})," credits"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Landing Location",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Cargo Bay",selected:!l.usingBeacon,onClick:function(){return c("LZCargo")}}),(0,o.createComponentVNode)(2,a.Button,{selected:l.usingBeacon,disabled:!l.hasBeacon,onClick:function(){return c("LZBeacon")},children:[l.beaconzone," (",l.beaconName,")"]}),(0,o.createComponentVNode)(2,a.Button,{content:l.printMsg,disabled:!l.canBuyBeacon,onClick:function(){return c("printBeacon")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Notice",children:l.message})]})}),(0,o.createComponentVNode)(2,i.CargoCatalog,{express:!0})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.CargoHoldTerminal=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.CargoHoldTerminal=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.points,u=l.pad,s=l.sending,m=l.status_report;return(0,o.createComponentVNode)(2,c.Window,{width:600,height:230,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Cargo Value",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(d)})," credits"]})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Pad",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Recalculate Value",disabled:!u,onClick:function(){return i("recalc")}}),(0,o.createComponentVNode)(2,a.Button,{icon:s?"times":"arrow-up",content:s?"Stop Sending":"Send Goods",selected:s,disabled:!u,onClick:function(){return i(s?"stop":"send")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:u?"good":"bad",children:u?"Online":"Not Found"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cargo Report",children:m})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CellularEmporium=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.CellularEmporium=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.abilities;return(0,o.createComponentVNode)(2,c.Window,{width:900,height:480,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Genetic Points",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"Readapt",disabled:!l.can_readapt,onClick:function(){return i("readapt")}}),children:l.genetic_points_remaining})})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.name,buttons:(0,o.createFragment)([e.dna_cost," ",(0,o.createComponentVNode)(2,a.Button,{content:e.owned?"Evolved":"Evolve",selected:e.owned,onClick:function(){return i("evolve",{name:e.name})}})],0),children:[e.desc,(0,o.createComponentVNode)(2,a.Box,{color:"good",children:e.helptext})]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CentcomPodLauncherContent=t.CentcomPodLauncher=void 0;var o=n(0),r=(n(19),n(2)),a=n(1),c=n(3);t.CentcomPodLauncher=function(){return(0,o.createComponentVNode)(2,c.Window,{title:"Config/Launch Supply Pod",width:700,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:"To use this, simply spawn the atoms you want in one of the five Centcom Supplypod Bays. Items in the bay will then be launched inside your supplypod, one turf-full at a time! You can optionally use the following buttons to configure how the supplypod acts."}),(0,o.createComponentVNode)(2,a.Section,{title:"Centcom Pod Customization (To be used against Helen Weinstein)",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supply Bay",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bay #1",selected:1===i.bayNumber,onClick:function(){return c("bay1")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #2",selected:2===i.bayNumber,onClick:function(){return c("bay2")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #3",selected:3===i.bayNumber,onClick:function(){return c("bay3")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #4",selected:4===i.bayNumber,onClick:function(){return c("bay4")}}),(0,o.createComponentVNode)(2,a.Button,{content:"ERT Bay",selected:5===i.bayNumber,tooltip:"This bay is located on the western edge of CentCom. Its the\nglass room directly west of where ERT spawn, and south of the\nCentCom ferry. Useful for launching ERT/Deathsquads/etc. onto\nthe station via drop pods.",onClick:function(){return c("bay5")}})]}),!!i.effectReverse&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Reverse Drop",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Pick Dropoff Location",selected:i.picking_dropoff_turf,disabled:!i.effectReverse,tooltip:"[NOTE: ONLY WORKS WHEN REVERSE MODE IS ACTIVE]\nThis will allow you to select a dropoff turf. After\nselecting a turf, any pod in 'Reverse Mode' will drop off\nit's newly gotten cargo on this turf. Can be used to\ntransport things or people around the station in a neat,\nIC way. Try doing this with the 'Seethrough Pod' style\nenabled for extra fun!",onClick:function(){return c("pickDropoffTurf")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Dropoff Location",disabled:!i.dropoff_turf,tooltip:"Clears the selected dropoff turf for reverse mode.",onClick:function(){return c("clearDropoffTurf")}}),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Reverse Drop-off Location:"),i.dropoff_turf?i.dropoff_turf:"None"],0)]}),!i.effectReverse&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Reverse Drop",children:(0,o.createVNode)(1,"p",null,"[Enable Reverse Mode for this feature]",16)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleport to",children:[(0,o.createComponentVNode)(2,a.Button,{content:i.bay,onClick:function(){return c("teleportCentcom")}}),(0,o.createComponentVNode)(2,a.Button,{content:i.oldArea?i.oldArea:"Where you were",disabled:!i.oldArea,onClick:function(){return c("teleportBack")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Item Mode",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Clone Items",selected:i.launchClone,tooltip:"Choosing this will create a duplicate of the item to be\nlaunched in Centcom, allowing you to send one type of item\nmultiple times. Either way, the atoms are forceMoved into\nthe supplypod after it lands (but before it opens).",onClick:function(){return c("launchClone")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random Items",selected:i.launchRandomItem,tooltip:"Choosing this will pick a random item from the selected turf\ninstead of the entire turfs contents. Best combined with\nsingle/random turf.",onClick:function(){return c("launchRandomItem")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Launch style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Ordered",selected:1===i.launchChoice,tooltip:'Instead of launching everything in the bay at once, this\nwill "scan" things (one turf-full at a time) in order, left\nto right and top to bottom. undoing will reset the "scanner"\nto the top-leftmost position.',onClick:function(){return c("launchOrdered")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random Turf",selected:2===i.launchChoice,tooltip:"Instead of launching everything in the bay at once, this\nwill launch one random turf of items at a time.",onClick:function(){return c("launchRandomTurf")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Explosion",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Size",selected:1===i.explosionChoice,tooltip:"This will cause an explosion of whatever size you like\n(including flame range) to occur as soon as the supplypod\nlands. Dont worry, supply-pods are explosion-proof!",onClick:function(){return c("explosionCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Adminbus",selected:2===i.explosionChoice,tooltip:"This will cause a maxcap explosion (dependent on server\nconfig) to occur as soon as the supplypod lands. Dont worry,\nsupply-pods are explosion-proof!",onClick:function(){return c("explosionBus")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Damage",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Damage",selected:1===i.damageChoice,tooltip:"Anyone caught under the pod when it lands will be dealt\nthis amount of brute damage. Sucks to be them!",onClick:function(){return c("damageCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Gib",selected:2===i.damageChoice,tooltip:"This will attempt to gib any mob caught under the pod when\nit lands, as well as dealing a nice 5000 brute damage. Ya\nknow, just to be sure!",onClick:function(){return c("damageGib")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Effects",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Projectile Cloud",selected:i.effectShrapnel,tooltip:"This will create a cloud of shrapnel on landing,\nof any projectile you'd like!",onClick:function(){return c("effectShrapnel")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stun",selected:i.effectStun,tooltip:"Anyone who is on the turf when the supplypod is launched\nwill be stunned until the supplypod lands. They cant get\naway that easy!",onClick:function(){return c("effectStun")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Delimb",selected:i.effectLimb,tooltip:"This will cause anyone caught under the pod to lose a limb,\nexcluding their head.",onClick:function(){return c("effectLimb")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Yeet Organs",selected:i.effectOrgans,tooltip:"This will cause anyone caught under the pod to lose all\ntheir limbs and organs in a spectacular fashion.",onClick:function(){return c("effectOrgans")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Movement",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bluespace",selected:i.effectBluespace,tooltip:"Gives the supplypod an advanced Bluespace Recyling Device.\nAfter opening, the supplypod will be warped directly to the\nsurface of a nearby NT-designated trash planet (/r/ss13).",onClick:function(){return c("effectBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stealth",selected:i.effectStealth,tooltip:'This hides the red target icon from appearing when you\nlaunch the supplypod. Combos well with the "Invisible"\nstyle. Sneak attack, go!',onClick:function(){return c("effectStealth")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Quiet",selected:i.effectQuiet,tooltip:"This will keep the supplypod from making any sounds, except\nfor those specifically set by admins in the Sound section.",onClick:function(){return c("effectQuiet")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Reverse Mode",selected:i.effectReverse,tooltip:"This pod will not send any items. Instead, after landing,\nthe supplypod will close (similar to a normal closet closing),\nand then launch back to the right centcom bay to drop off any\nnew contents.",onClick:function(){return c("effectReverse")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile Mode",selected:i.effectMissile,tooltip:"This pod will not send any items. Instead, it will immediately\ndelete after landing (Similar visually to setting openDelay\n& departDelay to 0, but this looks nicer). Useful if you just\nwanna fuck some shit up. Combos well with the Missile style.",onClick:function(){return c("effectMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Any Descent Angle",selected:i.effectCircle,tooltip:"This will make the supplypod come in from any angle. Im not\nsure why this feature exists, but here it is.",onClick:function(){return c("effectCircle")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Machine Gun Mode",selected:i.effectBurst,tooltip:"This will make each click launch 5 supplypods inaccuratly\naround the target turf (a 3x3 area). Combos well with the\nMissile Mode if you dont want shit lying everywhere after.",onClick:function(){return c("effectBurst")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Specific Target",selected:i.effectTarget,tooltip:"This will make the supplypod target a specific atom, instead\nof the mouses position. Smiting does this automatically!",onClick:function(){return c("effectTarget")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name/Desc",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Name/Desc",selected:i.effectName,tooltip:"Allows you to add a custom name and description.",onClick:function(){return c("effectName")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Alert Ghosts",selected:i.effectAnnounce,tooltip:"Alerts ghosts when a pod is launched. Useful if some dumb\nshit is aboutta come outta the pod.",onClick:function(){return c("effectAnnounce")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sound",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Sound",selected:i.fallingSound,tooltip:"Choose a sound to play as the pod falls. Note that for this\nto work right you should know the exact length of the sound,\nin seconds.",onClick:function(){return c("fallSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Sound",selected:i.landingSound,tooltip:"Choose a sound to play when the pod lands.",onClick:function(){return c("landingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Sound",selected:i.openingSound,tooltip:"Choose a sound to play when the pod opens.",onClick:function(){return c("openingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Sound",selected:i.leavingSound,tooltip:"Choose a sound to play when the pod departs (whether that be\ndelection in the case of a bluespace pod, or leaving for\ncentcom for a reversing pod).",onClick:function(){return c("leavingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Admin Sound Volume",selected:i.soundVolume,tooltip:"Choose the volume for the sound to play at. Default values\nare between 1 and 100, but hey, do whatever. Im a tooltip,\nnot a cop.",onClick:function(){return c("soundVolume")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timers",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Duration",selected:4!==i.fallDuration,tooltip:"Set how long the animation for the pod falling lasts. Create\ndramatic, slow falling pods!",onClick:function(){return c("fallDuration")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Time",selected:20!==i.landingDelay,tooltip:"Choose the amount of time it takes for the supplypod to hit\nthe station. By default this value is 0.5 seconds.",onClick:function(){return c("landingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Time",selected:30!==i.openingDelay,tooltip:"Choose the amount of time it takes for the supplypod to open\nafter landing. Useful for giving whatevers inside the pod a\nnice dramatic entrance! By default this value is 3 seconds.",onClick:function(){return c("openingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Time",selected:30!==i.departureDelay,tooltip:"Choose the amount of time it takes for the supplypod to leave\nafter landing. By default this value is 3 seconds.",onClick:function(){return c("departureDelay")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.styleChoice,tooltip:"Same color scheme as the normal station-used supplypods",onClick:function(){return c("styleStandard")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.styleChoice,tooltip:"The same as the stations upgraded blue-and-white\nBluespace Supplypods",onClick:function(){return c("styleBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate",selected:4===i.styleChoice,tooltip:"A menacing black and blood-red. Great for sending meme-ops\nin style!",onClick:function(){return c("styleSyndie")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Deathsquad",selected:5===i.styleChoice,tooltip:"A menacing black and dark blue. Great for sending deathsquads\nin style!",onClick:function(){return c("styleBlue")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Cult Pod",selected:6===i.styleChoice,tooltip:"A blood and rune covered cult pod!",onClick:function(){return c("styleCult")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile",selected:7===i.styleChoice,tooltip:"A large missile. Combos well with a missile mode, so the\nmissile doesnt stick around after landing.",onClick:function(){return c("styleMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate Missile",selected:8===i.styleChoice,tooltip:"A large blood-red missile. Combos well with missile mode,\nso the missile doesnt stick around after landing.",onClick:function(){return c("styleSMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Supply Crate",selected:9===i.styleChoice,tooltip:"A large, dark-green military supply crate.",onClick:function(){return c("styleBox")}}),(0,o.createComponentVNode)(2,a.Button,{content:"HONK",selected:10===i.styleChoice,tooltip:"A colorful, clown inspired look.",onClick:function(){return c("styleHONK")}}),(0,o.createComponentVNode)(2,a.Button,{content:"~Fruit",selected:11===i.styleChoice,tooltip:"For when an orange is angry",onClick:function(){return c("styleFruit")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Invisible",selected:12===i.styleChoice,tooltip:'Makes the supplypod invisible! Useful for when you want to\nuse this feature with a gateway or something. Combos well\nwith the "Stealth" and "Quiet Landing" effects.',onClick:function(){return c("styleInvisible")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Gondola",selected:13===i.styleChoice,tooltip:"This gondola can control when he wants to deliver his supplies\nif he has a smart enough mind, so offer up his body to ghosts\nfor maximum enjoyment. (Make sure to turn off bluespace and\nset an arbitrarily high open-time if you do!",onClick:function(){return c("styleGondola")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Show Contents (See Through Pod)",selected:14===i.styleChoice,tooltip:"By selecting this, the pod will instead look like whatevers\ninside it (as if it were the contents falling by themselves,\nwithout a pod). Useful for launching mechs at the station\nand standing tall as they soar in from the heavens.",onClick:function(){return c("styleSeeThrough")}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:i.numObjects+" turfs in "+i.bay,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"undo Pod Bay",tooltip:"Manually undoes the possible things to launch in the\npod bay.",onClick:function(){return c("undo")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Enter Launch Mode",selected:i.giveLauncher,tooltip:"THE CODEX ASTARTES CALLS THIS MANEUVER: STEEL RAIN",onClick:function(){return c("giveLauncher")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Selected Bay",color:"bad",tooltip:"This will delete all objs and mobs from the selected bay.",tooltipPosition:"left",onClick:function(){return c("clearBay")}})],4)})})})],4)};t.CentcomPodLauncherContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.ChemAcclimator=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ChemAcclimator=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:320,height:271,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Acclimator",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:[l.chem_temp," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.target_temperature,unit:"K",width:"59px",minValue:0,maxValue:1e3,step:5,stepPixelSize:2,onChange:function(e,t){return i("set_target_temperature",{temperature:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Acceptable Temp. Difference",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.allowed_temperature_difference,unit:"K",width:"59px",minValue:1,maxValue:l.target_temperature,stepPixelSize:2,onChange:function(e,t){i("set_allowed_temperature_difference",{temperature:t})}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:l.enabled?"On":"Off",selected:l.enabled,onClick:function(){return i("toggle_power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.max_volume,unit:"u",width:"50px",minValue:l.reagent_volume,maxValue:200,step:2,stepPixelSize:2,onChange:function(e,t){return i("change_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Operation",children:l.acclimate_state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current State",children:l.emptying?"Emptying":"Filling"})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDebugSynthesizer=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ChemDebugSynthesizer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.amount,u=l.beakerCurrentVolume,s=l.beakerMaxVolume,m=l.isBeakerLoaded,p=l.beakerContents,C=void 0===p?[]:p;return(0,o.createComponentVNode)(2,c.Window,{width:390,height:330,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Recipient",buttons:m?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return i("ejectBeaker")}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"u",minValue:1,maxValue:s,step:1,stepPixelSize:2,onChange:function(e,t){return i("amount",{amount:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Input",onClick:function(){return i("input")}})],4):(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Create Beaker",onClick:function(){return i("makecup")}}),children:m?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})," / "+s+" u"]}),C.length>0?(0,o.createComponentVNode)(2,a.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[e.volume," u"]},e.name)}))}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Recipient Empty"})],0):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Recipient"})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDispenser=void 0;var o=n(0),r=n(11),a=n(19),c=n(2),i=n(1),l=n(3);t.ChemDispenser=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=!!u.recordingRecipe,m=Object.keys(u.recipes).map((function(e){return{name:e,contents:u.recipes[e]}})),p=u.beakerTransferAmounts||[],C=s&&Object.keys(u.recordingRecipe).map((function(e){return{id:e,name:(0,a.toTitleCase)(e.replace(/_/," ")),volume:u.recordingRecipe[e]}}))||u.beakerContents||[];return(0,o.createComponentVNode)(2,l.Window,{width:565,height:620,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:s&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,color:"red",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"circle",mr:1}),"Recording"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Energy",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:u.energy/u.maxEnergy,children:(0,r.toFixed)(u.energy)+" units"})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Recipes",buttons:(0,o.createFragment)([!s&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,children:(0,o.createComponentVNode)(2,i.Button,{color:"transparent",content:"Clear recipes",onClick:function(){return d("clear_recipes")}})}),!s&&(0,o.createComponentVNode)(2,i.Button,{icon:"circle",disabled:!u.isBeakerLoaded,content:"Record",onClick:function(){return d("record_recipe")}}),s&&(0,o.createComponentVNode)(2,i.Button,{icon:"ban",color:"transparent",content:"Discard",onClick:function(){return d("cancel_recording")}}),s&&(0,o.createComponentVNode)(2,i.Button,{icon:"save",color:"green",content:"Save",onClick:function(){return d("save_recording")}})],0),children:(0,o.createComponentVNode)(2,i.Box,{mr:-1,children:[m.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",width:"129.5px",lineHeight:1.75,content:e.name,onClick:function(){return d("dispense_recipe",{recipe:e.name})}},e.name)})),0===m.length&&(0,o.createComponentVNode)(2,i.Box,{color:"light-gray",children:"No recipes."})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Dispense",buttons:p.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"plus",selected:e===u.amount,content:e,onClick:function(){return d("amount",{target:e})}},e)})),children:(0,o.createComponentVNode)(2,i.Box,{mr:-1,children:u.chemicals.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",width:"129.5px",lineHeight:1.75,content:e.title,onClick:function(){return d("dispense",{reagent:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:p.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"minus",disabled:s,content:e,onClick:function(){return d("remove",{amount:e})}},e)})),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Beaker",buttons:!!u.isBeakerLoaded&&(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",disabled:!u.isBeakerLoaded,onClick:function(){return d("eject")}}),children:(s?"Virtual beaker":u.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.AnimatedNumber,{initial:0,value:u.beakerCurrentVolume}),(0,o.createTextVNode)("/"),u.beakerMaxVolume,(0,o.createTextVNode)(" units")],0))||"No beaker"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Contents",children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",children:u.isBeakerLoaded||s?0===C.length&&"Nothing":"N/A"}),C.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{color:"label",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{initial:0,value:e.volume})," ","units of ",e.name]},e.name)}))]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemFilter=t.ChemFilterPane=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=function(e,t){var n=(0,r.useBackend)(t).act,c=e.title,i=e.list,l=e.reagentName,d=e.onReagentInput,u=c.toLowerCase();return(0,o.createComponentVNode)(2,a.Section,{title:c,minHeight:"240px",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Input,{placeholder:"Reagent",width:"140px",onInput:function(e,t){return d(t)}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",onClick:function(){return n("add",{which:u,name:l})}})],4),children:i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:e,onClick:function(){return n("remove",{which:u,reagent:e})}})],4,e)}))})};t.ChemFilterPane=i;t.ChemFilter=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data),d=l.left,u=void 0===d?[]:d,s=l.right,m=void 0===s?[]:s,p=(0,r.useLocalState)(t,"leftName",""),C=p[0],h=p[1],N=(0,r.useLocalState)(t,"rightName",""),V=N[0],b=N[1];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i,{title:"Left",list:u,reagentName:C,onReagentInput:function(e){return h(e)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i,{title:"Right",list:m,reagentName:V,onReagentInput:function(e){return b(e)}})})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemHeater=void 0;var o=n(0),r=n(11),a=n(2),c=n(1),i=n(3),l=n(204);t.ChemHeater=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=u.targetTemp,m=u.isActive,p=u.isBeakerLoaded,C=u.currentTemp,h=u.beakerCurrentVolume,N=u.beakerMaxVolume,V=u.beakerContents,b=void 0===V?[]:V;u.currentpH;return(0,o.createComponentVNode)(2,i.Window,{width:300,height:320,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"Thermostat",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return d("power")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,c.NumberInput,{width:"65px",unit:"K",step:10,stepPixelSize:3,value:(0,r.round)(s),minValue:0,maxValue:1e3,onDrag:function(e,t){return d("temperature",{target:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Reading",children:(0,o.createComponentVNode)(2,c.Box,{width:"60px",textAlign:"right",children:p&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:C,format:function(e){return(0,r.toFixed)(e)+" K"}})||"\u2014"})})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",buttons:!!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"label",mr:2,children:[h," / ",N," units,",u.currentpH," pH"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",onClick:function(){return d("eject")}})],4),children:(0,o.createComponentVNode)(2,l.BeakerContents,{beakerLoaded:p,beakerContents:b})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemMaster=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ChemMaster=function(e,t){var n=(0,r.useBackend)(t).data.screen;return(0,o.createComponentVNode)(2,c.Window,{width:465,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:"analyze"===n&&(0,o.createComponentVNode)(2,m)||(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,u=i.screen,p=i.beakerContents,C=void 0===p?[]:p,h=i.bufferContents,N=void 0===h?[]:h,V=i.beakerCurrentVolume,b=i.beakerMaxVolume,f=i.isBeakerLoaded,g=i.isPillBottleLoaded,v=i.pillBottleCurrentAmount,k=i.pillBottleMaxAmount;return"analyze"===u?(0,o.createComponentVNode)(2,m):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:!!i.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:V,initial:0})," / "+b+" units"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}})],4),children:[!f&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"No beaker loaded."}),!!f&&0===C.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Beaker is empty."}),(0,o.createComponentVNode)(2,l,{children:C.map((function(e){return(0,o.createComponentVNode)(2,d,{chemical:e,transferTo:"buffer"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Buffer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:1,children:"Mode:"}),(0,o.createComponentVNode)(2,a.Button,{color:i.mode?"good":"bad",icon:i.mode?"exchange-alt":"times",content:i.mode?"Transfer":"Destroy",onClick:function(){return c("toggleMode")}})],4),children:[0===N.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Buffer is empty."}),(0,o.createComponentVNode)(2,l,{children:N.map((function(e){return(0,o.createComponentVNode)(2,d,{chemical:e,transferTo:"beaker"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Packaging",children:(0,o.createComponentVNode)(2,s)}),!!g&&(0,o.createComponentVNode)(2,a.Section,{title:"Pill Bottle",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[v," / ",k," pills"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("ejectPillBottle")}})],4)})],0)},l=a.Table,d=function(e,t){var n=(0,r.useBackend)(t).act,c=e.chemical,i=e.transferTo;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.volume,initial:0})," units of "+c.name]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"1",onClick:function(){return n("transfer",{id:c.id,amount:1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"5",onClick:function(){return n("transfer",{id:c.id,amount:5,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"10",onClick:function(){return n("transfer",{id:c.id,amount:10,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"All",onClick:function(){return n("transfer",{id:c.id,amount:1e3,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"ellipsis-h",title:"Custom amount",onClick:function(){return n("transfer",{id:c.id,amount:-1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"question",title:"Analyze",onClick:function(){return n("analyze",{id:c.id})}})]})]},c.id)},u=function(e){var t=e.label,n=e.amountUnit,r=e.amount,c=e.onChangeAmount,i=e.onCreate,l=e.sideNote;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,children:[(0,o.createComponentVNode)(2,a.NumberInput,{width:"84px",unit:n,step:1,stepPixelSize:15,value:r,minValue:1,maxValue:10,onChange:c}),(0,o.createComponentVNode)(2,a.Button,{ml:1,content:"Create",onClick:i}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,ml:1,color:"label",children:l})]})},s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=(0,r.useSharedState)(t,"pillAmount",1),d=l[0],s=l[1],m=(0,r.useSharedState)(t,"patchAmount",1),p=m[0],C=m[1],h=(0,r.useSharedState)(t,"bottleAmount",1),N=h[0],V=h[1],b=(0,r.useSharedState)(t,"packAmount",1),f=b[0],g=b[1],v=(0,r.useSharedState)(t,"setvialAmount",1),k=v[0],x=v[1],B=(0,r.useSharedState)(t,"setdartAmount",1),_=B[0],w=B[1],L=i.condi,y=i.chosenPillStyle,S=i.pillStyles,I=void 0===S?[]:S;return(0,o.createComponentVNode)(2,a.LabeledList,{children:[!L&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill type",children:I.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"30px",selected:e.id===y,textAlign:"center",color:"transparent",onClick:function(){return c("pillStyle",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.className})},e.id)}))}),!L&&(0,o.createComponentVNode)(2,u,{label:"Pills",amount:d,amountUnit:"pills",sideNote:"max 50u",onChangeAmount:function(e,t){return s(t)},onCreate:function(){return c("create",{type:"pill",amount:d,volume:"auto"})}}),!L&&(0,o.createComponentVNode)(2,u,{label:"Patches",amount:p,amountUnit:"patches",sideNote:"max 40u",onChangeAmount:function(e,t){return C(t)},onCreate:function(){return c("create",{type:"patch",amount:p,volume:"auto"})}}),!L&&(0,o.createComponentVNode)(2,u,{label:"Bottles",amount:N,amountUnit:"bottles",sideNote:"max 30u",onChangeAmount:function(e,t){return V(t)},onCreate:function(){return c("create",{type:"bottle",amount:N,volume:"auto"})}}),!L&&(0,o.createComponentVNode)(2,u,{label:"Hypovials",amount:k,amountUnit:"vials",sideNote:"max 60u",onChangeAmount:function(e,t){return x(t)},onCreate:function(){return c("create",{type:"hypoVial",amount:k,volume:"auto"})}}),!L&&(0,o.createComponentVNode)(2,u,{label:"Smartdarts",amount:_,amountUnit:"darts",sideNote:"max 20u",onChangeAmount:function(e,t){return w(t)},onCreate:function(){return c("create",{type:"smartDart",amount:_,volume:"auto"})}}),!!L&&(0,o.createComponentVNode)(2,u,{label:"Packs",amount:f,amountUnit:"packs",sideNote:"max 10u",onChangeAmount:function(e,t){return g(t)},onCreate:function(){return c("create",{type:"condimentPack",amount:f,volume:"auto"})}}),!!L&&(0,o.createComponentVNode)(2,u,{label:"Bottles",amount:N,amountUnit:"bottles",sideNote:"max 50u",onChangeAmount:function(e,t){return V(t)},onCreate:function(){return c("create",{type:"condimentBottle",amount:N,volume:"auto"})}})]})},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.fermianalyze,d=i.analyzeVars;return(0,o.createComponentVNode)(2,a.Section,{title:"Analysis Results",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return c("goScreen",{screen:"home"})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",children:d.state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,a.ColorBox,{color:d.color,mr:1}),d.color]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:d.description}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Metabolization Rate",children:[d.metaRate," u/minute"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overdose Threshold",children:d.overD}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Addiction Threshold",children:d.addicD}),!!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Purity",children:d.purityF}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inverse Ratio",children:d.inverseRatioF}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Purity E",children:d.purityE}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Lower Optimal Temperature",children:d.minTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upper Optimal Temperature",children:d.maxTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Explosive Temperature",children:d.eTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"pH Peak",children:d.pHpeak})],4)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemPress=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ChemPress=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.current_volume,u=l.product_name,s=l.pill_style,m=l.pill_styles,p=void 0===m?[]:m,C=l.product,h=l.min_volume,N=l.max_volume;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:227,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Product",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Pills",checked:"pill"===C,onClick:function(){return i("change_product",{product:"pill"})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Patches",checked:"patch"===C,onClick:function(){return i("change_product",{product:"patch"})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Bottles",checked:"bottle"===C,onClick:function(){return i("change_product",{product:"bottle"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"u",width:"43px",minValue:h,maxValue:N,step:1,stepPixelSize:2,onChange:function(e,t){return i("change_current_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:u,placeholder:u,onChange:function(e,t){return i("change_product_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Box,{as:"span",children:C})]}),"pill"===C&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Style",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"30px",selected:e.id===s,textAlign:"center",color:"transparent",onClick:function(){return i("change_pill_style",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.class_name})},e.id)}))})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemReactionChamber=void 0;var o=n(0),r=n(14),a=n(6),c=n(2),i=n(1),l=n(3);t.ChemReactionChamber=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=(0,c.useLocalState)(t,"reagentName",""),m=s[0],p=s[1],C=(0,c.useLocalState)(t,"reagentQuantity",1),h=C[0],N=C[1],V=u.emptying,b=u.reagents||[];return(0,o.createComponentVNode)(2,l.Window,{width:250,height:225,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Reagents",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,color:V?"bad":"good",children:V?"Emptying":"Filling"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createVNode)(1,"tr","LabledList__row",[(0,o.createVNode)(1,"td","LabeledList__cell",(0,o.createComponentVNode)(2,i.Input,{fluid:!0,value:"",placeholder:"Reagent Name",onInput:function(e,t){return p(t)}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td",(0,a.classes)(["LabeledList__buttons","LabeledList__cell"]),[(0,o.createComponentVNode)(2,i.NumberInput,{value:h,minValue:1,maxValue:100,step:1,stepPixelSize:3,width:"39px",onDrag:function(e,t){return N(t)}}),(0,o.createComponentVNode)(2,i.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return d("add",{chem:m,amount:h})}})],4)],4),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:t,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"minus",color:"bad",onClick:function(){return d("remove",{chem:t})}}),children:e},t)}))(b)]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemSplitter=void 0;var o=n(0),r=n(11),a=n(2),c=n(1),i=n(3);t.ChemSplitter=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.straight,s=d.side,m=d.max_transfer;return(0,o.createComponentVNode)(2,i.Window,{width:220,height:105,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Straight",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:u,unit:"u",width:"55px",minValue:1,maxValue:m,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return l("set_amount",{target:"straight",amount:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Side",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:s,unit:"u",width:"55px",minValue:1,maxValue:m,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return l("set_amount",{target:"side",amount:t})}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemSynthesizer=void 0;var o=n(0),r=n(11),a=n(2),c=n(1),i=n(3);t.ChemSynthesizer=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.amount,s=d.current_reagent,m=d.chemicals,p=void 0===m?[]:m,C=d.possible_amounts,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,i.Window,{width:300,height:375,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Box,{children:h.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"plus",content:(0,r.toFixed)(e,0),selected:e===u,onClick:function(){return l("amount",{target:e})}},(0,r.toFixed)(e,0))}))}),(0,o.createComponentVNode)(2,c.Box,{mt:1,children:p.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"tint",content:e.title,width:"129px",selected:e.id===s,onClick:function(){return l("select",{reagent:e.id})}},e.id)}))})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CivCargoHoldTerminal=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.CivCargoHoldTerminal=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.pad,s=d.sending,m=d.status_report,p=d.id_inserted,C=d.id_bounty_info;d.id_bounty_value,d.id_bounty_num;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,width:500,height:375,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{color:p?"blue":"default",children:p?"Welcome valued employee.":"To begin, insert your ID into the console."}),(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Pad",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:u?"good":"bad",children:u?"Online":"Not Found"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cargo Report",children:m})]})}),(0,o.createComponentVNode)(2,i)]}),(0,o.createComponentVNode)(2,a.Flex.Item,{m:1,children:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"sync",content:"Check Contents",disabled:!u||!p,onClick:function(){return l("recalc")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:s?"times":"arrow-up",content:s?"Stop Sending":"Send Goods",selected:s,disabled:!u||!p,onClick:function(){return l(s?"stop":"send")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:C?"recycle":"pen",color:C?"green":"default",content:C?"Replace Bounty":"New Bounty",disabled:!p,onClick:function(){return l("bounty")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Eject",disabled:!p,onClick:function(){return l("eject")}})],4)})]})})})};var i=function(e,t){var n=(0,r.useBackend)(t).data,c=n.id_bounty_info,i=n.id_bounty_value,l=n.id_bounty_num;return(0,o.createComponentVNode)(2,a.Section,{title:"Bounty Info",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:c||"N/A, please add a new bounty."}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Quantity",children:c?l:"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Value",children:c?i:"N/A"})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ClockworkSlab=void 0;for(var o=n(0),r=n(2),a=n(14),c=n(1),i=n(3),l="",d=0;d=w,tooltip:e.tip,tooltipPosition:"left",onClick:function(){return d("recite",{script:e.type})},children:"Recite "+e.required})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,disabled:!e.quickbind,onClick:function(){return d("bind",{script:e.type})},children:["content=",e.bound?"Unbind "+e.bound:"Quickbind"]})})]},e.name)}))})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CodexGigas=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=["Dark","Hellish","Fallen","Fiery","Sinful","Blood","Fluffy"],l=["Lord","Prelate","Count","Viscount","Vizier","Elder","Adept"],d=["hal","ve","odr","neit","ci","quon","mya","folth","wren","geyr","hil","niet","twou","phi","coa"],u=["the Red","the Soulless","the Master","the Lord of all things","Jr."];t.CodexGigas=function(e,t){var n=(0,r.useBackend)(t),s=n.act,m=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:450,height:450,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[m.name,(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prefix",children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:1!==m.currentSection,onClick:function(){return s(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Title",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:m.currentSection>2,onClick:function(){return s(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:m.currentSection>4,onClick:function(){return s(e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suffix",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:4!==m.currentSection,onClick:function(){return s(" "+e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Submit",children:(0,o.createComponentVNode)(2,a.Button,{content:"Search",disabled:m.currentSection<4,onClick:function(){return s("search")}})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ComputerFabricator=void 0;var o=n(0),r=(n(19),n(2)),a=n(1),c=n(3);t.ComputerFabricator=function(e,t){var n=(0,r.useBackend)(t),s=n.act,m=n.data;return(0,o.createComponentVNode)(2,c.Window,{title:"Personal Computer Vendor",width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{italic:!0,fontSize:"20px",children:"Your perfect device, only three steps away..."}),0!==m.state&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mb:1,icon:"circle",content:"Clear Order",onClick:function(){return s("clean_order")}}),0===m.state&&(0,o.createComponentVNode)(2,i),1===m.state&&(0,o.createComponentVNode)(2,l),2===m.state&&(0,o.createComponentVNode)(2,d),3===m.state&&(0,o.createComponentVNode)(2,u)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 1",minHeight:"306px",children:[(0,o.createComponentVNode)(2,a.Box,{mt:5,bold:!0,textAlign:"center",fontSize:"40px",children:"Choose your Device"}),(0,o.createComponentVNode)(2,a.Box,{mt:3,children:(0,o.createComponentVNode)(2,a.Grid,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"laptop",content:"Laptop",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return c("pick_device",{pick:"1"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"tablet-alt",content:"Tablet",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return c("pick_device",{pick:"2"})}})})]})})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 2: Customize your device",minHeight:"282px",buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"good",children:[i.totalprice," cr"]}),children:[(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Battery:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to operate without external utility power\nsource. Advanced batteries increase battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Hard Drive:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Stores file on your device. Advanced drives can store more\nfiles, but use more power, shortening battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Network Card:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to wirelessly connect to stationwide NTNet\nnetwork. Basic cards are limited to on-station use, while\nadvanced cards can operate anywhere near the station, which\nincludes asteroid outposts",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Nano Printer:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A device that allows for various paperwork manipulations,\nsuch as, scanning of documents or printing new ones.\nThis device was certified EcoFriendlyPlus and is capable of\nrecycling existing paper for printing purposes.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_nanoprint,onClick:function(){return c("hw_nanoprint",{print:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_nanoprint,onClick:function(){return c("hw_nanoprint",{print:"1"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Secondary Card Reader:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Adds a secondary RFID card reader, for manipulating or\nreading from a second standard RFID card.\nPlease note that a primary card reader is necessary to\nallow the device to read your identification, but one\nis included in the base price.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_card,onClick:function(){return c("hw_card",{card:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_card,onClick:function(){return c("hw_card",{card:"1"})}})})]}),2!==i.devtype&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Processor Unit:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A component critical for your device's functionality.\nIt allows you to run programs from your hard drive.\nAdvanced CPUs use more power, but allow you to run\nmore programs on background at once.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_cpu,onClick:function(){return c("hw_cpu",{cpu:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_cpu,onClick:function(){return c("hw_cpu",{cpu:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Tesla Relay:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"An advanced wireless power relay that allows your device\nto connect to nearby area power controller to provide\nalternative power source. This component is currently\nunavailable on tablet computers due to size restrictions.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_tesla,onClick:function(){return c("hw_tesla",{tesla:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_tesla,onClick:function(){return c("hw_tesla",{tesla:"1"})}})})]})],4)]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:3,content:"Confirm Order",color:"good",textAlign:"center",fontSize:"18px",lineHeight:2,onClick:function(){return c("confirm_order")}})]})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 3: Payment",minHeight:"282px",children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,textAlign:"center",fontSize:"20px",children:"Your device is ready for fabrication..."}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:2,textAlign:"center",fontSize:"16px",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:"Please insert the required"})," ",(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:[i.totalprice," cr"]})]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:1,textAlign:"center",fontSize:"18px",children:"Current:"}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:.5,textAlign:"center",fontSize:"18px",color:i.credits>=i.totalprice?"good":"bad",children:[i.credits," cr"]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Purchase",disabled:i.credits=10&&e<20?c.COLORS.department.security:e>=20&&e<30?c.COLORS.department.medbay:e>=30&&e<40?c.COLORS.department.science:e>=40&&e<50?c.COLORS.department.engineering:e>=50&&e<60?c.COLORS.department.cargo:e>=200&&e<230?c.COLORS.department.centcom:c.COLORS.department.other},u=function(e){var t=e.type,n=e.value;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,width:2,color:c.COLORS.damageType[t],textAlign:"center",children:n})};t.CrewConsole=function(){return(0,o.createComponentVNode)(2,i.Window,{title:"Crew Monitor",width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{minHeight:"540px",children:(0,o.createComponentVNode)(2,s)})})})};var s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,s=i.sensors||[];return(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,textAlign:"center",children:"Vitals"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Position"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,children:"Tracking"})]}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:(C=e.ijob,C%10==0),color:d(e.ijob),children:[e.name," (",e.assignment,")"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,a.ColorBox,{color:(t=e.oxydam,n=e.toxdam,r=e.burndam,s=e.brutedam,m=t+n+r+s,p=Math.min(Math.max(Math.ceil(m/25),0),5),l[p])})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:null!==e.oxydam?(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,u,{type:"oxy",value:e.oxydam}),"/",(0,o.createComponentVNode)(2,u,{type:"toxin",value:e.toxdam}),"/",(0,o.createComponentVNode)(2,u,{type:"burn",value:e.burndam}),"/",(0,o.createComponentVNode)(2,u,{type:"brute",value:e.brutedam})]}):e.life_status?"Alive":"Dead"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:null!==e.pos_x?e.area:"N/A"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{content:"Track",disabled:!e.can_track,onClick:function(){return c("select_person",{name:e.name})}})})]},e.name);var t,n,r,s,m,p,C}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cryo=void 0;var o=n(0),r=n(2),a=n(1),c=n(204),i=n(3),l=[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}];t.Cryo=function(){return(0,o.createComponentVNode)(2,i.Window,{width:400,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,d)})})};var d=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:d.occupant.name||"No Occupant"}),!!d.hasOccupant&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:d.occupant.statstate,children:d.occupant.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",color:d.occupant.temperaturestatus,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant.bodyTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.occupant.health/d.occupant.maxHealth,color:d.occupant.health>0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant.health})})}),l.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.occupant[e.type]/100,children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant[e.type]})})},e.id)}))],0)]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cell",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.isOperating?"power-off":"times",disabled:d.isOpen,onClick:function(){return i("power")},color:d.isOperating&&"green",children:d.isOperating?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.cellTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:[(0,o.createComponentVNode)(2,a.Button,{icon:d.isOpen?"unlock":"lock",onClick:function(){return i("door")},content:d.isOpen?"Open":"Closed"}),(0,o.createComponentVNode)(2,a.Button,{icon:d.autoEject?"sign-out-alt":"sign-in-alt",onClick:function(){return i("autoeject")},content:d.autoEject?"Auto":"Manual"})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!d.isBeakerLoaded,onClick:function(){return i("ejectbeaker")},content:"Eject"}),children:(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:d.isBeakerLoaded,beakerContents:d.beakerContents})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.DecalPainter=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.DecalPainter=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.decal_list||[],u=l.color_list||[],s=l.dir_list||[];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Decal Type",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,selected:e.decal===l.decal_style,onClick:function(){return i("select decal",{decals:e.decal})}},e.decal)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Color",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:"red"===e.colors?"Red":"white"===e.colors?"White":"Yellow",selected:e.colors===l.decal_color,onClick:function(){return i("select color",{colors:e.colors})}},e.colors)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Direction",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:1===e.dirs?"North":2===e.dirs?"South":4===e.dirs?"East":"West",selected:e.dirs===l.decal_direction,onClick:function(){return i("selected direction",{dirs:e.dirs})}},e.dirs)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DisposalUnit=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.DisposalUnit=function(e,t){var n,i,l=(0,r.useBackend)(t),d=l.act,u=l.data;return u.full_pressure?(n="good",i="Ready"):u.panel_open?(n="bad",i="Power Disabled"):u.pressure_charging?(n="average",i="Pressurizing"):(n="bad",i="Off"),(0,o.createComponentVNode)(2,c.Window,{width:300,height:180,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:n,children:i}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.per,color:"good"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Handle",children:(0,o.createComponentVNode)(2,a.Button,{icon:u.flush?"toggle-on":"toggle-off",disabled:u.isai||u.panel_open,content:u.flush?"Disengage":"Engage",onClick:function(){return d(u.flush?"handle-0":"handle-1")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Eject",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sign-out-alt",disabled:u.isai,content:"Eject Contents",onClick:function(){return d("eject")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",disabled:u.panel_open,selected:u.pressure_charging,onClick:function(){return d(u.pressure_charging?"pump-0":"pump-1")}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DnaConsoleCommands=t.DnaConsole=void 0;var o=n(0),r=n(14),a=n(30),c=n(6),i=n(19),l=n(63),d=n(2),u=n(1),s=n(3);var m=["A","T","C","G"],p={A:"green",T:"green",G:"blue",C:"blue",X:"grey"},C={1:"good",2:"bad",4:"average"},h=function(e,t){return e.Alias===t.Alias&&e.AppliedChromo===t.AppliedChromo};t.DnaConsole=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=(n.act,r.isPulsingRads),c=r.radPulseSeconds,i=r.view.consoleMode;return(0,o.createComponentVNode)(2,s.Window,{title:"DNA Console",width:539,height:710,resizable:!0,children:[!!a&&(0,o.createComponentVNode)(2,u.Dimmer,{fontSize:"14px",textAlign:"center",children:[(0,o.createComponentVNode)(2,u.Icon,{mr:1,name:"spinner",spin:!0}),"Radiation pulse in progress...",(0,o.createComponentVNode)(2,u.Box,{mt:1}),c,"s"]}),(0,o.createComponentVNode)(2,s.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,N),(0,o.createComponentVNode)(2,g),"storage"===i&&(0,o.createComponentVNode)(2,k),"sequencer"===i&&(0,o.createComponentVNode)(2,L),"enzymes"===i&&(0,o.createComponentVNode)(2,T)]})]})};var N=function(e,t){return(0,o.createComponentVNode)(2,u.Section,{title:"DNA Scanner",buttons:(0,o.createComponentVNode)(2,V),children:(0,o.createComponentVNode)(2,f)})},V=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDelayedAction,i=r.isPulsingRads,l=r.isScannerConnected,s=r.isScrambleReady,m=r.isViableSubject,p=r.scannerLocked,C=r.scannerOpen,h=r.scrambleSeconds;return l?(0,o.createFragment)([!!c&&(0,o.createComponentVNode)(2,u.Button,{content:"Cancel Delayed Action",onClick:function(){return a("cancel_delay")}}),!!m&&(0,o.createComponentVNode)(2,u.Button,{disabled:!s||i,onClick:function(){return a("scramble_dna")},children:["Scramble DNA",!s&&" ("+h+"s)"]}),(0,o.createComponentVNode)(2,u.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,u.Button,{icon:p?"lock":"lock-open",color:p&&"bad",disabled:C,content:p?"Locked":"Unlocked",onClick:function(){return a("toggle_lock")}}),(0,o.createComponentVNode)(2,u.Button,{disabled:p,content:C?"Close":"Open",onClick:function(){return a("toggle_door")}})],0):(0,o.createComponentVNode)(2,u.Button,{content:"Connect Scanner",onClick:function(){return a("connect_scanner")}})},b=function(e,t){var n=e.status;return 0===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"good",children:"Conscious"}):2===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"average",children:"Unconscious"}):1===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"average",children:"Critical"}):3===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"bad",children:"Dead"}):4===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"bad",children:"Transforming"}):(0,o.createComponentVNode)(2,u.Box,{inline:!0,children:"Unknown"})},f=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=(n.act,r.subjectName),c=r.isScannerConnected,i=r.isViableSubject,l=r.subjectHealth,s=r.subjectRads,m=r.subjectStatus;return c?i?(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Status",children:[a,(0,o.createComponentVNode)(2,u.Icon,{mx:1,color:"label",name:"long-arrow-alt-right"}),(0,o.createComponentVNode)(2,b,{status:m})]}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,u.ProgressBar,{value:l,minValue:0,maxValue:100,ranges:{olive:[101,Infinity],good:[70,101],average:[30,70],bad:[-Infinity,30]},children:[l,"%"]})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Radiation",children:(0,o.createComponentVNode)(2,u.ProgressBar,{value:s,minValue:0,maxValue:100,ranges:{bad:[71,Infinity],average:[30,71],good:[0,30],olive:[-Infinity,0]},children:[s,"%"]})})]}):(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"No viable subject found in DNA Scanner."}):(0,o.createComponentVNode)(2,u.Box,{color:"bad",children:"DNA Scanner is not connected."})},g=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDisk,i=r.isInjectorReady,l=r.injectorSeconds,s=r.view.consoleMode;return(0,o.createComponentVNode)(2,u.Section,{title:"DNA Console",buttons:!i&&(0,o.createComponentVNode)(2,u.Box,{lineHeight:"20px",color:"label",children:["Injector on cooldown (",l,"s)"]}),children:(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,u.Button,{content:"Storage",selected:"storage"===s,onClick:function(){return a("set_view",{consoleMode:"storage"})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Sequencer",disabled:!r.isViableSubject,selected:"sequencer"===s,onClick:function(){return a("set_view",{consoleMode:"sequencer"})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Enzymes",selected:"enzymes"===s,onClick:function(){return a("set_view",{consoleMode:"enzymes"})}})]}),!!c&&(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Disk",children:(0,o.createComponentVNode)(2,u.Button,{icon:"eject",content:"Eject",onClick:function(){a("eject_disk"),a("set_view",{storageMode:"console"})}})})]})})};t.DnaConsoleCommands=g;var v=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDisk,i=r.view,l=i.storageMode,s=i.storageConsSubMode,m=i.storageDiskSubMode;return(0,o.createFragment)(["console"===l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Button,{selected:"mutations"===s,content:"Mutations",onClick:function(){return a("set_view",{storageConsSubMode:"mutations"})}}),(0,o.createComponentVNode)(2,u.Button,{selected:"chromosomes"===s,content:"Chromosomes",onClick:function(){return a("set_view",{storageConsSubMode:"chromosomes"})}})],4),"disk"===l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Button,{selected:"mutations"===m,content:"Mutations",onClick:function(){return a("set_view",{storageDiskSubMode:"mutations"})}}),(0,o.createComponentVNode)(2,u.Button,{selected:"diskenzymes"===m,content:"Enzymes",onClick:function(){return a("set_view",{storageDiskSubMode:"diskenzymes"})}})],4),(0,o.createComponentVNode)(2,u.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,u.Button,{content:"Console",selected:"console"===l,onClick:function(){return a("set_view",{storageMode:"console",storageConsSubMode:"mutations"})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Disk",disabled:!c,selected:"disk"===l,onClick:function(){return a("set_view",{storageMode:"disk",storageDiskSubMode:"mutations"})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Adv. Injector",selected:"injector"===l,onClick:function(){return a("set_view",{storageMode:"injector"})}})],0)},k=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.view,i=c.storageMode,l=c.storageConsSubMode,s=c.storageDiskSubMode,m=r.diskMakeupBuffer,p=r.diskHasMakeup,C=r.storage[i];return(0,o.createComponentVNode)(2,u.Section,{title:"Storage",buttons:(0,o.createComponentVNode)(2,v),children:["console"===i&&"mutations"===l&&(0,o.createComponentVNode)(2,x,{mutations:C}),"console"===i&&"chromosomes"===l&&(0,o.createComponentVNode)(2,B),"disk"===i&&"mutations"===s&&(0,o.createComponentVNode)(2,x,{mutations:C}),"disk"===i&&"diskenzymes"===s&&(0,o.createFragment)([(0,o.createComponentVNode)(2,F,{makeup:m}),(0,o.createComponentVNode)(2,u.Button,{icon:"times",color:"red",disabled:!p,content:"Delete",onClick:function(){return a("del_makeup_disk")}})],4),"injector"===i&&(0,o.createComponentVNode)(2,j)]})},x=function(e,t){var n=e.customMode,r=void 0===n?"":n,a=(0,d.useBackend)(t),c=a.data,l=a.act,s=e.mutations||[],m=c.view.storageMode+r,p=c.view["storage"+m+"MutationRef"],C=s.find((function(e){return e.ByondRef===p}));return!C&&s.length>0&&(C=s[0],p=C.ByondRef),(0,o.createComponentVNode)(2,u.Flex,{children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:"140px",children:(0,o.createComponentVNode)(2,u.Section,{title:(0,i.capitalize)(c.view.storageMode)+" Storage",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,u.Button,{fluid:!0,ellipsis:!0,color:"transparent",selected:e.ByondRef===p,content:e.Name,onClick:function(){var t;return l("set_view",((t={})["storage"+m+"MutationRef"]=e.ByondRef,t))}},e.ByondRef)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{children:(0,o.createComponentVNode)(2,u.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Mutation Info",level:2,children:(0,o.createComponentVNode)(2,_,{mutation:C})})})]})},B=function(e,t){var n,a=(0,d.useBackend)(t),c=a.data,i=a.act,l=null!=(n=c.chromoStorage)?n:[],s=(0,r.uniqBy)((function(e){return e.Name}))(l),m=c.view.storageChromoName,p=l.find((function(e){return e.Name===m}));return(0,o.createComponentVNode)(2,u.Flex,{children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:"140px",children:(0,o.createComponentVNode)(2,u.Section,{title:"Console Storage",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,u.Button,{fluid:!0,ellipsis:!0,color:"transparent",selected:e.Name===m,content:e.Name,onClick:function(){return i("set_view",{storageChromoName:e.Name})}},e.Index)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{children:(0,o.createComponentVNode)(2,u.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Chromosome Info",level:2,children:!p&&(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"Nothing to show."})||(0,o.createFragment)([(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:p.Name}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Description",children:p.Description}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Amount",children:l.filter((function(e){return e.Name===p.Name})).length})]}),(0,o.createComponentVNode)(2,u.Button,{mt:2,icon:"eject",content:"Eject Chromosome",onClick:function(){return i("eject_chromo",{chromo:p.Name})}})],4)})})]})},_=function(e,t){var n,c,i,l=e.mutation,s=(0,d.useBackend)(t),m=s.data,p=s.act,N=m.diskCapacity,V=m.diskReadOnly,b=m.hasDisk,f=m.isInjectorReady,g=null!=(n=m.storage.disk)?n:[],v=null!=(c=m.storage.console)?c:[],k=null!=(i=m.storage.injector)?i:[];if(!l)return(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"Nothing to show."});if("occupant"===l.Source&&!l.Discovered)return(0,o.createComponentVNode)(2,u.LabeledList,{children:(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:l.Alias})});var x=v.find((function(e){return h(e,l)})),B=g.find((function(e){return h(e,l)})),_=(0,a.flow)([(0,r.uniqBy)((function(e){return e.Name})),(0,r.filter)((function(e){return e.Name!==l.Name}))])([].concat(g,v));return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:C[l.Quality],children:l.Name})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Description",children:l.Description}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Instability",children:l.Instability})]}),(0,o.createComponentVNode)(2,u.Divider),(0,o.createComponentVNode)(2,u.Box,{children:["disk"===l.Source&&(0,o.createComponentVNode)(2,W,{disabled:!b||N<=0||V,mutations:_,source:l}),"console"===l.Source&&(0,o.createComponentVNode)(2,W,{mutations:_,source:l}),["occupant","disk","console"].includes(l.Source)&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:k.map((function(e){return e.name})),disabled:0===k.length||!l.Active,selected:"Add to advanced injector",onSelected:function(e){return p("add_advinj_mut",{mutref:l.ByondRef,advinj:e,source:l.Source})}}),(0,o.createComponentVNode)(2,u.Button,{icon:"syringe",disabled:!f||!l.Active,content:"Print Activator",onClick:function(){return p("print_injector",{mutref:l.ByondRef,is_activator:1,source:l.Source})}}),(0,o.createComponentVNode)(2,u.Button,{icon:"syringe",disabled:!f||!l.Active,content:"Print Mutator",onClick:function(){return p("print_injector",{mutref:l.ByondRef,is_activator:0,source:l.Source})}})],4)]}),["disk","occupant"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"save",disabled:x||!l.Active,content:"Save to Console",onClick:function(){return p("save_console",{mutref:l.ByondRef,source:l.Source})}}),["console","occupant"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"save",disabled:B||!b||N<=0||V||!l.Active,content:"Save to Disk",onClick:function(){return p("save_disk",{mutref:l.ByondRef,source:l.Source})}}),["console","disk","injector"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"times",color:"red",content:"Delete from "+l.Source,onClick:function(){return p("delete_"+l.Source+"_mut",{mutref:l.ByondRef})}}),(2===l.Class||!!l.Scrambled&&"occupant"===l.Source)&&(0,o.createComponentVNode)(2,u.Button,{content:"Nullify",onClick:function(){return p("nullify",{mutref:l.ByondRef})}}),(0,o.createComponentVNode)(2,u.Divider),(0,o.createComponentVNode)(2,w,{disabled:"occupant"!==l.Source,mutation:l})],0)},w=function(e,t){var n=e.mutation,r=e.disabled,a=(0,d.useBackend)(t),c=(a.data,a.act);return 0===n.CanChromo?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"No compatible chromosomes"}):1===n.CanChromo?r?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"No chromosome applied."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:n.ValidStoredChromos,disabled:0===n.ValidStoredChromos.length,selected:0===n.ValidStoredChromos.length?"No Suitable Chromosomes":"Select a chromosome",onSelected:function(e){return c("apply_chromo",{chromo:e,mutref:n.ByondRef})}}),(0,o.createComponentVNode)(2,u.Box,{color:"label",mt:1,children:["Compatible with: ",n.ValidChromos]})],4):2===n.CanChromo?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:["Applied chromosome: ",n.AppliedChromo]}):null},L=function(e,t){var n,r,a=(0,d.useBackend)(t),c=a.data,i=a.act,s=null!=(n=null==(r=c.storage)?void 0:r.occupant)?n:[],m=c.isJokerReady,p=c.isMonkey,C=c.jokerSeconds,h=c.subjectStatus,N=c.view,V=N.sequencerMutation,b=N.jokerActive,f=s.find((function(e){return e.Alias===V}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Flex,{spacing:1,mb:1,children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:s.length<=8?"154px":"174px",children:(0,o.createComponentVNode)(2,u.Section,{title:"Sequences",height:"214px",overflowY:s.length>8&&"scroll",children:s.map((function(e){return(0,o.createComponentVNode)(2,y,{url:(0,l.resolveAsset)(e.Image),selected:e.Alias===V,onClick:function(){i("set_view",{sequencerMutation:e.Alias}),i("check_discovery",{alias:e.Alias})}},e.Alias)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Sequence Info",minHeight:"100%",children:(0,o.createComponentVNode)(2,_,{mutation:f})})})]}),3===h&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: DECEASED."})||p&&"Monkified"!==(null==f?void 0:f.Name)&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: MONKEY."})||4===h&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: TRANSFORMING."})||(0,o.createComponentVNode)(2,u.Section,{title:"Genome Sequencer\u2122",buttons:!m&&(0,o.createComponentVNode)(2,u.Box,{lineHeight:"20px",color:"label",children:["Joker on cooldown (",C,"s)"]})||b&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Box,{mr:1,inline:!0,color:"label",children:"Click on a gene to reveal it."}),(0,o.createComponentVNode)(2,u.Button,{content:"Cancel Joker",onClick:function(){return i("set_view",{jokerActive:""})}})],4)||(0,o.createComponentVNode)(2,u.Button,{icon:"crown",color:"purple",content:"Use Joker",onClick:function(){return i("set_view",{jokerActive:"1"})}}),children:(0,o.createComponentVNode)(2,I,{mutation:f})})],0)},y=function(e,t){var n,r=e.url,a=e.selected,c=e.onClick;return a&&(n="2px solid #22aa00"),(0,o.createComponentVNode)(2,u.Box,{as:"img",src:r,style:{width:"64px",margin:"2px","margin-left":"4px",outline:n},onClick:c})},S=function(e,t){var n=e.gene,r=e.onChange,a=e.disabled,c=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["gene","onChange","disabled"]),i=m.length,l=m.indexOf(n),d=a&&p.X||p[n];return(0,o.normalizeProps)((0,o.createComponentVNode)(2,u.Button,Object.assign({},c,{color:d,onClick:function(e){if(e.preventDefault(),r)if(-1!==l){var t=m[(l+1)%i];r(e,t)}else r(e,m[0])},oncontextmenu:function(e){if(e.preventDefault(),r)if(-1!==l){var t=m[(l-1+i)%i];r(e,t)}else r(e,m[i-1])},children:n})))},I=function(e,t){var n=e.mutation,r=(0,d.useBackend)(t),a=r.data,i=r.act,l=a.view.jokerActive;if(!n)return(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"No genome selected for sequencing."});if(n.Scrambled)return(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"Sequence unreadable due to unpredictable mutation."});for(var s=n.Sequence,m=n.DefaultSeq,p=[],C=function(e){var t=s.charAt(e),r=(0,o.createComponentVNode)(2,S,{width:"22px",textAlign:"center",disabled:!!n.Scrambled||1!==n.Class,className:"X"===(null==m?void 0:m.charAt(e))&&!n.Active&&(0,c.classes)(["outline-solid","outline-color-orange"]),gene:t,onChange:function(t,o){if(!t.ctrlKey)return l?(i("pulse_gene",{pos:e+1,gene:"J",alias:n.Alias}),void i("set_view",{jokerActive:""})):void i("pulse_gene",{pos:e+1,gene:o,alias:n.Alias});i("pulse_gene",{pos:e+1,gene:"X",alias:n.Alias})}});p.push(r)},h=0;h=3){var r=(0,o.createComponentVNode)(2,u.Box,{inline:!0,width:"22px",mx:"1px",children:s});l.push(r),s=[]}},p=0;p=i,onCommit:function(e,t){return a("new_adv_inj",{name:t})}})})]})},W=function(e,t){var n=e.mutations,r=void 0===n?[]:n,a=e.source,c=(0,d.useBackend)(t),i=c.act;c.data;return(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:r.map((function(e){return e.Name})),disabled:0===r.length,selected:"Combine mutations",onSelected:function(e){return i("combine_"+a.Source,{firstref:(t=e,null==(n=r.find((function(e){return e.Name===t})))?void 0:n.ByondRef),secondref:a.ByondRef});var t,n}},a.ByondRef)}},function(e,t,n){"use strict";t.__esModule=!0,t.DnaVault=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.DnaVault=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.completed,u=l.used,s=l.choiceA,m=l.choiceB,p=l.dna,C=l.dna_max,h=l.plants,N=l.plants_max,V=l.animals,b=l.animals_max;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"DNA Vault Database",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Human DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:p/C,children:p+" / "+C+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Plant DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h/N,children:h+" / "+N+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Animal DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:V/V,children:V+" / "+b+" Samples"})})]})}),!(!d||u)&&(0,o.createComponentVNode)(2,a.Section,{title:"Personal Gene Therapy",children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",mb:1,children:"Applicable Gene Therapy Treatments"}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:s,textAlign:"center",onClick:function(){return i("gene",{choice:s})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:m,textAlign:"center",onClick:function(){return i("gene",{choice:m})}})})]})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.EightBallVote=void 0;var o=n(0),r=n(2),a=n(1),c=n(19),i=n(3);t.EightBallVote=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.shaking);return(0,o.createComponentVNode)(2,i.Window,{width:400,height:600,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No question is currently being asked."})||(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.question,u=l.answers,s=void 0===u?[]:u;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",m:1,children:['"',d,'"']}),(0,o.createComponentVNode)(2,a.Grid,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:(0,c.toTitleCase)(e.answer),selected:e.selected,fontSize:"16px",lineHeight:"24px",textAlign:"center",mb:1,onClick:function(){return i("vote",{answer:e.answer})}}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"30px",children:e.amount})]},e.answer)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Electrolyzer=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Electrolyzer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!l.hasPowercell||!l.open,onClick:function(){return i("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,disabled:!l.hasPowercell,onClick:function(){return i("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!l.hasPowercell&&"bad",children:l.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.powerLevel/100,content:l.powerLevel+"%",ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]}})||"None"})})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Electropack=void 0;var o=n(0),r=n(11),a=n(2),c=n(1),i=n(3);t.Electropack=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.power,s=d.code,m=d.frequency,p=d.minFrequency,C=d.maxFrequency;return(0,o.createComponentVNode)(2,i.Window,{width:260,height:137,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Frequency",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"freq"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:p/10,maxValue:C/10,value:m/10,format:function(e){return(0,r.toFixed)(e,1)},width:"80px",onDrag:function(e,t){return l("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Code",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"code"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:s,width:"80px",onDrag:function(e,t){return l("code",{code:t})}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.EmergencyShuttleConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.EmergencyShuttleConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.timer_str,u=l.enabled,s=l.emagged,m=l.engines_started,p=l.authorizations_remaining,C=l.authorizations,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:350,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"40px",textAlign:"center",fontFamily:"monospace",children:d}),(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",fontSize:"16px",mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:"ENGINES:"}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:m?"good":"average",ml:1,children:m?"Online":"Idle"})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Early Launch Authorization",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Repeal All",color:"bad",disabled:!u,onClick:function(){return i("abort")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"exclamation-triangle",color:"good",content:"AUTHORIZE",disabled:!u,onClick:function(){return i("authorize")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:"REPEAL",disabled:!u,onClick:function(){return i("repeal")}})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Authorizations",level:3,minHeight:"150px",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:s?"bad":"good",children:s?"ERROR":"Remaining: "+p}),children:h.length>0?h.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"16px",className:"candystripe",children:[e.name," (",e.job,")"]},e.name)})):(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",color:"average",children:"No Active Authorizations"})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.EngravedMessage=void 0;var o=n(0),r=n(19),a=n(2),c=n(1),i=n(3);t.EngravedMessage=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.admin_mode,s=d.creator_key,m=d.creator_name,p=d.has_liked,C=d.has_disliked,h=d.hidden_message,N=d.is_creator,V=d.num_likes,b=d.num_dislikes,f=d.realdate;return(0,o.createComponentVNode)(2,i.Window,{width:600,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Box,{bold:!0,textAlign:"center",fontSize:"20px",mb:2,children:(0,r.decodeHtmlEntities)(h)}),(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"arrow-up",content:" "+V,disabled:N,selected:p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("like")}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"circle",disabled:N,selected:!C&&!p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("neutral")}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"arrow-down",content:" "+b,disabled:N,selected:C,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("dislike")}})})]})]}),(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Created On",children:f})})}),(0,o.createComponentVNode)(2,c.Section),!!u&&(0,o.createComponentVNode)(2,c.Section,{title:"Admin Panel",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Delete",color:"bad",onClick:function(){return l("delete")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Creator Ckey",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Creator Character Name",children:m})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ExosuitControlConsole=void 0;var o=n(0),r=n(11),a=n(2),c=n(1),i=n(3);t.ExosuitControlConsole=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data.mechs,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.Window,{width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[0===u.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No exosuits detected"}),u.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"envelope",content:"Send Message",disabled:!e.pilot,onClick:function(){return l("send_message",{tracker_ref:e.tracker_ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"wifi",content:e.emp_recharging?"Recharging...":"EMP Burst",color:"bad",disabled:e.emp_recharging,onClick:function(){return l("shock",{tracker_ref:e.tracker_ref})}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.integrity<=30?"bad":e.integrity<=70&&"average")||"good",children:[e.integrity,"%"]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.charge<=30?"bad":e.charge<=70&&"average")||"good",children:"number"==typeof e.charge&&e.charge+"%"||"Not Found"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Airtank",children:"number"==typeof e.airtank&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:e.airtank,format:function(e){return(0,r.toFixed)(e,2)+" kPa"}})||"Not Equipped"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pilot",children:e.pilot||"None"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Location",children:e.location||"Unknown"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Active Equipment",children:e.active_equipment||"None"}),e.cargo_space>=0&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Used Cargo Space",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.cargo_space<=30?"good":e.cargo_space<=70&&"average")||"bad",children:[e.cargo_space,"%"]})})]})},e.tracker_ref)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ExosuitFabricator=void 0;var o,r=n(0),a=n(6),c=n(14),i=n(2),l=n(39),d=n(1),u=n(3),s=n(19);function m(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return p(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);nn?{color:2,deficit:e-n}:t>n?{color:1,deficit:e}:e+t>n?{color:1,deficit:e+t-n}:{color:0,deficit:0}},V=function(e,t,n){var o={textColor:0};return Object.keys(n.cost).forEach((function(r){o[r]=N(n.cost[r],t[r],e[r]),o[r].color>o.textColor&&(o.textColor=o[r].color)})),o};t.ExosuitFabricator=function(e,t){var n,o,a=(0,i.useBackend)(t),c=a.act,l=a.data,s=l.queue||[],m=(n=l.materials||[],o={},n.forEach((function(e){o[e.name]=e.amount})),o),p=function(e,t){var n={},o={},r={},a={};return t.forEach((function(t,c){a[c]=0,Object.keys(t.cost).forEach((function(i){n[i]=n[i]||0,r[i]=r[i]||0,o[i]=N(t.cost[i],n[i],e[i]),0!==o[i].color?a[c]1&&l=0&&m+"s"||"Dispensing..."})]})})})}}},function(e,t,n){"use strict";t.__esModule=!0,t.ForbiddenLore=void 0;var o=n(0),r=n(14),a=n(30),c=n(2),i=n(1),l=n(3);t.ForbiddenLore=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.charges,m=(0,a.flow)([(0,r.sortBy)((function(e){return"Research"!==e.state}),(function(e){return"Side"===e.path}))])(u.to_know||[]);return(0,o.createComponentVNode)(2,l.Window,{width:500,height:900,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Research Eldritch Knowledge",children:["Charges left : ",s,null!==m?m.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,my:1,children:[e.path," path"]}),(0,o.createComponentVNode)(2,i.Box,{my:1,children:[(0,o.createComponentVNode)(2,i.Button,{content:e.state,disabled:e.disabled,onClick:function(){return d("research",{name:e.name,cost:e.cost})}})," ","Cost : ",e.cost]}),(0,o.createComponentVNode)(2,i.Box,{italic:!0,my:1,children:e.flavour}),(0,o.createComponentVNode)(2,i.Box,{my:1,children:e.desc})]},e.name)})):(0,o.createComponentVNode)(2,i.Box,{children:"No more knowledge can be found"})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Gateway=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Gateway=function(){return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.gateway_present,d=void 0!==l&&l,u=i.gateway_status,s=void 0!==u&&u,m=i.current_target,p=void 0===m?null:m,C=i.destinations,h=void 0===C?[]:C;return d?p?(0,o.createComponentVNode)(2,a.Section,{title:p.name,children:[(0,o.createComponentVNode)(2,a.Icon,{name:"rainbow",size:4,color:"green"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("deactivate")},children:"Deactivate"})]}):h.length?(0,o.createFragment)([!s&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Gateway Unpowered"}),h.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:e.available&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("activate",{destination:e.ref})},children:"Activate"})||(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{m:1,textColor:"bad",children:e.reason}),!!e.timeout&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:e.timeout,children:"Calibrating..."})],0)},e.ref)}))],0):(0,o.createComponentVNode)(2,a.Section,{children:"No gateway nodes detected."}):(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No linked gateway"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("linkup")},children:"Linkup"})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.GhostPoolProtection=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.GhostPoolProtection=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.events_or_midrounds,u=l.spawners,s=l.station_sentience,m=l.silicons,p=l.minigames;return(0,o.createComponentVNode)(2,c.Window,{title:"Ghost Pool Protection",width:400,height:270,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Flex,{grow:1,height:"100%",children:(0,o.createComponentVNode)(2,a.Section,{title:"Options",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{color:"good",icon:"plus-circle",content:"Enable Everything",onClick:function(){return i("all_roles")}}),(0,o.createComponentVNode)(2,a.Button,{color:"bad",icon:"minus-circle",content:"Disable Everything",onClick:function(){return i("no_roles")}})],4),children:[(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"For people creating a sneaky event: If you toggle Station Created Sentience, people may catch on that admins have disabled roles for your event..."}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:d?"good":"bad",icon:"meteor",content:"Events and Midround Rulesets",onClick:function(){return i("toggle_events_or_midrounds")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:u?"good":"bad",icon:"pastafarianism",content:"Ghost Role Spawners",onClick:function(){return i("toggle_spawners")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:s?"good":"bad",icon:"user-astronaut",content:"Station Created Sentience",onClick:function(){return i("toggle_station_sentience")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:m?"good":"bad",icon:"robot",content:"Silicons",onClick:function(){return i("toggle_silicons")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:p?"good":"bad",icon:"gamepad",content:"Minigames",onClick:function(){return i("toggle_minigames")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:"orange",icon:"check",content:"Apply Changes",onClick:function(){return i("apply_settings")}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GlandDispenser=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.GlandDispenser=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.glands,d=void 0===l?[]:l;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:338,theme:"abductor",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"60px",height:"60px",m:.75,textAlign:"center",lineHeight:"55px",icon:"eject",backgroundColor:e.color,content:e.amount||"0",disabled:!e.amount,onClick:function(){return i("dispense",{gland_id:e.id})}},e.id)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Gps=void 0;var o=n(0),r=n(14),a=n(30),c=n(11),i=n(103),l=n(2),d=n(1),u=n(3),s=function(e){return(0,r.map)(parseFloat)(e.split(", "))};t.Gps=function(e,t){var n=(0,l.useBackend)(t),m=n.act,p=n.data,C=p.currentArea,h=p.currentCoords,N=p.globalmode,V=p.power,b=p.tag,f=p.updating,g=(0,a.flow)([(0,r.map)((function(e,t){var n=e.dist&&Math.round((0,i.vecLength)((0,i.vecSubtract)(s(h),s(e.coords))));return Object.assign({},e,{dist:n,index:t})})),(0,r.sortBy)((function(e){return e.dist===undefined}),(function(e){return e.entrytag}))])(p.signals||[]);return(0,o.createComponentVNode)(2,u.Window,{title:"Global Positioning System",width:470,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d.Section,{title:"Control",buttons:(0,o.createComponentVNode)(2,d.Button,{icon:"power-off",content:V?"On":"Off",selected:V,onClick:function(){return m("power")}}),children:(0,o.createComponentVNode)(2,d.LabeledList,{children:[(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Tag",children:(0,o.createComponentVNode)(2,d.Button,{icon:"pencil-alt",content:b,onClick:function(){return m("rename")}})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,d.Button,{icon:f?"unlock":"lock",content:f?"AUTO":"MANUAL",color:!f&&"bad",onClick:function(){return m("updating")}})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,d.Button,{icon:"sync",content:N?"MAXIMUM":"LOCAL",selected:!N,onClick:function(){return m("globalmode")}})})]})}),!!V&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Section,{title:"Current Location",children:(0,o.createComponentVNode)(2,d.Box,{fontSize:"18px",children:[C," (",h,")"]})}),(0,o.createComponentVNode)(2,d.Section,{title:"Detected Signals",children:(0,o.createComponentVNode)(2,d.Table,{children:[(0,o.createComponentVNode)(2,d.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,d.Table.Cell,{content:"Name"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,content:"Direction"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,content:"Coordinates"})]}),g.map((function(e){return(0,o.createComponentVNode)(2,d.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,d.Table.Cell,{bold:!0,color:"label",children:e.entrytag}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,opacity:e.dist!==undefined&&(0,c.clamp)(1.2/Math.log(Math.E+e.dist/20),.4,1),children:[e.degrees!==undefined&&(0,o.createComponentVNode)(2,d.Icon,{mr:1,size:1.2,name:"arrow-up",rotation:e.degrees}),e.dist!==undefined&&e.dist+"m"]}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,children:e.coords})]},e.entrytag+e.coords+e.index)}))]})})],4)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GravityGenerator=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.GravityGenerator=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data),d=l.charging_state,u=l.operational;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:155,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No data available"}),!!u&&0!==d&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"WARNING - Radiation detected"}),!!u&&0===d&&(0,o.createComponentVNode)(2,a.NoticeBox,{success:!0,children:"No radiation detected"}),!!u&&(0,o.createComponentVNode)(2,i)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.breaker,d=i.charge_count,u=i.charging_state,s=i.on,m=i.operational;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l?"power-off":"times",content:l?"On":"Off",selected:l,disabled:!m,onClick:function(){return c("gentoggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Gravity Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d/100,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",children:[0===u&&(s&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Fully Charged"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Charging"})),1===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Charging"}),2===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Discharging"})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GulagItemReclaimer=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.GulagItemReclaimer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.mobs,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,c.Window,{width:325,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[0===u.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No stored items"}),u.length>0&&(0,o.createComponentVNode)(2,a.Section,{title:"Stored Items",children:(0,o.createComponentVNode)(2,a.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:(0,o.createComponentVNode)(2,a.Button,{content:"Retrieve Items",disabled:!l.can_reclaim,onClick:function(){return i("release_items",{mobref:e.mob})}})})]},e.mob)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GulagTeleporterConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.GulagTeleporterConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.teleporter,u=l.teleporter_lock,s=l.teleporter_state_open,m=l.teleporter_location,p=l.beacon,C=l.beacon_location,h=l.id,N=l.id_name,V=l.can_teleport,b=l.goal,f=void 0===b?0:b,g=l.prisoner,v=void 0===g?{}:g;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:295,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Teleporter Console",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:s?"Open":"Closed",disabled:u,selected:s,onClick:function(){return i("toggle_open")}}),(0,o.createComponentVNode)(2,a.Button,{icon:u?"lock":"unlock",content:u?"Locked":"Unlocked",selected:u,disabled:s,onClick:function(){return i("teleporter_lock")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleporter Unit",color:d?"good":"bad",buttons:!d&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return i("scan_teleporter")}}),children:d?m:"Not Connected"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Receiver Beacon",color:p?"good":"bad",buttons:!p&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return i("scan_beacon")}}),children:p?C:"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Prisoner Details",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prisoner ID",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:h?N:"No ID",onClick:function(){return i("handle_id")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Point Goal",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:f,width:"48px",minValue:1,maxValue:1e3,onChange:function(e,t){return i("set_goal",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:v.name||"No Occupant"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Criminal Status",children:v.crimstat||"No Status"})]})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Process Prisoner",disabled:!V,textAlign:"center",color:"bad",onClick:function(){return i("teleport")}})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Holodeck=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Holodeck=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.can_toggle_safety,u=l.default_programs,s=void 0===u?[]:u,m=l.emag_programs,p=void 0===m?[]:m,C=l.emagged,h=l.program;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Default Programs",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:C?"unlock":"lock",content:"Safeties",color:"bad",disabled:!d,selected:!C,onClick:function(){return i("safety")}}),children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.substring(11),textAlign:"center",selected:e.type===h,onClick:function(){return i("load_program",{type:e.type})}},e.type)}))}),!!C&&(0,o.createComponentVNode)(2,a.Section,{title:"Dangerous Programs",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.substring(11),color:"bad",textAlign:"center",selected:e.type===h,onClick:function(){return i("load_program",{type:e.type})}},e.type)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Holopad=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Holopad=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data.calling;return(0,o.createComponentVNode)(2,c.Window,{width:440,height:245,resizable:!0,children:[!!d&&(0,o.createComponentVNode)(2,a.Modal,{fontSize:"36px",fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,mt:2,children:(0,o.createComponentVNode)(2,a.Icon,{name:"phone-alt",rotation:25})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,children:"Dialing..."})]}),(0,o.createComponentVNode)(2,a.Box,{mt:2,textAlign:"center",fontSize:"24px",children:(0,o.createComponentVNode)(2,a.Button,{lineHeight:"40px",icon:"times",content:"Hang Up",color:"bad",onClick:function(){return l("hang_up")}})})]}),(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})]})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.on_network,d=i.on_cooldown,u=i.allowed,s=i.disk,m=i.disk_record,p=i.replay_mode,C=i.loop_mode,h=i.record_mode,N=i.holo_calls,V=void 0===N?[]:N;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Holopad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"bell",content:d?"AI Presence Requested":"Request AI Presence",disabled:!l||d,onClick:function(){return c("AIrequest")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Communicator",children:(0,o.createComponentVNode)(2,a.Button,{icon:"phone-alt",content:u?"Connect To Holopad":"Call Holopad",disabled:!l,onClick:function(){return c("holocall",{headcall:u})}})}),V.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.connected?"Current Call":"Incoming Call",children:(0,o.createComponentVNode)(2,a.Button,{icon:e.connected?"phone-slash":"phone-alt",content:e.connected?"Disconnect call from "+e.caller:"Answer call from "+e.caller,color:e.connected?"bad":"good",disabled:!l,onClick:function(){return c(e.connected?"disconnectcall":"connectcall",{holopad:e.ref})}})},e.ref)}))]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holodisk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!s||p||h,onClick:function(){return c("disk_eject")}}),children:!s&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No holodisk"})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk Player",children:[(0,o.createComponentVNode)(2,a.Button,{icon:p?"pause":"play",content:p?"Stop":"Replay",selected:p,disabled:h||!m,onClick:function(){return c("replay_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:C?"Looping":"Loop",selected:C,disabled:h||!m,onClick:function(){return c("loop_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"exchange-alt",content:"Change Offset",disabled:!p,onClick:function(){return c("offset")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Recorder",children:[(0,o.createComponentVNode)(2,a.Button,{icon:h?"pause":"video",content:h?"End Recording":"Record",selected:h,disabled:m&&!h||p,onClick:function(){return c("record_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:"Clear Recording",color:"bad",disabled:!m||p||h,onClick:function(){return c("record_clear")}})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.HypnoChair=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.HypnoChair=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:480,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",children:"The Enhanced Interrogation Chamber is designed to induce a deep-rooted trance trigger into the subject. Once the procedure is complete, by using the implanted trigger phrase, the authorities are able to ensure immediate and complete obedience and truthfulness."}),(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.occupant.name?l.occupant.name:"No Occupant"}),!!l.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===l.occupant.stat?"good":1===l.occupant.stat?"average":"bad",children:0===l.occupant.stat?"Conscious":1===l.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.open?"unlock":"lock",color:l.open?"default":"red",content:l.open?"Open":"Closed",onClick:function(){return i("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Phrase",children:(0,o.createComponentVNode)(2,a.Input,{value:l.trigger,onChange:function(e,t){return i("set_phrase",{phrase:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Interrogate Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:l.interrogating?"Interrupt Interrogation":"Begin Enhanced Interrogation",onClick:function(){return i("interrogate")}}),1===l.interrogating&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ImplantChair=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ImplantChair=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:280,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.occupant.name||"No Occupant"}),!!l.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===l.occupant.stat?"good":1===l.occupant.stat?"average":"bad",children:0===l.occupant.stat?"Conscious":1===l.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.open?"unlock":"lock",color:l.open?"default":"red",content:l.open?"Open":"Closed",onClick:function(){return i("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implant Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:l.ready?l.special_name||"Implant":"Recharging",onClick:function(){return i("implant")}}),0===l.ready&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implants Remaining",children:[l.ready_implants,1===l.replenishing&&(0,o.createComponentVNode)(2,a.Icon,{name:"sync",color:"red",spin:!0})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.InfraredEmitter=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.InfraredEmitter=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.on,u=l.visible;return(0,o.createComponentVNode)(2,c.Window,{width:225,height:110,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Visibility",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"eye":"eye-slash",content:u?"Visible":"Invisible",selected:u,onClick:function(){return i("visibility")}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Intellicard=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Intellicard=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.name,u=l.isDead,s=l.isBraindead,m=l.health,p=l.wireless,C=l.radio,h=l.wiping,N=l.laws,V=void 0===N?[]:N,b=u||s;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:d||"Empty Card",buttons:!!d&&(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:h?"Stop Wiping":"Wipe",disabled:u,onClick:function(){return i("wipe")}}),children:!!d&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:b?"bad":"good",children:b?"Offline":"Operation"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Software Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"Wireless Activity",selected:p,onClick:function(){return i("wireless")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"microphone",content:"Subspace Radio",selected:C,onClick:function(){return i("radio")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laws",children:V.map((function(e){return(0,o.createComponentVNode)(2,a.BlockQuote,{children:e},e)}))})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Jukebox=void 0;var o=n(0),r=n(14),a=n(30),c=n(2),i=n(1),l=n(3);t.Jukebox=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.active,m=u.track_selected,p=u.track_length,C=u.track_beat,h=u.volume,N=(0,a.flow)([(0,r.sortBy)((function(e){return e.name}))])(u.songs||[]);return(0,o.createComponentVNode)(2,l.Window,{width:370,height:313,children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Song Player",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:s?"pause":"play",content:s?"Stop":"Play",selected:s,onClick:function(){return d("toggle")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Selected",children:(0,o.createComponentVNode)(2,i.Dropdown,{"overflow-y":"scroll",width:"240px",options:N.map((function(e){return e.name})),disabled:s,selected:m||"Select a Track",onSelected:function(e){return d("select_track",{track:e})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Length",children:m?p:"No Track Selected"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Beat",children:[m?C:"No Track Selected",1===C?" beat":" beats"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Machine Settings",children:(0,o.createComponentVNode)(2,i.LabeledControls,{justify:"center",children:(0,o.createComponentVNode)(2,i.LabeledControls.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,i.Box,{position:"relative",children:[(0,o.createComponentVNode)(2,i.Knob,{size:3.2,color:h>=50?"red":"green",value:h,unit:"%",minValue:0,maxValue:100,step:1,stepPixelSize:1,disabled:s,onDrag:function(e,t){return d("set_volume",{volume:t})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"-2px",right:"-22px",color:"transparent",icon:"fast-backward",onClick:function(){return d("set_volume",{volume:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"16px",right:"-22px",color:"transparent",icon:"fast-forward",onClick:function(){return d("set_volume",{volume:"max"})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"34px",right:"-22px",color:"transparent",icon:"undo",onClick:function(){return d("set_volume",{volume:"reset"})}})]})})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.KeycardAuth=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.KeycardAuth=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:125,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{children:1===l.waiting&&(0,o.createVNode)(1,"span",null,"Waiting for another device to confirm your request...",16)}),(0,o.createComponentVNode)(2,a.Box,{children:0===l.waiting&&(0,o.createFragment)([!!l.auth_required&&(0,o.createComponentVNode)(2,a.Button,{icon:"check-square",color:"red",textAlign:"center",lineHeight:"60px",fluid:!0,onClick:function(){return i("auth_swipe")},content:"Authorize"}),0===l.auth_required&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",fluid:!0,onClick:function(){return i("red_alert")},content:"Red Alert"}),(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",fluid:!0,onClick:function(){return i("emergency_maint")},content:"Emergency Maintenance Access"}),(0,o.createComponentVNode)(2,a.Button,{icon:"meteor",fluid:!0,onClick:function(){return i("bsa_unlock")},content:"Bluespace Artillery Unlock"})],4)],0)})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LaborClaimConsole=void 0;var o=n(0),r=n(19),a=n(2),c=n(1),i=n(3);t.LaborClaimConsole=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.can_go_home,s=d.id_points,m=d.ores,p=d.status_info,C=d.unclaimed_points;return(0,o.createComponentVNode)(2,i.Window,{width:315,height:440,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:p}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Shuttle controls",children:(0,o.createComponentVNode)(2,c.Button,{content:"Move shuttle",disabled:!u,onClick:function(){return l("move_shuttle")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Points",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Unclaimed points",buttons:(0,o.createComponentVNode)(2,c.Button,{content:"Claim points",disabled:!C,onClick:function(){return l("claim_points")}}),children:C})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Material values",children:(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Material"}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:"Value"})]}),m.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,r.toTitleCase)(e.ore)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{color:"label",inline:!0,children:e.value})})]},e.ore)}))]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LanguageMenu=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.LanguageMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.admin_mode,u=l.is_living,s=l.omnitongue,m=l.languages,p=void 0===m?[]:m,C=l.unknown_languages,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{title:"Language Menu",width:700,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Known Languages",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:p.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createFragment)([!!u&&(0,o.createComponentVNode)(2,a.Button,{content:e.is_default?"Default Language":"Select as Default",disabled:!e.can_speak,selected:e.is_default,onClick:function(){return i("select_default",{language_name:e.name})}}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return i("grant_language",{language_name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Remove",onClick:function(){return i("remove_language",{language_name:e.name})}})],4)],0),children:[e.desc," ","Key: ,",e.key," ",e.can_understand?"Can understand.":"Cannot understand."," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})}),!!d&&(0,o.createComponentVNode)(2,a.Section,{title:"Unknown Languages",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Omnitongue "+(s?"Enabled":"Disabled"),selected:s,onClick:function(){return i("toggle_omnitongue")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:h.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return i("grant_language",{language_name:e.name})}}),children:[e.desc," ","Key: ,",e.key," ",!!e.shadow&&"(gained from mob)"," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadRemote=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(205);t.LaunchpadRemote=function(e,t){var n=(0,r.useBackend)(t).data,l=n.has_pad,d=n.pad_closed;return(0,o.createComponentVNode)(2,c.Window,{title:"Briefcase Launchpad Remote",width:300,height:240,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Launchpad Connected"})||d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Launchpad Closed"})||(0,o.createComponentVNode)(2,i.LaunchpadControl,{topLevel:!0})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MafiaPanel=void 0;var o=n(0),r=n(6),a=(n(19),n(2)),c=n(1),i=n(3);t.MafiaPanel=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=u.lobbydata,m=u.players,p=u.actions,C=u.phase,h=u.roleinfo,N=u.role_theme,V=u.admin_controls,b=u.judgement_phase,f=u.timeleft,g=u.all_roles,v=h?30*m.length:7,k=s?s.filter((function(e){return"Ready"===e.status})):null;return(0,o.createComponentVNode)(2,i.Window,{title:"Mafia",theme:N,width:650,height:293+v,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:V,children:[!h&&(0,o.createComponentVNode)(2,c.Flex,{scrollable:!0,overflowY:"scroll",direction:"column",height:"100%",grow:1,children:(0,o.createComponentVNode)(2,c.Section,{title:"Lobby",mb:1,buttons:(0,o.createComponentVNode)(2,l,{phase:C,timeleft:f,admin_controls:V}),children:(0,o.createComponentVNode)(2,c.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,c.NoticeBox,{info:!0,children:["The lobby currently has ",k.length,"/12 valid players signed up."]}),(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!s&&s.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{basis:2,className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:2,align:"center",justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:0,children:e.name}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:"STATUS:"}),(0,o.createComponentVNode)(2,c.Flex.Item,{width:"30%",children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Box,{color:"Ready"===e.status?"green":"red",textAlign:"center",children:[e.status," ",e.spectating]})})})]})},e)}))})]})})}),!!h&&(0,o.createComponentVNode)(2,c.Section,{title:C,minHeight:"100px",maxHeight:"50px",buttons:(0,o.createComponentVNode)(2,c.Box,{children:[!!V&&(0,o.createComponentVNode)(2,c.Button,{color:"red",icon:"gavel",tooltipPosition:"bottom-left",tooltip:"Hello admin! If it is the admin controls you seek,\nplease notice the extra scrollbar you have that players\ndo not!"})," ",(0,o.createComponentVNode)(2,c.TimeDisplay,{auto:"down",value:f})]}),children:(0,o.createComponentVNode)(2,c.Flex,{justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{align:"center",textAlign:"center",maxWidth:"500px",children:[(0,o.createVNode)(1,"b",null,[(0,o.createTextVNode)("You are the "),h.role],0),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"b",null,h.desc,0)]}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:[(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["mafia32x32",h.revealed_icon]),style:{transform:"scale(2) translate(0px, 10%)","vertical-align":"middle"}}),(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["mafia32x32",h.hud_icon]),style:{transform:"scale(2) translate(-5px, -5px)","vertical-align":"middle"}})]})]})}),(0,o.createComponentVNode)(2,c.Flex,{children:!!p&&p.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return d("mf_action",{atype:e})},children:e})},e)}))}),!!h&&(0,o.createComponentVNode)(2,c.Section,{title:"Judgement",buttons:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"info",tooltipPosition:"left",tooltip:"When someone is on trial, you are in charge of their fate.\nInnocent winning means the person on trial can live to see\nanother day... and in losing they do not. You can go back\nto abstaining with the middle button if you reconsider."}),children:[(0,o.createComponentVNode)(2,c.Flex,{justify:"space-around",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"smile-beam",content:"INNOCENT!",color:"good",disabled:!b,onClick:function(){return d("vote_innocent")}}),!b&&(0,o.createComponentVNode)(2,c.Box,{children:"There is nobody on trial at the moment."}),!!b&&(0,o.createComponentVNode)(2,c.Box,{children:"It is now time to vote, vote the accused innocent or guilty!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"angry",content:"GUILTY!",color:"bad",disabled:!b,onClick:function(){return d("vote_guilty")}})]}),(0,o.createComponentVNode)(2,c.Flex,{justify:"center",children:(0,o.createComponentVNode)(2,c.Button,{icon:"meh",content:"Abstain",color:"white",disabled:!b,onClick:function(){return d("vote_abstain")}})})]}),"No Game"!==C&&(0,o.createComponentVNode)(2,c.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:2,children:(0,o.createComponentVNode)(2,c.Section,{title:"Players",buttons:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"info",tooltip:"This is the list of all the players in\nthe game, during the day phase you may vote on them and,\ndepending on your role, select players\nat certain phases to use your ability."}),children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!m&&m.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{height:"30px",className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:"18px",justify:"space-between",align:"center",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:16,children:[!!e.alive&&(0,o.createComponentVNode)(2,c.Box,{children:e.name}),!e.alive&&(0,o.createComponentVNode)(2,c.Box,{color:"red",children:e.name})]}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:!e.alive&&(0,o.createComponentVNode)(2,c.Box,{color:"red",children:"DEAD"})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:e.votes!==undefined&&!!e.alive&&(0,o.createFragment)([(0,o.createTextVNode)("Votes : "),e.votes,(0,o.createTextVNode)(" ")],0)}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:!!e.actions&&e.actions.map((function(t){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return d("mf_targ_action",{atype:t,target:e.ref})},children:t},t)}))})]})},e.ref)}))})})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:2,children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,c.Section,{title:"Roles and Notes",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"address-book",tooltipPosition:"bottom-left",tooltip:"The top section is the roles in the game. You can\npress the question mark to get a quick blurb\nabout the role itself."}),(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"edit",tooltipPosition:"bottom-left",tooltip:"The bottom section are your notes. on some roles this\nwill just be an empty box, but on others it records the\nactions of your abilities (so for example, your\ndetective work revealing a changeling)."})],4),children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!g&&g.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{height:"30px",className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:"18px",align:"center",justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:e}),(0,o.createComponentVNode)(2,c.Flex.Item,{textAlign:"right",children:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"question",onClick:function(){return d("mf_lookup",{atype:e.slice(0,-3)})}})})]})},e)}))})}),!!h&&(0,o.createComponentVNode)(2,c.Flex.Item,{height:0,grow:1,children:(0,o.createComponentVNode)(2,c.Section,{scrollable:!0,fill:!0,overflowY:"scroll",children:h!==undefined&&!!h.action_log&&h.action_log.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:e},e)}))})})]})})]}),(0,o.createComponentVNode)(2,c.Flex,{mt:1,direction:"column",children:(0,o.createComponentVNode)(2,c.Flex.Item,{children:!!V&&(0,o.createComponentVNode)(2,c.Section,{textAlign:"center",children:(0,o.createComponentVNode)(2,c.Collapsible,{title:"ADMIN CONTROLS",color:"red",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"exclamation-triangle",color:"black",tooltipPosition:"top",tooltip:"Almost all of these are all built to help me debug\nthe game (ow, debugging a 12 player game!) So they are\nrudamentary and prone to breaking at the drop of a hat.\nMake sure you know what you're doing when you press one.\nAlso because an admin did it: do not gib/delete/dust\nanyone! It will runtime the game to death!",content:"A Kind, Coder Warning",onClick:function(){return d("next_phase")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-right",tooltipPosition:"top",tooltip:"This will advance the game to the next phase\n(day talk > day voting, day voting > night/trial)\npretty fun to just spam this and freak people out,\ntry that roundend!",content:"Next Phase",onClick:function(){return d("next_phase")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"home",tooltipPosition:"top",tooltip:"Hopefully you won't use this button\noften, it's a safety net just in case\nmafia players somehow escape (nullspace\nredirects to the error room then station)\nEither way, VERY BAD IF THAT HAPPENS as\ngodmoded assistants will run free. Use\nthis to recollect them then make a bug report.",content:"Send All Players Home",onClick:function(){return d("players_home")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sync-alt",tooltipPosition:"top",tooltip:"This immediately ends the game, and attempts to start\nanother. Nothing will happen if another\ngame fails to start!",content:"New Game",onClick:function(){return d("new_game")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"skull",tooltipPosition:"top",tooltip:"Deletes the datum, clears all landmarks, makes mafia\nas it was roundstart: nonexistant. Use this if you\nreally mess things up. You did mess things up, didn't you.",content:"Nuke",onClick:function(){return d("nuke")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{icon:"paint-brush",tooltipPosition:"top",tooltip:"This is the custom game creator, it is... simple.\nYou put in roles and until you press CANCEL or FINISH\nit will keep letting you add more roles. Assitants\non the bottom because of pathing stuff. Resets after\nthe round finishes back to 12 player random setups.",content:"Create Custom Setup",onClick:function(){return d("debug_setup")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"paint-roller",tooltipPosition:"top",tooltip:"If you messed up and accidently didn't make it how\nyou wanted, simply just press this to reset it. The game\nwill auto reset after each game as well.",content:"Reset Custom Setup",onClick:function(){return d("cancel_setup")}})]})})})})]})})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.phase,d=i.timeleft,u=i.admin_controls;return(0,o.createComponentVNode)(2,c.Box,{children:["[Phase = ",l," | ",(0,o.createComponentVNode)(2,c.TimeDisplay,{auto:"down",value:d}),"]"," ",(0,o.createComponentVNode)(2,c.Button,{icon:"clipboard-check",tooltipPosition:"bottom-left",tooltip:"Signs you up for the next game. If there\nis an ongoing one, you will be signed up\nfor the next.",content:"Sign Up",onClick:function(){return r("mf_signup")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"eye",tooltipPosition:"bottom-left",tooltip:"Spectates games until you turn it off.\nAutomatically enabled when you die in game,\nbecause I assumed you would want to see the\nconclusion. You won't get messages if you\nrejoin SS13.",content:"Spectate",onClick:function(){return r("mf_spectate")}}),!!u&&(0,o.createComponentVNode)(2,c.Button,{color:"red",icon:"gavel",tooltipPosition:"bottom-left",tooltip:"Hello admin! If it is the admin controls you seek,\nplease notice the scrollbar you have that players\ndo not!"})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.MalfunctionModulePicker=void 0;var o=n(0),r=n(2),a=n(3),c=n(142);t.MalfunctionModulePicker=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.processingTime);return(0,o.createComponentVNode)(2,a.Window,{width:620,height:525,theme:"malfunction",resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.GenericUplink,{currencyAmount:i,currencySymbol:"PT"})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MechBayPowerConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.MechBayPowerConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.recharge_port,d=l&&l.mech,u=d&&d.cell;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:200,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Mech status",textAlign:"center",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Sync",onClick:function(){return i("reconnect")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.health/d.maxhealth,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||!u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cell is installed."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.charge/u.maxcharge,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u.charge})," / "+u.maxcharge]})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MechpadConsole=t.MechpadControl=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=function(e,t){var n=e.topLevel,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.pad_name,u=l.connected_mechpad;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:d,width:"170px",onChange:function(e,t){return i("rename",{name:t})}}),level:n?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return i("remove")}}),children:!u&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",textAlign:"center",children:"No Pad Connected."})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return i("launch")}})})};t.MechpadControl=i;t.MechpadConsole=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.mechpads,s=void 0===u?[]:u,m=d.selected_id;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:130,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:0===s.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"})||(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{minHeight:"70px",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"140px",minHeight:"70px",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,ellipsis:!0,content:e.name,selected:m===e.id,color:"transparent",onClick:function(){return l("select_pad",{id:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{minHeight:"100%",children:(0,o.createComponentVNode)(2,a.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,minHeight:"100%",children:m&&(0,o.createComponentVNode)(2,i)||(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MedicalKiosk=void 0;var o=n(0),r=(n(19),n(2)),a=n(1),c=n(3);t.MedicalKiosk=function(e,t){var n=(0,r.useBackend)(t),p=(n.act,n.data),C=(0,r.useSharedState)(t,"scanIndex")[0],h=p.active_status_1,N=p.active_status_2,V=p.active_status_3,b=p.active_status_4;return(0,o.createComponentVNode)(2,c.Window,{width:575,height:420,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:1,children:(0,o.createComponentVNode)(2,a.Section,{minHeight:"100%",children:[(0,o.createComponentVNode)(2,i,{index:1,icon:"procedures",name:"General Health Scan",description:"Reads back exact values of your general health scan."}),(0,o.createComponentVNode)(2,i,{index:2,icon:"heartbeat",name:"Symptom Based Checkup",description:"Provides information based on various non-obvious symptoms,\nlike blood levels or disease status."}),(0,o.createComponentVNode)(2,i,{index:3,icon:"radiation-alt",name:"Neurological/Radiological Scan",description:"Provides information about brain trauma and radiation."}),(0,o.createComponentVNode)(2,i,{index:4,icon:"mortar-pestle",name:"Chemical and Psychoactive Scan",description:"Provides a list of consumed chemicals, as well as potential\nside effects."})]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l)})]}),!!h&&1===C&&(0,o.createComponentVNode)(2,d),!!N&&2===C&&(0,o.createComponentVNode)(2,u),!!V&&3===C&&(0,o.createComponentVNode)(2,s),!!b&&4===C&&(0,o.createComponentVNode)(2,m)]})})};var i=function(e,t){var n=e.index,c=e.name,i=e.description,l=e.icon,d=(0,r.useBackend)(t),u=d.act,s=d.data,m=(0,r.useSharedState)(t,"scanIndex"),p=m[0],C=m[1],h=s["active_status_"+n];return(0,o.createComponentVNode)(2,a.Flex,{spacing:1,align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"16px",textAlign:"center",children:(0,o.createComponentVNode)(2,a.Icon,{name:h?"check":"dollar-sign",color:h?"green":"grey"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:l,selected:h&&p===n,tooltip:i,tooltipPosition:"right",content:c,onClick:function(){h||u("beginScan_"+n),C(n)}})})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.kiosk_cost,d=i.patient_name;return(0,o.createComponentVNode)(2,a.Section,{minHeight:"100%",children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,children:["Greetings Valued Employee! Please select a desired automatic health check procedure. Diagnosis costs ",(0,o.createVNode)(1,"b",null,[l,(0,o.createTextVNode)(" credits.")],0)]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:1,children:"Patient:"}),d]}),(0,o.createComponentVNode)(2,a.Button,{mt:1,tooltip:"Resets the current scanning target, cancelling current scans.",icon:"sync",color:"average",onClick:function(){return c("clearTarget")},content:"Reset Scanner"})]})},d=function(e,t){var n=(0,r.useBackend)(t).data,c=n.patient_health,i=n.brute_health,l=n.burn_health,d=n.suffocation_health,u=n.toxin_health;return(0,o.createComponentVNode)(2,a.Section,{title:"Patient Health",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c/100,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c}),"%"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brute Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Burn Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Toxin Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})})})]})})},u=function(e,t){var n=(0,r.useBackend)(t).data,c=n.patient_status,i=n.patient_illness,l=n.illness_info,d=n.bleed_status,u=n.blood_levels,s=n.blood_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Symptom Based Checkup",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Patient Status",color:"good",children:c}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disease Status",children:i}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disease information",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Levels",children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})}),(0,o.createComponentVNode)(2,a.Box,{mt:1,color:"label",children:d})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Information",children:s})]})})},s=function(e,t){var n=(0,r.useBackend)(t).data,c=n.clone_health,i=n.brain_damage,l=n.brain_health,d=n.rad_contamination_status,u=n.rad_contamination_value,s=n.rad_sickness_status,m=n.rad_sickness_value,p=n.trauma_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Patient Neurological and Radiological Health",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cellular Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c/100,color:"good",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c})})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i/100,color:"good",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Status",color:"health-0",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Trauma Status",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Sickness Status",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Sickness Percentage",children:[m,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Contamination Status",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Contamination Percentage",children:[u,"%"]})]})})},m=function(e,t){var n=(0,r.useBackend)(t).data,c=n.chemical_list,i=void 0===c?[]:c,l=n.overdose_list,d=void 0===l?[]:l,u=n.addict_list,s=void 0===u?[]:u,m=n.hallucinating_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Chemical and Psychoactive Analysis",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Chemical Contents",children:[0===i.length&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No reagents detected."}),i.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[e.volume," units of ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overdose Status",color:"bad",children:[0===d.length&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Patient is not overdosing."}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["Overdosing on ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Addiction Status",color:"bad",children:[0===s.length&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Patient has no addictions."}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["Addicted to ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Psychoactive Status",children:m})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Microscope=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Microscope=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=(0,r.useSharedState)(t,"tab",1),m=s[0],p=s[1],C=u.has_dish,h=u.cell_lines,N=void 0===h?[]:h,V=u.viruses,b=void 0===V?[]:V;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Dish Sample",children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!C,onClick:function(){return d("eject_petridish")}})})})}),(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"microscope",lineHeight:"23px",selected:1===m,onClick:function(){return p(1)},children:["Micro-Organisms (",N.length,")"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"microscope",lineHeight:"23px",selected:2===m,onClick:function(){return p(2)},children:["Viruses (",b.length,")"]})]}),1===m&&(0,o.createComponentVNode)(2,i,{cell_lines:N}),2===m&&(0,o.createComponentVNode)(2,l,{viruses:b})]})})};var i=function(e,t){var n=e.cell_lines,c=(0,r.useBackend)(t);c.act,c.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.desc,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Rate",children:e.growth_rate}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Virus Suspectibility",children:e.suspectibility}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Required Reagents",children:e.requireds}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supplementary Reagents",children:e.supplementaries}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suppresive reagents",children:e.suppressives})]})},e.desc)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No micro-organisms found"})},l=function(e,t){var n=e.viruses;(0,r.useBackend)(t).act;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.desc},e.desc)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No viruses found"})}},function(e,t,n){"use strict";t.__esModule=!0,t.MiningVendor=void 0;var o=n(0),r=n(6),a=n(2),c=n(1),i=n(3);t.MiningVendor=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=[].concat(d.product_records);return(0,o.createComponentVNode)(2,i.Window,{width:425,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"User",children:d.user&&(0,o.createComponentVNode)(2,c.Box,{children:["Welcome, ",(0,o.createVNode)(1,"b",null,d.user.name||"Unknown",0),","," ",(0,o.createVNode)(1,"b",null,d.user.job||"Unemployed",0),"!",(0,o.createVNode)(1,"br"),"Your balance is ",(0,o.createVNode)(1,"b",null,[d.user.points,(0,o.createTextVNode)(" mining points")],0),"."]})||(0,o.createComponentVNode)(2,c.Box,{color:"light-gray",children:["No registered ID card!",(0,o.createVNode)(1,"br"),"Please contact your local HoP!"]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Equipment",children:(0,o.createComponentVNode)(2,c.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:[(0,o.createVNode)(1,"span",(0,r.classes)(["vending32x32",e.path]),null,1,{style:{"vertical-align":"middle"}})," ",(0,o.createVNode)(1,"b",null,e.name,0)]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{style:{"min-width":"95px","text-align":"center"},disabled:!d.user||e.price>d.user.points,content:e.price+" points",onClick:function(){return l("purchase",{ref:e.ref})}})})]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Mint=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Mint=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.inserted_materials||[];return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Materials",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l.processing?"times":"power-off",content:l.processing?"Stop":"Start",selected:l.processing,onClick:function(){return i(l.processing?"stoppress":"startpress")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.material,buttons:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:l.chosen_material===e.material,onClick:function(){return i("changematerial",{material_name:e.material})}}),children:[e.amount," cm\xb3"]},e.material)}))})}),(0,o.createComponentVNode)(2,a.Section,{children:["Pressed ",l.produced_coins," coins this cycle."]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Mule=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(64);t.Mule=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.on,s=d.cell,m=d.cellPercent,p=d.load,C=d.mode,h=d.modeStatus,N=d.haspai,V=d.autoReturn,b=d.autoPickup,f=d.reportDelivery,g=d.destination,v=d.home,k=d.id,x=d.destinations,B=void 0===x?[]:x,_=d.locked&&!d.siliconUser;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:425,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,a.Section,{title:"Status",minHeight:"110px",buttons:!_&&(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:s?m/100:0,color:s?"good":"bad"}),(0,o.createComponentVNode)(2,a.Flex,{mt:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",color:h,children:C})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Load",color:p?"good":"average",children:p||"None"})})})]})]}),!_&&(0,o.createComponentVNode)(2,a.Section,{title:"Controls",buttons:(0,o.createFragment)([!!p&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Unload",onClick:function(){return l("unload")}}),!!N&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject PAI",onClick:function(){return l("ejectpai")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,a.Input,{value:k,onChange:function(e,t){return l("setid",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:g||"None",options:B,width:"150px",onSelected:function(e){return l("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"stop",content:"Stop",onClick:function(){return l("stop")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"play",content:"Go",onClick:function(){return l("go")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:v,options:B,width:"150px",onSelected:function(e){return l("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"home",content:"Go Home",onClick:function(){return l("home")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:V,content:"Auto-Return",onClick:function(){return l("autored")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:b,content:"Auto-Pickup",onClick:function(){return l("autopick")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:f,content:"Report Delivery",onClick:function(){return l("report")}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteChamberControlContent=t.NaniteChamberControl=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NaniteChamberControl=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:380,height:570,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.status_msg,d=i.locked,u=i.occupant_name,s=i.has_nanites,m=i.nanite_volume,p=i.regen_rate,C=i.safety_threshold,h=i.cloud_id,N=i.scan_level;if(l)return(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:l});var V=i.mob_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Chamber: "+u,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"lock":"lock-open",content:d?"Locked":"Unlocked",color:d?"bad":"default",onClick:function(){return c("toggle_lock")}}),children:s?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",content:"Destroy Nanites",color:"bad",onClick:function(){return c("remove_nanites")}}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanite Volume",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Rate",children:p})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety Threshold",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:C,minValue:0,maxValue:500,width:"39px",onChange:function(e,t){return c("set_safety",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:h,minValue:0,maxValue:100,step:1,stepPixelSize:3,width:"39px",onChange:function(e,t){return c("set_cloud",{value:t})}})})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",level:2,children:V.map((function(e){var t=e.extra_settings||[],n=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:e.desc}),N>=2&&(0,o.createComponentVNode)(2,a.Grid.Column,{size:.6,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.activated?"good":"bad",children:e.activated?"Active":"Inactive"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanites Consumed",children:[e.use_rate,"/s"]})]})})]}),N>=2&&(0,o.createComponentVNode)(2,a.Grid,{children:[!!e.can_trigger&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Triggers",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:e.trigger_cost}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:e.trigger_cooldown}),!!e.timer_trigger_delay&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[e.timer_trigger_delay," s"]}),!!e.timer_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:[e.timer_trigger," s"]})]})})}),!(!e.timer_restart&&!e.timer_shutdown)&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.timer_restart&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:[e.timer_restart," s"]}),e.timer_shutdown&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:[e.timer_shutdown," s"]})]})})})]}),N>=3&&!!e.has_extra_settings&&(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:t.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:e.value},e.name)}))})}),N>=4&&(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!e.activation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:e.activation_code}),!!e.deactivation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:e.deactivation_code}),!!e.kill_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:e.kill_code}),!!e.can_trigger&&!!e.trigger_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:e.trigger_code})]})})}),e.has_rules&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Rules",level:2,children:n.map((function(e){return(0,o.createFragment)([e.display,(0,o.createVNode)(1,"br")],0,e.display)}))})})]})]})},e.name)}))})],4):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",textAlign:"center",fontSize:"30px",mb:1,children:"No Nanites Detected"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,icon:"syringe",content:" Implant Nanites",color:"green",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return c("nanite_injection")}})],4)})};t.NaniteChamberControlContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteCloudControl=t.NaniteCloudBackupDetails=t.NaniteCloudBackupList=t.NaniteInfoBox=t.NaniteDiskBox=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=function(e,t){var n=(0,r.useBackend)(t).data,c=n.has_disk,i=n.has_program,d=n.disk;return c?i?(0,o.createComponentVNode)(2,l,{program:d}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Inserted disk has no program"}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No disk inserted"})};t.NaniteDiskBox=i;var l=function(e,t){var n=e.program,r=n.name,c=n.desc,i=n.activated,l=n.use_rate,d=n.can_trigger,u=n.trigger_cost,s=n.trigger_cooldown,m=n.activation_code,p=n.deactivation_code,C=n.kill_code,h=n.trigger_code,N=n.timer_restart,V=n.timer_shutdown,b=n.timer_trigger,f=n.timer_trigger_delay,g=n.extra_settings||[];return(0,o.createComponentVNode)(2,a.Section,{title:r,level:2,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:i?"good":"bad",children:i?"Activated":"Deactivated"}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{mr:1,children:c}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:l}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:s})],4)]})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:C}),!!d&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:h})]})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart",children:[N," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown",children:[V," s"]}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:[b," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[f," s"]})],4)]})})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:g.map((function(e){var t={number:(0,o.createFragment)([e.value,e.unit],0),text:e.value,type:e.value,boolean:e.value?e.true_text:e.false_text};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:t[e.type]},e.name)}))})})]})};t.NaniteInfoBox=l;var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act;return(n.data.cloud_backups||[]).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Backup #"+e.cloud_id,textAlign:"center",onClick:function(){return c("set_view",{view:e.cloud_id})}},e.cloud_id)}))};t.NaniteCloudBackupList=d;var u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.current_view,u=i.disk,s=i.has_program,m=i.cloud_backup,p=u&&u.can_rule||!1;if(!m)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"ERROR: Backup not found"});var C=i.cloud_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Backup #"+d,level:2,buttons:!!s&&(0,o.createComponentVNode)(2,a.Button,{icon:"upload",content:"Upload From Disk",color:"good",onClick:function(){return c("upload_program")}}),children:C.map((function(e){var t=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return c("remove_program",{program_id:e.id})}}),children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,l,{program:e}),(!!p||!!e.has_rules)&&(0,o.createComponentVNode)(2,a.Section,{mt:-2,title:"Rules",level:2,buttons:!!p&&(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Add Rule from Disk",color:"good",onClick:function(){return c("add_rule",{program_id:e.id})}}),children:e.has_rules?t.map((function(t){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return c("remove_rule",{program_id:e.id,rule_id:t.id})}})," "+t.display]},t.display)})):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No Active Rules"})})]})},e.name)}))})};t.NaniteCloudBackupDetails=u;t.NaniteCloudControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,s=n.data,m=s.has_disk,p=s.current_view,C=s.new_backup_id;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Program Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!m,onClick:function(){return l("eject")}}),children:(0,o.createComponentVNode)(2,i)}),(0,o.createComponentVNode)(2,a.Section,{title:"Cloud Storage",buttons:p?(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Return",onClick:function(){return l("set_view",{view:0})}}):(0,o.createFragment)(["New Backup: ",(0,o.createComponentVNode)(2,a.NumberInput,{value:C,minValue:1,maxValue:100,stepPixelSize:4,width:"39px",onChange:function(e,t){return l("update_new_backup_value",{value:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return l("create_backup")}})],0),children:s.current_view?(0,o.createComponentVNode)(2,u):(0,o.createComponentVNode)(2,d)})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgramHub=void 0;var o=n(0),r=n(14),a=n(2),c=n(1),i=n(3);t.NaniteProgramHub=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.detail_view,s=d.disk,m=d.has_disk,p=d.has_program,C=d.programs,h=void 0===C?{}:C,N=(0,a.useSharedState)(t,"category"),V=N[0],b=N[1],f=h&&h[V]||[];return(0,o.createComponentVNode)(2,i.Window,{width:500,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"Program Disk",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",onClick:function(){return l("eject")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"minus-circle",content:"Delete Program",onClick:function(){return l("clear")}})],4),children:m?p?(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Program Name",children:s.name}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:s.desc})]}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No Program Installed"}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"Insert Disk"})}),(0,o.createComponentVNode)(2,c.Section,{title:"Programs",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:u?"info":"list",content:u?"Detailed":"Compact",onClick:function(){return l("toggle_details")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Sync Research",onClick:function(){return l("refresh")}})],4),children:null!==h?(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{minWidth:"110px",children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){var n=t.substring(0,t.length-8);return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:t===V,onClick:function(){return b(t)},children:n},t)}))(h)})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:u?f.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"download",content:"Download",disabled:!m,onClick:function(){return l("download",{program_id:e.id})}}),children:e.desc},e.id)})):(0,o.createComponentVNode)(2,c.LabeledList,{children:f.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"download",content:"Download",disabled:!m,onClick:function(){return l("download",{program_id:e.id})}})},e.id)}))})})]}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No nanite programs are currently researched."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgrammerContent=t.NaniteProgrammer=t.NaniteExtraBoolean=t.NaniteExtraType=t.NaniteExtraText=t.NaniteExtraNumber=t.NaniteExtraEntry=t.NaniteDelays=t.NaniteCodes=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.activation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"activation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.deactivation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"deactivation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.kill_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"kill",code:t})}})}),!!i.can_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.trigger_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"trigger",code:t})}})})]})})};t.NaniteCodes=i;var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,ml:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_restart,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_restart_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_shutdown,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_shutdown_timer",{delay:t})}})}),!!i.can_trigger&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_trigger_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger_delay,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_timer_trigger_delay",{delay:t})}})})],4)]})})};t.NaniteDelays=l;var d=function(e,t){var n=e.extra_setting,r=n.name,c=n.type,i={number:(0,o.createComponentVNode)(2,u,{extra_setting:n}),text:(0,o.createComponentVNode)(2,s,{extra_setting:n}),type:(0,o.createComponentVNode)(2,m,{extra_setting:n}),boolean:(0,o.createComponentVNode)(2,p,{extra_setting:n})};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:r,children:i[c]})};t.NaniteExtraEntry=d;var u=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.min,u=n.max,s=n.unit;return(0,o.createComponentVNode)(2,a.NumberInput,{value:l,width:"64px",minValue:d,maxValue:u,unit:s,onChange:function(e,t){return c("set_extra_setting",{target_setting:i,value:t})}})};t.NaniteExtraNumber=u;var s=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value;return(0,o.createComponentVNode)(2,a.Input,{value:l,width:"200px",onInput:function(e,t){return c("set_extra_setting",{target_setting:i,value:t})}})};t.NaniteExtraText=s;var m=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.types;return(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:l,width:"150px",options:d,onSelected:function(e){return c("set_extra_setting",{target_setting:i,value:e})}})};t.NaniteExtraType=m;var p=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.true_text,u=n.false_text;return(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:l?d:u,checked:l,onClick:function(){return c("set_extra_setting",{target_setting:i})}})};t.NaniteExtraBoolean=p;t.NaniteProgrammer=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:420,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,C)})})};var C=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.has_disk,m=u.has_program,p=u.name,C=u.desc,h=u.use_rate,N=u.can_trigger,V=u.trigger_cost,b=u.trigger_cooldown,f=u.activated,g=u.has_extra_settings,v=u.extra_settings,k=void 0===v?{}:v;return s?m?(0,o.createComponentVNode)(2,a.Section,{title:p,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}}),children:[(0,o.createComponentVNode)(2,a.Section,{title:"Info",level:2,children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:C}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.7,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:h}),!!N&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:V}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:b})],4)]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Settings",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:f?"power-off":"times",content:f?"Active":"Inactive",selected:f,color:"bad",bold:!0,onClick:function(){return c("toggle_active")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i)}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,l)})]}),!!g&&(0,o.createComponentVNode)(2,a.Section,{title:"Special",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:k.map((function(e){return(0,o.createComponentVNode)(2,d,{extra_setting:e},e.name)}))})})]})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Blank Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Insert a nanite program disk"})};t.NaniteProgrammerContent=C},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteRemoteContent=t.NaniteRemote=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NaniteRemote=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:420,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.code,d=i.locked,u=i.mode,s=i.program_name,m=i.relay_code,p=i.comms,C=i.message,h=i.saved_settings,N=void 0===h?[]:h;return d?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This interface is locked."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Nanite Control",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lock",content:"Lock Interface",onClick:function(){return c("lock")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:s,maxLength:14,width:"130px",onChange:function(e,t){return c("update_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",content:"Save",onClick:function(){return c("save")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:p?"Comm Code":"Signal Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return c("set_code",{code:t})}})}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",children:(0,o.createComponentVNode)(2,a.Input,{value:C,width:"270px",onChange:function(e,t){return c("set_message",{value:t})}})}),"Relay"===u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Relay Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:m,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return c("set_relay_code",{code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Signal Mode",children:["Off","Local","Targeted","Area","Relay"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,selected:u===e,onClick:function(){return c("select_mode",{mode:e})}},e)}))})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Saved Settings",children:N.length>0?(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"35%",children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"20%",children:"Mode"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Code"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Relay"})]}),N.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"label",children:[e.name,":"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.mode}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.code}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Relay"===e.mode&&e.relay_code}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"upload",color:"good",onClick:function(){return c("load",{save_id:e.id})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"minus",color:"bad",onClick:function(){return c("remove_save",{save_id:e.id})}})]})]},e.id)}))]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No settings currently saved"})})],4)};t.NaniteRemoteContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.NotificationPreferences=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NotificationPreferences=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=(n.data.ignore||[]).sort((function(e,t){var n=e.desc.toLowerCase(),o=t.desc.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,c.Window,{title:"Notification Preferences",width:270,height:360,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Ghost Role Notifications",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:e.enabled?"times":"check",content:e.desc,color:e.enabled?"bad":"good",onClick:function(){return i("toggle_ignore",{key:e.key})}},e.key)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtnetRelay=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtnetRelay=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.enabled,u=l.dos_capacity,s=l.dos_overload,m=l.dos_crashed;return(0,o.createComponentVNode)(2,c.Window,{title:"NtNet Quantum Relay",width:400,height:300,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Network Buffer",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:d,content:d?"ENABLED":"DISABLED",onClick:function(){return i("toggle")}}),children:m?(0,o.createComponentVNode)(2,a.Box,{fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",children:"NETWORK BUFFER OVERFLOW"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",children:"OVERLOAD RECOVERY MODE"}),(0,o.createComponentVNode)(2,a.Box,{children:"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."}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",color:"bad",children:"ADMINISTRATOR OVERRIDE"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",color:"bad",children:"CAUTION - DATA LOSS MAY OCCUR"}),(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"PURGE BUFFER",mt:1,color:"bad",onClick:function(){return i("restart")}})]}):(0,o.createComponentVNode)(2,a.ProgressBar,{value:s,minValue:0,maxValue:u,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:s})," GQ"," / ",u," GQ"]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosAiRestorer=void 0;var o=n(0),r=n(3),a=n(201);t.NtosAiRestorer=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:370,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.AiRestorerContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosArcade=void 0;var o=n(0),r=n(63),a=n(2),c=n(1),i=n(3);t.NtosArcade=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:450,height:350,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,c.Section,{title:"Outbomb Cuban Pete Ultra",textAlign:"center",children:[(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:2,children:[(0,o.createComponentVNode)(2,c.Box,{m:1}),(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Player Health",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.PlayerHitpoints,minValue:0,maxValue:30,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[d.PlayerHitpoints,"HP"]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Player Magic",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.PlayerMP,minValue:0,maxValue:10,ranges:{purple:[11,Infinity],violet:[3,11],bad:[-Infinity,3]},children:[d.PlayerMP,"MP"]})})]}),(0,o.createComponentVNode)(2,c.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,c.Section,{backgroundColor:1===d.PauseState?"#1b3622":"#471915",children:d.Status})]}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:[(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.Hitpoints,minValue:0,maxValue:45,ranges:{good:[30,Infinity],average:[5,30],bad:[-Infinity,5]},children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:d.Hitpoints}),"HP"]}),(0,o.createComponentVNode)(2,c.Box,{m:1}),(0,o.createComponentVNode)(2,c.Section,{inline:!0,width:"156px",textAlign:"center",children:(0,o.createVNode)(1,"img",null,null,1,{src:(0,r.resolveAsset)(d.BossID)})})]})]}),(0,o.createComponentVNode)(2,c.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,c.Button,{icon:"fist-raised",tooltip:"Go in for the kill!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Attack")},content:"Attack!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"band-aid",tooltip:"Heal yourself!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Heal")},content:"Heal!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"magic",tooltip:"Recharge your magic!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Recharge_Power")},content:"Recharge!"})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sync-alt",tooltip:"One more game couldn't hurt.",tooltipPosition:"top",disabled:1===d.GameActive,onClick:function(){return l("Start_Game")},content:"Begin Game"}),(0,o.createComponentVNode)(2,c.Button,{icon:"ticket-alt",tooltip:"Claim at your local Arcade Computer for Prizes!",tooltipPosition:"top",disabled:1===d.GameActive,onClick:function(){return l("Dispense_Tickets")},content:"Claim Tickets"})]}),(0,o.createComponentVNode)(2,c.Box,{color:d.TicketCount>=1?"good":"normal",children:["Earned Tickets: ",d.TicketCount]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosAtmos=void 0;var o=n(0),r=n(14),a=n(30),c=n(11),i=n(2),l=n(1),d=n(36),u=n(3);t.NtosAtmos=function(e,t){var n=(0,i.useBackend)(t),s=(n.act,n.data),m=s.AirTemp,p=s.AirPressure,C=(0,a.flow)([(0,r.filter)((function(e){return e.percentage>=.01})),(0,r.sortBy)((function(e){return-e.percentage}))])(s.AirData||[]),h=Math.max.apply(Math,[1].concat(C.map((function(e){return e.percentage}))));return(0,o.createComponentVNode)(2,u.NtosWindow,{width:300,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,u.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:[m,"\xb0C"]}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:[p," kPa"]})]})}),(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,d.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,d.getGasColor)(e.name),value:e.percentage,minValue:0,maxValue:h,children:(0,c.toFixed)(e.percentage,2)+"%"})},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosBountyConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(39),i=n(3);t.NtosBountyConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data.bountydata,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:750,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print Bounty List",onClick:function(){return c("Print")}}),children:(0,o.createComponentVNode)(2,a.Table,{border:!0,children:[(0,o.createComponentVNode)(2,a.Table.Row,{bold:!0,italic:!0,color:"label",fontSize:1.25,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Bounty Object"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Description"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Progress"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Claim"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{backgroundColor:1===e.priority?"rgba(252, 152, 3, 0.25)":"",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{italic:!0,textAlign:"center",p:1,children:e.description}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:[1===e.priority?(0,o.createComponentVNode)(2,a.Box,{children:"High Priority"}):"",e.completion_string]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:e.reward_string}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:1===e.claimed?"check":"",content:1===e.claimed?"Claimed":"Claim",disabled:1===e.claimed,color:1===e.can_claim?"green":"red",onClick:function(){return c("ClaimBounty",{bounty:e.bounty_ref})}})})]},e.name)}))]})})})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.stored_cash);return(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i,format:function(e){return(0,c.formatMoney)(e)}})," credits"]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCardContent=t.NtosCard=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(202);t.NtosCard=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:450,height:520,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=(0,r.useLocalState)(t,"tab",1),u=d[0],s=d[1],m=l.authenticated,p=l.regions,C=void 0===p?[]:p,h=l.access_on_card,N=void 0===h?[]:h,V=l.jobs,b=void 0===V?{}:V,f=l.id_rank,g=l.id_owner,v=l.has_id,k=l.have_printer,x=l.have_id_slot,B=l.id_name,_=(0,r.useLocalState)(t,"department",Object.keys(b)[0]),w=_[0],L=_[1];if(!x)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This program requires an ID slot in order to function"});var y=b[w]||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:v&&m?(0,o.createComponentVNode)(2,a.Input,{value:g,width:"250px",onInput:function(e,t){return c("PRG_edit",{name:t})}}):g||"No Card Inserted",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!k||!v,onClick:function(){return c("PRG_print")}}),(0,o.createComponentVNode)(2,a.Button,{icon:m?"sign-out-alt":"sign-in-alt",content:m?"Log Out":"Log In",color:m?"bad":"good",onClick:function(){c(m?"PRG_logout":"PRG_authenticate")}})],4),children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:B,onClick:function(){return c("PRG_eject")}})}),!!v&&!!m&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===u,onClick:function(){return s(1)},children:"Access"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===u,onClick:function(){return s(2)},children:"Jobs"})]}),1===u&&(0,o.createComponentVNode)(2,i.AccessList,{accesses:C,selectedList:N,accessMod:function(e){return c("PRG_access",{access_target:e})},grantAll:function(){return c("PRG_grantall")},denyAll:function(){return c("PRG_denyall")},grantDep:function(e){return c("PRG_grantregion",{region:e})},denyDep:function(e){return c("PRG_denyregion",{region:e})}}),2===u&&(0,o.createComponentVNode)(2,a.Section,{title:f,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"exclamation-triangle",content:"Terminate",color:"bad",onClick:function(){return c("PRG_terminate")}}),children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Custom...",onCommit:function(e,t){return c("PRG_assign",{assign_target:"Custom",custom_name:t})}}),(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:Object.keys(b).map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:e===w,onClick:function(){return L(e)},children:e},e)}))})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:y.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.display_name,onClick:function(){return c("PRG_assign",{assign_target:e.job})}},e.job)}))})]})]})]})],0)};t.NtosCardContent=l},function(e,t,n){"use strict";t.__esModule=!0,t.NtosConfiguration=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosConfiguration=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.PC_device_theme,u=l.power_usage,s=l.battery_exists,m=l.battery,p=void 0===m?{}:m,C=l.disk_size,h=l.disk_used,N=l.hardware,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,c.NtosWindow,{theme:d,width:420,height:630,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power Supply",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Draw: ",u,"W"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Battery Status",color:!s&&"average",children:s?(0,o.createComponentVNode)(2,a.ProgressBar,{value:p.charge,minValue:0,maxValue:p.max,ranges:{good:[p.max/2,Infinity],average:[p.max/4,p.max/2],bad:[-Infinity,p.max/4]},children:[p.charge," / ",p.max]}):"Not Available"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"File System",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h,minValue:0,maxValue:C,color:"good",children:[h," GQ / ",C," GQ"]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Hardware Components",children:V.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,buttons:(0,o.createFragment)([!e.critical&&(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Enabled",checked:e.enabled,mr:1,onClick:function(){return i("PC_toggle_component",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Usage: ",e.powerusage,"W"]})],0),children:e.desc},e.name)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCrewManifest=void 0;var o=n(0),r=n(14),a=n(2),c=n(1),i=n(3);t.NtosCrewManifest=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.have_printer,s=d.manifest,m=void 0===s?{}:s;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:400,height:480,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Section,{title:"Crew Manifest",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"print",content:"Print",disabled:!u,onClick:function(){return l("PRG_print")}}),children:(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Section,{level:2,title:t,children:(0,o.createComponentVNode)(2,c.Table,{children:e.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{bold:!0,children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:["(",e.rank,")"]})]},e.name)}))})},t)}))(m)})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCyborgRemoteMonitorSyndicate=void 0;var o=n(0),r=n(3),a=n(206);t.NtosCyborgRemoteMonitorSyndicate=function(e,t){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:600,height:800,theme:"syndicate",children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.NtosCyborgRemoteMonitorContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosFileManager=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosFileManager=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.PC_device_theme,s=d.usbconnected,m=d.files,p=void 0===m?[]:m,C=d.usbfiles,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.NtosWindow,{resizable:!0,theme:u,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,i,{files:p,usbconnected:s,onUpload:function(e){return l("PRG_copytousb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})}),s&&(0,o.createComponentVNode)(2,a.Section,{title:"Data Disk",children:(0,o.createComponentVNode)(2,i,{usbmode:!0,files:h,usbconnected:s,onUpload:function(e){return l("PRG_copyfromusb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})})]})})};var i=function(e){var t=e.files,n=void 0===t?[]:t,r=e.usbconnected,c=e.usbmode,i=e.onUpload,l=e.onDelete,d=e.onRename;return(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"File"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Type"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Size"})]}),n.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.undeletable?e.name:(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:e.name,currentValue:e.name,tooltip:"Rename",onCommit:function(t,n){return d(e.name,n)}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.type}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.size}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:!e.undeletable&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"trash",confirmIcon:"times",confirmContent:"",tooltip:"Delete",onClick:function(){return l(e.name)}}),!!r&&(c?(0,o.createComponentVNode)(2,a.Button,{icon:"download",tooltip:"Download",onClick:function(){return i(e.name)}}):(0,o.createComponentVNode)(2,a.Button,{icon:"upload",tooltip:"Upload",onClick:function(){return i(e.name)}}))],0)})]},e.name)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosJobManagerContent=t.NtosJobManager=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosJobManager=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:620,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.authed,d=i.cooldown,u=i.slots,s=void 0===u?[]:u,m=i.prioritized,p=void 0===m?[]:m;return l?(0,o.createComponentVNode)(2,a.Section,{children:[d>0&&(0,o.createComponentVNode)(2,a.Dimmer,{children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"20px",children:["On Cooldown: ",d,"s"]})}),(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Prioritized"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Slots"})]}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:e.title,disabled:e.total<=0,checked:e.total>0&&p.includes(e.title),onClick:function(){return c("PRG_priority",{target:e.title})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[e.current," / ",e.total]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"Open",disabled:!e.status_open,onClick:function(){return c("PRG_open_job",{target:e.title})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Close",disabled:!e.status_close,onClick:function(){return c("PRG_close_job",{target:e.title})}})]})]},e.title)}))]})]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Current ID does not have access permissions to change job slots."})};t.NtosJobManagerContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.NtosMain=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i={compconfig:"cog",ntndownloader:"download",filemanager:"folder",smmonitor:"radiation",alarmmonitor:"bell",cardmod:"id-card",arcade:"gamepad",ntnrc_client:"comment-alt",nttransfer:"exchange-alt",powermonitor:"plug",job_manage:"address-book",crewmani:"clipboard-list",robocontrol:"robot",atmosscan:"thermometer-half",shipping:"tags"};t.NtosMain=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.device_theme,s=d.programs,m=void 0===s?[]:s,p=d.has_light,C=d.light_on,h=d.comp_light_color,N=d.removable_media,V=void 0===N?[]:N,b=d.login,f=void 0===b?[]:b;return(0,o.createComponentVNode)(2,c.NtosWindow,{title:"syndicate"===u?"Syndix Main Menu":"NtOS Main Menu",theme:u,width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[!!p&&(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Button,{width:"144px",icon:"lightbulb",selected:C,onClick:function(){return l("PC_toggle_light")},children:["Flashlight: ",C?"ON":"OFF"]}),(0,o.createComponentVNode)(2,a.Button,{ml:1,onClick:function(){return l("PC_light_color")},children:["Color:",(0,o.createComponentVNode)(2,a.ColorBox,{ml:1,color:h})]})]}),(0,o.createComponentVNode)(2,a.Section,{title:"User Login",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject ID",disabled:!f.IDName,onClick:function(){return l("PC_Eject_Disk",{name:"ID"})}}),children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:["ID Name: ",f.IDName]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:["Assignment: ",f.IDJob]})]})}),!!V.length&&(0,o.createComponentVNode)(2,a.Section,{title:"Media Eject",children:(0,o.createComponentVNode)(2,a.Table,{children:V.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"transparent",icon:"eject",content:e,onClick:function(){return l("PC_Eject_Disk",{name:e})}})})},e)}))})}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",children:(0,o.createComponentVNode)(2,a.Table,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"transparent",icon:i[e.name]||"window-maximize-o",content:e.desc,onClick:function(){return l("PC_runprogram",{name:e.name})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,width:"18px",children:!!e.running&&(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"times",tooltip:"Close program",tooltipPosition:"left",onClick:function(){return l("PC_killprogram",{name:e.name})}})})]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetChat=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosNetChat=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.can_admin,u=l.adminmode,s=l.authed,m=l.username,p=l.active_channel,C=l.is_operator,h=l.all_channels,N=void 0===h?[]:h,V=l.clients,b=void 0===V?[]:V,f=l.messages,g=void 0===f?[]:f,v=null!==p,k=s||u;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:900,height:675,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,a.Section,{height:"600px",children:(0,o.createComponentVNode)(2,a.Table,{height:"580px",children:(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"200px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"537px",overflowY:"scroll",children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"New Channel...",onCommit:function(e,t){return i("PRG_newchannel",{new_channel_name:t})}}),N.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.chan,selected:e.id===p,color:"transparent",onClick:function(){return i("PRG_joinchannel",{id:e.id})}},e.chan)}))]}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,mt:1,content:m+"...",currentValue:m,onCommit:function(e,t){return i("PRG_changename",{new_name:t})}}),!!d&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"ADMIN MODE: "+(u?"ON":"OFF"),color:u?"bad":"good",onClick:function(){return i("PRG_toggleadmin")}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Box,{height:"560px",overflowY:"scroll",children:v&&(k?g.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.msg},e.msg)})):(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",mt:4,fontSize:"40px"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,fontSize:"18px",children:"THIS CHANNEL IS PASSWORD PROTECTED"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"INPUT PASSWORD TO ACCESS"})]}))}),(0,o.createComponentVNode)(2,a.Input,{fluid:!0,selfClear:!0,mt:1,onEnter:function(e,t){return i("PRG_speak",{message:t})}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"150px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"477px",overflowY:"scroll",children:b.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.name},e.name)}))}),v&&k&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Save log...",defaultValue:"new_log",onCommit:function(e,t){return i("PRG_savelog",{log_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Leave Channel",onClick:function(){return i("PRG_leavechannel")}})],4),!!C&&s&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Delete Channel",onClick:function(){return i("PRG_deletechannel")}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Rename Channel...",onCommit:function(e,t){return i("PRG_renamechannel",{new_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Set Password...",onCommit:function(e,t){return i("PRG_setpassword",{new_password:t})}})],4)]})]})})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDosContent=t.NtosNetDos=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosNetDos=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.relays,d=void 0===l?[]:l,u=i.focus,s=i.target,m=i.speed,p=i.overload,C=i.capacity,h=i.error;if(h)return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:h}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Reset",textAlign:"center",onClick:function(){return c("PRG_reset")}})],4);var N=function(e){for(var t="",n=p/C;t.lengthn?t+="0":t+="1";return t};return s?(0,o.createComponentVNode)(2,a.Section,{fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{children:["CURRENT SPEED: ",m," GQ/s"]}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)})]}):(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.id,selected:u===e.id,onClick:function(){return c("PRG_target_relay",{targid:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"EXECUTE",color:"bad",textAlign:"center",disabled:!u,mt:1,onClick:function(){return c("PRG_execute")}})]})};t.NtosNetDosContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDownloader=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosNetDownloader=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.PC_device_theme,s=d.disk_size,m=d.disk_used,p=d.downloadable_programs,C=void 0===p?[]:p,h=d.error,N=d.hacked_programs,V=void 0===N?[]:N,b=d.hackedavailable;return(0,o.createComponentVNode)(2,c.NtosWindow,{theme:u,width:480,height:735,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[!!h&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:h}),(0,o.createComponentVNode)(2,a.Button,{content:"Reset",onClick:function(){return l("PRG_reseterror")}})]}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk usage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m,minValue:0,maxValue:s,children:m+" GQ / "+s+" GQ"})})})}),(0,o.createComponentVNode)(2,a.Section,{children:C.map((function(e){return(0,o.createComponentVNode)(2,i,{program:e},e.filename)}))}),!!b&&(0,o.createComponentVNode)(2,a.Section,{title:"UNKNOWN Software Repository",children:[(0,o.createComponentVNode)(2,a.NoticeBox,{mb:1,children:"Please note that Nanotrasen does not recommend download of software from non-official servers."}),V.map((function(e){return(0,o.createComponentVNode)(2,i,{program:e},e.filename)}))]})]})})};var i=function(e,t){var n=e.program,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.disk_size,u=l.disk_used,s=l.downloadcompletion,m=l.downloading,p=l.downloadname,C=l.downloadsize,h=d-u;return(0,o.createComponentVNode)(2,a.Box,{mb:3,children:[(0,o.createComponentVNode)(2,a.Flex,{align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,grow:1,children:n.filedesc}),(0,o.createComponentVNode)(2,a.Flex.Item,{color:"label",nowrap:!0,children:[n.size," GQ"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{ml:2,width:"94px",textAlign:"center",children:n.filename===p&&(0,o.createComponentVNode)(2,a.ProgressBar,{color:"green",minValue:0,maxValue:C,value:s})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Download",disabled:m||n.size>h,onClick:function(){return i("PRG_downloadfile",{filename:n.filename})}})})]}),"Compatible"!==n.compatibility&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Incompatible!"]}),n.size>h&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Not enough disk space!"]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,color:"label",fontSize:"12px",children:n.fileinfo})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetMonitor=void 0;var o=n(0),r=n(1),a=n(2),c=n(3);t.NtosNetMonitor=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.ntnetrelays,u=l.ntnetstatus,s=l.config_softwaredownload,m=l.config_peertopeer,p=l.config_communication,C=l.config_systemcontrol,h=l.idsalarm,N=l.idsstatus,V=l.ntnetmaxlogs,b=l.maxlogs,f=l.minlogs,g=l.ntnetlogs,v=void 0===g?[]:g;return(0,o.createComponentVNode)(2,c.NtosWindow,{resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,r.NoticeBox,{children:"WARNING: Disabling wireless transmitters when using a wireless device may prevent you from reenabling them!"}),(0,o.createComponentVNode)(2,r.Section,{title:"Wireless Connectivity",buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:u?"power-off":"times",content:u?"ENABLED":"DISABLED",selected:u,onClick:function(){return i("toggleWireless")}}),children:d?(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Active NTNet Relays",children:d})}):"No Relays Connected"}),(0,o.createComponentVNode)(2,r.Section,{title:"Firewall Configuration",children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Software Downloads",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:s?"power-off":"times",content:s?"ENABLED":"DISABLED",selected:s,onClick:function(){return i("toggle_function",{id:"1"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Peer to Peer Traffic",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:m?"power-off":"times",content:m?"ENABLED":"DISABLED",selected:m,onClick:function(){return i("toggle_function",{id:"2"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Communication Systems",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:p?"power-off":"times",content:p?"ENABLED":"DISABLED",selected:p,onClick:function(){return i("toggle_function",{id:"3"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Remote System Control",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:C?"power-off":"times",content:C?"ENABLED":"DISABLED",selected:C,onClick:function(){return i("toggle_function",{id:"4"})}})})]})}),(0,o.createComponentVNode)(2,r.Section,{title:"Security Systems",children:[!!h&&(0,o.createFragment)([(0,o.createComponentVNode)(2,r.NoticeBox,{children:"NETWORK INCURSION DETECTED"}),(0,o.createComponentVNode)(2,r.Box,{italics:!0,children:"Abnormal activity has been detected in the network. Check system logs for more information"})],4),(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"IDS Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Button,{icon:N?"power-off":"times",content:N?"ENABLED":"DISABLED",selected:N,onClick:function(){return i("toggleIDS")}}),(0,o.createComponentVNode)(2,r.Button,{icon:"sync",content:"Reset",color:"bad",onClick:function(){return i("resetIDS")}})],4)}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Max Log Count",buttons:(0,o.createComponentVNode)(2,r.NumberInput,{value:V,minValue:f,maxValue:b,width:"39px",onChange:function(e,t){return i("updatemaxlogs",{new_number:t})}})})]}),(0,o.createComponentVNode)(2,r.Section,{title:"System Log",level:2,buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:"trash",content:"Clear Logs",onClick:function(){return i("purgelogs")}}),children:v.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{className:"candystripe",children:e.entry},e.entry)}))})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosPowerMonitor=void 0;var o=n(0),r=n(3),a=n(143);t.NtosPowerMonitor=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:550,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.PowerMonitorContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRadarSyndicate=void 0;var o=n(0),r=n(3),a=n(207);t.NtosRadarSyndicate=function(e,t){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:800,height:600,theme:"syndicate",children:(0,o.createComponentVNode)(2,a.NtosRadarContent,{sig_err:"Out of Range"})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRequestKiosk=void 0;var o=n(0),r=n(208),a=n(3);t.NtosRequestKiosk=function(e,t){return(0,o.createComponentVNode)(2,a.NtosWindow,{width:550,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,r.RequestKioskContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRevelation=void 0;var o=n(0),r=n(1),a=n(2),c=n(3);t.NtosRevelation=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Button.Input,{fluid:!0,content:"Obfuscate Name...",onCommit:function(e,t){return i("PRG_obfuscate",{new_name:t})},mb:1}),(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Payload Status",buttons:(0,o.createComponentVNode)(2,r.Button,{content:l.armed?"ARMED":"DISARMED",color:l.armed?"bad":"average",onClick:function(){return i("PRG_arm")}})})}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,bold:!0,content:"ACTIVATE",textAlign:"center",color:"bad",disabled:!l.armed})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRoboControl=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosRoboControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.bots,s=d.id_owner,m=d.has_id;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:550,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Robot Control Console",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Id Card",children:[s,!!m&&(0,o.createComponentVNode)(2,a.Button,{ml:2,icon:"eject",content:"Eject",onClick:function(){return l("ejectcard")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Bots in range",children:d.botcount})]})}),null==u?void 0:u.map((function(e){return(0,o.createComponentVNode)(2,i,{robot:e},e.bot_ref)}))]})})};var i=function(e,t){var n=e.robot,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.mules||[],u=!!n.mule_check&&function(e,t){return null==e?void 0:e.find((function(e){return e.mule_ref===t}))}(d,n.bot_ref),s=1===n.mule_check?"rgba(110, 75, 14, 1)":"rgba(74, 59, 140, 1)";return(0,o.createComponentVNode)(2,a.Section,{title:n.name,style:{border:"4px solid "+s},buttons:u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"play",tooltip:"Go to Destination.",onClick:function(){return i("go",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"pause",tooltip:"Stop Moving.",onClick:function(){return i("stop",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"home",tooltip:"Travel Home.",tooltipPosition:"bottom-left",onClick:function(){return i("home",{robot:u.mule_ref})}})],4),children:(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Model",children:n.model}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:n.locat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:n.mode}),u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Loaded Cargo",children:l.load||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:u.home}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:u.dest||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.power,minValue:0,maxValue:100,ranges:{good:[60,Infinity],average:[20,60],bad:[-Infinity,20]}})})],4)]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"150px",children:[u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set Destination",onClick:function(){return i("destination",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set ID",onClick:function(){return i("setid",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set Home",onClick:function(){return i("sethome",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Unload Cargo",onClick:function(){return i("unload",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Auto Return",checked:u.autoReturn,onClick:function(){return i("autoret",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Auto Pickup",checked:u.autoPickup,onClick:function(){return i("autopick",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Delivery Report",checked:u.reportDelivery,onClick:function(){return i("report",{robot:u.mule_ref})}})],4),!u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Stop Patrol",onClick:function(){return i("patroloff",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Start Patrol",onClick:function(){return i("patrolon",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Summon",onClick:function(){return i("summon",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Eject PAi",onClick:function(){return i("ejectpai",{robot:n.bot_ref})}})],4)]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosShipping=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosShipping=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:450,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"NTOS Shipping Hub.",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Id",onClick:function(){return i("ejectid")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current User",children:l.current_user||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inserted Card",children:l.card_owner||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available Paper",children:l.has_printer?l.paperamt:"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Profit on Sale",children:[l.barcode_split,"%"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Shipping Options",children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"id-card",tooltip:"The currently ID card will become the current user.",tooltipPosition:"right",disabled:!l.has_id_slot,onClick:function(){return i("selectid")},content:"Set Current ID"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"print",tooltip:"Print a barcode to use on a wrapped package.",tooltipPosition:"right",disabled:!l.has_printer||!l.current_user,onClick:function(){return i("print")},content:"Print Barcode"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"tags",tooltip:"Set how much profit you'd like on your package.",tooltipPosition:"right",onClick:function(){return i("setsplit")},content:"Set Profit Margin"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",content:"Reset ID",onClick:function(){return i("resetid")}})})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosStationAlertConsole=void 0;var o=n(0),r=n(3),a=n(209);t.NtosStationAlertConsole=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:315,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.StationAlertConsoleContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosSupermatterMonitorContent=t.NtosSupermatterMonitor=void 0;var o=n(0),r=n(14),a=n(30),c=n(11),i=n(2),l=n(1),d=n(36),u=n(3),s=function(e){return Math.log2(16+Math.max(0,e))-4};t.NtosSupermatterMonitor=function(e,t){return(0,o.createComponentVNode)(2,u.NtosWindow,{width:600,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,u.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,m)})})};var m=function(e,t){var n=(0,i.useBackend)(t),u=n.act,m=n.data,C=m.active,h=m.SM_integrity,N=m.SM_power,V=m.SM_ambienttemp,b=m.SM_ambientpressure;if(!C)return(0,o.createComponentVNode)(2,p);var f=(0,a.flow)([function(e){return e.filter((function(e){return e.amount>=.01}))},(0,r.sortBy)((function(e){return-e.amount}))])(m.gases||[]),g=Math.max.apply(Math,[1].concat(f.map((function(e){return e.amount}))));return(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"270px",children:(0,o.createComponentVNode)(2,l.Section,{title:"Metrics",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:h/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Relative EER",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:N,minValue:0,maxValue:5e3,ranges:{good:[-Infinity,5e3],average:[5e3,7e3],bad:[7e3,Infinity]},children:(0,c.toFixed)(N)+" MeV/cm3"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(V),minValue:0,maxValue:s(1e4),ranges:{teal:[-Infinity,s(80)],good:[s(80),s(373)],average:[s(373),s(1e3)],bad:[s(1e3),Infinity]},children:(0,c.toFixed)(V)+" K"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(b),minValue:0,maxValue:s(5e4),ranges:{good:[s(1),s(300)],average:[-Infinity,s(1e3)],bad:[s(1e3),+Infinity]},children:(0,c.toFixed)(b)+" kPa"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Gases",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"arrow-left",content:"Back",onClick:function(){return u("PRG_clear")}}),children:(0,o.createComponentVNode)(2,l.LabeledList,{children:f.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,d.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,d.getGasColor)(e.name),value:e.amount,minValue:0,maxValue:g,children:(0,c.toFixed)(e.amount,2)+"%"})},e.name)}))})})})]})};t.NtosSupermatterMonitorContent=m;var p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.supermatters,c=void 0===a?[]:a;return(0,o.createComponentVNode)(2,l.Section,{title:"Detected Supermatters",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"sync",content:"Refresh",onClick:function(){return r("PRG_refresh")}}),children:(0,o.createComponentVNode)(2,l.Table,{children:c.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.uid+". "+e.area_name}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,color:"label",children:"Integrity:"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,width:"120px",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:e.integrity/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,l.Button,{content:"Details",onClick:function(){return r("PRG_set",{target:e.uid})}})})]},e.uid)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NuclearBomb=void 0;var o=n(0),r=n(6),a=n(2),c=n(1),i=n(3),l=function(e,t){var n=(0,a.useBackend)(t).act;return(0,o.createComponentVNode)(2,c.Box,{width:"185px",children:(0,o.createComponentVNode)(2,c.Grid,{width:"1px",children:[["1","4","7","C"],["2","5","8","0"],["3","6","9","E"]].map((function(e){return(0,o.createComponentVNode)(2,c.Grid.Column,{children:e.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,mb:"6px",content:e,textAlign:"center",fontSize:"40px",lineHeight:1.25,width:"55px",className:(0,r.classes)(["NuclearBomb__Button","NuclearBomb__Button--keypad","NuclearBomb__Button--"+e]),onClick:function(){return n("keypad",{digit:e})}},e)}))},e[0])}))})})};t.NuclearBomb=function(e,t){var n=(0,a.useBackend)(t),r=n.act,d=n.data,u=(d.anchored,d.disk_present,d.status1),s=d.status2;return(0,o.createComponentVNode)(2,i.Window,{width:350,height:442,theme:"retro",children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Box,{m:"6px",children:[(0,o.createComponentVNode)(2,c.Box,{mb:"6px",className:"NuclearBomb__displayBox",children:u}),(0,o.createComponentVNode)(2,c.Flex,{mb:1.5,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Box,{className:"NuclearBomb__displayBox",children:s})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{icon:"eject",fontSize:"24px",lineHeight:1,textAlign:"center",width:"43px",ml:"6px",mr:"3px",mt:"3px",className:"NuclearBomb__Button NuclearBomb__Button--keypad",onClick:function(){return r("eject_disk")}})})]}),(0,o.createComponentVNode)(2,c.Flex,{ml:"3px",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,l)}),(0,o.createComponentVNode)(2,c.Flex.Item,{ml:"6px",width:"129px",children:(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"ARM",textAlign:"center",fontSize:"28px",lineHeight:1.1,mb:"6px",className:"NuclearBomb__Button NuclearBomb__Button--C",onClick:function(){return r("arm")}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"ANCHOR",textAlign:"center",fontSize:"28px",lineHeight:1.1,className:"NuclearBomb__Button NuclearBomb__Button--E",onClick:function(){return r("anchor")}}),(0,o.createComponentVNode)(2,c.Box,{textAlign:"center",color:"#9C9987",fontSize:"80px",children:(0,o.createComponentVNode)(2,c.Icon,{name:"radiation"})}),(0,o.createComponentVNode)(2,c.Box,{height:"80px",className:"NuclearBomb__NTIcon"})]})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OperatingComputer=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}];t.OperatingComputer=function(e,t){var n=(0,r.useSharedState)(t,"tab",1),i=n[0],u=n[1];return(0,o.createComponentVNode)(2,c.Window,{width:350,height:470,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===i,onClick:function(){return u(1)},children:"Patient State"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===i,onClick:function(){return u(2)},children:"Surgery Procedures"})]}),1===i&&(0,o.createComponentVNode)(2,l),2===i&&(0,o.createComponentVNode)(2,d)]})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),l=c.table,d=c.procedures,u=void 0===d?[]:d,s=c.patient,m=void 0===s?{}:s;return l?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Patient State",children:m&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:m.statstate,children:m.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Type",children:m.blood_type}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,color:m.health>=0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m.health})})}),i.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type]/m.maxHealth,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m[e.type]})})},e.type)}))]})||"No Patient Detected"}),0===u.length&&(0,o.createComponentVNode)(2,a.Section,{children:"No Active Procedures"}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Next Step",children:[e.next_step,e.chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.chems_needed],0)]}),!!c.alternative_step&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alternative Step",children:[e.alternative_step,e.alt_chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.alt_chems_needed],0)]})]})},e.name)}))],0):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Table Detected"})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.surgeries,l=void 0===i?[]:i;return(0,o.createComponentVNode)(2,a.Section,{title:"Advanced Surgery Procedures",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"download",content:"Sync Research Database",onClick:function(){return c("sync")}}),l.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,children:e.desc},e.name)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Orbit=void 0;var o=n(0),r=n(19),a=n(63),c=n(2),i=n(1),l=n(3);function d(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);nt},h=function(e,t){var n=e.name,o=t.name,r=n.match(m),a=o.match(m);return r&&a&&n.replace(m,"")===o.replace(m,"")?parseInt(r[1],10)-parseInt(a[1],10):C(n,o)},N=function(e,t){var n=(0,c.useBackend)(t).act,r=e.searchText,a=e.source,l=e.title,d=a.filter(p(r));return d.sort(h),a.length>0&&(0,o.createComponentVNode)(2,i.Section,{title:l+" - ("+a.length+")",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name.replace(s,""),onClick:function(){return n("orbit",{ref:e.ref})}},e.name)}))})},V=function(e,t){var n=(0,c.useBackend)(t).act,r=e.color,l=e.thing;return(0,o.createComponentVNode)(2,i.Button,{color:r,onClick:function(){return n("orbit",{ref:l.ref})},children:[l.name,l.orbiters&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,ml:1,children:["(",l.orbiters," ",(0,o.createComponentVNode)(2,i.Box,{as:"img",src:(0,a.resolveAsset)("ghost.png"),opacity:.7}),")"]})]})};t.Orbit=function(e,t){for(var n,r=(0,c.useBackend)(t),a=r.act,u=r.data,s=u.alive,m=u.antagonists,b=u.dead,f=u.ghosts,g=u.misc,v=u.npcs,k=(0,c.useLocalState)(t,"searchText",""),x=k[0],B=k[1],_={},w=d(m);!(n=w()).done;){var L=n.value;_[L.antag]===undefined&&(_[L.antag]=[]),_[L.antag].push(L)}var y=Object.entries(_);y.sort((function(e,t){return C(e[0],t[0])}));return(0,o.createComponentVNode)(2,l.Window,{title:"Orbit",width:350,height:700,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Flex,{children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Icon,{name:"search",mr:1})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Input,{placeholder:"Search...",autoFocus:!0,fluid:!0,value:x,onInput:function(e,t){return B(t)},onEnter:function(e,t){return function(e){for(var t=0,n=[y.map((function(e){return e[0],e[1]})),s,f,b,v,g];t0&&(0,o.createComponentVNode)(2,i.Section,{title:"Ghost-Visible Antagonists",children:y.map((function(e){var t=e[0],n=e[1];return(0,o.createComponentVNode)(2,i.Section,{title:t,level:2,children:n.filter(p(x)).sort(h).map((function(e){return(0,o.createComponentVNode)(2,V,{color:"bad",thing:e},e.name)}))},t)}))}),(0,o.createComponentVNode)(2,i.Section,{title:"Alive",children:s.filter(p(x)).sort(h).map((function(e){return(0,o.createComponentVNode)(2,V,{color:"good",thing:e},e.name)}))}),(0,o.createComponentVNode)(2,N,{title:"Ghosts",source:f,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"Dead",source:b,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"NPCs",source:v,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"Misc",source:g,searchText:x})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OreBox=void 0;var o=n(0),r=n(19),a=n(1),c=n(2),i=n(3);t.OreBox=function(e,t){var n=(0,c.useBackend)(t),l=n.act,d=n.data.materials;return(0,o.createComponentVNode)(2,i.Window,{width:335,height:415,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Ores",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Empty",onClick:function(){return l("removeall")}}),children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Ore"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:"Amount"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,r.toTitleCase)(e.name)}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,a.Box,{color:"label",inline:!0,children:e.amount})})]},e.type)}))]})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Box,{children:["All ores will be placed in here when you are wearing a mining stachel on your belt or in a pocket while dragging the ore box.",(0,o.createVNode)(1,"br"),"Gibtonite is not accepted."]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OreRedemptionMachine=void 0;var o=n(0),r=n(19),a=n(2),c=n(1),i=n(3);t.OreRedemptionMachine=function(e,t){var n=(0,a.useBackend)(t),r=n.act,d=n.data,u=d.unclaimedPoints,s=d.materials,m=d.alloys,p=d.diskDesigns,C=d.hasDisk;return(0,o.createComponentVNode)(2,i.Window,{title:"Ore Redemption Machine",width:440,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.BlockQuote,{mb:1,children:["This machine only accepts ore.",(0,o.createVNode)(1,"br"),"Gibtonite and Slag are not accepted."]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"label",mr:1,children:"Unclaimed points:"}),u,(0,o.createComponentVNode)(2,c.Button,{ml:2,content:"Claim",disabled:0===u,onClick:function(){return r("Claim")}})]})]}),(0,o.createComponentVNode)(2,c.Section,{children:C&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{mb:1,children:(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject design disk",onClick:function(){return r("diskEject")}})}),(0,o.createComponentVNode)(2,c.Table,{children:p.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:["File ",e.index,": ",e.name]}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,c.Button,{disabled:!e.canupload,content:"Upload",onClick:function(){return r("diskUpload",{design:e.index})}})})]},e.index)}))})],4)||(0,o.createComponentVNode)(2,c.Button,{icon:"save",content:"Insert design disk",onClick:function(){return r("diskInsert")}})}),(0,o.createComponentVNode)(2,c.Section,{title:"Materials",children:(0,o.createComponentVNode)(2,c.Table,{children:s.map((function(e){return(0,o.createComponentVNode)(2,l,{material:e,onRelease:function(t){return r("Release",{id:e.id,sheets:t})}},e.id)}))})}),(0,o.createComponentVNode)(2,c.Section,{title:"Alloys",children:(0,o.createComponentVNode)(2,c.Table,{children:m.map((function(e){return(0,o.createComponentVNode)(2,l,{material:e,onRelease:function(t){return r("Smelt",{id:e.id,sheets:t})}},e.id)}))})})]})})};var l=function(e,t){var n=e.material,i=e.onRelease,l=(0,a.useLocalState)(t,"amount"+n.name,1),d=l[0],u=l[1],s=Math.floor(n.amount);return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,r.toTitleCase)(n.name).replace("Alloy","")}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{mr:2,color:"label",inline:!0,children:n.value&&n.value+" cr"})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{mr:2,color:"label",inline:!0,children:[s," sheets"]})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.NumberInput,{width:"32px",step:1,stepPixelSize:5,minValue:1,maxValue:50,value:d,onChange:function(e,t){return u(t)}}),(0,o.createComponentVNode)(2,c.Button,{disabled:s<1,content:"Release",onClick:function(){return i(d)}})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Pandemic=t.PandemicAntibodyDisplay=t.PandemicSymptomDisplay=t.PandemicDiseaseDisplay=t.PandemicBeakerDisplay=void 0;var o=n(0),r=n(14),a=n(2),c=n(1),i=n(3),l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.has_beaker,d=i.beaker_empty,u=i.has_blood,s=i.blood,m=!l||d;return(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Empty and Eject",color:"bad",disabled:m,onClick:function(){return r("empty_eject_beaker")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"trash",content:"Empty",disabled:m,onClick:function(){return r("empty_beaker")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",disabled:!l,onClick:function(){return r("eject_beaker")}})],4),children:l?d?(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Beaker is empty"}):u?(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Blood DNA",children:s&&s.dna||"Unknown"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Blood Type",children:s&&s.type||"Unknown"})]}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"No blood detected"}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No beaker loaded"})})};t.PandemicBeakerDisplay=l;var d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.is_ready;return(i.viruses||[]).map((function(e){var t=e.symptoms||[];return(0,o.createComponentVNode)(2,c.Section,{title:e.can_rename?(0,o.createComponentVNode)(2,c.Input,{value:e.name,onChange:function(t,n){return r("rename_disease",{index:e.index,name:n})}}):e.name,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"flask",content:"Create culture bottle",disabled:!l,onClick:function(){return r("create_culture_bottle",{index:e.index})}}),children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:e.description}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Agent",children:e.agent}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Spread",children:e.spread}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Possible Cure",children:e.cure})]})})]}),!!e.is_adv&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Statistics",level:2,children:(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Resistance",children:e.resistance}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stealth",children:e.stealth})]})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stage speed",children:e.stage_speed}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Transmissibility",children:e.transmission})]})})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Symptoms",level:2,children:t.map((function(e){return(0,o.createComponentVNode)(2,c.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,u,{symptom:e})})},e.name)}))})],4)]},e.name)}))};t.PandemicDiseaseDisplay=d;var u=function(e,t){var n=e.symptom,a=n.name,i=n.desc,l=n.stealth,d=n.resistance,u=n.stage_speed,s=n.transmission,m=n.level,p=n.neutered,C=(0,r.map)((function(e,t){return{desc:e,label:t}}))(n.threshold_desc||{});return(0,o.createComponentVNode)(2,c.Section,{title:a,level:2,buttons:!!p&&(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:"bad",children:"Neutered"}),children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:2,children:i}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Level",children:m}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Resistance",children:d}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stealth",children:l}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stage Speed",children:u}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Transmission",children:s})]})})]}),C.length>0&&(0,o.createComponentVNode)(2,c.Section,{title:"Thresholds",level:3,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.label,children:e.desc},e.label)}))})})]})};t.PandemicSymptomDisplay=u;var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.resistances||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Antibodies",children:l.length>0?(0,o.createComponentVNode)(2,c.LabeledList,{children:l.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,c.Button,{icon:"eye-dropper",content:"Create vaccine bottle",disabled:!i.is_ready,onClick:function(){return r("create_vaccine_bottle",{index:e.id})}})},e.name)}))}):(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:"bad",mt:1,children:"No antibodies detected."})})};t.PandemicAntibodyDisplay=s;t.Pandemic=function(e,t){var n=(0,a.useBackend)(t).data;return(0,o.createComponentVNode)(2,i.Window,{width:520,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l),!!n.has_blood&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,s)],4)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PaperSheet=void 0;var o=n(0),r=n(6),a=n(103),c=s(n(613)),i=s(n(614)),l=n(2),d=n(1),u=n(3);function s(e){return e&&e.__esModule?e:{"default":e}}function m(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function p(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}function C(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return h(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n]+)>/g,(function(e,t){return"$"+n[t]})))}if("function"==typeof t){var a=this;return o[Symbol.replace].call(this,e,(function(){var e=[];return e.push.apply(e,arguments),"object"!=typeof e[e.length-1]&&e.push(c(e,a)),t.apply(this,e)}))}return o[Symbol.replace].call(this,e,t)},N.apply(this,arguments)}function V(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&v(e,t)}function b(e){var t="function"==typeof Map?new Map:undefined;return(b=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,o)}function o(){return f(e,arguments,k(this).constructor)}return o.prototype=Object.create(e.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),v(o,e)})(e)}function f(e,t,n){return(f=g()?Reflect.construct:function(e,t,n){var o=[null];o.push.apply(o,t);var r=new(Function.bind.apply(e,o));return n&&v(r,n.prototype),r}).apply(null,arguments)}function g(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function v(e,t){return(v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function k(e){return(k=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var x=function(e,t,n,o){return void 0===o&&(o=!1),"'+e+""},B=/\[(_+)\]/g,_=N(/\[\]/gm,{id:2}),w=/%s(?:ign)?(?=\\s|$)/gim,L=function(e,t,n,o,r){var a=e.replace(B,(function(e,a,c,i){var l=function(e,t,n){t=n+"x "+t;var o=document.createElement("canvas").getContext("2d");return o.font=t,o.measureText(e).width}(e,t,n)+"px";return function(e,t,n,o,r,a){return'['+(n=a,r=l,(r?n.replace(/")};return(0,o.createComponentVNode)(2,d.Box,{position:"relative",backgroundColor:i,width:"100%",height:"100%",children:[(0,o.createComponentVNode)(2,d.Box,{fillPositionedParent:!0,width:"100%",height:"100%",dangerouslySetInnerHTML:s,p:"10px"}),u.map((function(e,t){return(0,o.createComponentVNode)(2,S,{image:{sprite:e[0],x:e[1],y:e[2],rotate:e[3]}},e[0]+t)}))]})},T=function(e){function t(t,n){var o;return(o=e.call(this,t,n)||this).state={x:0,y:0,rotate:0},o}m(t,e);var n=t.prototype;return n.findStampPosition=function(e){for(var t=event.pageX,n=event.pageY,o={left:e.target.offsetLeft,top:e.target.offsetTop},r=e.target.offsetParent;r;)o.left+=r.offsetLeft,o.top+=r.offsetTop,r=r.offsetParent;var c=[t-o.left,n-o.top],i=(0,a.vecScale)([121,51],.5);return(0,a.vecSubtract)(c,i)},n.componentDidMount=function(){document.onwheel=this.handleWheel.bind(this)},n.handleMouseMove=function(e){var t=this.findStampPosition(e);y(e),this.setState({x:t[0],y:t[1]})},n.handleMouseClick=function(e){var t=this.findStampPosition(e),n=(0,l.useBackend)(this.context),o=n.act,r=n.data;o("stamp",{x:t[0],y:t[1],r:this.state.rotate,stamp_class:this.props.stamp_class,stamp_icon_state:r.stamp_icon_state}),this.setState({x:t[0],y:t[1]})},n.handleWheel=function(e){var t=e.deltaY>0?15:-15;if(e.deltaY<0&&0===this.state.rotate)this.setState({rotate:360+t});else if(e.deltaY>0&&360===this.state.rotate)this.setState({rotate:t});else{var n={rotate:t+this.state.rotate};this.setState((function(){return n}))}y(e)},n.render=function(){var e=this.props,t=e.value,n=e.stamp_class,r=e.stamps,a=p(e,["value","stamp_class","stamps"]),c=r||[],i={sprite:n,x:this.state.x,y:this.state.y,rotate:this.state.rotate};return(0,o.normalizeProps)((0,o.createComponentVNode)(2,d.Box,Object.assign({onClick:this.handleMouseClick.bind(this),onMouseMove:this.handleMouseMove.bind(this),onwheel:this.handleWheel.bind(this)},a,{children:[(0,o.createComponentVNode)(2,I,{readOnly:!0,value:t,stamps:c}),(0,o.createComponentVNode)(2,S,{opacity:.5,image:i})]})))},t}(o.Component),A=function(e){function t(t,n){var o;return(o=e.call(this,t,n)||this).state={previewSelected:"Preview",old_text:t.value||"",textarea_text:"",combined_text:t.value||""},o}m(t,e);var n=t.prototype;return n.createPreview=function(e,t){void 0===t&&(t=!1);var n,o,r=(0,l.useBackend)(this.context).data,a=r.text,d=r.pen_color,u=r.pen_font,s=r.is_crayon,m=r.field_counter,p=r.edit_usr,h={text:a};if((e=e.trim()).length>0){var N=function(e){return c["default"].sanitize(e,{FORBID_ATTR:["class","style"],ALLOWED_TAGS:["br","code","li","p","pre","span","table","td","tr","th","ul","ol","menu","font","b","center","table","tr","th"]})}(e+="\n"===e[e.length]?" \n":"\n \n"),V=(n=d,o=p,N.replace(w,(function(){return x(o,"Times New Roman",n,!0)}))),b=L(V,u,12,d,m),f=function(e){return(0,i["default"])(e,{breaks:!0,smartypants:!0,smartLists:!0,walkTokens:function(e){switch(e.type){case"url":case"autolink":case"reflink":case"link":case"image":e.type="text",e.href=""}},baseUrl:"thisshouldbreakhttp"})}(b.text),g=x(f,u,d,s);h.text+=g,h.field_counter=b.counter}if(t){var v=function(e,t,n,o,r){var a;void 0===r&&(r=!1);for(var i={},l=[];null!==(a=_.exec(e));){var d=a[0],u=a.groups.id;if(u){var s=document.getElementById(u);if(0===(s&&s.value?s.value:"").length)continue;var m=c["default"].sanitize(s.value.trim(),{ALLOWED_TAGS:[]});if(0===m.length)continue;var p=s.cloneNode(!0);m.match(w)?(p.style.fontFamily="Times New Roman",r=!0,p.defaultValue=o):(p.style.fontFamily=t,p.defaultValue=m),r&&(p.style.fontWeight="bold"),p.style.color=n,p.disabled=!0;var h=document.createElement("div");h.appendChild(p),i[u]=m,l.push({value:"["+h.innerHTML+"]",raw_text:d})}}if(l.length>0)for(var N,V=C(l);!(N=V()).done;){var b=N.value;e=e.replace(b.raw_text,b.value)}return{text:e,fields:i}}(h.text,u,d,p,s);h.text=v.text,h.form_fields=v.fields}return h},n.onInputHandler=function(e,t){var n=this;if(t!==this.state.textarea_text){var o=this.state.old_text.length+this.state.textarea_text.length;if(o>5e3&&(t=o-5e3>=t.length?"":t.substr(0,t.length-(o-5e3)))===this.state.textarea_text)return;this.setState((function(){return{textarea_text:t,combined_text:n.createPreview(t)}}))}},n.finalUpdate=function(e){var t=(0,l.useBackend)(this.context).act,n=this.createPreview(e,!0);t("save",n),this.setState((function(){return{textarea_text:"",previewSelected:"save",combined_text:n.text}}))},n.render=function(){var e=this,t=this.props,n=(t.value,t.textColor),r=t.fontFamily,a=t.stamps,c=t.backgroundColor;return p(t,["value","textColor","fontFamily","stamps","backgroundColor"]),(0,o.createComponentVNode)(2,d.Flex,{direction:"column",fillPositionedParent:!0,children:[(0,o.createComponentVNode)(2,d.Flex.Item,{children:(0,o.createComponentVNode)(2,d.Tabs,{children:[(0,o.createComponentVNode)(2,d.Tabs.Tab,{textColor:"black",backgroundColor:"Edit"===this.state.previewSelected?"grey":"white",selected:"Edit"===this.state.previewSelected,onClick:function(){return e.setState({previewSelected:"Edit"})},children:"Edit"},"marked_edit"),(0,o.createComponentVNode)(2,d.Tabs.Tab,{textColor:"black",backgroundColor:"Preview"===this.state.previewSelected?"grey":"white",selected:"Preview"===this.state.previewSelected,onClick:function(){return e.setState((function(){return{previewSelected:"Preview",textarea_text:e.state.textarea_text,combined_text:e.createPreview(e.state.textarea_text).text}}))},children:"Preview"},"marked_preview"),(0,o.createComponentVNode)(2,d.Tabs.Tab,{textColor:"black",backgroundColor:"confirm"===this.state.previewSelected?"red":"save"===this.state.previewSelected?"grey":"white",selected:"confirm"===this.state.previewSelected||"save"===this.state.previewSelected,onClick:function(){"confirm"===e.state.previewSelected?e.finalUpdate(e.state.textarea_text):"Edit"===e.state.previewSelected?e.setState((function(){return{previewSelected:"confirm",textarea_text:e.state.textarea_text,combined_text:e.createPreview(e.state.textarea_text).text}})):e.setState({previewSelected:"confirm"})},children:"confirm"===this.state.previewSelected?"confirm":"save"},"marked_done")]})}),(0,o.createComponentVNode)(2,d.Flex.Item,{grow:1,basis:1,children:"Edit"===this.state.previewSelected&&(0,o.createComponentVNode)(2,d.TextArea,{value:this.state.textarea_text,textColor:n,fontFamily:r,height:window.innerHeight-80+"px",backgroundColor:c,onInput:this.onInputHandler.bind(this)})||(0,o.createComponentVNode)(2,I,{value:this.state.combined_text,stamps:a,fontFamily:r,textColor:n})})]})},t}(o.Component);t.PaperSheet=function(e,t){var n=(0,l.useBackend)(t).data,r=n.edit_mode,a=n.text,c=n.paper_color,i=n.pen_color,s=void 0===i?"black":i,m=n.pen_font,p=void 0===m?"Verdana":m,C=n.stamps,h=n.stamp_class,N=(n.stamped,c&&"white"!==c?c:"#FFFFFF"),V=C&&null!==C?C:[];return(0,o.createComponentVNode)(2,u.Window,{theme:"paper",width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{children:(0,o.createComponentVNode)(2,d.Box,{fillPositionedParent:!0,backgroundColor:N,children:function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,I,{value:a,stamps:V,readOnly:!0});case 1:return(0,o.createComponentVNode)(2,A,{value:a,textColor:s,fontFamily:p,stamps:V,backgroundColor:N});case 2:return(0,o.createComponentVNode)(2,T,{value:a,stamps:V,stamp_class:h});default:return"ERROR ERROR WE CANNOT BE HERE!!"}}(r)})})})}},,,function(e,t,n){"use strict";t.__esModule=!0,t.ParticleAccelerator=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ParticleAccelerator=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.assembled,u=l.power,s=l.strength;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:185,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Run Scan",onClick:function(){return i("scan")}}),children:(0,o.createComponentVNode)(2,a.Box,{color:d?"good":"bad",children:d?"Ready - All parts in place":"Unable to detect all parts"})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Particle Accelerator Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,disabled:!d,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Particle Strength",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:!d,onClick:function(){return i("remove_strength")}})," ",String(s).padStart(1,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:!d,onClick:function(){return i("add_strength")}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PersonalCrafting=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);function i(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n50?"good":d>15&&"average")||"bad";return(0,o.createComponentVNode)(2,c.Window,{width:450,height:340,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!l.anchored&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Generator not anchored."}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power switch",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.active?"power-off":"times",onClick:function(){return i("toggle_power")},disabled:!l.ready_to_boot,children:l.active?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:l.sheet_name+" sheets",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:u,children:l.sheets}),l.sheets>=1&&(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"eject",disabled:l.active,onClick:function(){return i("eject")},children:"Eject"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current sheet level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.stack_percent/100,ranges:{good:[.1,Infinity],average:[.01,.1],bad:[-Infinity,.01]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Heat level",children:l.current_heat<100?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:"Nominal"}):l.current_heat<200?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",children:"Caution"}):(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"DANGER"})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current output",children:l.power_output}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust output",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",onClick:function(){return i("lower_power")},children:l.power_generated}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return i("higher_power")},children:l.power_generated})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power available",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:!l.connected&&"bad",children:l.connected?l.power_available:"Unconnected"})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortablePump=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(210);t.PortablePump=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.direction,s=(d.holding,d.target_pressure),m=d.default_pressure,p=d.min_pressure,C=d.max_pressure;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:315,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,i.PortableBasicInfo),(0,o.createComponentVNode)(2,a.Section,{title:"Pump",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"sign-in-alt":"sign-out-alt",content:u?"In":"Out",selected:u,onClick:function(){return l("direction")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:s,unit:"kPa",width:"75px",minValue:p,maxValue:C,step:10,onChange:function(e,t){return l("pressure",{pressure:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",disabled:s===p,onClick:function(){return l("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",disabled:s===m,onClick:function(){return l("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",disabled:s===C,onClick:function(){return l("pressure",{pressure:"max"})}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableScrubber=void 0;var o=n(0),r=n(2),a=n(1),c=n(36),i=n(3),l=n(210);t.PortableScrubber=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data.filter_types||[];return(0,o.createComponentVNode)(2,i.Window,{width:320,height:350,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,l.PortableBasicInfo),(0,o.createComponentVNode)(2,a.Section,{title:"Filters",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,c.getGasLabel)(e.gas_id,e.gas_name),selected:e.enabled,onClick:function(){return d("toggle_filter",{val:e.gas_id})}},e.id)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableTurret=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.PortableTurret=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.silicon_user,u=l.locked,s=l.on,m=l.check_weapons,p=l.neutralize_criminals,C=l.neutralize_all,h=l.neutralize_unidentified,N=l.neutralize_nonmindshielded,V=l.neutralize_cyborgs,b=l.neutralize_heads,f=l.manual_control,g=l.allow_manual_control,v=l.lasertag_turret;return(0,o.createComponentVNode)(2,c.Window,{width:310,height:v?110:292,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Swipe an ID card to ",u?"unlock":"lock"," this interface."]}),(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",buttons:!v&&(!!g||!!f&&!!d)&&(0,o.createComponentVNode)(2,a.Button,{icon:f?"wifi":"terminal",content:f?"Remotely Controlled":"Manual Control",disabled:f,color:"bad",onClick:function(){return i("manual")}}),children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"power-off":"times",content:s?"On":"Off",selected:s,disabled:u,onClick:function(){return i("power")}})})})}),!v&&(0,o.createComponentVNode)(2,a.Section,{title:"Target Settings",buttons:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:!b,content:"Ignore Command",disabled:u,onClick:function(){return i("shootheads")}}),children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:C,content:"Non-Security and Non-Command",disabled:u,onClick:function(){return i("shootall")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:m,content:"Unauthorized Weapons",disabled:u,onClick:function(){return i("authweapon")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:h,content:"Unidentified Life Signs",disabled:u,onClick:function(){return i("checkxenos")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:N,content:"Non-Mindshielded",disabled:u,onClick:function(){return i("checkloyal")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:p,content:"Wanted Criminals",disabled:u,onClick:function(){return i("shootcriminals")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:V,content:"Cyborgs",disabled:u,onClick:function(){return i("shootborgs")}})]})],0)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ProbingConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ProbingConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.open,u=l.feedback,s=l.occupant,m=l.occupant_name,p=l.occupant_status;return(0,o.createComponentVNode)(2,c.Window,{width:330,height:207,theme:"abductor",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Machine Report",children:u})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Scanner",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"sign-out-alt":"sign-in-alt",content:d?"Close":"Open",onClick:function(){return i("door")}}),children:s&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:3===p?"bad":2===p?"average":"good",children:3===p?"Deceased":2===p?"Unconscious":"Conscious"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Experiments",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer",content:"Probe",onClick:function(){return i("experiment",{experiment_type:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"brain",content:"Dissect",onClick:function(){return i("experiment",{experiment_type:2})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"search",content:"Analyze",onClick:function(){return i("experiment",{experiment_type:3})}})]})]})||(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Subject"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ProximitySensor=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ProximitySensor=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.minutes,u=l.seconds,s=l.timing,m=l.scanning,p=l.sensitivity;return(0,o.createComponentVNode)(2,c.Window,{width:250,height:185,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"lock":"unlock",content:m?"Armed":"Not Armed",selected:m,onClick:function(){return i("scanning")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Detection Range",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:m,onClick:function(){return i("sense",{range:-1})}})," ",String(p).padStart(1,"1")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:m,onClick:function(){return i("sense",{range:1})}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Auto Arm",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:s?"Stop":"Start",selected:s,disabled:m,onClick:function(){return i("time")}}),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:m||s,onClick:function(){return i("input",{adjust:-30})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:m||s,onClick:function(){return i("input",{adjust:-1})}})," ",String(d).padStart(2,"0"),":",String(u).padStart(2,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:m||s,onClick:function(){return i("input",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:m||s,onClick:function(){return i("input",{adjust:30})}})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Radio=void 0;var o=n(0),r=n(14),a=n(11),c=n(2),i=n(1),l=n(36),d=n(3);t.Radio=function(e,t){var n=(0,c.useBackend)(t),u=n.act,s=n.data,m=s.freqlock,p=s.frequency,C=s.minFrequency,h=s.maxFrequency,N=s.listening,V=s.broadcasting,b=s.command,f=s.useCommand,g=s.subspace,v=s.subspaceSwitchable,k=l.RADIO_CHANNELS.find((function(e){return e.freq===p})),x=(0,r.map)((function(e,t){return{name:t,status:!!e}}))(s.channels),B=106;return g&&(x.length>0?B+=21*x.length+6:B+=24),(0,o.createComponentVNode)(2,d.Window,{width:360,height:B,children:(0,o.createComponentVNode)(2,d.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Frequency",children:[m&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"light-gray",children:(0,a.toFixed)(p/10,1)+" kHz"})||(0,o.createComponentVNode)(2,i.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:10,minValue:C/10,maxValue:h/10,value:p/10,format:function(e){return(0,a.toFixed)(e,1)},onDrag:function(e,t){return u("frequency",{adjust:t-p/10})}}),k&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:k.color,ml:2,children:["[",k.name,"]"]})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Audio",children:[(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",width:"37px",icon:N?"volume-up":"volume-mute",selected:N,onClick:function(){return u("listen")}}),(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",width:"37px",icon:V?"microphone":"microphone-slash",selected:V,onClick:function(){return u("broadcast")}}),!!b&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"bullhorn",selected:f,content:"High volume "+(f?"ON":"OFF"),onClick:function(){return u("command")}}),!!v&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"bullhorn",selected:g,content:"Subspace Tx "+(g?"ON":"OFF"),onClick:function(){return u("subspace")}})]}),!!g&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Channels",children:[0===x.length&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"bad",children:"No encryption keys installed."}),x.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:e.status?"check-square-o":"square-o",selected:e.status,content:e.name,onClick:function(){return u("channel",{channel:e.name})}})},e.name)}))]})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RadioactiveMicrolaser=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.RadioactiveMicrolaser=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.irradiate,u=l.stealth,s=l.scanmode,m=l.intensity,p=l.wavelength,C=l.on_cooldown,h=l.cooldown;return(0,o.createComponentVNode)(2,c.Window,{title:"Radioactive Microlaser",width:320,height:335,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Status",children:(0,o.createComponentVNode)(2,a.Box,{color:C?"average":"good",children:C?"Recharging":"Ready"})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Scanner Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Irradiation",children:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return i("irradiate")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stealth Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"eye-slash":"eye",content:u?"On":"Off",disabled:!d,selected:u,onClick:function(){return i("stealth")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"mortar-pestle":"heartbeat",content:s?"Scan Reagents":"Scan Health",disabled:d&&u,onClick:function(){return i("scanmode")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Laser Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Intensity",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return i("radintensity",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return i("radintensity",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(m),width:"40px",minValue:1,maxValue:20,onChange:function(e,t){return i("radintensity",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return i("radintensity",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return i("radintensity",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Wavelength",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return i("radwavelength",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return i("radwavelength",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(p),width:"40px",minValue:0,maxValue:120,onChange:function(e,t){return i("radwavelength",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return i("radwavelength",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return i("radwavelength",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Cooldown",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:h})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RapidPipeDispenser=void 0;var o=n(0),r=n(6),a=n(2),c=n(1),i=n(3),l=["Atmospherics","Disposals","Transit Tubes"],d={Atmospherics:"wrench",Disposals:"trash-alt","Transit Tubes":"bus",Pipes:"grip-lines","Disposal Pipes":"grip-lines",Devices:"microchip","Heat Exchange":"thermometer-half","Station Equipment":"microchip"},u={grey:"#bbbbbb",amethyst:"#a365ff",blue:"#4466ff",brown:"#b26438",cyan:"#48eae8",dark:"#808080",green:"#1edd00",orange:"#ffa030",purple:"#b535ea",red:"#ff3333",violet:"#6e00f6",yellow:"#ffce26"},s=[{name:"Dispense",bitmask:1},{name:"Connect",bitmask:2},{name:"Destroy",bitmask:4},{name:"Paint",bitmask:8}];t.RapidPipeDispenser=function(e,t){var n=(0,a.useBackend)(t),m=n.act,p=n.data,C=p.category,h=p.categories,N=void 0===h?[]:h,V=p.selected_color,b=p.piping_layer,f=p.mode,g=p.preview_rows.flatMap((function(e){return e.previews})),v=(0,a.useLocalState)(t,"categoryName"),k=v[0],x=v[1],B=N.find((function(e){return e.cat_name===k}))||N[0];return(0,o.createComponentVNode)(2,i.Window,{width:425,height:515,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Category",children:l.map((function(e,t){return(0,o.createComponentVNode)(2,c.Button,{selected:C===t,icon:d[e],color:"transparent",content:e,onClick:function(){return m("category",{category:t})}},e)}))}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Modes",children:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{checked:f&e.bitmask,content:e.name,onClick:function(){return m("mode",{mode:e.bitmask})}},e.bitmask)}))}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,width:"64px",color:u[V],children:V}),Object.keys(u).map((function(e){return(0,o.createComponentVNode)(2,c.ColorBox,{ml:1,color:u[e],onClick:function(){return m("color",{paint_color:e})}},e)}))]})]})}),(0,o.createComponentVNode)(2,c.Flex,{m:-.5,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{m:.5,children:(0,o.createComponentVNode)(2,c.Section,{children:[0===C&&(0,o.createComponentVNode)(2,c.Box,{mb:1,children:[1,2,3].map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{fluid:!0,checked:e===b,content:"Layer "+e,onClick:function(){return m("piping_layer",{piping_layer:e})}},e)}))}),(0,o.createComponentVNode)(2,c.Box,{width:"108px",children:g.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{title:e.dir_name,selected:e.selected,style:{width:"48px",height:"48px",padding:0},onClick:function(){return m("setdir",{dir:e.dir,flipped:e.flipped})},children:(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["pipes32x32",e.dir+"-"+e.icon_state]),style:{transform:"scale(1.5) translate(17%, 17%)"}})},e.dir)}))})]})}),(0,o.createComponentVNode)(2,c.Flex.Item,{m:.5,grow:1,children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Tabs,{children:N.map((function(e,t){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{fluid:!0,icon:d[e.cat_name],selected:e.cat_name===B.cat_name,onClick:function(){return x(e.cat_name)},children:e.cat_name},e.cat_name)}))}),null==B?void 0:B.recipes.map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{fluid:!0,ellipsis:!0,checked:e.selected,content:e.pipe_name,title:e.pipe_name,onClick:function(){return m("pipe_type",{pipe_type:e.pipe_index,category:B.cat_name})}},e.pipe_index)}))]})})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RemoteRobotControlContent=t.RemoteRobotControl=void 0;var o=n(0),r=n(19),a=n(2),c=n(1),i=n(3);t.RemoteRobotControl=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{title:"Remote Robot Control",width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.robots,d=void 0===l?[]:l;return d.length?d.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name+" ("+e.model+")",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"tools",content:"Interface",onClick:function(){return i("interface",{ref:e.ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"phone-alt",content:"Call",onClick:function(){return i("callbot",{ref:e.ref})}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"Inactive"===(0,r.decodeHtmlEntities)(e.mode)?"bad":"Idle"===(0,r.decodeHtmlEntities)(e.mode)?"average":"good",children:(0,r.decodeHtmlEntities)(e.mode)})," ",e.hacked&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"bad",children:"(HACKED)"})||""]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Location",children:e.location})]})},e.ref)})):(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.NoticeBox,{textAlign:"center",children:"No robots detected"})})};t.RemoteRobotControlContent=l},function(e,t,n){"use strict";t.__esModule=!0,t.RoboticsControlConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.RoboticsControlConsole=function(e,t){var n=(0,r.useBackend)(t),d=(n.act,n.data),u=(0,r.useSharedState)(t,"tab",1),s=u[0],m=u[1],p=d.can_hack,C=d.cyborgs,h=void 0===C?[]:C,N=d.drones,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:460,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:1===s,onClick:function(){return m(1)},children:["Cyborgs (",h.length,")"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:2===s,onClick:function(){return m(2)},children:["Drones (",V.length,")"]})]}),1===s&&(0,o.createComponentVNode)(2,i,{cyborgs:h,can_hack:p}),2===s&&(0,o.createComponentVNode)(2,l,{drones:V})]})})};var i=function(e,t){var n=e.cyborgs,c=e.can_hack,i=(0,r.useBackend)(t),l=i.act;i.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createFragment)([!!c&&!e.emagged&&(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Hack",color:"bad",onClick:function(){return l("magbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:e.locked_down?"unlock":"lock",color:e.locked_down?"good":"default",content:e.locked_down?"Release":"Lockdown",onClick:function(){return l("stopbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",color:"bad",onClick:function(){return l("killbot",{ref:e.ref})}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":e.locked_down?"average":"good",children:e.status?"Not Responding":e.locked_down?"Locked Down":"Nominal"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,a.Box,{color:e.charge<=30?"bad":e.charge<=70?"average":"good",children:"number"==typeof e.charge?e.charge+"%":"Not Found"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master AI",children:(0,o.createComponentVNode)(2,a.Box,{color:e.synchronization?"default":"average",children:e.synchronization||"None"})})]})},e.ref)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cyborg units detected within access parameters"})},l=function(e,t){var n=e.drones,c=(0,r.useBackend)(t).act;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",color:"bad",onClick:function(){return c("killdrone",{ref:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":"good",children:e.status?"Not Responding":"Nominal"})})})},e.ref)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No drone units detected within access parameters"})}},function(e,t,n){"use strict";t.__esModule=!0,t.Roulette=t.RouletteBetTable=t.RouletteBoard=t.RouletteNumberButton=void 0;var o=n(0),r=n(6),a=n(2),c=n(1),i=n(3),l=function(e){if(0===e)return"green";for(var t=[[1,10],[19,28]],n=!0,o=0;o=r[0]&&e<=r[1]){n=!1;break}}var a=e%2==0;return(n?a:!a)?"red":"black"},d=function(e,t){var n=e.number,r=(0,a.useBackend)(t).act;return(0,o.createComponentVNode)(2,c.Button,{bold:!0,content:n,color:l(n),width:"40px",height:"28px",fontSize:"20px",textAlign:"center",mb:0,className:"Roulette__board-extrabutton",onClick:function(){return r("ChangeBetType",{type:n})}})};t.RouletteNumberButton=d;var u=function(e,t){var n=(0,a.useBackend)(t).act;return(0,o.createVNode)(1,"table","Table",[(0,o.createVNode)(1,"tr","Roulette__board-row",[(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{content:"0",color:"transparent",height:"88px",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:0})}}),2,{rowSpan:"3"}),[3,6,9,12,15,18,21,24,27,30,33,36].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s3rd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[2,5,8,11,14,17,20,23,26,29,32,35].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s2nd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[1,4,7,10,13,16,19,22,25,28,31,34].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1st col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"1st 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-12"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2nd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s13-24"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"3rd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s25-36"})}}),2,{colSpan:"4"})],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"1-18",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-18"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Even",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"even"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Black",color:"black",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"black"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Red",color:"red",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"red"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Odd",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"odd"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"19-36",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s19-36"})}}),2,{colSpan:"2"})],4)],4,{style:{width:"1px"}})};t.RouletteBoard=u;var s=function(e,t){var n=(0,a.useBackend)(t),i=n.act,d=n.data,u=(0,a.useLocalState)(t,"customBet",500),s=u[0],m=u[1],p=d.BetType;return p.startsWith("s")&&(p=p.substring(1,p.length)),(0,o.createVNode)(1,"table","Roulette__lowertable",[(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Last Spun:",16),(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Current Bet:",16)],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--spinresult","Roulette__lowertable--spinresult-"+l(d.LastSpin)]),d.LastSpin,0),(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--betscell"]),[(0,o.createComponentVNode)(2,c.Box,{bold:!0,mt:1,mb:1,fontSize:"25px",textAlign:"center",children:[d.BetAmount," cr on ",p]}),(0,o.createComponentVNode)(2,c.Box,{ml:1,mr:1,children:[(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 10 cr",onClick:function(){return i("ChangeBetAmount",{amount:10})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 50 cr",onClick:function(){return i("ChangeBetAmount",{amount:50})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 100 cr",onClick:function(){return i("ChangeBetAmount",{amount:100})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 500 cr",onClick:function(){return i("ChangeBetAmount",{amount:500})}}),(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet custom amount...",onClick:function(){return i("ChangeBetAmount",{amount:s})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{size:.1,children:(0,o.createComponentVNode)(2,c.NumberInput,{value:s,minValue:0,maxValue:1e3,step:10,stepPixelSize:4,width:"40px",onChange:function(e,t){return m(t)}})})]})]})],4)],4),(0,o.createVNode)(1,"tr",null,(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Box,{bold:!0,m:1,fontSize:"14px",textAlign:"center",children:"Swipe an ID card with a connected account to spin!"}),2,{colSpan:"2"}),2),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","Roulette__lowertable--cell",[(0,o.createComponentVNode)(2,c.Box,{inline:!0,bold:!0,mr:1,children:"House Balance:"}),(0,o.createComponentVNode)(2,c.Box,{inline:!0,children:d.HouseBalance?d.HouseBalance+" cr":"None"})],4),(0,o.createVNode)(1,"td","Roulette__lowertable--cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:d.IsAnchored?"Bolted":"Unbolted",m:1,color:"transparent",textAlign:"center",onClick:function(){return i("anchor")}}),2)],4)],4)};t.RouletteBetTable=s;t.Roulette=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:603,height:475,theme:"cardtable",children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,s)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SatelliteControl=void 0;var o=n(0),r=n(2),a=n(1),c=n(198),i=n(3);t.SatelliteControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.satellites||[];return(0,o.createComponentVNode)(2,i.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[d.meteor_shield&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledListItem,{label:"Coverage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.meteor_shield_coverage/d.meteor_shield_coverage_max,content:100*d.meteor_shield_coverage/d.meteor_shield_coverage_max+"%",ranges:{good:[1,Infinity],average:[.3,1],bad:[-Infinity,.3]}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Satellite Controls",children:(0,o.createComponentVNode)(2,a.Box,{mr:-1,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.active,content:"#"+e.id+" "+e.mode,onClick:function(){return l("toggle",{id:e.id})}},e.id)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ScannerGate=void 0;var o=n(0),r=n(2),a=n(1),c=n(64),i=n(3),l=["Positive","Harmless","Minor","Medium","Harmful","Dangerous","BIOHAZARD"],d=[{name:"Human",value:"human"},{name:"Lizardperson",value:"lizard"},{name:"Flyperson",value:"fly"},{name:"Felinid",value:"felinid"},{name:"Plasmaman",value:"plasma"},{name:"Mothperson",value:"moth"},{name:"Jellyperson",value:"jelly"},{name:"Podperson",value:"pod"},{name:"Golem",value:"golem"},{name:"Zombie",value:"zombie"}],u=[{name:"Starving",value:150},{name:"Obese",value:600}];t.ScannerGate=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data;return(0,o.createComponentVNode)(2,i.Window,{width:400,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.InterfaceLockNoticeBox,{onLockedStatusChange:function(){return a("toggle_lock")}}),!l.locked&&(0,o.createComponentVNode)(2,m)]})})};var s={Off:{title:"Scanner Mode: Off",component:function(){return p}},Wanted:{title:"Scanner Mode: Wanted",component:function(){return C}},Guns:{title:"Scanner Mode: Guns",component:function(){return h}},Mindshield:{title:"Scanner Mode: Mindshield",component:function(){return N}},Disease:{title:"Scanner Mode: Disease",component:function(){return V}},Species:{title:"Scanner Mode: Species",component:function(){return b}},Nutrition:{title:"Scanner Mode: Nutrition",component:function(){return f}},Nanites:{title:"Scanner Mode: Nanites",component:function(){return g}}},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.scan_mode,l=s[i]||s.off,d=l.component();return(0,o.createComponentVNode)(2,a.Section,{title:l.title,buttons:"Off"!==i&&(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"back",onClick:function(){return c("set_mode",{new_mode:"Off"})}}),children:(0,o.createComponentVNode)(2,d)})},p=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:"Select a scanning mode below."}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Wanted",onClick:function(){return n("set_mode",{new_mode:"Wanted"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Guns",onClick:function(){return n("set_mode",{new_mode:"Guns"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Mindshield",onClick:function(){return n("set_mode",{new_mode:"Mindshield"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Disease",onClick:function(){return n("set_mode",{new_mode:"Disease"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Species",onClick:function(){return n("set_mode",{new_mode:"Species"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nutrition",onClick:function(){return n("set_mode",{new_mode:"Nutrition"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nanites",onClick:function(){return n("set_mode",{new_mode:"Nanites"})}})]})],4)},C=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any warrants for their arrest."]}),(0,o.createComponentVNode)(2,v)],4)},h=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any guns."]}),(0,o.createComponentVNode)(2,v)],4)},N=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","a mindshield."]}),(0,o.createComponentVNode)(2,v)],4)},V=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.reverse,u=i.disease_threshold;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",d?"does not have":"has"," ","a disease equal or worse than ",u,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e===u,content:e,onClick:function(){return c("set_disease_threshold",{new_threshold:e})}},e)}))}),(0,o.createComponentVNode)(2,v)],4)},b=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,u=i.target_species,s=d.find((function(e){return e.value===u}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned is ",l?"not":""," ","of the ",s.name," species.","zombie"===u&&" All zombie types will be detected, including dormant zombies."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===u,content:e.name,onClick:function(){return c("set_target_species",{new_species:e.value})}},e.value)}))}),(0,o.createComponentVNode)(2,v)],4)},f=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,d=i.target_nutrition,s=u.find((function(e){return e.value===d}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","the ",s.name," nutrition level."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===d,content:e.name,onClick:function(){return c("set_target_nutrition",{new_nutrition:e.name})}},e.name)}))}),(0,o.createComponentVNode)(2,v)],4)},g=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,d=i.nanite_cloud;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","nanite cloud ",d,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,width:"65px",minValue:1,maxValue:100,stepPixelSize:2,onChange:function(e,t){return c("set_nanite_cloud",{new_cloud:t})}})})})}),(0,o.createComponentVNode)(2,v)],4)},v=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.reverse;return(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scanning Mode",children:(0,o.createComponentVNode)(2,a.Button,{content:i?"Inverted":"Default",icon:i?"random":"long-arrow-alt-right",onClick:function(){return c("toggle_reverse")},color:i?"bad":"good"})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SeedExtractor=void 0;var o=n(0),r=n(14),a=n(30),c=n(19),i=n(2),l=n(1),d=n(3);t.SeedExtractor=function(e,t){var n,u,s=(0,i.useBackend)(t),m=s.act,p=s.data,C=(n=p.seeds,u=Object.keys(n).map((function(e){var t=function(e){var t,n=/([^;=]+)=([^;]+)/g,o={};do{(t=n.exec(e))&&(o[t[1]]=t[2]+"")}while(t);return o}(e);return t.amount=n[e],t.key=e,t.name=(0,c.toTitleCase)(t.name.replace("pack of ","")),t})),(0,a.flow)([(0,r.sortBy)((function(e){return e.name}))])(u));return(0,o.createComponentVNode)(2,d.Window,{width:1e3,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Stored seeds:",children:(0,o.createComponentVNode)(2,l.Table,{cellpadding:"3",textAlign:"center",children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Name"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Lifespan"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Endurance"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Maturation"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Production"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Yield"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Potency"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Instability"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Stock"})]}),C.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{bold:!0,children:e.name}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.lifespan}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.endurance}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.maturation}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.production}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.yield}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.potency}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.instability}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:[(0,o.createComponentVNode)(2,l.Button,{content:"Vend",onClick:function(){return m("select",{item:e.key})}}),"(",e.amount," left)"]})]},e.key)}))]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ShuttleConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.authorization_required;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:230,children:[!!l&&(0,o.createComponentVNode)(2,a.Modal,{ml:1,mt:1,width:26,height:12,fontSize:"28px",fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mt:2,children:(0,o.createComponentVNode)(2,a.Icon,{name:"minus-circle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mt:2,ml:2,color:"bad",children:"SHUTTLE LOCKED"})]}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",mt:4,children:(0,o.createComponentVNode)(2,a.Button,{lineHeight:"40px",icon:"arrow-circle-right",content:"Request Authorization",color:"bad",onClick:function(){return i("request")}})})]}),(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,d)})]})};var i=function(e,t){var n;return null==e||null==(n=e.find((function(e){return e.id===t})))?void 0:n.name},l=function(e,t){var n;return null==e||null==(n=e.find((function(e){return e.name===t})))?void 0:n.id},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data,u=d.status,s=d.locked,m=d.authorization_required,p=d.destination,C=d.docked_location,h=d.timer_str,N=d.locations,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"26px",textAlign:"center",fontFamily:"monospace",children:h||"00:00"}),(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",fontSize:"14px",mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:"STATUS:"}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"In Transit"===u?"good":"Idle"===u||"Igniting"===u?"average":"bad",ml:1,children:u||"Not Available"})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Shuttle Controls",level:2,children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:C||"Not Available"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:0===V.length&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Available"})||1===V.length&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:i(V,p)})||(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,width:"240px",options:V.map((function(e){return e.name})),disabled:s||m,selected:i(V,p)||"Select a Destination",onSelected:function(e){return c("set_destination",{destination:l(V,e)})}})})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Depart",disabled:!i(V,p)||s||m,mt:1.5,icon:"arrow-up",textAlign:"center",onClick:function(){return c("move",{shuttle_id:p})}})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleManipulatorModification=t.ShuttleManipulatorTemplates=t.ShuttleManipulatorStatus=t.ShuttleManipulator=void 0;var o=n(0),r=n(14),a=n(2),c=n(1),i=n(3);t.ShuttleManipulator=function(e,t){var n=(0,a.useLocalState)(t,"tab",1),r=n[0],s=n[1];return(0,o.createComponentVNode)(2,i.Window,{title:"Shuttle Manipulator",width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:1===r,onClick:function(){return s(1)},children:"Status"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:2===r,onClick:function(){return s(2)},children:"Templates"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:3===r,onClick:function(){return s(3)},children:"Modification"})]}),1===r&&(0,o.createComponentVNode)(2,l),2===r&&(0,o.createComponentVNode)(2,d),3===r&&(0,o.createComponentVNode)(2,u)]})})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.shuttles||[];return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Table,{children:i.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{content:"JMP",onClick:function(){return r("jump_to",{type:"mobile",id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{content:"Fly",disabled:!e.can_fly,onClick:function(){return r("fly",{id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.id}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.status}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:[e.mode,!!e.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),e.timeleft,(0,o.createTextVNode)(")"),(0,o.createComponentVNode)(2,c.Button,{content:"Fast Travel",disabled:!e.can_fast_travel,onClick:function(){return r("fast_travel",{id:e.id})}},e.id)],0)]})]},e.id)}))})})};t.ShuttleManipulatorStatus=l;var d=function(e,t){var n,i=(0,a.useBackend)(t),l=i.act,d=i.data,u=d.templates||{},s=d.selected||{},m=(0,a.useLocalState)(t,"templateId",Object.keys(u)[0]),p=m[0],C=m[1],h=null==(n=u[p])?void 0:n.templates;return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:p===t,onClick:function(){return C(t)},children:e.port_id},t)}))(u)})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:h.map((function(e){var t=e.shuttle_id===s.shuttle_id;return(0,o.createComponentVNode)(2,c.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{content:t?"Selected":"Select",selected:t,onClick:function(){return l("select_template",{shuttle_id:e.shuttle_id})}}),children:(!!e.description||!!e.admin_notes)&&(0,o.createComponentVNode)(2,c.LabeledList,{children:[!!e.description&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:e.description}),!!e.admin_notes&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Admin Notes",children:e.admin_notes})]})},e.shuttle_id)}))})]})})};t.ShuttleManipulatorTemplates=d;var u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.selected||{},d=i.existing_shuttle||{};return(0,o.createComponentVNode)(2,c.Section,{children:l?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{level:2,title:l.name,children:(!!l.description||!!l.admin_notes)&&(0,o.createComponentVNode)(2,c.LabeledList,{children:[!!l.description&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:l.description}),!!l.admin_notes&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Admin Notes",children:l.admin_notes})]})}),d?(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Existing Shuttle: "+d.name,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,c.Button,{content:"Jump To",onClick:function(){return r("jump_to",{type:"mobile",id:d.id})}}),children:[d.status,!!d.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),d.timeleft,(0,o.createTextVNode)(")")],0)]})})}):(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Existing Shuttle: None"}),(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Status",children:[(0,o.createComponentVNode)(2,c.Button,{content:"Preview",onClick:function(){return r("preview",{shuttle_id:l.shuttle_id})}}),(0,o.createComponentVNode)(2,c.Button,{content:"Load",color:"bad",onClick:function(){return r("load",{shuttle_id:l.shuttle_id})}})]})],0):"No shuttle selected"})};t.ShuttleManipulatorModification=u},function(e,t,n){"use strict";t.__esModule=!0,t.Signaler=void 0;var o=n(0),r=n(11),a=n(2),c=n(1),i=n(3);t.Signaler=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.code,s=d.frequency,m=d.minFrequency,p=d.maxFrequency;return(0,o.createComponentVNode)(2,i.Window,{width:280,height:132,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:1.4,color:"label",children:"Frequency:"}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:m/10,maxValue:p/10,value:s/10,format:function(e){return(0,r.toFixed)(e,1)},width:"80px",onDrag:function(e,t){return l("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"freq"})}})})]}),(0,o.createComponentVNode)(2,c.Grid,{mt:.6,children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:1.4,color:"label",children:"Code:"}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:u,width:"80px",onDrag:function(e,t){return l("code",{code:t})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"code"})}})})]}),(0,o.createComponentVNode)(2,c.Grid,{mt:.8,children:(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{mb:-.1,fluid:!0,icon:"arrow-up",content:"Send Signal",textAlign:"center",onClick:function(){return l("signal")}})})})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SkillPanel=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i={color:"lightgreen",fontWeight:"bold"},l={color:"#FFDB58",fontWeight:"bold"};t.SkillPanel=function(e,t){var n=(0,r.useBackend)(t),u=n.act,s=n.data,m=s.skills||[];return(0,o.createComponentVNode)(2,c.Window,{title:"Manage Skills",width:600,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:m.playername,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[(0,o.createVNode)(1,"span",null,e.desc,0,{style:l}),(0,o.createVNode)(1,"br"),!!e.level_based&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d,{skill_lvl_num:e.lvl_base_num,skill_lvl:e.lvl_base}),(0,o.createVNode)(1,"br")],4),"Total Experience: [",e.value_base," XP]",(0,o.createVNode)(1,"br"),"XP To Next Level:",e.level_based?(0,o.createVNode)(1,"span",null,e.xp_next_lvl_base,0):(0,o.createVNode)(1,"span",null,"[MAXXED]",16,{style:i}),(0,o.createVNode)(1,"br"),e.base_readout,(0,o.createComponentVNode)(2,a.ProgressBar,{value:e.percent_base,color:"good"}),(0,o.createVNode)(1,"br"),!!s.admin&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Adjust Exp",onClick:function(){return u("adj_exp",{skill:e.path})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Set Exp",onClick:function(){return u("set_exp",{skill:e.path})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Set Level",onClick:function(){return u("set_lvl",{skill:e.path})}}),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"br")],4)]},e.name)}))})})})})};var d=function(e){var t=e.skill_lvl_num,n=e.skill_lvl;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:["Level: [",(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,textColor:"hsl("+50*t+", 50%, 50%)",children:n}),"]"]})}},function(e,t,n){"use strict";t.__esModule=!0,t.SkillStation=t.TimeFormat=t.ImplantedSkillchips=t.InsertedSkillchip=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(11),l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.skillchip_ready,d=i.slot_use,u=i.slots_used,s=i.slots_max,m=i.implantable_reason,p=i.implantable,C=i.complexity,h=i.skill_name,N=i.skill_desc,V=i.skill_icon,b=i.working;return l?(0,o.createComponentVNode)(2,a.Section,{title:"Inserted Skillchip",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"syringe",disabled:!p||!!b,color:p?"good":"default",onClick:function(){return c("implant")},content:"Implant",tooltip:m}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!!b,onClick:function(){return c("eject")},content:"Eject"})],4),children:(0,o.createComponentVNode)(2,a.Flex,{spacing:2,height:"100%",width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{height:"100%",align:"center",children:(0,o.createComponentVNode)(2,a.Icon,{size:3,name:V})}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"100%",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Skillchip",children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:h})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:(0,o.createComponentVNode)(2,a.Box,{italic:!0,children:N})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Complexity",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"brain",width:"15px",textAlign:"center"})," ",C]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Slot Size",children:(0,o.createComponentVNode)(2,a.Box,{color:u+d>s&&"red",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"save",width:"15px",textAlign:"center"})," ",d]})}),!!m&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Error",color:p?"good":"bad",children:m})]})})]})}):!b&&(0,o.createComponentVNode)(2,a.NoticeBox,{info:!0,children:"Please insert a skillchip."})};t.InsertedSkillchip=l;var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.slots_used,d=i.slots_max,u=i.complexity_used,s=i.complexity_max,m=i.working,p=i.current||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Implanted Skillchips",children:[!p.length&&"No skillchips detected.",!!p.length&&(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Chip"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"brain",tooltip:"Complexity",tooltipPosition:"top",content:u+"/"+s})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"save",tooltip:"Slot Size",tooltipPosition:"top",content:l+"/"+d})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"check",tooltip:"Is Active",tooltipPosition:"top"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"hourglass-half",tooltip:"Cooldown",tooltipPosition:"top"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"tasks",tooltip:"Actions",tooltipPosition:"top"})})]}),p.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Icon,{textAlign:"center",width:"18px",mr:1,name:e.icon}),e.name]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:(!e.active?e.complexity+u>s&&"bad":"good")||"grey",textAlign:"center",children:e.complexity}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"good",textAlign:"center",children:e.slot_use}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Icon,{name:e.active?"check":"times",color:e.active?"good":"bad"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.cooldown>0&&Math.ceil(e.cooldown/10)+"s"||"0s"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("remove",{ref:e.ref})},icon:e.removable?"eject":"trash",color:e.removable?"good":"bad",tooltip:e.removable?"Extract":"Destroy",tooltipPosition:"left",disabled:e.cooldown||m}),(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_activate",{ref:e.ref})},icon:e.active?"check-square-o":"square-o",color:e.active?"good":"default",tooltip:!!e.active_error&&!e.active&&e.active_error||e.active&&"Deactivate"||"Activate",tooltipPosition:"left",disabled:e.cooldown||m||!e.active&&e.complexity+u>s})]})]},e.ref)}))]})]})};t.ImplantedSkillchips=d;var u=function(e,t){var n=e.value,o=(0,i.toFixed)(Math.floor(n/10%60)).padStart(2,"0"),r=(0,i.toFixed)(Math.floor(n/600%60)).padStart(2,"0");return(0,i.toFixed)(Math.floor(n/36e3%24)).padStart(2,"0")+":"+r+":"+o};t.TimeFormat=u;t.SkillStation=function(e,t){var n=(0,r.useBackend)(t).data,i=n.working,s=n.timeleft,m=n.error;return(0,o.createComponentVNode)(2,c.Window,{title:"Skillsoft Station",width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!!m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:m}),!!i&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mb:.5,children:"Operation in progress. Please do not leave the chamber."}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["Time Left: ",(0,o.createComponentVNode)(2,u,{value:s})]})]})}),(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Sleeper=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Oxygen",type:"oxyLoss"}];t.Sleeper=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.open,s=d.occupant,m=void 0===s?{}:s,p=d.occupied,C=(d.chems||[]).sort((function(e,t){var n=e.name.toLowerCase(),o=t.name.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,c.Window,{width:310,height:465,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:m.name?m.name:"No Occupant",minHeight:"210px",buttons:!!m.stat&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:m.statstate,children:m.stat}),children:!!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,ranges:{good:[50,Infinity],average:[0,50],bad:[-Infinity,0]}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[i.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type],minValue:0,maxValue:m.maxHealth,color:"bad"})},e.type)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cells",color:m.cloneLoss?"bad":"good",children:m.cloneLoss?"Damaged":"Healthy"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain",color:m.brainLoss?"bad":"good",children:m.brainLoss?"Abnormal":"Healthy"})]})],4)}),(0,o.createComponentVNode)(2,a.Section,{title:"Medicines",minHeight:"205px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"door-open":"door-closed",content:u?"Open":"Closed",onClick:function(){return l("door")}}),children:C.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"flask",content:e.name,disabled:!p||!e.allowed,width:"140px",onClick:function(){return l("inject",{chem:e.id})}},e.name)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SlimeBodySwapper=t.BodyEntry=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i={Dead:"bad",Unconscious:"average",Conscious:"good"},l={owner:"You Are Here",stranger:"Occupied",available:"Swap"},d=function(e,t){var n=e.body,r=e.swapFunc;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:n.htmlcolor,children:n.name}),level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{content:l[n.occupied],selected:"owner"===n.occupied,color:"stranger"===n.occupied&&"bad",onClick:function(){return r()}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",bold:!0,color:i[n.status],children:n.status}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Jelly",children:n.exoticblood}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:n.area})]})})};t.BodyEntry=d;t.SlimeBodySwapper=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.bodies,u=void 0===l?[]:l;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:u.map((function(e){return(0,o.createComponentVNode)(2,d,{body:e,swapFunc:function(){return i("swap",{ref:e.ref})}},e.name)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SmartVend=void 0;var o=n(0),r=n(14),a=n(2),c=n(1),i=n(3);t.SmartVend=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,i.Window,{width:440,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Section,{title:"Storage",buttons:!!d.isdryer&&(0,o.createComponentVNode)(2,c.Button,{icon:d.drying?"stop":"tint",onClick:function(){return l("Dry")},children:d.drying?"Stop drying":"Dry"}),children:0===d.contents.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:["Unfortunately, this ",d.name," is empty."]})||(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Item"}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"center",children:d.verb?d.verb:"Dispense"})]}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:e.amount}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.Button,{content:"One",disabled:e.amount<1,onClick:function(){return l("Release",{name:e.name,amount:1})}}),(0,o.createComponentVNode)(2,c.Button,{content:"Many",disabled:e.amount<=1,onClick:function(){return l("Release",{name:e.name})}})]})]},t)}))(d.contents)]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Smes=void 0;var o=n(0),r=n(2),a=n(1),c=n(39),i=n(3);t.Smes=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.capacityPercent,s=(d.capacity,d.charge),m=d.inputAttempt,p=d.inputting,C=d.inputLevel,h=d.inputLevelMax,N=d.inputAvailable,V=d.outputAttempt,b=d.outputting,f=d.outputLevel,g=d.outputLevelMax,v=d.outputUsed,k=(u>=100?"good":p&&"average")||"bad",x=(b?"good":s>0&&"average")||"bad";return(0,o.createComponentVNode)(2,i.Window,{width:340,height:350,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:.01*u,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Input",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"sync-alt":"times",selected:m,onClick:function(){return l("tryinput")},children:m?"Auto":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:k,children:(u>=100?"Fully Charged":p&&"Charging")||"Not Charging"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Input",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===C,onClick:function(){return l("input",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===C,onClick:function(){return l("input",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:C/1e3,fillValue:N/1e3,minValue:0,maxValue:h/1e3,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(1e3*e,1)},onDrag:function(e,t){return l("input",{target:1e3*t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:C===h,onClick:function(){return l("input",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:C===h,onClick:function(){return l("input",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available",children:(0,c.formatPower)(N)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:V?"power-off":"times",selected:V,onClick:function(){return l("tryoutput")},children:V?"On":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:x,children:b?"Sending":s>0?"Not Sending":"No Charge"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Output",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===f,onClick:function(){return l("output",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===f,onClick:function(){return l("output",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:f/1e3,minValue:0,maxValue:g/1e3,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(1e3*e,1)},onDrag:function(e,t){return l("output",{target:1e3*t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:f===g,onClick:function(){return l("output",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:f===g,onClick:function(){return l("output",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outputting",children:(0,c.formatPower)(v)})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SmokeMachine=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.SmokeMachine=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.TankContents,u=(l.isTankLoaded,l.TankCurrentVolume),s=l.TankMaxVolume,m=l.active,p=l.setting,C=(l.screen,l.maxSetting),h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:350,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Dispersal Tank",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return i("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/s,ranges:{bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{initial:0,value:u||0})," / "+s]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:[1,2,3,4,5].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:p===e,icon:"plus",content:3*e,disabled:h0?"good":"bad",children:h})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[.66,Infinity],average:[.33,.66],bad:[-Infinity,.33]},minValue:0,maxValue:1,value:u,children:d+" W"})})})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracking",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:0===C,onClick:function(){return i("tracking",{mode:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:"Timed",selected:1===C,onClick:function(){return i("tracking",{mode:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:2===C,disabled:!N,onClick:function(){return i("tracking",{mode:2})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Azimuth",children:[(0===C||1===C)&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"52px",unit:"\xb0",step:1,stepPixelSize:2,minValue:-360,maxValue:720,value:s,onDrag:function(e,t){return i("azimuth",{value:t})}}),1===C&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"80px",unit:"\xb0/m",step:.01,stepPixelSize:1,minValue:-p-.01,maxValue:p+.01,value:m,format:function(e){return(Math.sign(e)>0?"+":"-")+Math.abs(e)},onDrag:function(e,t){return i("azimuth_rate",{value:t})}}),2===C&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mt:"3px",children:[s+" \xb0"," (auto)"]})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SpaceHeater=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.SpaceHeater=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!l.hasPowercell||!l.open,onClick:function(){return i("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,disabled:!l.hasPowercell,onClick:function(){return i("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!l.hasPowercell&&"bad",children:l.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.powerLevel/100,ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]},children:l.powerLevel+"%"})||"None"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Thermostat",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",color:Math.abs(l.targetTemp-l.currentTemp)>50?"bad":Math.abs(l.targetTemp-l.currentTemp)>20?"average":"good",children:[l.currentTemp,"\xb0C"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:l.open&&(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.targetTemp),width:"65px",unit:"\xb0C",minValue:l.minTemp,maxValue:l.maxTemp,onChange:function(e,t){return i("target",{target:t})}})||l.targetTemp+"\xb0C"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:l.open?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer-half",content:"Auto",selected:"auto"===l.mode,onClick:function(){return i("mode",{mode:"auto"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fire-alt",content:"Heat",selected:"heat"===l.mode,onClick:function(){return i("mode",{mode:"heat"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fan",content:"Cool",selected:"cool"===l.mode,onClick:function(){return i("mode",{mode:"cool"})}})],4):"Auto"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider)]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SpawnersMenu=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.SpawnersMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.spawners||[];return(0,o.createComponentVNode)(2,c.Window,{title:"Spawners Menu",width:700,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" ("+e.amount_left+" left)",level:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Jump",onClick:function(){return i("jump",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Spawn",onClick:function(){return i("spawn",{name:e.name})}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,fontSize:"20px",children:e.short_desc}),(0,o.createComponentVNode)(2,a.Box,{children:e.flavor_text}),!!e.important_info&&(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,color:"bad",fontSize:"26px",children:e.important_info})]},e.name)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SuitStorageUnit=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.SuitStorageUnit=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.locked,u=l.open,s=l.safeties,m=l.uv_active,p=l.occupied,C=l.suit,h=l.helmet,N=l.mask,V=l.storage;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!(!p||!s)&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Biological entity detected in suit chamber. Please remove before continuing with operation."}),m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Contents are currently being decontaminated. Please wait."})||(0,o.createComponentVNode)(2,a.Section,{title:"Storage",minHeight:"260px",buttons:(0,o.createFragment)([!u&&(0,o.createComponentVNode)(2,a.Button,{icon:d?"unlock":"lock",content:d?"Unlock":"Lock",onClick:function(){return i("lock")}}),!d&&(0,o.createComponentVNode)(2,a.Button,{icon:u?"sign-out-alt":"sign-in-alt",content:u?"Close":"Open",onClick:function(){return i("door")}})],0),children:d&&(0,o.createComponentVNode)(2,a.Box,{mt:6,bold:!0,textAlign:"center",fontSize:"40px",children:[(0,o.createComponentVNode)(2,a.Box,{children:"Unit Locked"}),(0,o.createComponentVNode)(2,a.Icon,{name:"lock"})]})||u&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Helmet",children:(0,o.createComponentVNode)(2,a.Button,{icon:h?"square":"square-o",content:h||"Empty",disabled:!h,onClick:function(){return i("dispense",{item:"helmet"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suit",children:(0,o.createComponentVNode)(2,a.Button,{icon:C?"square":"square-o",content:C||"Empty",disabled:!C,onClick:function(){return i("dispense",{item:"suit"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mask",children:(0,o.createComponentVNode)(2,a.Button,{icon:N?"square":"square-o",content:N||"Empty",disabled:!N,onClick:function(){return i("dispense",{item:"mask"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Storage",children:(0,o.createComponentVNode)(2,a.Button,{icon:V?"square":"square-o",content:V||"Empty",disabled:!V,onClick:function(){return i("dispense",{item:"storage"})}})})]})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"recycle",content:"Decontaminate",disabled:p&&s,textAlign:"center",onClick:function(){return i("uv")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SyndPane=t.StatusPane=t.SyndContractorContent=t.SyndContractor=t.FakeTerminal=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);var i=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).timer=null,n.state={currentIndex:0,currentDisplay:[]},n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=r.prototype;return c.tick=function(){var e=this.props,t=this.state;t.currentIndex<=e.allMessages.length?(this.setState((function(e){return{currentIndex:e.currentIndex+1}})),t.currentDisplay.push(e.allMessages[t.currentIndex])):(clearTimeout(this.timer),setTimeout(e.onFinished,e.finishedTimeout))},c.componentDidMount=function(){var e=this,t=this.props.linesPerSecond,n=void 0===t?2.5:t;this.timer=setInterval((function(){return e.tick()}),1e3/n)},c.componentWillUnmount=function(){clearTimeout(this.timer)},c.render=function(){return(0,o.createComponentVNode)(2,a.Box,{m:1,children:this.state.currentDisplay.map((function(e){return(0,o.createFragment)([e,(0,o.createVNode)(1,"br")],0,e)}))})},r}(o.Component);t.FakeTerminal=i;t.SyndContractor=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:500,height:600,theme:"syndicate",resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=n.data,l=n.act,d=["Recording biometric data...","Analyzing embedded syndicate info...","STATUS CONFIRMED","Contacting syndicate database...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Response received, ack 4851234...","CONFIRM ACC "+Math.round(2e4*Math.random()),"Setting up private accounts...","CONTRACTOR ACCOUNT CREATED","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","CONTRACTS FOUND","WELCOME, AGENT"],s=!!c.error&&(0,o.createComponentVNode)(2,a.Modal,{backgroundColor:"red",children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,children:(0,o.createComponentVNode)(2,a.Icon,{size:4,name:"exclamation-triangle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,grow:1,textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{width:"260px",textAlign:"left",minHeight:"80px",children:c.error}),(0,o.createComponentVNode)(2,a.Button,{content:"Dismiss",onClick:function(){return l("PRG_clear_error")}})]})]})});return c.logged_in?c.logged_in&&c.first_load?(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"525px",children:(0,o.createComponentVNode)(2,i,{allMessages:d,finishedTimeout:3e3,onFinished:function(){return l("PRG_set_first_load_finished")}})}):c.info_screen?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"500px",children:(0,o.createComponentVNode)(2,i,{allMessages:["SyndTract v2.0","","We've identified potentional high-value targets that are","currently assigned to your mission area. They are believed","to hold valuable information which could be of immediate","importance to our organisation.","","Listed below are all of the contracts available to you. You","are to bring the specified target to the designated","drop-off, and contact us via this uplink. We will send","a specialised extraction unit to put the body into.","","We want targets alive - but we will sometimes pay slight","amounts if they're not, you just won't recieve the shown","bonus. You can redeem your payment through this uplink in","the form of raw telecrystals, which can be put into your","regular Syndicate uplink to purchase whatever you may need.","We provide you with these crystals the moment you send the","target up to us, which can be collected at anytime through","this system.","","Targets extracted will be ransomed back to the station once","their use to us is fulfilled, with us providing you a small","percentage cut. You may want to be mindful of them","identifying you when they come back. We provide you with","a standard contractor loadout, which will help cover your","identity."],linesPerSecond:10})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"CONTINUE",color:"transparent",textAlign:"center",onClick:function(){return l("PRG_toggle_info")}})],4):(0,o.createFragment)([s,(0,o.createComponentVNode)(2,u)],0):(0,o.createComponentVNode)(2,a.Section,{minHeight:"525px",children:[(0,o.createComponentVNode)(2,a.Box,{width:"100%",textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{content:"REGISTER USER",color:"transparent",onClick:function(){return l("PRG_login")}})}),!!c.error&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:c.error})]})};t.SyndContractorContent=l;var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createFragment)([(0,o.createTextVNode)("Contractor Status"),(0,o.createComponentVNode)(2,a.Button,{content:"View Information Again",color:"transparent",mb:0,ml:1,onClick:function(){return c("PRG_toggle_info")}})],4),buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,mr:1,children:[i.contract_rep," Rep"]}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:.85,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Available",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Claim",disabled:i.redeemable_tc<=0,onClick:function(){return c("PRG_redeem_TC")}}),children:i.redeemable_tc}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Earned",children:i.earned_tc})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Contracts Completed",children:i.contracts_completed}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Status",children:"ACTIVE"})]})})]})})};t.StatusPane=d;var u=function(e,t){var n=(0,r.useLocalState)(t,"tab",1),c=n[0],i=n[1];return(0,o.createFragment)([(0,o.createComponentVNode)(2,d,{state:e.state}),(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===c,onClick:function(){return i(1)},children:"Contracts"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===c,onClick:function(){return i(2)},children:"Hub"})]}),1===c&&(0,o.createComponentVNode)(2,s),2===c&&(0,o.createComponentVNode)(2,m)],0)};t.SyndPane=u;var s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.contracts||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Available Contracts",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Call Extraction",disabled:!i.ongoing_contract||i.extraction_enroute,onClick:function(){return c("PRG_call_extraction")}}),children:l.map((function(e){if(!i.ongoing_contract||2===e.status){var t=e.status>1;if(!(e.status>=5))return(0,o.createComponentVNode)(2,a.Section,{title:e.target?e.target+" ("+e.target_rank+")":"Invalid Target",level:t?1:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:[e.payout," (+",e.payout_bonus,") TC"]}),(0,o.createComponentVNode)(2,a.Button,{content:t?"Abort":"Accept",disabled:e.extraction_enroute,color:t&&"bad",onClick:function(){return c("PRG_contract"+(t?"_abort":"-accept"),{contract_id:e.id})}})],4),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:e.message}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,children:"Dropoff Location:"}),(0,o.createComponentVNode)(2,a.Box,{children:e.dropoff})]})]})},e.target)}}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Dropoff Locator",textAlign:"center",opacity:i.ongoing_contract?100:0,children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:i.dropoff_direction})})],4)},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.contractor_hub_items||[];return(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){var t=e.cost?e.cost+" Rep":"FREE",n=-1!==e.limited;return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" - "+t,level:2,buttons:(0,o.createFragment)([n&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:[e.limited," remaining"]}),(0,o.createComponentVNode)(2,a.Button,{content:"Purchase",disabled:i.contract_repl.user.cash),content:h?"FREE":d.price+" cr",onClick:function(){return i("vend",{ref:d.ref})}})})]})};t.Vending=function(e,t){var n,r=(0,a.useBackend)(t),d=(r.act,r.data),u=d.user,s=d.onstation,m=d.product_records,p=void 0===m?[]:m,C=d.coin_records,h=void 0===C?[]:C,N=d.hidden_records,V=void 0===N?[]:N,b=d.stock,f=!1;return d.vending_machine_input?(n=d.vending_machine_input||[],f=!0):(n=[].concat(p,h),d.extended_inventory&&(n=[].concat(n,V))),n=n.filter((function(e){return!!e})),(0,o.createComponentVNode)(2,i.Window,{title:"Vending Machine",width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[!!s&&(0,o.createComponentVNode)(2,c.Section,{title:"User",children:u&&(0,o.createComponentVNode)(2,c.Box,{children:["Welcome, ",(0,o.createVNode)(1,"b",null,u.name,0),","," ",(0,o.createVNode)(1,"b",null,u.job||"Unemployed",0),"!",(0,o.createVNode)(1,"br"),"Your balance is ",(0,o.createVNode)(1,"b",null,[u.cash,(0,o.createTextVNode)(" credits")],0),"."]})||(0,o.createComponentVNode)(2,c.Box,{color:"light-grey",children:["No registered ID card!",(0,o.createVNode)(1,"br"),"Please contact your local HoP!"]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Products",children:(0,o.createComponentVNode)(2,c.Table,{children:n.map((function(e){return(0,o.createComponentVNode)(2,l,{custom:f,product:e,productStock:b[e.name]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.VrSleeper=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.VrSleeper=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:340,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!!l.emagged&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Safety restraints disabled."})}),(0,o.createComponentVNode)(2,a.Section,{title:"Virtual Avatar",children:l.vr_avatar?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.vr_avatar.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:l.vr_avatar.status}),!!l.vr_avatar&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.vr_avatar.health/l.vr_avatar.maxhealth,ranges:{good:[.9,Infinity],average:[.7,.8],bad:[-Infinity,.5]}})})]}):"No Virtual Avatar detected"}),(0,o.createComponentVNode)(2,a.Section,{title:"VR Commands",children:[(0,o.createComponentVNode)(2,a.Button,{icon:l.toggle_open?"unlock":"lock",disabled:l.stored0&&g.flatMap((function(e){return e.items||[]})).filter(L).filter((function(e,t){return t<25}))||(null==(l=g.find((function(e){return e.name===_})))?void 0:l.items)||[];return(0,o.createComponentVNode)(2,c.Section,{title:(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:s>0?"good":"bad",children:[(0,i.formatMoney)(s)," ",p]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,c.Input,{autoFocus:!0,value:k,onInput:function(e,t){return x(t)},mx:1}),(0,o.createComponentVNode)(2,c.Button,{icon:V?"list":"info",content:V?"Compact":"Detailed",onClick:function(){return h("compact_toggle")}}),!!b&&(0,o.createComponentVNode)(2,c.Button,{icon:"lock",content:"Lock",onClick:function(){return h("lock")}})],0),children:(0,o.createComponentVNode)(2,c.Flex,{children:[0===k.length&&(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:g.map((function(e){var t;return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:e.name===_,onClick:function(){return w(e.name)},children:[e.name," (",(null==(t=e.items)?void 0:t.length)||0,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:[0===y.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:0===k.length?"No items in this category.":"No results found."}),(0,o.createComponentVNode)(2,u,{compactMode:k.length>0||V,currencyAmount:s,currencySymbol:p,items:y})]})]})})};t.GenericUplink=d;var u=function(e,t){var n=e.compactMode,l=e.currencyAmount,d=e.currencySymbol,u=(0,a.useBackend)(t).act,s=(0,a.useLocalState)(t,"hoveredItem",{}),m=s[0],p=s[1],C=m&&m.cost||0,h=e.items.map((function(e){var t=m&&m.name!==e.name,n=l-C50?"battery-half":"battery-quarter")||1===t&&"bolt"||2===t&&"battery-full",color:0===t&&(n>50?"yellow":"red")||1===t&&"yellow"||2===t&&"green"}),(0,o.createComponentVNode)(2,d.Box,{inline:!0,width:"36px",textAlign:"right",children:(0,c.toFixed)(n)+"%"})],4)};t.AreaCharge=C,C.defaultHooks=i.pureComponentHooks;var h=function(e){var t=e.status,n=Boolean(2&t),r=Boolean(1&t),a=(n?"On":"Off")+" ["+(r?"auto":"manual")+"]";return(0,o.createComponentVNode)(2,d.ColorBox,{color:n?"good":"bad",content:r?undefined:"M",title:a})};h.defaultHooks=i.pureComponentHooks},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";t.__esModule=!0,t.AiRestorerContent=t.AiRestorer=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.AiRestorer=function(){return(0,o.createComponentVNode)(2,c.Window,{width:370,height:360,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.AI_present,d=i.error,u=i.name,s=i.laws,m=i.isDead,p=i.restoring,C=i.health,h=i.ejectable;return(0,o.createFragment)([d&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:d}),!!h&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:l?u:"----------",disabled:!l,onClick:function(){return c("PRG_eject")}}),!!l&&(0,o.createComponentVNode)(2,a.Section,{title:h?"System Status":u,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:m?"bad":"good",children:m?"Nonfunctional":"Functional"}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:C,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})})}),!!p&&(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"20px",color:"good",mt:1,children:"RECONSTRUCTION IN PROGRESS"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"plus",content:"Begin Reconstruction",disabled:p,mt:1,onClick:function(){return c("PRG_beginReconstruction")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{className:"candystripe",children:e},e)}))})]})],0)};t.AiRestorerContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.AccessList=void 0;var o=n(0),r=n(14),a=n(2),c=n(1);function i(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n0&&"yellow",selected:"requests"===m,onClick:function(){return C("requests")},children:["Requests (",V.length,")"]}),!h&&(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"shopping-cart",textColor:"cart"!==m&&N.length>0&&"yellow",selected:"cart"===m,onClick:function(){return C("cart")},children:["Checkout (",N.length,")"]})]})}),"catalog"===m&&(0,o.createComponentVNode)(2,u),"requests"===m&&(0,o.createComponentVNode)(2,s),"cart"===m&&(0,o.createComponentVNode)(2,p)]})})};var d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.away,u=l.docked,s=l.loan,m=l.loan_dispatched,p=l.location,C=l.message,h=l.points,N=l.requestonly;return(0,o.createComponentVNode)(2,c.Section,{title:"Cargo",buttons:(0,o.createComponentVNode)(2,c.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:h,format:function(e){return(0,i.formatMoney)(e)}})," credits"]}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Shuttle",children:u&&!N&&(0,o.createComponentVNode)(2,c.Button,{content:p,onClick:function(){return r("send")}})||p}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"CentCom Message",children:C}),!!s&&!N&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Loan",children:!m&&(0,o.createComponentVNode)(2,c.Button,{content:"Loan Shuttle",disabled:!(d&&u),onClick:function(){return r("loan")}})||(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Loaned to Centcom"})})]})})},u=function(e,t){var n,l=e.express,d=(0,a.useBackend)(t),u=d.act,s=d.data,p=s.self_paid,C=(0,r.toArray)(s.supplies),h=(0,a.useSharedState)(t,"supply",null==(n=C[0])?void 0:n.name),N=h[0],V=h[1],b=C.find((function(e){return e.name===N}));return(0,o.createComponentVNode)(2,c.Section,{title:"Catalog",buttons:!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,m),(0,o.createComponentVNode)(2,c.Button.Checkbox,{ml:2,content:"Buy Privately",checked:p,onClick:function(){return u("toggleprivate")}})],4),children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{ml:-1,mr:1,children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:C.map((function(e){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:e.name===N,onClick:function(){return V(e.name)},children:[e.name," (",e.packs.length,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,c.Table,{children:null==b?void 0:b.packs.map((function(e){var t=[];return e.small_item&&t.push("Small"),e.access&&t.push("Restricted"),(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",textAlign:"right",children:t.join(", ")}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,tooltip:e.desc,tooltipPosition:"left",onClick:function(){return u("add",{id:e.id})},children:[(0,i.formatMoney)(p&&!e.goody?Math.round(1.1*e.cost):e.cost)," cr"]})})]},e.name)}))})})]})})};t.CargoCatalog=u;var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.requests||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Active Requests",buttons:!d&&(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Clear",color:"transparent",onClick:function(){return r("denyall")}}),children:[0===u.length&&(0,o.createComponentVNode)(2,c.Box,{color:"good",children:"No Requests"}),u.length>0&&(0,o.createComponentVNode)(2,c.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",children:["#",e.id]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.object}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createVNode)(1,"b",null,e.orderer,0)}),(0,o.createComponentVNode)(2,c.Table.Cell,{width:"25%",children:(0,o.createVNode)(1,"i",null,e.reason,0)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:[(0,i.formatMoney)(e.cost)," cr"]}),!d&&(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.Button,{icon:"check",color:"good",onClick:function(){return r("approve",{id:e.id})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",color:"bad",onClick:function(){return r("deny",{id:e.id})}})]})]},e.id)}))})]})},m=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.cart||[],s=u.reduce((function(e,t){return e+t.cost}),0);return d?null:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{inline:!0,mx:1,children:[0===u.length&&"Cart is empty",1===u.length&&"1 item",u.length>=2&&u.length+" items"," ",s>0&&"("+(0,i.formatMoney)(s)+" cr)"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",color:"transparent",content:"Clear",onClick:function(){return r("clear")}})],4)},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.away,s=l.docked,p=l.location,C=l.cart||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Current Cart",buttons:(0,o.createComponentVNode)(2,m),children:[0===C.length&&(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"Nothing in cart"}),C.length>0&&(0,o.createComponentVNode)(2,c.Table,{children:C.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",children:["#",e.id]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.object}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:!!e.paid&&(0,o.createVNode)(1,"b",null,"[Paid Privately]",16)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:[(0,i.formatMoney)(e.cost)," cr"]}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,c.Button,{icon:"minus",onClick:function(){return r("remove",{id:e.id})}})})]},e.id)}))}),C.length>0&&!d&&(0,o.createComponentVNode)(2,c.Box,{mt:2,children:1===u&&1===s&&(0,o.createComponentVNode)(2,c.Button,{color:"green",style:{"line-height":"28px",padding:"0 12px"},content:"Confirm the order",onClick:function(){return r("send")}})||(0,o.createComponentVNode)(2,c.Box,{opacity:.5,children:["Shuttle in ",p,"."]})})]})}},,function(e,t,n){"use strict";t.__esModule=!0,t.BeakerContents=void 0;var o=n(0),r=n(1);t.BeakerContents=function(e){var t=e.beakerLoaded,n=e.beakerContents;return(0,o.createComponentVNode)(2,r.Box,{children:[!t&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"No beaker loaded."})||0===n.length&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"Beaker is empty."}),n.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{color:"label",children:[e.volume," units of ",e.name]},e.name)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadConsole=t.LaunchpadControl=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createComponentVNode)(2,a.Grid,{width:"1px",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:-1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",mb:1,onClick:function(){return n("move_pos",{x:-1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:-1,y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",mb:1,onClick:function(){return n("move_pos",{y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"R",mb:1,onClick:function(){return n("set_pos",{x:0,y:0})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",mb:1,onClick:function(){return n("move_pos",{y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",mb:1,onClick:function(){return n("move_pos",{x:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:1,y:-1})}})]})]})},l=function(e,t){var n=e.topLevel,c=(0,r.useBackend)(t),l=c.act,d=c.data,u=d.x,s=d.y,m=d.pad_name,p=d.range;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:m,width:"170px",onChange:function(e,t){return l("rename",{name:t})}}),level:n?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return l("remove")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Controls",level:2,children:(0,o.createComponentVNode)(2,i)})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Target",level:2,children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"26px",children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"X:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:u,minValue:-p,maxValue:p,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",stepPixelSize:10,onChange:function(e,t){return l("set_pos",{x:t})}})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"Y:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:s,minValue:-p,maxValue:p,stepPixelSize:10,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",onChange:function(e,t){return l("set_pos",{y:t})}})]})]})})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return l("launch")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Pull",textAlign:"center",onClick:function(){return l("pull")}})})]})]})};t.LaunchpadControl=l;t.LaunchpadConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data,u=d.launchpads,s=void 0===u?[]:u,m=d.selected_id;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:260,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:0===s.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"})||(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{minHeight:"190px",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"140px",minHeight:"190px",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,ellipsis:!0,content:e.name,selected:m===e.id,color:"transparent",onClick:function(){return i("select_pad",{id:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{minHeight:"100%",children:(0,o.createComponentVNode)(2,a.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,minHeight:"100%",children:m&&(0,o.createComponentVNode)(2,l)||(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCyborgRemoteMonitorContent=t.NtosCyborgRemoteMonitor=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosCyborgRemoteMonitor=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:600,height:800,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.card,d=i.cyborgs,u=void 0===d?[]:d;return u.length?(0,o.createFragment)([!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Certain features require an ID card login."}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Send Message",color:"blue",disabled:!l,onClick:function(){return c("messagebot",{ref:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":e.locked_down?"average":"good",children:e.status?"Not Responding":e.locked_down?"Locked Down":e.shell_discon?"Nominal/Disconnected":"Nominal"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,a.Box,{color:e.charge<=30?"bad":e.charge<=70?"average":"good",children:"number"==typeof e.charge?e.charge+"%":"Not Found"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upgrades",children:e.upgrades})]})},e.ref)}))],0):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cyborg units detected."})};t.NtosCyborgRemoteMonitorContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRadarContent=t.NtosRadar=void 0;var o=n(0),r=n(6),a=n(63),c=n(2),i=n(1),l=n(3);t.NtosRadar=function(e,t){return(0,o.createComponentVNode)(2,l.NtosWindow,{width:800,height:600,theme:"ntos",children:(0,o.createComponentVNode)(2,d,{sig_err:"Signal Lost"})})};var d=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.selected,m=u.object,p=void 0===m?[]:m,C=u.target,h=void 0===C?[]:C,N=u.scanning,V=e.sig_err;return(0,o.createComponentVNode)(2,i.Flex,{direction:"row",hight:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{position:"relative",width:20.5,hight:"100%",children:(0,o.createComponentVNode)(2,l.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"redo-alt",content:N?"Scanning...":"Scan",color:"blue",disabled:N,onClick:function(){return d("scan")}}),!p.length&&!N&&(0,o.createVNode)(1,"div",null,"No trackable signals found",16),!N&&p.map((function(e){return(0,o.createVNode)(1,"div",(0,r.classes)(["Button","Button--fluid","Button--color--transparent","Button--ellipsis",e.ref===s&&"Button--selected"]),e.name,0,{title:e.name,onClick:function(){d("selecttarget",{ref:e.ref})}},e.dev)}))]})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{style:{"background-image":'url("'+(0,a.resolveAsset)("ntosradarbackground.png")+'")',"background-position":"center","background-repeat":"no-repeat",top:"20px"},position:"relative",m:1.5,width:45,height:45,children:0===Object.keys(h).length?!!s&&(0,o.createComponentVNode)(2,i.NoticeBox,{position:"absolute",top:20.6,left:1.35,width:42,fontSize:"30px",textAlign:"center",children:V}):!!h.userot&&(0,o.createComponentVNode)(2,i.Box,{as:"img",src:(0,a.resolveAsset)(h.arrowstyle),position:"absolute",top:"20px",left:"243px",style:{transform:"rotate("+h.rot+"deg)"}})||(0,o.createComponentVNode)(2,i.Icon,{name:h.pointer,position:"absolute",size:2,color:h.color,top:10*h.locy+19+"px",left:10*h.locx+16+"px"})})]})};t.NtosRadarContent=d},function(e,t,n){"use strict";t.__esModule=!0,t.RequestKioskContent=t.RequestKiosk=void 0;var o=n(0),r=n(2),a=n(1),c=n(39),i=n(3);t.RequestKiosk=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:550,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.accountName,u=l.requests,s=void 0===u?[]:u,m=l.applicants,p=void 0===m?[]:m,C=l.bountyValue;l.bountyText;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"Log out",onClick:function(){return i("clear")}}),children:d||"N/A"})})}),(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:null==s?void 0:s.map((function(e){return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.owner,width:"300px",children:(0,o.createComponentVNode)(2,a.Section,{width:"300px",children:[(0,o.createComponentVNode)(2,a.Flex,{spacing:1,align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,width:"310px",children:e.owner}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"100px",children:(0,c.formatMoney)(e.value)+" cr"}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"pen-fancy",content:"Apply",onClick:function(){return i("apply",{request:e.acc_number})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"trash-alt",content:"Delete",color:"red",onClick:function(){return i("deleteRequest",{request:e.acc_number})}})]})]}),(0,o.createComponentVNode)(2,a.Section,{align:"center",children:(0,o.createVNode)(1,"i",null,[(0,o.createTextVNode)('"'),e.description,(0,o.createTextVNode)('"')],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Request Applicants",children:null==p?void 0:p.map((function(t){return t.request_id===e.acc_number&&(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,p:.5,backgroundColor:"rgba(0, 0, 69, 0.5)",width:"510px",style:{border:"2px solid rgba(13, 13, 213, 0.7)"},children:t.name}),(0,o.createComponentVNode)(2,a.Flex.Item,{align:"end",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"cash-register",onClick:function(){return i("payApplicant",{applicant:t.requestee_id,request:e.acc_number})}})})]})}))})]},e.name)},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Collapsible,{title:"New Bounty",width:"220px",color:"green",children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.TextArea,{fluid:!0,height:"250px",width:"200px",backgroundColor:"black",textColor:"white",onChange:function(e,t){return i("bountyText",{bountytext:t})}}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.NumberInput,{animate:!0,unit:"cr",minValue:1,maxValue:1e3,value:C,width:"80px",onChange:function(e,t){return i("bountyVal",{bountyval:t})}})}),(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Submit bounty",onClick:function(){return i("createBounty")}})]})})})]})],4)};t.RequestKioskContent=l},function(e,t,n){"use strict";t.__esModule=!0,t.StationAlertConsoleContent=t.StationAlertConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.StationAlertConsole=function(){return(0,o.createComponentVNode)(2,c.Window,{width:325,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t).data.alarms||[],c=n.Fire||[],i=n.Atmosphere||[],l=n.Power||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Fire Alarms",children:(0,o.createVNode)(1,"ul",null,[0===c.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),c.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Atmospherics Alarms",children:(0,o.createVNode)(1,"ul",null,[0===i.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),i.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Alarms",children:(0,o.createVNode)(1,"ul",null,[0===l.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),l.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)})],4)};t.StationAlertConsoleContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.PortableBasicInfo=void 0;var o=n(0),r=n(2),a=n(1);t.PortableBasicInfo=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.connected,d=i.holding,u=i.on,s=i.pressure;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return c("power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:s})," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Port",color:l?"good":"average",children:l?"Connected":"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",minHeight:"82px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!d,onClick:function(){return c("eject")}}),children:d?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:d.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.pressure})," kPa"]})]}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No holding tank"})})],4)}},,,,,,,,,,,function(e,t,n){n(148),e.exports=n(447)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var o=n(0);n(449),n(450),n(451),n(452),n(453),n(454),n(455),n(456),n(457),n(458);var r,a,c=n(100),i=(n(101),n(135)),l=n(186),d=n(136),u=n(187),s=n(57);c.perf.mark("inception",null==(r=window.performance)||null==(a=r.timing)?void 0:a.navigationStart),c.perf.mark("init");var m=(0,u.configureStore)(),p=(0,d.createRenderer)((function(){var e=(0,n(487).getRoutedComponent)(m);return(0,o.createComponentVNode)(2,u.StoreProvider,{store:m,children:(0,o.createComponentVNode)(2,e)})}));!function C(){if("loading"!==document.readyState){for((0,s.setupGlobalEvents)(),(0,i.setupHotKeys)(),(0,l.captureExternalLinks)(),m.subscribe(p),window.update=function(e){return m.dispatch(Byond.parseJson(e))};;){var e=window.__updateQueue__.shift();if(!e)break;window.update(e)}0}else document.addEventListener("DOMContentLoaded",C)}()},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";t.__esModule=!0,t.getRoutedComponent=void 0;var o=n(0),r=n(2),a=(n(190),n(3)),c=n(488),i=function(e,t){return function(){return(0,o.createComponentVNode)(2,a.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:["notFound"===e&&(0,o.createVNode)(1,"div",null,[(0,o.createTextVNode)("Interface "),(0,o.createVNode)(1,"b",null,t,0),(0,o.createTextVNode)(" was not found.")],4),"missingExport"===e&&(0,o.createVNode)(1,"div",null,[(0,o.createTextVNode)("Interface "),(0,o.createVNode)(1,"b",null,t,0),(0,o.createTextVNode)(" is missing an export.")],4)]})})}},l=function(){return(0,o.createComponentVNode)(2,a.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0})})};t.getRoutedComponent=function(e){var t=e.getState(),n=(0,r.selectBackend)(t),o=n.suspended,a=n.config;if(o)return l;var d,u=null==a?void 0:a["interface"];try{d=c("./"+u+".js")}catch(m){if("MODULE_NOT_FOUND"===m.code)return i("notFound",u);throw m}var s=d[u];return s||i("missingExport",u)}},function(e,t,n){var o={"./AbductorConsole.js":489,"./Achievements.js":490,"./AiAirlock.js":491,"./AiRestorer.js":201,"./AirAlarm.js":492,"./AirlockElectronics.js":494,"./Apc.js":495,"./ApcControl.js":496,"./AtmosAlertConsole.js":497,"./AtmosControlConsole.js":498,"./AtmosControlPanel.js":499,"./AtmosFilter.js":500,"./AtmosMixer.js":501,"./AtmosPump.js":502,"./AtmosRelief.js":503,"./AutomatedAnnouncement.js":504,"./BankMachine.js":505,"./Bepis.js":506,"./Biogenerator.js":507,"./BlackmarketUplink.js":508,"./BluespaceArtillery.js":509,"./BluespaceLocator.js":510,"./BorgPanel.js":511,"./BrigTimer.js":512,"./CameraConsole.js":513,"./Canister.js":514,"./Canvas.js":515,"./Cargo.js":203,"./CargoBountyConsole.js":516,"./CargoExpress.js":517,"./CargoHoldTerminal.js":518,"./CellularEmporium.js":519,"./CentcomPodLauncher.js":520,"./ChemAcclimator.js":521,"./ChemDebugSynthesizer.js":522,"./ChemDispenser.js":523,"./ChemFilter.js":524,"./ChemHeater.js":525,"./ChemMaster.js":526,"./ChemPress.js":527,"./ChemReactionChamber.js":528,"./ChemSplitter.js":529,"./ChemSynthesizer.js":530,"./CivCargoHoldTerminal.js":531,"./ClockworkSlab.js":532,"./CodexGigas.js":533,"./ComputerFabricator.js":534,"./Crayon.js":535,"./CrewConsole.js":536,"./Cryo.js":537,"./DecalPainter.js":538,"./DisposalUnit.js":539,"./DnaConsole.js":540,"./DnaVault.js":541,"./EightBallVote.js":542,"./Electrolyzer.js":543,"./Electropack.js":544,"./EmergencyShuttleConsole.js":545,"./EngravedMessage.js":546,"./ExosuitControlConsole.js":547,"./ExosuitFabricator.js":548,"./ForbiddenLore.js":549,"./Gateway.js":550,"./GhostPoolProtection.js":551,"./GlandDispenser.js":552,"./Gps.js":553,"./GravityGenerator.js":554,"./GulagItemReclaimer.js":555,"./GulagTeleporterConsole.js":556,"./Holodeck.js":557,"./Holopad.js":558,"./HypnoChair.js":559,"./ImplantChair.js":560,"./InfraredEmitter.js":561,"./Intellicard.js":562,"./Jukebox.js":563,"./KeycardAuth.js":564,"./LaborClaimConsole.js":565,"./LanguageMenu.js":566,"./LaunchpadConsole.js":206,"./LaunchpadRemote.js":567,"./MafiaPanel.js":568,"./MalfunctionModulePicker.js":569,"./MechBayPowerConsole.js":570,"./MechpadConsole.js":571,"./MedicalKiosk.js":572,"./Microscope.js":573,"./MiningVendor.js":574,"./Mint.js":575,"./Mule.js":576,"./NaniteChamberControl.js":577,"./NaniteCloudControl.js":578,"./NaniteProgramHub.js":579,"./NaniteProgrammer.js":580,"./NaniteRemote.js":581,"./NotificationPreferences.js":582,"./NtnetRelay.js":583,"./NtosAiRestorer.js":584,"./NtosArcade.js":585,"./NtosAtmos.js":586,"./NtosBountyConsole.js":587,"./NtosCard.js":588,"./NtosConfiguration.js":589,"./NtosCrewManifest.js":590,"./NtosCyborgRemoteMonitor.js":207,"./NtosCyborgRemoteMonitorSyndicate.js":591,"./NtosFileManager.js":592,"./NtosJobManager.js":593,"./NtosMain.js":594,"./NtosNetChat.js":595,"./NtosNetDos.js":596,"./NtosNetDownloader.js":597,"./NtosNetMonitor.js":598,"./NtosPowerMonitor.js":599,"./NtosRadar.js":208,"./NtosRadarSyndicate.js":600,"./NtosRequestKiosk.js":601,"./NtosRevelation.js":602,"./NtosRoboControl.js":603,"./NtosShipping.js":604,"./NtosStationAlertConsole.js":605,"./NtosSupermatterMonitor.js":606,"./NuclearBomb.js":607,"./OperatingComputer.js":608,"./Orbit.js":609,"./OreBox.js":610,"./OreRedemptionMachine.js":611,"./Pandemic.js":612,"./PaperSheet.js":613,"./ParticleAccelerator.js":616,"./PersonalCrafting.js":617,"./Photocopier.js":618,"./PortableChemMixer.js":619,"./PortableGenerator.js":620,"./PortablePump.js":621,"./PortableScrubber.js":622,"./PortableTurret.js":623,"./PowerMonitor.js":143,"./ProbingConsole.js":624,"./ProximitySensor.js":625,"./Radio.js":626,"./RadioactiveMicrolaser.js":627,"./RapidPipeDispenser.js":628,"./RemoteRobotControl.js":629,"./RequestKiosk.js":209,"./RoboticsControlConsole.js":630,"./Roulette.js":631,"./SatelliteControl.js":632,"./ScannerGate.js":633,"./SeedExtractor.js":634,"./ShuttleConsole.js":635,"./ShuttleManipulator.js":636,"./Signaler.js":637,"./SkillPanel.js":638,"./SkillStation.js":639,"./Sleeper.js":640,"./SlimeBodySwapper.js":641,"./SmartVend.js":642,"./Smes.js":643,"./SmokeMachine.js":644,"./SolarControl.js":645,"./SpaceHeater.js":646,"./SpawnersMenu.js":647,"./StationAlertConsole.js":210,"./SuitStorageUnit.js":648,"./SyndContractor.js":649,"./TachyonArray.js":650,"./Tank.js":651,"./TankDispenser.js":652,"./Telecomms.js":653,"./TelecommsInteraction.js":654,"./TelecommsLogBrowser.js":655,"./TelecommsMonitor.js":656,"./TelecommsPDALog.js":657,"./Teleporter.js":658,"./ThermoMachine.js":659,"./Timer.js":660,"./TransferValve.js":661,"./TurbineComputer.js":662,"./TurretControl.js":663,"./Uplink.js":142,"./VaultController.js":664,"./Vendatray.js":665,"./Vending.js":666,"./VrSleeper.js":667,"./Wires.js":668};function r(e){var t=a(e);return n(t)}function a(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=a,e.exports=r,r.id=488},function(e,t,n){"use strict";t.__esModule=!0,t.AbductorConsole=void 0;var o=n(0),r=n(142),a=n(2),c=n(1),i=n(3);t.AbductorConsole=function(e,t){var n=(0,a.useSharedState)(t,"tab",1),r=n[0],s=n[1];return(0,o.createComponentVNode)(2,i.Window,{theme:"abductor",width:600,height:532,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:1===r,onClick:function(){return s(1)},children:"Abductsoft 3000"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:2===r,onClick:function(){return s(2)},children:"Mission Settings"})]}),1===r&&(0,o.createComponentVNode)(2,l),2===r&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,u)],4)]})})};var l=function(e,t){var n=(0,a.useBackend)(t),i=(n.act,n.data),l=i.experiment,d=i.points,u=i.credits;return l?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Collected Samples",children:d})})}),(0,o.createComponentVNode)(2,r.GenericUplink,{currencyAmount:u,currencySymbol:"Credits"})],4):(0,o.createComponentVNode)(2,c.NoticeBox,{danger:!0,children:"No Experiment Machine Detected"})},d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.pad,d=i.gizmo;return l?(0,o.createComponentVNode)(2,c.Section,{title:"Emergency Teleport",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"exclamation-circle",content:"Activate",color:"bad",onClick:function(){return r("teleporter_send")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mark Retrieval",children:(0,o.createComponentVNode)(2,c.Button,{icon:d?"user-plus":"user-slash",content:d?"Retrieve":"No Mark",disabled:!d,onClick:function(){return r("teleporter_retrieve")}})})})}):(0,o.createComponentVNode)(2,c.NoticeBox,{danger:!0,children:"No Telepad Detected"})},u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.vest,d=i.vest_mode,u=i.vest_lock;return l?(0,o.createComponentVNode)(2,c.Section,{title:"Agent Vest Settings",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"lock":"unlock",content:u?"Locked":"Unlocked",onClick:function(){return r("toggle_vest")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,c.Button,{icon:1===d?"eye-slash":"fist-raised",content:1===d?"Stealth":"Combat",onClick:function(){return r("flip_vest")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Disguise",children:(0,o.createComponentVNode)(2,c.Button,{icon:"user-secret",content:"Select",onClick:function(){return r("select_disguise")}})})]})}):(0,o.createComponentVNode)(2,c.NoticeBox,{danger:!0,children:"No Agent Vest Detected"})}},function(e,t,n){"use strict";t.__esModule=!0,t.Achievements=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Achievements=function(e,t){var n=(0,r.useBackend)(t).data,l=n.categories,u=(0,r.useLocalState)(t,"category",l[0]),s=u[0],m=u[1],p=n.achievements.filter((function(e){return e.category===s}));return(0,o.createComponentVNode)(2,c.Window,{title:"Achievements",width:540,height:680,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[l.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:s===e,onClick:function(){return m(e)},children:e},e)})),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:"High Scores"===s,onClick:function(){return m("High Scores")},children:"High Scores"})]}),"High Scores"===s&&(0,o.createComponentVNode)(2,d)||(0,o.createComponentVNode)(2,i,{achievements:p})]})})};var i=function(e,t){var n=e.achievements;return(0,o.createComponentVNode)(2,a.Table,{children:n.map((function(e){return(0,o.createComponentVNode)(2,l,{achievement:e},e.name)}))})},l=function(e){var t=e.achievement,n=t.name,r=t.desc,c=t.icon_class,i=t.value,l=t.score;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Box,{m:1,className:c})}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",children:[(0,o.createVNode)(1,"h1",null,n,0),r,l&&(0,o.createComponentVNode)(2,a.Box,{color:i>0?"good":"bad",children:i>0?"Earned "+i+" times":"Locked"})||(0,o.createComponentVNode)(2,a.Box,{color:i?"good":"bad",children:i?"Unlocked":"Locked"})]})]},n)},d=function(e,t){var n=(0,r.useBackend)(t).data,c=n.highscore,i=n.user_ckey,l=(0,r.useLocalState)(t,"highscore",0),d=l[0],u=l[1],s=c[d];if(!s)return null;var m=Object.keys(s.scores).map((function(e){return{ckey:e,value:s.scores[e]}}));return(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:c.map((function(e,t){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:d===t,onClick:function(){return u(t)},children:e.name},e.name)}))})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"#"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"Key"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"Score"})]}),m.map((function(e,t){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",m:2,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:t+1}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:e.ckey===i&&"green",textAlign:"center",children:[0===t&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"yellow",mr:2}),e.ckey,0===t&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"yellow",ml:2})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.value})]},e.ckey)}))]})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AiAirlock=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i={2:{color:"good",localStatusText:"Offline"},1:{color:"average",localStatusText:"Caution"},0:{color:"bad",localStatusText:"Optimal"}};t.AiAirlock=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=i[d.power.main]||i[0],s=i[d.power.backup]||i[0],m=i[d.shock]||i[0];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:390,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main",color:u.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!d.power.main,content:"Disrupt",onClick:function(){return l("disrupt-main")}}),children:[d.power.main?"Online":"Offline"," ",d.wires.main_1&&d.wires.main_2?d.power.main_timeleft>0&&"["+d.power.main_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Backup",color:s.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!d.power.backup,content:"Disrupt",onClick:function(){return l("disrupt-backup")}}),children:[d.power.backup?"Online":"Offline"," ",d.wires.backup_1&&d.wires.backup_2?d.power.backup_timeleft>0&&"["+d.power.backup_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Electrify",color:m.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",disabled:!(d.wires.shock&&0===d.shock),content:"Restore",onClick:function(){return l("shock-restore")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Temporary",onClick:function(){return l("shock-temp")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Permanent",onClick:function(){return l("shock-perm")}})],4),children:[2===d.shock?"Safe":"Electrified"," ",(d.wires.shock?d.shock_timeleft>0&&"["+d.shock_timeleft+"s]":"[Wires have been cut!]")||-1===d.shock_timeleft&&"[Permanent]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Access and Door Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Scan",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.id_scanner?"power-off":"times",content:d.id_scanner?"Enabled":"Disabled",selected:d.id_scanner,disabled:!d.wires.id_scanner,onClick:function(){return l("idscan-toggle")}}),children:!d.wires.id_scanner&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Access",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.emergency?"power-off":"times",content:d.emergency?"Enabled":"Disabled",selected:d.emergency,onClick:function(){return l("emergency-toggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolts",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.locked?"lock":"unlock",content:d.locked?"Lowered":"Raised",selected:d.locked,disabled:!d.wires.bolts,onClick:function(){return l("bolt-toggle")}}),children:!d.wires.bolts&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolt Lights",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.lights?"power-off":"times",content:d.lights?"Enabled":"Disabled",selected:d.lights,disabled:!d.wires.lights,onClick:function(){return l("light-toggle")}}),children:!d.wires.lights&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Force Sensors",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.safe?"power-off":"times",content:d.safe?"Enabled":"Disabled",selected:d.safe,disabled:!d.wires.safe,onClick:function(){return l("safe-toggle")}}),children:!d.wires.safe&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Timing Safety",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.speed?"power-off":"times",content:d.speed?"Enabled":"Disabled",selected:d.speed,disabled:!d.wires.timing,onClick:function(){return l("speed-toggle")}}),children:!d.wires.timing&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Control",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.opened?"sign-out-alt":"sign-in-alt",content:d.opened?"Open":"Closed",selected:d.opened,disabled:d.locked||d.welded,onClick:function(){return l("open-close")}}),children:!(!d.locked&&!d.welded)&&(0,o.createVNode)(1,"span",null,[(0,o.createTextVNode)("[Door is "),d.locked?"bolted":"",d.locked&&d.welded?" and ":"",d.welded?"welded":"",(0,o.createTextVNode)("!]")],0)})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AirAlarm=void 0;var o=n(0),r=n(9),a=(n(19),n(2)),c=n(1),i=(n(36),n(3)),l=n(64),d=n(493);t.AirAlarm=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),c=r.locked&&!r.siliconUser;return(0,o.createComponentVNode)(2,i.Window,{width:440,height:650,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,u),!c&&(0,o.createComponentVNode)(2,m)]})})};var u=function(e,t){var n=(0,a.useBackend)(t).data,i=(n.environment_data||[]).filter((function(e){return e.value>=.01})),l={0:{color:"good",localStatusText:"Optimal"},1:{color:"average",localStatusText:"Caution"},2:{color:"bad",localStatusText:"Danger (Internals Required)"}},d=l[n.danger_level]||l[0];return(0,o.createComponentVNode)(2,c.Section,{title:"Air Status",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[i.length>0&&(0,o.createFragment)([i.map((function(e){var t=l[e.danger_level]||l[0];return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,color:t.color,children:[(0,r.toFixed)(e.value,2),e.unit]},e.name)})),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Local status",color:d.color,children:d.localStatusText}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Area status",color:n.atmos_alarm||n.fire_alarm?"bad":"good",children:(n.atmos_alarm?"Atmosphere Alarm":n.fire_alarm&&"Fire Alarm")||"Nominal"})],0)||(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Cannot obtain air sample for analysis."}),!!n.emagged&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Safety measures offline. Device may exhibit abnormal behavior."})]})})},s={home:{title:"Air Controls",component:function(){return p}},vents:{title:"Vent Controls",component:function(){return C}},scrubbers:{title:"Scrubber Controls",component:function(){return h}},modes:{title:"Operating Mode",component:function(){return N}},thresholds:{title:"Alarm Thresholds",component:function(){return V}}},m=function(e,t){var n=(0,a.useLocalState)(t,"screen"),r=n[0],i=n[1],l=s[r]||s.home,d=l.component();return(0,o.createComponentVNode)(2,c.Section,{title:l.title,buttons:r&&(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-left",content:"Back",onClick:function(){return i()}}),children:(0,o.createComponentVNode)(2,d)})},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=(0,a.useLocalState)(t,"screen"),d=(l[0],l[1]),u=i.mode,s=i.atmos_alarm;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:s?"exclamation-triangle":"exclamation",color:s&&"caution",content:"Area Atmosphere Alarm",onClick:function(){return r(s?"reset":"alarm")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:3===u?"exclamation-triangle":"exclamation",color:3===u&&"danger",content:"Panic Siphon",onClick:function(){return r("mode",{mode:3===u?1:3})}}),(0,o.createComponentVNode)(2,c.Box,{mt:2}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"Vent Controls",onClick:function(){return d("vents")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"filter",content:"Scrubber Controls",onClick:function(){return d("scrubbers")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"cog",content:"Operating Mode",onClick:function(){return d("modes")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"chart-bar",content:"Alarm Thresholds",onClick:function(){return d("thresholds")}})],4)},C=function(e,t){var n=(0,a.useBackend)(t).data.vents;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,d.Vent,{vent:e},e.id_tag)})):"Nothing to show"},h=function(e,t){var n=(0,a.useBackend)(t).data.scrubbers;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,d.Scrubber,{scrubber:e},e.id_tag)})):"Nothing to show"},N=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.modes;return i&&0!==i.length?i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:e.selected?"check-square-o":"square-o",selected:e.selected,color:e.selected&&e.danger&&"danger",content:e.name,onClick:function(){return r("mode",{mode:e.mode})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1})],4,e.mode)})):"Nothing to show"},V=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.thresholds;return(0,o.createVNode)(1,"table","LabeledList",[(0,o.createVNode)(1,"thead",null,(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","color-bad","min2",16),(0,o.createVNode)(1,"td","color-average","min1",16),(0,o.createVNode)(1,"td","color-average","max1",16),(0,o.createVNode)(1,"td","color-bad","max2",16)],4),2),(0,o.createVNode)(1,"tbody",null,l.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","LabeledList__label",e.name,0),e.settings.map((function(e){return(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Button,{content:(0,r.toFixed)(e.selected,2),onClick:function(){return i("threshold",{env:e.env,"var":e.val})}}),2,null,e.val)}))],0,null,e.name)})),0)],4,{style:{width:"100%"}})}},function(e,t,n){"use strict";t.__esModule=!0,t.Scrubber=t.Vent=void 0;var o=n(0),r=n(19),a=n(2),c=n(1),i=n(36);t.Vent=function(e,t){var n=e.vent,i=(0,a.useBackend)(t).act,l=n.id_tag,d=n.long_name,u=n.power,s=n.checks,m=n.excheck,p=n.incheck,C=n.direction,h=n.external,N=n.internal,V=n.extdefault,b=n.intdefault;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,r.decodeHtmlEntities)(d),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return i("power",{id_tag:l,val:Number(!u)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:C?"Pressurizing":"Scrubbing",color:!C&&"danger",onClick:function(){return i("direction",{id_tag:l,val:Number(!C)})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:"Internal",selected:p,onClick:function(){return i("incheck",{id_tag:l,val:s})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"External",selected:m,onClick:function(){return i("excheck",{id_tag:l,val:s})}})]}),!!p&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Internal Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(N),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return i("set_internal_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:b,content:"Reset",onClick:function(){return i("reset_internal_pressure",{id_tag:l})}})]}),!!m&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"External Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(h),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return i("set_external_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:V,content:"Reset",onClick:function(){return i("reset_external_pressure",{id_tag:l})}})]})]})})};t.Scrubber=function(e,t){var n=e.scrubber,l=(0,a.useBackend)(t).act,d=n.long_name,u=n.power,s=n.scrubbing,m=n.id_tag,p=n.widenet,C=n.filter_types;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,r.decodeHtmlEntities)(d),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power",{id_tag:m,val:Number(!u)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,c.Button,{icon:s?"filter":"sign-in-alt",color:s||"danger",content:s?"Scrubbing":"Siphoning",onClick:function(){return l("scrubbing",{id_tag:m,val:Number(!s)})}}),(0,o.createComponentVNode)(2,c.Button,{icon:p?"expand":"compress",selected:p,content:p?"Expanded range":"Normal range",onClick:function(){return l("widenet",{id_tag:m,val:Number(!p)})}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Filters",children:s&&C.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,i.getGasLabel)(e.gas_id,e.gas_name),title:e.gas_name,selected:e.enabled,onClick:function(){return l("toggle_filter",{id_tag:m,val:e.gas_id})}},e.gas_id)}))||"N/A"})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AirlockElectronics=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(202);t.AirlockElectronics=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.oneAccess,s=d.unres_direction,m=d.regions||[],p=d.accesses||[];return(0,o.createComponentVNode)(2,c.Window,{width:420,height:485,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Main",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Access Required",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"unlock":"lock",content:u?"One":"All",onClick:function(){return l("one_access")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Unrestricted Access",children:[(0,o.createComponentVNode)(2,a.Button,{icon:1&s?"check-square-o":"square-o",content:"North",selected:1&s,onClick:function(){return l("direc_set",{unres_direction:"1"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:2&s?"check-square-o":"square-o",content:"South",selected:2&s,onClick:function(){return l("direc_set",{unres_direction:"2"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:4&s?"check-square-o":"square-o",content:"East",selected:4&s,onClick:function(){return l("direc_set",{unres_direction:"4"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:8&s?"check-square-o":"square-o",content:"West",selected:8&s,onClick:function(){return l("direc_set",{unres_direction:"8"})}})]})]})}),(0,o.createComponentVNode)(2,i.AccessList,{accesses:m,selectedList:p,accessMod:function(e){return l("set",{access:e})},grantAll:function(){return l("grant_all")},denyAll:function(){return l("clear_all")},grantDep:function(e){return l("grant_region",{region:e})},denyDep:function(e){return l("deny_region",{region:e})}})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Apc=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(64);t.Apc=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:450,height:445,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,u)})})};var l={2:{color:"good",externalPowerText:"External Power",chargingText:"Fully Charged"},1:{color:"average",externalPowerText:"Low External Power",chargingText:"Charging"},0:{color:"bad",externalPowerText:"No External Power",chargingText:"Not Charging"}},d={1:{icon:"terminal",content:"Override Programming",action:"hack"},2:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"},3:{icon:"caret-square-left",content:"Return to Main Core",action:"deoccupy"},4:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"}},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.locked&&!u.siliconUser,m=l[u.externalPower]||l[0],p=l[u.chargingStatus]||l[0],C=u.powerChannels||[],h=d[u.malfStatus]||d[0],N=u.powerCellStatus/100;return u.failTime>0?(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createVNode)(1,"b",null,(0,o.createVNode)(1,"h3",null,"SYSTEM FAILURE",16),2),(0,o.createVNode)(1,"i",null,"I/O regulators malfunction detected! Waiting for system reboot...",16),(0,o.createVNode)(1,"br"),"Automatic reboot in ",u.failTime," seconds...",(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Reboot Now",onClick:function(){return c("reboot")}})]}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main Breaker",color:m.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.isOperating?"power-off":"times",content:u.isOperating?"On":"Off",selected:u.isOperating&&!s,disabled:s,onClick:function(){return c("breaker")}}),children:["[ ",m.externalPowerText," ]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power Cell",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:"good",value:N})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",color:p.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.chargeMode?"sync":"close",content:u.chargeMode?"Auto":"Off",disabled:s,onClick:function(){return c("charge")}}),children:["[ ",p.chargingText," ]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Channels",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[C.map((function(e){var t=e.topicParams;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.title,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,mx:2,color:e.status>=2?"good":"bad",children:e.status>=2?"On":"Off"}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:!s&&(1===e.status||3===e.status),disabled:s,onClick:function(){return c("channel",t.auto)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"On",selected:!s&&2===e.status,disabled:s,onClick:function(){return c("channel",t.on)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:!s&&0===e.status,disabled:s,onClick:function(){return c("channel",t.off)}})],4),children:e.powerLoad},e.title)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Load",children:(0,o.createVNode)(1,"b",null,u.totalLoad,0)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Misc",buttons:!!u.siliconUser&&(0,o.createFragment)([!!u.malfStatus&&(0,o.createComponentVNode)(2,a.Button,{icon:h.icon,content:h.content,color:"bad",onClick:function(){return c(h.action)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:"Overload",onClick:function(){return c("overload")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cover Lock",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.coverLocked?"lock":"unlock",content:u.coverLocked?"Engaged":"Disengaged",disabled:s,onClick:function(){return c("cover")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.emergencyLights?"Enabled":"Disabled",disabled:s,onClick:function(){return c("emergency_lighting")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Night Shift Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.nightshiftLights?"Enabled":"Disabled",onClick:function(){return c("toggle_nightshift")}})})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.ApcControl=void 0;var o=n(0),r=n(14),a=n(30),c=n(6),i=n(2),l=n(1),d=n(3),u=n(143);t.ApcControl=function(e,t){var n=(0,i.useBackend)(t).data;return(0,o.createComponentVNode)(2,d.Window,{title:"APC Controller",width:550,height:500,resizable:!0,children:[1===n.authenticated&&(0,o.createComponentVNode)(2,m),0===n.authenticated&&(0,o.createComponentVNode)(2,s)]})};var s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.emagged,c=1===a?"Open":"Log In";return(0,o.createComponentVNode)(2,d.Window.Content,{children:(0,o.createComponentVNode)(2,l.Button,{fluid:!0,color:1===a?"":"good",content:c,onClick:function(){return r("log-in")}})})},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.restoring,c=(0,i.useLocalState)(t,"tab-index",1),u=c[0],s=c[1];return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Tabs,{children:[(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:1===u,onClick:function(){s(1),r("check-apcs")},children:"APC Control Panel"}),(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:2===u,onClick:function(){s(2),r("check-logs")},children:"Log View Panel"})]}),1===a&&(0,o.createComponentVNode)(2,l.Dimmer,{fontSize:"32px",children:[(0,o.createComponentVNode)(2,l.Icon,{name:"cog",spin:!0})," Resetting..."]}),1===u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,l.Box,{fillPositionedParent:!0,top:"53px",children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,C)})})],4),2===u&&(0,o.createComponentVNode)(2,l.Box,{fillPositionedParent:!0,top:"20px",children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,h)})})],0)},p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data,c=a.emagged,d=a.logging,u=(0,i.useLocalState)(t,"sortByField",null),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,l.Flex,{children:[(0,o.createComponentVNode)(2,l.Flex.Item,{children:[(0,o.createComponentVNode)(2,l.Box,{inline:!0,mr:2,color:"label",children:"Sort by:"}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"name"===s,content:"Name",onClick:function(){return m("name"!==s&&"name")}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"charge"===s,content:"Charge",onClick:function(){return m("charge"!==s&&"charge")}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"draw"===s,content:"Draw",onClick:function(){return m("draw"!==s&&"draw")}})]}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,l.Flex.Item,{children:[1===c&&(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Button,{color:1===d?"bad":"good",content:1===d?"Stop Logging":"Restore Logging",onClick:function(){return r("toggle-logs")}}),(0,o.createComponentVNode)(2,l.Button,{content:"Reset Console",onClick:function(){return r("restore-console")}})],4),(0,o.createComponentVNode)(2,l.Button,{color:"bad",content:"Log Out",onClick:function(){return r("log-out")}})]})]})},C=function(e,t){var n=(0,i.useBackend)(t),c=n.data,d=n.act,s=(0,i.useLocalState)(t,"sortByField",null)[0],m=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.name+t})})),"name"===s&&(0,r.sortBy)((function(e){return e.name})),"charge"===s&&(0,r.sortBy)((function(e){return-e.charge})),"draw"===s&&(0,r.sortBy)((function(e){return-(0,u.powerRank)(e.load)}),(function(e){return-parseFloat(e.load)}))])(c.apcs);return(0,o.createComponentVNode)(2,l.Table,{children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"On/Off"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Area"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:"Charge"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,textAlign:"right",children:"Draw"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Equipment",children:"Eqp"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Lighting",children:"Lgt"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Environment",children:"Env"})]}),m.map((function(e,t){return(0,o.createVNode)(1,"tr","Table__row candystripe",[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,l.Button,{icon:e.operating?"power-off":"times",color:e.operating?"good":"bad",onClick:function(){return d("breaker",{ref:e.ref})}}),2),(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,l.Button,{onClick:function(){return d("access-apc",{ref:e.ref})},children:e.name}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",(0,o.createComponentVNode)(2,u.AreaCharge,{charging:e.charging,charge:e.charge}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",e.load,0),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"equipment",status:e.eqp,apc:e,act:d}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"lighting",status:e.lgt,apc:e,act:d}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"environ",status:e.env,apc:e,act:d}),2)],4,null,e.id)}))]})},h=function(e,t){var n=(0,i.useBackend)(t).data,c=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.entry+t})})),function(e){return e.reverse()}])(n.logs);return(0,o.createComponentVNode)(2,l.Box,{m:-.5,children:c.map((function(e){return(0,o.createComponentVNode)(2,l.Box,{p:.5,className:"candystripe",bold:!0,children:e.entry},e.id)}))})},N=function(e){var t=e.target,n=e.status,r=e.apc,a=e.act,c=Boolean(2&n),i=Boolean(1&n);return(0,o.createComponentVNode)(2,l.Button,{icon:i?"sync":"power-off",color:c?"good":"bad",onClick:function(){return a("toggle-minor",{type:t,value:V(n),ref:r.ref})}})},V=function(e){return 0===e?2:2===e?3:0};N.defaultHooks=c.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.AtmosAlertConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.priority||[],u=l.minor||[];return(0,o.createComponentVNode)(2,c.Window,{width:350,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Alarms",children:(0,o.createVNode)(1,"ul",null,[0===d.length&&(0,o.createVNode)(1,"li","color-good","No Priority Alerts",16),d.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"bad",onClick:function(){return i("clear",{zone:e})}}),2,null,e)})),0===u.length&&(0,o.createVNode)(1,"li","color-good","No Minor Alerts",16),u.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"average",onClick:function(){return i("clear",{zone:e})}}),2,null,e)}))],0)})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlConsole=void 0;var o=n(0),r=n(14),a=n(9),c=n(2),i=n(1),l=n(3);t.AtmosControlConsole=function(e,t){var n,d=(0,c.useBackend)(t),u=d.act,s=d.data,m=s.sensors||[];return(0,o.createComponentVNode)(2,l.Window,{width:500,height:315,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:!!s.tank&&(null==(n=m[0])?void 0:n.long_name),children:m.map((function(e){var t=e.gases||{};return(0,o.createComponentVNode)(2,i.Section,{title:!s.tank&&e.long_name,level:2,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:(0,a.toFixed)(e.pressure,2)+" kPa"}),!!e.temperature&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",children:(0,a.toFixed)(e.temperature,2)+" K"}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:t,children:(0,a.toFixed)(e,2)+"%"})}))(t)]})},e.id_tag)}))}),s.tank&&(0,o.createComponentVNode)(2,i.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",content:"Reconnect",onClick:function(){return u("reconnect")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Input Injector",children:(0,o.createComponentVNode)(2,i.Button,{icon:s.inputting?"power-off":"times",content:s.inputting?"Injecting":"Off",selected:s.inputting,onClick:function(){return u("input")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Input Rate",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:s.inputRate,unit:"L/s",width:"63px",minValue:0,maxValue:200,suppressFlicker:2e3,onChange:function(e,t){return u("rate",{rate:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Regulator",children:(0,o.createComponentVNode)(2,i.Button,{icon:s.outputting?"power-off":"times",content:s.outputting?"Open":"Closed",selected:s.outputting,onClick:function(){return u("output")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Pressure",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:parseFloat(s.outputPressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,suppressFlicker:2e3,onChange:function(e,t){return u("pressure",{pressure:t})}})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlPanel=void 0;var o=n(0),r=n(14),a=n(30),c=n(2),i=n(1),l=n(3);t.AtmosControlPanel=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.area+t})})),(0,r.sortBy)((function(e){return e.id}))])(u.excited_groups);return(0,o.createComponentVNode)(2,l.Window,{title:"SSAir Control Panel",width:900,height:500,resizable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{m:1,children:(0,o.createComponentVNode)(2,i.Flex,{justify:"space-between",align:"baseline",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return d("toggle-freeze")},color:1===u.frozen?"good":"bad",children:1===u.frozen?"Freeze Subsystem":"Unfreeze Subsystem"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Fire Cnt: ",u.fire_count]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Active Turfs: ",u.active_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Excited Groups: ",u.excited_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Hotspots: ",u.hotspots_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Superconductors: ",u.conducting_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:u.showing_user,onClick:function(){return d("toggle_user_display")},children:"Personal View"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:u.show_all,onClick:function(){return d("toggle_show_all")},children:"Display all"})})]})}),(0,o.createComponentVNode)(2,i.Box,{fillPositionedParent:!0,top:"45px",children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Area Name"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Breakdown"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Dismantle"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Turfs"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:1===u.display_max&&"Max Share"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Display"})]}),s.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,i.Button,{content:e.area,onClick:function(){return d("move-to-target",{spot:e.jump_to})}}),2),(0,o.createVNode)(1,"td",null,e.breakdown,0),(0,o.createVNode)(1,"td",null,e.dismantle,0),(0,o.createVNode)(1,"td",null,e.size,0),(0,o.createVNode)(1,"td",null,1===u.display_max&&e.max_share,0),(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:e.should_show,onClick:function(){return d("toggle_show_group",{group:e.group})}}),2)],4,null,e.id)}))]})})})})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosFilter=void 0;var o=n(0),r=n(2),a=n(1),c=n(36),i=n(3);t.AtmosFilter=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.filter_types||[];return(0,o.createComponentVNode)(2,i.Window,{width:390,height:187,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.on?"power-off":"times",content:d.on?"On":"Off",selected:d.on,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(d.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onDrag:function(e,t){return l("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:d.rate===d.max_rate,onClick:function(){return l("rate",{rate:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filter",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:e.selected,content:(0,c.getGasLabel)(e.id,e.name),onClick:function(){return l("filter",{mode:e.id})}},e.id)}))})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosMixer=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.AtmosMixer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:370,height:165,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.set_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return i("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.set_pressure===l.max_pressure,onClick:function(){return i("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 1",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:l.node1_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return i("node1",{concentration:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 2",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:l.node2_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return i("node2",{concentration:t})}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosPump=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.AtmosPump=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:335,height:115,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return i("power")}})}),l.max_rate?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onChange:function(e,t){return i("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.rate===l.max_rate,onClick:function(){return i("rate",{rate:"max"})}})]}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return i("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.pressure===l.max_pressure,onClick:function(){return i("pressure",{pressure:"max"})}})]})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosRelief=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.AtmosRelief=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:335,height:115,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Open Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.open_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:l.max_pressure||4500,step:10,onChange:function(e,t){return i("open_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.open_pressure===l.max_pressure,onClick:function(){return i("open_pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Close Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.close_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:l.max_pressure||4500,step:10,onChange:function(e,t){return i("close_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.close_pressure===l.max_pressure,onClick:function(){return i("close_pressure",{pressure:"max"})}})]})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.AutomatedAnnouncement=void 0;var o=n(0),r=(n(19),n(2)),a=n(1),c=n(3),i="%PERSON will be replaced with their name.\n%RANK with their job.";t.AutomatedAnnouncement=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.arrivalToggle,s=d.arrival,m=d.newheadToggle,p=d.newhead;return(0,o.createComponentVNode)(2,c.Window,{title:"Automated Announcement System",width:500,height:225,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Arrival Announcement",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return l("ArrivalToggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"info",tooltip:i,tooltipPosition:"left"}),children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:s,onChange:function(e,t){return l("ArrivalText",{newText:t})}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Departmental Head Announcement",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return l("NewheadToggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"info",tooltip:i,tooltipPosition:"left"}),children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:p,onChange:function(e,t){return l("NewheadText",{newText:t})}})})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BankMachine=void 0;var o=n(0),r=n(2),a=n(1),c=n(39),i=n(3);t.BankMachine=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.current_balance,s=d.siphoning,m=d.station_name;return(0,o.createComponentVNode)(2,i.Window,{width:350,height:155,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"Authorized personnel only"}),(0,o.createComponentVNode)(2,a.Section,{title:m+" Vault",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Balance",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:s?"times":"sync",content:s?"Stop Siphoning":"Siphon Credits",selected:s,onClick:function(){return l(s?"halt":"siphon")}}),children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u,format:function(e){return(0,c.formatMoney)(e)}})," cr"]})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Bepis=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Bepis=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.amount;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:480,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Business Exploration Protocol Incubation Sink",children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:l.manual_power?"Off":"On",selected:!l.manual_power,onClick:function(){return i("toggle_power")}}),children:"All you need to know about the B.E.P.I.S. and you! The B.E.P.I.S. performs hundreds of tests a second using electrical and financial resources to invent new products, or discover new technologies otherwise overlooked for being too risky or too niche to produce!"}),(0,o.createComponentVNode)(2,a.Section,{title:"Payer's Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"redo-alt",content:"Reset Account",onClick:function(){return i("account_reset")}}),children:["Console is currently being operated by ",l.account_owner?l.account_owner:"no one","."]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Data and Statistics",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposited Credits",children:l.stored_cash}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Investment Variability",children:[l.accuracy_percentage,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Innovation Bonus",children:l.positive_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Risk Offset",color:"bad",children:l.negative_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposit Amount",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"Credits",minValue:100,maxValue:3e4,step:100,stepPixelSize:2,onChange:function(e,t){return i("amount",{amount:t})}})})]})}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"donate",content:"Deposit Credits",disabled:1===l.manual_power||1===l.silicon_check,onClick:function(){return i("deposit_cash")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Withdraw Credits",disabled:1===l.manual_power,onClick:function(){return i("withdraw_cash")}})]})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Market Data and Analysis",children:[(0,o.createComponentVNode)(2,a.Box,{children:["Average technology cost: ",l.mean_value]}),(0,o.createComponentVNode)(2,a.Box,{children:["Current chance of Success: Est. ",l.success_estimate,"%"]}),l.error_name&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Previous Failure Reason: Deposited cash value too low. Please insert more money for future success."}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"microscope",disabled:1===l.manual_power,onClick:function(){return i("begin_experiment")},content:"Begin Testing"})]})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.BiogeneratorContent=t.Biogenerator=void 0;var o=n(0),r=n(6),a=n(19),c=n(2),i=n(1),l=n(39),d=n(3);t.Biogenerator=function(e,t){var n=(0,c.useBackend)(t).data,r=n.beaker,a=n.processing;return(0,o.createComponentVNode)(2,d.Window,{width:550,height:380,resizable:!0,children:[!!a&&(0,o.createComponentVNode)(2,i.Dimmer,{fontSize:"32px",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"cog",spin:1})," Processing..."]}),(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:[!r&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No Container"}),!!r&&(0,o.createComponentVNode)(2,u)]})]})};var u=function(e,t){var n,r,d=(0,c.useBackend)(t),u=d.act,m=d.data,p=m.biomass,C=m.can_process,h=m.categories,N=void 0===h?[]:h,V=(0,c.useLocalState)(t,"searchText",""),b=V[0],f=V[1],g=(0,c.useLocalState)(t,"category",null==(n=N[0])?void 0:n.name),v=g[0],k=g[1],x=(0,a.createSearch)(b,(function(e){return e.name})),B=b.length>0&&N.flatMap((function(e){return e.items||[]})).filter(x).filter((function(e,t){return t<25}))||(null==(r=N.find((function(e){return e.name===v})))?void 0:r.items)||[];return(0,o.createComponentVNode)(2,i.Section,{title:(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:p>0?"good":"bad",children:[(0,l.formatMoney)(p)," Biomass"]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,i.Input,{autoFocus:!0,value:b,onInput:function(e,t){return f(t)},mx:1}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",onClick:function(){return u("detach")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Activate",disabled:!C,onClick:function(){return u("activate")}})],4),children:(0,o.createComponentVNode)(2,i.Flex,{children:[0===b.length&&(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:N.map((function(e){var t;return(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:e.name===v,onClick:function(){return k(e.name)},children:[e.name," (",(null==(t=e.items)?void 0:t.length)||0,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,basis:0,children:[0===B.length&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:0===b.length?"No items in this category.":"No results found."}),(0,o.createComponentVNode)(2,i.Table,{children:(0,o.createComponentVNode)(2,s,{biomass:p,items:B})})]})]})})};t.BiogeneratorContent=u;var s=function(e,t){var n=(0,c.useBackend)(t).act,a=(0,c.useLocalState)(t,"hoveredItem",{}),l=a[0],d=a[1],u=l&&l.cost||0;return e.items.map((function(n){var o=(0,c.useLocalState)(t,"amount"+n.name,1),r=o[0],a=o[1],i=l&&l.name!==n.name,d=e.biomass-u*l.amountV,onClick:function(){return d("select",{item:e.id})}})})]}),e.desc]},e.name)}))})]})]})]})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.buying,u=l.ltsrbt_built,s=l.money;if(!d)return null;var m=l.delivery_methods.map((function(e){var t=l.delivery_method_description[e.name];return Object.assign({},e,{description:t})}));return(0,o.createComponentVNode)(2,a.Modal,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:m.map((function(e){return"LTSRBT"!==e.name||u?(0,o.createComponentVNode)(2,a.Flex.Item,{mx:1,width:"250px",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"30px",children:e.name}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:e.description}),(0,o.createComponentVNode)(2,a.Button,{mt:2,content:(0,c.formatMoney)(e.price)+" cr",disabled:s=0||(r[n]=e[n]);return r}(t,["res","value"]),a=l(n),c=a[0],i=a[1];return(0,o.normalizeProps)((0,o.createVNode)(1,"canvas",null,"Canvas failed to render.",16,Object.assign({width:28*c||300,height:28*i||300},r,{onClick:function(t){return e.clickwrapper(t)}}),null,this.canvasRef))},r}(o.Component),l=function(e){var t=e.length;return[t,0!==t?e[0].length:0]};t.Canvas=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=l(u.grid),m=s[0],p=s[1];return(0,o.createComponentVNode)(2,c.Window,{width:Math.min(400,28*m*32+24),height:Math.min(400,28*p*32+24),resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,i,{value:u.grid,onCanvasClick:function(e,t){return d("paint",{x:e,y:t})}}),(0,o.createComponentVNode)(2,a.Box,{children:[!u.finalized&&(0,o.createComponentVNode)(2,a.Button.Confirm,{onClick:function(){return d("finalize")},content:"Finalize"}),u.name]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CargoBountyConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(39),i=n(3);t.CargoBountyConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data.bountydata,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.Window,{width:750,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print Bounty List",onClick:function(){return c("Print")}}),children:(0,o.createComponentVNode)(2,a.Table,{border:!0,children:[(0,o.createComponentVNode)(2,a.Table.Row,{bold:!0,italic:!0,color:"label",fontSize:1.25,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Bounty Object"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Description"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Progress"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Claim"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{backgroundColor:1===e.priority?"rgba(252, 152, 3, 0.25)":"",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{italic:!0,textAlign:"center",p:1,children:e.description}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:[1===e.priority?(0,o.createComponentVNode)(2,a.Box,{children:"High Priority"}):"",e.completion_string]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:e.reward_string}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:1===e.claimed?"check":"",content:1===e.claimed?"Claimed":"Claim",disabled:1===e.claimed,color:1===e.can_claim?"green":"red",onClick:function(){return c("ClaimBounty",{bounty:e.bounty_ref})}})})]},e.name)}))]})})})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.stored_cash);return(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i,format:function(e){return(0,c.formatMoney)(e)}})," credits"]})}},function(e,t,n){"use strict";t.__esModule=!0,t.CargoExpress=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(203),l=n(64);t.CargoExpress=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data);return(0,o.createComponentVNode)(2,c.Window,{width:600,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.InterfaceLockNoticeBox,{accessText:"a QM-level ID card"}),!a.locked&&(0,o.createComponentVNode)(2,d)]})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Express",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(l.points)})," credits"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Landing Location",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Cargo Bay",selected:!l.usingBeacon,onClick:function(){return c("LZCargo")}}),(0,o.createComponentVNode)(2,a.Button,{selected:l.usingBeacon,disabled:!l.hasBeacon,onClick:function(){return c("LZBeacon")},children:[l.beaconzone," (",l.beaconName,")"]}),(0,o.createComponentVNode)(2,a.Button,{content:l.printMsg,disabled:!l.canBuyBeacon,onClick:function(){return c("printBeacon")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Notice",children:l.message})]})}),(0,o.createComponentVNode)(2,i.CargoCatalog,{express:!0})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.CargoHoldTerminal=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.CargoHoldTerminal=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.points,u=l.pad,s=l.sending,m=l.status_report;return(0,o.createComponentVNode)(2,c.Window,{width:600,height:230,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Cargo Value",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(d)})," credits"]})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Pad",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Recalculate Value",disabled:!u,onClick:function(){return i("recalc")}}),(0,o.createComponentVNode)(2,a.Button,{icon:s?"times":"arrow-up",content:s?"Stop Sending":"Send Goods",selected:s,disabled:!u,onClick:function(){return i(s?"stop":"send")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:u?"good":"bad",children:u?"Online":"Not Found"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cargo Report",children:m})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CellularEmporium=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.CellularEmporium=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.abilities;return(0,o.createComponentVNode)(2,c.Window,{width:900,height:480,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Genetic Points",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"Readapt",disabled:!l.can_readapt,onClick:function(){return i("readapt")}}),children:l.genetic_points_remaining})})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.name,buttons:(0,o.createFragment)([e.dna_cost," ",(0,o.createComponentVNode)(2,a.Button,{content:e.owned?"Evolved":"Evolve",selected:e.owned,onClick:function(){return i("evolve",{name:e.name})}})],0),children:[e.desc,(0,o.createComponentVNode)(2,a.Box,{color:"good",children:e.helptext})]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CentcomPodLauncher=void 0;var o=n(0),r=n(9),a=n(6),c=n(79),i=(n(19),n(204)),l=n(2),d=n(1),u=n(3);function s(e,t,n,o,r,a,c){try{var i=e[a](c),l=i.value}catch(d){return void n(d)}i.done?t(l):Promise.resolve(l).then(o,r)}function m(e){return function(){var t=this,n=arguments;return new Promise((function(o,r){var a=e.apply(t,n);function c(e){s(a,o,r,c,i,"next",e)}function i(e){s(a,o,r,c,i,"throw",e)}c(undefined)}))}}var p={color:"grey"},C=function(e){var t=(0,l.useLocalState)(e,"compact",!1),n=t[0],o=t[1];return[n,function(){return o(!n)}]};t.CentcomPodLauncher=function(e,t){var n=C(t)[0];return(0,o.createComponentVNode)(2,u.Window,{resizable:!0,title:n?"Use against Helen Weinstein":"Supply Pod Menu (Use against Helen Weinstein)",overflow:"hidden",width:n?435:690,height:n?360:440,children:(0,o.createComponentVNode)(2,h)},"CPL_"+n)};var h=function(e,t){var n=C(t)[0];return(0,o.createComponentVNode)(2,u.Window.Content,{children:(0,o.createComponentVNode)(2,d.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,d.Flex.Item,{grow:0,shrink:0,children:(0,o.createComponentVNode)(2,L)}),(0,o.createComponentVNode)(2,d.Flex.Item,{mt:1,grow:1,children:(0,o.createComponentVNode)(2,d.Flex,{height:"100%",children:[(0,o.createComponentVNode)(2,d.Flex.Item,{grow:1,shrink:0,basis:"13em",children:(0,o.createComponentVNode)(2,d.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,d.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,S)}),(0,o.createComponentVNode)(2,d.Flex.Item,{mt:1,grow:0,children:(0,o.createComponentVNode)(2,y)}),(0,o.createComponentVNode)(2,d.Flex.Item,{mt:1,children:(0,o.createComponentVNode)(2,d.Section,{children:(0,o.createComponentVNode)(2,I)})})]})}),!n&&(0,o.createComponentVNode)(2,d.Flex.Item,{ml:1,grow:3,children:(0,o.createComponentVNode)(2,x)}),(0,o.createComponentVNode)(2,d.Flex.Item,{ml:1,basis:"8em",children:(0,o.createComponentVNode)(2,d.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,d.Flex.Item,{children:(0,o.createComponentVNode)(2,A)}),(0,o.createComponentVNode)(2,d.Flex.Item,{mt:1,grow:1,children:(0,o.createComponentVNode)(2,P)}),!n&&(0,o.createComponentVNode)(2,d.Flex.Item,{mt:1,children:(0,o.createComponentVNode)(2,R)})]})}),(0,o.createComponentVNode)(2,d.Flex.Item,{ml:1,basis:"11em",children:(0,o.createComponentVNode)(2,T)})]})})]})})},N=[{title:"View Pod",component:function(){return B}},{title:"View Bay",component:function(){return _}},{title:"View Dropoff Location",component:function(){return w}}],V=[{title:"Mobs",icon:"user"},{title:"Unanchored\nObjects",key:"Unanchored",icon:"cube"},{title:"Anchored\nObjects",key:"Anchored",icon:"anchor"},{title:"Under-Floor",key:"Underfloor",icon:"eye-slash"},{title:"Wall-Mounted",key:"Wallmounted",icon:"link"},{title:"Floors",icon:"border-all"},{title:"Walls",icon:"square"}],b=[{title:"Pre",tooltip:"Time until pod gets to station"},{title:"Fall",tooltip:"Duration of pods\nfalling animation"},{title:"Open",tooltip:"Time it takes pod to open after landing"},{title:"Exit",tooltip:"Time for pod to\nleave after opening"}],f=[{title:"Fall",act:"fallingSound",tooltip:"Plays while pod falls, timed\nto end when pod lands"},{title:"Land",act:"landingSound",tooltip:"Plays after pod lands"},{title:"Open",act:"openingSound",tooltip:"Plays when pod opens"},{title:"Exit",act:"leavingSound",tooltip:"Plays when pod leaves"}],g=[{title:"Standard"},{title:"Advanced"},{title:"Nanotrasen"},{title:"Syndicate"},{title:"Deathsquad"},{title:"Cultist"},{title:"Missile"},{title:"Syndie Missile"},{title:"Supply Box"},{title:"Clown Pod"},{title:"Fruit"},{title:"Invisible"},{title:"Gondola"},{title:"Seethrough"}],v=[{title:"1"},{title:"2"},{title:"3"},{title:"4"},{title:"ERT"}],k=[{list:[{title:"Launch All Turfs",icon:"globe",choiceNumber:0,selected:"launchChoice",act:"launchAll"},{title:"Launch Turf Ordered",icon:"sort-amount-down-alt",choiceNumber:1,selected:"launchChoice",act:"launchOrdered"},{title:"Pick Random Turf",icon:"dice",choiceNumber:2,selected:"launchChoice",act:"launchRandomTurf"},{divider:1},{title:"Launch Whole Turf",icon:"expand",choiceNumber:0,selected:"launchRandomItem",act:"launchWholeTurf"},{title:"Pick Random Item",icon:"dice",choiceNumber:1,selected:"launchRandomItem",act:"launchRandomItem"},{divider:1},{title:"Clone",icon:"clone",soloSelected:"launchClone",act:"launchClone"}],label:"Load From",alt_label:"Load",tooltipPosition:"right"},{list:[{title:"Specific Target",icon:"user-check",soloSelected:"effectTarget",act:"effectTarget"},{title:"Pod Stays",icon:"hand-paper",choiceNumber:0,selected:"effectBluespace",act:"effectBluespace"},{title:"Stealth",icon:"user-ninja",soloSelected:"effectStealth",act:"effectStealth"},{title:"Quiet",icon:"volume-mute",soloSelected:"effectQuiet",act:"effectQuiet"},{title:"Missile Mode",icon:"rocket",soloSelected:"effectMissile",act:"effectMissile"},{title:"Burst Launch",icon:"certificate",soloSelected:"effectBurst",act:"effectBurst"},{title:"Any Descent Angle",icon:"ruler-combined",soloSelected:"effectCircle",act:"effectCircle"},{title:"No Ghost Alert\n(If you dont want to\nentertain bored ghosts)",icon:"ghost",choiceNumber:0,selected:"effectAnnounce",act:"effectAnnounce"}],label:"Normal Effects",tooltipPosition:"bottom"},{list:[{title:"Explosion Custom",icon:"bomb",choiceNumber:1,selected:"explosionChoice",act:"explosionCustom"},{title:"Adminbus Explosion\nWhat are they gonna do, ban you?",icon:"bomb",choiceNumber:2,selected:"explosionChoice",act:"explosionBus"},{divider:1},{title:"Custom Damage",icon:"skull",choiceNumber:1,selected:"damageChoice",act:"damageCustom"},{title:"Gib",icon:"skull-crossbones",choiceNumber:2,selected:"damageChoice",act:"damageGib"},{divider:1},{title:"Projectile Cloud",details:!0,icon:"cloud-meatball",soloSelected:"effectShrapnel",act:"effectShrapnel"},{title:"Stun",icon:"sun",soloSelected:"effectStun",act:"effectStun"},{title:"Delimb",icon:"socks",soloSelected:"effectLimb",act:"effectLimb"},{title:"Yeet Organs",icon:"book-dead",soloSelected:"effectOrgans",act:"effectOrgans"}],label:"Harmful Effects",tooltipPosition:"bottom"}],x=function(e,t){var n=(0,l.useBackend)(t),r=n.act,a=n.data,c=(0,l.useLocalState)(t,"tabPageIndex",1),i=c[0],u=c[1],s=a.mapRef,m=N[i].component();return(0,o.createComponentVNode)(2,d.Section,{title:"View",fill:!0,buttons:(0,o.createFragment)([!!a.customDropoff&&1===a.effectReverse&&(0,o.createComponentVNode)(2,d.Button,{inline:!0,color:"transparent",tooltip:"View Dropoff Location",icon:"arrow-circle-down",selected:2===i,onClick:function(){u(2),r("tabSwitch",{tabIndex:2})}}),(0,o.createComponentVNode)(2,d.Button,{inline:!0,color:"transparent",tooltip:"View Pod",icon:"rocket",selected:0===i,onClick:function(){u(0),r("tabSwitch",{tabIndex:0})}}),(0,o.createComponentVNode)(2,d.Button,{inline:!0,color:"transparent",tooltip:"View Source Bay",icon:"th",selected:1===i,onClick:function(){u(1),r("tabSwitch",{tabIndex:1})}}),(0,o.createVNode)(1,"span",null,"|",16,{style:p}),!!a.customDropoff&&1===a.effectReverse&&(0,o.createComponentVNode)(2,d.Button,{inline:!0,color:"transparent",icon:"lightbulb",selected:a.renderLighting,tooltip:"Render Lighting for the dropoff view",onClick:function(){r("renderLighting"),r("refreshView")}}),(0,o.createComponentVNode)(2,d.Button,{inline:!0,color:"transparent",icon:"sync-alt",tooltip:"Refresh view window in case it breaks",onClick:function(){u(i),r("refreshView")}})],0),children:(0,o.createComponentVNode)(2,d.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,d.Flex.Item,{m:.5,children:(0,o.createComponentVNode)(2,m)}),(0,o.createComponentVNode)(2,d.Flex.Item,{m:.5,grow:1,children:(0,o.createComponentVNode)(2,d.Section,{fill:!0,children:(0,o.createComponentVNode)(2,d.ByondUi,{fillPositionedParent:!0,params:{zoom:0,id:s,type:"map"}})})})]})})},B=function(e,t){return(0,o.createComponentVNode)(2,d.Box,{color:"label",children:["Note: You can right click on this",(0,o.createVNode)(1,"br"),"blueprint pod and edit vars directly"]})},_=function(e,t){var n=(0,l.useBackend)(t),r=n.act,a=n.data;n.config;return(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Button,{content:"Teleport",icon:"street-view",onClick:function(){return r("teleportCentcom")}}),(0,o.createComponentVNode)(2,d.Button,{content:a.oldArea?a.oldArea.substring(0,17):"Go Back",disabled:!a.oldArea,icon:"undo-alt",onClick:function(){return r("teleportBack")}})],4)},w=function(e,t){var n=(0,l.useBackend)(t),r=n.act,a=n.data;n.config,a.mapRef;return(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Button,{content:"Teleport",icon:"street-view",onClick:function(){return r("teleportDropoff")}}),(0,o.createComponentVNode)(2,d.Button,{content:a.oldArea?a.oldArea.substring(0,17):"Go Back",disabled:!a.oldArea,icon:"undo-alt",onClick:function(){return r("teleportBack")}})],4)},L=function(e,t){var n=(0,l.useBackend)(t),r=n.act,a=n.data,c=C(t),i=c[0],u=c[1];return(0,o.createComponentVNode)(2,d.Section,{fill:!0,width:"100%",children:(0,o.createComponentVNode)(2,d.Flex,{children:k.map((function(e,t){return(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Flex.Item,{children:[(0,o.createComponentVNode)(2,d.Box,{bold:!0,color:"label",mb:1,children:[1===i&&e.alt_label?e.alt_label:e.label,":"]}),(0,o.createComponentVNode)(2,d.Box,{children:e.list.map((function(t,n){return(0,o.createFragment)([t.divider&&(0,o.createVNode)(1,"span",null,(0,o.createVNode)(1,"b",null,"|",16),2,{style:p}),!t.divider&&(0,o.createComponentVNode)(2,d.Button,{tooltip:t.details&&a.effectShrapnel?t.title+"\n"+a.shrapnelType+"\nMagnitude:"+a.shrapnelMagnitude:t.title,tooltipPosition:e.tooltipPosition,tooltipOverrideLong:!0,icon:t.icon,content:t.content,selected:t.soloSelected?a[t.soloSelected]:a[t.selected]===t.choiceNumber,onClick:function(){return 0!==a.payload?r(t.act,t.payload):r(t.act)},style:{"vertical-align":"middle","margin-left":0!==n?"1px":"0px","margin-right":n!==e.list.length-1?"1px":"0px","border-radius":"5px"}})],0,n)}))})]}),t=g.length-2?t%2==1?"top-left":"top-right":t%2==1?"bottom-left":"bottom-right",tooltip:e.title,style:{"vertical-align":"middle","margin-right":"5px","border-radius":"20px"},selected:c.styleChoice-1===t,onClick:function(){return r("setStyle",{style:t})},children:(0,o.createComponentVNode)(2,d.Box,{className:(0,a.classes)(["supplypods64x64","pod_asset"+(t+1)]),style:{transform:"rotate(45deg) translate(-25%,-10%)","pointer-events":"none"}})},t)}))})},A=function(e,t){var n=(0,l.useBackend)(t),r=n.act,a=n.data;C(t)[0];return(0,o.createComponentVNode)(2,d.Section,{fill:!0,title:"Bay",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Button,{icon:"trash",color:"transparent",tooltip:"Clears everything\nfrom the selected bay",tooltipOverrideLong:!0,tooltipPosition:"bottom-right",onClick:function(){return r("clearBay")}}),(0,o.createComponentVNode)(2,d.Button,{icon:"question",color:"transparent",tooltip:'Each option corresponds\nto an area on centcom.\nLaunched pods will\nbe filled with items\nin these areas according\nto the "Load from Bay"\noptions at the top left.',tooltipOverrideLong:!0,tooltipPosition:"bottom-right"})],4),children:v.map((function(e,t){return(0,o.createComponentVNode)(2,d.Button,{content:e.title,tooltipPosition:"bottom-right",selected:a.bayNumber===""+(t+1),onClick:function(){return r("switchBay",{bayNumber:""+(t+1)})}},t)}))})},P=function(e,t){var n=(0,l.useBackend)(t),a=n.act,c=n.data;return(0,o.createComponentVNode)(2,d.Section,{fill:!0,title:"Delay",buttons:(0,o.createComponentVNode)(2,d.Button,{icon:"undo",color:"transparent",tooltip:"Reset all pod\ntimings/delays",tooltipOverrideLong:!0,tooltipPosition:"bottom-right",onClick:function(){return a("resetTiming")}}),children:(0,o.createComponentVNode)(2,d.LabeledControls,{wrap:!0,children:b.map((function(e,t){return(0,o.createComponentVNode)(2,d.LabeledControls.Item,{label:e.title,children:(0,o.createComponentVNode)(2,d.Knob,{inline:!0,step:.02,value:c["delay_"+(t+1)]/10,unclamped:!0,minValue:0,unit:"s",format:function(e){return(0,r.toFixed)(e,2)},maxValue:10,color:c["delay_"+(t+1)]/10>10?"orange":"default",onDrag:function(e,n){a("editTiming",{timer:t+1,value:Math.max(n,0)})}})},t)}))})})},R=function(e,t){var n=(0,l.useBackend)(t),r=n.act,a=n.data;return(0,o.createComponentVNode)(2,d.Section,{fill:!0,title:"Sounds",buttons:(0,o.createComponentVNode)(2,d.Button,{icon:"volume-up",color:"transparent",selected:a.soundVolume!==a.defaultSoundVolume,tooltip:"Sound Volume:"+a.soundVolume,tooltipOverrideLong:!0,onClick:function(){return r("soundVolume")}}),children:f.map((function(e,t){return(0,o.createComponentVNode)(2,d.Button,{content:e.title,tooltip:e.tooltip,tooltipPosition:"top-right",tooltipOverrideLong:!0,selected:a[e.act],onClick:function(){return r(e.act)}},t)}))})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemAcclimator=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ChemAcclimator=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:320,height:271,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Acclimator",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:[l.chem_temp," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.target_temperature,unit:"K",width:"59px",minValue:0,maxValue:1e3,step:5,stepPixelSize:2,onChange:function(e,t){return i("set_target_temperature",{temperature:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Acceptable Temp. Difference",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.allowed_temperature_difference,unit:"K",width:"59px",minValue:1,maxValue:l.target_temperature,stepPixelSize:2,onChange:function(e,t){i("set_allowed_temperature_difference",{temperature:t})}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:l.enabled?"On":"Off",selected:l.enabled,onClick:function(){return i("toggle_power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.max_volume,unit:"u",width:"50px",minValue:l.reagent_volume,maxValue:200,step:2,stepPixelSize:2,onChange:function(e,t){return i("change_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Operation",children:l.acclimate_state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current State",children:l.emptying?"Emptying":"Filling"})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDebugSynthesizer=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ChemDebugSynthesizer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.amount,u=l.beakerCurrentVolume,s=l.beakerMaxVolume,m=l.isBeakerLoaded,p=l.beakerContents,C=void 0===p?[]:p;return(0,o.createComponentVNode)(2,c.Window,{width:390,height:330,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Recipient",buttons:m?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return i("ejectBeaker")}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"u",minValue:1,maxValue:s,step:1,stepPixelSize:2,onChange:function(e,t){return i("amount",{amount:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Input",onClick:function(){return i("input")}})],4):(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Create Beaker",onClick:function(){return i("makecup")}}),children:m?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})," / "+s+" u"]}),C.length>0?(0,o.createComponentVNode)(2,a.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[e.volume," u"]},e.name)}))}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Recipient Empty"})],0):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Recipient"})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemDispenser=void 0;var o=n(0),r=n(9),a=n(19),c=n(2),i=n(1),l=n(3);t.ChemDispenser=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=!!u.recordingRecipe,m=Object.keys(u.recipes).map((function(e){return{name:e,contents:u.recipes[e]}})),p=u.beakerTransferAmounts||[],C=s&&Object.keys(u.recordingRecipe).map((function(e){return{id:e,name:(0,a.toTitleCase)(e.replace(/_/," ")),volume:u.recordingRecipe[e]}}))||u.beakerContents||[];return(0,o.createComponentVNode)(2,l.Window,{width:565,height:620,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:s&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,color:"red",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"circle",mr:1}),"Recording"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Energy",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:u.energy/u.maxEnergy,children:(0,r.toFixed)(u.energy)+" units"})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Recipes",buttons:(0,o.createFragment)([!s&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,children:(0,o.createComponentVNode)(2,i.Button,{color:"transparent",content:"Clear recipes",onClick:function(){return d("clear_recipes")}})}),!s&&(0,o.createComponentVNode)(2,i.Button,{icon:"circle",disabled:!u.isBeakerLoaded,content:"Record",onClick:function(){return d("record_recipe")}}),s&&(0,o.createComponentVNode)(2,i.Button,{icon:"ban",color:"transparent",content:"Discard",onClick:function(){return d("cancel_recording")}}),s&&(0,o.createComponentVNode)(2,i.Button,{icon:"save",color:"green",content:"Save",onClick:function(){return d("save_recording")}})],0),children:(0,o.createComponentVNode)(2,i.Box,{mr:-1,children:[m.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",width:"129.5px",lineHeight:1.75,content:e.name,onClick:function(){return d("dispense_recipe",{recipe:e.name})}},e.name)})),0===m.length&&(0,o.createComponentVNode)(2,i.Box,{color:"light-gray",children:"No recipes."})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Dispense",buttons:p.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"plus",selected:e===u.amount,content:e,onClick:function(){return d("amount",{target:e})}},e)})),children:(0,o.createComponentVNode)(2,i.Box,{mr:-1,children:u.chemicals.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",width:"129.5px",lineHeight:1.75,content:e.title,onClick:function(){return d("dispense",{reagent:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:p.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"minus",disabled:s,content:e,onClick:function(){return d("remove",{amount:e})}},e)})),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Beaker",buttons:!!u.isBeakerLoaded&&(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",disabled:!u.isBeakerLoaded,onClick:function(){return d("eject")}}),children:(s?"Virtual beaker":u.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.AnimatedNumber,{initial:0,value:u.beakerCurrentVolume}),(0,o.createTextVNode)("/"),u.beakerMaxVolume,(0,o.createTextVNode)(" units")],0))||"No beaker"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Contents",children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",children:u.isBeakerLoaded||s?0===C.length&&"Nothing":"N/A"}),C.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{color:"label",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{initial:0,value:e.volume})," ","units of ",e.name]},e.name)}))]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemFilter=t.ChemFilterPane=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=function(e,t){var n=(0,r.useBackend)(t).act,c=e.title,i=e.list,l=e.reagentName,d=e.onReagentInput,u=c.toLowerCase();return(0,o.createComponentVNode)(2,a.Section,{title:c,minHeight:"240px",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Input,{placeholder:"Reagent",width:"140px",onInput:function(e,t){return d(t)}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",onClick:function(){return n("add",{which:u,name:l})}})],4),children:i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:e,onClick:function(){return n("remove",{which:u,reagent:e})}})],4,e)}))})};t.ChemFilterPane=i;t.ChemFilter=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data),d=l.left,u=void 0===d?[]:d,s=l.right,m=void 0===s?[]:s,p=(0,r.useLocalState)(t,"leftName",""),C=p[0],h=p[1],N=(0,r.useLocalState)(t,"rightName",""),V=N[0],b=N[1];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i,{title:"Left",list:u,reagentName:C,onReagentInput:function(e){return h(e)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i,{title:"Right",list:m,reagentName:V,onReagentInput:function(e){return b(e)}})})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemHeater=void 0;var o=n(0),r=n(9),a=n(2),c=n(1),i=n(3),l=n(205);t.ChemHeater=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=u.targetTemp,m=u.isActive,p=u.isBeakerLoaded,C=u.currentTemp,h=u.beakerCurrentVolume,N=u.beakerMaxVolume,V=u.beakerContents,b=void 0===V?[]:V;u.currentpH;return(0,o.createComponentVNode)(2,i.Window,{width:300,height:320,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"Thermostat",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return d("power")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,c.NumberInput,{width:"65px",unit:"K",step:10,stepPixelSize:3,value:(0,r.round)(s),minValue:0,maxValue:1e3,onDrag:function(e,t){return d("temperature",{target:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Reading",children:(0,o.createComponentVNode)(2,c.Box,{width:"60px",textAlign:"right",children:p&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:C,format:function(e){return(0,r.toFixed)(e)+" K"}})||"\u2014"})})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",buttons:!!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"label",mr:2,children:[h," / ",N," units,",u.currentpH," pH"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",onClick:function(){return d("eject")}})],4),children:(0,o.createComponentVNode)(2,l.BeakerContents,{beakerLoaded:p,beakerContents:b})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemMaster=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ChemMaster=function(e,t){var n=(0,r.useBackend)(t).data.screen;return(0,o.createComponentVNode)(2,c.Window,{width:465,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:"analyze"===n&&(0,o.createComponentVNode)(2,m)||(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,u=i.screen,p=i.beakerContents,C=void 0===p?[]:p,h=i.bufferContents,N=void 0===h?[]:h,V=i.beakerCurrentVolume,b=i.beakerMaxVolume,f=i.isBeakerLoaded,g=i.isPillBottleLoaded,v=i.pillBottleCurrentAmount,k=i.pillBottleMaxAmount;return"analyze"===u?(0,o.createComponentVNode)(2,m):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:!!i.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:V,initial:0})," / "+b+" units"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}})],4),children:[!f&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"No beaker loaded."}),!!f&&0===C.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Beaker is empty."}),(0,o.createComponentVNode)(2,l,{children:C.map((function(e){return(0,o.createComponentVNode)(2,d,{chemical:e,transferTo:"buffer"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Buffer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:1,children:"Mode:"}),(0,o.createComponentVNode)(2,a.Button,{color:i.mode?"good":"bad",icon:i.mode?"exchange-alt":"times",content:i.mode?"Transfer":"Destroy",onClick:function(){return c("toggleMode")}})],4),children:[0===N.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Buffer is empty."}),(0,o.createComponentVNode)(2,l,{children:N.map((function(e){return(0,o.createComponentVNode)(2,d,{chemical:e,transferTo:"beaker"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Packaging",children:(0,o.createComponentVNode)(2,s)}),!!g&&(0,o.createComponentVNode)(2,a.Section,{title:"Pill Bottle",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[v," / ",k," pills"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("ejectPillBottle")}})],4)})],0)},l=a.Table,d=function(e,t){var n=(0,r.useBackend)(t).act,c=e.chemical,i=e.transferTo;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.volume,initial:0})," units of "+c.name]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"1",onClick:function(){return n("transfer",{id:c.id,amount:1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"5",onClick:function(){return n("transfer",{id:c.id,amount:5,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"10",onClick:function(){return n("transfer",{id:c.id,amount:10,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"All",onClick:function(){return n("transfer",{id:c.id,amount:1e3,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"ellipsis-h",title:"Custom amount",onClick:function(){return n("transfer",{id:c.id,amount:-1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"question",title:"Analyze",onClick:function(){return n("analyze",{id:c.id})}})]})]},c.id)},u=function(e){var t=e.label,n=e.amountUnit,r=e.amount,c=e.onChangeAmount,i=e.onCreate,l=e.sideNote;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,children:[(0,o.createComponentVNode)(2,a.NumberInput,{width:"84px",unit:n,step:1,stepPixelSize:15,value:r,minValue:1,maxValue:10,onChange:c}),(0,o.createComponentVNode)(2,a.Button,{ml:1,content:"Create",onClick:i}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,ml:1,color:"label",children:l})]})},s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=(0,r.useSharedState)(t,"pillAmount",1),d=l[0],s=l[1],m=(0,r.useSharedState)(t,"patchAmount",1),p=m[0],C=m[1],h=(0,r.useSharedState)(t,"bottleAmount",1),N=h[0],V=h[1],b=(0,r.useSharedState)(t,"packAmount",1),f=b[0],g=b[1],v=(0,r.useSharedState)(t,"setvialAmount",1),k=v[0],x=v[1],B=(0,r.useSharedState)(t,"setdartAmount",1),_=B[0],w=B[1],L=i.condi,y=i.chosenPillStyle,S=i.pillStyles,I=void 0===S?[]:S;return(0,o.createComponentVNode)(2,a.LabeledList,{children:[!L&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill type",children:I.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"30px",selected:e.id===y,textAlign:"center",color:"transparent",onClick:function(){return c("pillStyle",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.className})},e.id)}))}),!L&&(0,o.createComponentVNode)(2,u,{label:"Pills",amount:d,amountUnit:"pills",sideNote:"max 50u",onChangeAmount:function(e,t){return s(t)},onCreate:function(){return c("create",{type:"pill",amount:d,volume:"auto"})}}),!L&&(0,o.createComponentVNode)(2,u,{label:"Patches",amount:p,amountUnit:"patches",sideNote:"max 40u",onChangeAmount:function(e,t){return C(t)},onCreate:function(){return c("create",{type:"patch",amount:p,volume:"auto"})}}),!L&&(0,o.createComponentVNode)(2,u,{label:"Bottles",amount:N,amountUnit:"bottles",sideNote:"max 30u",onChangeAmount:function(e,t){return V(t)},onCreate:function(){return c("create",{type:"bottle",amount:N,volume:"auto"})}}),!L&&(0,o.createComponentVNode)(2,u,{label:"Hypovials",amount:k,amountUnit:"vials",sideNote:"max 60u",onChangeAmount:function(e,t){return x(t)},onCreate:function(){return c("create",{type:"hypoVial",amount:k,volume:"auto"})}}),!L&&(0,o.createComponentVNode)(2,u,{label:"Smartdarts",amount:_,amountUnit:"darts",sideNote:"max 20u",onChangeAmount:function(e,t){return w(t)},onCreate:function(){return c("create",{type:"smartDart",amount:_,volume:"auto"})}}),!!L&&(0,o.createComponentVNode)(2,u,{label:"Packs",amount:f,amountUnit:"packs",sideNote:"max 10u",onChangeAmount:function(e,t){return g(t)},onCreate:function(){return c("create",{type:"condimentPack",amount:f,volume:"auto"})}}),!!L&&(0,o.createComponentVNode)(2,u,{label:"Bottles",amount:N,amountUnit:"bottles",sideNote:"max 50u",onChangeAmount:function(e,t){return V(t)},onCreate:function(){return c("create",{type:"condimentBottle",amount:N,volume:"auto"})}})]})},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.fermianalyze,d=i.analyzeVars;return(0,o.createComponentVNode)(2,a.Section,{title:"Analysis Results",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return c("goScreen",{screen:"home"})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",children:d.state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,a.ColorBox,{color:d.color,mr:1}),d.color]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:d.description}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Metabolization Rate",children:[d.metaRate," u/minute"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overdose Threshold",children:d.overD}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Addiction Threshold",children:d.addicD}),!!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Purity",children:d.purityF}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inverse Ratio",children:d.inverseRatioF}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Purity E",children:d.purityE}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Lower Optimal Temperature",children:d.minTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upper Optimal Temperature",children:d.maxTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Explosive Temperature",children:d.eTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"pH Peak",children:d.pHpeak})],4)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemPress=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ChemPress=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.current_volume,u=l.product_name,s=l.pill_style,m=l.pill_styles,p=void 0===m?[]:m,C=l.product,h=l.min_volume,N=l.max_volume;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:227,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Product",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Pills",checked:"pill"===C,onClick:function(){return i("change_product",{product:"pill"})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Patches",checked:"patch"===C,onClick:function(){return i("change_product",{product:"patch"})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Bottles",checked:"bottle"===C,onClick:function(){return i("change_product",{product:"bottle"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"u",width:"43px",minValue:h,maxValue:N,step:1,stepPixelSize:2,onChange:function(e,t){return i("change_current_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:u,placeholder:u,onChange:function(e,t){return i("change_product_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Box,{as:"span",children:C})]}),"pill"===C&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Style",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"30px",selected:e.id===s,textAlign:"center",color:"transparent",onClick:function(){return i("change_pill_style",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.class_name})},e.id)}))})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemReactionChamber=void 0;var o=n(0),r=n(14),a=n(6),c=n(2),i=n(1),l=n(3);t.ChemReactionChamber=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=(0,c.useLocalState)(t,"reagentName",""),m=s[0],p=s[1],C=(0,c.useLocalState)(t,"reagentQuantity",1),h=C[0],N=C[1],V=u.emptying,b=u.reagents||[];return(0,o.createComponentVNode)(2,l.Window,{width:250,height:225,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Reagents",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,color:V?"bad":"good",children:V?"Emptying":"Filling"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createVNode)(1,"tr","LabledList__row",[(0,o.createVNode)(1,"td","LabeledList__cell",(0,o.createComponentVNode)(2,i.Input,{fluid:!0,value:"",placeholder:"Reagent Name",onInput:function(e,t){return p(t)}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td",(0,a.classes)(["LabeledList__buttons","LabeledList__cell"]),[(0,o.createComponentVNode)(2,i.NumberInput,{value:h,minValue:1,maxValue:100,step:1,stepPixelSize:3,width:"39px",onDrag:function(e,t){return N(t)}}),(0,o.createComponentVNode)(2,i.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return d("add",{chem:m,amount:h})}})],4)],4),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:t,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"minus",color:"bad",onClick:function(){return d("remove",{chem:t})}}),children:e},t)}))(b)]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemSplitter=void 0;var o=n(0),r=n(9),a=n(2),c=n(1),i=n(3);t.ChemSplitter=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.straight,s=d.side,m=d.max_transfer;return(0,o.createComponentVNode)(2,i.Window,{width:220,height:105,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Straight",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:u,unit:"u",width:"55px",minValue:1,maxValue:m,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return l("set_amount",{target:"straight",amount:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Side",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:s,unit:"u",width:"55px",minValue:1,maxValue:m,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return l("set_amount",{target:"side",amount:t})}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ChemSynthesizer=void 0;var o=n(0),r=n(9),a=n(2),c=n(1),i=n(3);t.ChemSynthesizer=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.amount,s=d.current_reagent,m=d.chemicals,p=void 0===m?[]:m,C=d.possible_amounts,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,i.Window,{width:300,height:375,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Box,{children:h.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"plus",content:(0,r.toFixed)(e,0),selected:e===u,onClick:function(){return l("amount",{target:e})}},(0,r.toFixed)(e,0))}))}),(0,o.createComponentVNode)(2,c.Box,{mt:1,children:p.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"tint",content:e.title,width:"129px",selected:e.id===s,onClick:function(){return l("select",{reagent:e.id})}},e.id)}))})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CivCargoHoldTerminal=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.CivCargoHoldTerminal=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.pad,s=d.sending,m=d.status_report,p=d.id_inserted,C=d.id_bounty_info;d.id_bounty_value,d.id_bounty_num;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,width:500,height:375,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{color:p?"blue":"default",children:p?"Welcome valued employee.":"To begin, insert your ID into the console."}),(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Pad",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:u?"good":"bad",children:u?"Online":"Not Found"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cargo Report",children:m})]})}),(0,o.createComponentVNode)(2,i)]}),(0,o.createComponentVNode)(2,a.Flex.Item,{m:1,children:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"sync",content:"Check Contents",disabled:!u||!p,onClick:function(){return l("recalc")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:s?"times":"arrow-up",content:s?"Stop Sending":"Send Goods",selected:s,disabled:!u||!p,onClick:function(){return l(s?"stop":"send")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:C?"recycle":"pen",color:C?"green":"default",content:C?"Replace Bounty":"New Bounty",disabled:!p,onClick:function(){return l("bounty")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Eject",disabled:!p,onClick:function(){return l("eject")}})],4)})]})})})};var i=function(e,t){var n=(0,r.useBackend)(t).data,c=n.id_bounty_info,i=n.id_bounty_value,l=n.id_bounty_num;return(0,o.createComponentVNode)(2,a.Section,{title:"Bounty Info",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:c||"N/A, please add a new bounty."}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Quantity",children:c?l:"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Value",children:c?i:"N/A"})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ClockworkSlab=void 0;for(var o=n(0),r=n(2),a=n(14),c=n(1),i=n(3),l="",d=0;d=w,tooltip:e.tip,tooltipPosition:"left",onClick:function(){return d("recite",{script:e.type})},children:"Recite "+e.required})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,disabled:!e.quickbind,onClick:function(){return d("bind",{script:e.type})},children:["content=",e.bound?"Unbind "+e.bound:"Quickbind"]})})]},e.name)}))})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CodexGigas=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=["Dark","Hellish","Fallen","Fiery","Sinful","Blood","Fluffy"],l=["Lord","Prelate","Count","Viscount","Vizier","Elder","Adept"],d=["hal","ve","odr","neit","ci","quon","mya","folth","wren","geyr","hil","niet","twou","phi","coa"],u=["the Red","the Soulless","the Master","the Lord of all things","Jr."];t.CodexGigas=function(e,t){var n=(0,r.useBackend)(t),s=n.act,m=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:450,height:450,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[m.name,(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prefix",children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:1!==m.currentSection,onClick:function(){return s(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Title",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:m.currentSection>2,onClick:function(){return s(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:m.currentSection>4,onClick:function(){return s(e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suffix",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:4!==m.currentSection,onClick:function(){return s(" "+e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Submit",children:(0,o.createComponentVNode)(2,a.Button,{content:"Search",disabled:m.currentSection<4,onClick:function(){return s("search")}})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ComputerFabricator=void 0;var o=n(0),r=(n(19),n(2)),a=n(1),c=n(3);t.ComputerFabricator=function(e,t){var n=(0,r.useBackend)(t),s=n.act,m=n.data;return(0,o.createComponentVNode)(2,c.Window,{title:"Personal Computer Vendor",width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{italic:!0,fontSize:"20px",children:"Your perfect device, only three steps away..."}),0!==m.state&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mb:1,icon:"circle",content:"Clear Order",onClick:function(){return s("clean_order")}}),0===m.state&&(0,o.createComponentVNode)(2,i),1===m.state&&(0,o.createComponentVNode)(2,l),2===m.state&&(0,o.createComponentVNode)(2,d),3===m.state&&(0,o.createComponentVNode)(2,u)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 1",minHeight:"306px",children:[(0,o.createComponentVNode)(2,a.Box,{mt:5,bold:!0,textAlign:"center",fontSize:"40px",children:"Choose your Device"}),(0,o.createComponentVNode)(2,a.Box,{mt:3,children:(0,o.createComponentVNode)(2,a.Grid,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"laptop",content:"Laptop",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return c("pick_device",{pick:"1"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"tablet-alt",content:"Tablet",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return c("pick_device",{pick:"2"})}})})]})})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 2: Customize your device",minHeight:"282px",buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"good",children:[i.totalprice," cr"]}),children:[(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Battery:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to operate without external utility power\nsource. Advanced batteries increase battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Hard Drive:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Stores file on your device. Advanced drives can store more\nfiles, but use more power, shortening battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Network Card:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to wirelessly connect to stationwide NTNet\nnetwork. Basic cards are limited to on-station use, while\nadvanced cards can operate anywhere near the station, which\nincludes asteroid outposts",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Nano Printer:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A device that allows for various paperwork manipulations,\nsuch as, scanning of documents or printing new ones.\nThis device was certified EcoFriendlyPlus and is capable of\nrecycling existing paper for printing purposes.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_nanoprint,onClick:function(){return c("hw_nanoprint",{print:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_nanoprint,onClick:function(){return c("hw_nanoprint",{print:"1"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Secondary Card Reader:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Adds a secondary RFID card reader, for manipulating or\nreading from a second standard RFID card.\nPlease note that a primary card reader is necessary to\nallow the device to read your identification, but one\nis included in the base price.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_card,onClick:function(){return c("hw_card",{card:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_card,onClick:function(){return c("hw_card",{card:"1"})}})})]}),2!==i.devtype&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Processor Unit:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A component critical for your device's functionality.\nIt allows you to run programs from your hard drive.\nAdvanced CPUs use more power, but allow you to run\nmore programs on background at once.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_cpu,onClick:function(){return c("hw_cpu",{cpu:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_cpu,onClick:function(){return c("hw_cpu",{cpu:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Tesla Relay:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"An advanced wireless power relay that allows your device\nto connect to nearby area power controller to provide\nalternative power source. This component is currently\nunavailable on tablet computers due to size restrictions.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_tesla,onClick:function(){return c("hw_tesla",{tesla:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_tesla,onClick:function(){return c("hw_tesla",{tesla:"1"})}})})]})],4)]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:3,content:"Confirm Order",color:"good",textAlign:"center",fontSize:"18px",lineHeight:2,onClick:function(){return c("confirm_order")}})]})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 3: Payment",minHeight:"282px",children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,textAlign:"center",fontSize:"20px",children:"Your device is ready for fabrication..."}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:2,textAlign:"center",fontSize:"16px",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:"Please insert the required"})," ",(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:[i.totalprice," cr"]})]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:1,textAlign:"center",fontSize:"18px",children:"Current:"}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:.5,textAlign:"center",fontSize:"18px",color:i.credits>=i.totalprice?"good":"bad",children:[i.credits," cr"]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Purchase",disabled:i.credits=10&&e<20?c.COLORS.department.security:e>=20&&e<30?c.COLORS.department.medbay:e>=30&&e<40?c.COLORS.department.science:e>=40&&e<50?c.COLORS.department.engineering:e>=50&&e<60?c.COLORS.department.cargo:e>=200&&e<230?c.COLORS.department.centcom:c.COLORS.department.other},u=function(e){var t=e.type,n=e.value;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,width:2,color:c.COLORS.damageType[t],textAlign:"center",children:n})};t.CrewConsole=function(){return(0,o.createComponentVNode)(2,i.Window,{title:"Crew Monitor",width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{minHeight:"540px",children:(0,o.createComponentVNode)(2,s)})})})};var s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,s=i.sensors||[];return(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,textAlign:"center",children:"Vitals"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Position"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,children:"Tracking"})]}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:(C=e.ijob,C%10==0),color:d(e.ijob),children:[e.name," (",e.assignment,")"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,a.ColorBox,{color:(t=e.oxydam,n=e.toxdam,r=e.burndam,s=e.brutedam,m=t+n+r+s,p=Math.min(Math.max(Math.ceil(m/25),0),5),l[p])})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:null!==e.oxydam?(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,u,{type:"oxy",value:e.oxydam}),"/",(0,o.createComponentVNode)(2,u,{type:"toxin",value:e.toxdam}),"/",(0,o.createComponentVNode)(2,u,{type:"burn",value:e.burndam}),"/",(0,o.createComponentVNode)(2,u,{type:"brute",value:e.brutedam})]}):e.life_status?"Alive":"Dead"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:null!==e.pos_x?e.area:"N/A"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{content:"Track",disabled:!e.can_track,onClick:function(){return c("select_person",{name:e.name})}})})]},e.name);var t,n,r,s,m,p,C}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Cryo=void 0;var o=n(0),r=n(2),a=n(1),c=n(205),i=n(3),l=[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}];t.Cryo=function(){return(0,o.createComponentVNode)(2,i.Window,{width:400,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,d)})})};var d=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:d.occupant.name||"No Occupant"}),!!d.hasOccupant&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:d.occupant.statstate,children:d.occupant.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",color:d.occupant.temperaturestatus,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant.bodyTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.occupant.health/d.occupant.maxHealth,color:d.occupant.health>0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant.health})})}),l.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.occupant[e.type]/100,children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant[e.type]})})},e.id)}))],0)]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cell",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.isOperating?"power-off":"times",disabled:d.isOpen,onClick:function(){return i("power")},color:d.isOperating&&"green",children:d.isOperating?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.cellTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:[(0,o.createComponentVNode)(2,a.Button,{icon:d.isOpen?"unlock":"lock",onClick:function(){return i("door")},content:d.isOpen?"Open":"Closed"}),(0,o.createComponentVNode)(2,a.Button,{icon:d.autoEject?"sign-out-alt":"sign-in-alt",onClick:function(){return i("autoeject")},content:d.autoEject?"Auto":"Manual"})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!d.isBeakerLoaded,onClick:function(){return i("ejectbeaker")},content:"Eject"}),children:(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:d.isBeakerLoaded,beakerContents:d.beakerContents})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.DecalPainter=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.DecalPainter=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.decal_list||[],u=l.color_list||[],s=l.dir_list||[];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Decal Type",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,selected:e.decal===l.decal_style,onClick:function(){return i("select decal",{decals:e.decal})}},e.decal)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Color",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:"red"===e.colors?"Red":"white"===e.colors?"White":"Yellow",selected:e.colors===l.decal_color,onClick:function(){return i("select color",{colors:e.colors})}},e.colors)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Direction",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:1===e.dirs?"North":2===e.dirs?"South":4===e.dirs?"East":"West",selected:e.dirs===l.decal_direction,onClick:function(){return i("selected direction",{dirs:e.dirs})}},e.dirs)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DisposalUnit=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.DisposalUnit=function(e,t){var n,i,l=(0,r.useBackend)(t),d=l.act,u=l.data;return u.full_pressure?(n="good",i="Ready"):u.panel_open?(n="bad",i="Power Disabled"):u.pressure_charging?(n="average",i="Pressurizing"):(n="bad",i="Off"),(0,o.createComponentVNode)(2,c.Window,{width:300,height:180,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:n,children:i}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.per,color:"good"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Handle",children:(0,o.createComponentVNode)(2,a.Button,{icon:u.flush?"toggle-on":"toggle-off",disabled:u.isai||u.panel_open,content:u.flush?"Disengage":"Engage",onClick:function(){return d(u.flush?"handle-0":"handle-1")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Eject",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sign-out-alt",disabled:u.isai,content:"Eject Contents",onClick:function(){return d("eject")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",disabled:u.panel_open,selected:u.pressure_charging,onClick:function(){return d(u.pressure_charging?"pump-0":"pump-1")}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DnaConsoleCommands=t.DnaConsole=void 0;var o=n(0),r=n(14),a=n(30),c=n(6),i=n(19),l=n(63),d=n(2),u=n(1),s=n(3);var m=["A","T","C","G"],p={A:"green",T:"green",G:"blue",C:"blue",X:"grey"},C={1:"good",2:"bad",4:"average"},h=function(e,t){return e.Alias===t.Alias&&e.AppliedChromo===t.AppliedChromo};t.DnaConsole=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=(n.act,r.isPulsingRads),c=r.radPulseSeconds,i=r.view.consoleMode;return(0,o.createComponentVNode)(2,s.Window,{title:"DNA Console",width:539,height:710,resizable:!0,children:[!!a&&(0,o.createComponentVNode)(2,u.Dimmer,{fontSize:"14px",textAlign:"center",children:[(0,o.createComponentVNode)(2,u.Icon,{mr:1,name:"spinner",spin:!0}),"Radiation pulse in progress...",(0,o.createComponentVNode)(2,u.Box,{mt:1}),c,"s"]}),(0,o.createComponentVNode)(2,s.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,N),(0,o.createComponentVNode)(2,g),"storage"===i&&(0,o.createComponentVNode)(2,k),"sequencer"===i&&(0,o.createComponentVNode)(2,L),"enzymes"===i&&(0,o.createComponentVNode)(2,T)]})]})};var N=function(e,t){return(0,o.createComponentVNode)(2,u.Section,{title:"DNA Scanner",buttons:(0,o.createComponentVNode)(2,V),children:(0,o.createComponentVNode)(2,f)})},V=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDelayedAction,i=r.isPulsingRads,l=r.isScannerConnected,s=r.isScrambleReady,m=r.isViableSubject,p=r.scannerLocked,C=r.scannerOpen,h=r.scrambleSeconds;return l?(0,o.createFragment)([!!c&&(0,o.createComponentVNode)(2,u.Button,{content:"Cancel Delayed Action",onClick:function(){return a("cancel_delay")}}),!!m&&(0,o.createComponentVNode)(2,u.Button,{disabled:!s||i,onClick:function(){return a("scramble_dna")},children:["Scramble DNA",!s&&" ("+h+"s)"]}),(0,o.createComponentVNode)(2,u.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,u.Button,{icon:p?"lock":"lock-open",color:p&&"bad",disabled:C,content:p?"Locked":"Unlocked",onClick:function(){return a("toggle_lock")}}),(0,o.createComponentVNode)(2,u.Button,{disabled:p,content:C?"Close":"Open",onClick:function(){return a("toggle_door")}})],0):(0,o.createComponentVNode)(2,u.Button,{content:"Connect Scanner",onClick:function(){return a("connect_scanner")}})},b=function(e,t){var n=e.status;return 0===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"good",children:"Conscious"}):2===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"average",children:"Unconscious"}):1===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"average",children:"Critical"}):3===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"bad",children:"Dead"}):4===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"bad",children:"Transforming"}):(0,o.createComponentVNode)(2,u.Box,{inline:!0,children:"Unknown"})},f=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=(n.act,r.subjectName),c=r.isScannerConnected,i=r.isViableSubject,l=r.subjectHealth,s=r.subjectRads,m=r.subjectStatus;return c?i?(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Status",children:[a,(0,o.createComponentVNode)(2,u.Icon,{mx:1,color:"label",name:"long-arrow-alt-right"}),(0,o.createComponentVNode)(2,b,{status:m})]}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,u.ProgressBar,{value:l,minValue:0,maxValue:100,ranges:{olive:[101,Infinity],good:[70,101],average:[30,70],bad:[-Infinity,30]},children:[l,"%"]})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Radiation",children:(0,o.createComponentVNode)(2,u.ProgressBar,{value:s,minValue:0,maxValue:100,ranges:{bad:[71,Infinity],average:[30,71],good:[0,30],olive:[-Infinity,0]},children:[s,"%"]})})]}):(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"No viable subject found in DNA Scanner."}):(0,o.createComponentVNode)(2,u.Box,{color:"bad",children:"DNA Scanner is not connected."})},g=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDisk,i=r.isInjectorReady,l=r.injectorSeconds,s=r.view.consoleMode;return(0,o.createComponentVNode)(2,u.Section,{title:"DNA Console",buttons:!i&&(0,o.createComponentVNode)(2,u.Box,{lineHeight:"20px",color:"label",children:["Injector on cooldown (",l,"s)"]}),children:(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,u.Button,{content:"Storage",selected:"storage"===s,onClick:function(){return a("set_view",{consoleMode:"storage"})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Sequencer",disabled:!r.isViableSubject,selected:"sequencer"===s,onClick:function(){return a("set_view",{consoleMode:"sequencer"})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Enzymes",selected:"enzymes"===s,onClick:function(){return a("set_view",{consoleMode:"enzymes"})}})]}),!!c&&(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Disk",children:(0,o.createComponentVNode)(2,u.Button,{icon:"eject",content:"Eject",onClick:function(){a("eject_disk"),a("set_view",{storageMode:"console"})}})})]})})};t.DnaConsoleCommands=g;var v=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDisk,i=r.view,l=i.storageMode,s=i.storageConsSubMode,m=i.storageDiskSubMode;return(0,o.createFragment)(["console"===l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Button,{selected:"mutations"===s,content:"Mutations",onClick:function(){return a("set_view",{storageConsSubMode:"mutations"})}}),(0,o.createComponentVNode)(2,u.Button,{selected:"chromosomes"===s,content:"Chromosomes",onClick:function(){return a("set_view",{storageConsSubMode:"chromosomes"})}})],4),"disk"===l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Button,{selected:"mutations"===m,content:"Mutations",onClick:function(){return a("set_view",{storageDiskSubMode:"mutations"})}}),(0,o.createComponentVNode)(2,u.Button,{selected:"diskenzymes"===m,content:"Enzymes",onClick:function(){return a("set_view",{storageDiskSubMode:"diskenzymes"})}})],4),(0,o.createComponentVNode)(2,u.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,u.Button,{content:"Console",selected:"console"===l,onClick:function(){return a("set_view",{storageMode:"console",storageConsSubMode:"mutations"})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Disk",disabled:!c,selected:"disk"===l,onClick:function(){return a("set_view",{storageMode:"disk",storageDiskSubMode:"mutations"})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Adv. Injector",selected:"injector"===l,onClick:function(){return a("set_view",{storageMode:"injector"})}})],0)},k=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.view,i=c.storageMode,l=c.storageConsSubMode,s=c.storageDiskSubMode,m=r.diskMakeupBuffer,p=r.diskHasMakeup,C=r.storage[i];return(0,o.createComponentVNode)(2,u.Section,{title:"Storage",buttons:(0,o.createComponentVNode)(2,v),children:["console"===i&&"mutations"===l&&(0,o.createComponentVNode)(2,x,{mutations:C}),"console"===i&&"chromosomes"===l&&(0,o.createComponentVNode)(2,B),"disk"===i&&"mutations"===s&&(0,o.createComponentVNode)(2,x,{mutations:C}),"disk"===i&&"diskenzymes"===s&&(0,o.createFragment)([(0,o.createComponentVNode)(2,M,{makeup:m}),(0,o.createComponentVNode)(2,u.Button,{icon:"times",color:"red",disabled:!p,content:"Delete",onClick:function(){return a("del_makeup_disk")}})],4),"injector"===i&&(0,o.createComponentVNode)(2,j)]})},x=function(e,t){var n=e.customMode,r=void 0===n?"":n,a=(0,d.useBackend)(t),c=a.data,l=a.act,s=e.mutations||[],m=c.view.storageMode+r,p=c.view["storage"+m+"MutationRef"],C=s.find((function(e){return e.ByondRef===p}));return!C&&s.length>0&&(C=s[0],p=C.ByondRef),(0,o.createComponentVNode)(2,u.Flex,{children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:"140px",children:(0,o.createComponentVNode)(2,u.Section,{title:(0,i.capitalize)(c.view.storageMode)+" Storage",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,u.Button,{fluid:!0,ellipsis:!0,color:"transparent",selected:e.ByondRef===p,content:e.Name,onClick:function(){var t;return l("set_view",((t={})["storage"+m+"MutationRef"]=e.ByondRef,t))}},e.ByondRef)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{children:(0,o.createComponentVNode)(2,u.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Mutation Info",level:2,children:(0,o.createComponentVNode)(2,_,{mutation:C})})})]})},B=function(e,t){var n,a=(0,d.useBackend)(t),c=a.data,i=a.act,l=null!=(n=c.chromoStorage)?n:[],s=(0,r.uniqBy)((function(e){return e.Name}))(l),m=c.view.storageChromoName,p=l.find((function(e){return e.Name===m}));return(0,o.createComponentVNode)(2,u.Flex,{children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:"140px",children:(0,o.createComponentVNode)(2,u.Section,{title:"Console Storage",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,u.Button,{fluid:!0,ellipsis:!0,color:"transparent",selected:e.Name===m,content:e.Name,onClick:function(){return i("set_view",{storageChromoName:e.Name})}},e.Index)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{children:(0,o.createComponentVNode)(2,u.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Chromosome Info",level:2,children:!p&&(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"Nothing to show."})||(0,o.createFragment)([(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:p.Name}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Description",children:p.Description}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Amount",children:l.filter((function(e){return e.Name===p.Name})).length})]}),(0,o.createComponentVNode)(2,u.Button,{mt:2,icon:"eject",content:"Eject Chromosome",onClick:function(){return i("eject_chromo",{chromo:p.Name})}})],4)})})]})},_=function(e,t){var n,c,i,l=e.mutation,s=(0,d.useBackend)(t),m=s.data,p=s.act,N=m.diskCapacity,V=m.diskReadOnly,b=m.hasDisk,f=m.isInjectorReady,g=null!=(n=m.storage.disk)?n:[],v=null!=(c=m.storage.console)?c:[],k=null!=(i=m.storage.injector)?i:[];if(!l)return(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"Nothing to show."});if("occupant"===l.Source&&!l.Discovered)return(0,o.createComponentVNode)(2,u.LabeledList,{children:(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:l.Alias})});var x=v.find((function(e){return h(e,l)})),B=g.find((function(e){return h(e,l)})),_=(0,a.flow)([(0,r.uniqBy)((function(e){return e.Name})),(0,r.filter)((function(e){return e.Name!==l.Name}))])([].concat(g,v));return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:C[l.Quality],children:l.Name})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Description",children:l.Description}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Instability",children:l.Instability})]}),(0,o.createComponentVNode)(2,u.Divider),(0,o.createComponentVNode)(2,u.Box,{children:["disk"===l.Source&&(0,o.createComponentVNode)(2,W,{disabled:!b||N<=0||V,mutations:_,source:l}),"console"===l.Source&&(0,o.createComponentVNode)(2,W,{mutations:_,source:l}),["occupant","disk","console"].includes(l.Source)&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:k.map((function(e){return e.name})),disabled:0===k.length||!l.Active,selected:"Add to advanced injector",onSelected:function(e){return p("add_advinj_mut",{mutref:l.ByondRef,advinj:e,source:l.Source})}}),(0,o.createComponentVNode)(2,u.Button,{icon:"syringe",disabled:!f||!l.Active,content:"Print Activator",onClick:function(){return p("print_injector",{mutref:l.ByondRef,is_activator:1,source:l.Source})}}),(0,o.createComponentVNode)(2,u.Button,{icon:"syringe",disabled:!f||!l.Active,content:"Print Mutator",onClick:function(){return p("print_injector",{mutref:l.ByondRef,is_activator:0,source:l.Source})}})],4)]}),["disk","occupant"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"save",disabled:x||!l.Active,content:"Save to Console",onClick:function(){return p("save_console",{mutref:l.ByondRef,source:l.Source})}}),["console","occupant"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"save",disabled:B||!b||N<=0||V||!l.Active,content:"Save to Disk",onClick:function(){return p("save_disk",{mutref:l.ByondRef,source:l.Source})}}),["console","disk","injector"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"times",color:"red",content:"Delete from "+l.Source,onClick:function(){return p("delete_"+l.Source+"_mut",{mutref:l.ByondRef})}}),(2===l.Class||!!l.Scrambled&&"occupant"===l.Source)&&(0,o.createComponentVNode)(2,u.Button,{content:"Nullify",onClick:function(){return p("nullify",{mutref:l.ByondRef})}}),(0,o.createComponentVNode)(2,u.Divider),(0,o.createComponentVNode)(2,w,{disabled:"occupant"!==l.Source,mutation:l})],0)},w=function(e,t){var n=e.mutation,r=e.disabled,a=(0,d.useBackend)(t),c=(a.data,a.act);return 0===n.CanChromo?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"No compatible chromosomes"}):1===n.CanChromo?r?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"No chromosome applied."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:n.ValidStoredChromos,disabled:0===n.ValidStoredChromos.length,selected:0===n.ValidStoredChromos.length?"No Suitable Chromosomes":"Select a chromosome",onSelected:function(e){return c("apply_chromo",{chromo:e,mutref:n.ByondRef})}}),(0,o.createComponentVNode)(2,u.Box,{color:"label",mt:1,children:["Compatible with: ",n.ValidChromos]})],4):2===n.CanChromo?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:["Applied chromosome: ",n.AppliedChromo]}):null},L=function(e,t){var n,r,a=(0,d.useBackend)(t),c=a.data,i=a.act,s=null!=(n=null==(r=c.storage)?void 0:r.occupant)?n:[],m=c.isJokerReady,p=c.isMonkey,C=c.jokerSeconds,h=c.subjectStatus,N=c.view,V=N.sequencerMutation,b=N.jokerActive,f=s.find((function(e){return e.Alias===V}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Flex,{spacing:1,mb:1,children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:s.length<=8?"154px":"174px",children:(0,o.createComponentVNode)(2,u.Section,{title:"Sequences",height:"214px",overflowY:s.length>8&&"scroll",children:s.map((function(e){return(0,o.createComponentVNode)(2,y,{url:(0,l.resolveAsset)(e.Image),selected:e.Alias===V,onClick:function(){i("set_view",{sequencerMutation:e.Alias}),i("check_discovery",{alias:e.Alias})}},e.Alias)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Sequence Info",minHeight:"100%",children:(0,o.createComponentVNode)(2,_,{mutation:f})})})]}),3===h&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: DECEASED."})||p&&"Monkified"!==(null==f?void 0:f.Name)&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: MONKEY."})||4===h&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: TRANSFORMING."})||(0,o.createComponentVNode)(2,u.Section,{title:"Genome Sequencer\u2122",buttons:!m&&(0,o.createComponentVNode)(2,u.Box,{lineHeight:"20px",color:"label",children:["Joker on cooldown (",C,"s)"]})||b&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Box,{mr:1,inline:!0,color:"label",children:"Click on a gene to reveal it."}),(0,o.createComponentVNode)(2,u.Button,{content:"Cancel Joker",onClick:function(){return i("set_view",{jokerActive:""})}})],4)||(0,o.createComponentVNode)(2,u.Button,{icon:"crown",color:"purple",content:"Use Joker",onClick:function(){return i("set_view",{jokerActive:"1"})}}),children:(0,o.createComponentVNode)(2,I,{mutation:f})})],0)},y=function(e,t){var n,r=e.url,a=e.selected,c=e.onClick;return a&&(n="2px solid #22aa00"),(0,o.createComponentVNode)(2,u.Box,{as:"img",src:r,style:{width:"64px",margin:"2px","margin-left":"4px",outline:n},onClick:c})},S=function(e,t){var n=e.gene,r=e.onChange,a=e.disabled,c=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,["gene","onChange","disabled"]),i=m.length,l=m.indexOf(n),d=a&&p.X||p[n];return(0,o.normalizeProps)((0,o.createComponentVNode)(2,u.Button,Object.assign({},c,{color:d,onClick:function(e){if(e.preventDefault(),r)if(-1!==l){var t=m[(l+1)%i];r(e,t)}else r(e,m[0])},oncontextmenu:function(e){if(e.preventDefault(),r)if(-1!==l){var t=m[(l-1+i)%i];r(e,t)}else r(e,m[i-1])},children:n})))},I=function(e,t){var n=e.mutation,r=(0,d.useBackend)(t),a=r.data,i=r.act,l=a.view.jokerActive;if(!n)return(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"No genome selected for sequencing."});if(n.Scrambled)return(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"Sequence unreadable due to unpredictable mutation."});for(var s=n.Sequence,m=n.DefaultSeq,p=[],C=function(e){var t=s.charAt(e),r=(0,o.createComponentVNode)(2,S,{width:"22px",textAlign:"center",disabled:!!n.Scrambled||1!==n.Class,className:"X"===(null==m?void 0:m.charAt(e))&&!n.Active&&(0,c.classes)(["outline-solid","outline-color-orange"]),gene:t,onChange:function(t,o){if(!t.ctrlKey)return l?(i("pulse_gene",{pos:e+1,gene:"J",alias:n.Alias}),void i("set_view",{jokerActive:""})):void i("pulse_gene",{pos:e+1,gene:o,alias:n.Alias});i("pulse_gene",{pos:e+1,gene:"X",alias:n.Alias})}});p.push(r)},h=0;h=3){var r=(0,o.createComponentVNode)(2,u.Box,{inline:!0,width:"22px",mx:"1px",children:s});l.push(r),s=[]}},p=0;p=i,onCommit:function(e,t){return a("new_adv_inj",{name:t})}})})]})},W=function(e,t){var n=e.mutations,r=void 0===n?[]:n,a=e.source,c=(0,d.useBackend)(t),i=c.act;c.data;return(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:r.map((function(e){return e.Name})),disabled:0===r.length,selected:"Combine mutations",onSelected:function(e){return i("combine_"+a.Source,{firstref:(t=e,null==(n=r.find((function(e){return e.Name===t})))?void 0:n.ByondRef),secondref:a.ByondRef});var t,n}},a.ByondRef)}},function(e,t,n){"use strict";t.__esModule=!0,t.DnaVault=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.DnaVault=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.completed,u=l.used,s=l.choiceA,m=l.choiceB,p=l.dna,C=l.dna_max,h=l.plants,N=l.plants_max,V=l.animals,b=l.animals_max;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"DNA Vault Database",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Human DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:p/C,children:p+" / "+C+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Plant DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h/N,children:h+" / "+N+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Animal DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:V/V,children:V+" / "+b+" Samples"})})]})}),!(!d||u)&&(0,o.createComponentVNode)(2,a.Section,{title:"Personal Gene Therapy",children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",mb:1,children:"Applicable Gene Therapy Treatments"}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:s,textAlign:"center",onClick:function(){return i("gene",{choice:s})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:m,textAlign:"center",onClick:function(){return i("gene",{choice:m})}})})]})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.EightBallVote=void 0;var o=n(0),r=n(2),a=n(1),c=n(19),i=n(3);t.EightBallVote=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.shaking);return(0,o.createComponentVNode)(2,i.Window,{width:400,height:600,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No question is currently being asked."})||(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.question,u=l.answers,s=void 0===u?[]:u;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",m:1,children:['"',d,'"']}),(0,o.createComponentVNode)(2,a.Grid,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:(0,c.toTitleCase)(e.answer),selected:e.selected,fontSize:"16px",lineHeight:"24px",textAlign:"center",mb:1,onClick:function(){return i("vote",{answer:e.answer})}}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"30px",children:e.amount})]},e.answer)}))})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Electrolyzer=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Electrolyzer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!l.hasPowercell||!l.open,onClick:function(){return i("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,disabled:!l.hasPowercell,onClick:function(){return i("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!l.hasPowercell&&"bad",children:l.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.powerLevel/100,content:l.powerLevel+"%",ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]}})||"None"})})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Electropack=void 0;var o=n(0),r=n(9),a=n(2),c=n(1),i=n(3);t.Electropack=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.power,s=d.code,m=d.frequency,p=d.minFrequency,C=d.maxFrequency;return(0,o.createComponentVNode)(2,i.Window,{width:260,height:137,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Frequency",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"freq"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:p/10,maxValue:C/10,value:m/10,format:function(e){return(0,r.toFixed)(e,1)},width:"80px",onDrag:function(e,t){return l("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Code",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"code"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:s,width:"80px",onDrag:function(e,t){return l("code",{code:t})}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.EmergencyShuttleConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.EmergencyShuttleConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.timer_str,u=l.enabled,s=l.emagged,m=l.engines_started,p=l.authorizations_remaining,C=l.authorizations,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:350,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"40px",textAlign:"center",fontFamily:"monospace",children:d}),(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",fontSize:"16px",mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:"ENGINES:"}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:m?"good":"average",ml:1,children:m?"Online":"Idle"})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Early Launch Authorization",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Repeal All",color:"bad",disabled:!u,onClick:function(){return i("abort")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"exclamation-triangle",color:"good",content:"AUTHORIZE",disabled:!u,onClick:function(){return i("authorize")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:"REPEAL",disabled:!u,onClick:function(){return i("repeal")}})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Authorizations",level:3,minHeight:"150px",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:s?"bad":"good",children:s?"ERROR":"Remaining: "+p}),children:h.length>0?h.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"16px",className:"candystripe",children:[e.name," (",e.job,")"]},e.name)})):(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",color:"average",children:"No Active Authorizations"})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.EngravedMessage=void 0;var o=n(0),r=n(19),a=n(2),c=n(1),i=n(3);t.EngravedMessage=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.admin_mode,s=d.creator_key,m=d.creator_name,p=d.has_liked,C=d.has_disliked,h=d.hidden_message,N=d.is_creator,V=d.num_likes,b=d.num_dislikes,f=d.realdate;return(0,o.createComponentVNode)(2,i.Window,{width:600,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Box,{bold:!0,textAlign:"center",fontSize:"20px",mb:2,children:(0,r.decodeHtmlEntities)(h)}),(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"arrow-up",content:" "+V,disabled:N,selected:p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("like")}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"circle",disabled:N,selected:!C&&!p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("neutral")}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"arrow-down",content:" "+b,disabled:N,selected:C,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("dislike")}})})]})]}),(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Created On",children:f})})}),(0,o.createComponentVNode)(2,c.Section),!!u&&(0,o.createComponentVNode)(2,c.Section,{title:"Admin Panel",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Delete",color:"bad",onClick:function(){return l("delete")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Creator Ckey",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Creator Character Name",children:m})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ExosuitControlConsole=void 0;var o=n(0),r=n(9),a=n(2),c=n(1),i=n(3);t.ExosuitControlConsole=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data.mechs,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.Window,{width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[0===u.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No exosuits detected"}),u.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"envelope",content:"Send Message",disabled:!e.pilot,onClick:function(){return l("send_message",{tracker_ref:e.tracker_ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"wifi",content:e.emp_recharging?"Recharging...":"EMP Burst",color:"bad",disabled:e.emp_recharging,onClick:function(){return l("shock",{tracker_ref:e.tracker_ref})}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.integrity<=30?"bad":e.integrity<=70&&"average")||"good",children:[e.integrity,"%"]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.charge<=30?"bad":e.charge<=70&&"average")||"good",children:"number"==typeof e.charge&&e.charge+"%"||"Not Found"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Airtank",children:"number"==typeof e.airtank&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:e.airtank,format:function(e){return(0,r.toFixed)(e,2)+" kPa"}})||"Not Equipped"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pilot",children:e.pilot||"None"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Location",children:e.location||"Unknown"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Active Equipment",children:e.active_equipment||"None"}),e.cargo_space>=0&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Used Cargo Space",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.cargo_space<=30?"good":e.cargo_space<=70&&"average")||"bad",children:[e.cargo_space,"%"]})})]})},e.tracker_ref)}))]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ExosuitFabricator=void 0;var o,r=n(0),a=n(6),c=n(14),i=n(2),l=n(39),d=n(1),u=n(3),s=n(19);function m(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return p(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);nn?{color:2,deficit:e-n}:t>n?{color:1,deficit:e}:e+t>n?{color:1,deficit:e+t-n}:{color:0,deficit:0}},V=function(e,t,n){var o={textColor:0};return Object.keys(n.cost).forEach((function(r){o[r]=N(n.cost[r],t[r],e[r]),o[r].color>o.textColor&&(o.textColor=o[r].color)})),o};t.ExosuitFabricator=function(e,t){var n,o,a=(0,i.useBackend)(t),c=a.act,l=a.data,s=l.queue||[],m=(n=l.materials||[],o={},n.forEach((function(e){o[e.name]=e.amount})),o),p=function(e,t){var n={},o={},r={},a={};return t.forEach((function(t,c){a[c]=0,Object.keys(t.cost).forEach((function(i){n[i]=n[i]||0,r[i]=r[i]||0,o[i]=N(t.cost[i],n[i],e[i]),0!==o[i].color?a[c]1&&l=0&&m+"s"||"Dispensing..."})]})})})}}},function(e,t,n){"use strict";t.__esModule=!0,t.ForbiddenLore=void 0;var o=n(0),r=n(14),a=n(30),c=n(2),i=n(1),l=n(3);t.ForbiddenLore=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.charges,m=(0,a.flow)([(0,r.sortBy)((function(e){return"Research"!==e.state}),(function(e){return"Side"===e.path}))])(u.to_know||[]);return(0,o.createComponentVNode)(2,l.Window,{width:500,height:900,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Research Eldritch Knowledge",children:["Charges left : ",s,null!==m?m.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,my:1,children:[e.path," path"]}),(0,o.createComponentVNode)(2,i.Box,{my:1,children:[(0,o.createComponentVNode)(2,i.Button,{content:e.state,disabled:e.disabled,onClick:function(){return d("research",{name:e.name,cost:e.cost})}})," ","Cost : ",e.cost]}),(0,o.createComponentVNode)(2,i.Box,{italic:!0,my:1,children:e.flavour}),(0,o.createComponentVNode)(2,i.Box,{my:1,children:e.desc})]},e.name)})):(0,o.createComponentVNode)(2,i.Box,{children:"No more knowledge can be found"})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Gateway=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Gateway=function(){return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.gateway_present,d=void 0!==l&&l,u=i.gateway_status,s=void 0!==u&&u,m=i.current_target,p=void 0===m?null:m,C=i.destinations,h=void 0===C?[]:C;return d?p?(0,o.createComponentVNode)(2,a.Section,{title:p.name,children:[(0,o.createComponentVNode)(2,a.Icon,{name:"rainbow",size:4,color:"green"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("deactivate")},children:"Deactivate"})]}):h.length?(0,o.createFragment)([!s&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Gateway Unpowered"}),h.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:e.available&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("activate",{destination:e.ref})},children:"Activate"})||(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{m:1,textColor:"bad",children:e.reason}),!!e.timeout&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:e.timeout,children:"Calibrating..."})],0)},e.ref)}))],0):(0,o.createComponentVNode)(2,a.Section,{children:"No gateway nodes detected."}):(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No linked gateway"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("linkup")},children:"Linkup"})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.GhostPoolProtection=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.GhostPoolProtection=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.events_or_midrounds,u=l.spawners,s=l.station_sentience,m=l.silicons,p=l.minigames;return(0,o.createComponentVNode)(2,c.Window,{title:"Ghost Pool Protection",width:400,height:270,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Flex,{grow:1,height:"100%",children:(0,o.createComponentVNode)(2,a.Section,{title:"Options",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{color:"good",icon:"plus-circle",content:"Enable Everything",onClick:function(){return i("all_roles")}}),(0,o.createComponentVNode)(2,a.Button,{color:"bad",icon:"minus-circle",content:"Disable Everything",onClick:function(){return i("no_roles")}})],4),children:[(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"For people creating a sneaky event: If you toggle Station Created Sentience, people may catch on that admins have disabled roles for your event..."}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:d?"good":"bad",icon:"meteor",content:"Events and Midround Rulesets",onClick:function(){return i("toggle_events_or_midrounds")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:u?"good":"bad",icon:"pastafarianism",content:"Ghost Role Spawners",onClick:function(){return i("toggle_spawners")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:s?"good":"bad",icon:"user-astronaut",content:"Station Created Sentience",onClick:function(){return i("toggle_station_sentience")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:m?"good":"bad",icon:"robot",content:"Silicons",onClick:function(){return i("toggle_silicons")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:p?"good":"bad",icon:"gamepad",content:"Minigames",onClick:function(){return i("toggle_minigames")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:"orange",icon:"check",content:"Apply Changes",onClick:function(){return i("apply_settings")}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GlandDispenser=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.GlandDispenser=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.glands,d=void 0===l?[]:l;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:338,theme:"abductor",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"60px",height:"60px",m:.75,textAlign:"center",lineHeight:"55px",icon:"eject",backgroundColor:e.color,content:e.amount||"0",disabled:!e.amount,onClick:function(){return i("dispense",{gland_id:e.id})}},e.id)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Gps=void 0;var o=n(0),r=n(14),a=n(30),c=n(9),i=n(103),l=n(2),d=n(1),u=n(3),s=function(e){return(0,r.map)(parseFloat)(e.split(", "))};t.Gps=function(e,t){var n=(0,l.useBackend)(t),m=n.act,p=n.data,C=p.currentArea,h=p.currentCoords,N=p.globalmode,V=p.power,b=p.tag,f=p.updating,g=(0,a.flow)([(0,r.map)((function(e,t){var n=e.dist&&Math.round((0,i.vecLength)((0,i.vecSubtract)(s(h),s(e.coords))));return Object.assign({},e,{dist:n,index:t})})),(0,r.sortBy)((function(e){return e.dist===undefined}),(function(e){return e.entrytag}))])(p.signals||[]);return(0,o.createComponentVNode)(2,u.Window,{title:"Global Positioning System",width:470,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d.Section,{title:"Control",buttons:(0,o.createComponentVNode)(2,d.Button,{icon:"power-off",content:V?"On":"Off",selected:V,onClick:function(){return m("power")}}),children:(0,o.createComponentVNode)(2,d.LabeledList,{children:[(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Tag",children:(0,o.createComponentVNode)(2,d.Button,{icon:"pencil-alt",content:b,onClick:function(){return m("rename")}})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,d.Button,{icon:f?"unlock":"lock",content:f?"AUTO":"MANUAL",color:!f&&"bad",onClick:function(){return m("updating")}})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,d.Button,{icon:"sync",content:N?"MAXIMUM":"LOCAL",selected:!N,onClick:function(){return m("globalmode")}})})]})}),!!V&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Section,{title:"Current Location",children:(0,o.createComponentVNode)(2,d.Box,{fontSize:"18px",children:[C," (",h,")"]})}),(0,o.createComponentVNode)(2,d.Section,{title:"Detected Signals",children:(0,o.createComponentVNode)(2,d.Table,{children:[(0,o.createComponentVNode)(2,d.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,d.Table.Cell,{content:"Name"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,content:"Direction"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,content:"Coordinates"})]}),g.map((function(e){return(0,o.createComponentVNode)(2,d.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,d.Table.Cell,{bold:!0,color:"label",children:e.entrytag}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,opacity:e.dist!==undefined&&(0,c.clamp)(1.2/Math.log(Math.E+e.dist/20),.4,1),children:[e.degrees!==undefined&&(0,o.createComponentVNode)(2,d.Icon,{mr:1,size:1.2,name:"arrow-up",rotation:e.degrees}),e.dist!==undefined&&e.dist+"m"]}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,children:e.coords})]},e.entrytag+e.coords+e.index)}))]})})],4)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GravityGenerator=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.GravityGenerator=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data),d=l.charging_state,u=l.operational;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:155,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No data available"}),!!u&&0!==d&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"WARNING - Radiation detected"}),!!u&&0===d&&(0,o.createComponentVNode)(2,a.NoticeBox,{success:!0,children:"No radiation detected"}),!!u&&(0,o.createComponentVNode)(2,i)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.breaker,d=i.charge_count,u=i.charging_state,s=i.on,m=i.operational;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l?"power-off":"times",content:l?"On":"Off",selected:l,disabled:!m,onClick:function(){return c("gentoggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Gravity Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d/100,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",children:[0===u&&(s&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Fully Charged"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Charging"})),1===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Charging"}),2===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Discharging"})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GulagItemReclaimer=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.GulagItemReclaimer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.mobs,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,c.Window,{width:325,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[0===u.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No stored items"}),u.length>0&&(0,o.createComponentVNode)(2,a.Section,{title:"Stored Items",children:(0,o.createComponentVNode)(2,a.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:(0,o.createComponentVNode)(2,a.Button,{content:"Retrieve Items",disabled:!l.can_reclaim,onClick:function(){return i("release_items",{mobref:e.mob})}})})]},e.mob)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.GulagTeleporterConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.GulagTeleporterConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.teleporter,u=l.teleporter_lock,s=l.teleporter_state_open,m=l.teleporter_location,p=l.beacon,C=l.beacon_location,h=l.id,N=l.id_name,V=l.can_teleport,b=l.goal,f=void 0===b?0:b,g=l.prisoner,v=void 0===g?{}:g;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:295,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Teleporter Console",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:s?"Open":"Closed",disabled:u,selected:s,onClick:function(){return i("toggle_open")}}),(0,o.createComponentVNode)(2,a.Button,{icon:u?"lock":"unlock",content:u?"Locked":"Unlocked",selected:u,disabled:s,onClick:function(){return i("teleporter_lock")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleporter Unit",color:d?"good":"bad",buttons:!d&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return i("scan_teleporter")}}),children:d?m:"Not Connected"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Receiver Beacon",color:p?"good":"bad",buttons:!p&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return i("scan_beacon")}}),children:p?C:"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Prisoner Details",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prisoner ID",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:h?N:"No ID",onClick:function(){return i("handle_id")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Point Goal",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:f,width:"48px",minValue:1,maxValue:1e3,onChange:function(e,t){return i("set_goal",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:v.name||"No Occupant"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Criminal Status",children:v.crimstat||"No Status"})]})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Process Prisoner",disabled:!V,textAlign:"center",color:"bad",onClick:function(){return i("teleport")}})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Holodeck=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Holodeck=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.can_toggle_safety,u=l.default_programs,s=void 0===u?[]:u,m=l.emag_programs,p=void 0===m?[]:m,C=l.emagged,h=l.program;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Default Programs",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:C?"unlock":"lock",content:"Safeties",color:"bad",disabled:!d,selected:!C,onClick:function(){return i("safety")}}),children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.substring(11),textAlign:"center",selected:e.type===h,onClick:function(){return i("load_program",{type:e.type})}},e.type)}))}),!!C&&(0,o.createComponentVNode)(2,a.Section,{title:"Dangerous Programs",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.substring(11),color:"bad",textAlign:"center",selected:e.type===h,onClick:function(){return i("load_program",{type:e.type})}},e.type)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Holopad=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Holopad=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data.calling;return(0,o.createComponentVNode)(2,c.Window,{width:440,height:245,resizable:!0,children:[!!d&&(0,o.createComponentVNode)(2,a.Modal,{fontSize:"36px",fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,mt:2,children:(0,o.createComponentVNode)(2,a.Icon,{name:"phone-alt",rotation:25})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,children:"Dialing..."})]}),(0,o.createComponentVNode)(2,a.Box,{mt:2,textAlign:"center",fontSize:"24px",children:(0,o.createComponentVNode)(2,a.Button,{lineHeight:"40px",icon:"times",content:"Hang Up",color:"bad",onClick:function(){return l("hang_up")}})})]}),(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})]})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.on_network,d=i.on_cooldown,u=i.allowed,s=i.disk,m=i.disk_record,p=i.replay_mode,C=i.loop_mode,h=i.record_mode,N=i.holo_calls,V=void 0===N?[]:N;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Holopad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"bell",content:d?"AI Presence Requested":"Request AI Presence",disabled:!l||d,onClick:function(){return c("AIrequest")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Communicator",children:(0,o.createComponentVNode)(2,a.Button,{icon:"phone-alt",content:u?"Connect To Holopad":"Call Holopad",disabled:!l,onClick:function(){return c("holocall",{headcall:u})}})}),V.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.connected?"Current Call":"Incoming Call",children:(0,o.createComponentVNode)(2,a.Button,{icon:e.connected?"phone-slash":"phone-alt",content:e.connected?"Disconnect call from "+e.caller:"Answer call from "+e.caller,color:e.connected?"bad":"good",disabled:!l,onClick:function(){return c(e.connected?"disconnectcall":"connectcall",{holopad:e.ref})}})},e.ref)}))]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holodisk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!s||p||h,onClick:function(){return c("disk_eject")}}),children:!s&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No holodisk"})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk Player",children:[(0,o.createComponentVNode)(2,a.Button,{icon:p?"pause":"play",content:p?"Stop":"Replay",selected:p,disabled:h||!m,onClick:function(){return c("replay_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:C?"Looping":"Loop",selected:C,disabled:h||!m,onClick:function(){return c("loop_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"exchange-alt",content:"Change Offset",disabled:!p,onClick:function(){return c("offset")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Recorder",children:[(0,o.createComponentVNode)(2,a.Button,{icon:h?"pause":"video",content:h?"End Recording":"Record",selected:h,disabled:m&&!h||p,onClick:function(){return c("record_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:"Clear Recording",color:"bad",disabled:!m||p||h,onClick:function(){return c("record_clear")}})]})]})})],4)}},function(e,t,n){"use strict";t.__esModule=!0,t.HypnoChair=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.HypnoChair=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:480,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",children:"The Enhanced Interrogation Chamber is designed to induce a deep-rooted trance trigger into the subject. Once the procedure is complete, by using the implanted trigger phrase, the authorities are able to ensure immediate and complete obedience and truthfulness."}),(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.occupant.name?l.occupant.name:"No Occupant"}),!!l.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===l.occupant.stat?"good":1===l.occupant.stat?"average":"bad",children:0===l.occupant.stat?"Conscious":1===l.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.open?"unlock":"lock",color:l.open?"default":"red",content:l.open?"Open":"Closed",onClick:function(){return i("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Phrase",children:(0,o.createComponentVNode)(2,a.Input,{value:l.trigger,onChange:function(e,t){return i("set_phrase",{phrase:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Interrogate Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:l.interrogating?"Interrupt Interrogation":"Begin Enhanced Interrogation",onClick:function(){return i("interrogate")}}),1===l.interrogating&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ImplantChair=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ImplantChair=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:280,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.occupant.name||"No Occupant"}),!!l.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===l.occupant.stat?"good":1===l.occupant.stat?"average":"bad",children:0===l.occupant.stat?"Conscious":1===l.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.open?"unlock":"lock",color:l.open?"default":"red",content:l.open?"Open":"Closed",onClick:function(){return i("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implant Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:l.ready?l.special_name||"Implant":"Recharging",onClick:function(){return i("implant")}}),0===l.ready&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implants Remaining",children:[l.ready_implants,1===l.replenishing&&(0,o.createComponentVNode)(2,a.Icon,{name:"sync",color:"red",spin:!0})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.InfraredEmitter=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.InfraredEmitter=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.on,u=l.visible;return(0,o.createComponentVNode)(2,c.Window,{width:225,height:110,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Visibility",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"eye":"eye-slash",content:u?"Visible":"Invisible",selected:u,onClick:function(){return i("visibility")}})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Intellicard=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Intellicard=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.name,u=l.isDead,s=l.isBraindead,m=l.health,p=l.wireless,C=l.radio,h=l.wiping,N=l.laws,V=void 0===N?[]:N,b=u||s;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:d||"Empty Card",buttons:!!d&&(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:h?"Stop Wiping":"Wipe",disabled:u,onClick:function(){return i("wipe")}}),children:!!d&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:b?"bad":"good",children:b?"Offline":"Operation"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Software Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"Wireless Activity",selected:p,onClick:function(){return i("wireless")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"microphone",content:"Subspace Radio",selected:C,onClick:function(){return i("radio")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laws",children:V.map((function(e){return(0,o.createComponentVNode)(2,a.BlockQuote,{children:e},e)}))})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Jukebox=void 0;var o=n(0),r=n(14),a=n(30),c=n(2),i=n(1),l=n(3);t.Jukebox=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.active,m=u.track_selected,p=u.track_length,C=u.track_beat,h=u.volume,N=(0,a.flow)([(0,r.sortBy)((function(e){return e.name}))])(u.songs||[]);return(0,o.createComponentVNode)(2,l.Window,{width:370,height:313,children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Song Player",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:s?"pause":"play",content:s?"Stop":"Play",selected:s,onClick:function(){return d("toggle")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Selected",children:(0,o.createComponentVNode)(2,i.Dropdown,{"overflow-y":"scroll",width:"240px",options:N.map((function(e){return e.name})),disabled:s,selected:m||"Select a Track",onSelected:function(e){return d("select_track",{track:e})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Length",children:m?p:"No Track Selected"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Beat",children:[m?C:"No Track Selected",1===C?" beat":" beats"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Machine Settings",children:(0,o.createComponentVNode)(2,i.LabeledControls,{justify:"center",children:(0,o.createComponentVNode)(2,i.LabeledControls.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,i.Box,{position:"relative",children:[(0,o.createComponentVNode)(2,i.Knob,{size:3.2,color:h>=50?"red":"green",value:h,unit:"%",minValue:0,maxValue:100,step:1,stepPixelSize:1,disabled:s,onDrag:function(e,t){return d("set_volume",{volume:t})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"-2px",right:"-22px",color:"transparent",icon:"fast-backward",onClick:function(){return d("set_volume",{volume:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"16px",right:"-22px",color:"transparent",icon:"fast-forward",onClick:function(){return d("set_volume",{volume:"max"})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"34px",right:"-22px",color:"transparent",icon:"undo",onClick:function(){return d("set_volume",{volume:"reset"})}})]})})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.KeycardAuth=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.KeycardAuth=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:125,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{children:1===l.waiting&&(0,o.createVNode)(1,"span",null,"Waiting for another device to confirm your request...",16)}),(0,o.createComponentVNode)(2,a.Box,{children:0===l.waiting&&(0,o.createFragment)([!!l.auth_required&&(0,o.createComponentVNode)(2,a.Button,{icon:"check-square",color:"red",textAlign:"center",lineHeight:"60px",fluid:!0,onClick:function(){return i("auth_swipe")},content:"Authorize"}),0===l.auth_required&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",fluid:!0,onClick:function(){return i("red_alert")},content:"Red Alert"}),(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",fluid:!0,onClick:function(){return i("emergency_maint")},content:"Emergency Maintenance Access"}),(0,o.createComponentVNode)(2,a.Button,{icon:"meteor",fluid:!0,onClick:function(){return i("bsa_unlock")},content:"Bluespace Artillery Unlock"})],4)],0)})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LaborClaimConsole=void 0;var o=n(0),r=n(19),a=n(2),c=n(1),i=n(3);t.LaborClaimConsole=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.can_go_home,s=d.id_points,m=d.ores,p=d.status_info,C=d.unclaimed_points;return(0,o.createComponentVNode)(2,i.Window,{width:315,height:440,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:p}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Shuttle controls",children:(0,o.createComponentVNode)(2,c.Button,{content:"Move shuttle",disabled:!u,onClick:function(){return l("move_shuttle")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Points",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Unclaimed points",buttons:(0,o.createComponentVNode)(2,c.Button,{content:"Claim points",disabled:!C,onClick:function(){return l("claim_points")}}),children:C})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Material values",children:(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Material"}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:"Value"})]}),m.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,r.toTitleCase)(e.ore)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{color:"label",inline:!0,children:e.value})})]},e.ore)}))]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LanguageMenu=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.LanguageMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.admin_mode,u=l.is_living,s=l.omnitongue,m=l.languages,p=void 0===m?[]:m,C=l.unknown_languages,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{title:"Language Menu",width:700,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Known Languages",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:p.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createFragment)([!!u&&(0,o.createComponentVNode)(2,a.Button,{content:e.is_default?"Default Language":"Select as Default",disabled:!e.can_speak,selected:e.is_default,onClick:function(){return i("select_default",{language_name:e.name})}}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return i("grant_language",{language_name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Remove",onClick:function(){return i("remove_language",{language_name:e.name})}})],4)],0),children:[e.desc," ","Key: ,",e.key," ",e.can_understand?"Can understand.":"Cannot understand."," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})}),!!d&&(0,o.createComponentVNode)(2,a.Section,{title:"Unknown Languages",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Omnitongue "+(s?"Enabled":"Disabled"),selected:s,onClick:function(){return i("toggle_omnitongue")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:h.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return i("grant_language",{language_name:e.name})}}),children:[e.desc," ","Key: ,",e.key," ",!!e.shadow&&"(gained from mob)"," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadRemote=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(206);t.LaunchpadRemote=function(e,t){var n=(0,r.useBackend)(t).data,l=n.has_pad,d=n.pad_closed;return(0,o.createComponentVNode)(2,c.Window,{title:"Briefcase Launchpad Remote",width:300,height:240,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Launchpad Connected"})||d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Launchpad Closed"})||(0,o.createComponentVNode)(2,i.LaunchpadControl,{topLevel:!0})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MafiaPanel=void 0;var o=n(0),r=n(6),a=(n(19),n(2)),c=n(1),i=n(3);t.MafiaPanel=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=u.lobbydata,m=u.players,p=u.actions,C=u.phase,h=u.roleinfo,N=u.role_theme,V=u.admin_controls,b=u.judgement_phase,f=u.timeleft,g=u.all_roles,v=h?30*m.length:7,k=s?s.filter((function(e){return"Ready"===e.status})):null;return(0,o.createComponentVNode)(2,i.Window,{title:"Mafia",theme:N,width:650,height:293+v,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:V,children:[!h&&(0,o.createComponentVNode)(2,c.Flex,{scrollable:!0,overflowY:"scroll",direction:"column",height:"100%",grow:1,children:(0,o.createComponentVNode)(2,c.Section,{title:"Lobby",mb:1,buttons:(0,o.createComponentVNode)(2,l,{phase:C,timeleft:f,admin_controls:V}),children:(0,o.createComponentVNode)(2,c.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,c.NoticeBox,{info:!0,children:["The lobby currently has ",k.length,"/12 valid players signed up."]}),(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!s&&s.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{basis:2,className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:2,align:"center",justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:0,children:e.name}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:"STATUS:"}),(0,o.createComponentVNode)(2,c.Flex.Item,{width:"30%",children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Box,{color:"Ready"===e.status?"green":"red",textAlign:"center",children:[e.status," ",e.spectating]})})})]})},e)}))})]})})}),!!h&&(0,o.createComponentVNode)(2,c.Section,{title:C,minHeight:"100px",maxHeight:"50px",buttons:(0,o.createComponentVNode)(2,c.Box,{children:[!!V&&(0,o.createComponentVNode)(2,c.Button,{color:"red",icon:"gavel",tooltipPosition:"bottom-left",tooltip:"Hello admin! If it is the admin controls you seek,\nplease notice the extra scrollbar you have that players\ndo not!"})," ",(0,o.createComponentVNode)(2,c.TimeDisplay,{auto:"down",value:f})]}),children:(0,o.createComponentVNode)(2,c.Flex,{justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{align:"center",textAlign:"center",maxWidth:"500px",children:[(0,o.createVNode)(1,"b",null,[(0,o.createTextVNode)("You are the "),h.role],0),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"b",null,h.desc,0)]}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:[(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["mafia32x32",h.revealed_icon]),style:{transform:"scale(2) translate(0px, 10%)","vertical-align":"middle"}}),(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["mafia32x32",h.hud_icon]),style:{transform:"scale(2) translate(-5px, -5px)","vertical-align":"middle"}})]})]})}),(0,o.createComponentVNode)(2,c.Flex,{children:!!p&&p.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return d("mf_action",{atype:e})},children:e})},e)}))}),!!h&&(0,o.createComponentVNode)(2,c.Section,{title:"Judgement",buttons:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"info",tooltipPosition:"left",tooltip:"When someone is on trial, you are in charge of their fate.\nInnocent winning means the person on trial can live to see\nanother day... and in losing they do not. You can go back\nto abstaining with the middle button if you reconsider."}),children:[(0,o.createComponentVNode)(2,c.Flex,{justify:"space-around",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"smile-beam",content:"INNOCENT!",color:"good",disabled:!b,onClick:function(){return d("vote_innocent")}}),!b&&(0,o.createComponentVNode)(2,c.Box,{children:"There is nobody on trial at the moment."}),!!b&&(0,o.createComponentVNode)(2,c.Box,{children:"It is now time to vote, vote the accused innocent or guilty!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"angry",content:"GUILTY!",color:"bad",disabled:!b,onClick:function(){return d("vote_guilty")}})]}),(0,o.createComponentVNode)(2,c.Flex,{justify:"center",children:(0,o.createComponentVNode)(2,c.Button,{icon:"meh",content:"Abstain",color:"white",disabled:!b,onClick:function(){return d("vote_abstain")}})})]}),"No Game"!==C&&(0,o.createComponentVNode)(2,c.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:2,children:(0,o.createComponentVNode)(2,c.Section,{title:"Players",buttons:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"info",tooltip:"This is the list of all the players in\nthe game, during the day phase you may vote on them and,\ndepending on your role, select players\nat certain phases to use your ability."}),children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!m&&m.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{height:"30px",className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:"18px",justify:"space-between",align:"center",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:16,children:[!!e.alive&&(0,o.createComponentVNode)(2,c.Box,{children:e.name}),!e.alive&&(0,o.createComponentVNode)(2,c.Box,{color:"red",children:e.name})]}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:!e.alive&&(0,o.createComponentVNode)(2,c.Box,{color:"red",children:"DEAD"})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:e.votes!==undefined&&!!e.alive&&(0,o.createFragment)([(0,o.createTextVNode)("Votes : "),e.votes,(0,o.createTextVNode)(" ")],0)}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:!!e.actions&&e.actions.map((function(t){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return d("mf_targ_action",{atype:t,target:e.ref})},children:t},t)}))})]})},e.ref)}))})})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:2,children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,c.Section,{title:"Roles and Notes",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"address-book",tooltipPosition:"bottom-left",tooltip:"The top section is the roles in the game. You can\npress the question mark to get a quick blurb\nabout the role itself."}),(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"edit",tooltipPosition:"bottom-left",tooltip:"The bottom section are your notes. on some roles this\nwill just be an empty box, but on others it records the\nactions of your abilities (so for example, your\ndetective work revealing a changeling)."})],4),children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!g&&g.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{height:"30px",className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:"18px",align:"center",justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:e}),(0,o.createComponentVNode)(2,c.Flex.Item,{textAlign:"right",children:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"question",onClick:function(){return d("mf_lookup",{atype:e.slice(0,-3)})}})})]})},e)}))})}),!!h&&(0,o.createComponentVNode)(2,c.Flex.Item,{height:0,grow:1,children:(0,o.createComponentVNode)(2,c.Section,{scrollable:!0,fill:!0,overflowY:"scroll",children:h!==undefined&&!!h.action_log&&h.action_log.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:e},e)}))})})]})})]}),(0,o.createComponentVNode)(2,c.Flex,{mt:1,direction:"column",children:(0,o.createComponentVNode)(2,c.Flex.Item,{children:!!V&&(0,o.createComponentVNode)(2,c.Section,{textAlign:"center",children:(0,o.createComponentVNode)(2,c.Collapsible,{title:"ADMIN CONTROLS",color:"red",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"exclamation-triangle",color:"black",tooltipPosition:"top",tooltip:"Almost all of these are all built to help me debug\nthe game (ow, debugging a 12 player game!) So they are\nrudamentary and prone to breaking at the drop of a hat.\nMake sure you know what you're doing when you press one.\nAlso because an admin did it: do not gib/delete/dust\nanyone! It will runtime the game to death!",content:"A Kind, Coder Warning",onClick:function(){return d("next_phase")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-right",tooltipPosition:"top",tooltip:"This will advance the game to the next phase\n(day talk > day voting, day voting > night/trial)\npretty fun to just spam this and freak people out,\ntry that roundend!",content:"Next Phase",onClick:function(){return d("next_phase")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"home",tooltipPosition:"top",tooltip:"Hopefully you won't use this button\noften, it's a safety net just in case\nmafia players somehow escape (nullspace\nredirects to the error room then station)\nEither way, VERY BAD IF THAT HAPPENS as\ngodmoded assistants will run free. Use\nthis to recollect them then make a bug report.",content:"Send All Players Home",onClick:function(){return d("players_home")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sync-alt",tooltipPosition:"top",tooltip:"This immediately ends the game, and attempts to start\nanother. Nothing will happen if another\ngame fails to start!",content:"New Game",onClick:function(){return d("new_game")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"skull",tooltipPosition:"top",tooltip:"Deletes the datum, clears all landmarks, makes mafia\nas it was roundstart: nonexistant. Use this if you\nreally mess things up. You did mess things up, didn't you.",content:"Nuke",onClick:function(){return d("nuke")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{icon:"paint-brush",tooltipPosition:"top",tooltip:"This is the custom game creator, it is... simple.\nYou put in roles and until you press CANCEL or FINISH\nit will keep letting you add more roles. Assitants\non the bottom because of pathing stuff. Resets after\nthe round finishes back to 12 player random setups.",content:"Create Custom Setup",onClick:function(){return d("debug_setup")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"paint-roller",tooltipPosition:"top",tooltip:"If you messed up and accidently didn't make it how\nyou wanted, simply just press this to reset it. The game\nwill auto reset after each game as well.",content:"Reset Custom Setup",onClick:function(){return d("cancel_setup")}})]})})})})]})})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.phase,d=i.timeleft,u=i.admin_controls;return(0,o.createComponentVNode)(2,c.Box,{children:["[Phase = ",l," | ",(0,o.createComponentVNode)(2,c.TimeDisplay,{auto:"down",value:d}),"]"," ",(0,o.createComponentVNode)(2,c.Button,{icon:"clipboard-check",tooltipPosition:"bottom-left",tooltip:"Signs you up for the next game. If there\nis an ongoing one, you will be signed up\nfor the next.",content:"Sign Up",onClick:function(){return r("mf_signup")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"eye",tooltipPosition:"bottom-left",tooltip:"Spectates games until you turn it off.\nAutomatically enabled when you die in game,\nbecause I assumed you would want to see the\nconclusion. You won't get messages if you\nrejoin SS13.",content:"Spectate",onClick:function(){return r("mf_spectate")}}),!!u&&(0,o.createComponentVNode)(2,c.Button,{color:"red",icon:"gavel",tooltipPosition:"bottom-left",tooltip:"Hello admin! If it is the admin controls you seek,\nplease notice the scrollbar you have that players\ndo not!"})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.MalfunctionModulePicker=void 0;var o=n(0),r=n(2),a=n(3),c=n(142);t.MalfunctionModulePicker=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.processingTime);return(0,o.createComponentVNode)(2,a.Window,{width:620,height:525,theme:"malfunction",resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.GenericUplink,{currencyAmount:i,currencySymbol:"PT"})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MechBayPowerConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.MechBayPowerConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.recharge_port,d=l&&l.mech,u=d&&d.cell;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:200,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Mech status",textAlign:"center",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Sync",onClick:function(){return i("reconnect")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.health/d.maxhealth,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||!u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cell is installed."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.charge/u.maxcharge,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u.charge})," / "+u.maxcharge]})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MechpadConsole=t.MechpadControl=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=function(e,t){var n=e.topLevel,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.pad_name,u=l.connected_mechpad;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:d,width:"170px",onChange:function(e,t){return i("rename",{name:t})}}),level:n?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return i("remove")}}),children:!u&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",textAlign:"center",children:"No Pad Connected."})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return i("launch")}})})};t.MechpadControl=i;t.MechpadConsole=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.mechpads,s=void 0===u?[]:u,m=d.selected_id;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:130,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:0===s.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"})||(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{minHeight:"70px",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"140px",minHeight:"70px",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,ellipsis:!0,content:e.name,selected:m===e.id,color:"transparent",onClick:function(){return l("select_pad",{id:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{minHeight:"100%",children:(0,o.createComponentVNode)(2,a.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,minHeight:"100%",children:m&&(0,o.createComponentVNode)(2,i)||(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.MedicalKiosk=void 0;var o=n(0),r=(n(19),n(2)),a=n(1),c=n(3);t.MedicalKiosk=function(e,t){var n=(0,r.useBackend)(t),p=(n.act,n.data),C=(0,r.useSharedState)(t,"scanIndex")[0],h=p.active_status_1,N=p.active_status_2,V=p.active_status_3,b=p.active_status_4;return(0,o.createComponentVNode)(2,c.Window,{width:575,height:420,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:1,children:(0,o.createComponentVNode)(2,a.Section,{minHeight:"100%",children:[(0,o.createComponentVNode)(2,i,{index:1,icon:"procedures",name:"General Health Scan",description:"Reads back exact values of your general health scan."}),(0,o.createComponentVNode)(2,i,{index:2,icon:"heartbeat",name:"Symptom Based Checkup",description:"Provides information based on various non-obvious symptoms,\nlike blood levels or disease status."}),(0,o.createComponentVNode)(2,i,{index:3,icon:"radiation-alt",name:"Neurological/Radiological Scan",description:"Provides information about brain trauma and radiation."}),(0,o.createComponentVNode)(2,i,{index:4,icon:"mortar-pestle",name:"Chemical and Psychoactive Scan",description:"Provides a list of consumed chemicals, as well as potential\nside effects."})]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l)})]}),!!h&&1===C&&(0,o.createComponentVNode)(2,d),!!N&&2===C&&(0,o.createComponentVNode)(2,u),!!V&&3===C&&(0,o.createComponentVNode)(2,s),!!b&&4===C&&(0,o.createComponentVNode)(2,m)]})})};var i=function(e,t){var n=e.index,c=e.name,i=e.description,l=e.icon,d=(0,r.useBackend)(t),u=d.act,s=d.data,m=(0,r.useSharedState)(t,"scanIndex"),p=m[0],C=m[1],h=s["active_status_"+n];return(0,o.createComponentVNode)(2,a.Flex,{spacing:1,align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"16px",textAlign:"center",children:(0,o.createComponentVNode)(2,a.Icon,{name:h?"check":"dollar-sign",color:h?"green":"grey"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:l,selected:h&&p===n,tooltip:i,tooltipPosition:"right",content:c,onClick:function(){h||u("beginScan_"+n),C(n)}})})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.kiosk_cost,d=i.patient_name;return(0,o.createComponentVNode)(2,a.Section,{minHeight:"100%",children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,children:["Greetings Valued Employee! Please select a desired automatic health check procedure. Diagnosis costs ",(0,o.createVNode)(1,"b",null,[l,(0,o.createTextVNode)(" credits.")],0)]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:1,children:"Patient:"}),d]}),(0,o.createComponentVNode)(2,a.Button,{mt:1,tooltip:"Resets the current scanning target, cancelling current scans.",icon:"sync",color:"average",onClick:function(){return c("clearTarget")},content:"Reset Scanner"})]})},d=function(e,t){var n=(0,r.useBackend)(t).data,c=n.patient_health,i=n.brute_health,l=n.burn_health,d=n.suffocation_health,u=n.toxin_health;return(0,o.createComponentVNode)(2,a.Section,{title:"Patient Health",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c/100,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c}),"%"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brute Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Burn Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Toxin Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})})})]})})},u=function(e,t){var n=(0,r.useBackend)(t).data,c=n.patient_status,i=n.patient_illness,l=n.illness_info,d=n.bleed_status,u=n.blood_levels,s=n.blood_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Symptom Based Checkup",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Patient Status",color:"good",children:c}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disease Status",children:i}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disease information",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Levels",children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})}),(0,o.createComponentVNode)(2,a.Box,{mt:1,color:"label",children:d})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Information",children:s})]})})},s=function(e,t){var n=(0,r.useBackend)(t).data,c=n.clone_health,i=n.brain_damage,l=n.brain_health,d=n.rad_contamination_status,u=n.rad_contamination_value,s=n.rad_sickness_status,m=n.rad_sickness_value,p=n.trauma_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Patient Neurological and Radiological Health",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cellular Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c/100,color:"good",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c})})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i/100,color:"good",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Status",color:"health-0",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Trauma Status",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Sickness Status",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Sickness Percentage",children:[m,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Contamination Status",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Contamination Percentage",children:[u,"%"]})]})})},m=function(e,t){var n=(0,r.useBackend)(t).data,c=n.chemical_list,i=void 0===c?[]:c,l=n.overdose_list,d=void 0===l?[]:l,u=n.addict_list,s=void 0===u?[]:u,m=n.hallucinating_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Chemical and Psychoactive Analysis",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Chemical Contents",children:[0===i.length&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No reagents detected."}),i.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[e.volume," units of ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overdose Status",color:"bad",children:[0===d.length&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Patient is not overdosing."}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["Overdosing on ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Addiction Status",color:"bad",children:[0===s.length&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Patient has no addictions."}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["Addicted to ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Psychoactive Status",children:m})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Microscope=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Microscope=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=(0,r.useSharedState)(t,"tab",1),m=s[0],p=s[1],C=u.has_dish,h=u.cell_lines,N=void 0===h?[]:h,V=u.viruses,b=void 0===V?[]:V;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Dish Sample",children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!C,onClick:function(){return d("eject_petridish")}})})})}),(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"microscope",lineHeight:"23px",selected:1===m,onClick:function(){return p(1)},children:["Micro-Organisms (",N.length,")"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"microscope",lineHeight:"23px",selected:2===m,onClick:function(){return p(2)},children:["Viruses (",b.length,")"]})]}),1===m&&(0,o.createComponentVNode)(2,i,{cell_lines:N}),2===m&&(0,o.createComponentVNode)(2,l,{viruses:b})]})})};var i=function(e,t){var n=e.cell_lines,c=(0,r.useBackend)(t);c.act,c.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.desc,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Rate",children:e.growth_rate}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Virus Suspectibility",children:e.suspectibility}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Required Reagents",children:e.requireds}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supplementary Reagents",children:e.supplementaries}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suppresive reagents",children:e.suppressives})]})},e.desc)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No micro-organisms found"})},l=function(e,t){var n=e.viruses;(0,r.useBackend)(t).act;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.desc},e.desc)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No viruses found"})}},function(e,t,n){"use strict";t.__esModule=!0,t.MiningVendor=void 0;var o=n(0),r=n(6),a=n(2),c=n(1),i=n(3);t.MiningVendor=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=[].concat(d.product_records);return(0,o.createComponentVNode)(2,i.Window,{width:425,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"User",children:d.user&&(0,o.createComponentVNode)(2,c.Box,{children:["Welcome, ",(0,o.createVNode)(1,"b",null,d.user.name||"Unknown",0),","," ",(0,o.createVNode)(1,"b",null,d.user.job||"Unemployed",0),"!",(0,o.createVNode)(1,"br"),"Your balance is ",(0,o.createVNode)(1,"b",null,[d.user.points,(0,o.createTextVNode)(" mining points")],0),"."]})||(0,o.createComponentVNode)(2,c.Box,{color:"light-gray",children:["No registered ID card!",(0,o.createVNode)(1,"br"),"Please contact your local HoP!"]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Equipment",children:(0,o.createComponentVNode)(2,c.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:[(0,o.createVNode)(1,"span",(0,r.classes)(["vending32x32",e.path]),null,1,{style:{"vertical-align":"middle"}})," ",(0,o.createVNode)(1,"b",null,e.name,0)]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{style:{"min-width":"95px","text-align":"center"},disabled:!d.user||e.price>d.user.points,content:e.price+" points",onClick:function(){return l("purchase",{ref:e.ref})}})})]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Mint=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.Mint=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.inserted_materials||[];return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Materials",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l.processing?"times":"power-off",content:l.processing?"Stop":"Start",selected:l.processing,onClick:function(){return i(l.processing?"stoppress":"startpress")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.material,buttons:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:l.chosen_material===e.material,onClick:function(){return i("changematerial",{material_name:e.material})}}),children:[e.amount," cm\xb3"]},e.material)}))})}),(0,o.createComponentVNode)(2,a.Section,{children:["Pressed ",l.produced_coins," coins this cycle."]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Mule=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(64);t.Mule=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.on,s=d.cell,m=d.cellPercent,p=d.load,C=d.mode,h=d.modeStatus,N=d.haspai,V=d.autoReturn,b=d.autoPickup,f=d.reportDelivery,g=d.destination,v=d.home,k=d.id,x=d.destinations,B=void 0===x?[]:x,_=d.locked&&!d.siliconUser;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:425,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,a.Section,{title:"Status",minHeight:"110px",buttons:!_&&(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:s?m/100:0,color:s?"good":"bad"}),(0,o.createComponentVNode)(2,a.Flex,{mt:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",color:h,children:C})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Load",color:p?"good":"average",children:p||"None"})})})]})]}),!_&&(0,o.createComponentVNode)(2,a.Section,{title:"Controls",buttons:(0,o.createFragment)([!!p&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Unload",onClick:function(){return l("unload")}}),!!N&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject PAI",onClick:function(){return l("ejectpai")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,a.Input,{value:k,onChange:function(e,t){return l("setid",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:g||"None",options:B,width:"150px",onSelected:function(e){return l("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"stop",content:"Stop",onClick:function(){return l("stop")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"play",content:"Go",onClick:function(){return l("go")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:v,options:B,width:"150px",onSelected:function(e){return l("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"home",content:"Go Home",onClick:function(){return l("home")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:V,content:"Auto-Return",onClick:function(){return l("autored")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:b,content:"Auto-Pickup",onClick:function(){return l("autopick")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:f,content:"Report Delivery",onClick:function(){return l("report")}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteChamberControlContent=t.NaniteChamberControl=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NaniteChamberControl=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:380,height:570,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.status_msg,d=i.locked,u=i.occupant_name,s=i.has_nanites,m=i.nanite_volume,p=i.regen_rate,C=i.safety_threshold,h=i.cloud_id,N=i.scan_level;if(l)return(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:l});var V=i.mob_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Chamber: "+u,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"lock":"lock-open",content:d?"Locked":"Unlocked",color:d?"bad":"default",onClick:function(){return c("toggle_lock")}}),children:s?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",content:"Destroy Nanites",color:"bad",onClick:function(){return c("remove_nanites")}}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanite Volume",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Rate",children:p})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety Threshold",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:C,minValue:0,maxValue:500,width:"39px",onChange:function(e,t){return c("set_safety",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:h,minValue:0,maxValue:100,step:1,stepPixelSize:3,width:"39px",onChange:function(e,t){return c("set_cloud",{value:t})}})})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",level:2,children:V.map((function(e){var t=e.extra_settings||[],n=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:e.desc}),N>=2&&(0,o.createComponentVNode)(2,a.Grid.Column,{size:.6,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.activated?"good":"bad",children:e.activated?"Active":"Inactive"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanites Consumed",children:[e.use_rate,"/s"]})]})})]}),N>=2&&(0,o.createComponentVNode)(2,a.Grid,{children:[!!e.can_trigger&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Triggers",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:e.trigger_cost}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:e.trigger_cooldown}),!!e.timer_trigger_delay&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[e.timer_trigger_delay," s"]}),!!e.timer_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:[e.timer_trigger," s"]})]})})}),!(!e.timer_restart&&!e.timer_shutdown)&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.timer_restart&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:[e.timer_restart," s"]}),e.timer_shutdown&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:[e.timer_shutdown," s"]})]})})})]}),N>=3&&!!e.has_extra_settings&&(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:t.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:e.value},e.name)}))})}),N>=4&&(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!e.activation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:e.activation_code}),!!e.deactivation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:e.deactivation_code}),!!e.kill_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:e.kill_code}),!!e.can_trigger&&!!e.trigger_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:e.trigger_code})]})})}),e.has_rules&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Rules",level:2,children:n.map((function(e){return(0,o.createFragment)([e.display,(0,o.createVNode)(1,"br")],0,e.display)}))})})]})]})},e.name)}))})],4):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",textAlign:"center",fontSize:"30px",mb:1,children:"No Nanites Detected"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,icon:"syringe",content:" Implant Nanites",color:"green",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return c("nanite_injection")}})],4)})};t.NaniteChamberControlContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteCloudControl=t.NaniteCloudBackupDetails=t.NaniteCloudBackupList=t.NaniteInfoBox=t.NaniteDiskBox=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=function(e,t){var n=(0,r.useBackend)(t).data,c=n.has_disk,i=n.has_program,d=n.disk;return c?i?(0,o.createComponentVNode)(2,l,{program:d}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Inserted disk has no program"}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No disk inserted"})};t.NaniteDiskBox=i;var l=function(e,t){var n=e.program,r=n.name,c=n.desc,i=n.activated,l=n.use_rate,d=n.can_trigger,u=n.trigger_cost,s=n.trigger_cooldown,m=n.activation_code,p=n.deactivation_code,C=n.kill_code,h=n.trigger_code,N=n.timer_restart,V=n.timer_shutdown,b=n.timer_trigger,f=n.timer_trigger_delay,g=n.extra_settings||[];return(0,o.createComponentVNode)(2,a.Section,{title:r,level:2,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:i?"good":"bad",children:i?"Activated":"Deactivated"}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{mr:1,children:c}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:l}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:s})],4)]})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:C}),!!d&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:h})]})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart",children:[N," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown",children:[V," s"]}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:[b," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[f," s"]})],4)]})})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:g.map((function(e){var t={number:(0,o.createFragment)([e.value,e.unit],0),text:e.value,type:e.value,boolean:e.value?e.true_text:e.false_text};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:t[e.type]},e.name)}))})})]})};t.NaniteInfoBox=l;var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act;return(n.data.cloud_backups||[]).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Backup #"+e.cloud_id,textAlign:"center",onClick:function(){return c("set_view",{view:e.cloud_id})}},e.cloud_id)}))};t.NaniteCloudBackupList=d;var u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.current_view,u=i.disk,s=i.has_program,m=i.cloud_backup,p=u&&u.can_rule||!1;if(!m)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"ERROR: Backup not found"});var C=i.cloud_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Backup #"+d,level:2,buttons:!!s&&(0,o.createComponentVNode)(2,a.Button,{icon:"upload",content:"Upload From Disk",color:"good",onClick:function(){return c("upload_program")}}),children:C.map((function(e){var t=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return c("remove_program",{program_id:e.id})}}),children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,l,{program:e}),(!!p||!!e.has_rules)&&(0,o.createComponentVNode)(2,a.Section,{mt:-2,title:"Rules",level:2,buttons:!!p&&(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Add Rule from Disk",color:"good",onClick:function(){return c("add_rule",{program_id:e.id})}}),children:e.has_rules?t.map((function(t){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return c("remove_rule",{program_id:e.id,rule_id:t.id})}})," "+t.display]},t.display)})):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No Active Rules"})})]})},e.name)}))})};t.NaniteCloudBackupDetails=u;t.NaniteCloudControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,s=n.data,m=s.has_disk,p=s.current_view,C=s.new_backup_id;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Program Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!m,onClick:function(){return l("eject")}}),children:(0,o.createComponentVNode)(2,i)}),(0,o.createComponentVNode)(2,a.Section,{title:"Cloud Storage",buttons:p?(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Return",onClick:function(){return l("set_view",{view:0})}}):(0,o.createFragment)(["New Backup: ",(0,o.createComponentVNode)(2,a.NumberInput,{value:C,minValue:1,maxValue:100,stepPixelSize:4,width:"39px",onChange:function(e,t){return l("update_new_backup_value",{value:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return l("create_backup")}})],0),children:s.current_view?(0,o.createComponentVNode)(2,u):(0,o.createComponentVNode)(2,d)})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgramHub=void 0;var o=n(0),r=n(14),a=n(2),c=n(1),i=n(3);t.NaniteProgramHub=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.detail_view,s=d.disk,m=d.has_disk,p=d.has_program,C=d.programs,h=void 0===C?{}:C,N=(0,a.useSharedState)(t,"category"),V=N[0],b=N[1],f=h&&h[V]||[];return(0,o.createComponentVNode)(2,i.Window,{width:500,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"Program Disk",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",onClick:function(){return l("eject")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"minus-circle",content:"Delete Program",onClick:function(){return l("clear")}})],4),children:m?p?(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Program Name",children:s.name}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:s.desc})]}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No Program Installed"}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"Insert Disk"})}),(0,o.createComponentVNode)(2,c.Section,{title:"Programs",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:u?"info":"list",content:u?"Detailed":"Compact",onClick:function(){return l("toggle_details")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Sync Research",onClick:function(){return l("refresh")}})],4),children:null!==h?(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{minWidth:"110px",children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){var n=t.substring(0,t.length-8);return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:t===V,onClick:function(){return b(t)},children:n},t)}))(h)})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:u?f.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"download",content:"Download",disabled:!m,onClick:function(){return l("download",{program_id:e.id})}}),children:e.desc},e.id)})):(0,o.createComponentVNode)(2,c.LabeledList,{children:f.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"download",content:"Download",disabled:!m,onClick:function(){return l("download",{program_id:e.id})}})},e.id)}))})})]}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No nanite programs are currently researched."})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgrammerContent=t.NaniteProgrammer=t.NaniteExtraBoolean=t.NaniteExtraType=t.NaniteExtraText=t.NaniteExtraNumber=t.NaniteExtraEntry=t.NaniteDelays=t.NaniteCodes=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.activation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"activation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.deactivation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"deactivation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.kill_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"kill",code:t})}})}),!!i.can_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.trigger_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"trigger",code:t})}})})]})})};t.NaniteCodes=i;var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,ml:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_restart,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_restart_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_shutdown,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_shutdown_timer",{delay:t})}})}),!!i.can_trigger&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_trigger_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger_delay,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_timer_trigger_delay",{delay:t})}})})],4)]})})};t.NaniteDelays=l;var d=function(e,t){var n=e.extra_setting,r=n.name,c=n.type,i={number:(0,o.createComponentVNode)(2,u,{extra_setting:n}),text:(0,o.createComponentVNode)(2,s,{extra_setting:n}),type:(0,o.createComponentVNode)(2,m,{extra_setting:n}),boolean:(0,o.createComponentVNode)(2,p,{extra_setting:n})};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:r,children:i[c]})};t.NaniteExtraEntry=d;var u=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.min,u=n.max,s=n.unit;return(0,o.createComponentVNode)(2,a.NumberInput,{value:l,width:"64px",minValue:d,maxValue:u,unit:s,onChange:function(e,t){return c("set_extra_setting",{target_setting:i,value:t})}})};t.NaniteExtraNumber=u;var s=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value;return(0,o.createComponentVNode)(2,a.Input,{value:l,width:"200px",onInput:function(e,t){return c("set_extra_setting",{target_setting:i,value:t})}})};t.NaniteExtraText=s;var m=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.types;return(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:l,width:"150px",options:d,onSelected:function(e){return c("set_extra_setting",{target_setting:i,value:e})}})};t.NaniteExtraType=m;var p=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.true_text,u=n.false_text;return(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:l?d:u,checked:l,onClick:function(){return c("set_extra_setting",{target_setting:i})}})};t.NaniteExtraBoolean=p;t.NaniteProgrammer=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:420,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,C)})})};var C=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.has_disk,m=u.has_program,p=u.name,C=u.desc,h=u.use_rate,N=u.can_trigger,V=u.trigger_cost,b=u.trigger_cooldown,f=u.activated,g=u.has_extra_settings,v=u.extra_settings,k=void 0===v?{}:v;return s?m?(0,o.createComponentVNode)(2,a.Section,{title:p,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}}),children:[(0,o.createComponentVNode)(2,a.Section,{title:"Info",level:2,children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:C}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.7,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:h}),!!N&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:V}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:b})],4)]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Settings",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:f?"power-off":"times",content:f?"Active":"Inactive",selected:f,color:"bad",bold:!0,onClick:function(){return c("toggle_active")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i)}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,l)})]}),!!g&&(0,o.createComponentVNode)(2,a.Section,{title:"Special",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:k.map((function(e){return(0,o.createComponentVNode)(2,d,{extra_setting:e},e.name)}))})})]})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Blank Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Insert a nanite program disk"})};t.NaniteProgrammerContent=C},function(e,t,n){"use strict";t.__esModule=!0,t.NaniteRemoteContent=t.NaniteRemote=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NaniteRemote=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:420,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.code,d=i.locked,u=i.mode,s=i.program_name,m=i.relay_code,p=i.comms,C=i.message,h=i.saved_settings,N=void 0===h?[]:h;return d?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This interface is locked."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Nanite Control",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lock",content:"Lock Interface",onClick:function(){return c("lock")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:s,maxLength:14,width:"130px",onChange:function(e,t){return c("update_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",content:"Save",onClick:function(){return c("save")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:p?"Comm Code":"Signal Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return c("set_code",{code:t})}})}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",children:(0,o.createComponentVNode)(2,a.Input,{value:C,width:"270px",onChange:function(e,t){return c("set_message",{value:t})}})}),"Relay"===u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Relay Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:m,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return c("set_relay_code",{code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Signal Mode",children:["Off","Local","Targeted","Area","Relay"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,selected:u===e,onClick:function(){return c("select_mode",{mode:e})}},e)}))})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Saved Settings",children:N.length>0?(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"35%",children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"20%",children:"Mode"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Code"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Relay"})]}),N.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"label",children:[e.name,":"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.mode}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.code}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Relay"===e.mode&&e.relay_code}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"upload",color:"good",onClick:function(){return c("load",{save_id:e.id})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"minus",color:"bad",onClick:function(){return c("remove_save",{save_id:e.id})}})]})]},e.id)}))]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No settings currently saved"})})],4)};t.NaniteRemoteContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.NotificationPreferences=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NotificationPreferences=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=(n.data.ignore||[]).sort((function(e,t){var n=e.desc.toLowerCase(),o=t.desc.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,c.Window,{title:"Notification Preferences",width:270,height:360,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Ghost Role Notifications",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:e.enabled?"times":"check",content:e.desc,color:e.enabled?"bad":"good",onClick:function(){return i("toggle_ignore",{key:e.key})}},e.key)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtnetRelay=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtnetRelay=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.enabled,u=l.dos_capacity,s=l.dos_overload,m=l.dos_crashed;return(0,o.createComponentVNode)(2,c.Window,{title:"NtNet Quantum Relay",width:400,height:300,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Network Buffer",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:d,content:d?"ENABLED":"DISABLED",onClick:function(){return i("toggle")}}),children:m?(0,o.createComponentVNode)(2,a.Box,{fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",children:"NETWORK BUFFER OVERFLOW"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",children:"OVERLOAD RECOVERY MODE"}),(0,o.createComponentVNode)(2,a.Box,{children:"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."}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",color:"bad",children:"ADMINISTRATOR OVERRIDE"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",color:"bad",children:"CAUTION - DATA LOSS MAY OCCUR"}),(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"PURGE BUFFER",mt:1,color:"bad",onClick:function(){return i("restart")}})]}):(0,o.createComponentVNode)(2,a.ProgressBar,{value:s,minValue:0,maxValue:u,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:s})," GQ"," / ",u," GQ"]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosAiRestorer=void 0;var o=n(0),r=n(3),a=n(201);t.NtosAiRestorer=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:370,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.AiRestorerContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosArcade=void 0;var o=n(0),r=n(63),a=n(2),c=n(1),i=n(3);t.NtosArcade=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:450,height:350,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,c.Section,{title:"Outbomb Cuban Pete Ultra",textAlign:"center",children:[(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:2,children:[(0,o.createComponentVNode)(2,c.Box,{m:1}),(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Player Health",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.PlayerHitpoints,minValue:0,maxValue:30,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[d.PlayerHitpoints,"HP"]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Player Magic",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.PlayerMP,minValue:0,maxValue:10,ranges:{purple:[11,Infinity],violet:[3,11],bad:[-Infinity,3]},children:[d.PlayerMP,"MP"]})})]}),(0,o.createComponentVNode)(2,c.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,c.Section,{backgroundColor:1===d.PauseState?"#1b3622":"#471915",children:d.Status})]}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:[(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.Hitpoints,minValue:0,maxValue:45,ranges:{good:[30,Infinity],average:[5,30],bad:[-Infinity,5]},children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:d.Hitpoints}),"HP"]}),(0,o.createComponentVNode)(2,c.Box,{m:1}),(0,o.createComponentVNode)(2,c.Section,{inline:!0,width:"156px",textAlign:"center",children:(0,o.createVNode)(1,"img",null,null,1,{src:(0,r.resolveAsset)(d.BossID)})})]})]}),(0,o.createComponentVNode)(2,c.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,c.Button,{icon:"fist-raised",tooltip:"Go in for the kill!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Attack")},content:"Attack!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"band-aid",tooltip:"Heal yourself!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Heal")},content:"Heal!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"magic",tooltip:"Recharge your magic!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Recharge_Power")},content:"Recharge!"})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sync-alt",tooltip:"One more game couldn't hurt.",tooltipPosition:"top",disabled:1===d.GameActive,onClick:function(){return l("Start_Game")},content:"Begin Game"}),(0,o.createComponentVNode)(2,c.Button,{icon:"ticket-alt",tooltip:"Claim at your local Arcade Computer for Prizes!",tooltipPosition:"top",disabled:1===d.GameActive,onClick:function(){return l("Dispense_Tickets")},content:"Claim Tickets"})]}),(0,o.createComponentVNode)(2,c.Box,{color:d.TicketCount>=1?"good":"normal",children:["Earned Tickets: ",d.TicketCount]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosAtmos=void 0;var o=n(0),r=n(14),a=n(30),c=n(9),i=n(2),l=n(1),d=n(36),u=n(3);t.NtosAtmos=function(e,t){var n=(0,i.useBackend)(t),s=(n.act,n.data),m=s.AirTemp,p=s.AirPressure,C=(0,a.flow)([(0,r.filter)((function(e){return e.percentage>=.01})),(0,r.sortBy)((function(e){return-e.percentage}))])(s.AirData||[]),h=Math.max.apply(Math,[1].concat(C.map((function(e){return e.percentage}))));return(0,o.createComponentVNode)(2,u.NtosWindow,{width:300,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,u.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:[m,"\xb0C"]}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:[p," kPa"]})]})}),(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,d.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,d.getGasColor)(e.name),value:e.percentage,minValue:0,maxValue:h,children:(0,c.toFixed)(e.percentage,2)+"%"})},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosBountyConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(39),i=n(3);t.NtosBountyConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data.bountydata,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:750,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print Bounty List",onClick:function(){return c("Print")}}),children:(0,o.createComponentVNode)(2,a.Table,{border:!0,children:[(0,o.createComponentVNode)(2,a.Table.Row,{bold:!0,italic:!0,color:"label",fontSize:1.25,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Bounty Object"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Description"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Progress"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Claim"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{backgroundColor:1===e.priority?"rgba(252, 152, 3, 0.25)":"",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{italic:!0,textAlign:"center",p:1,children:e.description}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:[1===e.priority?(0,o.createComponentVNode)(2,a.Box,{children:"High Priority"}):"",e.completion_string]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:e.reward_string}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:1===e.claimed?"check":"",content:1===e.claimed?"Claimed":"Claim",disabled:1===e.claimed,color:1===e.can_claim?"green":"red",onClick:function(){return c("ClaimBounty",{bounty:e.bounty_ref})}})})]},e.name)}))]})})})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.stored_cash);return(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i,format:function(e){return(0,c.formatMoney)(e)}})," credits"]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCardContent=t.NtosCard=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(202);t.NtosCard=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:450,height:520,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=(0,r.useLocalState)(t,"tab",1),u=d[0],s=d[1],m=l.authenticated,p=l.regions,C=void 0===p?[]:p,h=l.access_on_card,N=void 0===h?[]:h,V=l.jobs,b=void 0===V?{}:V,f=l.id_rank,g=l.id_owner,v=l.has_id,k=l.have_printer,x=l.have_id_slot,B=l.id_name,_=(0,r.useLocalState)(t,"department",Object.keys(b)[0]),w=_[0],L=_[1];if(!x)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This program requires an ID slot in order to function"});var y=b[w]||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:v&&m?(0,o.createComponentVNode)(2,a.Input,{value:g,width:"250px",onInput:function(e,t){return c("PRG_edit",{name:t})}}):g||"No Card Inserted",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!k||!v,onClick:function(){return c("PRG_print")}}),(0,o.createComponentVNode)(2,a.Button,{icon:m?"sign-out-alt":"sign-in-alt",content:m?"Log Out":"Log In",color:m?"bad":"good",onClick:function(){c(m?"PRG_logout":"PRG_authenticate")}})],4),children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:B,onClick:function(){return c("PRG_eject")}})}),!!v&&!!m&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===u,onClick:function(){return s(1)},children:"Access"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===u,onClick:function(){return s(2)},children:"Jobs"})]}),1===u&&(0,o.createComponentVNode)(2,i.AccessList,{accesses:C,selectedList:N,accessMod:function(e){return c("PRG_access",{access_target:e})},grantAll:function(){return c("PRG_grantall")},denyAll:function(){return c("PRG_denyall")},grantDep:function(e){return c("PRG_grantregion",{region:e})},denyDep:function(e){return c("PRG_denyregion",{region:e})}}),2===u&&(0,o.createComponentVNode)(2,a.Section,{title:f,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"exclamation-triangle",content:"Terminate",color:"bad",onClick:function(){return c("PRG_terminate")}}),children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Custom...",onCommit:function(e,t){return c("PRG_assign",{assign_target:"Custom",custom_name:t})}}),(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:Object.keys(b).map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:e===w,onClick:function(){return L(e)},children:e},e)}))})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:y.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.display_name,onClick:function(){return c("PRG_assign",{assign_target:e.job})}},e.job)}))})]})]})]})],0)};t.NtosCardContent=l},function(e,t,n){"use strict";t.__esModule=!0,t.NtosConfiguration=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosConfiguration=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.PC_device_theme,u=l.power_usage,s=l.battery_exists,m=l.battery,p=void 0===m?{}:m,C=l.disk_size,h=l.disk_used,N=l.hardware,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,c.NtosWindow,{theme:d,width:420,height:630,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power Supply",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Draw: ",u,"W"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Battery Status",color:!s&&"average",children:s?(0,o.createComponentVNode)(2,a.ProgressBar,{value:p.charge,minValue:0,maxValue:p.max,ranges:{good:[p.max/2,Infinity],average:[p.max/4,p.max/2],bad:[-Infinity,p.max/4]},children:[p.charge," / ",p.max]}):"Not Available"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"File System",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h,minValue:0,maxValue:C,color:"good",children:[h," GQ / ",C," GQ"]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Hardware Components",children:V.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,buttons:(0,o.createFragment)([!e.critical&&(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Enabled",checked:e.enabled,mr:1,onClick:function(){return i("PC_toggle_component",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Usage: ",e.powerusage,"W"]})],0),children:e.desc},e.name)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCrewManifest=void 0;var o=n(0),r=n(14),a=n(2),c=n(1),i=n(3);t.NtosCrewManifest=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.have_printer,s=d.manifest,m=void 0===s?{}:s;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:400,height:480,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Section,{title:"Crew Manifest",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"print",content:"Print",disabled:!u,onClick:function(){return l("PRG_print")}}),children:(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Section,{level:2,title:t,children:(0,o.createComponentVNode)(2,c.Table,{children:e.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{bold:!0,children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:["(",e.rank,")"]})]},e.name)}))})},t)}))(m)})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosCyborgRemoteMonitorSyndicate=void 0;var o=n(0),r=n(3),a=n(207);t.NtosCyborgRemoteMonitorSyndicate=function(e,t){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:600,height:800,theme:"syndicate",children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.NtosCyborgRemoteMonitorContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosFileManager=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosFileManager=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.PC_device_theme,s=d.usbconnected,m=d.files,p=void 0===m?[]:m,C=d.usbfiles,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.NtosWindow,{resizable:!0,theme:u,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,i,{files:p,usbconnected:s,onUpload:function(e){return l("PRG_copytousb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})}),s&&(0,o.createComponentVNode)(2,a.Section,{title:"Data Disk",children:(0,o.createComponentVNode)(2,i,{usbmode:!0,files:h,usbconnected:s,onUpload:function(e){return l("PRG_copyfromusb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})})]})})};var i=function(e){var t=e.files,n=void 0===t?[]:t,r=e.usbconnected,c=e.usbmode,i=e.onUpload,l=e.onDelete,d=e.onRename;return(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"File"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Type"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Size"})]}),n.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.undeletable?e.name:(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:e.name,currentValue:e.name,tooltip:"Rename",onCommit:function(t,n){return d(e.name,n)}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.type}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.size}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:!e.undeletable&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"trash",confirmIcon:"times",confirmContent:"",tooltip:"Delete",onClick:function(){return l(e.name)}}),!!r&&(c?(0,o.createComponentVNode)(2,a.Button,{icon:"download",tooltip:"Download",onClick:function(){return i(e.name)}}):(0,o.createComponentVNode)(2,a.Button,{icon:"upload",tooltip:"Upload",onClick:function(){return i(e.name)}}))],0)})]},e.name)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosJobManagerContent=t.NtosJobManager=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosJobManager=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:620,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.authed,d=i.cooldown,u=i.slots,s=void 0===u?[]:u,m=i.prioritized,p=void 0===m?[]:m;return l?(0,o.createComponentVNode)(2,a.Section,{children:[d>0&&(0,o.createComponentVNode)(2,a.Dimmer,{children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"20px",children:["On Cooldown: ",d,"s"]})}),(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Prioritized"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Slots"})]}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:e.title,disabled:e.total<=0,checked:e.total>0&&p.includes(e.title),onClick:function(){return c("PRG_priority",{target:e.title})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[e.current," / ",e.total]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"Open",disabled:!e.status_open,onClick:function(){return c("PRG_open_job",{target:e.title})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Close",disabled:!e.status_close,onClick:function(){return c("PRG_close_job",{target:e.title})}})]})]},e.title)}))]})]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Current ID does not have access permissions to change job slots."})};t.NtosJobManagerContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.NtosMain=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i={compconfig:"cog",ntndownloader:"download",filemanager:"folder",smmonitor:"radiation",alarmmonitor:"bell",cardmod:"id-card",arcade:"gamepad",ntnrc_client:"comment-alt",nttransfer:"exchange-alt",powermonitor:"plug",job_manage:"address-book",crewmani:"clipboard-list",robocontrol:"robot",atmosscan:"thermometer-half",shipping:"tags"};t.NtosMain=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.device_theme,s=d.programs,m=void 0===s?[]:s,p=d.has_light,C=d.light_on,h=d.comp_light_color,N=d.removable_media,V=void 0===N?[]:N,b=d.login,f=void 0===b?[]:b;return(0,o.createComponentVNode)(2,c.NtosWindow,{title:"syndicate"===u?"Syndix Main Menu":"NtOS Main Menu",theme:u,width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[!!p&&(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Button,{width:"144px",icon:"lightbulb",selected:C,onClick:function(){return l("PC_toggle_light")},children:["Flashlight: ",C?"ON":"OFF"]}),(0,o.createComponentVNode)(2,a.Button,{ml:1,onClick:function(){return l("PC_light_color")},children:["Color:",(0,o.createComponentVNode)(2,a.ColorBox,{ml:1,color:h})]})]}),(0,o.createComponentVNode)(2,a.Section,{title:"User Login",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject ID",disabled:!f.IDName,onClick:function(){return l("PC_Eject_Disk",{name:"ID"})}}),children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:["ID Name: ",f.IDName]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:["Assignment: ",f.IDJob]})]})}),!!V.length&&(0,o.createComponentVNode)(2,a.Section,{title:"Media Eject",children:(0,o.createComponentVNode)(2,a.Table,{children:V.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"transparent",icon:"eject",content:e,onClick:function(){return l("PC_Eject_Disk",{name:e})}})})},e)}))})}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",children:(0,o.createComponentVNode)(2,a.Table,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"transparent",icon:i[e.name]||"window-maximize-o",content:e.desc,onClick:function(){return l("PC_runprogram",{name:e.name})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,width:"18px",children:!!e.running&&(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"times",tooltip:"Close program",tooltipPosition:"left",onClick:function(){return l("PC_killprogram",{name:e.name})}})})]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetChat=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosNetChat=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.can_admin,u=l.adminmode,s=l.authed,m=l.username,p=l.active_channel,C=l.is_operator,h=l.all_channels,N=void 0===h?[]:h,V=l.clients,b=void 0===V?[]:V,f=l.messages,g=void 0===f?[]:f,v=null!==p,k=s||u;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:900,height:675,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,a.Section,{height:"600px",children:(0,o.createComponentVNode)(2,a.Table,{height:"580px",children:(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"200px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"537px",overflowY:"scroll",children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"New Channel...",onCommit:function(e,t){return i("PRG_newchannel",{new_channel_name:t})}}),N.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.chan,selected:e.id===p,color:"transparent",onClick:function(){return i("PRG_joinchannel",{id:e.id})}},e.chan)}))]}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,mt:1,content:m+"...",currentValue:m,onCommit:function(e,t){return i("PRG_changename",{new_name:t})}}),!!d&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"ADMIN MODE: "+(u?"ON":"OFF"),color:u?"bad":"good",onClick:function(){return i("PRG_toggleadmin")}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Box,{height:"560px",overflowY:"scroll",children:v&&(k?g.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.msg},e.msg)})):(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",mt:4,fontSize:"40px"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,fontSize:"18px",children:"THIS CHANNEL IS PASSWORD PROTECTED"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"INPUT PASSWORD TO ACCESS"})]}))}),(0,o.createComponentVNode)(2,a.Input,{fluid:!0,selfClear:!0,mt:1,onEnter:function(e,t){return i("PRG_speak",{message:t})}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"150px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"477px",overflowY:"scroll",children:b.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.name},e.name)}))}),v&&k&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Save log...",defaultValue:"new_log",onCommit:function(e,t){return i("PRG_savelog",{log_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Leave Channel",onClick:function(){return i("PRG_leavechannel")}})],4),!!C&&s&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Delete Channel",onClick:function(){return i("PRG_deletechannel")}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Rename Channel...",onCommit:function(e,t){return i("PRG_renamechannel",{new_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Set Password...",onCommit:function(e,t){return i("PRG_setpassword",{new_password:t})}})],4)]})]})})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDosContent=t.NtosNetDos=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosNetDos=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.relays,d=void 0===l?[]:l,u=i.focus,s=i.target,m=i.speed,p=i.overload,C=i.capacity,h=i.error;if(h)return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:h}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Reset",textAlign:"center",onClick:function(){return c("PRG_reset")}})],4);var N=function(e){for(var t="",n=p/C;t.lengthn?t+="0":t+="1";return t};return s?(0,o.createComponentVNode)(2,a.Section,{fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{children:["CURRENT SPEED: ",m," GQ/s"]}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)})]}):(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.id,selected:u===e.id,onClick:function(){return c("PRG_target_relay",{targid:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"EXECUTE",color:"bad",textAlign:"center",disabled:!u,mt:1,onClick:function(){return c("PRG_execute")}})]})};t.NtosNetDosContent=i},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDownloader=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosNetDownloader=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.PC_device_theme,s=d.disk_size,m=d.disk_used,p=d.downloadable_programs,C=void 0===p?[]:p,h=d.error,N=d.hacked_programs,V=void 0===N?[]:N,b=d.hackedavailable;return(0,o.createComponentVNode)(2,c.NtosWindow,{theme:u,width:480,height:735,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[!!h&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:h}),(0,o.createComponentVNode)(2,a.Button,{content:"Reset",onClick:function(){return l("PRG_reseterror")}})]}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk usage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m,minValue:0,maxValue:s,children:m+" GQ / "+s+" GQ"})})})}),(0,o.createComponentVNode)(2,a.Section,{children:C.map((function(e){return(0,o.createComponentVNode)(2,i,{program:e},e.filename)}))}),!!b&&(0,o.createComponentVNode)(2,a.Section,{title:"UNKNOWN Software Repository",children:[(0,o.createComponentVNode)(2,a.NoticeBox,{mb:1,children:"Please note that Nanotrasen does not recommend download of software from non-official servers."}),V.map((function(e){return(0,o.createComponentVNode)(2,i,{program:e},e.filename)}))]})]})})};var i=function(e,t){var n=e.program,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.disk_size,u=l.disk_used,s=l.downloadcompletion,m=l.downloading,p=l.downloadname,C=l.downloadsize,h=d-u;return(0,o.createComponentVNode)(2,a.Box,{mb:3,children:[(0,o.createComponentVNode)(2,a.Flex,{align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,grow:1,children:n.filedesc}),(0,o.createComponentVNode)(2,a.Flex.Item,{color:"label",nowrap:!0,children:[n.size," GQ"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{ml:2,width:"94px",textAlign:"center",children:n.filename===p&&(0,o.createComponentVNode)(2,a.ProgressBar,{color:"green",minValue:0,maxValue:C,value:s})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Download",disabled:m||n.size>h,onClick:function(){return i("PRG_downloadfile",{filename:n.filename})}})})]}),"Compatible"!==n.compatibility&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Incompatible!"]}),n.size>h&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Not enough disk space!"]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,color:"label",fontSize:"12px",children:n.fileinfo})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetMonitor=void 0;var o=n(0),r=n(1),a=n(2),c=n(3);t.NtosNetMonitor=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.ntnetrelays,u=l.ntnetstatus,s=l.config_softwaredownload,m=l.config_peertopeer,p=l.config_communication,C=l.config_systemcontrol,h=l.idsalarm,N=l.idsstatus,V=l.ntnetmaxlogs,b=l.maxlogs,f=l.minlogs,g=l.ntnetlogs,v=void 0===g?[]:g;return(0,o.createComponentVNode)(2,c.NtosWindow,{resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,r.NoticeBox,{children:"WARNING: Disabling wireless transmitters when using a wireless device may prevent you from reenabling them!"}),(0,o.createComponentVNode)(2,r.Section,{title:"Wireless Connectivity",buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:u?"power-off":"times",content:u?"ENABLED":"DISABLED",selected:u,onClick:function(){return i("toggleWireless")}}),children:d?(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Active NTNet Relays",children:d})}):"No Relays Connected"}),(0,o.createComponentVNode)(2,r.Section,{title:"Firewall Configuration",children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Software Downloads",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:s?"power-off":"times",content:s?"ENABLED":"DISABLED",selected:s,onClick:function(){return i("toggle_function",{id:"1"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Peer to Peer Traffic",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:m?"power-off":"times",content:m?"ENABLED":"DISABLED",selected:m,onClick:function(){return i("toggle_function",{id:"2"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Communication Systems",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:p?"power-off":"times",content:p?"ENABLED":"DISABLED",selected:p,onClick:function(){return i("toggle_function",{id:"3"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Remote System Control",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:C?"power-off":"times",content:C?"ENABLED":"DISABLED",selected:C,onClick:function(){return i("toggle_function",{id:"4"})}})})]})}),(0,o.createComponentVNode)(2,r.Section,{title:"Security Systems",children:[!!h&&(0,o.createFragment)([(0,o.createComponentVNode)(2,r.NoticeBox,{children:"NETWORK INCURSION DETECTED"}),(0,o.createComponentVNode)(2,r.Box,{italics:!0,children:"Abnormal activity has been detected in the network. Check system logs for more information"})],4),(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"IDS Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Button,{icon:N?"power-off":"times",content:N?"ENABLED":"DISABLED",selected:N,onClick:function(){return i("toggleIDS")}}),(0,o.createComponentVNode)(2,r.Button,{icon:"sync",content:"Reset",color:"bad",onClick:function(){return i("resetIDS")}})],4)}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Max Log Count",buttons:(0,o.createComponentVNode)(2,r.NumberInput,{value:V,minValue:f,maxValue:b,width:"39px",onChange:function(e,t){return i("updatemaxlogs",{new_number:t})}})})]}),(0,o.createComponentVNode)(2,r.Section,{title:"System Log",level:2,buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:"trash",content:"Clear Logs",onClick:function(){return i("purgelogs")}}),children:v.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{className:"candystripe",children:e.entry},e.entry)}))})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosPowerMonitor=void 0;var o=n(0),r=n(3),a=n(143);t.NtosPowerMonitor=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:550,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.PowerMonitorContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRadarSyndicate=void 0;var o=n(0),r=n(3),a=n(208);t.NtosRadarSyndicate=function(e,t){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:800,height:600,theme:"syndicate",children:(0,o.createComponentVNode)(2,a.NtosRadarContent,{sig_err:"Out of Range"})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRequestKiosk=void 0;var o=n(0),r=n(209),a=n(3);t.NtosRequestKiosk=function(e,t){return(0,o.createComponentVNode)(2,a.NtosWindow,{width:550,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,r.RequestKioskContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRevelation=void 0;var o=n(0),r=n(1),a=n(2),c=n(3);t.NtosRevelation=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Button.Input,{fluid:!0,content:"Obfuscate Name...",onCommit:function(e,t){return i("PRG_obfuscate",{new_name:t})},mb:1}),(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Payload Status",buttons:(0,o.createComponentVNode)(2,r.Button,{content:l.armed?"ARMED":"DISARMED",color:l.armed?"bad":"average",onClick:function(){return i("PRG_arm")}})})}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,bold:!0,content:"ACTIVATE",textAlign:"center",color:"bad",disabled:!l.armed})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosRoboControl=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosRoboControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.bots,s=d.id_owner,m=d.has_id;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:550,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Robot Control Console",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Id Card",children:[s,!!m&&(0,o.createComponentVNode)(2,a.Button,{ml:2,icon:"eject",content:"Eject",onClick:function(){return l("ejectcard")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Bots in range",children:d.botcount})]})}),null==u?void 0:u.map((function(e){return(0,o.createComponentVNode)(2,i,{robot:e},e.bot_ref)}))]})})};var i=function(e,t){var n=e.robot,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.mules||[],u=!!n.mule_check&&function(e,t){return null==e?void 0:e.find((function(e){return e.mule_ref===t}))}(d,n.bot_ref),s=1===n.mule_check?"rgba(110, 75, 14, 1)":"rgba(74, 59, 140, 1)";return(0,o.createComponentVNode)(2,a.Section,{title:n.name,style:{border:"4px solid "+s},buttons:u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"play",tooltip:"Go to Destination.",onClick:function(){return i("go",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"pause",tooltip:"Stop Moving.",onClick:function(){return i("stop",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"home",tooltip:"Travel Home.",tooltipPosition:"bottom-left",onClick:function(){return i("home",{robot:u.mule_ref})}})],4),children:(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Model",children:n.model}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:n.locat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:n.mode}),u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Loaded Cargo",children:l.load||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:u.home}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:u.dest||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.power,minValue:0,maxValue:100,ranges:{good:[60,Infinity],average:[20,60],bad:[-Infinity,20]}})})],4)]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"150px",children:[u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set Destination",onClick:function(){return i("destination",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set ID",onClick:function(){return i("setid",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set Home",onClick:function(){return i("sethome",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Unload Cargo",onClick:function(){return i("unload",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Auto Return",checked:u.autoReturn,onClick:function(){return i("autoret",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Auto Pickup",checked:u.autoPickup,onClick:function(){return i("autopick",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Delivery Report",checked:u.reportDelivery,onClick:function(){return i("report",{robot:u.mule_ref})}})],4),!u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Stop Patrol",onClick:function(){return i("patroloff",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Start Patrol",onClick:function(){return i("patrolon",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Summon",onClick:function(){return i("summon",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Eject PAi",onClick:function(){return i("ejectpai",{robot:n.bot_ref})}})],4)]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosShipping=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.NtosShipping=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:450,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"NTOS Shipping Hub.",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Id",onClick:function(){return i("ejectid")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current User",children:l.current_user||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inserted Card",children:l.card_owner||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available Paper",children:l.has_printer?l.paperamt:"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Profit on Sale",children:[l.barcode_split,"%"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Shipping Options",children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"id-card",tooltip:"The currently ID card will become the current user.",tooltipPosition:"right",disabled:!l.has_id_slot,onClick:function(){return i("selectid")},content:"Set Current ID"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"print",tooltip:"Print a barcode to use on a wrapped package.",tooltipPosition:"right",disabled:!l.has_printer||!l.current_user,onClick:function(){return i("print")},content:"Print Barcode"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"tags",tooltip:"Set how much profit you'd like on your package.",tooltipPosition:"right",onClick:function(){return i("setsplit")},content:"Set Profit Margin"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",content:"Reset ID",onClick:function(){return i("resetid")}})})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosStationAlertConsole=void 0;var o=n(0),r=n(3),a=n(210);t.NtosStationAlertConsole=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:315,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.StationAlertConsoleContent)})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosSupermatterMonitorContent=t.NtosSupermatterMonitor=void 0;var o=n(0),r=n(14),a=n(30),c=n(9),i=n(2),l=n(1),d=n(36),u=n(3),s=function(e){return Math.log2(16+Math.max(0,e))-4};t.NtosSupermatterMonitor=function(e,t){return(0,o.createComponentVNode)(2,u.NtosWindow,{width:600,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,u.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,m)})})};var m=function(e,t){var n=(0,i.useBackend)(t),u=n.act,m=n.data,C=m.active,h=m.SM_integrity,N=m.SM_power,V=m.SM_ambienttemp,b=m.SM_ambientpressure;if(!C)return(0,o.createComponentVNode)(2,p);var f=(0,a.flow)([function(e){return e.filter((function(e){return e.amount>=.01}))},(0,r.sortBy)((function(e){return-e.amount}))])(m.gases||[]),g=Math.max.apply(Math,[1].concat(f.map((function(e){return e.amount}))));return(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"270px",children:(0,o.createComponentVNode)(2,l.Section,{title:"Metrics",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:h/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Relative EER",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:N,minValue:0,maxValue:5e3,ranges:{good:[-Infinity,5e3],average:[5e3,7e3],bad:[7e3,Infinity]},children:(0,c.toFixed)(N)+" MeV/cm3"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(V),minValue:0,maxValue:s(1e4),ranges:{teal:[-Infinity,s(80)],good:[s(80),s(373)],average:[s(373),s(1e3)],bad:[s(1e3),Infinity]},children:(0,c.toFixed)(V)+" K"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(b),minValue:0,maxValue:s(5e4),ranges:{good:[s(1),s(300)],average:[-Infinity,s(1e3)],bad:[s(1e3),+Infinity]},children:(0,c.toFixed)(b)+" kPa"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Gases",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"arrow-left",content:"Back",onClick:function(){return u("PRG_clear")}}),children:(0,o.createComponentVNode)(2,l.LabeledList,{children:f.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,d.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,d.getGasColor)(e.name),value:e.amount,minValue:0,maxValue:g,children:(0,c.toFixed)(e.amount,2)+"%"})},e.name)}))})})})]})};t.NtosSupermatterMonitorContent=m;var p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.supermatters,c=void 0===a?[]:a;return(0,o.createComponentVNode)(2,l.Section,{title:"Detected Supermatters",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"sync",content:"Refresh",onClick:function(){return r("PRG_refresh")}}),children:(0,o.createComponentVNode)(2,l.Table,{children:c.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.uid+". "+e.area_name}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,color:"label",children:"Integrity:"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,width:"120px",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:e.integrity/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,l.Button,{content:"Details",onClick:function(){return r("PRG_set",{target:e.uid})}})})]},e.uid)}))})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NuclearBomb=void 0;var o=n(0),r=n(6),a=n(2),c=n(1),i=n(3),l=function(e,t){var n=(0,a.useBackend)(t).act;return(0,o.createComponentVNode)(2,c.Box,{width:"185px",children:(0,o.createComponentVNode)(2,c.Grid,{width:"1px",children:[["1","4","7","C"],["2","5","8","0"],["3","6","9","E"]].map((function(e){return(0,o.createComponentVNode)(2,c.Grid.Column,{children:e.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,mb:"6px",content:e,textAlign:"center",fontSize:"40px",lineHeight:1.25,width:"55px",className:(0,r.classes)(["NuclearBomb__Button","NuclearBomb__Button--keypad","NuclearBomb__Button--"+e]),onClick:function(){return n("keypad",{digit:e})}},e)}))},e[0])}))})})};t.NuclearBomb=function(e,t){var n=(0,a.useBackend)(t),r=n.act,d=n.data,u=(d.anchored,d.disk_present,d.status1),s=d.status2;return(0,o.createComponentVNode)(2,i.Window,{width:350,height:442,theme:"retro",children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Box,{m:"6px",children:[(0,o.createComponentVNode)(2,c.Box,{mb:"6px",className:"NuclearBomb__displayBox",children:u}),(0,o.createComponentVNode)(2,c.Flex,{mb:1.5,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Box,{className:"NuclearBomb__displayBox",children:s})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{icon:"eject",fontSize:"24px",lineHeight:1,textAlign:"center",width:"43px",ml:"6px",mr:"3px",mt:"3px",className:"NuclearBomb__Button NuclearBomb__Button--keypad",onClick:function(){return r("eject_disk")}})})]}),(0,o.createComponentVNode)(2,c.Flex,{ml:"3px",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,l)}),(0,o.createComponentVNode)(2,c.Flex.Item,{ml:"6px",width:"129px",children:(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"ARM",textAlign:"center",fontSize:"28px",lineHeight:1.1,mb:"6px",className:"NuclearBomb__Button NuclearBomb__Button--C",onClick:function(){return r("arm")}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"ANCHOR",textAlign:"center",fontSize:"28px",lineHeight:1.1,className:"NuclearBomb__Button NuclearBomb__Button--E",onClick:function(){return r("anchor")}}),(0,o.createComponentVNode)(2,c.Box,{textAlign:"center",color:"#9C9987",fontSize:"80px",children:(0,o.createComponentVNode)(2,c.Icon,{name:"radiation"})}),(0,o.createComponentVNode)(2,c.Box,{height:"80px",className:"NuclearBomb__NTIcon"})]})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OperatingComputer=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}];t.OperatingComputer=function(e,t){var n=(0,r.useSharedState)(t,"tab",1),i=n[0],u=n[1];return(0,o.createComponentVNode)(2,c.Window,{width:350,height:470,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===i,onClick:function(){return u(1)},children:"Patient State"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===i,onClick:function(){return u(2)},children:"Surgery Procedures"})]}),1===i&&(0,o.createComponentVNode)(2,l),2===i&&(0,o.createComponentVNode)(2,d)]})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),l=c.table,d=c.procedures,u=void 0===d?[]:d,s=c.patient,m=void 0===s?{}:s;return l?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Patient State",children:m&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:m.statstate,children:m.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Type",children:m.blood_type}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,color:m.health>=0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m.health})})}),i.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type]/m.maxHealth,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m[e.type]})})},e.type)}))]})||"No Patient Detected"}),0===u.length&&(0,o.createComponentVNode)(2,a.Section,{children:"No Active Procedures"}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Next Step",children:[e.next_step,e.chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.chems_needed],0)]}),!!c.alternative_step&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alternative Step",children:[e.alternative_step,e.alt_chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.alt_chems_needed],0)]})]})},e.name)}))],0):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Table Detected"})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.surgeries,l=void 0===i?[]:i;return(0,o.createComponentVNode)(2,a.Section,{title:"Advanced Surgery Procedures",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"download",content:"Sync Research Database",onClick:function(){return c("sync")}}),l.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,children:e.desc},e.name)}))]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Orbit=void 0;var o=n(0),r=n(19),a=n(63),c=n(2),i=n(1),l=n(3);function d(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);nt},h=function(e,t){var n=e.name,o=t.name,r=n.match(m),a=o.match(m);return r&&a&&n.replace(m,"")===o.replace(m,"")?parseInt(r[1],10)-parseInt(a[1],10):C(n,o)},N=function(e,t){var n=(0,c.useBackend)(t).act,r=e.searchText,a=e.source,l=e.title,d=a.filter(p(r));return d.sort(h),a.length>0&&(0,o.createComponentVNode)(2,i.Section,{title:l+" - ("+a.length+")",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name.replace(s,""),onClick:function(){return n("orbit",{ref:e.ref})}},e.name)}))})},V=function(e,t){var n=(0,c.useBackend)(t).act,r=e.color,l=e.thing;return(0,o.createComponentVNode)(2,i.Button,{color:r,onClick:function(){return n("orbit",{ref:l.ref})},children:[l.name,l.orbiters&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,ml:1,children:["(",l.orbiters," ",(0,o.createComponentVNode)(2,i.Box,{as:"img",src:(0,a.resolveAsset)("ghost.png"),opacity:.7}),")"]})]})};t.Orbit=function(e,t){for(var n,r=(0,c.useBackend)(t),a=r.act,u=r.data,s=u.alive,m=u.antagonists,b=u.dead,f=u.ghosts,g=u.misc,v=u.npcs,k=(0,c.useLocalState)(t,"searchText",""),x=k[0],B=k[1],_={},w=d(m);!(n=w()).done;){var L=n.value;_[L.antag]===undefined&&(_[L.antag]=[]),_[L.antag].push(L)}var y=Object.entries(_);y.sort((function(e,t){return C(e[0],t[0])}));return(0,o.createComponentVNode)(2,l.Window,{title:"Orbit",width:350,height:700,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Flex,{children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Icon,{name:"search",mr:1})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Input,{placeholder:"Search...",autoFocus:!0,fluid:!0,value:x,onInput:function(e,t){return B(t)},onEnter:function(e,t){return function(e){for(var t=0,n=[y.map((function(e){return e[0],e[1]})),s,f,b,v,g];t0&&(0,o.createComponentVNode)(2,i.Section,{title:"Ghost-Visible Antagonists",children:y.map((function(e){var t=e[0],n=e[1];return(0,o.createComponentVNode)(2,i.Section,{title:t,level:2,children:n.filter(p(x)).sort(h).map((function(e){return(0,o.createComponentVNode)(2,V,{color:"bad",thing:e},e.name)}))},t)}))}),(0,o.createComponentVNode)(2,i.Section,{title:"Alive",children:s.filter(p(x)).sort(h).map((function(e){return(0,o.createComponentVNode)(2,V,{color:"good",thing:e},e.name)}))}),(0,o.createComponentVNode)(2,N,{title:"Ghosts",source:f,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"Dead",source:b,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"NPCs",source:v,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"Misc",source:g,searchText:x})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OreBox=void 0;var o=n(0),r=n(19),a=n(1),c=n(2),i=n(3);t.OreBox=function(e,t){var n=(0,c.useBackend)(t),l=n.act,d=n.data.materials;return(0,o.createComponentVNode)(2,i.Window,{width:335,height:415,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Ores",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Empty",onClick:function(){return l("removeall")}}),children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Ore"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:"Amount"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,r.toTitleCase)(e.name)}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,a.Box,{color:"label",inline:!0,children:e.amount})})]},e.type)}))]})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Box,{children:["All ores will be placed in here when you are wearing a mining stachel on your belt or in a pocket while dragging the ore box.",(0,o.createVNode)(1,"br"),"Gibtonite is not accepted."]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.OreRedemptionMachine=void 0;var o=n(0),r=n(19),a=n(2),c=n(1),i=n(3);t.OreRedemptionMachine=function(e,t){var n=(0,a.useBackend)(t),r=n.act,d=n.data,u=d.unclaimedPoints,s=d.materials,m=d.alloys,p=d.diskDesigns,C=d.hasDisk;return(0,o.createComponentVNode)(2,i.Window,{title:"Ore Redemption Machine",width:440,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.BlockQuote,{mb:1,children:["This machine only accepts ore.",(0,o.createVNode)(1,"br"),"Gibtonite and Slag are not accepted."]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"label",mr:1,children:"Unclaimed points:"}),u,(0,o.createComponentVNode)(2,c.Button,{ml:2,content:"Claim",disabled:0===u,onClick:function(){return r("Claim")}})]})]}),(0,o.createComponentVNode)(2,c.Section,{children:C&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{mb:1,children:(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject design disk",onClick:function(){return r("diskEject")}})}),(0,o.createComponentVNode)(2,c.Table,{children:p.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:["File ",e.index,": ",e.name]}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,c.Button,{disabled:!e.canupload,content:"Upload",onClick:function(){return r("diskUpload",{design:e.index})}})})]},e.index)}))})],4)||(0,o.createComponentVNode)(2,c.Button,{icon:"save",content:"Insert design disk",onClick:function(){return r("diskInsert")}})}),(0,o.createComponentVNode)(2,c.Section,{title:"Materials",children:(0,o.createComponentVNode)(2,c.Table,{children:s.map((function(e){return(0,o.createComponentVNode)(2,l,{material:e,onRelease:function(t){return r("Release",{id:e.id,sheets:t})}},e.id)}))})}),(0,o.createComponentVNode)(2,c.Section,{title:"Alloys",children:(0,o.createComponentVNode)(2,c.Table,{children:m.map((function(e){return(0,o.createComponentVNode)(2,l,{material:e,onRelease:function(t){return r("Smelt",{id:e.id,sheets:t})}},e.id)}))})})]})})};var l=function(e,t){var n=e.material,i=e.onRelease,l=(0,a.useLocalState)(t,"amount"+n.name,1),d=l[0],u=l[1],s=Math.floor(n.amount);return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,r.toTitleCase)(n.name).replace("Alloy","")}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{mr:2,color:"label",inline:!0,children:n.value&&n.value+" cr"})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{mr:2,color:"label",inline:!0,children:[s," sheets"]})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.NumberInput,{width:"32px",step:1,stepPixelSize:5,minValue:1,maxValue:50,value:d,onChange:function(e,t){return u(t)}}),(0,o.createComponentVNode)(2,c.Button,{disabled:s<1,content:"Release",onClick:function(){return i(d)}})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Pandemic=t.PandemicAntibodyDisplay=t.PandemicSymptomDisplay=t.PandemicDiseaseDisplay=t.PandemicBeakerDisplay=void 0;var o=n(0),r=n(14),a=n(2),c=n(1),i=n(3),l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.has_beaker,d=i.beaker_empty,u=i.has_blood,s=i.blood,m=!l||d;return(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Empty and Eject",color:"bad",disabled:m,onClick:function(){return r("empty_eject_beaker")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"trash",content:"Empty",disabled:m,onClick:function(){return r("empty_beaker")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",disabled:!l,onClick:function(){return r("eject_beaker")}})],4),children:l?d?(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Beaker is empty"}):u?(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Blood DNA",children:s&&s.dna||"Unknown"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Blood Type",children:s&&s.type||"Unknown"})]}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"No blood detected"}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No beaker loaded"})})};t.PandemicBeakerDisplay=l;var d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.is_ready;return(i.viruses||[]).map((function(e){var t=e.symptoms||[];return(0,o.createComponentVNode)(2,c.Section,{title:e.can_rename?(0,o.createComponentVNode)(2,c.Input,{value:e.name,onChange:function(t,n){return r("rename_disease",{index:e.index,name:n})}}):e.name,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"flask",content:"Create culture bottle",disabled:!l,onClick:function(){return r("create_culture_bottle",{index:e.index})}}),children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:e.description}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Agent",children:e.agent}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Spread",children:e.spread}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Possible Cure",children:e.cure})]})})]}),!!e.is_adv&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Statistics",level:2,children:(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Resistance",children:e.resistance}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stealth",children:e.stealth})]})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stage speed",children:e.stage_speed}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Transmissibility",children:e.transmission})]})})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Symptoms",level:2,children:t.map((function(e){return(0,o.createComponentVNode)(2,c.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,u,{symptom:e})})},e.name)}))})],4)]},e.name)}))};t.PandemicDiseaseDisplay=d;var u=function(e,t){var n=e.symptom,a=n.name,i=n.desc,l=n.stealth,d=n.resistance,u=n.stage_speed,s=n.transmission,m=n.level,p=n.neutered,C=(0,r.map)((function(e,t){return{desc:e,label:t}}))(n.threshold_desc||{});return(0,o.createComponentVNode)(2,c.Section,{title:a,level:2,buttons:!!p&&(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:"bad",children:"Neutered"}),children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:2,children:i}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Level",children:m}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Resistance",children:d}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stealth",children:l}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stage Speed",children:u}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Transmission",children:s})]})})]}),C.length>0&&(0,o.createComponentVNode)(2,c.Section,{title:"Thresholds",level:3,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.label,children:e.desc},e.label)}))})})]})};t.PandemicSymptomDisplay=u;var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.resistances||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Antibodies",children:l.length>0?(0,o.createComponentVNode)(2,c.LabeledList,{children:l.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,c.Button,{icon:"eye-dropper",content:"Create vaccine bottle",disabled:!i.is_ready,onClick:function(){return r("create_vaccine_bottle",{index:e.id})}})},e.name)}))}):(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:"bad",mt:1,children:"No antibodies detected."})})};t.PandemicAntibodyDisplay=s;t.Pandemic=function(e,t){var n=(0,a.useBackend)(t).data;return(0,o.createComponentVNode)(2,i.Window,{width:520,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l),!!n.has_blood&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,s)],4)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PaperSheet=void 0;var o=n(0),r=n(6),a=n(103),c=s(n(614)),i=s(n(615)),l=n(2),d=n(1),u=n(3);function s(e){return e&&e.__esModule?e:{"default":e}}function m(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function p(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}function C(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return h(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n]+)>/g,(function(e,t){return"$"+n[t]})))}if("function"==typeof t){var a=this;return o[Symbol.replace].call(this,e,(function(){var e=[];return e.push.apply(e,arguments),"object"!=typeof e[e.length-1]&&e.push(c(e,a)),t.apply(this,e)}))}return o[Symbol.replace].call(this,e,t)},N.apply(this,arguments)}function V(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&v(e,t)}function b(e){var t="function"==typeof Map?new Map:undefined;return(b=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,o)}function o(){return f(e,arguments,k(this).constructor)}return o.prototype=Object.create(e.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),v(o,e)})(e)}function f(e,t,n){return(f=g()?Reflect.construct:function(e,t,n){var o=[null];o.push.apply(o,t);var r=new(Function.bind.apply(e,o));return n&&v(r,n.prototype),r}).apply(null,arguments)}function g(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function v(e,t){return(v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function k(e){return(k=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var x=function(e,t,n,o){return void 0===o&&(o=!1),"'+e+""},B=/\[(_+)\]/g,_=N(/\[\]/gm,{id:2}),w=/%s(?:ign)?(?=\\s|$)/gim,L=function(e,t,n,o,r){var a=e.replace(B,(function(e,a,c,i){var l=function(e,t,n){t=n+"x "+t;var o=document.createElement("canvas").getContext("2d");return o.font=t,o.measureText(e).width}(e,t,n)+"px";return function(e,t,n,o,r,a){return'['+(n=a,r=l,(r?n.replace(/")};return(0,o.createComponentVNode)(2,d.Box,{position:"relative",backgroundColor:i,width:"100%",height:"100%",children:[(0,o.createComponentVNode)(2,d.Box,{fillPositionedParent:!0,width:"100%",height:"100%",dangerouslySetInnerHTML:s,p:"10px"}),u.map((function(e,t){return(0,o.createComponentVNode)(2,S,{image:{sprite:e[0],x:e[1],y:e[2],rotate:e[3]}},e[0]+t)}))]})},T=function(e){function t(t,n){var o;return(o=e.call(this,t,n)||this).state={x:0,y:0,rotate:0},o}m(t,e);var n=t.prototype;return n.findStampPosition=function(e){for(var t=event.pageX,n=event.pageY,o={left:e.target.offsetLeft,top:e.target.offsetTop},r=e.target.offsetParent;r;)o.left+=r.offsetLeft,o.top+=r.offsetTop,r=r.offsetParent;var c=[t-o.left,n-o.top],i=(0,a.vecScale)([121,51],.5);return(0,a.vecSubtract)(c,i)},n.componentDidMount=function(){document.onwheel=this.handleWheel.bind(this)},n.handleMouseMove=function(e){var t=this.findStampPosition(e);y(e),this.setState({x:t[0],y:t[1]})},n.handleMouseClick=function(e){var t=this.findStampPosition(e),n=(0,l.useBackend)(this.context),o=n.act,r=n.data;o("stamp",{x:t[0],y:t[1],r:this.state.rotate,stamp_class:this.props.stamp_class,stamp_icon_state:r.stamp_icon_state}),this.setState({x:t[0],y:t[1]})},n.handleWheel=function(e){var t=e.deltaY>0?15:-15;if(e.deltaY<0&&0===this.state.rotate)this.setState({rotate:360+t});else if(e.deltaY>0&&360===this.state.rotate)this.setState({rotate:t});else{var n={rotate:t+this.state.rotate};this.setState((function(){return n}))}y(e)},n.render=function(){var e=this.props,t=e.value,n=e.stamp_class,r=e.stamps,a=p(e,["value","stamp_class","stamps"]),c=r||[],i={sprite:n,x:this.state.x,y:this.state.y,rotate:this.state.rotate};return(0,o.normalizeProps)((0,o.createComponentVNode)(2,d.Box,Object.assign({onClick:this.handleMouseClick.bind(this),onMouseMove:this.handleMouseMove.bind(this),onwheel:this.handleWheel.bind(this)},a,{children:[(0,o.createComponentVNode)(2,I,{readOnly:!0,value:t,stamps:c}),(0,o.createComponentVNode)(2,S,{opacity:.5,image:i})]})))},t}(o.Component),A=function(e){function t(t,n){var o;return(o=e.call(this,t,n)||this).state={previewSelected:"Preview",old_text:t.value||"",textarea_text:"",combined_text:t.value||""},o}m(t,e);var n=t.prototype;return n.createPreview=function(e,t){void 0===t&&(t=!1);var n,o,r=(0,l.useBackend)(this.context).data,a=r.text,d=r.pen_color,u=r.pen_font,s=r.is_crayon,m=r.field_counter,p=r.edit_usr,h={text:a};if((e=e.trim()).length>0){var N=function(e){return c["default"].sanitize(e,{FORBID_ATTR:["class","style"],ALLOWED_TAGS:["br","code","li","p","pre","span","table","td","tr","th","ul","ol","menu","font","b","center","table","tr","th"]})}(e+="\n"===e[e.length]?" \n":"\n \n"),V=(n=d,o=p,N.replace(w,(function(){return x(o,"Times New Roman",n,!0)}))),b=L(V,u,12,d,m),f=function(e){return(0,i["default"])(e,{breaks:!0,smartypants:!0,smartLists:!0,walkTokens:function(e){switch(e.type){case"url":case"autolink":case"reflink":case"link":case"image":e.type="text",e.href=""}},baseUrl:"thisshouldbreakhttp"})}(b.text),g=x(f,u,d,s);h.text+=g,h.field_counter=b.counter}if(t){var v=function(e,t,n,o,r){var a;void 0===r&&(r=!1);for(var i={},l=[];null!==(a=_.exec(e));){var d=a[0],u=a.groups.id;if(u){var s=document.getElementById(u);if(0===(s&&s.value?s.value:"").length)continue;var m=c["default"].sanitize(s.value.trim(),{ALLOWED_TAGS:[]});if(0===m.length)continue;var p=s.cloneNode(!0);m.match(w)?(p.style.fontFamily="Times New Roman",r=!0,p.defaultValue=o):(p.style.fontFamily=t,p.defaultValue=m),r&&(p.style.fontWeight="bold"),p.style.color=n,p.disabled=!0;var h=document.createElement("div");h.appendChild(p),i[u]=m,l.push({value:"["+h.innerHTML+"]",raw_text:d})}}if(l.length>0)for(var N,V=C(l);!(N=V()).done;){var b=N.value;e=e.replace(b.raw_text,b.value)}return{text:e,fields:i}}(h.text,u,d,p,s);h.text=v.text,h.form_fields=v.fields}return h},n.onInputHandler=function(e,t){var n=this;if(t!==this.state.textarea_text){var o=this.state.old_text.length+this.state.textarea_text.length;if(o>5e3&&(t=o-5e3>=t.length?"":t.substr(0,t.length-(o-5e3)))===this.state.textarea_text)return;this.setState((function(){return{textarea_text:t,combined_text:n.createPreview(t)}}))}},n.finalUpdate=function(e){var t=(0,l.useBackend)(this.context).act,n=this.createPreview(e,!0);t("save",n),this.setState((function(){return{textarea_text:"",previewSelected:"save",combined_text:n.text}}))},n.render=function(){var e=this,t=this.props,n=(t.value,t.textColor),r=t.fontFamily,a=t.stamps,c=t.backgroundColor;return p(t,["value","textColor","fontFamily","stamps","backgroundColor"]),(0,o.createComponentVNode)(2,d.Flex,{direction:"column",fillPositionedParent:!0,children:[(0,o.createComponentVNode)(2,d.Flex.Item,{children:(0,o.createComponentVNode)(2,d.Tabs,{children:[(0,o.createComponentVNode)(2,d.Tabs.Tab,{textColor:"black",backgroundColor:"Edit"===this.state.previewSelected?"grey":"white",selected:"Edit"===this.state.previewSelected,onClick:function(){return e.setState({previewSelected:"Edit"})},children:"Edit"},"marked_edit"),(0,o.createComponentVNode)(2,d.Tabs.Tab,{textColor:"black",backgroundColor:"Preview"===this.state.previewSelected?"grey":"white",selected:"Preview"===this.state.previewSelected,onClick:function(){return e.setState((function(){return{previewSelected:"Preview",textarea_text:e.state.textarea_text,combined_text:e.createPreview(e.state.textarea_text).text}}))},children:"Preview"},"marked_preview"),(0,o.createComponentVNode)(2,d.Tabs.Tab,{textColor:"black",backgroundColor:"confirm"===this.state.previewSelected?"red":"save"===this.state.previewSelected?"grey":"white",selected:"confirm"===this.state.previewSelected||"save"===this.state.previewSelected,onClick:function(){"confirm"===e.state.previewSelected?e.finalUpdate(e.state.textarea_text):"Edit"===e.state.previewSelected?e.setState((function(){return{previewSelected:"confirm",textarea_text:e.state.textarea_text,combined_text:e.createPreview(e.state.textarea_text).text}})):e.setState({previewSelected:"confirm"})},children:"confirm"===this.state.previewSelected?"confirm":"save"},"marked_done")]})}),(0,o.createComponentVNode)(2,d.Flex.Item,{grow:1,basis:1,children:"Edit"===this.state.previewSelected&&(0,o.createComponentVNode)(2,d.TextArea,{value:this.state.textarea_text,textColor:n,fontFamily:r,height:window.innerHeight-80+"px",backgroundColor:c,onInput:this.onInputHandler.bind(this)})||(0,o.createComponentVNode)(2,I,{value:this.state.combined_text,stamps:a,fontFamily:r,textColor:n})})]})},t}(o.Component);t.PaperSheet=function(e,t){var n=(0,l.useBackend)(t).data,r=n.edit_mode,a=n.text,c=n.paper_color,i=n.pen_color,s=void 0===i?"black":i,m=n.pen_font,p=void 0===m?"Verdana":m,C=n.stamps,h=n.stamp_class,N=(n.stamped,c&&"white"!==c?c:"#FFFFFF"),V=C&&null!==C?C:[];return(0,o.createComponentVNode)(2,u.Window,{theme:"paper",width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{children:(0,o.createComponentVNode)(2,d.Box,{fillPositionedParent:!0,backgroundColor:N,children:function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,I,{value:a,stamps:V,readOnly:!0});case 1:return(0,o.createComponentVNode)(2,A,{value:a,textColor:s,fontFamily:p,stamps:V,backgroundColor:N});case 2:return(0,o.createComponentVNode)(2,T,{value:a,stamps:V,stamp_class:h});default:return"ERROR ERROR WE CANNOT BE HERE!!"}}(r)})})})}},,,function(e,t,n){"use strict";t.__esModule=!0,t.ParticleAccelerator=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ParticleAccelerator=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.assembled,u=l.power,s=l.strength;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:185,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Run Scan",onClick:function(){return i("scan")}}),children:(0,o.createComponentVNode)(2,a.Box,{color:d?"good":"bad",children:d?"Ready - All parts in place":"Unable to detect all parts"})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Particle Accelerator Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,disabled:!d,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Particle Strength",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:!d,onClick:function(){return i("remove_strength")}})," ",String(s).padStart(1,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:!d,onClick:function(){return i("add_strength")}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PersonalCrafting=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);function i(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n50?"good":d>15&&"average")||"bad";return(0,o.createComponentVNode)(2,c.Window,{width:450,height:340,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!l.anchored&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Generator not anchored."}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power switch",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.active?"power-off":"times",onClick:function(){return i("toggle_power")},disabled:!l.ready_to_boot,children:l.active?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:l.sheet_name+" sheets",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:u,children:l.sheets}),l.sheets>=1&&(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"eject",disabled:l.active,onClick:function(){return i("eject")},children:"Eject"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current sheet level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.stack_percent/100,ranges:{good:[.1,Infinity],average:[.01,.1],bad:[-Infinity,.01]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Heat level",children:l.current_heat<100?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:"Nominal"}):l.current_heat<200?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",children:"Caution"}):(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"DANGER"})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current output",children:l.power_output}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust output",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",onClick:function(){return i("lower_power")},children:l.power_generated}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return i("higher_power")},children:l.power_generated})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power available",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:!l.connected&&"bad",children:l.connected?l.power_available:"Unconnected"})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortablePump=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(211);t.PortablePump=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.direction,s=(d.holding,d.target_pressure),m=d.default_pressure,p=d.min_pressure,C=d.max_pressure;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:315,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,i.PortableBasicInfo),(0,o.createComponentVNode)(2,a.Section,{title:"Pump",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"sign-in-alt":"sign-out-alt",content:u?"In":"Out",selected:u,onClick:function(){return l("direction")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:s,unit:"kPa",width:"75px",minValue:p,maxValue:C,step:10,onChange:function(e,t){return l("pressure",{pressure:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",disabled:s===p,onClick:function(){return l("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",disabled:s===m,onClick:function(){return l("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",disabled:s===C,onClick:function(){return l("pressure",{pressure:"max"})}})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableScrubber=void 0;var o=n(0),r=n(2),a=n(1),c=n(36),i=n(3),l=n(211);t.PortableScrubber=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data.filter_types||[];return(0,o.createComponentVNode)(2,i.Window,{width:320,height:350,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,l.PortableBasicInfo),(0,o.createComponentVNode)(2,a.Section,{title:"Filters",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,c.getGasLabel)(e.gas_id,e.gas_name),selected:e.enabled,onClick:function(){return d("toggle_filter",{val:e.gas_id})}},e.id)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.PortableTurret=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.PortableTurret=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.silicon_user,u=l.locked,s=l.on,m=l.check_weapons,p=l.neutralize_criminals,C=l.neutralize_all,h=l.neutralize_unidentified,N=l.neutralize_nonmindshielded,V=l.neutralize_cyborgs,b=l.neutralize_heads,f=l.manual_control,g=l.allow_manual_control,v=l.lasertag_turret;return(0,o.createComponentVNode)(2,c.Window,{width:310,height:v?110:292,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Swipe an ID card to ",u?"unlock":"lock"," this interface."]}),(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",buttons:!v&&(!!g||!!f&&!!d)&&(0,o.createComponentVNode)(2,a.Button,{icon:f?"wifi":"terminal",content:f?"Remotely Controlled":"Manual Control",disabled:f,color:"bad",onClick:function(){return i("manual")}}),children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"power-off":"times",content:s?"On":"Off",selected:s,disabled:u,onClick:function(){return i("power")}})})})}),!v&&(0,o.createComponentVNode)(2,a.Section,{title:"Target Settings",buttons:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:!b,content:"Ignore Command",disabled:u,onClick:function(){return i("shootheads")}}),children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:C,content:"Non-Security and Non-Command",disabled:u,onClick:function(){return i("shootall")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:m,content:"Unauthorized Weapons",disabled:u,onClick:function(){return i("authweapon")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:h,content:"Unidentified Life Signs",disabled:u,onClick:function(){return i("checkxenos")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:N,content:"Non-Mindshielded",disabled:u,onClick:function(){return i("checkloyal")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:p,content:"Wanted Criminals",disabled:u,onClick:function(){return i("shootcriminals")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:V,content:"Cyborgs",disabled:u,onClick:function(){return i("shootborgs")}})]})],0)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ProbingConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ProbingConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.open,u=l.feedback,s=l.occupant,m=l.occupant_name,p=l.occupant_status;return(0,o.createComponentVNode)(2,c.Window,{width:330,height:207,theme:"abductor",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Machine Report",children:u})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Scanner",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"sign-out-alt":"sign-in-alt",content:d?"Close":"Open",onClick:function(){return i("door")}}),children:s&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:3===p?"bad":2===p?"average":"good",children:3===p?"Deceased":2===p?"Unconscious":"Conscious"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Experiments",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer",content:"Probe",onClick:function(){return i("experiment",{experiment_type:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"brain",content:"Dissect",onClick:function(){return i("experiment",{experiment_type:2})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"search",content:"Analyze",onClick:function(){return i("experiment",{experiment_type:3})}})]})]})||(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Subject"})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ProximitySensor=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ProximitySensor=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.minutes,u=l.seconds,s=l.timing,m=l.scanning,p=l.sensitivity;return(0,o.createComponentVNode)(2,c.Window,{width:250,height:185,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"lock":"unlock",content:m?"Armed":"Not Armed",selected:m,onClick:function(){return i("scanning")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Detection Range",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:m,onClick:function(){return i("sense",{range:-1})}})," ",String(p).padStart(1,"1")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:m,onClick:function(){return i("sense",{range:1})}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Auto Arm",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:s?"Stop":"Start",selected:s,disabled:m,onClick:function(){return i("time")}}),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:m||s,onClick:function(){return i("input",{adjust:-30})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:m||s,onClick:function(){return i("input",{adjust:-1})}})," ",String(d).padStart(2,"0"),":",String(u).padStart(2,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:m||s,onClick:function(){return i("input",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:m||s,onClick:function(){return i("input",{adjust:30})}})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Radio=void 0;var o=n(0),r=n(14),a=n(9),c=n(2),i=n(1),l=n(36),d=n(3);t.Radio=function(e,t){var n=(0,c.useBackend)(t),u=n.act,s=n.data,m=s.freqlock,p=s.frequency,C=s.minFrequency,h=s.maxFrequency,N=s.listening,V=s.broadcasting,b=s.command,f=s.useCommand,g=s.subspace,v=s.subspaceSwitchable,k=l.RADIO_CHANNELS.find((function(e){return e.freq===p})),x=(0,r.map)((function(e,t){return{name:t,status:!!e}}))(s.channels),B=106;return g&&(x.length>0?B+=21*x.length+6:B+=24),(0,o.createComponentVNode)(2,d.Window,{width:360,height:B,children:(0,o.createComponentVNode)(2,d.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Frequency",children:[m&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"light-gray",children:(0,a.toFixed)(p/10,1)+" kHz"})||(0,o.createComponentVNode)(2,i.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:10,minValue:C/10,maxValue:h/10,value:p/10,format:function(e){return(0,a.toFixed)(e,1)},onDrag:function(e,t){return u("frequency",{adjust:t-p/10})}}),k&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:k.color,ml:2,children:["[",k.name,"]"]})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Audio",children:[(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",width:"37px",icon:N?"volume-up":"volume-mute",selected:N,onClick:function(){return u("listen")}}),(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",width:"37px",icon:V?"microphone":"microphone-slash",selected:V,onClick:function(){return u("broadcast")}}),!!b&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"bullhorn",selected:f,content:"High volume "+(f?"ON":"OFF"),onClick:function(){return u("command")}}),!!v&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"bullhorn",selected:g,content:"Subspace Tx "+(g?"ON":"OFF"),onClick:function(){return u("subspace")}})]}),!!g&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Channels",children:[0===x.length&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"bad",children:"No encryption keys installed."}),x.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:e.status?"check-square-o":"square-o",selected:e.status,content:e.name,onClick:function(){return u("channel",{channel:e.name})}})},e.name)}))]})]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RadioactiveMicrolaser=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.RadioactiveMicrolaser=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.irradiate,u=l.stealth,s=l.scanmode,m=l.intensity,p=l.wavelength,C=l.on_cooldown,h=l.cooldown;return(0,o.createComponentVNode)(2,c.Window,{title:"Radioactive Microlaser",width:320,height:335,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Status",children:(0,o.createComponentVNode)(2,a.Box,{color:C?"average":"good",children:C?"Recharging":"Ready"})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Scanner Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Irradiation",children:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return i("irradiate")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stealth Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"eye-slash":"eye",content:u?"On":"Off",disabled:!d,selected:u,onClick:function(){return i("stealth")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"mortar-pestle":"heartbeat",content:s?"Scan Reagents":"Scan Health",disabled:d&&u,onClick:function(){return i("scanmode")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Laser Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Intensity",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return i("radintensity",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return i("radintensity",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(m),width:"40px",minValue:1,maxValue:20,onChange:function(e,t){return i("radintensity",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return i("radintensity",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return i("radintensity",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Wavelength",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return i("radwavelength",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return i("radwavelength",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(p),width:"40px",minValue:0,maxValue:120,onChange:function(e,t){return i("radwavelength",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return i("radwavelength",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return i("radwavelength",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Cooldown",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:h})})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RapidPipeDispenser=void 0;var o=n(0),r=n(6),a=n(2),c=n(1),i=n(3),l=["Atmospherics","Disposals","Transit Tubes"],d={Atmospherics:"wrench",Disposals:"trash-alt","Transit Tubes":"bus",Pipes:"grip-lines","Disposal Pipes":"grip-lines",Devices:"microchip","Heat Exchange":"thermometer-half","Station Equipment":"microchip"},u={grey:"#bbbbbb",amethyst:"#a365ff",blue:"#4466ff",brown:"#b26438",cyan:"#48eae8",dark:"#808080",green:"#1edd00",orange:"#ffa030",purple:"#b535ea",red:"#ff3333",violet:"#6e00f6",yellow:"#ffce26"},s=[{name:"Dispense",bitmask:1},{name:"Connect",bitmask:2},{name:"Destroy",bitmask:4},{name:"Paint",bitmask:8}];t.RapidPipeDispenser=function(e,t){var n=(0,a.useBackend)(t),m=n.act,p=n.data,C=p.category,h=p.categories,N=void 0===h?[]:h,V=p.selected_color,b=p.piping_layer,f=p.mode,g=p.preview_rows.flatMap((function(e){return e.previews})),v=(0,a.useLocalState)(t,"categoryName"),k=v[0],x=v[1],B=N.find((function(e){return e.cat_name===k}))||N[0];return(0,o.createComponentVNode)(2,i.Window,{width:425,height:515,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Category",children:l.map((function(e,t){return(0,o.createComponentVNode)(2,c.Button,{selected:C===t,icon:d[e],color:"transparent",content:e,onClick:function(){return m("category",{category:t})}},e)}))}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Modes",children:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{checked:f&e.bitmask,content:e.name,onClick:function(){return m("mode",{mode:e.bitmask})}},e.bitmask)}))}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,width:"64px",color:u[V],children:V}),Object.keys(u).map((function(e){return(0,o.createComponentVNode)(2,c.ColorBox,{ml:1,color:u[e],onClick:function(){return m("color",{paint_color:e})}},e)}))]})]})}),(0,o.createComponentVNode)(2,c.Flex,{m:-.5,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{m:.5,children:(0,o.createComponentVNode)(2,c.Section,{children:[0===C&&(0,o.createComponentVNode)(2,c.Box,{mb:1,children:[1,2,3].map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{fluid:!0,checked:e===b,content:"Layer "+e,onClick:function(){return m("piping_layer",{piping_layer:e})}},e)}))}),(0,o.createComponentVNode)(2,c.Box,{width:"108px",children:g.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{title:e.dir_name,selected:e.selected,style:{width:"48px",height:"48px",padding:0},onClick:function(){return m("setdir",{dir:e.dir,flipped:e.flipped})},children:(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["pipes32x32",e.dir+"-"+e.icon_state]),style:{transform:"scale(1.5) translate(17%, 17%)"}})},e.dir)}))})]})}),(0,o.createComponentVNode)(2,c.Flex.Item,{m:.5,grow:1,children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Tabs,{children:N.map((function(e,t){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{fluid:!0,icon:d[e.cat_name],selected:e.cat_name===B.cat_name,onClick:function(){return x(e.cat_name)},children:e.cat_name},e.cat_name)}))}),null==B?void 0:B.recipes.map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{fluid:!0,ellipsis:!0,checked:e.selected,content:e.pipe_name,title:e.pipe_name,onClick:function(){return m("pipe_type",{pipe_type:e.pipe_index,category:B.cat_name})}},e.pipe_index)}))]})})]})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.RemoteRobotControlContent=t.RemoteRobotControl=void 0;var o=n(0),r=n(19),a=n(2),c=n(1),i=n(3);t.RemoteRobotControl=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{title:"Remote Robot Control",width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.robots,d=void 0===l?[]:l;return d.length?d.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name+" ("+e.model+")",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"tools",content:"Interface",onClick:function(){return i("interface",{ref:e.ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"phone-alt",content:"Call",onClick:function(){return i("callbot",{ref:e.ref})}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"Inactive"===(0,r.decodeHtmlEntities)(e.mode)?"bad":"Idle"===(0,r.decodeHtmlEntities)(e.mode)?"average":"good",children:(0,r.decodeHtmlEntities)(e.mode)})," ",e.hacked&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"bad",children:"(HACKED)"})||""]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Location",children:e.location})]})},e.ref)})):(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.NoticeBox,{textAlign:"center",children:"No robots detected"})})};t.RemoteRobotControlContent=l},function(e,t,n){"use strict";t.__esModule=!0,t.RoboticsControlConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.RoboticsControlConsole=function(e,t){var n=(0,r.useBackend)(t),d=(n.act,n.data),u=(0,r.useSharedState)(t,"tab",1),s=u[0],m=u[1],p=d.can_hack,C=d.cyborgs,h=void 0===C?[]:C,N=d.drones,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:460,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:1===s,onClick:function(){return m(1)},children:["Cyborgs (",h.length,")"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:2===s,onClick:function(){return m(2)},children:["Drones (",V.length,")"]})]}),1===s&&(0,o.createComponentVNode)(2,i,{cyborgs:h,can_hack:p}),2===s&&(0,o.createComponentVNode)(2,l,{drones:V})]})})};var i=function(e,t){var n=e.cyborgs,c=e.can_hack,i=(0,r.useBackend)(t),l=i.act;i.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createFragment)([!!c&&!e.emagged&&(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Hack",color:"bad",onClick:function(){return l("magbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:e.locked_down?"unlock":"lock",color:e.locked_down?"good":"default",content:e.locked_down?"Release":"Lockdown",onClick:function(){return l("stopbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",color:"bad",onClick:function(){return l("killbot",{ref:e.ref})}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":e.locked_down?"average":"good",children:e.status?"Not Responding":e.locked_down?"Locked Down":"Nominal"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,a.Box,{color:e.charge<=30?"bad":e.charge<=70?"average":"good",children:"number"==typeof e.charge?e.charge+"%":"Not Found"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master AI",children:(0,o.createComponentVNode)(2,a.Box,{color:e.synchronization?"default":"average",children:e.synchronization||"None"})})]})},e.ref)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cyborg units detected within access parameters"})},l=function(e,t){var n=e.drones,c=(0,r.useBackend)(t).act;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",color:"bad",onClick:function(){return c("killdrone",{ref:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":"good",children:e.status?"Not Responding":"Nominal"})})})},e.ref)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No drone units detected within access parameters"})}},function(e,t,n){"use strict";t.__esModule=!0,t.Roulette=t.RouletteBetTable=t.RouletteBoard=t.RouletteNumberButton=void 0;var o=n(0),r=n(6),a=n(2),c=n(1),i=n(3),l=function(e){if(0===e)return"green";for(var t=[[1,10],[19,28]],n=!0,o=0;o=r[0]&&e<=r[1]){n=!1;break}}var a=e%2==0;return(n?a:!a)?"red":"black"},d=function(e,t){var n=e.number,r=(0,a.useBackend)(t).act;return(0,o.createComponentVNode)(2,c.Button,{bold:!0,content:n,color:l(n),width:"40px",height:"28px",fontSize:"20px",textAlign:"center",mb:0,className:"Roulette__board-extrabutton",onClick:function(){return r("ChangeBetType",{type:n})}})};t.RouletteNumberButton=d;var u=function(e,t){var n=(0,a.useBackend)(t).act;return(0,o.createVNode)(1,"table","Table",[(0,o.createVNode)(1,"tr","Roulette__board-row",[(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{content:"0",color:"transparent",height:"88px",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:0})}}),2,{rowSpan:"3"}),[3,6,9,12,15,18,21,24,27,30,33,36].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s3rd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[2,5,8,11,14,17,20,23,26,29,32,35].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s2nd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[1,4,7,10,13,16,19,22,25,28,31,34].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1st col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"1st 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-12"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2nd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s13-24"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"3rd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s25-36"})}}),2,{colSpan:"4"})],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"1-18",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-18"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Even",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"even"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Black",color:"black",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"black"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Red",color:"red",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"red"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Odd",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"odd"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"19-36",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s19-36"})}}),2,{colSpan:"2"})],4)],4,{style:{width:"1px"}})};t.RouletteBoard=u;var s=function(e,t){var n=(0,a.useBackend)(t),i=n.act,d=n.data,u=(0,a.useLocalState)(t,"customBet",500),s=u[0],m=u[1],p=d.BetType;return p.startsWith("s")&&(p=p.substring(1,p.length)),(0,o.createVNode)(1,"table","Roulette__lowertable",[(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Last Spun:",16),(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Current Bet:",16)],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--spinresult","Roulette__lowertable--spinresult-"+l(d.LastSpin)]),d.LastSpin,0),(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--betscell"]),[(0,o.createComponentVNode)(2,c.Box,{bold:!0,mt:1,mb:1,fontSize:"25px",textAlign:"center",children:[d.BetAmount," cr on ",p]}),(0,o.createComponentVNode)(2,c.Box,{ml:1,mr:1,children:[(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 10 cr",onClick:function(){return i("ChangeBetAmount",{amount:10})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 50 cr",onClick:function(){return i("ChangeBetAmount",{amount:50})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 100 cr",onClick:function(){return i("ChangeBetAmount",{amount:100})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 500 cr",onClick:function(){return i("ChangeBetAmount",{amount:500})}}),(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet custom amount...",onClick:function(){return i("ChangeBetAmount",{amount:s})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{size:.1,children:(0,o.createComponentVNode)(2,c.NumberInput,{value:s,minValue:0,maxValue:1e3,step:10,stepPixelSize:4,width:"40px",onChange:function(e,t){return m(t)}})})]})]})],4)],4),(0,o.createVNode)(1,"tr",null,(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Box,{bold:!0,m:1,fontSize:"14px",textAlign:"center",children:"Swipe an ID card with a connected account to spin!"}),2,{colSpan:"2"}),2),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","Roulette__lowertable--cell",[(0,o.createComponentVNode)(2,c.Box,{inline:!0,bold:!0,mr:1,children:"House Balance:"}),(0,o.createComponentVNode)(2,c.Box,{inline:!0,children:d.HouseBalance?d.HouseBalance+" cr":"None"})],4),(0,o.createVNode)(1,"td","Roulette__lowertable--cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:d.IsAnchored?"Bolted":"Unbolted",m:1,color:"transparent",textAlign:"center",onClick:function(){return i("anchor")}}),2)],4)],4)};t.RouletteBetTable=s;t.Roulette=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:603,height:475,theme:"cardtable",children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,s)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SatelliteControl=void 0;var o=n(0),r=n(2),a=n(1),c=n(198),i=n(3);t.SatelliteControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.satellites||[];return(0,o.createComponentVNode)(2,i.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[d.meteor_shield&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledListItem,{label:"Coverage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.meteor_shield_coverage/d.meteor_shield_coverage_max,content:100*d.meteor_shield_coverage/d.meteor_shield_coverage_max+"%",ranges:{good:[1,Infinity],average:[.3,1],bad:[-Infinity,.3]}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Satellite Controls",children:(0,o.createComponentVNode)(2,a.Box,{mr:-1,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.active,content:"#"+e.id+" "+e.mode,onClick:function(){return l("toggle",{id:e.id})}},e.id)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ScannerGate=void 0;var o=n(0),r=n(2),a=n(1),c=n(64),i=n(3),l=["Positive","Harmless","Minor","Medium","Harmful","Dangerous","BIOHAZARD"],d=[{name:"Human",value:"human"},{name:"Lizardperson",value:"lizard"},{name:"Flyperson",value:"fly"},{name:"Felinid",value:"felinid"},{name:"Plasmaman",value:"plasma"},{name:"Mothperson",value:"moth"},{name:"Jellyperson",value:"jelly"},{name:"Podperson",value:"pod"},{name:"Golem",value:"golem"},{name:"Zombie",value:"zombie"}],u=[{name:"Starving",value:150},{name:"Obese",value:600}];t.ScannerGate=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data;return(0,o.createComponentVNode)(2,i.Window,{width:400,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.InterfaceLockNoticeBox,{onLockedStatusChange:function(){return a("toggle_lock")}}),!l.locked&&(0,o.createComponentVNode)(2,m)]})})};var s={Off:{title:"Scanner Mode: Off",component:function(){return p}},Wanted:{title:"Scanner Mode: Wanted",component:function(){return C}},Guns:{title:"Scanner Mode: Guns",component:function(){return h}},Mindshield:{title:"Scanner Mode: Mindshield",component:function(){return N}},Disease:{title:"Scanner Mode: Disease",component:function(){return V}},Species:{title:"Scanner Mode: Species",component:function(){return b}},Nutrition:{title:"Scanner Mode: Nutrition",component:function(){return f}},Nanites:{title:"Scanner Mode: Nanites",component:function(){return g}}},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.scan_mode,l=s[i]||s.off,d=l.component();return(0,o.createComponentVNode)(2,a.Section,{title:l.title,buttons:"Off"!==i&&(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"back",onClick:function(){return c("set_mode",{new_mode:"Off"})}}),children:(0,o.createComponentVNode)(2,d)})},p=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:"Select a scanning mode below."}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Wanted",onClick:function(){return n("set_mode",{new_mode:"Wanted"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Guns",onClick:function(){return n("set_mode",{new_mode:"Guns"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Mindshield",onClick:function(){return n("set_mode",{new_mode:"Mindshield"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Disease",onClick:function(){return n("set_mode",{new_mode:"Disease"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Species",onClick:function(){return n("set_mode",{new_mode:"Species"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nutrition",onClick:function(){return n("set_mode",{new_mode:"Nutrition"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nanites",onClick:function(){return n("set_mode",{new_mode:"Nanites"})}})]})],4)},C=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any warrants for their arrest."]}),(0,o.createComponentVNode)(2,v)],4)},h=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any guns."]}),(0,o.createComponentVNode)(2,v)],4)},N=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","a mindshield."]}),(0,o.createComponentVNode)(2,v)],4)},V=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.reverse,u=i.disease_threshold;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",d?"does not have":"has"," ","a disease equal or worse than ",u,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e===u,content:e,onClick:function(){return c("set_disease_threshold",{new_threshold:e})}},e)}))}),(0,o.createComponentVNode)(2,v)],4)},b=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,u=i.target_species,s=d.find((function(e){return e.value===u}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned is ",l?"not":""," ","of the ",s.name," species.","zombie"===u&&" All zombie types will be detected, including dormant zombies."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===u,content:e.name,onClick:function(){return c("set_target_species",{new_species:e.value})}},e.value)}))}),(0,o.createComponentVNode)(2,v)],4)},f=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,d=i.target_nutrition,s=u.find((function(e){return e.value===d}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","the ",s.name," nutrition level."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===d,content:e.name,onClick:function(){return c("set_target_nutrition",{new_nutrition:e.name})}},e.name)}))}),(0,o.createComponentVNode)(2,v)],4)},g=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,d=i.nanite_cloud;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","nanite cloud ",d,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,width:"65px",minValue:1,maxValue:100,stepPixelSize:2,onChange:function(e,t){return c("set_nanite_cloud",{new_cloud:t})}})})})}),(0,o.createComponentVNode)(2,v)],4)},v=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.reverse;return(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scanning Mode",children:(0,o.createComponentVNode)(2,a.Button,{content:i?"Inverted":"Default",icon:i?"random":"long-arrow-alt-right",onClick:function(){return c("toggle_reverse")},color:i?"bad":"good"})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SeedExtractor=void 0;var o=n(0),r=n(14),a=n(30),c=n(19),i=n(2),l=n(1),d=n(3);t.SeedExtractor=function(e,t){var n,u,s=(0,i.useBackend)(t),m=s.act,p=s.data,C=(n=p.seeds,u=Object.keys(n).map((function(e){var t=function(e){var t,n=/([^;=]+)=([^;]+)/g,o={};do{(t=n.exec(e))&&(o[t[1]]=t[2]+"")}while(t);return o}(e);return t.amount=n[e],t.key=e,t.name=(0,c.toTitleCase)(t.name.replace("pack of ","")),t})),(0,a.flow)([(0,r.sortBy)((function(e){return e.name}))])(u));return(0,o.createComponentVNode)(2,d.Window,{width:1e3,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Stored seeds:",children:(0,o.createComponentVNode)(2,l.Table,{cellpadding:"3",textAlign:"center",children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Name"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Lifespan"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Endurance"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Maturation"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Production"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Yield"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Potency"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Instability"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Stock"})]}),C.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{bold:!0,children:e.name}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.lifespan}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.endurance}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.maturation}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.production}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.yield}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.potency}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.instability}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:[(0,o.createComponentVNode)(2,l.Button,{content:"Vend",onClick:function(){return m("select",{item:e.key})}}),"(",e.amount," left)"]})]},e.key)}))]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleConsole=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.ShuttleConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.authorization_required;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:230,children:[!!l&&(0,o.createComponentVNode)(2,a.Modal,{ml:1,mt:1,width:26,height:12,fontSize:"28px",fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mt:2,children:(0,o.createComponentVNode)(2,a.Icon,{name:"minus-circle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mt:2,ml:2,color:"bad",children:"SHUTTLE LOCKED"})]}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",mt:4,children:(0,o.createComponentVNode)(2,a.Button,{lineHeight:"40px",icon:"arrow-circle-right",content:"Request Authorization",color:"bad",onClick:function(){return i("request")}})})]}),(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,d)})]})};var i=function(e,t){var n;return null==e||null==(n=e.find((function(e){return e.id===t})))?void 0:n.name},l=function(e,t){var n;return null==e||null==(n=e.find((function(e){return e.name===t})))?void 0:n.id},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data,u=d.status,s=d.locked,m=d.authorization_required,p=d.destination,C=d.docked_location,h=d.timer_str,N=d.locations,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"26px",textAlign:"center",fontFamily:"monospace",children:h||"00:00"}),(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",fontSize:"14px",mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:"STATUS:"}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"In Transit"===u?"good":"Idle"===u||"Igniting"===u?"average":"bad",ml:1,children:u||"Not Available"})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Shuttle Controls",level:2,children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:C||"Not Available"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:0===V.length&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Available"})||1===V.length&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:i(V,p)})||(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,width:"240px",options:V.map((function(e){return e.name})),disabled:s||m,selected:i(V,p)||"Select a Destination",onSelected:function(e){return c("set_destination",{destination:l(V,e)})}})})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Depart",disabled:!i(V,p)||s||m,mt:1.5,icon:"arrow-up",textAlign:"center",onClick:function(){return c("move",{shuttle_id:p})}})]})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleManipulatorModification=t.ShuttleManipulatorTemplates=t.ShuttleManipulatorStatus=t.ShuttleManipulator=void 0;var o=n(0),r=n(14),a=n(2),c=n(1),i=n(3);t.ShuttleManipulator=function(e,t){var n=(0,a.useLocalState)(t,"tab",1),r=n[0],s=n[1];return(0,o.createComponentVNode)(2,i.Window,{title:"Shuttle Manipulator",width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:1===r,onClick:function(){return s(1)},children:"Status"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:2===r,onClick:function(){return s(2)},children:"Templates"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:3===r,onClick:function(){return s(3)},children:"Modification"})]}),1===r&&(0,o.createComponentVNode)(2,l),2===r&&(0,o.createComponentVNode)(2,d),3===r&&(0,o.createComponentVNode)(2,u)]})})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.shuttles||[];return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Table,{children:i.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{content:"JMP",onClick:function(){return r("jump_to",{type:"mobile",id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{content:"Fly",disabled:!e.can_fly,onClick:function(){return r("fly",{id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.id}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.status}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:[e.mode,!!e.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),e.timeleft,(0,o.createTextVNode)(")"),(0,o.createComponentVNode)(2,c.Button,{content:"Fast Travel",disabled:!e.can_fast_travel,onClick:function(){return r("fast_travel",{id:e.id})}},e.id)],0)]})]},e.id)}))})})};t.ShuttleManipulatorStatus=l;var d=function(e,t){var n,i=(0,a.useBackend)(t),l=i.act,d=i.data,u=d.templates||{},s=d.selected||{},m=(0,a.useLocalState)(t,"templateId",Object.keys(u)[0]),p=m[0],C=m[1],h=null==(n=u[p])?void 0:n.templates;return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:p===t,onClick:function(){return C(t)},children:e.port_id},t)}))(u)})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:h.map((function(e){var t=e.shuttle_id===s.shuttle_id;return(0,o.createComponentVNode)(2,c.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{content:t?"Selected":"Select",selected:t,onClick:function(){return l("select_template",{shuttle_id:e.shuttle_id})}}),children:(!!e.description||!!e.admin_notes)&&(0,o.createComponentVNode)(2,c.LabeledList,{children:[!!e.description&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:e.description}),!!e.admin_notes&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Admin Notes",children:e.admin_notes})]})},e.shuttle_id)}))})]})})};t.ShuttleManipulatorTemplates=d;var u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.selected||{},d=i.existing_shuttle||{};return(0,o.createComponentVNode)(2,c.Section,{children:l?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{level:2,title:l.name,children:(!!l.description||!!l.admin_notes)&&(0,o.createComponentVNode)(2,c.LabeledList,{children:[!!l.description&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:l.description}),!!l.admin_notes&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Admin Notes",children:l.admin_notes})]})}),d?(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Existing Shuttle: "+d.name,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,c.Button,{content:"Jump To",onClick:function(){return r("jump_to",{type:"mobile",id:d.id})}}),children:[d.status,!!d.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),d.timeleft,(0,o.createTextVNode)(")")],0)]})})}):(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Existing Shuttle: None"}),(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Status",children:[(0,o.createComponentVNode)(2,c.Button,{content:"Preview",onClick:function(){return r("preview",{shuttle_id:l.shuttle_id})}}),(0,o.createComponentVNode)(2,c.Button,{content:"Load",color:"bad",onClick:function(){return r("load",{shuttle_id:l.shuttle_id})}})]})],0):"No shuttle selected"})};t.ShuttleManipulatorModification=u},function(e,t,n){"use strict";t.__esModule=!0,t.Signaler=void 0;var o=n(0),r=n(9),a=n(2),c=n(1),i=n(3);t.Signaler=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.code,s=d.frequency,m=d.minFrequency,p=d.maxFrequency;return(0,o.createComponentVNode)(2,i.Window,{width:280,height:132,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:1.4,color:"label",children:"Frequency:"}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:m/10,maxValue:p/10,value:s/10,format:function(e){return(0,r.toFixed)(e,1)},width:"80px",onDrag:function(e,t){return l("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"freq"})}})})]}),(0,o.createComponentVNode)(2,c.Grid,{mt:.6,children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:1.4,color:"label",children:"Code:"}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:u,width:"80px",onDrag:function(e,t){return l("code",{code:t})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"code"})}})})]}),(0,o.createComponentVNode)(2,c.Grid,{mt:.8,children:(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{mb:-.1,fluid:!0,icon:"arrow-up",content:"Send Signal",textAlign:"center",onClick:function(){return l("signal")}})})})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SkillPanel=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i={color:"lightgreen",fontWeight:"bold"},l={color:"#FFDB58",fontWeight:"bold"};t.SkillPanel=function(e,t){var n=(0,r.useBackend)(t),u=n.act,s=n.data,m=s.skills||[];return(0,o.createComponentVNode)(2,c.Window,{title:"Manage Skills",width:600,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:m.playername,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[(0,o.createVNode)(1,"span",null,e.desc,0,{style:l}),(0,o.createVNode)(1,"br"),!!e.level_based&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d,{skill_lvl_num:e.lvl_base_num,skill_lvl:e.lvl_base}),(0,o.createVNode)(1,"br")],4),"Total Experience: [",e.value_base," XP]",(0,o.createVNode)(1,"br"),"XP To Next Level:",e.level_based?(0,o.createVNode)(1,"span",null,e.xp_next_lvl_base,0):(0,o.createVNode)(1,"span",null,"[MAXXED]",16,{style:i}),(0,o.createVNode)(1,"br"),e.base_readout,(0,o.createComponentVNode)(2,a.ProgressBar,{value:e.percent_base,color:"good"}),(0,o.createVNode)(1,"br"),!!s.admin&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Adjust Exp",onClick:function(){return u("adj_exp",{skill:e.path})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Set Exp",onClick:function(){return u("set_exp",{skill:e.path})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Set Level",onClick:function(){return u("set_lvl",{skill:e.path})}}),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"br")],4)]},e.name)}))})})})})};var d=function(e){var t=e.skill_lvl_num,n=e.skill_lvl;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:["Level: [",(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,textColor:"hsl("+50*t+", 50%, 50%)",children:n}),"]"]})}},function(e,t,n){"use strict";t.__esModule=!0,t.SkillStation=t.TimeFormat=t.ImplantedSkillchips=t.InsertedSkillchip=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=n(9),l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.skillchip_ready,d=i.slot_use,u=i.slots_used,s=i.slots_max,m=i.implantable_reason,p=i.implantable,C=i.complexity,h=i.skill_name,N=i.skill_desc,V=i.skill_icon,b=i.working;return l?(0,o.createComponentVNode)(2,a.Section,{title:"Inserted Skillchip",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"syringe",disabled:!p||!!b,color:p?"good":"default",onClick:function(){return c("implant")},content:"Implant",tooltip:m}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!!b,onClick:function(){return c("eject")},content:"Eject"})],4),children:(0,o.createComponentVNode)(2,a.Flex,{spacing:2,height:"100%",width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{height:"100%",align:"center",children:(0,o.createComponentVNode)(2,a.Icon,{size:3,name:V})}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"100%",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Skillchip",children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:h})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:(0,o.createComponentVNode)(2,a.Box,{italic:!0,children:N})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Complexity",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"brain",width:"15px",textAlign:"center"})," ",C]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Slot Size",children:(0,o.createComponentVNode)(2,a.Box,{color:u+d>s&&"red",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"save",width:"15px",textAlign:"center"})," ",d]})}),!!m&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Error",color:p?"good":"bad",children:m})]})})]})}):!b&&(0,o.createComponentVNode)(2,a.NoticeBox,{info:!0,children:"Please insert a skillchip."})};t.InsertedSkillchip=l;var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.slots_used,d=i.slots_max,u=i.complexity_used,s=i.complexity_max,m=i.working,p=i.current||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Implanted Skillchips",children:[!p.length&&"No skillchips detected.",!!p.length&&(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Chip"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"brain",tooltip:"Complexity",tooltipPosition:"top",content:u+"/"+s})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"save",tooltip:"Slot Size",tooltipPosition:"top",content:l+"/"+d})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"check",tooltip:"Is Active",tooltipPosition:"top"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"hourglass-half",tooltip:"Cooldown",tooltipPosition:"top"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"tasks",tooltip:"Actions",tooltipPosition:"top"})})]}),p.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Icon,{textAlign:"center",width:"18px",mr:1,name:e.icon}),e.name]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:(!e.active?e.complexity+u>s&&"bad":"good")||"grey",textAlign:"center",children:e.complexity}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"good",textAlign:"center",children:e.slot_use}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Icon,{name:e.active?"check":"times",color:e.active?"good":"bad"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.cooldown>0&&Math.ceil(e.cooldown/10)+"s"||"0s"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("remove",{ref:e.ref})},icon:e.removable?"eject":"trash",color:e.removable?"good":"bad",tooltip:e.removable?"Extract":"Destroy",tooltipPosition:"left",disabled:e.cooldown||m}),(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_activate",{ref:e.ref})},icon:e.active?"check-square-o":"square-o",color:e.active?"good":"default",tooltip:!!e.active_error&&!e.active&&e.active_error||e.active&&"Deactivate"||"Activate",tooltipPosition:"left",disabled:e.cooldown||m||!e.active&&e.complexity+u>s})]})]},e.ref)}))]})]})};t.ImplantedSkillchips=d;var u=function(e,t){var n=e.value,o=(0,i.toFixed)(Math.floor(n/10%60)).padStart(2,"0"),r=(0,i.toFixed)(Math.floor(n/600%60)).padStart(2,"0");return(0,i.toFixed)(Math.floor(n/36e3%24)).padStart(2,"0")+":"+r+":"+o};t.TimeFormat=u;t.SkillStation=function(e,t){var n=(0,r.useBackend)(t).data,i=n.working,s=n.timeleft,m=n.error;return(0,o.createComponentVNode)(2,c.Window,{title:"Skillsoft Station",width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!!m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:m}),!!i&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mb:.5,children:"Operation in progress. Please do not leave the chamber."}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["Time Left: ",(0,o.createComponentVNode)(2,u,{value:s})]})]})}),(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d)]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Sleeper=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i=[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Oxygen",type:"oxyLoss"}];t.Sleeper=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.open,s=d.occupant,m=void 0===s?{}:s,p=d.occupied,C=(d.chems||[]).sort((function(e,t){var n=e.name.toLowerCase(),o=t.name.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,c.Window,{width:310,height:465,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:m.name?m.name:"No Occupant",minHeight:"210px",buttons:!!m.stat&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:m.statstate,children:m.stat}),children:!!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,ranges:{good:[50,Infinity],average:[0,50],bad:[-Infinity,0]}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[i.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type],minValue:0,maxValue:m.maxHealth,color:"bad"})},e.type)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cells",color:m.cloneLoss?"bad":"good",children:m.cloneLoss?"Damaged":"Healthy"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain",color:m.brainLoss?"bad":"good",children:m.brainLoss?"Abnormal":"Healthy"})]})],4)}),(0,o.createComponentVNode)(2,a.Section,{title:"Medicines",minHeight:"205px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"door-open":"door-closed",content:u?"Open":"Closed",onClick:function(){return l("door")}}),children:C.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"flask",content:e.name,disabled:!p||!e.allowed,width:"140px",onClick:function(){return l("inject",{chem:e.id})}},e.name)}))})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SlimeBodySwapper=t.BodyEntry=void 0;var o=n(0),r=n(2),a=n(1),c=n(3),i={Dead:"bad",Unconscious:"average",Conscious:"good"},l={owner:"You Are Here",stranger:"Occupied",available:"Swap"},d=function(e,t){var n=e.body,r=e.swapFunc;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:n.htmlcolor,children:n.name}),level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{content:l[n.occupied],selected:"owner"===n.occupied,color:"stranger"===n.occupied&&"bad",onClick:function(){return r()}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",bold:!0,color:i[n.status],children:n.status}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Jelly",children:n.exoticblood}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:n.area})]})})};t.BodyEntry=d;t.SlimeBodySwapper=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.bodies,u=void 0===l?[]:l;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:u.map((function(e){return(0,o.createComponentVNode)(2,d,{body:e,swapFunc:function(){return i("swap",{ref:e.ref})}},e.name)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SmartVend=void 0;var o=n(0),r=n(14),a=n(2),c=n(1),i=n(3);t.SmartVend=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,i.Window,{width:440,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Section,{title:"Storage",buttons:!!d.isdryer&&(0,o.createComponentVNode)(2,c.Button,{icon:d.drying?"stop":"tint",onClick:function(){return l("Dry")},children:d.drying?"Stop drying":"Dry"}),children:0===d.contents.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:["Unfortunately, this ",d.name," is empty."]})||(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Item"}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"center",children:d.verb?d.verb:"Dispense"})]}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:e.amount}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.Button,{content:"One",disabled:e.amount<1,onClick:function(){return l("Release",{name:e.name,amount:1})}}),(0,o.createComponentVNode)(2,c.Button,{content:"Many",disabled:e.amount<=1,onClick:function(){return l("Release",{name:e.name})}})]})]},t)}))(d.contents)]})})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Smes=void 0;var o=n(0),r=n(2),a=n(1),c=n(39),i=n(3);t.Smes=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.capacityPercent,s=(d.capacity,d.charge),m=d.inputAttempt,p=d.inputting,C=d.inputLevel,h=d.inputLevelMax,N=d.inputAvailable,V=d.outputAttempt,b=d.outputting,f=d.outputLevel,g=d.outputLevelMax,v=d.outputUsed,k=(u>=100?"good":p&&"average")||"bad",x=(b?"good":s>0&&"average")||"bad";return(0,o.createComponentVNode)(2,i.Window,{width:340,height:350,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:.01*u,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Input",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"sync-alt":"times",selected:m,onClick:function(){return l("tryinput")},children:m?"Auto":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:k,children:(u>=100?"Fully Charged":p&&"Charging")||"Not Charging"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Input",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===C,onClick:function(){return l("input",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===C,onClick:function(){return l("input",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:C/1e3,fillValue:N/1e3,minValue:0,maxValue:h/1e3,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(1e3*e,1)},onDrag:function(e,t){return l("input",{target:1e3*t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:C===h,onClick:function(){return l("input",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:C===h,onClick:function(){return l("input",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available",children:(0,c.formatPower)(N)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:V?"power-off":"times",selected:V,onClick:function(){return l("tryoutput")},children:V?"On":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:x,children:b?"Sending":s>0?"Not Sending":"No Charge"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Output",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===f,onClick:function(){return l("output",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===f,onClick:function(){return l("output",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:f/1e3,minValue:0,maxValue:g/1e3,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(1e3*e,1)},onDrag:function(e,t){return l("output",{target:1e3*t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:f===g,onClick:function(){return l("output",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:f===g,onClick:function(){return l("output",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outputting",children:(0,c.formatPower)(v)})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SmokeMachine=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.SmokeMachine=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.TankContents,u=(l.isTankLoaded,l.TankCurrentVolume),s=l.TankMaxVolume,m=l.active,p=l.setting,C=(l.screen,l.maxSetting),h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:350,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Dispersal Tank",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return i("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/s,ranges:{bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{initial:0,value:u||0})," / "+s]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:[1,2,3,4,5].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:p===e,icon:"plus",content:3*e,disabled:h0?"good":"bad",children:h})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[.66,Infinity],average:[.33,.66],bad:[-Infinity,.33]},minValue:0,maxValue:1,value:u,children:d+" W"})})})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracking",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:0===C,onClick:function(){return i("tracking",{mode:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:"Timed",selected:1===C,onClick:function(){return i("tracking",{mode:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:2===C,disabled:!N,onClick:function(){return i("tracking",{mode:2})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Azimuth",children:[(0===C||1===C)&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"52px",unit:"\xb0",step:1,stepPixelSize:2,minValue:-360,maxValue:720,value:s,onDrag:function(e,t){return i("azimuth",{value:t})}}),1===C&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"80px",unit:"\xb0/m",step:.01,stepPixelSize:1,minValue:-p-.01,maxValue:p+.01,value:m,format:function(e){return(Math.sign(e)>0?"+":"-")+Math.abs(e)},onDrag:function(e,t){return i("azimuth_rate",{value:t})}}),2===C&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mt:"3px",children:[s+" \xb0"," (auto)"]})]})]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SpaceHeater=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.SpaceHeater=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!l.hasPowercell||!l.open,onClick:function(){return i("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,disabled:!l.hasPowercell,onClick:function(){return i("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!l.hasPowercell&&"bad",children:l.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.powerLevel/100,ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]},children:l.powerLevel+"%"})||"None"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Thermostat",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",color:Math.abs(l.targetTemp-l.currentTemp)>50?"bad":Math.abs(l.targetTemp-l.currentTemp)>20?"average":"good",children:[l.currentTemp,"\xb0C"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:l.open&&(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.targetTemp),width:"65px",unit:"\xb0C",minValue:l.minTemp,maxValue:l.maxTemp,onChange:function(e,t){return i("target",{target:t})}})||l.targetTemp+"\xb0C"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:l.open?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer-half",content:"Auto",selected:"auto"===l.mode,onClick:function(){return i("mode",{mode:"auto"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fire-alt",content:"Heat",selected:"heat"===l.mode,onClick:function(){return i("mode",{mode:"heat"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fan",content:"Cool",selected:"cool"===l.mode,onClick:function(){return i("mode",{mode:"cool"})}})],4):"Auto"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider)]})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SpawnersMenu=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.SpawnersMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.spawners||[];return(0,o.createComponentVNode)(2,c.Window,{title:"Spawners Menu",width:700,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" ("+e.amount_left+" left)",level:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Jump",onClick:function(){return i("jump",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Spawn",onClick:function(){return i("spawn",{name:e.name})}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,fontSize:"20px",children:e.short_desc}),(0,o.createComponentVNode)(2,a.Box,{children:e.flavor_text}),!!e.important_info&&(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,color:"bad",fontSize:"26px",children:e.important_info})]},e.name)}))})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SuitStorageUnit=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.SuitStorageUnit=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.locked,u=l.open,s=l.safeties,m=l.uv_active,p=l.occupied,C=l.suit,h=l.helmet,N=l.mask,V=l.storage;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!(!p||!s)&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Biological entity detected in suit chamber. Please remove before continuing with operation."}),m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Contents are currently being decontaminated. Please wait."})||(0,o.createComponentVNode)(2,a.Section,{title:"Storage",minHeight:"260px",buttons:(0,o.createFragment)([!u&&(0,o.createComponentVNode)(2,a.Button,{icon:d?"unlock":"lock",content:d?"Unlock":"Lock",onClick:function(){return i("lock")}}),!d&&(0,o.createComponentVNode)(2,a.Button,{icon:u?"sign-out-alt":"sign-in-alt",content:u?"Close":"Open",onClick:function(){return i("door")}})],0),children:d&&(0,o.createComponentVNode)(2,a.Box,{mt:6,bold:!0,textAlign:"center",fontSize:"40px",children:[(0,o.createComponentVNode)(2,a.Box,{children:"Unit Locked"}),(0,o.createComponentVNode)(2,a.Icon,{name:"lock"})]})||u&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Helmet",children:(0,o.createComponentVNode)(2,a.Button,{icon:h?"square":"square-o",content:h||"Empty",disabled:!h,onClick:function(){return i("dispense",{item:"helmet"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suit",children:(0,o.createComponentVNode)(2,a.Button,{icon:C?"square":"square-o",content:C||"Empty",disabled:!C,onClick:function(){return i("dispense",{item:"suit"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mask",children:(0,o.createComponentVNode)(2,a.Button,{icon:N?"square":"square-o",content:N||"Empty",disabled:!N,onClick:function(){return i("dispense",{item:"mask"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Storage",children:(0,o.createComponentVNode)(2,a.Button,{icon:V?"square":"square-o",content:V||"Empty",disabled:!V,onClick:function(){return i("dispense",{item:"storage"})}})})]})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"recycle",content:"Decontaminate",disabled:p&&s,textAlign:"center",onClick:function(){return i("uv")}})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.SyndPane=t.StatusPane=t.SyndContractorContent=t.SyndContractor=t.FakeTerminal=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);var i=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).timer=null,n.state={currentIndex:0,currentDisplay:[]},n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var c=r.prototype;return c.tick=function(){var e=this.props,t=this.state;t.currentIndex<=e.allMessages.length?(this.setState((function(e){return{currentIndex:e.currentIndex+1}})),t.currentDisplay.push(e.allMessages[t.currentIndex])):(clearTimeout(this.timer),setTimeout(e.onFinished,e.finishedTimeout))},c.componentDidMount=function(){var e=this,t=this.props.linesPerSecond,n=void 0===t?2.5:t;this.timer=setInterval((function(){return e.tick()}),1e3/n)},c.componentWillUnmount=function(){clearTimeout(this.timer)},c.render=function(){return(0,o.createComponentVNode)(2,a.Box,{m:1,children:this.state.currentDisplay.map((function(e){return(0,o.createFragment)([e,(0,o.createVNode)(1,"br")],0,e)}))})},r}(o.Component);t.FakeTerminal=i;t.SyndContractor=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:500,height:600,theme:"syndicate",resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=n.data,l=n.act,d=["Recording biometric data...","Analyzing embedded syndicate info...","STATUS CONFIRMED","Contacting syndicate database...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Response received, ack 4851234...","CONFIRM ACC "+Math.round(2e4*Math.random()),"Setting up private accounts...","CONTRACTOR ACCOUNT CREATED","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","CONTRACTS FOUND","WELCOME, AGENT"],s=!!c.error&&(0,o.createComponentVNode)(2,a.Modal,{backgroundColor:"red",children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,children:(0,o.createComponentVNode)(2,a.Icon,{size:4,name:"exclamation-triangle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,grow:1,textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{width:"260px",textAlign:"left",minHeight:"80px",children:c.error}),(0,o.createComponentVNode)(2,a.Button,{content:"Dismiss",onClick:function(){return l("PRG_clear_error")}})]})]})});return c.logged_in?c.logged_in&&c.first_load?(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"525px",children:(0,o.createComponentVNode)(2,i,{allMessages:d,finishedTimeout:3e3,onFinished:function(){return l("PRG_set_first_load_finished")}})}):c.info_screen?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"500px",children:(0,o.createComponentVNode)(2,i,{allMessages:["SyndTract v2.0","","We've identified potentional high-value targets that are","currently assigned to your mission area. They are believed","to hold valuable information which could be of immediate","importance to our organisation.","","Listed below are all of the contracts available to you. You","are to bring the specified target to the designated","drop-off, and contact us via this uplink. We will send","a specialised extraction unit to put the body into.","","We want targets alive - but we will sometimes pay slight","amounts if they're not, you just won't recieve the shown","bonus. You can redeem your payment through this uplink in","the form of raw telecrystals, which can be put into your","regular Syndicate uplink to purchase whatever you may need.","We provide you with these crystals the moment you send the","target up to us, which can be collected at anytime through","this system.","","Targets extracted will be ransomed back to the station once","their use to us is fulfilled, with us providing you a small","percentage cut. You may want to be mindful of them","identifying you when they come back. We provide you with","a standard contractor loadout, which will help cover your","identity."],linesPerSecond:10})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"CONTINUE",color:"transparent",textAlign:"center",onClick:function(){return l("PRG_toggle_info")}})],4):(0,o.createFragment)([s,(0,o.createComponentVNode)(2,u)],0):(0,o.createComponentVNode)(2,a.Section,{minHeight:"525px",children:[(0,o.createComponentVNode)(2,a.Box,{width:"100%",textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{content:"REGISTER USER",color:"transparent",onClick:function(){return l("PRG_login")}})}),!!c.error&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:c.error})]})};t.SyndContractorContent=l;var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createFragment)([(0,o.createTextVNode)("Contractor Status"),(0,o.createComponentVNode)(2,a.Button,{content:"View Information Again",color:"transparent",mb:0,ml:1,onClick:function(){return c("PRG_toggle_info")}})],4),buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,mr:1,children:[i.contract_rep," Rep"]}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:.85,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Available",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Claim",disabled:i.redeemable_tc<=0,onClick:function(){return c("PRG_redeem_TC")}}),children:i.redeemable_tc}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Earned",children:i.earned_tc})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Contracts Completed",children:i.contracts_completed}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Status",children:"ACTIVE"})]})})]})})};t.StatusPane=d;var u=function(e,t){var n=(0,r.useLocalState)(t,"tab",1),c=n[0],i=n[1];return(0,o.createFragment)([(0,o.createComponentVNode)(2,d,{state:e.state}),(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===c,onClick:function(){return i(1)},children:"Contracts"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===c,onClick:function(){return i(2)},children:"Hub"})]}),1===c&&(0,o.createComponentVNode)(2,s),2===c&&(0,o.createComponentVNode)(2,m)],0)};t.SyndPane=u;var s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.contracts||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Available Contracts",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Call Extraction",disabled:!i.ongoing_contract||i.extraction_enroute,onClick:function(){return c("PRG_call_extraction")}}),children:l.map((function(e){if(!i.ongoing_contract||2===e.status){var t=e.status>1;if(!(e.status>=5))return(0,o.createComponentVNode)(2,a.Section,{title:e.target?e.target+" ("+e.target_rank+")":"Invalid Target",level:t?1:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:[e.payout," (+",e.payout_bonus,") TC"]}),(0,o.createComponentVNode)(2,a.Button,{content:t?"Abort":"Accept",disabled:e.extraction_enroute,color:t&&"bad",onClick:function(){return c("PRG_contract"+(t?"_abort":"-accept"),{contract_id:e.id})}})],4),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:e.message}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,children:"Dropoff Location:"}),(0,o.createComponentVNode)(2,a.Box,{children:e.dropoff})]})]})},e.target)}}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Dropoff Locator",textAlign:"center",opacity:i.ongoing_contract?100:0,children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:i.dropoff_direction})})],4)},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.contractor_hub_items||[];return(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){var t=e.cost?e.cost+" Rep":"FREE",n=-1!==e.limited;return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" - "+t,level:2,buttons:(0,o.createFragment)([n&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:[e.limited," remaining"]}),(0,o.createComponentVNode)(2,a.Button,{content:"Purchase",disabled:i.contract_repl.user.cash),content:h?"FREE":d.price+" cr",onClick:function(){return i("vend",{ref:d.ref})}})})]})};t.Vending=function(e,t){var n,r=(0,a.useBackend)(t),d=(r.act,r.data),u=d.user,s=d.onstation,m=d.product_records,p=void 0===m?[]:m,C=d.coin_records,h=void 0===C?[]:C,N=d.hidden_records,V=void 0===N?[]:N,b=d.stock,f=!1;return d.vending_machine_input?(n=d.vending_machine_input||[],f=!0):(n=[].concat(p,h),d.extended_inventory&&(n=[].concat(n,V))),n=n.filter((function(e){return!!e})),(0,o.createComponentVNode)(2,i.Window,{title:"Vending Machine",width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[!!s&&(0,o.createComponentVNode)(2,c.Section,{title:"User",children:u&&(0,o.createComponentVNode)(2,c.Box,{children:["Welcome, ",(0,o.createVNode)(1,"b",null,u.name,0),","," ",(0,o.createVNode)(1,"b",null,u.job||"Unemployed",0),"!",(0,o.createVNode)(1,"br"),"Your balance is ",(0,o.createVNode)(1,"b",null,[u.cash,(0,o.createTextVNode)(" credits")],0),"."]})||(0,o.createComponentVNode)(2,c.Box,{color:"light-grey",children:["No registered ID card!",(0,o.createVNode)(1,"br"),"Please contact your local HoP!"]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Products",children:(0,o.createComponentVNode)(2,c.Table,{children:n.map((function(e){return(0,o.createComponentVNode)(2,l,{custom:f,product:e,productStock:b[e.name]},e.name)}))})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.VrSleeper=void 0;var o=n(0),r=n(2),a=n(1),c=n(3);t.VrSleeper=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:340,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!!l.emagged&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Safety restraints disabled."})}),(0,o.createComponentVNode)(2,a.Section,{title:"Virtual Avatar",children:l.vr_avatar?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.vr_avatar.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:l.vr_avatar.status}),!!l.vr_avatar&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.vr_avatar.health/l.vr_avatar.maxhealth,ranges:{good:[.9,Infinity],average:[.7,.8],bad:[-Infinity,.5]}})})]}):"No Virtual Avatar detected"}),(0,o.createComponentVNode)(2,a.Section,{title:"VR Commands",children:[(0,o.createComponentVNode)(2,a.Button,{icon:l.toggle_open?"unlock":"lock",disabled:l.stored