User.js: FYI: excellent top-notch tool for comparing user.js files

Created on 30 Jun 2018  路  72Comments  路  Source: arkenfox/user.js

Go to : https://github.com/claustromaniac/Compare-UserJS

-- original post

I just want to share with you all my latest scripting endeavor. I hope you don't mind.

All feedback is welcome.

Feel free to close this issue whenever you want, since it's not really an issue.

Thanks.

FYI

Most helpful comment

Updated to v1.2 v1.2.1 v1.2.2.

All 72 comments

sounds cool - maybe we can add it here. I'll have a play with it in the next week.

PS: you need a space between elegant and [Citation needed.]

very niiiice

I tested it and compared the output from my script with yours ...

1.txt - certain part of the ghacks user.js (253 prefs)
2.txt - TBB v8a9 default prefs (3336 prefs)

yours only detects 3333 in 2.txt

mine detected 76 matching prefs (yours: 72), 156 with different values (yours: 450! you need to divide by 3, thus 150 actual prefs) and 21 not declared in 2.txt (same as yours)

your script also detects 10 prefs exist in both files but are inactive in 2.txt but there are no inactive prefs in 2.txt. Probably due to prefs like this (note the /* in https://*):

user_pref("extensions.webextensions.base-content-security-policy", "script-src 'self' https://* moz-extension: blob: filesystem: 'unsafe-eval' 'unsafe-inline'; object-src 'self' https://* moz-extension: blob: filesystem:;");

IDK if that's the only thing it stumbles on though

FYI when I pasted the content of 2.txt I hadn't opened the file as UTF-8 and thus some chars are fubar-ed (fe in font.system.whitelist). It doesn't really matter for the purpose of this comparison but if you want the original UTF-8 file I can upload it somewhere. Or maybe it's recoverable from the pasty, IDK.

maybe we can add it here.

Sure, if you want.

you need a space between elegant and [Citation needed.]

You're right :+1:

@earthlng Thanks for testing it! I noticed the wrong number of different prefs yesterday but I was busy so I didn't touch it. The thing about prefs with https://*is a great catch. I will fix those things soon.

I still see some room for improvements, other than that. I could make the algorithm smarter in more than a few ways, really, but there might be a significant trade-off in performance, so I'll probably just retouch the regexes a bit, for starters. I also noticed that sometimes it takes it a pretty long while to parse some files. I don't have much experience with PowerShell, but with some more analysis I may eventually come up with some way to make it faster.

EDIT: OK, I noticed a handful of things I can try. Will probably be a bit busy today, but I have some significant improvements in mind for later.

v1.1 overview: I noticed some other minor issues, and I fixed them all. The thing is also a bit smarter, it can even parse *pref() calls that include line breaks in the syntax (as long as the breaks are not in the prefname or value parameters). There are still many things it can't understand, but it should be more than sufficiently good for typical use, I guess.

I also streamlined the code overall. Some lines weren't necessary at all. The output looks slightly different, too.

I considered making more changes, maybe add more parameters for additional options and whatnot.

Hmph. I came across one weird bug already. STR: Compare ghacks-user.js to master-branch pyllyukko's. If you don't get toolkit.telemetry.unified as having a possible syntax error, then it's something on my end, which I doubt.

Weird shit seems to chase me everywhere I go. There's no obvious reason for that to happen. I'll look into it later.

I tested it with the version of the script I had of your initial v1.1 release and it didn't have that problem.
Then I downloaded your latest master and it does show that pref as possibly broken.
Diffing the 2 scripts shows that you changed 4 lines in your latest version:

in Get-UserJSPrefs():
old lines:

$val = ($line -creplace "^.*pref\s*\(\s*['""][^'""]+['""]\s*,\s*(?:(?:['""](.*?)['""])|(true|false|-?[0-9]+))\s*\).*", '$1$2')

if ($broken) {$val = ($line -creplace "^.*pref\s*\(\s*['""][^'""]+['""]\s*,(.*?)\).*", '$1')}

new:

$val = ($line -creplace "^.*pref\(['""][^'""]+['""],(?:(?:['""](.*?)['""])|(true|false|-?[0-9]+))\);.*", '$1$2')

if ($broken) {$val = ($line -creplace "^.*pref\(['""][^'""]+['""],(.*?)\);.*", '$1')}

in Main Execution:
old lines:

# Remove unnecessary space and new-line characters within the target JS expressions.
$fileA = ($fileA -creplace "(?s)pref\s*\(\s*(\S.+?)\s*,\s*(.+?)\s*\)\s*;", 'pref($1,$2);')
$fileB = ($fileB -creplace "(?s)pref\s*\(\s*(\S.+?)\s*,\s*(.+?)\s*\)\s*;", 'pref($1,$2);')

new:

# Remove unnecessary space and new-line characters within the target JS expressions.
$fileA = ($fileA -creplace "(?s)pref\s*\(\s*(.+?)\s*,\s*(.+?)\s*\)\s*;", 'pref($1,$2);')
$fileB = ($fileB -creplace "(?s)pref\s*\(\s*(.+?)\s*,\s*(.+?)\s*\)\s*;", 'pref($1,$2);')

From looking at the output (it should be ==>+1 space+1 tab+pref value) it detects the pref value as 1 space+false. A bit more debugging shows that it removes the spaces in the description of 0330 instead of the pref line:
original:

/* 0330: disable telemetry
 * the pref (.unified) affects the behaviour of the pref (.enabled)
 * ...
 * or release builds (true and false respectively), see [2]
 * ... ***/
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.enabled", false);

after Remove unnecessary space and new-line characters within the target JS expressions:

/* 0330: disable telemetry
 * the pref(.unified) affects the behaviour of the pref (.enabled)
 * ...
 * or release builds (true and false respectively),see [2]
 * ... ***/
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.enabled",false);

ps: change $sep to use $nl instead of \n

An option to hide the matching prefs would be nice fe if I'd use this to compare FF's default values for our Diffs. I'd still like to know the number of matching prefs but don't need the 3000+ prefs in the output.
maybe something like this (not sure if this is the correct syntax!):

if ($matching_prefs) {... + " prefs match:" + $nl+$nl + $(If ($hideMatching) {""} Else {$matching_prefs}) + $nl}

And maybe show which of the matching and different prefs are inactive, fe like this:

    extensions.pocket.enabled   ==>     false
    (inactive) general.appname.override     ==>     Netscape

...

    (inactive) xpinstall.signatures.required
        ghacks.js:  false
        pk.js:  true

Showing the number of combined unique prefs in the report would also be nice to have IMO. Maybe together with a breakdown of each category and making it a bit clearer what each category means value and state-wise, for example:

Compared files: ghacks.js, pk.js
590  prefs in ghacks.js (ghacks.js)
305  prefs in pk.js (pk.js)

xxxx  combined unique prefs
 139  matching prefs, both value and state (active/inactive)
  14  prefs with different values but matching state
  78  prefs not declared in ghacks.js
 363  prefs not declared in pk.js
  67  prefs with matching values but inactive in ghacks.js
   7  prefs with matching values but inactive in pk.js

As for the not declared they could also show the (inactive) in front of the prefname as well as the prefvalue behind them.

If you prefer the output as is then maybe add an option the enable the more detailed output.

An option to hide the matching prefs

similarly when I compare a user.js against the 3000+ default values of FF, I don't care about the ~2800 prefs not declared in the user.js. A bitflag to hide the output of matching and/or the 2 not declared would be a neat solution and would only require 1 additional int parameter.
Like, 7 would be the default and show everything (if bitflag < 0 or bitflag > 7 then bitflag = 7); subtract 4 to hide the matching prefs and/or sub 1 and/or 2 to hide the not declared in either fileA and/or fileB.

Do you have any good links to documents and/or references that you used to learn PS? On the only official MS documentation I found there's wasn't even anything about available variable types and shit.

Oh and FUCK Microsoft for apparently being unable to create ANY fucking page that works without JS ffs!
The complete Go Programming Language Specification is a single static page that works perfectly fine without JS - why the fuck can't MS do anything right?! (sorry for the rant :)

Thanks for all the feedback mate! You're a time saver.

I'll be looking into the issue with toolkit.telemetry.unified in a while. I had too some of the ideas you brought up, especially the ones about hiding part of the output. I'll try to implement all those changes, it shouldn't be much work.

FUCK Microsoft for apparently being unable to create ANY fucking page that works without JS ffs!

IKR. I mostly use SS64.com for that very reason. Look here and here, mostly.

Thanks for the links, that looks to be exactly what I need :+1:

Without having tested anything yet, I can see the issue clearly now. Did I mention you're a time saver?

It's the regex for removing spaces. For some reason I don't remember (probably sleep-deprived logic), I removed the quotes from the part that is meant to match the prefname.

The regex reads:

(?s)pref\s*\(\s*(.+?)\s*,\s*(.+?)\s*\)\s*;

When it should be a bit more strict, at the very least something like:

(?s)pref\s*\(\s*['""](.+?)['""]\s*,\s*(.+?)\s*\)\s*;

Without specifying the quotes, that regex interpets this as the prefname:

.unified) affects the behaviour of the pref (.enabled)
 * ...
 * or release builds (true and false respectively)

... and this as the value:

 see [2]
 * ... ***/
