diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..6a003869
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,133 @@
+# build/temp files
+Bin/
+build/
+build-server/
+autom4te.cache
+local.properties
+.DS_Store
+*.pyc
+*.orig
+*.swp
+*.swo
+*.vscode
+.sconsign.dblite
+.mayaSwatches
+.gdb_history
+.dmypy.json
+.cache
+.mypy_cache
+.mypy.ini
+.pycheckers
+.flycheck-dir-locals.el
+.pylintrc
+.clang-format
+.style.yapf
+.irony
+PUBSYNC_IN_PROGRESS
+_fulltest_buildfile_*
+ballistica_files/
+**/.#*
+
+# Project/tool files
+config/localconfig.json
+config/.*
+.dir-locals.el
+.spinoffdata
+flycheck_*
+
+# built application files
+*.apk
+*.ap_
+
+# files for the dex VM
+*.dex
+
+# Java class files
+*.class
+
+# generated files
+bin/
+gen/
+
+# ew - want to ignore libs built by NDK but not a few specific others..
+libs/
+!**/GameCircleSDK/libs
+!**/PlatformSDK/Android/libs
+
+# Visual Studio
+.vs
+*.vcxproj.user
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.ipch
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+*.exe
+!vc_redist.x86.exe
+!vc_redist.x64.exe
+!python.exe
+!pythonw.exe
+!**/OculusSDK/Tools/**/*.exe
+
+# Note: specifying exact Debug/Release dirs for now; we wind up ignoring
+# some files under LibOVR if we try to glob these together.
+ballisticacore-windows/Debug
+ballisticacore-windows/Release
+ballisticacore-windows/BallisticaCore/Debug
+ballisticacore-windows/BallisticaCore/Release
+ballisticacore-windows/BallisticaCoreHeadless/Debug
+ballisticacore-windows/BallisticaCoreHeadless/Release
+ballisticacore-windows-oculus/BallisticaCoreVR/Projects/Windows/VS2015/Debug
+ballisticacore-windows-oculus/BallisticaCoreVR/Projects/Windows/VS2015/Release
+
+# Android Studio
+# I'm keeping most IDEA related files out of git and only including gradle stuff;
+# It's nice to be able to cleanly re-import the project.
+# As time goes on, I'm making explicit exceptions for some key files (dictionaries, etc)
+# which are nice to keep around.
+ballisticacore-android/**/*.iml
+.gradle
+ballisticacore-android/.idea/*
+
+# Android Studio Stuff we *DO* want to keep
+!ballisticacore-android/.idea/dictionaries
+!ballisticacore-android/.idea/inspectionProfiles
+!ballisticacore-android/.idea/codeStyles
+
+
+# NDK
+.cxx
+
+# Windows thumbnail db
+Thumbs.db
+
+# Asset master source link
+assets/src_master
+
+# Asset build cache
+.assetcache
+
+# XCode
+xcuserdata/
+
+# Generated code output
+/src/generated/
+
+# Dynamically generated resource files
+/ballisticacore-android/BallisticaCore/src/cardboard/res/drawable-*/vr_icon.png
+/ballisticacore-android/BallisticaCore/src/cardboard/res/drawable-*/vr_icon_background.png
+/ballisticacore-android/BallisticaCore/src/cardboard/res/drawable-*/icon.png
+/ballisticacore-android/BallisticaCore/src/main/res/drawable-*/banner.png
+/ballisticacore-android/BallisticaCore/src/main/res/mipmap-*/ic_launcher*.png
+BallisticaCore.ico
+/ballisticacore-xcode/BallisticaCore Shared/Assets.xcassets/AppIcon iOS.appiconset/icon_*.png
+/ballisticacore-xcode/BallisticaCore Shared/Assets.xcassets/AppIcon macOS.appiconset/icon_*.png
+/ballisticacore-xcode/BallisticaCore Shared/Assets.xcassets/tvOS App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Layer*.imagestacklayer/Content.imageset/*.png
+/ballisticacore-xcode/BallisticaCore Shared/Assets.xcassets/tvOS App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Layer*.imagestacklayer/Content.imageset/*.png
+/ballisticacore-xcode/BallisticaCore Shared/Assets.xcassets/tvOS App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/*.png
+/ballisticacore-xcode/BallisticaCore Shared/Assets.xcassets/tvOS App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/*.png
+
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..0e40fe8f
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+
+# Default ignored files
+/workspace.xml
\ No newline at end of file
diff --git a/.idea/MypyConfig.xml b/.idea/MypyConfig.xml
new file mode 100644
index 00000000..c5bc1e62
--- /dev/null
+++ b/.idea/MypyConfig.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.idea/ballisticacore.iml b/.idea/ballisticacore.iml
new file mode 100644
index 00000000..b6e08559
--- /dev/null
+++ b/.idea/ballisticacore.iml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 00000000..6a0e6d5d
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 00000000..79ee123c
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/dictionaries/ericf.xml b/.idea/dictionaries/ericf.xml
new file mode 100644
index 00000000..60767f0a
--- /dev/null
+++ b/.idea/dictionaries/ericf.xml
@@ -0,0 +1,1733 @@
+
+
+
+ aaaa
+ aaab
+ aaac
+ aaad
+ aaae
+ aaaf
+ aaag
+ aaah
+ aaai
+ aarch
+ abeb
+ abot
+ abtn
+ accountui
+ accum
+ accumkillcount
+ accumkilledcount
+ accumscore
+ achdisplay
+ achname
+ achs
+ acinstance
+ ack
+ acked
+ acks
+ acnt
+ actionhero
+ activityname
+ activitytypes
+ activityutils
+ actorclass
+ adbpath
+ addgame
+ addr
+ adisp
+ advertizing
+ aidl
+ alarmsound
+ alibaba
+ allpaths
+ allsettings
+ allteams
+ aname
+ anamorphosis
+ andr
+ androidaddr
+ androidstudiocode
+ anim
+ animcurve
+ anota
+ anroid
+ antigravity
+ apichanges
+ apks
+ appcfg
+ appconfig
+ appdelegate
+ appengine
+ appiconset
+ appid
+ appinvite
+ appkit
+ applescript
+ appletv
+ appstate
+ appstore
+ apputils
+ archivepath
+ archivepathbase
+ archs
+ argh
+ argparse
+ argval
+ armeabi
+ arraymodule
+ assetcache
+ astcenc
+ astroid
+ asus
+ asynchat
+ asyncio
+ asynciomodule
+ asyncore
+ attrdict
+ attrdocs
+ attrinfo
+ attrname
+ attrtype
+ audiobooks
+ audioop
+ autodesk
+ autoremove
+ autoretain
+ autoselect
+ autotools
+ aval
+ axismotion
+ bacfg
+ backgrounded
+ backgrounding
+ badguy
+ bafoundation
+ ballistica
+ ballisticacore
+ ballisticacorecb
+ bamaster
+ barcolor
+ barebones
+ baseh
+ basemult
+ basepos
+ basespaz
+ basew
+ bastd
+ bbot
+ bbtn
+ bcppcompiler
+ belarussian
+ benboncan
+ bgmodel
+ bgterrain
+ bgtex
+ bhval
+ binc
+ bindcode
+ bindvals
+ bisectmodule
+ bitcode
+ blas
+ blastos
+ bldtp
+ blocksize
+ bluetooth
+ bname
+ bndl
+ boffs
+ bombsquad
+ bombsquadcb
+ bombsquadgame
+ bools
+ bootlocale
+ botdist
+ botlist
+ botpos
+ botpt
+ botspawnpts
+ bottlenecked
+ bottype
+ bpos
+ brandassets
+ bridgit
+ bsac
+ bsactor
+ bscampaign
+ bsfoundation
+ bsmaster
+ bsmusic
+ bsplaylist
+ bsremote
+ bsstd
+ bstournament
+ bsuffix
+ bsui
+ btnh
+ btnv
+ btnx
+ builddir
+ buildfile
+ buildtype
+ bullseye
+ bumpmap
+ buttondown
+ buttonwidget
+ byteswap
+ cachebasename
+ cacheentry
+ cachepath
+ calced
+ calcing
+ calcs
+ cameraflash
+ camerashake
+ campaignname
+ capb
+ capturetheflag
+ carentity
+ cashregistersound
+ cbits
+ cbot
+ cbtn
+ ccfgs
+ ccode
+ ccompiler
+ cdrk
+ cdull
+ centeuro
+ centiseconds
+ cfconfig
+ cfgdir
+ cfgkey
+ cfgkeys
+ cfgs
+ cfgui
+ cflags
+ cfuncs
+ cgitb
+ chaaarge
+ chal
+ changelogs
+ changeme
+ changesound
+ characterpicker
+ charmap
+ charname
+ charstr
+ checkarg
+ checkboxwidget
+ checkfast
+ checkfull
+ checkins
+ checkroundover
+ checksums
+ childnode
+ chipfork
+ chosenone
+ chromebooks
+ cjkcodecs
+ classmethod
+ classmethods
+ classname
+ classnames
+ cleancheck
+ cleanlist
+ clientid
+ clionbin
+ clioncode
+ clionroot
+ clrblu
+ clrend
+ clrgrn
+ clrhdr
+ clrred
+ cmathmodule
+ cmembers
+ cmodel
+ cnode
+ codecsmodule
+ codefilenames
+ codeop
+ collapsable
+ collidemodel
+ colordiff
+ colorpicker
+ colorsys
+ columnwidget
+ colw
+ commitconfig
+ compat
+ compileall
+ compilelocations
+ configerror
+ confighash
+ configkey
+ configparser
+ connectattr
+ containerwidget
+ contentmanager
+ contextlib
+ contextvars
+ contextvarsmodule
+ controlsguide
+ conv
+ convertlocationval
+ cookiejar
+ cooldown
+ cooldowns
+ coopgame
+ coopjoinscreen
+ coopscorescreen
+ coopsession
+ coords
+ copyreg
+ cornerpin
+ coroutines
+ countdownsounds
+ cpplint
+ cpplintcode
+ cpplintcodefull
+ cpuinfo
+ cpython
+ crashlytics
+ creditslist
+ cryptmodule
+ cstr
+ csum
+ ctest
+ ctex
+ ctype
+ curdir
+ curhash
+ curhashes
+ curstate
+ curtime
+ customizebrowser
+ cutscenes
+ cval
+ cwdg
+ cygwinccompiler
+ darwiin
+ darwiinremote
+ datab
+ dataclassutils
+ datamodule
+ dataname
+ datetimemodule
+ daynum
+ dayoffset
+ dbapi
+ dbpath
+ dcls
+ dcmake
+ deathmatch
+ deek
+ defs
+ deivit
+ depcls
+ depdata
+ depdatas
+ deps
+ depset
+ depsets
+ depsval
+ dereferencing
+ descpos
+ dest
+ devel
+ devicename
+ devtool
+ dgram
+ dhave
+ dheadless
+ diemessages
+ difflib
+ dilateerode
+ dingsound
+ dingsoundhigh
+ dirname
+ dirnames
+ dirtybit
+ dirtyfiles
+ disllowed
+ dispatchmethod
+ displayname
+ distro
+ distroot
+ distros
+ dline
+ dlls
+ dmodule
+ dname
+ dnode
+ doclines
+ docprefix
+ docslines
+ docstr
+ doctype
+ dofilter
+ domreg
+ domsg
+ dont
+ doraise
+ dosend
+ dosomething
+ dostar
+ dostuff
+ downmix
+ dpad
+ dpath
+ drawscreen
+ dripity
+ dropbox
+ dropdir
+ drumroll
+ dsqlite
+ dstattr
+ dstdata
+ dstfile
+ dstfin
+ dstjson
+ dstlines
+ dstname
+ dstnode
+ dstpath
+ dstpathfull
+ dstrootvar
+ dsts
+ dstvar
+ dtest
+ dtime
+ dualteamscorescreen
+ duckdns
+ dummymodule
+ dummyname
+ dummyval
+ dups
+ dxml
+ dynload
+ eachother
+ easteregghunt
+ editcontroller
+ editgame
+ editorconfig
+ efile
+ efro
+ efroemling
+ efrotool
+ efrotools
+ eftools
+ eids
+ elementtree
+ elim
+ emitfx
+ emoji
+ enablexinput
+ ename
+ encerr
+ endcall
+ endtime
+ ensurepip
+ entitylist
+ entrynew
+ entrytype
+ entrytypeselect
+ enumtype
+ envhash
+ epath
+ epicfail
+ ericf
+ ericfroemling
+ errcount
+ errno
+ errored
+ erroring
+ errorsound
+ etcpack
+ etsel
+ etxt
+ etype
+ evalpydata
+ evel
+ eventid
+ ewww
+ excludepowerups
+ excludetypes
+ excstr
+ execlocals
+ executils
+ exhash
+ expatbuilder
+ expatreader
+ explodable
+ explodey
+ exportoptions
+ exportoptionspath
+ exporttype
+ extraflagmat
+ extrahash
+ extrascale
+ exts
+ factoryclass
+ fallbacks
+ farthestpt
+ fbase
+ fclose
+ fcntlmodule
+ fcode
+ fcontents
+ fdata
+ fdesc
+ fecfc
+ feedparser
+ ffap
+ fhash
+ fhdr
+ fieldattr
+ fieldtypes
+ filecmp
+ fileinput
+ filelist
+ filenames
+ fileselector
+ filestates
+ filterlines
+ filterpath
+ filterpaths
+ finalmaterials
+ firebase
+ firestore
+ firetv
+ flac
+ flagmat
+ flagmaterial
+ flagmats
+ flagnode
+ flagpos
+ flav
+ fldtypes
+ flines
+ floof
+ floofcls
+ flycheck
+ fmod
+ fname
+ fnamefull
+ fnames
+ fnmatch
+ fnode
+ foof
+ foos
+ fopen
+ forcetype
+ forcevalue
+ forkserver
+ formatcode
+ formatcodefull
+ formatdoc
+ formatfull
+ formatscripts
+ formatscriptsfull
+ fout
+ fpath
+ fpathrel
+ fpathshort
+ fprint
+ fpsc
+ framerate
+ freefly
+ freeforallendscreen
+ freeforallsession
+ freepik
+ freesound
+ froemling
+ frombuffer
+ fsdf
+ fsettings
+ fsplit
+ fsrc
+ fstrs
+ ftmp
+ ftplib
+ ftst
+ ftxt
+ fullclean
+ fullcleanlist
+ fullpath
+ fullprice
+ fullscreen
+ fulltest
+ funcname
+ funcnames
+ funcptr
+ functiontestcase
+ functools
+ functxt
+ funtionality
+ futimens
+ gameactivity
+ gamebutton
+ gameclass
+ gameclasses
+ gameclassname
+ gameclassnames
+ gamedata
+ gameinstance
+ gamemap
+ gamepad
+ gamepadadvanced
+ gamepads
+ gamepadselect
+ gameplay
+ gameport
+ gameresults
+ gametype
+ gametypes
+ gameutils
+ gearvr
+ gendocs
+ gendummymodule
+ genericpath
+ genmapjson
+ genutils
+ getactivity
+ getclass
+ getcollide
+ getcollidemodel
+ getconfig
+ getcurrency
+ getdata
+ getlevelname
+ getmaps
+ getmodel
+ getnodes
+ getnodetype
+ getopt
+ getplayer
+ getpt
+ getremote
+ getscanresults
+ getsession
+ getsockname
+ getsound
+ getstarttime
+ gettext
+ gettexture
+ gfile
+ gfxb
+ ghnc
+ gioacchino
+ gitattributes
+ gitignore
+ gitignorelines
+ gitignoreraw
+ gitignores
+ gitlog
+ gitlogcore
+ globalsnode
+ gname
+ gnode
+ goles
+ goodlist
+ googlevr
+ gotresponse
+ gpio
+ gprev
+ gpsui
+ gradlepath
+ gradlew
+ gravis
+ grpentry
+ grpkey
+ grpmodule
+ grps
+ grpval
+ grumbledorf
+ guitarguy
+ gval
+ hacktastic
+ hacky
+ halign
+ handlemessage
+ hashopenssl
+ hashstr
+ hashval
+ hasstarted
+ hatmotion
+ hattach
+ hdpi
+ headerregistry
+ heapqmodule
+ hehe
+ helpui
+ hexdigest
+ hfile
+ hgfs
+ hgignore
+ highscores
+ hitpoints
+ hkscs
+ hlsl
+ hmac
+ hmmm
+ hmmmm
+ hoffs
+ holdposition
+ homebook
+ homebrew
+ hometest
+ howtoplay
+ hpos
+ hscrollwidget
+ hspacing
+ hurtiness
+ hval
+ icls
+ icns
+ iconpicker
+ iconscale
+ idevices
+ ifeq
+ ifneq
+ ilang
+ ilck
+ ilogput
+ imagemagick
+ imageset
+ imagestack
+ imagestacklayer
+ imagewidget
+ imaplib
+ imgh
+ imghdr
+ imgw
+ incentivized
+ incr
+ incrementbuild
+ indentfilter
+ indentstr
+ indicies
+ indstr
+ inet
+ inext
+ infileb
+ infos
+ infotextcolor
+ inidividual
+ initializers
+ initing
+ inits
+ inmobi
+ inputdevice
+ inputfiles
+ inputhash
+ inputnode
+ inpututils
+ inspectdir
+ insta
+ installdir
+ instancer
+ interstitials
+ intex
+ introspectable
+ ipaddress
+ ipos
+ iprof
+ iscale
+ iserverget
+ iserverput
+ ispunch
+ isysroot
+ itms
+ itmsp
+ itunes
+ jackmorgan
+ janktastic
+ janky
+ jascha
+ jenkinsfile
+ jexport
+ jisx
+ jite
+ jittering
+ joedeshon
+ johab
+ joinable
+ jovica
+ jsonstr
+ jsonstrbase
+ jsontools
+ jsonutils
+ keepaway
+ keeprefs
+ keylayout
+ keypresses
+ keystr
+ keytype
+ keywd
+ keywds
+ khronos
+ kickin
+ kickstart
+ killcount
+ killerplayer
+ killpath
+ killpaths
+ kingofthehill
+ kronk
+ kwargannotation
+ kwds
+ kwonlyargs
+ langdata
+ langmodule
+ langnames
+ langs
+ langtarget
+ langval
+ lastplayer
+ lastpoweruptype
+ laststand
+ launchtest
+ lbits
+ lcfg
+ lcolor
+ lcrypto
+ ldpi
+ leaderboard
+ leaderboards
+ leady
+ lenglishvalues
+ levelgametype
+ levelmodule
+ levelname
+ lfull
+ libcrypto
+ libinst
+ liblzma
+ libmain
+ libpython
+ libsqlite
+ libssl
+ libxz
+ lindex
+ lindexorig
+ lineheight
+ linenum
+ linkto
+ lintable
+ lintcode
+ linter
+ linters
+ lintscripts
+ lintscriptsfast
+ listobj
+ listvalidconfigs
+ llzma
+ lmerged
+ lmod
+ lmodfile
+ lmodvalues
+ lname
+ lnub
+ lnum
+ lnumend
+ lnumorig
+ lnums
+ localconfig
+ locationgroup
+ locationgroups
+ locationlist
+ locationsingles
+ locationval
+ locs
+ logcat
+ logitech
+ logput
+ loofa
+ losecount
+ lpos
+ lprop
+ lsbo
+ lsbt
+ lsprof
+ lsqlite
+ lssl
+ lstart
+ lstr
+ lstrs
+ ltex
+ lzma
+ lzmamodule
+ macappstore
+ macos
+ macpath
+ mailcap
+ mainmenu
+ makedeps
+ makesetup
+ malformatted
+ mallimportedby
+ mandir
+ mapdata
+ mapdef
+ mapdefs
+ mapitem
+ mapname
+ mapselect
+ maptype
+ markupbase
+ mathmodule
+ mathnode
+ mathutils
+ maxlinks
+ maxval
+ maxw
+ maxwidth
+ mdiv
+ mdocs
+ mdocslines
+ mdpi
+ megalint
+ memfunctions
+ menubar
+ metascan
+ meteorshower
+ mhash
+ mhsh
+ microprotocols
+ mikirog
+ mimetypes
+ mimportedby
+ mindepth
+ minicompat
+ minidom
+ minigame
+ minigames
+ minusbutton
+ minval
+ mios
+ mipmap
+ mipmaps
+ mline
+ mmapmodule
+ mmult
+ mname
+ mnode
+ mnpp
+ modder
+ modders
+ modename
+ modpack
+ modtimes
+ moduledir
+ modulefinder
+ modulename
+ modutils
+ moola
+ mopaque
+ mpath
+ mrmaxmeier
+ msbuild
+ mshell
+ msvccompiler
+ mtime
+ mtrans
+ mtvos
+ mult
+ multibytecodec
+ multikillcount
+ multiline
+ multiplayer
+ multiteamendscreen
+ multiteamjoinscreen
+ multithreaded
+ musicplayer
+ musictype
+ musopen
+ mval
+ mware
+ myactor
+ myappname
+ mycall
+ mycallback
+ myfilepath
+ myflag
+ myhome
+ myinput
+ mylist
+ mynode
+ myobj
+ myprojname
+ mypy
+ mypyscripts
+ mypyscriptsfull
+ mytextnode
+ myweakcall
+ mywidget
+ namedarg
+ nametext
+ nboxes
+ ncpu
+ ndbm
+ ndkpath
+ neededsettings
+ ness
+ nettesting
+ netutils
+ nevermind
+ newactivity
+ newdamage
+ newdbpath
+ newnode
+ newpath
+ nextlevel
+ nfoo
+ ninjafight
+ nitpicky
+ nline
+ nlines
+ nntplib
+ nodepos
+ nodpi
+ noinspect
+ nonmultipart
+ noone
+ norun
+ nospeak
+ nosub
+ notdir
+ npos
+ ntpath
+ ntriple
+ nturl
+ numedit
+ numstr
+ nvcompress
+ nvidia
+ nyko
+ objname
+ objs
+ objt
+ objtype
+ occurrances
+ oculus
+ offsanchor
+ oggenc
+ oghash
+ oghashes
+ ogval
+ oldlady
+ onscreencountdown
+ onscreenkeyboard
+ onscreentimer
+ opcode
+ opdir
+ operasinger
+ oppnode
+ opstr
+ optparse
+ orchestrahitsound
+ origwrapper
+ ortho
+ osascript
+ ostype
+ otherplayer
+ otherspawn
+ ourself
+ outdata
+ outdelay
+ outext
+ outname
+ outpath
+ ouya
+ painttxtattr
+ palmos
+ pandoc
+ parsermodule
+ partyqueue
+ partyval
+ passnode
+ passwd
+ patcomp
+ pathlib
+ pathstonames
+ patsubst
+ pausable
+ pbrowser
+ pbtn
+ pbxproj
+ pcall
+ pchild
+ pcstr
+ pedit
+ peditui
+ pentry
+ perma
+ phasers
+ phello
+ photoshop
+ phrea
+ pickletools
+ pickupmats
+ pipestatus
+ pkey
+ pkgutil
+ playerlostspaz
+ playernode
+ playerpt
+ playerpts
+ playerrec
+ playerspaz
+ playerval
+ playlistui
+ playmode
+ playoptions
+ playpad
+ playsound
+ playtype
+ playtypes
+ plistlib
+ plpt
+ plst
+ plusbutton
+ plvel
+ pmats
+ pname
+ pngs
+ pnode
+ podcasts
+ pogotron
+ pointpos
+ policybase
+ popen
+ poplib
+ popupcolor
+ popupscale
+ popupstr
+ popuptext
+ positionadjusted
+ posixpath
+ posixsubprocess
+ powerdown
+ powersgiven
+ powerup
+ powerupbox
+ powerupdist
+ powerups
+ poweruptype
+ powervr
+ ppos
+ pragmas
+ prch
+ prec
+ preflightfast
+ preflightfull
+ preflighting
+ prefs
+ preloaddata
+ preloaded
+ preloading
+ preloads
+ premult
+ premultiplied
+ premultiply
+ preprocessing
+ prereqs
+ priceraw
+ printnodes
+ printobjects
+ proactor
+ proc
+ procs
+ profileindex
+ profilekey
+ profilename
+ profilenames
+ proj
+ projectpath
+ projectroot
+ projroot
+ projs
+ promocode
+ prval
+ pstats
+ pstr
+ psubs
+ pswd
+ ptcp
+ ptdata
+ ptgroups
+ pthreads
+ ptrans
+ ptype
+ pubsync
+ pucknode
+ punchdir
+ punchiness
+ punchmats
+ punchpos
+ punchsound
+ pupgrade
+ purply
+ pushcall
+ pushchangelog
+ pushdocs
+ pushish
+ pval
+ pvars
+ pvrtc
+ pvrtcbest
+ pvrtcfast
+ pvval
+ pybee
+ pybuild
+ pycache
+ pycharmbin
+ pycharmroot
+ pycharmscripts
+ pycharmscriptsfull
+ pycheckers
+ pyclbr
+ pycode
+ pyconfig
+ pyconfigs
+ pycs
+ pydebug
+ pydecimal
+ pyexpat
+ pygram
+ pyio
+ pylib
+ pylibs
+ pylint
+ pylintplugins
+ pylintrc
+ pylintscripts
+ pylintscriptsfast
+ pylintscriptsfull
+ pyobjc
+ pyoffs
+ pypaths
+ pysources
+ pythonpath
+ pytree
+ pytz
+ qrcode
+ qrencode
+ qual
+ quoprimime
+ randommodule
+ randval
+ rankbutton
+ rankwindow
+ raspbian
+ rcfile
+ rdict
+ rdir
+ realpath
+ realsies
+ recache
+ redist
+ relpath
+ remainingchecks
+ remoteapp
+ reprlib
+ reqs
+ resample
+ resourcetypeinfo
+ respawn
+ respawnicon
+ responsetype
+ returncode
+ returnfuncptrs
+ returnspc
+ returnstr
+ returnval
+ retval
+ retvals
+ reversedeps
+ reversedepsraw
+ rfudge
+ rgba
+ rlcompleter
+ rmats
+ rmine
+ robotparser
+ rootc
+ rootdata
+ rootdir
+ rotatingtree
+ rowwidget
+ rpcg
+ rppg
+ rscale
+ rsdr
+ rsms
+ rstr
+ rtxt
+ runmypy
+ runonly
+ runpy
+ runswindows
+ rval
+ safecolor
+ safesetattr
+ saitek
+ samsung
+ sandboxing
+ sandyrb
+ saxutils
+ sbpos
+ sbtn
+ scenefile
+ scenefiles
+ scenename
+ sched
+ sclx
+ scly
+ scorescreen
+ scoretxt
+ scoreval
+ scorever
+ scorings
+ scproxy
+ screenmessage
+ scriptdirs
+ scriptfiles
+ scriptsdir
+ scrlw
+ scrollw
+ scrollwidget
+ sdata
+ sdkutils
+ sdtk
+ selectmodule
+ senze
+ serverbuild
+ servercallthread
+ servercallthreadtype
+ servercfg
+ serverdialog
+ serverget
+ serverput
+ sessionclass
+ sessiondata
+ sessionglobals
+ sessionname
+ sessiontype
+ setalpha
+ setbuild
+ setlanguage
+ setmusic
+ settingname
+ setversion
+ shakaharu
+ sharedctypes
+ sharedobj
+ sharedobjs
+ shiftdelay
+ shiftposition
+ shouldn
+ showpoints
+ showsubseconds
+ shroom
+ shutil
+ simplesubclasses
+ singledispatch
+ sirplus
+ sitebuiltins
+ skey
+ sline
+ smlh
+ smtpd
+ smtplib
+ snakeshadow
+ sname
+ snode
+ socketmodule
+ socketserver
+ sourceimages
+ sourcelines
+ spacingstr
+ spammers
+ spammy
+ sparx
+ spawner
+ spawnpoints
+ spawnpt
+ spawntype
+ spaz
+ spazappearance
+ spazbot
+ spazfactory
+ spazzes
+ spcall
+ spcstr
+ specialchar
+ specialoffer
+ spinoff
+ spinoffdata
+ spinoffs
+ splitlen
+ splitnumstr
+ squadcore
+ srcattr
+ srcdata
+ srcdir
+ srcjson
+ srcnode
+ srcpath
+ srcpathfull
+ srcpy
+ srcpydata
+ srcstr
+ srctxt
+ sshd
+ sslproto
+ stackstr
+ standin
+ starscale
+ startscan
+ starttime
+ stayin
+ stdafx
+ stdassets
+ stdbomb
+ stdflag
+ stdin
+ stdmap
+ stdmaps
+ stdobj
+ stdsettings
+ stdspaz
+ stedit
+ steelseries
+ stickman
+ storable
+ storeitemui
+ stringprep
+ stringptr
+ strobing
+ strptime
+ strt
+ strval
+ subclassof
+ subcontainer
+ subcontainerheight
+ subcontainerwidth
+ subdata
+ subdep
+ subdeps
+ subdirs
+ subfolders
+ subpath
+ subplatform
+ subplatforms
+ subprocesses
+ subrepos
+ subsel
+ subval
+ successfull
+ suiciding
+ sunau
+ suter
+ sval
+ svalin
+ sver
+ svne
+ swip
+ swipsound
+ symlinked
+ syncable
+ syncall
+ syncalllist
+ synccheck
+ syncforce
+ syncfull
+ syncitem
+ syncitems
+ synclist
+ sysconfigdata
+ sysctl
+ syslogmodule
+ tabval
+ taobao
+ taobaomascot
+ targ
+ targetdir
+ targetpractice
+ tbtcolor
+ tbtn
+ tbttxt
+ tbutton
+ tcall
+ tchar
+ tcombine
+ tdelay
+ teambasesession
+ teamgame
+ teamnamescolors
+ teamsize
+ teamsscorescreen
+ teamssession
+ teeeeeeeesssssttttdddddddd
+ teehee
+ teleporting
+ telnetlib
+ tempfile
+ templatecb
+ termios
+ testbuffer
+ testcall
+ testcallable
+ testcapi
+ testcapimodule
+ testclass
+ testfoo
+ testhelpers
+ testimportmultiple
+ testm
+ testmagicmethods
+ testmock
+ testpatch
+ testpt
+ testsealable
+ testsentinel
+ testsoundtrack
+ testthread
+ testval
+ testwith
+ texcube
+ textactor
+ textcolor
+ textpad
+ textscale
+ textwidget
+ textwidgets
+ tfin
+ thanvannispen
+ thelaststand
+ themself
+ threadtype
+ throwiness
+ timedisplay
+ timeformat
+ timemax
+ timemin
+ timeremaining
+ timestep
+ timestring
+ timetype
+ tipstext
+ titletext
+ tmpdir
+ tmpf
+ tmppath
+ tname
+ tnode
+ tntspawner
+ tntspawnpos
+ toolconfigs
+ toolconfigsrc
+ toolsdir
+ topkillcount
+ topkilledcount
+ toplevel
+ totaldudes
+ totalpts
+ touchpad
+ tournamententry
+ tournamentscores
+ tplayer
+ tpos
+ tracebacks
+ tracemalloc
+ trailcolor
+ transtime
+ tref
+ tret
+ trophystr
+ tscale
+ tscl
+ tspc
+ tstr
+ turtledemo
+ tval
+ tvalue
+ tvos
+ twrths
+ txtactor
+ txtl
+ txtnode
+ txts
+ txtv
+ txtval
+ txtw
+ typeargs
+ typechecker
+ typedval
+ typeshed
+ typestr
+ tzdiff
+ tzinfos
+ uadfc
+ uber
+ ugrade
+ uibounds
+ uicleanupcheck
+ uicleanupchecks
+ uicontroller
+ uilocation
+ uiscale
+ uiupkeeptimer
+ unallowed
+ uname
+ unbounds
+ uncollectible
+ unimported
+ uninferrable
+ uninited
+ uniquify
+ unixccompiler
+ unlinkable
+ unlinking
+ unlinks
+ unlocalized
+ unlockable
+ unmanaged
+ unmute
+ unpause
+ unpausing
+ unpremult
+ unpremultiply
+ unranked
+ unstripped
+ unsubscriptable
+ untracked
+ upcase
+ updatecheck
+ updatethencheck
+ updatethencheckfast
+ updatethencheckfull
+ uptime
+ useragent
+ useragentstring
+ userbase
+ userfunctions
+ utimensat
+ validpgpkeys
+ valnew
+ vals
+ valuedispatch
+ valuetext
+ valuetype
+ varargannotation
+ varname
+ varsize
+ vartype
+ vcxproj
+ venv
+ versionpredicate
+ vert
+ verts
+ virotic
+ vmaddr
+ vmcfg
+ vmrun
+ vmshell
+ vmware
+ vmwarevm
+ vobj
+ voffs
+ vorbis
+ vpos
+ vrmode
+ vrtesting
+ vscode
+ vsync
+ vsyncs
+ vval
+ wasdead
+ weakref
+ weakrefs
+ weakrefset
+ webbrowser
+ webpage
+ webpages
+ whatevs
+ wheee
+ widgetdeathtime
+ wiimote
+ wiimotes
+ willeval
+ wincfg
+ wincount
+ winplt
+ winprj
+ winref
+ winscore
+ winsound
+ winstate
+ wmsbe
+ woooo
+ workdir
+ wpath
+ writeclasses
+ writefuncs
+ wtcolor
+ wtflib
+ wttxt
+ xach
+ xbox
+ xcarchive
+ xcassets
+ xcodebuild
+ xcpretty
+ xcprojpath
+ xcscheme
+ xcsettings
+ xcworkspacedata
+ xdrlib
+ xhdpi
+ xinput
+ xjtp
+ xmlbuilder
+ xmln
+ xmlns
+ xmlparse
+ xmlreader
+ xmlrole
+ xmlrpc
+ xmltok
+ xmore
+ xoffs
+ xoffset
+ xpos
+ xres
+ xscl
+ xval
+ xxdiff
+ xxhdpi
+ xxsubtype
+ xxxhdpi
+ yach
+ yapf
+ yapfconfig
+ yinyang
+ ypos
+ yres
+ yscl
+ yval
+ zaggy
+ zimbot
+ zipapp
+ zlib
+ zlibmodule
+ zoomtext
+ zpos
+ zval
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Default.xml b/.idea/inspectionProfiles/Default.xml
new file mode 100644
index 00000000..02d0bc18
--- /dev/null
+++ b/.idea/inspectionProfiles/Default.xml
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 00000000..cfcfda2e
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jsonSchemas.xml b/.idea/jsonSchemas.xml
new file mode 100644
index 00000000..5dd84805
--- /dev/null
+++ b/.idea/jsonSchemas.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000..b158bc45
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..23614f17
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/.idea/mypy.xml b/.idea/mypy.xml
new file mode 100644
index 00000000..e30eafb4
--- /dev/null
+++ b/.idea/mypy.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/scopes/NonPython.xml b/.idea/scopes/NonPython.xml
new file mode 100644
index 00000000..b371b277
--- /dev/null
+++ b/.idea/scopes/NonPython.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/scopes/PyIgnoreUnresolved.xml b/.idea/scopes/PyIgnoreUnresolved.xml
new file mode 100644
index 00000000..71d2aee9
--- /dev/null
+++ b/.idea/scopes/PyIgnoreUnresolved.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/.idea/scopes/UncheckedPython.xml b/.idea/scopes/UncheckedPython.xml
new file mode 100644
index 00000000..f2a289bc
--- /dev/null
+++ b/.idea/scopes/UncheckedPython.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..94a25f7f
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file