!(function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use strict";a.defineMode("shell",(function(){function b(a,b){for(var c=0;c<b.length;c++)g[b[c]]=a}function c(a,b){if(a.eatSpace())return null;var c=a.sol(),e=a.next();if("\\"===e)return a.next(),null;if("'"===e||'"'===e||"`"===e)return b.tokens.unshift(d(e,"`"===e?"quote":"string")),f(a,b);if("#"===e)return c&&a.eat("!")?(a.skipToEnd(),"meta"):(a.skipToEnd(),"comment");if("$"===e)return b.tokens.unshift(k),f(a,b);if("+"===e||"="===e)return"operator";if("-"===e)return a.eat("-"),a.eatWhile(/\w/),"attribute";if(/\d/.test(e)&&(a.eatWhile(/\d/),a.eol()||!/\w/.test(a.peek())))return"number";a.eatWhile(/[\w-]/);var h=a.current();return"="===a.peek()&&/\w+/.test(h)?"def":g.hasOwnProperty(h)?g[h]:null}function d(a,b){var c="("==a?")":"{"==a?"}":a;return function(g,h){for(var i,j=!1;null!=(i=g.next());){if(i===c&&!j){h.tokens.shift();break}if("$"===i&&!j&&"'"!==a&&g.peek()!=c){j=!0,g.backUp(1),h.tokens.unshift(k);break}if(!j&&a!==c&&i===a)return h.tokens.unshift(d(a,b)),f(g,h);if(!j&&/['"]/.test(i)&&!/['"]/.test(a)){h.tokens.unshift(e(i,"string")),g.backUp(1);break}j=!j&&"\\"===i}return b}}function e(a,b){return function(c,e){return e.tokens[0]=d(a,b),c.next(),f(c,e)}}function f(a,b){return(b.tokens[0]||c)(a,b)}var g={},h=["true","false"],i=["if","then","do","else","elif","while","until","for","in","esac","fi","fin","fil","done","exit","set","unset","export","function"],j=["ab","awk","bash","beep","cat","cc","cd","chown","chmod","chroot","clear","cp","curl","cut","diff","echo","find","gawk","gcc","get","git","grep","hg","kill","killall","ln","ls","make","mkdir","openssl","mv","nc","nl","node","npm","ping","ps","restart","rm","rmdir","sed","service","sh","shopt","shred","source","sort","sleep","ssh","start","stop","su","sudo","svn","tee","telnet","top","touch","vi","vim","wall","wc","wget","who","write","yes","zsh"];a.registerHelper("hintWords","shell",h.concat(i,j)),b("atom",h),b("keyword",i),b("builtin",j);var k=function(a,b){b.tokens.length>1&&a.eat("$");var c=a.next();return/['"({]/.test(c)?(b.tokens[0]=d(c,"("==c?"quote":"{"==c?"def":"string"),f(a,b)):(/\d/.test(c)||a.eatWhile(/\w/),b.tokens.shift(),"def")};return{startState:function(){return{tokens:[]}},token:function(a,b){return f(a,b)},closeBrackets:"()[]{}''\"\"``",lineComment:"#",fold:"brace"}})),a.defineMIME("text/x-sh","shell"),a.defineMIME("application/x-sh","shell")}));