user_pref("toolkit.telemetry.unified", false

:man_facepalming:

I think I'll use this regex for removing spaces instead:

(?s)pref\s*\(\s*['""](\S*?)['""]\s*,\s*(.+?)\s*\)\s*;

It matches as many non-space non-newline characters as it can as the prefname. It should even be faster too.

that regex interpets this as the prefname

Yeah from looking only at the code that's what I initially thought too but it's not what's happening. It wouldn't be able to report toolkit.telemetry.unified as a broken pref if it matched that long ass string as its prefname.

I think I'll use this regex for removing spaces instead:

while that would fix this specific case it would still be possible to break it. I think regardless of what you do in the Remove unnecessary space and new-line characters within the target JS expressions part, you should still put the whitespace checks back in the regexes within Get-UserJSPrefs()

It wouldn't be able to report toolkit.telemetry.unified as a broken pref if it matched that long ass string as its prefname.

No, because that regex only removes spaces and line breaks, it doesn't extract prefname and value. That part is done in the Get-UserJSPref function.

while that would fix this specific case it would still be possible to break it.

No, because ... what I just said :grin: That part is taken care of ahead in the flow.

What do you think about having the script default to hiding the matching prefs and an option for showing the full report (instead of an option for hiding the matches)? I think I'd like that better myself.

No, because ... what I just said

Thinking it through... Something like this should break it:

/* the syntax usually begins with user_pref("prefname", but you already know that.
All of this is also part of the value. I'm such a troll.
*/
user_pref("blabla", true);

It would be uncommon, but I guess it is possible after all. Alright, I'll add spaces to that specific part of the regex in the Get-UserJSPrefs function.

IMO showing the matching prefs by default is probably more in line with what people want (in most cases)

Thinking it through... Something like this should break it

told you :smiley_cat:

you two are such nerds .. get a room already

Look who's talking. :laughing: I'd say we're all nerds around here. GitHub is pretty much full of nerds.

I'll take it as a compiment, though.

@earthlng, regarding the option for hiding part of the output, what do you think about something like this?

-hideMask <int>

0 - hide nothing (default)
1 - hide matches
2 - hide differences
4 - hide declared in A but not in B
8 - hide declared in B but not in A
16 - hide inactive in A but active in B
32 - hide inactive in B but active in A

I can use bitwise operators to keep the code looking clean.

Updated to v1.2 v1.2.1 v1.2.2.

I don't know why anyone would ever want to hide fe pref differences but I guess it's better to have the option and not need it than to not have the option at all.

Yup. If someone _does_ want it, they have it. It didn't cost even a single extra line of code, just ~25 bytes per filter, so there was no real good reason not to include those options too.

I still want to test this more, but it is already looking quite complete for me. I hope I'm not missing/overlooking anything.

does it ignore the parrots :bird:

I don't see why that would be necessary. The output wouldn't be completely honest if it ignored arbitrary prefs, either.

Click to see what the output looks like. :point_left:

:::::::::::: { Compare-UserJS Report } ::::::::::::

(date removed)

  Compared files: ghacks.js, pk.js
  592 unique prefs in ghacks.js
  305 unique prefs in pk.js

  670 combined unique prefs
  136 matching prefs, both value and state (active/inactive)
  13 prefs with different values but same matching state
  78 prefs not declared in ghacks.js
  365 prefs not declared in pk.js
  71 prefs with matching values but inactive in ghacks.js
  7 prefs with matching values but inactive in pk.js


------------------------------------------------------------------------------
 The following 136 prefs match:

    app.shield.optoutstudies.enabled    ==>     false
    beacon.enabled  ==>     false
    breakpad.reportURL  ==>     ""
    browser.cache.disk.enable   ==>     false
    browser.cache.disk_cache_ssl    ==>     false
    (inactive) browser.cache.memory.enable  ==>     false
    browser.crashReports.unsubmittedCheck.enabled   ==>     false
    browser.display.use_document_fonts  ==>     0
    browser.download.folderList     ==>     2
    browser.download.useDownloadDir     ==>     false
    browser.fixup.alternate.enabled     ==>     false
    browser.fixup.hide_user_pass    ==>     true
    browser.formfill.enable     ==>     false
    browser.helperApps.deleteTempFileOnExit     ==>     true
    browser.newtab.preload  ==>     false
    browser.newtabpage.enabled  ==>     false
    browser.pagethumbnails.capturing_disabled   ==>     true
    browser.safebrowsing.downloads.remote.enabled   ==>     false
    browser.search.countryCode  ==>     "US"
    browser.search.geoip.url    ==>     ""
    browser.search.geoSpecificDefaults  ==>     false
    browser.search.region   ==>     "US"
    browser.search.suggest.enabled  ==>     false
    browser.search.update   ==>     false
    browser.send_pings  ==>     false
    browser.send_pings.require_same_host    ==>     true
    browser.sessionstore.privacy_level  ==>     2
    browser.shell.checkDefaultBrowser   ==>     false
    browser.shell.shortcutFavicons  ==>     false
    browser.ssl_override_behavior   ==>     1
    browser.tabs.crashReporting.sendReport  ==>     false
    browser.uitour.enabled  ==>     false
    browser.urlbar.autocomplete.enabled     ==>     false
    browser.urlbar.autoFill     ==>     false
    browser.urlbar.autoFill.typed   ==>     false
    browser.urlbar.filter.javascript    ==>     true
    browser.urlbar.suggest.history  ==>     false
    browser.urlbar.suggest.searches     ==>     false
    browser.urlbar.trimURLs     ==>     false
    datareporting.healthreport.uploadEnabled    ==>     false
    datareporting.policy.dataSubmissionEnabled  ==>     false
    devtools.chrome.enabled     ==>     false
    devtools.debugger.remote-enabled    ==>     false
    devtools.webide.autoinstallADBHelper    ==>     false
    devtools.webide.enabled     ==>     false
    dom.allow_cut_copy  ==>     false
    dom.event.clipboardevents.enabled   ==>     false
    (inactive) dom.event.contextmenu.enabled    ==>     false
    (inactive) dom.indexedDB.enabled    ==>     false
    dom.ipc.plugins.flash.subprocess.crashreporter.enabled  ==>     false
    dom.ipc.plugins.reportCrashURL  ==>     false
    dom.serviceWorkers.enabled  ==>     false
    (inactive) dom.storage.enabled  ==>     false
    dom.vibrator.enabled    ==>     false
    dom.webaudio.enabled    ==>     false
    dom.webnotifications.enabled    ==>     false
    extensions.blocklist.enabled    ==>     true
    extensions.getAddons.cache.enabled  ==>     false
    extensions.pocket.enabled   ==>     false
    (inactive) general.appname.override     ==>     "Netscape"
    (inactive) general.appversion.override  ==>     "5.0 (Windows)"
    (inactive) general.oscpu.override   ==>     "Windows NT 6.1"
    (inactive) general.platform.override    ==>     "Win32"
    geo.wifi.uri    ==>     "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"
    gfx.font_rendering.opentype_svg.enabled     ==>     false
    intl.accept_languages   ==>     "en-US, en"
    javascript.options.asmjs    ==>     false
    javascript.use_us_english_locale    ==>     true
    keyword.enabled     ==>     false
    layout.css.visited_links_enabled    ==>     false
    lightweightThemes.update.enabled    ==>     false
    (inactive) loop.enabled     ==>     false
    media.getusermedia.audiocapture.enabled     ==>     false
    media.getusermedia.screensharing.enabled    ==>     false
    media.gmp-gmpopenh264.enabled   ==>     false
    media.navigator.enabled     ==>     false
    media.navigator.video.enabled   ==>     false
    media.peerconnection.enabled    ==>     false
    media.peerconnection.ice.default_address_only   ==>     true
    media.peerconnection.ice.no_host    ==>     true
    network.allow-experiments   ==>     false
    network.captive-portal-service.enabled  ==>     false
    network.cookie.thirdparty.sessionOnly   ==>     true
    network.dns.disablePrefetch     ==>     true
    network.dns.disablePrefetchFromHTTPS    ==>     true
    network.http.speculative-parallel-limit     ==>     0
    network.IDN_show_punycode   ==>     true
    network.predictor.enabled   ==>     false
    network.prefetch-next   ==>     false
    network.proxy.socks_remote_dns  ==>     true
    plugin.state.flash  ==>     0
    plugin.state.java   ==>     0
    plugins.click_to_play   ==>     true
    privacy.clearOnShutdown.cache   ==>     true
    privacy.clearOnShutdown.downloads   ==>     true
    privacy.clearOnShutdown.formdata    ==>     true
    privacy.clearOnShutdown.history     ==>     true
    privacy.clearOnShutdown.offlineApps     ==>     true
    privacy.clearOnShutdown.sessions    ==>     true
    privacy.cpd.cache   ==>     true
    privacy.cpd.formdata    ==>     true
    privacy.cpd.history     ==>     true
    privacy.cpd.offlineApps     ==>     true
    privacy.cpd.sessions    ==>     true
    privacy.firstparty.isolate  ==>     true
    privacy.resistFingerprinting    ==>     true
    privacy.sanitize.sanitizeOnShutdown     ==>     true
    privacy.sanitize.timeSpan   ==>     0
    security.ask_for_password   ==>     2
    security.cert_pinning.enforcement_level     ==>     2
    security.csp.enable     ==>     true
    security.csp.experimentalEnabled    ==>     true
    security.insecure_field_warning.contextual.enabled  ==>     true
    security.insecure_password.ui.enabled   ==>     true
    security.mixed_content.block_active_content     ==>     true
    security.mixed_content.block_display_content    ==>     true
    security.OCSP.enabled   ==>     1
    security.OCSP.require   ==>     true
    security.pki.sha1_enforcement_level     ==>     1
    security.ssl.disable_session_identifiers    ==>     true
    security.ssl.enable_ocsp_stapling   ==>     true
    security.ssl.errorReporting.automatic   ==>     false
    (inactive) security.ssl.require_safe_negotiation    ==>     true
    security.ssl.treat_unsafe_negotiation_as_broken     ==>     true
    security.tls.version.fallback-limit     ==>     3
    security.tls.version.max    ==>     4
    services.blocklist.update_enabled   ==>     true
    signon.autofillForms    ==>     false
    signon.autofillForms.http   ==>     false
    signon.formlessCapture.enabled  ==>     false
    toolkit.telemetry.enabled   ==>     false
    toolkit.telemetry.unified   ==>     false
    webgl.disabled  ==>     true
    webgl.disable-extensions    ==>     true
    webgl.disable-fail-if-major-performance-caveat  ==>     true
    webgl.min_capability_mode   ==>     true


------------------------------------------------------------------------------
 The following 13 prefs have different values:

    (inactive) browser.aboutHomeSnippets.updateUrl
        ghacks.js:  "data:,"
        pk.js:  ""
    (inactive) extensions.blocklist.url
        ghacks.js:  "https://blocklists.settings.services.mozilla.com/v1/blocklist/3/%APP_ID%/%APP_VERSION%/"
        pk.js:  "https://blocklist.addons.mozilla.org/blocklist/3/%APP_ID%/%APP_VERSION%/"
    (inactive) general.useragent.override
        ghacks.js:  "Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0"
        pk.js:  "Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0"
    (inactive) media.gmp-manager.url
        ghacks.js:  "data:text/plain,"
        pk.js:  ""
    (inactive) network.cookie.cookieBehavior
        ghacks.js:  2
        pk.js:  1
    (inactive) network.http.referer.spoofSource
        ghacks.js:  false
        pk.js:  true
    (inactive) pdfjs.disabled
        ghacks.js:  false
        pk.js:  true
    (inactive) privacy.clearOnShutdown.cookies
        ghacks.js:  false
        pk.js:  true
    (inactive) privacy.cpd.cookies
        ghacks.js:  false
        pk.js:  true
    (inactive) security.dialog_enable_delay
        ghacks.js:  700
        pk.js:  1000
    (inactive) security.password_lifetime
        ghacks.js:  5
        pk.js:  1
    (inactive) security.tls.version.min
        ghacks.js:  3
        pk.js:  1
    (inactive) xpinstall.signatures.required
        ghacks.js:  false
        pk.js:  true


------------------------------------------------------------------------------
 The following 78 prefs are not declared in ghacks.js:

    browser.download.manager.retention  ==>     0
    browser.formfill.expire_days    ==>     0
    browser.newtab.url  ==>     "about:blank"
    browser.newtabpage.activity-stream.feeds.section.topstories     ==>     false
    browser.offline-apps.notify     ==>     true
    browser.startup.homepage_override.buildID   ==>     20100101
    devtools.debugger.force-local   ==>     true
    dom.mozTCPSocket.enabled    ==>     false
    media.webspeech.recognition.enable  ==>     false
    network.dns.blockDotOnion   ==>     true
    (inactive) network.http.keep-alive.timeout  ==>     15
    network.negotiate-auth.allow-insecure-ntlm-v1   ==>     false
    (inactive) network.negotiate-auth.allow-insecure-ntlm-v1-https  ==>     false
    network.protocol-handler.expose.about   ==>     true
    network.protocol-handler.expose.blob    ==>     true
    network.protocol-handler.expose.chrome  ==>     true
    network.protocol-handler.expose.data    ==>     true
    network.protocol-handler.expose.file    ==>     true
    network.protocol-handler.expose.ftp     ==>     true
    network.protocol-handler.expose.http    ==>     true
    network.protocol-handler.expose.https   ==>     true
    network.protocol-handler.expose.javascript  ==>     true
    network.protocol-handler.expose.moz-extension   ==>     true
    network.protocol-handler.expose-all     ==>     false
    network.protocol-handler.external.about     ==>     false
    network.protocol-handler.external.blob  ==>     false
    network.protocol-handler.external.chrome    ==>     false
    network.protocol-handler.external.data  ==>     false
    network.protocol-handler.external.file  ==>     false
    network.protocol-handler.external.ftp   ==>     false
    network.protocol-handler.external.http  ==>     false
    network.protocol-handler.external.https     ==>     false
    network.protocol-handler.external.javascript    ==>     false
    network.protocol-handler.external.moz-extension     ==>     false
    network.protocol-handler.warn-external-default  ==>     true
    network.stricttransportsecurity.preloadlist     ==>     true
    plugin.state.libgnome-shell-browser-plugin  ==>     0
    security.fileuri.strict_origin_policy   ==>     true
    security.sri.enable     ==>     true
    security.ssl.enable_ocsp_must_staple    ==>     true
    security.ssl3.dhe_dss_aes_128_sha   ==>     false
    security.ssl3.dhe_dss_aes_256_sha   ==>     false
    security.ssl3.dhe_dss_camellia_128_sha  ==>     false
    security.ssl3.dhe_dss_camellia_256_sha  ==>     false
    security.ssl3.dhe_dss_des_ede3_sha  ==>     false
    security.ssl3.dhe_rsa_camellia_128_sha  ==>     false
    security.ssl3.dhe_rsa_camellia_256_sha  ==>     false
    security.ssl3.dhe_rsa_des_ede3_sha  ==>     false
    security.ssl3.ecdh_ecdsa_aes_128_sha    ==>     false
    security.ssl3.ecdh_ecdsa_aes_256_sha    ==>     false
    security.ssl3.ecdh_ecdsa_des_ede3_sha   ==>     false
    security.ssl3.ecdh_ecdsa_null_sha   ==>     false
    security.ssl3.ecdh_ecdsa_rc4_128_sha    ==>     false
    security.ssl3.ecdh_rsa_aes_128_sha  ==>     false
    security.ssl3.ecdh_rsa_aes_256_sha  ==>     false
    security.ssl3.ecdh_rsa_des_ede3_sha     ==>     false
    security.ssl3.ecdh_rsa_null_sha     ==>     false
    security.ssl3.ecdh_rsa_rc4_128_sha  ==>     false
    security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256    ==>     true
    security.ssl3.ecdhe_ecdsa_aes_256_sha   ==>     true
    security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256  ==>     true
    security.ssl3.ecdhe_ecdsa_des_ede3_sha  ==>     false
    security.ssl3.ecdhe_ecdsa_null_sha  ==>     false
    security.ssl3.ecdhe_rsa_aes_128_gcm_sha256  ==>     true
    security.ssl3.ecdhe_rsa_aes_256_sha     ==>     true
    security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256    ==>     true
    security.ssl3.ecdhe_rsa_des_ede3_sha    ==>     false
    security.ssl3.ecdhe_rsa_null_sha    ==>     false
    security.ssl3.rsa_1024_rc4_56_sha   ==>     false
    security.ssl3.rsa_camellia_128_sha  ==>     false
    security.ssl3.rsa_camellia_256_sha  ==>     false
    security.ssl3.rsa_fips_des_ede3_sha     ==>     false
    security.ssl3.rsa_null_md5  ==>     false
    security.ssl3.rsa_null_sha  ==>     false
    security.ssl3.rsa_rc2_40_md5    ==>     false
    security.ssl3.rsa_rc4_40_md5    ==>     false
    security.ssl3.rsa_seed_sha  ==>     false
    shumway.disabled    ==>     true


------------------------------------------------------------------------------
 The following 365 prefs are not declared in pk.js:

    _user.js.parrot     ==>     "SUCCESS: No no he's not dead, he's, he's restin'!"
    accessibility.force_disabled    ==>     1
    (inactive) accessibility.typeaheadfind  ==>     true
    alerts.showFavicons     ==>     false
    app.normandy.api_url    ==>     ""
    app.normandy.enabled    ==>     false
    app.update.service.enabled  ==>     false
    app.update.silent   ==>     false
    app.update.staging.enabled  ==>     false
    (inactive) browser.backspace_action     ==>     2
    (inactive) browser.bookmarks.showRecentlyBookmarked     ==>     false
    browser.cache.disk.capacity     ==>     0
    browser.cache.disk.smart_size.enabled   ==>     false
    browser.cache.disk.smart_size.first_run     ==>     false
    browser.cache.frecency_experiment   ==>     -1
    (inactive) browser.cache.memory.capacity    ==>     0
    browser.cache.offline.insecure.enable   ==>     false
    browser.chrome.errorReporter.enabled    ==>     false
    browser.chrome.errorReporter.submitUrl  ==>     ""
    (inactive) browser.chrome.favicons  ==>     false
    (inactive) browser.chrome.site_icons    ==>     false
    browser.crashReports.unsubmittedCheck.autoSubmit    ==>     false
    browser.crashReports.unsubmittedCheck.autoSubmit2   ==>     false
    (inactive) browser.ctrlTab.previews     ==>     true
    (inactive) browser.download.autohideButton  ==>     false
    browser.download.forbid_open_with   ==>     true
    browser.download.hide_plugins_without_extensions    ==>     false
    browser.download.manager.addToRecentDocs    ==>     false
    browser.eme.ui.enabled  ==>     false
    (inactive) browser.formautofill.enabled     ==>     false
    (inactive) browser.formfill.saveHttpsForms  ==>     false
    (inactive) browser.fullscreen.animate   ==>     false
    (inactive) browser.history.allowPopState    ==>     false
    (inactive) browser.history.allowPushState   ==>     false
    (inactive) browser.history.allowReplaceState    ==>     false
    browser.library.activity-stream.enabled     ==>     false
    browser.link.open_newwindow     ==>     3
    browser.link.open_newwindow.restriction     ==>     0
    (inactive) browser.newtabpage.introShown    ==>     true
    browser.onboarding.enabled  ==>     false
    browser.ping-centre.telemetry   ==>     false
    (inactive) browser.pocket.api   ==>     ""
    (inactive) browser.pocket.oAuthConsumerKey  ==>     ""
    (inactive) browser.pocket.site  ==>     ""
    (inactive) browser.polaris.enabled  ==>     false
    (inactive) browser.safebrowsing.allowOverride   ==>     false
    (inactive) browser.safebrowsing.appRepURL   ==>     ""
    (inactive) browser.safebrowsing.downloads.enabled   ==>     false
    (inactive) browser.safebrowsing.downloads.remote.block_dangerous    ==>     false
    (inactive) browser.safebrowsing.downloads.remote.block_dangerous_host   ==>     false
    (inactive) browser.safebrowsing.downloads.remote.block_potentially_unwanted     ==>     false
    (inactive) browser.safebrowsing.downloads.remote.block_uncommon     ==>     false
    browser.safebrowsing.downloads.remote.url   ==>     ""
    (inactive) browser.safebrowsing.gethashURL  ==>     ""
    (inactive) browser.safebrowsing.malware.reportURL   ==>     ""
    (inactive) browser.safebrowsing.provider.google.appRepURL   ==>     ""
    (inactive) browser.safebrowsing.provider.google.gethashURL  ==>     ""
    browser.safebrowsing.provider.google.reportMalwareMistakeURL    ==>     ""
    browser.safebrowsing.provider.google.reportPhishMistakeURL  ==>     ""
    browser.safebrowsing.provider.google.reportURL  ==>     ""
    (inactive) browser.safebrowsing.provider.google.updateURL   ==>     ""
    browser.safebrowsing.provider.google4.dataSharing.enabled   ==>     false
    browser.safebrowsing.provider.google4.dataSharingURL    ==>     ""
    (inactive) browser.safebrowsing.provider.google4.gethashURL     ==>     ""
    browser.safebrowsing.provider.google4.reportMalwareMistakeURL   ==>     ""
    browser.safebrowsing.provider.google4.reportPhishMistakeURL     ==>     ""
    browser.safebrowsing.provider.google4.reportURL     ==>     ""
    (inactive) browser.safebrowsing.provider.google4.updateURL  ==>     ""
    (inactive) browser.safebrowsing.provider.mozilla.gethashURL     ==>     ""
    (inactive) browser.safebrowsing.provider.mozilla.updateURL  ==>     ""
    (inactive) browser.safebrowsing.reportErrorURL  ==>     ""
    (inactive) browser.safebrowsing.reportGenericURL    ==>     ""
    (inactive) browser.safebrowsing.reportMalwareErrorURL   ==>     ""
    (inactive) browser.safebrowsing.reportMalwareMistakeURL     ==>     ""
    (inactive) browser.safebrowsing.reportMalwareURL    ==>     ""
    (inactive) browser.safebrowsing.reportPhishMistakeURL   ==>     ""
    browser.safebrowsing.reportPhishURL     ==>     ""
    (inactive) browser.safebrowsing.reportURL   ==>     ""
    (inactive) browser.safebrowsing.updateURL   ==>     ""
    browser.search.geoSpecificDefaults.url  ==>     ""
    (inactive) browser.search.showOneOffButtons     ==>     false
    (inactive) browser.selfsupport.enabled  ==>     false
    browser.sessionhistory.max_entries  ==>     10
    (inactive) browser.sessionhistory.max_total_viewers     ==>     0
    browser.sessionstore.interval   ==>     30000
    browser.sessionstore.max_tabs_undo  ==>     0
    browser.sessionstore.max_windows_undo   ==>     0
    (inactive) browser.sessionstore.privacy_level_deferred  ==>     2
    browser.sessionstore.resume_from_crash  ==>     false
    (inactive) browser.startup.homepage     ==>     "https://www.example.com/"
    (inactive) browser.startup.homepage_override.mstone     ==>     "ignore"
    (inactive) browser.startup.page     ==>     0
    (inactive) browser.tabs.animate     ==>     false
    (inactive) browser.tabs.closeWindowWithLastTab  ==>     false
    (inactive) browser.tabs.loadBookmarksInTabs     ==>     true
    browser.tabs.remote.allowLinkedWebInFileUriProcess  ==>     false
    (inactive) browser.tabs.warnOnClose     ==>     false
    (inactive) browser.tabs.warnOnCloseOtherTabs    ==>     false
    (inactive) browser.tabs.warnOnOpen  ==>     false
    browser.taskbar.lists.enabled   ==>     false
    browser.taskbar.lists.frequent.enabled  ==>     false
    browser.taskbar.lists.recent.enabled    ==>     false
    browser.taskbar.lists.tasks.enabled     ==>     false
    browser.taskbar.previews.enable     ==>     false
    (inactive) browser.trackingprotection.gethashURL    ==>     ""
    (inactive) browser.trackingprotection.updateURL     ==>     ""
    browser.uitour.url  ==>     ""
    (inactive) browser.urlbar.decodeURLsOnCopy  ==>     true
    browser.urlbar.maxHistoricalSearchSuggestions   ==>     0
    (inactive) browser.urlbar.maxRichResults    ==>     0
    browser.urlbar.oneOffSearches   ==>     false
    browser.urlbar.speculativeConnect.enabled   ==>     false
    browser.urlbar.suggest.bookmark     ==>     false
    browser.urlbar.suggest.openpage     ==>     false
    (inactive) browser.urlbar.unifiedcomplete   ==>     false
    browser.urlbar.usepreloadedtopurls.enabled  ==>     false
    browser.urlbar.userMadeSearchSuggestionsChoice  ==>     true
    (inactive) browser.usedOnWindows10.introURL     ==>     ""
    browser.xul.error_pages.expert_bad_cert     ==>     true
    (inactive) browser.zoom.siteSpecific    ==>     false
    (inactive) camera.control.autofocus_moving_callback.enabled     ==>     false
    canvas.capturestream.enabled    ==>     false
    captivedetect.canonicalURL  ==>     ""
    (inactive) datareporting.healthreport.about.reportUrl   ==>     "data:text/plain,"
    (inactive) datareporting.healthreport.about.reportUrlUnified    ==>     "data:text/plain,"
    (inactive) datareporting.healthreport.documentServerURI     ==>     ""
    (inactive) datareporting.policy.dataSubmissionEnabled.v2    ==>     false
    (inactive) dom.beforeAfterKeyboardEvent.enabled     ==>     false
    dom.caches.enabled  ==>     false
    (inactive) dom.disable_image_src_set    ==>     true
    dom.disable_open_during_load    ==>     true
    dom.disable_window_move_resize  ==>     true
    dom.disable_window_open_feature.close   ==>     true
    dom.disable_window_open_feature.location    ==>     true
    dom.disable_window_open_feature.menubar     ==>     true
    dom.disable_window_open_feature.minimizable     ==>     true
    dom.disable_window_open_feature.personalbar     ==>     true
    dom.disable_window_open_feature.resizable   ==>     true
    (inactive) dom.disable_window_open_feature.scrollbars   ==>     true
    dom.disable_window_open_feature.status  ==>     true
    dom.disable_window_open_feature.titlebar    ==>     true
    dom.disable_window_open_feature.toolbar     ==>     true
    (inactive) dom.disable_window_status_change     ==>     true
    (inactive) dom.idle-observers-api.enabled   ==>     false
    dom.imagecapture.enabled    ==>     false
    dom.IntersectionObserver.enabled    ==>     false
    (inactive) dom.keyboardevent.code.enabled   ==>     false
    dom.popup_allowed_events    ==>     "click dblclick"
    dom.popup_maximum   ==>     3
    dom.push.connection.enabled     ==>     false
    dom.push.enabled    ==>     false
    dom.push.serverURL  ==>     ""
    (inactive) dom.push.udp.wakeupEnabled   ==>     false
    dom.push.userAgentID    ==>     ""
    (inactive) dom.storageManager.enabled   ==>     false
    (inactive) dom.vr.oculus050.enabled     ==>     false
    dom.w3c_pointer_events.enabled  ==>     false
    (inactive) dom.w3c_touch_events.enabled     ==>     0
    dom.webnotifications.serviceworker.enabled  ==>     false
    (inactive) dom.workers.sharedWorkers.enabled    ==>     false
    (inactive) experiments.activeExperiment     ==>     false
    extensions.autoDisableScopes    ==>     15
    extensions.enabledScopes    ==>     1
    extensions.formautofill.addresses.enabled   ==>     false
    extensions.formautofill.available   ==>     "off"
    extensions.formautofill.creditCards.enabled     ==>     false
    (inactive) extensions.formautofill.experimental     ==>     false
    extensions.formautofill.heuristics.enabled  ==>     false
    extensions.getAddons.showPane   ==>     false
    (inactive) extensions.screenshots.disabled  ==>     true
    (inactive) extensions.screenshots.system-disabled   ==>     true
    (inactive) extensions.screenshots.upload-disabled   ==>     true
    (inactive) extensions.shield-recipe-client.api_url  ==>     ""
    (inactive) extensions.systemAddon.update.enabled    ==>     false
    (inactive) extensions.systemAddon.update.url    ==>     ""
    extensions.update.autoUpdateDefault     ==>     false
    extensions.webcompat-reporter.enabled   ==>     false
    extensions.webextensions.keepStorageOnUninstall     ==>     false
    extensions.webextensions.keepUuidOnUninstall    ==>     false
    (inactive) extensions.webextensions.restrictedDomains   ==>     ""
    extensions.webservice.discoverURL   ==>     ""
    font.blacklist.underline_offset     ==>     ""
    (inactive) font.name.monospace.x-unicode    ==>     "Lucida Console"
    (inactive) font.name.monospace.x-western    ==>     "Lucida Console"
    (inactive) font.name.sans-serif.x-unicode   ==>     "Arial"
    (inactive) font.name.sans-serif.x-western   ==>     "Arial"
    (inactive) font.name.serif.x-unicode    ==>     "Georgia"
    (inactive) font.name.serif.x-western    ==>     "Georgia"
    (inactive) font.system.whitelist    ==>     ""
    (inactive) full-screen-api.approval-required    ==>     false
    full-screen-api.enabled     ==>     false
    (inactive) full-screen-api.warning.delay    ==>     0
    (inactive) full-screen-api.warning.timeout  ==>     0
    (inactive) general.autoScroll   ==>     false
    (inactive) general.useragent.locale     ==>     "en-US"
    general.warnOnAboutConfig   ==>     false
    (inactive) geo.security.allowinsecure   ==>     false
    (inactive) gfx.direct2d.disabled    ==>     true
    gfx.downloadable_fonts.enabled  ==>     true
    gfx.downloadable_fonts.woff2.enabled    ==>     false
    gfx.font_rendering.graphite.enabled     ==>     false
    gfx.offscreencanvas.enabled     ==>     false
    (inactive) identity.fxaccounts.enabled  ==>     false
    intl.locale.requested   ==>     "en-US"
    intl.regional_prefs.use_os_locales  ==>     false
    (inactive) javascript.options.baselinejit   ==>     false
    (inactive) javascript.options.ion   ==>     false
    javascript.options.shared_memory    ==>     false
    javascript.options.wasm     ==>     false
    layers.acceleration.disabled    ==>     true
    layout.css.font-loading-api.enabled     ==>     false
    (inactive) layout.spellcheckDefault     ==>     2
    (inactive) loop.facebook.appId  ==>     ""
    (inactive) loop.facebook.enabled    ==>     false
    (inactive) loop.facebook.fallbackUrl    ==>     ""
    (inactive) loop.facebook.shareUrl   ==>     ""
    (inactive) loop.feedback.formURL    ==>     ""
    (inactive) loop.feedback.manualFormURL  ==>     ""
    (inactive) loop.server  ==>     ""
    mathml.disabled     ==>     true
    media.autoplay.enabled  ==>     false
    media.block-autoplay-until-in-foreground    ==>     true
    (inactive) media.block-play-until-visible   ==>     true
    (inactive) media.eme.apiVisible     ==>     false
    (inactive) media.eme.chromium-api.enabled   ==>     false
    media.eme.enabled   ==>     false
    media.getusermedia.browser.enabled  ==>     false
    (inactive) media.getusermedia.screensharing.allow_on_old_platforms  ==>     false
    (inactive) media.getusermedia.screensharing.allowed_domains     ==>     ""
    media.gmp.trial-create.enabled  ==>     false
    (inactive) media.gmp-eme-adobe.autoupdate   ==>     false
    (inactive) media.gmp-eme-adobe.enabled  ==>     false
    (inactive) media.gmp-eme-adobe.visible  ==>     false
    media.gmp-gmpopenh264.autoupdate    ==>     false
    media.gmp-manager.updateEnabled     ==>     false
    media.gmp-manager.url.override  ==>     "data:text/plain,"
    media.gmp-widevinecdm.autoupdate    ==>     false
    media.gmp-widevinecdm.enabled   ==>     false
    media.gmp-widevinecdm.visible   ==>     false
    (inactive) media.ondevicechange.enabled     ==>     false
    media.peerconnection.ice.tcp    ==>     false
    media.peerconnection.identity.enabled   ==>     false
    media.peerconnection.identity.timeout   ==>     1
    media.peerconnection.turn.disable   ==>     true
    media.peerconnection.use_document_iceservers    ==>     false
    media.peerconnection.video.enabled  ==>     false
    middlemouse.contentLoadURL  ==>     false
    network.auth.subresource-img-cross-origin-http-auth-allow   ==>     false
    network.cookie.leave-secure-alone   ==>     true
    (inactive) network.cookie.lifetime.days     ==>     90
    (inactive) network.cookie.same-site.enabled     ==>     true
    network.cookie.thirdparty.nonsecureSessionOnly  ==>     true
    (inactive) network.dns.disableIPv6  ==>     true
    (inactive) network.dnsCacheEntries  ==>     400
    (inactive) network.dnsCacheExpiration   ==>     60
    network.file.disable_unc_paths  ==>     true
    (inactive) network.ftp.enabled  ==>     false
    network.http.altsvc.enabled     ==>     false
    network.http.altsvc.oe  ==>     false
    network.http.redirection-limit  ==>     10
    network.http.referer.defaultPolicy  ==>     3
    network.http.referer.defaultPolicy.pbmode   ==>     2
    network.http.referer.hideOnionSource    ==>     true
    network.http.referer.trimmingPolicy     ==>     0
    (inactive) network.http.referer.userControlPolicy   ==>     3
    network.http.referer.XOriginTrimmingPolicy  ==>     0
    network.http.sendRefererHeader  ==>     2
    (inactive) network.http.sendSecureXSiteReferrer     ==>     false
    network.http.spdy.enabled   ==>     false
    network.http.spdy.enabled.deps  ==>     false
    network.http.spdy.enabled.http2     ==>     false
    (inactive) network.http.spdy.enabled.http2draft     ==>     false
    (inactive) network.http.spdy.enabled.v3-1   ==>     false
    (inactive) network.jar.block-remote-files   ==>     true
    network.predictor.enable-prefetch   ==>     false
    network.protocol-handler.external.ms-windows-store  ==>     false
    network.proxy.autoconfig_url.include_path   ==>     false
    (inactive) network.trr.bootstrapAddress     ==>     ""
    (inactive) network.trr.mode     ==>     0
    (inactive) network.trr.uri  ==>     ""
    (inactive) network.websocket.enabled    ==>     false
    offline-apps.allow_by_default   ==>     false
    (inactive) pageThumbs.enabled   ==>     false
    (inactive) permissions.default.camera   ==>     2
    (inactive) permissions.default.desktop-notification     ==>     2
    permissions.default.geo     ==>     2
    (inactive) permissions.default.microphone   ==>     2
    (inactive) permissions.default.shortcuts    ==>     2
    permissions.manager.defaultsUrl     ==>     ""
    (inactive) permissions.memory_only  ==>     true
    (inactive) pfs.datasource.url   ==>     ""
    plugin.default.state    ==>     0
    plugin.defaultXpi.state     ==>     0
    (inactive) plugin.scan.Acrobat  ==>     99999
    plugin.scan.plid.all    ==>     false
    (inactive) plugin.scan.Quicktime    ==>     99999
    (inactive) plugin.scan.WindowsMediaPlayer   ==>     99999
    plugin.sessionPermissionNow.intervalInMinutes   ==>     0
    (inactive) plugins.enumerable_names     ==>     ""
    (inactive) plugins.update.url   ==>     ""
    (inactive) privacy.clearOnShutdown.passwords    ==>     false
    privacy.clearOnShutdown.siteSettings    ==>     false
    (inactive) privacy.cpd.openWindows  ==>     true
    privacy.cpd.passwords   ==>     false
    privacy.cpd.siteSettings    ==>     false
    (inactive) privacy.donottrackheader.value   ==>     1
    privacy.firstparty.isolate.restrict_opener_access   ==>     true
    privacy.resistFingerprinting.block_mozAddonManager  ==>     true
    (inactive) privacy.trackingprotection.annotate_channels     ==>     false
    (inactive) privacy.trackingprotection.lower_network_priority    ==>     false
    privacy.trackingprotection.ui.enabled   ==>     true
    (inactive) privacy.usercontext.about_newtab_segregation.enabled     ==>     true
    (inactive) privacy.userContext.longPressBehavior    ==>     2
    (inactive) privacy.userContext.ui.enabled   ==>     true
    (inactive) privacy.window.maxInnerHeight    ==>     900
    (inactive) privacy.window.maxInnerWidth     ==>     1600
    (inactive) reader.parse-on-load.enabled     ==>     false
    security.csp.enable_violation_events    ==>     false
    security.data_uri.block_toplevel_data_uri_navigations   ==>     true
    security.family_safety.mode     ==>     0
    security.insecure_connection_icon.enabled   ==>     true
    (inactive) security.insecure_connection_icon.pbmode.enabled     ==>     true
    security.insecure_connection_text.enabled   ==>     true
    (inactive) security.insecure_connection_text.pbmode.enabled     ==>     true
    (inactive) security.mixed_content.send_hsts_priming     ==>     false
    (inactive) security.mixed_content.use_hsts  ==>     true
    (inactive) security.nocertdb    ==>     true
    security.ssl.errorReporting.enabled     ==>     false
    security.ssl.errorReporting.url     ==>     ""
    security.tls.enable_0rtt_data   ==>     false
    (inactive) security.tls.insecure_fallback_hosts.use_static_list     ==>     false
    (inactive) services.blocklist.addons.collection     ==>     ""
    (inactive) services.blocklist.gfx.collection    ==>     ""
    (inactive) services.blocklist.onecrl.collection     ==>     ""
    (inactive) services.blocklist.plugins.collection    ==>     ""
    shield.savant.enabled   ==>     false
    (inactive) social.directories   ==>     ""
    (inactive) social.enabled   ==>     false
    (inactive) social.remote-install.enabled    ==>     false
    (inactive) social.share.activationPanelEnabled  ==>     false
    (inactive) social.shareDirectory    ==>     ""
    (inactive) social.toast-notifications.enabled   ==>     false
    (inactive) social.whitelist     ==>     ""
    (inactive) startup.homepage_override_url    ==>     ""
    (inactive) startup.homepage_welcome_url     ==>     ""
    (inactive) startup.homepage_welcome_url.additional  ==>     ""
    (inactive) toolkit.cosmeticAnimations.enabled   ==>     false
    toolkit.telemetry.archive.enabled   ==>     false
    toolkit.telemetry.bhrPing.enabled   ==>     false
    toolkit.telemetry.cachedClientID    ==>     ""
    toolkit.telemetry.firstShutdownPing.enabled     ==>     false
    toolkit.telemetry.hybridContent.enabled     ==>     false
    toolkit.telemetry.newProfilePing.enabled    ==>     false
    toolkit.telemetry.server    ==>     "data:,"
    toolkit.telemetry.shutdownPingSender.enabled    ==>     false
    (inactive) toolkit.telemetry.unifiedIsOptIn     ==>     true
    toolkit.telemetry.updatePing.enabled    ==>     false
    (inactive) ui.key.menuAccessKey     ==>     0
    ui.use_standins_for_native_colors   ==>     true
    (inactive) urlclassifier.trackingTable  ==>     "test-track-simple,base-track-digest256"
    (inactive) view_source.tab  ==>     false
    webchannel.allowObject.urlWhitelist     ==>     ""
    webgl.dxgl.enabled  ==>     false
    webgl.enable-webgl2     ==>     false
    xpinstall.whitelist.required    ==>     true


------------------------------------------------------------------------------
 The following 71 prefs exist in both files but are inactive (commented out) in ghacks.js:

    app.update.enabled
    browser.bookmarks.max_backups
    browser.cache.offline.enable
    browser.casting.enabled
    browser.newtabpage.activity-stream.enabled
    browser.newtabpage.directory.ping
    browser.newtabpage.directory.source
    browser.newtabpage.enhanced
    browser.pocket.enabled
    browser.privatebrowsing.autostart
    browser.safebrowsing.blockedURIs.enabled
    browser.safebrowsing.enabled
    browser.safebrowsing.malware.enabled
    browser.safebrowsing.phishing.enabled
    browser.selfsupport.url
    camera.control.face_detection.enabled
    clipboard.autocopy
    datareporting.healthreport.service.enabled
    device.sensors.enabled
    devtools.webide.autoinstallFxdtAdapters
    dom.archivereader.enabled
    dom.battery.enabled
    dom.enable_performance
    dom.enable_resource_timing
    dom.enable_user_timing
    dom.flyweb.enabled
    dom.gamepad.enabled
    dom.maxHardwareConcurrency
    dom.netinfo.enabled
    dom.network.enabled
    dom.telephony.enabled
    dom.vr.enabled
    dom.workers.enabled
    experiments.enabled
    experiments.manifest.uri
    experiments.supported
    extensions.shield-recipe-client.enabled
    extensions.update.enabled
    general.buildID.override
    geo.enabled
    geo.wifi.logging.enabled
    intl.locale.matchOS
    loop.logDomains
    media.video_stats.enabled
    media.webspeech.synth.enabled
    network.cookie.lifetimePolicy
    network.jar.open-unsafe-types
    network.manage-offline-status
    places.history.enabled
    plugins.update.notifyUser
    privacy.clearOnShutdown.openWindows
    privacy.cpd.downloads
    privacy.trackingprotection.enabled
    privacy.trackingprotection.pbmode.enabled
    privacy.userContext.enabled
    security.ssl3.dhe_rsa_aes_128_sha
    security.ssl3.dhe_rsa_aes_256_sha
    security.ssl3.ecdhe_ecdsa_aes_128_sha
    security.ssl3.ecdhe_ecdsa_rc4_128_sha
    security.ssl3.ecdhe_rsa_aes_128_sha
    security.ssl3.ecdhe_rsa_rc4_128_sha
    security.ssl3.rsa_aes_128_sha
    security.ssl3.rsa_aes_256_sha
    security.ssl3.rsa_des_ede3_sha
    security.ssl3.rsa_rc4_128_md5
    security.ssl3.rsa_rc4_128_sha
    security.tls.unrestricted_rc4_fallback
    security.xpconnect.plugin.unrestricted
    signon.rememberSignons
    svg.disabled
    webgl.enable-debug-renderer-info


------------------------------------------------------------------------------
 The following 7 prefs exist in both files but are inactive (commented out) in pk.js:

    app.update.auto
    dom.disable_beforeunload
    media.gmp-provider.enabled
    network.http.referer.XOriginPolicy
    pdfjs.enableWebGL
    privacy.donottrackheader.enabled
    signon.storeWhenAutocompleteOff


prefs with matching values but inactive in ghacks.js

I noticed I should remove that part. I got lazy and copy-pasted what earthlng suggested above, forgetting that I don't check for equality when only one of them is inactive (to avoid unnecessary overhead).

When the report says a pref is inactive in one file, the value doesn't necessarily match the value of the same pref in the other file. I'll remove that misleading bit.

nit

    app.update.silent   ==>     false
    app.update.staging.enabled  ==>     false
    (inactive) browser.backspace_action     ==>     2
    (inactive) browser.bookmarks.showRecentlyBookmarked     ==>     false
    browser.cache.disk.capacity     ==>     0
    browser.cache.disk.smart_size.enabled   ==>     false
    browser.cache.disk.smart_size.first_run     ==>     false
    browser.cache.frecency_experiment   ==>     -1
    (inactive) browser.cache.memory.capacity    ==>     0
    browser.cache.offline.insecure.enable   ==>     false
    browser.chrome.errorReporter.enabled    ==>     false
    browser.chrome.errorReporter.submitUrl  ==>     ""
    (inactive) browser.chrome.favicons  ==>     false
    (inactive) browser.chrome.site_icons    ==>     false

Are those tabs? Anyway, I find this incredible hard to visually parse and would prefer spaces, not tabs, and something like this

    app.update.silent     ==>     false
    app.update.staging.enabled     ==>     false
[i] browser.backspace_action     ==>     2
[i] browser.bookmarks.showRecentlyBookmarked     ==>     false
    browser.cache.disk.capacity     ==>     0
    browser.cache.disk.smart_size.enabled     ==>     false
    browser.cache.disk.smart_size.first_run     ==>     false
    browser.cache.frecency_experiment     ==>     -1
[i] browser.cache.memory.capacity     ==>     0
    browser.cache.offline.insecure.enable     ==>     false
    browser.chrome.errorReporter.enabled     ==>     false
    browser.chrome.errorReporter.submitUrl     ==>     ""
[i] browser.chrome.favicons     ==>     false
[i] browser.chrome.site_icons     ==>     false

71 prefs with matching values but inactive in ghacks.js
7 prefs with matching values but inactive in pk.js

for both these sections you don't output the value, which would be helpful

Yeah, I'm not fully convinced about the format either.

BTW I just noticed another weird thing going on. The list of differences seems to always mark prefs as inactive, even when they're not. I'll have to test a few things. EDIT: It was a ninja underscore that sneaked into a var name.

for both these sections you don't output the value, which would be helpful

Look well. Those are by the bottom of the report.

and just because I know you can pad ...

  670 combined unique prefs
  136 matching prefs, both value and state (active/inactive)
  13 prefs with different values but same matching state
  78 prefs not declared in ghacks.js
  365 prefs not declared in pk.js
  71 prefs with matching values but inactive in ghacks.js
  7 prefs with matching values but inactive in pk.js
  136 matching prefs, both value and state (active/inactive)
   13 prefs with different values but same matching state
   78 prefs not declared in ghacks.js
  365 prefs not declared in pk.js
   71 prefs with matching values but inactive in ghacks.js
    7 prefs with matching values but inactive in pk.js
  ---
  670 combined unique prefs

:jeans: likes numbers ~~left~ right aligned, and totals at the bottom with a line separator (edit, I meant right aligned, I need a break)

Look well. Those are by the bottom of the report.

I don't follow?

Oh, before I forget - these are just nits (but fucking good nits, mind you) - but first and foremost, fukkin good job :cat2:

I don't follow?

Have a second look at the report, starting from the bottom. The prefs you mentioned _are_ in there.

^^ have a second read of my comment

for both these sections you don't output the value, which would be helpful

the sections are there, the pref names are there - the pref values are not, unless I'm going mad

edit: the two sections are "matching values" so you only need list it once

Sorry. That's what happens when I attempt to do more than one thing at a time.

^^ Ahhh, so not a female cat then j/k

You'll never know for sure :stuck_out_tongue_winking_eye:

I'm calling it quits for the day, need a :hankey: anyway .. take a break dude, catch you tomorrow when I expect all my nits fixed :grin:

does it ignore the parrots :bird:

I don't see why that would be necessary. The output wouldn't be completely honest if it ignored arbitrary prefs, either.

I agree

When the report says a pref is inactive in one file, the value doesn't necessarily match the value of the same pref in the other file.

sorry my bad. Well, nice effort mate but I guess I'll keep using my script then :trollface:

ps: 1 of the examples is wrong now due to the removal of the aliases

Updated to v1.3 v1.3.1

Click to see what the output looks like now. :point_left:

:::::::::::: { Compare-UserJS Report } ::::::::::::

(date removed)

  Compared files: ghacks.js, pk.js
  592 unique prefs in ghacks.js
  305 unique prefs in pk.js

  670 combined unique prefs
  136 matching prefs, both value and state (active/inactive)
   13 prefs with different values but matching state
   78 prefs not declared in ghacks.js
  365 prefs not declared in pk.js
   57 prefs with matching values but inactive in ghacks.js
    4 prefs with matching values but inactive in pk.js

 Reference: [i] = Inactive pref

------------------------------------------------------------------------------
 The following 136 prefs match:

    app.shield.optoutstudies.enabled                                        false
    beacon.enabled                                                          false
    breakpad.reportURL                                                      ""
    browser.cache.disk.enable                                               false
    browser.cache.disk_cache_ssl                                            false
[i] browser.cache.memory.enable                                             false
    browser.crashReports.unsubmittedCheck.enabled                           false
    browser.display.use_document_fonts                                      0
    browser.download.folderList                                             2
    browser.download.useDownloadDir                                         false
    browser.fixup.alternate.enabled                                         false
    browser.fixup.hide_user_pass                                            true
    browser.formfill.enable                                                 false
    browser.helperApps.deleteTempFileOnExit                                 true
    browser.newtab.preload                                                  false
    browser.newtabpage.enabled                                              false
    browser.pagethumbnails.capturing_disabled                               true
    browser.safebrowsing.downloads.remote.enabled                           false
    browser.search.countryCode                                              "US"
    browser.search.geoip.url                                                ""
    browser.search.geoSpecificDefaults                                      false
    browser.search.region                                                   "US"
    browser.search.suggest.enabled                                          false
    browser.search.update                                                   false
    browser.send_pings                                                      false
    browser.send_pings.require_same_host                                    true
    browser.sessionstore.privacy_level                                      2
    browser.shell.checkDefaultBrowser                                       false
    browser.shell.shortcutFavicons                                          false
    browser.ssl_override_behavior                                           1
    browser.tabs.crashReporting.sendReport                                  false
    browser.uitour.enabled                                                  false
    browser.urlbar.autocomplete.enabled                                     false
    browser.urlbar.autoFill                                                 false
    browser.urlbar.autoFill.typed                                           false
    browser.urlbar.filter.javascript                                        true
    browser.urlbar.suggest.history                                          false
    browser.urlbar.suggest.searches                                         false
    browser.urlbar.trimURLs                                                 false
    datareporting.healthreport.uploadEnabled                                false
    datareporting.policy.dataSubmissionEnabled                              false
    devtools.chrome.enabled                                                 false
    devtools.debugger.remote-enabled                                        false
    devtools.webide.autoinstallADBHelper                                    false
    devtools.webide.enabled                                                 false
    dom.allow_cut_copy                                                      false
    dom.event.clipboardevents.enabled                                       false
[i] dom.event.contextmenu.enabled                                           false
[i] dom.indexedDB.enabled                                                   false
    dom.ipc.plugins.flash.subprocess.crashreporter.enabled                  false
    dom.ipc.plugins.reportCrashURL                                          false
    dom.serviceWorkers.enabled                                              false
[i] dom.storage.enabled                                                     false
    dom.vibrator.enabled                                                    false
    dom.webaudio.enabled                                                    false
    dom.webnotifications.enabled                                            false
    extensions.blocklist.enabled                                            true
    extensions.getAddons.cache.enabled                                      false
    extensions.pocket.enabled                                               false
[i] general.appname.override                                                "Netscape"
[i] general.appversion.override                                             "5.0 (Windows)"
[i] general.oscpu.override                                                  "Windows NT 6.1"
[i] general.platform.override                                               "Win32"
    geo.wifi.uri                                                            "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"
    gfx.font_rendering.opentype_svg.enabled                                 false
    intl.accept_languages                                                   "en-US, en"
    javascript.options.asmjs                                                false
    javascript.use_us_english_locale                                        true
    keyword.enabled                                                         false
    layout.css.visited_links_enabled                                        false
    lightweightThemes.update.enabled                                        false
[i] loop.enabled                                                            false
    media.getusermedia.audiocapture.enabled                                 false
    media.getusermedia.screensharing.enabled                                false
    media.gmp-gmpopenh264.enabled                                           false
    media.navigator.enabled                                                 false
    media.navigator.video.enabled                                           false
    media.peerconnection.enabled                                            false
    media.peerconnection.ice.default_address_only                           true
    media.peerconnection.ice.no_host                                        true
    network.allow-experiments                                               false
    network.captive-portal-service.enabled                                  false
    network.cookie.thirdparty.sessionOnly                                   true
    network.dns.disablePrefetch                                             true
    network.dns.disablePrefetchFromHTTPS                                    true
    network.http.speculative-parallel-limit                                 0
    network.IDN_show_punycode                                               true
    network.predictor.enabled                                               false
    network.prefetch-next                                                   false
    network.proxy.socks_remote_dns                                          true
    plugin.state.flash                                                      0
    plugin.state.java                                                       0
    plugins.click_to_play                                                   true
    privacy.clearOnShutdown.cache                                           true
    privacy.clearOnShutdown.downloads                                       true
    privacy.clearOnShutdown.formdata                                        true
    privacy.clearOnShutdown.history                                         true
    privacy.clearOnShutdown.offlineApps                                     true
    privacy.clearOnShutdown.sessions                                        true
    privacy.cpd.cache                                                       true
    privacy.cpd.formdata                                                    true
    privacy.cpd.history                                                     true
    privacy.cpd.offlineApps                                                 true
    privacy.cpd.sessions                                                    true
    privacy.firstparty.isolate                                              true
    privacy.resistFingerprinting                                            true
    privacy.sanitize.sanitizeOnShutdown                                     true
    privacy.sanitize.timeSpan                                               0
    security.ask_for_password                                               2
    security.cert_pinning.enforcement_level                                 2
    security.csp.enable                                                     true
    security.csp.experimentalEnabled                                        true
    security.insecure_field_warning.contextual.enabled                      true
    security.insecure_password.ui.enabled                                   true
    security.mixed_content.block_active_content                             true
    security.mixed_content.block_display_content                            true
    security.OCSP.enabled                                                   1
    security.OCSP.require                                                   true
    security.pki.sha1_enforcement_level                                     1
    security.ssl.disable_session_identifiers                                true
    security.ssl.enable_ocsp_stapling                                       true
    security.ssl.errorReporting.automatic                                   false
[i] security.ssl.require_safe_negotiation                                   true
    security.ssl.treat_unsafe_negotiation_as_broken                         true
    security.tls.version.fallback-limit                                     3
    security.tls.version.max                                                4
    services.blocklist.update_enabled                                       true
    signon.autofillForms                                                    false
    signon.autofillForms.http                                               false
    signon.formlessCapture.enabled                                          false
    toolkit.telemetry.enabled                                               false
    toolkit.telemetry.unified                                               false
    webgl.disabled                                                          true
    webgl.disable-extensions                                                true
    webgl.disable-fail-if-major-performance-caveat                          true
    webgl.min_capability_mode                                               true


------------------------------------------------------------------------------
 The following 13 prefs have different values:

    browser.aboutHomeSnippets.updateUrl                                      
        ghacks.js        "data:,"
        pk.js            ""
    extensions.blocklist.url                                                 
        ghacks.js        "https://blocklists.settings.services.mozilla.com/v1/blocklist/3/%APP_ID%/%APP_VERSION%/"
        pk.js            "https://blocklist.addons.mozilla.org/blocklist/3/%APP_ID%/%APP_VERSION%/"
[i] general.useragent.override                                               
        ghacks.js        "Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0"
        pk.js            "Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0"
    media.gmp-manager.url                                                    
        ghacks.js        "data:text/plain,"
        pk.js            ""
    network.cookie.cookieBehavior                                            
        ghacks.js        2
        pk.js            1
    network.http.referer.spoofSource                                         
        ghacks.js        false
        pk.js            true
    pdfjs.disabled                                                           
        ghacks.js        false
        pk.js            true
    privacy.clearOnShutdown.cookies                                          
        ghacks.js        false
        pk.js            true
    privacy.cpd.cookies                                                      
        ghacks.js        false
        pk.js            true
    security.dialog_enable_delay                                             
        ghacks.js        700
        pk.js            1000
    security.password_lifetime                                               
        ghacks.js        5
        pk.js            1
    security.tls.version.min                                                 
        ghacks.js        3
        pk.js            1
[i] xpinstall.signatures.required                                            
        ghacks.js        false
        pk.js            true


------------------------------------------------------------------------------
 The following 78 prefs are not declared in ghacks.js:

    browser.download.manager.retention                                      0
    browser.formfill.expire_days                                            0
    browser.newtab.url                                                      "about:blank"
    browser.newtabpage.activity-stream.feeds.section.topstories             false
    browser.offline-apps.notify                                             true
    browser.startup.homepage_override.buildID                               20100101
    devtools.debugger.force-local                                           true
    dom.mozTCPSocket.enabled                                                false
    media.webspeech.recognition.enable                                      false
    network.dns.blockDotOnion                                               true
[i] network.http.keep-alive.timeout                                         15
    network.negotiate-auth.allow-insecure-ntlm-v1                           false
[i] network.negotiate-auth.allow-insecure-ntlm-v1-https                     false
    network.protocol-handler.expose.about                                   true
    network.protocol-handler.expose.blob                                    true
    network.protocol-handler.expose.chrome                                  true
    network.protocol-handler.expose.data                                    true
    network.protocol-handler.expose.file                                    true
    network.protocol-handler.expose.ftp                                     true
    network.protocol-handler.expose.http                                    true
    network.protocol-handler.expose.https                                   true
    network.protocol-handler.expose.javascript                              true
    network.protocol-handler.expose.moz-extension                           true
    network.protocol-handler.expose-all                                     false
    network.protocol-handler.external.about                                 false
    network.protocol-handler.external.blob                                  false
    network.protocol-handler.external.chrome                                false
    network.protocol-handler.external.data                                  false
    network.protocol-handler.external.file                                  false
    network.protocol-handler.external.ftp                                   false
    network.protocol-handler.external.http                                  false
    network.protocol-handler.external.https                                 false
    network.protocol-handler.external.javascript                            false
    network.protocol-handler.external.moz-extension                         false
    network.protocol-handler.warn-external-default                          true
    network.stricttransportsecurity.preloadlist                             true
    plugin.state.libgnome-shell-browser-plugin                              0
    security.fileuri.strict_origin_policy                                   true
    security.sri.enable                                                     true
    security.ssl.enable_ocsp_must_staple                                    true
    security.ssl3.dhe_dss_aes_128_sha                                       false
    security.ssl3.dhe_dss_aes_256_sha                                       false
    security.ssl3.dhe_dss_camellia_128_sha                                  false
    security.ssl3.dhe_dss_camellia_256_sha                                  false
    security.ssl3.dhe_dss_des_ede3_sha                                      false
    security.ssl3.dhe_rsa_camellia_128_sha                                  false
    security.ssl3.dhe_rsa_camellia_256_sha                                  false
    security.ssl3.dhe_rsa_des_ede3_sha                                      false
    security.ssl3.ecdh_ecdsa_aes_128_sha                                    false
    security.ssl3.ecdh_ecdsa_aes_256_sha                                    false
    security.ssl3.ecdh_ecdsa_des_ede3_sha                                   false
    security.ssl3.ecdh_ecdsa_null_sha                                       false
    security.ssl3.ecdh_ecdsa_rc4_128_sha                                    false
    security.ssl3.ecdh_rsa_aes_128_sha                                      false
    security.ssl3.ecdh_rsa_aes_256_sha                                      false
    security.ssl3.ecdh_rsa_des_ede3_sha                                     false
    security.ssl3.ecdh_rsa_null_sha                                         false
    security.ssl3.ecdh_rsa_rc4_128_sha                                      false
    security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256                            true
    security.ssl3.ecdhe_ecdsa_aes_256_sha                                   true
    security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256                      true
    security.ssl3.ecdhe_ecdsa_des_ede3_sha                                  false
    security.ssl3.ecdhe_ecdsa_null_sha                                      false
    security.ssl3.ecdhe_rsa_aes_128_gcm_sha256                              true
    security.ssl3.ecdhe_rsa_aes_256_sha                                     true
    security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256                        true
    security.ssl3.ecdhe_rsa_des_ede3_sha                                    false
    security.ssl3.ecdhe_rsa_null_sha                                        false
    security.ssl3.rsa_1024_rc4_56_sha                                       false
    security.ssl3.rsa_camellia_128_sha                                      false
    security.ssl3.rsa_camellia_256_sha                                      false
    security.ssl3.rsa_fips_des_ede3_sha                                     false
    security.ssl3.rsa_null_md5                                              false
    security.ssl3.rsa_null_sha                                              false
    security.ssl3.rsa_rc2_40_md5                                            false
    security.ssl3.rsa_rc4_40_md5                                            false
    security.ssl3.rsa_seed_sha                                              false
    shumway.disabled                                                        true


------------------------------------------------------------------------------
 The following 365 prefs are not declared in pk.js:

    _user.js.parrot                                                         "SUCCESS: No no he's not dead, he's, he's restin'!"
    accessibility.force_disabled                                            1
[i] accessibility.typeaheadfind                                             true
    alerts.showFavicons                                                     false
    app.normandy.api_url                                                    ""
    app.normandy.enabled                                                    false
    app.update.service.enabled                                              false
    app.update.silent                                                       false
    app.update.staging.enabled                                              false
[i] browser.backspace_action                                                2
[i] browser.bookmarks.showRecentlyBookmarked                                false
    browser.cache.disk.capacity                                             0
    browser.cache.disk.smart_size.enabled                                   false
    browser.cache.disk.smart_size.first_run                                 false
    browser.cache.frecency_experiment                                       -1
[i] browser.cache.memory.capacity                                           0
    browser.cache.offline.insecure.enable                                   false
    browser.chrome.errorReporter.enabled                                    false
    browser.chrome.errorReporter.submitUrl                                  ""
[i] browser.chrome.favicons                                                 false
[i] browser.chrome.site_icons                                               false
    browser.crashReports.unsubmittedCheck.autoSubmit                        false
    browser.crashReports.unsubmittedCheck.autoSubmit2                       false
[i] browser.ctrlTab.previews                                                true
[i] browser.download.autohideButton                                         false
    browser.download.forbid_open_with                                       true
    browser.download.hide_plugins_without_extensions                        false
    browser.download.manager.addToRecentDocs                                false
    browser.eme.ui.enabled                                                  false
[i] browser.formautofill.enabled                                            false
[i] browser.formfill.saveHttpsForms                                         false
[i] browser.fullscreen.animate                                              false
[i] browser.history.allowPopState                                           false
[i] browser.history.allowPushState                                          false
[i] browser.history.allowReplaceState                                       false
    browser.library.activity-stream.enabled                                 false
    browser.link.open_newwindow                                             3
    browser.link.open_newwindow.restriction                                 0
[i] browser.newtabpage.introShown                                           true
    browser.onboarding.enabled                                              false
    browser.ping-centre.telemetry                                           false
[i] browser.pocket.api                                                      ""
[i] browser.pocket.oAuthConsumerKey                                         ""
[i] browser.pocket.site                                                     ""
[i] browser.polaris.enabled                                                 false
[i] browser.safebrowsing.allowOverride                                      false
[i] browser.safebrowsing.appRepURL                                          ""
[i] browser.safebrowsing.downloads.enabled                                  false
[i] browser.safebrowsing.downloads.remote.block_dangerous                   false
[i] browser.safebrowsing.downloads.remote.block_dangerous_host              false
[i] browser.safebrowsing.downloads.remote.block_potentially_unwanted        false
[i] browser.safebrowsing.downloads.remote.block_uncommon                    false
    browser.safebrowsing.downloads.remote.url                               ""
[i] browser.safebrowsing.gethashURL                                         ""
[i] browser.safebrowsing.malware.reportURL                                  ""
[i] browser.safebrowsing.provider.google.appRepURL                          ""
[i] browser.safebrowsing.provider.google.gethashURL                         ""
    browser.safebrowsing.provider.google.reportMalwareMistakeURL            ""
    browser.safebrowsing.provider.google.reportPhishMistakeURL              ""
    browser.safebrowsing.provider.google.reportURL                          ""
[i] browser.safebrowsing.provider.google.updateURL                          ""
    browser.safebrowsing.provider.google4.dataSharing.enabled               false
    browser.safebrowsing.provider.google4.dataSharingURL                    ""
[i] browser.safebrowsing.provider.google4.gethashURL                        ""
    browser.safebrowsing.provider.google4.reportMalwareMistakeURL           ""
    browser.safebrowsing.provider.google4.reportPhishMistakeURL             ""
    browser.safebrowsing.provider.google4.reportURL                         ""
[i] browser.safebrowsing.provider.google4.updateURL                         ""
[i] browser.safebrowsing.provider.mozilla.gethashURL                        ""
[i] browser.safebrowsing.provider.mozilla.updateURL                         ""
[i] browser.safebrowsing.reportErrorURL                                     ""
[i] browser.safebrowsing.reportGenericURL                                   ""
[i] browser.safebrowsing.reportMalwareErrorURL                              ""
[i] browser.safebrowsing.reportMalwareMistakeURL                            ""
[i] browser.safebrowsing.reportMalwareURL                                   ""
[i] browser.safebrowsing.reportPhishMistakeURL                              ""
    browser.safebrowsing.reportPhishURL                                     ""
[i] browser.safebrowsing.reportURL                                          ""
[i] browser.safebrowsing.updateURL                                          ""
    browser.search.geoSpecificDefaults.url                                  ""
[i] browser.search.showOneOffButtons                                        false
[i] browser.selfsupport.enabled                                             false
    browser.sessionhistory.max_entries                                      10
[i] browser.sessionhistory.max_total_viewers                                0
    browser.sessionstore.interval                                           30000
    browser.sessionstore.max_tabs_undo                                      0
    browser.sessionstore.max_windows_undo                                   0
[i] browser.sessionstore.privacy_level_deferred                             2
    browser.sessionstore.resume_from_crash                                  false
[i] browser.startup.homepage                                                "https://www.example.com/"
[i] browser.startup.homepage_override.mstone                                "ignore"
[i] browser.startup.page                                                    0
[i] browser.tabs.animate                                                    false
[i] browser.tabs.closeWindowWithLastTab                                     false
[i] browser.tabs.loadBookmarksInTabs                                        true
    browser.tabs.remote.allowLinkedWebInFileUriProcess                      false
[i] browser.tabs.warnOnClose                                                false
[i] browser.tabs.warnOnCloseOtherTabs                                       false
[i] browser.tabs.warnOnOpen                                                 false
    browser.taskbar.lists.enabled                                           false
    browser.taskbar.lists.frequent.enabled                                  false
    browser.taskbar.lists.recent.enabled                                    false
    browser.taskbar.lists.tasks.enabled                                     false
    browser.taskbar.previews.enable                                         false
[i] browser.trackingprotection.gethashURL                                   ""
[i] browser.trackingprotection.updateURL                                    ""
    browser.uitour.url                                                      ""
[i] browser.urlbar.decodeURLsOnCopy                                         true
    browser.urlbar.maxHistoricalSearchSuggestions                           0
[i] browser.urlbar.maxRichResults                                           0
    browser.urlbar.oneOffSearches                                           false
    browser.urlbar.speculativeConnect.enabled                               false
    browser.urlbar.suggest.bookmark                                         false
    browser.urlbar.suggest.openpage                                         false
[i] browser.urlbar.unifiedcomplete                                          false
    browser.urlbar.usepreloadedtopurls.enabled                              false
    browser.urlbar.userMadeSearchSuggestionsChoice                          true
[i] browser.usedOnWindows10.introURL                                        ""
    browser.xul.error_pages.expert_bad_cert                                 true
[i] browser.zoom.siteSpecific                                               false
[i] camera.control.autofocus_moving_callback.enabled                        false
    canvas.capturestream.enabled                                            false
    captivedetect.canonicalURL                                              ""
[i] datareporting.healthreport.about.reportUrl                              "data:text/plain,"
[i] datareporting.healthreport.about.reportUrlUnified                       "data:text/plain,"
[i] datareporting.healthreport.documentServerURI                            ""
[i] datareporting.policy.dataSubmissionEnabled.v2                           false
[i] dom.beforeAfterKeyboardEvent.enabled                                    false
    dom.caches.enabled                                                      false
[i] dom.disable_image_src_set                                               true
    dom.disable_open_during_load                                            true
    dom.disable_window_move_resize                                          true
    dom.disable_window_open_feature.close                                   true
    dom.disable_window_open_feature.location                                true
    dom.disable_window_open_feature.menubar                                 true
    dom.disable_window_open_feature.minimizable                             true
    dom.disable_window_open_feature.personalbar                             true
    dom.disable_window_open_feature.resizable                               true
[i] dom.disable_window_open_feature.scrollbars                              true
    dom.disable_window_open_feature.status                                  true
    dom.disable_window_open_feature.titlebar                                true
    dom.disable_window_open_feature.toolbar                                 true
[i] dom.disable_window_status_change                                        true
[i] dom.idle-observers-api.enabled                                          false
    dom.imagecapture.enabled                                                false
    dom.IntersectionObserver.enabled                                        false
[i] dom.keyboardevent.code.enabled                                          false
    dom.popup_allowed_events                                                "click dblclick"
    dom.popup_maximum                                                       3
    dom.push.connection.enabled                                             false
    dom.push.enabled                                                        false
    dom.push.serverURL                                                      ""
[i] dom.push.udp.wakeupEnabled                                              false
    dom.push.userAgentID                                                    ""
[i] dom.storageManager.enabled                                              false
[i] dom.vr.oculus050.enabled                                                false
    dom.w3c_pointer_events.enabled                                          false
[i] dom.w3c_touch_events.enabled                                            0
    dom.webnotifications.serviceworker.enabled                              false
[i] dom.workers.sharedWorkers.enabled                                       false
[i] experiments.activeExperiment                                            false
    extensions.autoDisableScopes                                            15
    extensions.enabledScopes                                                1
    extensions.formautofill.addresses.enabled                               false
    extensions.formautofill.available                                       "off"
    extensions.formautofill.creditCards.enabled                             false
[i] extensions.formautofill.experimental                                    false
    extensions.formautofill.heuristics.enabled                              false
    extensions.getAddons.showPane                                           false
[i] extensions.screenshots.disabled                                         true
[i] extensions.screenshots.system-disabled                                  true
[i] extensions.screenshots.upload-disabled                                  true
[i] extensions.shield-recipe-client.api_url                                 ""
[i] extensions.systemAddon.update.enabled                                   false
[i] extensions.systemAddon.update.url                                       ""
    extensions.update.autoUpdateDefault                                     false
    extensions.webcompat-reporter.enabled                                   false
    extensions.webextensions.keepStorageOnUninstall                         false
    extensions.webextensions.keepUuidOnUninstall                            false
[i] extensions.webextensions.restrictedDomains                              ""
    extensions.webservice.discoverURL                                       ""
    font.blacklist.underline_offset                                         ""
[i] font.name.monospace.x-unicode                                           "Lucida Console"
[i] font.name.monospace.x-western                                           "Lucida Console"
[i] font.name.sans-serif.x-unicode                                          "Arial"
[i] font.name.sans-serif.x-western                                          "Arial"
[i] font.name.serif.x-unicode                                               "Georgia"
[i] font.name.serif.x-western                                               "Georgia"
[i] font.system.whitelist                                                   ""
[i] full-screen-api.approval-required                                       false
    full-screen-api.enabled                                                 false
[i] full-screen-api.warning.delay                                           0
[i] full-screen-api.warning.timeout                                         0
[i] general.autoScroll                                                      false
[i] general.useragent.locale                                                "en-US"
    general.warnOnAboutConfig                                               false
[i] geo.security.allowinsecure                                              false
[i] gfx.direct2d.disabled                                                   true
    gfx.downloadable_fonts.enabled                                          true
    gfx.downloadable_fonts.woff2.enabled                                    false
    gfx.font_rendering.graphite.enabled                                     false
    gfx.offscreencanvas.enabled                                             false
[i] identity.fxaccounts.enabled                                             false
    intl.locale.requested                                                   "en-US"
    intl.regional_prefs.use_os_locales                                      false
[i] javascript.options.baselinejit                                          false
[i] javascript.options.ion                                                  false
    javascript.options.shared_memory                                        false
    javascript.options.wasm                                                 false
    layers.acceleration.disabled                                            true
    layout.css.font-loading-api.enabled                                     false
[i] layout.spellcheckDefault                                                2
[i] loop.facebook.appId                                                     ""
[i] loop.facebook.enabled                                                   false
[i] loop.facebook.fallbackUrl                                               ""
[i] loop.facebook.shareUrl                                                  ""
[i] loop.feedback.formURL                                                   ""
[i] loop.feedback.manualFormURL                                             ""
[i] loop.server                                                             ""
    mathml.disabled                                                         true
    media.autoplay.enabled                                                  false
    media.block-autoplay-until-in-foreground                                true
[i] media.block-play-until-visible                                          true
[i] media.eme.apiVisible                                                    false
[i] media.eme.chromium-api.enabled                                          false
    media.eme.enabled                                                       false
    media.getusermedia.browser.enabled                                      false
[i] media.getusermedia.screensharing.allow_on_old_platforms                 false
[i] media.getusermedia.screensharing.allowed_domains                        ""
    media.gmp.trial-create.enabled                                          false
[i] media.gmp-eme-adobe.autoupdate                                          false
[i] media.gmp-eme-adobe.enabled                                             false
[i] media.gmp-eme-adobe.visible                                             false
    media.gmp-gmpopenh264.autoupdate                                        false
    media.gmp-manager.updateEnabled                                         false
    media.gmp-manager.url.override                                          "data:text/plain,"
    media.gmp-widevinecdm.autoupdate                                        false
    media.gmp-widevinecdm.enabled                                           false
    media.gmp-widevinecdm.visible                                           false
[i] media.ondevicechange.enabled                                            false
    media.peerconnection.ice.tcp                                            false
    media.peerconnection.identity.enabled                                   false
    media.peerconnection.identity.timeout                                   1
    media.peerconnection.turn.disable                                       true
    media.peerconnection.use_document_iceservers                            false
    media.peerconnection.video.enabled                                      false
    middlemouse.contentLoadURL                                              false
    network.auth.subresource-img-cross-origin-http-auth-allow               false
    network.cookie.leave-secure-alone                                       true
[i] network.cookie.lifetime.days                                            90
[i] network.cookie.same-site.enabled                                        true
    network.cookie.thirdparty.nonsecureSessionOnly                          true
[i] network.dns.disableIPv6                                                 true
[i] network.dnsCacheEntries                                                 400
[i] network.dnsCacheExpiration                                              60
    network.file.disable_unc_paths                                          true
[i] network.ftp.enabled                                                     false
    network.http.altsvc.enabled                                             false
    network.http.altsvc.oe                                                  false
    network.http.redirection-limit                                          10
    network.http.referer.defaultPolicy                                      3
    network.http.referer.defaultPolicy.pbmode                               2
    network.http.referer.hideOnionSource                                    true
    network.http.referer.trimmingPolicy                                     0
[i] network.http.referer.userControlPolicy                                  3
    network.http.referer.XOriginTrimmingPolicy                              0
    network.http.sendRefererHeader                                          2
[i] network.http.sendSecureXSiteReferrer                                    false
    network.http.spdy.enabled                                               false
    network.http.spdy.enabled.deps                                          false
    network.http.spdy.enabled.http2                                         false
[i] network.http.spdy.enabled.http2draft                                    false
[i] network.http.spdy.enabled.v3-1                                          false
[i] network.jar.block-remote-files                                          true
    network.predictor.enable-prefetch                                       false
    network.protocol-handler.external.ms-windows-store                      false
    network.proxy.autoconfig_url.include_path                               false
[i] network.trr.bootstrapAddress                                            ""
[i] network.trr.mode                                                        0
[i] network.trr.uri                                                         ""
[i] network.websocket.enabled                                               false
    offline-apps.allow_by_default                                           false
[i] pageThumbs.enabled                                                      false
[i] permissions.default.camera                                              2
[i] permissions.default.desktop-notification                                2
    permissions.default.geo                                                 2
[i] permissions.default.microphone                                          2
[i] permissions.default.shortcuts                                           2
    permissions.manager.defaultsUrl                                         ""
[i] permissions.memory_only                                                 true
[i] pfs.datasource.url                                                      ""
    plugin.default.state                                                    0
    plugin.defaultXpi.state                                                 0
[i] plugin.scan.Acrobat                                                     99999
    plugin.scan.plid.all                                                    false
[i] plugin.scan.Quicktime                                                   99999
[i] plugin.scan.WindowsMediaPlayer                                          99999
    plugin.sessionPermissionNow.intervalInMinutes                           0
[i] plugins.enumerable_names                                                ""
[i] plugins.update.url                                                      ""
[i] privacy.clearOnShutdown.passwords                                       false
    privacy.clearOnShutdown.siteSettings                                    false
[i] privacy.cpd.openWindows                                                 true
    privacy.cpd.passwords                                                   false
    privacy.cpd.siteSettings                                                false
[i] privacy.donottrackheader.value                                          1
    privacy.firstparty.isolate.restrict_opener_access                       true
    privacy.resistFingerprinting.block_mozAddonManager                      true
[i] privacy.trackingprotection.annotate_channels                            false
[i] privacy.trackingprotection.lower_network_priority                       false
    privacy.trackingprotection.ui.enabled                                   true
[i] privacy.usercontext.about_newtab_segregation.enabled                    true
[i] privacy.userContext.longPressBehavior                                   2
[i] privacy.userContext.ui.enabled                                          true
[i] privacy.window.maxInnerHeight                                           900
[i] privacy.window.maxInnerWidth                                            1600
[i] reader.parse-on-load.enabled                                            false
    security.csp.enable_violation_events                                    false
    security.data_uri.block_toplevel_data_uri_navigations                   true
    security.family_safety.mode                                             0
    security.insecure_connection_icon.enabled                               true
[i] security.insecure_connection_icon.pbmode.enabled                        true
    security.insecure_connection_text.enabled                               true
[i] security.insecure_connection_text.pbmode.enabled                        true
[i] security.mixed_content.send_hsts_priming                                false
[i] security.mixed_content.use_hsts                                         true
[i] security.nocertdb                                                       true
    security.ssl.errorReporting.enabled                                     false
    security.ssl.errorReporting.url                                         ""
    security.tls.enable_0rtt_data                                           false
[i] security.tls.insecure_fallback_hosts.use_static_list                    false
[i] services.blocklist.addons.collection                                    ""
[i] services.blocklist.gfx.collection                                       ""
[i] services.blocklist.onecrl.collection                                    ""
[i] services.blocklist.plugins.collection                                   ""
    shield.savant.enabled                                                   false
[i] social.directories                                                      ""
[i] social.enabled                                                          false
[i] social.remote-install.enabled                                           false
[i] social.share.activationPanelEnabled                                     false
[i] social.shareDirectory                                                   ""
[i] social.toast-notifications.enabled                                      false
[i] social.whitelist                                                        ""
[i] startup.homepage_override_url                                           ""
[i] startup.homepage_welcome_url                                            ""
[i] startup.homepage_welcome_url.additional                                 ""
[i] toolkit.cosmeticAnimations.enabled                                      false
    toolkit.telemetry.archive.enabled                                       false
    toolkit.telemetry.bhrPing.enabled                                       false
    toolkit.telemetry.cachedClientID                                        ""
    toolkit.telemetry.firstShutdownPing.enabled                             false
    toolkit.telemetry.hybridContent.enabled                                 false
    toolkit.telemetry.newProfilePing.enabled                                false
    toolkit.telemetry.server                                                "data:,"
    toolkit.telemetry.shutdownPingSender.enabled                            false
[i] toolkit.telemetry.unifiedIsOptIn                                        true
    toolkit.telemetry.updatePing.enabled                                    false
[i] ui.key.menuAccessKey                                                    0
    ui.use_standins_for_native_colors                                       true
[i] urlclassifier.trackingTable                                             "test-track-simple,base-track-digest256"
[i] view_source.tab                                                         false
    webchannel.allowObject.urlWhitelist                                     ""
    webgl.dxgl.enabled                                                      false
    webgl.enable-webgl2                                                     false
    xpinstall.whitelist.required                                            true


------------------------------------------------------------------------------
 The following 78 prefs exist in both files but are inactive (commented out) in only one of them:

    app.update.auto                                                          
        ghacks.js        false
[i]     pk.js            true
    app.update.enabled                                                       
[i]     ghacks.js        false
        pk.js            true
    browser.bookmarks.max_backups                                            
[i]     ghacks.js        2
        pk.js            0
    browser.cache.offline.enable                                             
[i]     ghacks.js        false
        pk.js            false
    browser.casting.enabled                                                  
[i]     ghacks.js        false
        pk.js            false
    browser.newtabpage.activity-stream.enabled                               
[i]     ghacks.js        false
        pk.js            false
    browser.newtabpage.directory.ping                                        
[i]     ghacks.js        "data:text/plain,"
        pk.js            ""
    browser.newtabpage.directory.source                                      
[i]     ghacks.js        "data:text/plain,"
        pk.js            "data:text/plain,{}"
    browser.newtabpage.enhanced                                              
[i]     ghacks.js        false
        pk.js            false
    browser.pocket.enabled                                                   
[i]     ghacks.js        false
        pk.js            false
    browser.privatebrowsing.autostart                                        
[i]     ghacks.js        true
        pk.js            true
    browser.safebrowsing.blockedURIs.enabled                                 
[i]     ghacks.js        false
        pk.js            true
    browser.safebrowsing.enabled                                             
[i]     ghacks.js        false
        pk.js            true
    browser.safebrowsing.malware.enabled                                     
[i]     ghacks.js        false
        pk.js            true
    browser.safebrowsing.phishing.enabled                                    
[i]     ghacks.js        false
        pk.js            true
    browser.selfsupport.url                                                  
[i]     ghacks.js        ""
        pk.js            ""
    camera.control.face_detection.enabled                                    
[i]     ghacks.js        false
        pk.js            false
    clipboard.autocopy                                                       
[i]     ghacks.js        false
        pk.js            false
    datareporting.healthreport.service.enabled                               
[i]     ghacks.js        false
        pk.js            false
    device.sensors.enabled                                                   
[i]     ghacks.js        false
        pk.js            false
    devtools.webide.autoinstallFxdtAdapters                                  
[i]     ghacks.js        false
        pk.js            false
    dom.archivereader.enabled                                                
[i]     ghacks.js        false
        pk.js            false
    dom.battery.enabled                                                      
[i]     ghacks.js        false
        pk.js            false
    dom.disable_beforeunload                                                 
        ghacks.js        true
[i]     pk.js            true
    dom.enable_performance                                                   
[i]     ghacks.js        false
        pk.js            false
    dom.enable_resource_timing                                               
[i]     ghacks.js        false
        pk.js            false
    dom.enable_user_timing                                                   
[i]     ghacks.js        false
        pk.js            false
    dom.flyweb.enabled                                                       
[i]     ghacks.js        false
        pk.js            false
    dom.gamepad.enabled                                                      
[i]     ghacks.js        false
        pk.js            false
    dom.maxHardwareConcurrency                                               
[i]     ghacks.js        2
        pk.js            2
    dom.netinfo.enabled                                                      
[i]     ghacks.js        false
        pk.js            false
    dom.network.enabled                                                      
[i]     ghacks.js        false
        pk.js            false
    dom.telephony.enabled                                                    
[i]     ghacks.js        false
        pk.js            false
    dom.vr.enabled                                                           
[i]     ghacks.js        false
        pk.js            false
    dom.workers.enabled                                                      
[i]     ghacks.js        false
        pk.js            false
    experiments.enabled                                                      
[i]     ghacks.js        false
        pk.js            false
    experiments.manifest.uri                                                 
[i]     ghacks.js        ""
        pk.js            ""
    experiments.supported                                                    
[i]     ghacks.js        false
        pk.js            false
    extensions.shield-recipe-client.enabled                                  
[i]     ghacks.js        false
        pk.js            false
    extensions.update.enabled                                                
[i]     ghacks.js        false
        pk.js            true
    general.buildID.override                                                 
[i]     ghacks.js        20100101
        pk.js            20100101
    geo.enabled                                                              
[i]     ghacks.js        false
        pk.js            false
    geo.wifi.logging.enabled                                                 
[i]     ghacks.js        true
        pk.js            false
    intl.locale.matchOS                                                      
[i]     ghacks.js        false
        pk.js            false
    loop.logDomains                                                          
[i]     ghacks.js        false
        pk.js            false
    media.gmp-provider.enabled                                               
        ghacks.js        false
[i]     pk.js            false
    media.video_stats.enabled                                                
[i]     ghacks.js        false
        pk.js            false
    media.webspeech.synth.enabled                                            
[i]     ghacks.js        false
        pk.js            false
    network.cookie.lifetimePolicy                                            
[i]     ghacks.js        0
        pk.js            2
    network.http.referer.XOriginPolicy                                       
        ghacks.js        1
[i]     pk.js            2
    network.jar.open-unsafe-types                                            
[i]     ghacks.js        false
        pk.js            false
    network.manage-offline-status                                            
[i]     ghacks.js        false
        pk.js            false
    pdfjs.enableWebGL                                                        
        ghacks.js        false
[i]     pk.js            false
    places.history.enabled                                                   
[i]     ghacks.js        false
        pk.js            false
    plugins.update.notifyUser                                                
[i]     ghacks.js        false
        pk.js            true
    privacy.clearOnShutdown.openWindows                                      
[i]     ghacks.js        true
        pk.js            true
    privacy.cpd.downloads                                                    
[i]     ghacks.js        true
        pk.js            true
    privacy.donottrackheader.enabled                                         
        ghacks.js        true
[i]     pk.js            true
    privacy.trackingprotection.enabled                                       
[i]     ghacks.js        true
        pk.js            true
    privacy.trackingprotection.pbmode.enabled                                
[i]     ghacks.js        true
        pk.js            true
    privacy.userContext.enabled                                              
[i]     ghacks.js        true
        pk.js            true
    security.ssl3.dhe_rsa_aes_128_sha                                        
[i]     ghacks.js        false
        pk.js            false
    security.ssl3.dhe_rsa_aes_256_sha                                        
[i]     ghacks.js        false
        pk.js            false
    security.ssl3.ecdhe_ecdsa_aes_128_sha                                    
[i]     ghacks.js        false
        pk.js            false
    security.ssl3.ecdhe_ecdsa_rc4_128_sha                                    
[i]     ghacks.js        false
        pk.js            false
    security.ssl3.ecdhe_rsa_aes_128_sha                                      
[i]     ghacks.js        false
        pk.js            false
    security.ssl3.ecdhe_rsa_rc4_128_sha                                      
[i]     ghacks.js        false
        pk.js            false
    security.ssl3.rsa_aes_128_sha                                            
[i]     ghacks.js        false
        pk.js            true
    security.ssl3.rsa_aes_256_sha                                            
[i]     ghacks.js        false
        pk.js            true
    security.ssl3.rsa_des_ede3_sha                                           
[i]     ghacks.js        false
        pk.js            false
    security.ssl3.rsa_rc4_128_md5                                            
[i]     ghacks.js        false
        pk.js            false
    security.ssl3.rsa_rc4_128_sha                                            
[i]     ghacks.js        false
        pk.js            false
    security.tls.unrestricted_rc4_fallback                                   
[i]     ghacks.js        false
        pk.js            false
    security.xpconnect.plugin.unrestricted                                   
[i]     ghacks.js        false
        pk.js            false
    signon.rememberSignons                                                   
[i]     ghacks.js        false
        pk.js            false
    signon.storeWhenAutocompleteOff                                          
        ghacks.js        true
[i]     pk.js            false
    svg.disabled                                                             
[i]     ghacks.js        true
        pk.js            true
    webgl.enable-debug-renderer-info                                         
[i]     ghacks.js        false
        pk.js            false

:jeans: said...

71 prefs with matching values but inactive in ghacks.js
7 prefs with matching values but inactive in pk.js

for both these sections you don't output the value, which would be helpful

...then earthlng said...

When the report says a pref is inactive in one file, the value doesn't necessarily match the value of the same pref in the other file.

sorry my bad. Well, nice effort mate but I guess I'll keep using my script then :trollface:

My solution:

  ...
   57 prefs with matching values but inactive in ghacks.js
    4 prefs with matching values but inactive in pk.js
  ...
 ...
 The following 78 prefs exist in both files but are inactive (commented out) in only one of them:

    app.update.auto                                                          
        ghacks.js        false
[i]     pk.js            true
    app.update.enabled                                                       
[i]     ghacks.js        false
        pk.js            true
    browser.bookmarks.max_backups                                            
[i]     ghacks.js        2
        pk.js            0
    browser.cache.offline.enable                                             
[i]     ghacks.js        false
        pk.js            false
 ...

The numbers in the header don't add up to the combined unique prefs anymore in the output you posted

They're not meant to add up.

They added up when I didn't care about equality in the prefs with different state, but now that the script cares (because you seemed to be asking for it) they don't add up. It's precise. If you want the combined unique prefs to not count some prefs, then it shouldn't be called "combined unique prefs".

shit must be accountable, you know, like in accounting - rows and columns and row totals/ column totals must be in equalibrium - its a morbid fear I have, like clowns (I don;t have a fear of clowns, it was an example) .. i want my numbers and items and rows and columns and all add up correctly :) When stuff doesn't add up, I cannot sleep

