/* Raven.js v1.0-beta3 | https://github.com/getsentry/raven-js/ */ function parseUri(str){for(var o=parseUri.options,m=o.parser[o.strictMode?"strict":"loose"].exec(str),uri={},i=14;i--;)uri[o.key[i]]=m[i]||"";return uri[o.q.name]={},uri[o.key[12]].replace(o.q.parser,function($0,$1,$2){$1&&(uri[o.q.name][$1]=$2)}),uri}parseUri.options={strictMode:!1,key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}};var TraceKit={};TraceKit._has=function(object,key){return Object.prototype.hasOwnProperty.call(object,key)},TraceKit.report=function(){function subscribe(handler){handlers.push(handler)}function unsubscribe(handler){for(var i=handlers.length-1;i>=0;--i)handlers[i]===handler&&handlers.splice(i,1)}function notifyHandlers(stack,windowError){var exception=null;if(!windowError||TraceKit.collectWindowErrors){for(var i in handlers)if(TraceKit._has(handlers,i))try{handlers[i].apply(null,[stack].concat(Array.prototype.slice.call(arguments,2)))}catch(inner){exception=inner}if(exception)throw exception}}function report(ex){var args=Array.prototype.slice.call(arguments,1);if(lastExceptionStack){if(lastException===ex)return;var s=lastExceptionStack;lastExceptionStack=null,lastException=null,notifyHandlers.apply(null,[s,null].concat(args))}var stack=TraceKit.computeStackTrace(ex);throw lastExceptionStack=stack,lastException=ex,window.setTimeout(function(){lastException===ex&&(lastExceptionStack=null,lastException=null,notifyHandlers.apply(null,[stack,null].concat(args)))},stack.incomplete?2e3:0),ex}var handlers=[],lastException=null,lastExceptionStack=null,_oldOnerrorHandler=window.onerror;return window.onerror=function(message,url,lineNo){var stack=null;if(lastExceptionStack)TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack,url,lineNo,message),stack=lastExceptionStack,lastExceptionStack=null,lastException=null;else{var location={url:url,line:lineNo};location.func=TraceKit.computeStackTrace.guessFunctionName(location.url,location.line),location.context=TraceKit.computeStackTrace.gatherContext(location.url,location.line),stack={mode:"onerror",message:message,url:document.location.href,stack:[location],useragent:navigator.userAgent}}return notifyHandlers(stack,"from window.onerror"),_oldOnerrorHandler?_oldOnerrorHandler.apply(this,arguments):!1},report.subscribe=subscribe,report.unsubscribe=unsubscribe,report}(),TraceKit.computeStackTrace=function(){function loadSource(url){if(!TraceKit.remoteFetching)return"";try{var XMLHttpRequestWrapper;XMLHttpRequestWrapper="undefined"==typeof XMLHttpRequest?function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){}try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}throw Error("No XHR.")}:XMLHttpRequest;var request=new XMLHttpRequestWrapper;return request.open("GET",url,!1),request.send(""),request.responseText}catch(e){return""}}function getSource(url){if(!TraceKit._has(sourceCache,url)){var source;source=-1!==url.indexOf(document.domain)?loadSource(url):[],sourceCache[url]=source.length?source.split("\n"):[]}return sourceCache[url]}function guessFunctionName(url,lineNo){var m,reFunctionArgNames=/function ([^(]*)\(([^)]*)\)/,reGuessFunction=/['"]?([0-9A-Za-z$_]+)['"]?\s*[:=]\s*(function|eval|new Function)/,line="",maxLines=10,source=getSource(url);if(!source.length)return"?";for(var i=0;maxLines>i;++i)if(line=source[lineNo-i]+line,void 0!==line){if(m=reGuessFunction.exec(line))return m[1];if(m=reFunctionArgNames.exec(line))return m[1]}return"?"}function gatherContext(url,line){var source=getSource(url);if(!source.length)return null;var context=[],linesBefore=Math.floor(TraceKit.linesOfContext/2),linesAfter=linesBefore+TraceKit.linesOfContext%2,start=Math.max(0,line-linesBefore-1),end=Math.min(source.length,line+linesAfter-1);line-=1;for(var i=start;end>i;++i)source[i]!==void 0&&context.push(source[i]);return context.length>0?context:null}function escapeRegExp(text){return text.replace(/[\-\[\]{}()*+?.,\\\^$|#]/g,"\\$&")}function escapeCodeAsRegExpForMatchingInsideHTML(body){return escapeRegExp(body).replace("<","(?:<|<)").replace(">","(?:>|>)").replace("&","(?:&|&)").replace('"','(?:"|")').replace(/\s+/g,"\\s+")}function findSourceInUrls(re,urls){for(var source,m,i=0,j=urls.length;j>i;++i)if((source=getSource(urls[i])).length&&(source=source.join("\n"),m=re.exec(source)))return{url:urls[i],line:source.substring(0,m.index).split("\n").length,column:m.index-source.lastIndexOf("\n",m.index)-1};return null}function findSourceInLine(fragment,url,line){var m,source=getSource(url),re=RegExp("\\b"+escapeRegExp(fragment)+"\\b");return line-=1,source&&source.length>line&&(m=re.exec(source[line]))?m.index:null}function findSourceByFunctionBody(func){for(var body,re,parts,result,urls=[window.location.href],scripts=document.getElementsByTagName("script"),code=""+func,codeRE=/^function(?:\s+([\w$]+))?\s*\(([\w\s,]*)\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/,eventRE=/^function on([\w$]+)\s*\(event\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/,i=0;scripts.length>i;++i){var script=scripts[i];script.src&&urls.push(script.src)}if(parts=codeRE.exec(code)){var name=parts[1]?"\\s+"+parts[1]:"",args=parts[2].split(",").join("\\s*,\\s*");body=escapeRegExp(parts[3]).replace(/;$/,";?"),re=RegExp("function"+name+"\\s*\\(\\s*"+args+"\\s*\\)\\s*{\\s*"+body+"\\s*}")}else re=RegExp(escapeRegExp(code).replace(/\s+/g,"\\s+"));if(result=findSourceInUrls(re,urls))return result;if(parts=eventRE.exec(code)){var event=parts[1];if(body=escapeCodeAsRegExpForMatchingInsideHTML(parts[2]),re=RegExp("on"+event+"=[\\'\"]\\s*"+body+"\\s*[\\'\"]","i"),result=findSourceInUrls(re,urls[0]))return result;if(re=RegExp(body),result=findSourceInUrls(re,urls))return result}return null}function computeStackTraceFromStackProp(ex){if(!ex.stack)return null;for(var parts,element,chrome=/^\s*at ((?:\[object object\])?\S+) \(((?:file|http|https):.*?):(\d+)(?::(\d+))?\)\s*$/i,gecko=/^\s*(\S*)(?:\((.*?)\))?@((?:file|http|https).*?):(\d+)(?::(\d+))?\s*$/i,lines=ex.stack.split("\n"),stack=[],reference=/^(.*) is undefined$/.exec(ex.message),i=0,j=lines.length;j>i;++i){if(parts=gecko.exec(lines[i]))element={url:parts[3],func:parts[1],args:parts[2]?parts[2].split(","):"",line:+parts[4],column:parts[5]?+parts[5]:null};else{if(!(parts=chrome.exec(lines[i])))continue;element={url:parts[2],func:parts[1],line:+parts[3],column:parts[4]?+parts[4]:null}}!element.func&&element.line&&(element.func=guessFunctionName(element.url,element.line)),element.line&&(element.context=gatherContext(element.url,element.line)),stack.push(element)}return stack[0]&&stack[0].line&&!stack[0].column&&reference&&(stack[0].column=findSourceInLine(reference[1],stack[0].url,stack[0].line)),stack.length?{mode:"stack",name:ex.name,message:ex.message,url:document.location.href,stack:stack,useragent:navigator.userAgent}:null}function computeStackTraceFromStacktraceProp(ex){for(var parts,stacktrace=ex.stacktrace,testRE=/ line (\d+), column (\d+) in (?:]+)>|([^\)]+))\((.*)\) in (.*):\s*$/i,lines=stacktrace.split("\n"),stack=[],i=0,j=lines.length;j>i;i+=2)if(parts=testRE.exec(lines[i])){var element={line:+parts[1],column:+parts[2],func:parts[3]||parts[4],args:parts[5]?parts[5].split(","):[],url:parts[6]};if(!element.func&&element.line&&(element.func=guessFunctionName(element.url,element.line)),element.line)try{element.context=gatherContext(element.url,element.line)}catch(exc){}element.context||(element.context=[lines[i+1]]),stack.push(element)}return stack.length?{mode:"stacktrace",name:ex.name,message:ex.message,url:document.location.href,stack:stack,useragent:navigator.userAgent}:null}function computeStackTraceFromOperaMultiLineMessage(ex){var lines=ex.message.split("\n");if(4>lines.length)return null;var parts,i,len,source,lineRE1=/^\s*Line (\d+) of linked script ((?:file|http|https)\S+)(?:: in function (\S+))?\s*$/i,lineRE2=/^\s*Line (\d+) of inline#(\d+) script in ((?:file|http|https)\S+)(?:: in function (\S+))?\s*$/i,lineRE3=/^\s*Line (\d+) of function script\s*$/i,stack=[],scripts=document.getElementsByTagName("script"),inlineScriptBlocks=[];for(i in scripts)TraceKit._has(scripts,i)&&!scripts[i].src&&inlineScriptBlocks.push(scripts[i]);for(i=2,len=lines.length;len>i;i+=2){var item=null;if(parts=lineRE1.exec(lines[i]))item={url:parts[2],func:parts[3],line:+parts[1]};else if(parts=lineRE2.exec(lines[i])){item={url:parts[3],func:parts[4]};var relativeLine=+parts[1],script=inlineScriptBlocks[parts[2]-1];if(script&&(source=getSource(item.url))){source=source.join("\n");var pos=source.indexOf(script.innerText);pos>=0&&(item.line=relativeLine+source.substring(0,pos).split("\n").length)}}else if(parts=lineRE3.exec(lines[i])){var url=window.location.href.replace(/#.*$/,""),line=parts[1],re=RegExp(escapeCodeAsRegExpForMatchingInsideHTML(lines[i+1]));source=findSourceInUrls(re,[url]),item={url:url,line:source?source.line:line,func:""}}if(item){item.func||(item.func=guessFunctionName(item.url,item.line));var context=gatherContext(item.url,item.line),midline=context?context[Math.floor(context.length/2)]:null;item.context=context&&midline.replace(/^\s*/,"")===lines[i+1].replace(/^\s*/,"")?context:[lines[i+1]],stack.push(item)}}return stack.length?{mode:"multiline",name:ex.name,message:lines[0],url:document.location.href,stack:stack,useragent:navigator.userAgent}:null}function augmentStackTraceWithInitialElement(stackInfo,url,lineNo,message){var initial={url:url,line:lineNo};if(initial.url&&initial.line){stackInfo.incomplete=!1,initial.func||(initial.func=guessFunctionName(initial.url,initial.line)),initial.context||(initial.context=gatherContext(initial.url,initial.line));var reference=/ '([^']+)' /.exec(message);if(reference&&(initial.column=findSourceInLine(reference[1],initial.url,initial.line)),stackInfo.stack.length>0&&stackInfo.stack[0].url===initial.url){if(stackInfo.stack[0].line===initial.line)return!1;if(!stackInfo.stack[0].line&&stackInfo.stack[0].func===initial.func)return stackInfo.stack[0].line=initial.line,stackInfo.stack[0].context=initial.context,!1}return stackInfo.stack.unshift(initial),stackInfo.partial=!0,!0}return stackInfo.incomplete=!0,!1}function computeStackTraceByWalkingCallerChain(ex,depth){for(var parts,item,source,functionName=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,stack=[],funcs={},recursion=!1,curr=computeStackTraceByWalkingCallerChain.caller;curr&&!recursion;curr=curr.caller)if(curr!==computeStackTrace&&curr!==TraceKit.report){if(item={url:null,func:"?",line:null,column:null},curr.name?item.func=curr.name:(parts=functionName.exec(""+curr))&&(item.func=parts[1]),source=findSourceByFunctionBody(curr)){item.url=source.url,item.line=source.line,"?"===item.func&&(item.func=guessFunctionName(item.url,item.line));var reference=/ '([^']+)' /.exec(ex.message||ex.description);reference&&(item.column=findSourceInLine(reference[1],source.url,source.line))}funcs[""+curr]?recursion=!0:funcs[""+curr]=!0,stack.push(item)}depth&&stack.splice(0,depth);var result={mode:"callers",name:ex.name,message:ex.message,url:document.location.href,stack:stack,useragent:navigator.userAgent};return augmentStackTraceWithInitialElement(result,ex.sourceURL||ex.fileName,ex.line||ex.lineNumber,ex.message||ex.description),result}function computeStackTrace(ex,depth){var stack=null;depth=null==depth?0:+depth;try{if(stack=computeStackTraceFromStacktraceProp(ex))return stack}catch(e){if(debug)throw e}try{if(stack=computeStackTraceFromStackProp(ex))return stack}catch(e){if(debug)throw e}try{if(stack=computeStackTraceFromOperaMultiLineMessage(ex))return stack}catch(e){if(debug)throw e}try{if(stack=computeStackTraceByWalkingCallerChain(ex,depth+1))return stack}catch(e){if(debug)throw e}return{mode:"failed"}}function computeStackTraceOfCaller(depth){depth=(null==depth?0:+depth)+1;try{throw Error()}catch(ex){return computeStackTrace(ex,depth+1)}return null}var debug=!1,sourceCache={};return computeStackTrace.augmentStackTraceWithInitialElement=augmentStackTraceWithInitialElement,computeStackTrace.guessFunctionName=guessFunctionName,computeStackTrace.gatherContext=gatherContext,computeStackTrace.ofCaller=computeStackTraceOfCaller,computeStackTrace}(),function(w){var _helper=function _helper(fnName){var originalFn=w[fnName];w[fnName]=function(){var args=Array.prototype.slice.call(arguments,0),originalCallback=args[0];return"function"==typeof originalCallback&&(args[0]=function(){try{originalCallback.apply(this,arguments)}catch(e){throw TraceKit.report(e),e}}),originalFn.apply?originalFn.apply(this,args):originalFn(args[0],args[1])}};_helper("setTimeout"),_helper("setInterval")}(window),function($){if($){var _oldEventAdd=$.event.add;$.event.add=function(elem,types,handler,data,selector){var _handler;return handler.handler?(_handler=handler.handler,handler.handler=function(){try{return _handler.apply(this,arguments)}catch(e){throw TraceKit.report(e),e}}):(_handler=handler,handler=function(){try{return _handler.apply(this,arguments)}catch(e){throw TraceKit.report(e),e}}),handler.guid=_handler.guid?_handler.guid:_handler.guid=$.guid++,_oldEventAdd.call(this,elem,types,handler,data,selector)};var _oldReady=$.fn.ready;$.fn.ready=function(fn){var _fn=function(){try{return fn.apply(this,arguments)}catch(e){throw TraceKit.report(e),e}};return _oldReady.call(this,_fn)};var _oldAjax=$.ajax;$.fn.ajax=function(s){if($.isFunction(s.complete)){var _oldComplete=s.complete;s.complete=function(){try{return _oldComplete.apply(this,arguments)}catch(e){throw TraceKit.report(e),e}}}if($.isFunction(s.error)){var _oldError=s.error;s.error=function(){try{return _oldError.apply(this,arguments)}catch(e){throw TraceKit.report(e),e}}}if($.isFunction(s.success)){var _oldSuccess=s.success;s.success=function(){try{return _oldSuccess.apply(this,arguments)}catch(e){throw TraceKit.report(e),e}}}try{return _oldAjax.call(this,s)}catch(e){throw TraceKit.report(e),e}}}}(window.jQuery),TraceKit.remoteFetching||(TraceKit.remoteFetching=!0),TraceKit.collectWindowErrors||(TraceKit.collectWindowErrors=!0),(!TraceKit.linesOfContext||1>TraceKit.linesOfContext)&&(TraceKit.linesOfContext=11),function(window,undefined){"use strict";function each(obj,callback){var i,j;if(obj.length===undefined)for(i in obj)obj.hasOwnProperty(i)&&callback.call(null,i,obj[i]);else for(i=0,j=obj.length;j>i;i++)callback.call(null,i,obj[i])}function handleStackInfo(stackInfo,options){var pivot,context,i,j,ii,jj,frames=[];for(i=0,j=stackInfo.stack.length;j>i;i++){var currentStack=stackInfo.stack[i],currentFrame={abs_path:currentStack.url,filename:currentStack.url.split(/\/([^\/]+)$/)[1]||currentStack.url,lineno:currentStack.line,"function":currentStack.func};if(currentStack.context){for(context=currentStack.context,ii=0,jj=context.length;jj>ii;ii++)context[ii].length>150&&(context[ii]="...truncated...");pivot=~~(context.length/2),currentFrame.pre_context=context.slice(0,pivot),currentFrame.context_line=context[pivot],currentFrame.post_context=context.slice(pivot+1)}frames[i]=currentFrame}processException(stackInfo.name,stackInfo.message,stackInfo.url,stackInfo.lineno,frames,options)}function processException(type,message,fileurl,lineno,frames,options){var stacktrace,label,i,j;for(i=0,j=globalOptions.ignoreErrors.length;j>i;i++)if(message===globalOptions.ignoreErrors[i])return;for(frames?(stacktrace={frames:frames},fileurl=fileurl||frames[0].filename):fileurl&&(stacktrace={frames:[{filename:fileurl,lineno:lineno}]}),i=0,j=globalOptions.ignoreUrls.length;j>i;i++)if(globalOptions.ignoreUrls[i].test(fileurl))return;label=lineno?message+" at "+lineno:message,send(arrayMerge({"sentry.interfaces.Exception":{type:type,value:message},"sentry.interfaces.Stacktrace":stacktrace,culprit:fileurl,message:label},options))}function arrayMerge(arr1,arr2){return arr2===undefined?arr1:(each(arr2,function(key,value){arr1[key]=value}),arr1)}function pad(n,amount){var i,len=(""+n).length;if(amount===undefined&&(amount=2),len>=amount)return n;for(i=0;amount-len>i;i++)n="0"+n;return n}function dateToISOString(date){return Date.prototype.toISOString?date.toISOString():date.getUTCFullYear()+"-"+pad(date.getUTCMonth()+1)+"-"+pad(date.getUTCDate())+"T"+pad(date.getUTCHours())+":"+pad(date.getUTCMinutes())+":"+pad(date.getUTCSeconds())+"."+pad(date.getUTCMilliseconds(),3)+"Z"}function send(data){if(hasJSON){var encoded_msg,timestamp=(new Date).getTime(),url=window.location.protocol+"//"+window.location.host+window.location.pathname,querystring=window.location.search.slice(1),auth=self.getAuthQueryString(timestamp);data=arrayMerge({project:globalOptions.projectId,logger:globalOptions.logger,site:globalOptions.site,timestamp:new Date,"sentry.interfaces.Http":{url:url,querystring:querystring}},data),"function"==typeof globalOptions.dataCallback&&(data=globalOptions.dataCallback(data)),data.timestamp=dateToISOString(data.timestamp),encoded_msg="&sentry_data="+encodeURIComponent(JSON.stringify(data)),each(globalOptions.servers,function(i,server){(new Image).src=server+auth+encoded_msg})}}var Raven;window.Raven=Raven={};var self=Raven;Raven.VERSION="1.0-beta3";var hasJSON=window.JSON!==undefined,globalOptions={secretKey:undefined,publicKey:undefined,servers:[],projectId:1,logger:"javascript",site:undefined,dataCallback:null,fetchHeaders:!1,ignoreErrors:[],ignoreUrls:[]};Raven.config=function(config){var servers=[];return"string"==typeof config&&(config=Raven.parseDSN(config)),each(config,function(key,option){globalOptions[key]=option}),each(globalOptions.servers,function(i,server){"/"!==server.slice(-1)&&(server+="/"),servers.push(server+"api/"+globalOptions.projectId+"/store/")}),globalOptions.servers=servers,this},Raven.install=function(){hasJSON&&TraceKit.report.subscribe(handleStackInfo)},Raven.parseDSN=function(dsn){var project_id,path,uri=parseUri(dsn),path_idx=uri.path.lastIndexOf("/");return-1===path_idx?(project_id=uri.path.substr(1),path=""):(path=uri.path.substr(1,path_idx),project_id=uri.path.substr(path_idx+1)),{servers:[uri.protocol+"://"+uri.host+(uri.port?":"+uri.port:"")+"/"+path],publicKey:uri.user,secretKey:uri.password,projectId:project_id}},Raven.getAuthQueryString=function(timestamp){var qs=["sentry_version=2.0","sentry_timestamp="+timestamp,"sentry_client=raven-js/"+self.VERSION];return globalOptions.publicKey&&qs.push("sentry_key="+globalOptions.publicKey),"?"+qs.join("&")},Raven.captureException=TraceKit.report,Raven.captureMessage=function(msg,options){send(arrayMerge({message:msg},options))}}(window);