// Defaults as of jshint edition 2011-04-16
{
  // If the scan should stop on first error.
  "passfail": false,
  // Maximum errors before stopping.
  "maxerr": 50,


  // Predefined globals
  // If the standard browser globals should be predefined.
  "browser": true,
  // If the Node.js environment globals should be predefined.
  "node": true,
  // If the Rhino environment globals should be predefined.
  "rhino": false,
  // If CouchDB globals should be predefined.
  "couch": false,
  // If the Windows Scripting Host environment globals should be predefined.
  "wsh": false,

  // If jQuery globals should be predefined.
  "jquery": false,
  // If Prototype and Scriptaculous globals should be predefined.
  "prototypejs": false,
  // If MooTools globals should be predefined.
  "mootools": false,
  // If Dojo Toolkit globals should be predefined.
  "dojo": false,

  // Custom predefined globals.
  "predef": ["jasmine", "blackberry", "define", "alert", "prompt", "org", "deviceapis", "Osp", "_cordovaExec", "WinJS", "Windows", "MSApp", "PalmSystem", "PalmServiceBridge", "Acceleration", "webworks"],


  // Development
  // If debugger statements should be allowed.
  "debug": false,
  // If logging globals should be predefined (console, alert, etc.).
  "devel": false,


  // ECMAScript 5
  // If ES5 syntax should be allowed.
  "es5": false,
  // Require the "use strict"; pragma.
  "strict": false,
  // If global "use strict"; should be allowed (also enables strict).
  "globalstrict": false,


  // The Good Parts
  // If automatic semicolon insertion should be tolerated.
  "asi": false,
  // If line breaks should not be checked, e.g. `return [\n] x`.
  "laxbreak": false,
  // If bitwise operators (&, |, ^, etc.) should not be allowed.
  "bitwise": false,
  // If assignments inside if, for and while should be allowed. Usually
  // conditions and loops are for comparison, not assignments.
  "boss": true,
  // If curly braces around all blocks should be required.
  "curly": false,
  // If === should be required.
  "eqeqeq": false,
  // If == null comparisons should be tolerated.
  "eqnull": false,
  // If eval should be allowed.
  "evil": true,
  // If ExpressionStatement should be allowed as Programs.
  "expr": true,
  // If `for in` loops must filter with `hasOwnPrototype`.
  "forin": false,
  // If immediate invocations must be wrapped in parens, e.g.
  // `( function(){}() );`.
  "immed": false,
  // If use before define should not be tolerated.
  "latedef": false,
  // If functions should be allowed to be defined within loops.
  "loopfunc": true,
  // If arguments.caller and arguments.callee should be disallowed.
  "noarg": false,
  // If the . should not be allowed in regexp literals.
  "regexp": false,
  // If unescaped first/last dash (-) inside brackets should be tolerated.
  "regexdash": false,
  // If script-targeted URLs should be tolerated.
  "scripturl": false,
  // If variable shadowing should be tolerated.
  "shadow": false,
  // If `new function () { ... };` and `new Object;` should be tolerated.
  "supernew": false,
  // If variables should be declared before used.
  "undef": true,
  // If `this` inside a non-constructor function is valid.
  "validthis": false,
  // If smarttabs should be tolerated
  // (http://www.emacswiki.org/emacs/SmartTabs).
  "smarttabs": false,
  // If the `__proto__` property should be allowed.
  "proto": false,
  // If one case switch statements should be allowed.
  "onecase": false,
  // If non-standard (but widely adopted) globals should be predefined.
  "nonstandard": false,
  // Allow multiline strings.
  "multistr": false,
  // If line breaks should not be checked around commas.
  "laxcomma": false,
  // If semicolons may be omitted for the trailing statements inside of a
  // one-line blocks.
  "lastsemic": false,
  // If the `__iterator__` property should be allowed.
  "iterator": false,
  // If only function scope should be used for scope tests.
  "funcscope": false,
  // If es.next specific syntax should be allowed.
  "esnext": false,


  // Style preferences
  // If constructor names must be capitalized.
  "newcap": false,
  // If empty blocks should be disallowed.
  "noempty": false,
  // If using `new` for side-effects should be disallowed.
  "nonew": false,
  // If names should be checked for leading or trailing underscores
  // (object._attribute would be disallowed).
  "nomen": false,
  // If only one var statement per function should be allowed.
  "onevar": false,
  // If increment and decrement (`++` and `--`) should not be allowed.
  "plusplus": false,
  // If all forms of subscript notation are tolerated.
  "sub": false,
  // If trailing whitespace rules apply.
  "trailing": true,
  // Specify indentation.
  "indent": 4,
  // If strict whitespace rules apply.
  "white": false
}