row totals/ column totals

There are no such totals in the output generated by this script.

^^ I was explaining accounting to ya! The two totals via rows and via columns should match - its a fundamental check

You know what? I'll add an EXTRA row in the summary just so your numbers add up. Deal? Dammit. :laughing:

No .. adding an extra row is called "cooking the books" :grin:

But back to what earthlng was saying: "The numbers in the header don't add up to the combined unique prefs anymore in the output you posted" <-- the point is they should add up

If they should add up, then I need an extra row:

prefs that don't match _and_ have different states

And that's exactly what I'll do.

v1.3.1

header

  670 combined unique prefs
  136 matching prefs, both value and state (active/inactive)
   13 prefs with different values but matching state
   78 prefs not declared in ghacks.js
  365 prefs not declared in pk.js
   57 prefs with matching values but inactive in ghacks.js
    4 prefs with matching values but inactive in pk.js

but they add up to 653

body sections

The following 136 prefs match
The following 13 prefs have different values:
The following 78 prefs are not declared in ghacks.js:
The following 365 prefs are not declared in pk.js:

so far so good, and then it diverges from the header

The following 78 prefs exist in both files but are inactive (commented out) in only one of them:

and then it ends

and the body section numnbers add up to 670

So what changed to make the header lines differ from the section header lines - why did 57+4 get merged with the missing item(s) in the header into a new 78

