* Some other misc refactor
* Auto reload all command boxes when changing the command options
* Add origin isolation to prevent cross-origin fingerprinting, etc. with webm-type initData or persistent licenses
* Logs from different origins can have duplicate entries even if pssh is same
* Fix 'some' coding style inconsistencies (but there are still many)
* Also make the command options collapsible, and save the collapsed state
* Next commit: change the decision of keeping duplicate sessions for persistent sessions
* Block persistentState: required keySystemAccess if persistence is disallowed
* Finish persistent license support
* Tested on https://biograf-155113.appspot.com/ttt/episode-2/, it's a bit broken so you should put sessionId in IndexedDB manually with the console
* Always use the JS-facing sessionId for internal handling (on both WV and PR) for simplicity
* Replace dirty string-based inter-script communication with JSON one
* Not tested yet at all due to lack of functional test material
* Allow SuperGeneric devices to be imported without having a base URL set ('host' key)
* Abort remote requests if expected key is not found
* Prevent duplicate log entries if a entry was added while the panel was open
* Prevent importing invalid device files
* Misc panel UI changes
* Allow removing site profiles without actually visiting the page
* Fix special characters in the back of the site scope label going to the front of the label
* Fix encoding and formatting of the exported log JSON files
* Remove unused code
* Better error handling for the panel
* Fix error message not showing if an empty content key array is returned from the remote server
* Fix PlayReady remote not working with raw pyplayready serve
* Temp commit that adds queueing for remote requests (attempt to fix CDRM invalidating second sessions)
* Will be removed in the next commit cuz I realized queueing the whole workflow (getReq+parseLic) is not possible if webpage generateRequests in parallel
* Merge SuperGeneric with the normal remote mode
* Refactor the previous non-generic remote CDM code to use SuperGeneric with generated default API config
* Improve error handling and notification
* Fix removing a remote device of a system messing with the other system's selected remote device
* Log tab titles and use that for generating m3u8dl commands
* Return a Widevine EME disabled on Firefox+Widevine (just like the real message) when WV is blocked
* Refactor SuperGeneric to be more flexible about number of requests
* Finish SuperGeneric
* Add support for PlayReady remote device (never tested cuz I don't own one)
* Fix ClearKey not working when blockDisabled is enabled
* Notify background script failures