The following 78 prefs exist in both files but are inactive (commented out) in only one of them:

That's three things:

  • prefs that match, but are inactive only in X
  • prefs that match, but are inactive only in Y
  • prefs that don't match and are inactive in only X or Y

As things are now, the rest of the summary doesn't match the number of combined unique prefs simpy because I didn't add an extra row with the items that don't match and have different states.

The alternative would be separating those 3 things into different lists, just so they match your dear headers.

My point is that the numbers above will never match unless I add that extra row, or unless I change the "combined unique prefs" header, because if it didn't count the prefs that don't match and don't have the same state, it would be one lying header.

no worries, when I said adding extra rows was cooking the books, that was an accounting joke. I had not analyzed earthlng's analysis and clearly the number of header lines no longer matches the number of sections - so they need to be brought back into balance - so that means adding lines back in

So, I'll assume no one likes this format then:

    app.update.auto                                                          
        ghacks.js        false
[i]     pk.js            true
    app.update.enabled                                                       
[i]     ghacks.js        false
        pk.js            true
    browser.bookmarks.max_backups                                            
[i]     ghacks.js        2
        pk.js            0
    browser.cache.offline.enable                                             
[i]     ghacks.js        false
        pk.js            false

I shouldn't have assumed you guys would understand what I wanted you to see, even after trying to show it to you separated from the rest of the output. My bad. I should've explained things a bit.

If you guys prefer three different lists for the three things that I mentioned before, then I'll ditch that. No problem. I just thought it was a nice way to present all the information.

The following 78 prefs exist in both files but are inactive (commented out) in only one of them:

That's three things:

  • prefs that match, but are inactive only in X
  • prefs that match, but are inactive only in Y
  • prefs that don't match and are inactive in only X or Y

I don't mind if the three things are combined, as long as it is in the header totals. The first two should be combined for sure. See what earthlng says. The format, is that your example in the post right above this one?

The first two should be combined for sure.

From what I've seen so far, I doubt earthlng would agree with that.

See what earthlng says.

Not sure what you mean, sorry.

The format, is that your example in the post right above this one?

It's the same I posted above. I'm going to split that list into the three relevant parts, but I'm still gonna use that format for listing the prefs that have both mismatching values and states, unless you have a better idea.

Updated to v1.4

Possibly the final version.

Wanna know what the output looks like? run it.

Thanks :cat2: .. Ima gonna reopen this as my trigger for testing it out and stuff, and for adding some info about it into the wiki (maybe in getting started for those who already have a user.js, probably have its own page with a purdy picture). And did we want to host this here - we don't have to, but it would be cool.

Possibly the final version.

Wanna know what the output looks like? run it.

lol, found the salty guy :)
sorry mate, don't take anything I write too seriously, I was just messing with you a little bit.
It's a great script and it helped me get started with PS which I've avoided to learn for too long, so thanks for that.

It's better if @claustromaniac hosts it himself because he can make all the changes he wants without me needing to review them. We can just link to it.

Thanks again for all the feedback... you nitpicking bastards.

I had other ideas that I didn't implement, but I may eventually do it. Anyway, glad to make another small contribution.

you nitpicking bastards.

Do you need a hug, bro? :kiss:

Nah. My skin is thick enough, thanks.

I was just kidding. I generally try not to, because it is very easy to give false impressions via text, at least for me. Also, in the event of a misunderstanding, it is generally harder to find the motivation to clarify things, because I simply don't care. But if I don't, I risk coming across as a prick, and I certainly wouldn't want random strangers to think bad of me. See what I did there?

It is also even harder to tell what others are thinking than it is in person, which leads me to explain unnecessary stuff, like I'm doing right now. Plus, this isn't even my native tongue.

Plus, I'm an oddball.

I'll just stop typing right now.

You're right about text lacking nuance/tone/inflections/timing and you can add language/regional/slang/dialect and other factors .. that said, I think "reactions" say a lot more than the typed word ... and having said that, I think we all know you have a sense of humour (like The Big E and myself) and that we understand that most of us here only mean to be constructive - its never personal :)

Anyway .. thanks for the awesome work (sure beats my semi-manual approach). Still intrigued why earthlng has never shared his version (boo!). Do you plan on keeping your gist, or creating a repo so we can raise issues etc? I only ask in advance of [probably] adding a wiki page :)

There. Nitpick at your leisure.

_Says it's possibly the final version._

_Pushes 42 commits in a matter of two weeks._

Yep, that's me alright. The good news is all of your feedback helped me find a bunch of minor (and not-so) issues with the script and I learned a lot of PowerShell gotchas and specifics in that short span, so thanks again. You guys are really helpful.

This should be as reliable and fast as it gets... I hope. I may eventually improve the documentation though. I may even consider making it more SERIOUS and everything, who knows. For now I'll just keep breaking other stuff.

Good boy!

MOAR exposure

https://github.com/ghacksuserjs/ghacks-user.js/wiki/4.1-Extensions#small_orange_diamond-extensions-tools
meow

https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.3-Implementation
mew-mew-mew

That should do it. PS, sorry about sticking a drawing pin right in yer face

As always, it is my honor to pollute your wiki with my garbage!

I'll have to seriously reconsider improving the documentation now, though. Yeah... I should probably do that, shouldn't I?

sorry about sticking a drawing pin right in yer face

Don't worry about it, I'm used to that shit......(don't ask.)

Honestly, I don't feel it deserves to stand next to all of the awesome extensions. :cold_sweat: That being said, I don't know where else I'd put it if I were you.

I'm starting to feel the pressure. Now I'll have to roll the WEB APP to feel more comfortable about it.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

crssi picture crssi  路  3Comments

TerkiKerel picture TerkiKerel  路  4Comments

Thorin-Oakenpants picture Thorin-Oakenpants  路  5Comments

Thorin-Oakenpants picture Thorin-Oakenpants  路  4Comments

crssi picture crssi  路  4Comments