/* AngularJS (c) 2010-2020 Google LLC. http://angularjs.org License: MIT @license XLTS for AngularJS License Agreement (c) 2022 XLTS.dev All Rights Reserved. https://xlts.dev/angularjs v1.9.1 @license AngularJS (c) 2010-2020 Google LLC. http://angularjs.org License: MIT XLTS for AngularJS v1.9.1 (c) 2022 XLTS.dev All Rights Reserved. https://xlts.dev/angularjs License: Obtain a commercial license from XLTS.dev before using this software. */ (function(window){var minErrConfig={objectMaxDepth:5,urlErrorParamsEnabled:true};function errorHandlingConfig(config){if(isObject(config)){if(isDefined(config.objectMaxDepth))minErrConfig.objectMaxDepth=isValidObjectMaxDepth(config.objectMaxDepth)?config.objectMaxDepth:NaN;if(isDefined(config.urlErrorParamsEnabled)&&isBoolean(config.urlErrorParamsEnabled))minErrConfig.urlErrorParamsEnabled=config.urlErrorParamsEnabled}else return minErrConfig}function isValidObjectMaxDepth(maxDepth){return isNumber(maxDepth)&& maxDepth>0}function minErr(module,ErrorConstructor){ErrorConstructor=ErrorConstructor||Error;var url="https://errors.angularjs.xlts.dev/1.9.1/";var regex=url.replace(".","\\.")+"[\\s\\S]*";var errRegExp=new RegExp(regex,"g");return function(){var code=arguments[0],template=arguments[1],message="["+(module?module+":":"")+code+"] ",templateArgs=sliceArgs(arguments,2).map(function(arg){return toDebugString(arg,minErrConfig.objectMaxDepth)}),paramPrefix,i;message+=template.replace(/\{\d+\}/g,function(match){var index= +match.slice(1,-1);if(index=0&&length-1 in obj||typeof obj.item==="function")}function forEach(obj,iterator,context){var key,length;if(obj)if(isFunction(obj))for(key in obj){if(key!=="prototype"&&key!=="length"&&key!=="name"&&obj.hasOwnProperty(key))iterator.call(context,obj[key],key,obj)}else if(isArray(obj)||isArrayLike(obj)){var isPrimitive=typeof obj!=="object";for(key=0,length=obj.length;key< length;key++)if(isPrimitive||key in obj)iterator.call(context,obj[key],key,obj)}else if(obj.forEach&&obj.forEach!==forEach)obj.forEach(iterator,context,obj);else if(isBlankObject(obj))for(key in obj)iterator.call(context,obj[key],key,obj);else if(typeof obj.hasOwnProperty==="function")for(key in obj){if(obj.hasOwnProperty(key))iterator.call(context,obj[key],key,obj)}else for(key in obj)if(hasOwnProperty.call(obj,key))iterator.call(context,obj[key],key,obj);return obj}function forEachSorted(obj,iterator, context){var keys=Object.keys(obj).sort();for(var i=0;i=0)array.splice(index,1);return index}function copy(source,destination,maxDepth){var stackSource=[];var stackDest=[];maxDepth=isValidObjectMaxDepth(maxDepth)?maxDepth:NaN;if(destination){if(isTypedArray(destination)||isArrayBuffer(destination))throw ngMinErr("cpta","Can't copy! TypedArray destination cannot be mutated.");if(source===destination)throw ngMinErr("cpi", "Can't copy! Source and destination are identical.");if(isArray(destination))destination.length=0;else forEach(destination,function(value,key){if(key!=="$$hashKey")delete destination[key]});stackSource.push(source);stackDest.push(destination);return copyRecurse(source,destination,maxDepth)}return copyElement(source,maxDepth);function copyRecurse(source,destination,maxDepth){maxDepth--;if(maxDepth<0)return"...";var h=destination.$$hashKey;var key;if(isArray(source))for(var i=0,ii=source.length;i2?sliceArgs(arguments,2):[];if(isFunction(fn)&&!(fn instanceof RegExp))return curryArgs.length?function(){return arguments.length?fn.apply(self,concat(curryArgs,arguments,0)):fn.apply(self,curryArgs)}:function(){return arguments.length?fn.apply(self,arguments):fn.call(self)};else return fn}function toJsonReplacer(key,value){var val=value;if(typeof key==="string"&&key.charAt(0)==="$"&&key.charAt(1)=== "$")val=undefined;else if(isWindow(value))val="$WINDOW";else if(value&&window.document===value)val="$DOCUMENT";else if(isScope(value))val="$SCOPE";return val}function toJson(obj,pretty){if(isUndefined(obj))return undefined;if(!isNumber(pretty))pretty=pretty?2:null;return JSON.stringify(obj,toJsonReplacer,pretty)}function fromJson(json){return isString(json)?JSON.parse(json):json}var ALL_COLONS=/:/g;function timezoneToOffset(timezone,fallback){timezone=timezone.replace(ALL_COLONS,"");var requestedTimezoneOffset= Date.parse("Jan 01, 1970 00:00:00 "+timezone)/6E4;return isNumberNaN(requestedTimezoneOffset)?fallback:requestedTimezoneOffset}function addDateMinutes(date,minutes){date=new Date(date.getTime());date.setMinutes(date.getMinutes()+minutes);return date}function convertTimezoneToLocal(date,timezone,reverse){reverse=reverse?-1:1;var dateTimezoneOffset=date.getTimezoneOffset();var timezoneOffset=timezoneToOffset(timezone,dateTimezoneOffset);return addDateMinutes(date,reverse*(timezoneOffset-dateTimezoneOffset))} function startingTag(element){element=jqLite(element).clone().empty();var elemHtml=jqLite("\x3cdiv\x3e\x3c/div\x3e").append(element).html();try{return element[0].nodeType===NODE_TYPE_TEXT?lowercase(elemHtml):elemHtml.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/,function(match,nodeName){return"\x3c"+lowercase(nodeName)})}catch(e){return lowercase(elemHtml)}}function tryDecodeURIComponent(value){try{return decodeURIComponent(value)}catch(e){}}function parseKeyValue(keyValue){var obj={};forEach((keyValue|| "").split("\x26"),function(keyValue){var splitPoint,key,val;if(keyValue){key=keyValue=keyValue.replace(/\+/g,"%20");splitPoint=keyValue.indexOf("\x3d");if(splitPoint!==-1){key=keyValue.substring(0,splitPoint);val=keyValue.substring(splitPoint+1)}key=tryDecodeURIComponent(key);if(isDefined(key)){val=isDefined(val)?tryDecodeURIComponent(val):true;if(!hasOwnProperty.call(obj,key))obj[key]=val;else if(isArray(obj[key]))obj[key].push(val);else obj[key]=[obj[key],val]}}});return obj}function toKeyValue(obj){var parts= [];forEach(obj,function(value,key){if(isArray(value))forEach(value,function(arrayValue){parts.push(encodeUriQuery(key,true)+(arrayValue===true?"":"\x3d"+encodeUriQuery(arrayValue,true)))});else parts.push(encodeUriQuery(key,true)+(value===true?"":"\x3d"+encodeUriQuery(value,true)))});return parts.length?parts.join("\x26"):""}function encodeUriSegment(val){return encodeUriQuery(val,true).replace(/%26/gi,"\x26").replace(/%3D/gi,"\x3d").replace(/%2B/gi,"+")}function encodeUriQuery(val,pctEncodeSpaces){return encodeURIComponent(val).replace(/%40/gi, "@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,pctEncodeSpaces?"%20":"+")}var ngAttrPrefixes=["ng-","data-ng-","ng:","x-ng-"];function getNgAttribute(element,ngAttr){var attr,i,ii=ngAttrPrefixes.length;for(i=0;i/,"\x26gt;"));}modules=modules||[];modules.unshift(["$provide",function($provide){$provide.value("$rootElement",element)}]);if(config.debugInfoEnabled)modules.push(["$compileProvider",function($compileProvider){$compileProvider.debugInfoEnabled(true)}]); modules.unshift("ng");var injector=createInjector(modules,config.strictDi);injector.invoke(["$rootScope","$rootElement","$compile","$injector",function bootstrapApply(scope,element,compile,injector){scope.$apply(function(){element.data("$injector",injector);compile(element)(scope)})}]);return injector};var NG_ENABLE_DEBUG_INFO=/^NG_ENABLE_DEBUG_INFO!/;var NG_DEFER_BOOTSTRAP=/^NG_DEFER_BOOTSTRAP!/;if(window&&NG_ENABLE_DEBUG_INFO.test(window.name)){config.debugInfoEnabled=true;window.name=window.name.replace(NG_ENABLE_DEBUG_INFO, "")}if(window&&!NG_DEFER_BOOTSTRAP.test(window.name))return doBootstrap();window.name=window.name.replace(NG_DEFER_BOOTSTRAP,"");angular.resumeBootstrap=function(extraModules){forEach(extraModules,function(module){modules.push(module)});return doBootstrap()};if(isFunction(angular.resumeDeferredBootstrap))angular.resumeDeferredBootstrap()}function reloadWithDebugInfo(){window.name="NG_ENABLE_DEBUG_INFO!"+window.name;window.location.reload()}function getTestability(rootElement){var injector=angular.element(rootElement).injector(); if(!injector)throw ngMinErr("test","no injector found for element argument to getTestability");return injector.get("$$testability")}var SNAKE_CASE_REGEXP=/[A-Z]/g;function snake_case(name,separator){separator=separator||"_";return name.replace(SNAKE_CASE_REGEXP,function(letter,pos){return(pos?separator:"")+letter.toLowerCase()})}var bindJQueryFired=false;function bindJQuery(){var originalCleanData;if(bindJQueryFired)return;var jqName=jq();jQuery=isUndefined(jqName)?window.jQuery:!jqName?undefined: window[jqName];if(jQuery&&jQuery.fn.on){jqLite=jQuery;extend(jQuery.fn,{scope:JQLitePrototype.scope,isolateScope:JQLitePrototype.isolateScope,controller:JQLitePrototype.controller,injector:JQLitePrototype.injector,inheritedData:JQLitePrototype.inheritedData})}else jqLite=JQLite;originalCleanData=jqLite.cleanData;jqLite.cleanData=function(elems){var events;for(var i=0,elem;(elem=elems[i])!=null;i++){events=(jqLite._data(elem)||{}).events;if(events&&events.$destroy)jqLite(elem).triggerHandler("$destroy")}originalCleanData(elems)}; angular.element=jqLite;bindJQueryFired=true}var XHTML_TAG_REGEXP=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)(?:[^\w:>-][^>]*)?)\/>/gi;function UNSAFE_restoreLegacyJqLiteXHTMLReplacement(){JQLite.htmlPrefilter=function(html){var finalHtml=html.replace(XHTML_TAG_REGEXP,"\x3c$1\x3e\x3c/$2\x3e");if(window.console&&window.console.warn&&html!==finalHtml)window.console.warn("JQLite changed the HTML string:\n"+"\n"+html+"\n"+"\n"+"to remove self-closing tags, resulting in this HTML string:\n"+ "\n"+finalHtml+"\n"+"\n"+"JQLite no longer does this replacement when you stop calling "+"UNSAFE_restoreLegacyJqLiteXHTMLReplacement; please update your code "+"to avoid self-closing tags.");return finalHtml}}function assertArg(arg,name,reason){if(!arg)throw ngMinErr("areq","Argument '{0}' is {1}",name||"?",reason||"required");return arg}function assertArgFn(arg,name,acceptArrayAnnotation){if(acceptArrayAnnotation&&isArray(arg))arg=arg[arg.length-1];assertArg(isFunction(arg),name,"not a function, got "+ (arg&&typeof arg==="object"?arg.constructor.name||"Object":typeof arg));return arg}function assertNotHasOwnProperty(name,context){if(name==="hasOwnProperty")throw ngMinErr("badname","hasOwnProperty is not a valid {0} name",context);}function getter(obj,path,bindFnToScope){if(!path)return obj;var keys=path.split(".");var key;var lastInstance=obj;var len=keys.length;for(var i=0;i=0)return"...";seen.push(val)}return val})}function toDebugString(obj,maxDepth){if(typeof obj==="function")return obj.toString().replace(/ \{[\s\S]*$/,"");else if(isUndefined(obj))return"undefined";else if(typeof obj!=="string")return serializeObject(obj, maxDepth);return obj}var version={vendor:"XLTS.dev",full:"1.9.1",major:1,minor:9,dot:1,codeName:"supersonically-starting"};function publishExternalAPI(angular){extend(angular,{"errorHandlingConfig":errorHandlingConfig,"bootstrap":bootstrap,"copy":copy,"extend":extend,"merge":merge,"equals":equals,"element":jqLite,"forEach":forEach,"injector":createInjector,"noop":noop,"bind":bind,"toJson":toJson,"fromJson":fromJson,"identity":identity,"isUndefined":isUndefined,"isDefined":isDefined,"isString":isString, "isFunction":isFunction,"isObject":isObject,"isNumber":isNumber,"isElement":isElement,"isArray":isArray,"version":version,"isDate":isDate,"callbacks":{$$counter:0},"getTestability":getTestability,"reloadWithDebugInfo":reloadWithDebugInfo,"UNSAFE_restoreLegacyJqLiteXHTMLReplacement":UNSAFE_restoreLegacyJqLiteXHTMLReplacement,"$$minErr":minErr,"$$csp":csp,"$$encodeUriSegment":encodeUriSegment,"$$encodeUriQuery":encodeUriQuery,"$$lowercase":lowercase,"$$stringify":stringify,"$$uppercase":uppercase}); angularModule=setupModuleLoader(window);angularModule("ng",["ngLocale"],["$provide",function ngModule($provide){$provide.provider({$$sanitizeUri:$$SanitizeUriProvider});$provide.provider("$compile",$CompileProvider).directive({a:htmlAnchorDirective,input:inputDirective,textarea:inputDirective,form:formDirective,script:scriptDirective,select:selectDirective,option:optionDirective,ngBind:ngBindDirective,ngBindHtml:ngBindHtmlDirective,ngBindTemplate:ngBindTemplateDirective,ngClass:ngClassDirective,ngClassEven:ngClassEvenDirective, ngClassOdd:ngClassOddDirective,ngCloak:ngCloakDirective,ngController:ngControllerDirective,ngForm:ngFormDirective,ngHide:ngHideDirective,ngIf:ngIfDirective,ngInclude:ngIncludeDirective,ngInit:ngInitDirective,ngNonBindable:ngNonBindableDirective,ngPluralize:ngPluralizeDirective,ngRef:ngRefDirective,ngRepeat:ngRepeatDirective,ngShow:ngShowDirective,ngStyle:ngStyleDirective,ngSwitch:ngSwitchDirective,ngSwitchWhen:ngSwitchWhenDirective,ngSwitchDefault:ngSwitchDefaultDirective,ngOptions:ngOptionsDirective, ngTransclude:ngTranscludeDirective,ngModel:ngModelDirective,ngList:ngListDirective,ngChange:ngChangeDirective,pattern:patternDirective,ngPattern:patternDirective,required:requiredDirective,ngRequired:requiredDirective,minlength:minlengthDirective,ngMinlength:minlengthDirective,maxlength:maxlengthDirective,ngMaxlength:maxlengthDirective,ngValue:ngValueDirective,ngModelOptions:ngModelOptionsDirective}).directive({ngInclude:ngIncludeFillContentDirective,input:hiddenInputBrowserCacheDirective}).directive(ngAttributeAliasDirectives).directive(ngEventDirectives); $provide.provider({$anchorScroll:$AnchorScrollProvider,$animate:$AnimateProvider,$animateCss:$CoreAnimateCssProvider,$$animateJs:$$CoreAnimateJsProvider,$$animateQueue:$$CoreAnimateQueueProvider,$$AnimateRunner:$$AnimateRunnerFactoryProvider,$$animateAsyncRun:$$AnimateAsyncRunFactoryProvider,$browser:$BrowserProvider,$cacheFactory:$CacheFactoryProvider,$controller:$ControllerProvider,$document:$DocumentProvider,$$isDocumentHidden:$$IsDocumentHiddenProvider,$exceptionHandler:$ExceptionHandlerProvider, $filter:$FilterProvider,$$forceReflow:$$ForceReflowProvider,$interpolate:$InterpolateProvider,$interval:$IntervalProvider,$$intervalFactory:$$IntervalFactoryProvider,$http:$HttpProvider,$httpParamSerializer:$HttpParamSerializerProvider,$httpParamSerializerJQLike:$HttpParamSerializerJQLikeProvider,$httpBackend:$HttpBackendProvider,$xhrFactory:$xhrFactoryProvider,$jsonpCallbacks:$jsonpCallbacksProvider,$location:$LocationProvider,$log:$LogProvider,$parse:$ParseProvider,$rootScope:$RootScopeProvider, $q:$QProvider,$$q:$$QProvider,$sce:$SceProvider,$sceDelegate:$SceDelegateProvider,$sniffer:$SnifferProvider,$$taskTrackerFactory:$$TaskTrackerFactoryProvider,$templateCache:$TemplateCacheProvider,$templateRequest:$TemplateRequestProvider,$$testability:$$TestabilityProvider,$timeout:$TimeoutProvider,$window:$WindowProvider,$$rAF:$$RAFProvider,$$jqLite:$$jqLiteProvider,$$Map:$$MapProvider,$$cookieReader:$$CookieReaderProvider})}]).info({angularVersion:"1.9.1"})}JQLite.expando="ng339";var jqCache=JQLite.cache= {},jqId=1;JQLite._data=function(node){return this.cache[node[this.expando]]||{}};function jqNextId(){return++jqId}var DASH_LOWERCASE_REGEXP=/-([a-z])/g;var MS_HACK_REGEXP=/^-ms-/;var MOUSE_EVENT_MAP={mouseleave:"mouseout",mouseenter:"mouseover"};var jqLiteMinErr=minErr("jqLite");function cssKebabToCamel(name){return kebabToCamel(name.replace(MS_HACK_REGEXP,"ms-"))}function fnCamelCaseReplace(all,letter){return letter.toUpperCase()}function kebabToCamel(name){return name.replace(DASH_LOWERCASE_REGEXP, fnCamelCaseReplace)}var SINGLE_TAG_REGEXP=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/;var HTML_REGEXP=/<|&#?\w+;/;var TAG_NAME_REGEXP=/<([\w:-]+)/;var wrapMap={thead:["table"],col:["colgroup","table"],tr:["tbody","table"],td:["tr","tbody","table"]};wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead;wrapMap.th=wrapMap.td;var wrapMapIE9={option:[1,'\x3cselect multiple\x3d"multiple"\x3e',"\x3c/select\x3e"],_default:[0,"",""]};for(var key in wrapMap){var wrapMapValueClosing=wrapMap[key];var wrapMapValue= wrapMapValueClosing.slice().reverse();wrapMapIE9[key]=[wrapMapValue.length,"\x3c"+wrapMapValue.join("\x3e\x3c")+"\x3e","\x3c/"+wrapMapValueClosing.join("\x3e\x3c/")+"\x3e"]}wrapMapIE9.optgroup=wrapMapIE9.option;function jqLiteIsTextNode(html){return!HTML_REGEXP.test(html)}function jqLiteAcceptsData(node){var nodeType=node.nodeType;return nodeType===NODE_TYPE_ELEMENT||!nodeType||nodeType===NODE_TYPE_DOCUMENT}function jqLiteHasData(node){for(var key in jqCache[node.ng339])return true;return false}function jqLiteBuildFragment(html, context){var tmp,tag,wrap,finalHtml,fragment=context.createDocumentFragment(),nodes=[],i;if(jqLiteIsTextNode(html))nodes.push(context.createTextNode(html));else{tmp=fragment.appendChild(context.createElement("div"));tag=(TAG_NAME_REGEXP.exec(html)||["",""])[1].toLowerCase();finalHtml=JQLite.htmlPrefilter(html);if(msie<10){wrap=wrapMapIE9[tag]||wrapMapIE9._default;tmp.innerHTML=wrap[1]+finalHtml+wrap[2];i=wrap[0];while(i--)tmp=tmp.firstChild}else{wrap=wrapMap[tag]||[];i=wrap.length;while(--i>-1){tmp.appendChild(window.document.createElement(wrap[i])); tmp=tmp.firstChild}tmp.innerHTML=finalHtml}nodes=concat(nodes,tmp.childNodes);tmp=fragment.firstChild;tmp.textContent=""}fragment.textContent="";fragment.innerHTML="";forEach(nodes,function(node){fragment.appendChild(node)});return fragment}function jqLiteParseHTML(html,context){context=context||window.document;var parsed;if(parsed=SINGLE_TAG_REGEXP.exec(html))return[context.createElement(parsed[1])];if(parsed=jqLiteBuildFragment(html,context))return parsed.childNodes;return[]}function jqLiteWrapNode(node, wrapper){var parent=node.parentNode;if(parent)parent.replaceChild(wrapper,node);wrapper.appendChild(node)}var jqLiteContains=window.Node.prototype.contains||function(arg){return!!(this.compareDocumentPosition(arg)&16)};function JQLite(element){if(element instanceof JQLite)return element;var argIsString;if(isString(element)){element=trim(element);argIsString=true}if(!(this instanceof JQLite)){if(argIsString&&element.charAt(0)!=="\x3c")throw jqLiteMinErr("nosel","Looking up elements via selectors is not supported by jqLite! See: https://docs.angularjs.xlts.dev/api/ng/function/angular.element"); return new JQLite(element)}if(argIsString)jqLiteAddNodes(this,jqLiteParseHTML(element));else if(isFunction(element))jqLiteReady(element);else jqLiteAddNodes(this,element)}function jqLiteClone(element){return element.cloneNode(true)}function jqLiteDealoc(element,onlyDescendants){if(!onlyDescendants&&jqLiteAcceptsData(element))jqLite.cleanData([element]);if(element.querySelectorAll)jqLite.cleanData(element.querySelectorAll("*"))}function isEmptyObject(obj){var name;for(name in obj)return false;return true} function removeIfEmptyData(element){var expandoId=element.ng339;var expandoStore=expandoId&&jqCache[expandoId];var events=expandoStore&&expandoStore.events;var data=expandoStore&&expandoStore.data;if((!data||isEmptyObject(data))&&(!events||isEmptyObject(events))){delete jqCache[expandoId];element.ng339=undefined}}function jqLiteOff(element,type,fn,unsupported){if(isDefined(unsupported))throw jqLiteMinErr("offargs","jqLite#off() does not support the `selector` argument");var expandoStore=jqLiteExpandoStore(element); var events=expandoStore&&expandoStore.events;var handle=expandoStore&&expandoStore.handle;if(!handle)return;if(!type)for(type in events){if(type!=="$destroy")element.removeEventListener(type,handle);delete events[type]}else{var removeHandler=function(type){var listenerFns=events[type];if(isDefined(fn))arrayRemove(listenerFns||[],fn);if(!(isDefined(fn)&&listenerFns&&listenerFns.length>0)){element.removeEventListener(type,handle);delete events[type]}};forEach(type.split(" "),function(type){removeHandler(type); if(MOUSE_EVENT_MAP[type])removeHandler(MOUSE_EVENT_MAP[type])})}removeIfEmptyData(element)}function jqLiteRemoveData(element,name){var expandoId=element.ng339;var expandoStore=expandoId&&jqCache[expandoId];if(expandoStore){if(name)delete expandoStore.data[name];else expandoStore.data={};removeIfEmptyData(element)}}function jqLiteExpandoStore(element,createIfNecessary){var expandoId=element.ng339,expandoStore=expandoId&&jqCache[expandoId];if(createIfNecessary&&!expandoStore){element.ng339=expandoId= jqNextId();expandoStore=jqCache[expandoId]={events:{},data:{},handle:undefined}}return expandoStore}function jqLiteData(element,key,value){if(jqLiteAcceptsData(element)){var prop;var isSimpleSetter=isDefined(value);var isSimpleGetter=!isSimpleSetter&&key&&!isObject(key);var massGetter=!key;var expandoStore=jqLiteExpandoStore(element,!isSimpleGetter);var data=expandoStore&&expandoStore.data;if(isSimpleSetter)data[kebabToCamel(key)]=value;else if(massGetter)return data;else if(isSimpleGetter)return data&& data[kebabToCamel(key)];else for(prop in key)data[kebabToCamel(prop)]=key[prop]}}function jqLiteHasClass(element,selector){if(!element.getAttribute)return false;return(" "+(element.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+selector+" ")>-1}function jqLiteRemoveClass(element,cssClasses){if(cssClasses&&element.setAttribute){var existingClasses=(" "+(element.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");var newClasses=existingClasses;forEach(cssClasses.split(" "),function(cssClass){cssClass= trim(cssClass);newClasses=newClasses.replace(" "+cssClass+" "," ")});if(newClasses!==existingClasses)element.setAttribute("class",trim(newClasses))}}function jqLiteAddClass(element,cssClasses){if(cssClasses&&element.setAttribute){var existingClasses=(" "+(element.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");var newClasses=existingClasses;forEach(cssClasses.split(" "),function(cssClass){cssClass=trim(cssClass);if(newClasses.indexOf(" "+cssClass+" ")===-1)newClasses+=cssClass+" "});if(newClasses!== existingClasses)element.setAttribute("class",trim(newClasses))}}function jqLiteAddNodes(root,elements){if(elements)if(elements.nodeType)root[root.length++]=elements;else{var length=elements.length;if(typeof length==="number"&&elements.window!==elements){if(length)for(var i=0;i=0?jqLite(this[index]):jqLite(this[this.length+index])},length:0,push:push,sort:[].sort,splice:[].splice};var BOOLEAN_ATTR={};forEach("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(value){BOOLEAN_ATTR[lowercase(value)]=value}); var BOOLEAN_ELEMENTS={};forEach("input,select,option,textarea,button,form,details".split(","),function(value){BOOLEAN_ELEMENTS[value]=true});var ALIASED_ATTR={"ngMinlength":"minlength","ngMaxlength":"maxlength","ngMin":"min","ngMax":"max","ngPattern":"pattern","ngStep":"step"};function getBooleanAttrName(element,name){var booleanAttr=BOOLEAN_ATTR[name.toLowerCase()];return booleanAttr&&BOOLEAN_ELEMENTS[nodeName_(element)]&&booleanAttr}function getAliasedAttrName(name){return ALIASED_ATTR[name]}forEach({data:jqLiteData, removeData:jqLiteRemoveData,hasData:jqLiteHasData,cleanData:function jqLiteCleanData(nodes){for(var i=0,ii=nodes.length;i1)eventFns=shallowCopy(eventFns);for(var i=0;i=0?type.split(" "):[type];var i=types.length;var addHandler=function(type,specialHandlerWrapper,noEventListener){var eventFns=events[type];if(!eventFns){eventFns=events[type]=[];eventFns.specialHandlerWrapper=specialHandlerWrapper;if(type!=="$destroy"&& !noEventListener)element.addEventListener(type,handle)}eventFns.push(fn)};while(i--){type=types[i];if(MOUSE_EVENT_MAP[type]){addHandler(MOUSE_EVENT_MAP[type],specialMouseHandlerWrapper);addHandler(type,undefined,true)}else addHandler(type)}},off:jqLiteOff,one:function(element,type,fn){element=jqLite(element);element.on(type,function onFn(){element.off(type,fn);element.off(type,onFn)});element.on(type,fn)},replaceWith:function(element,replaceNode){var index,parent=element.parentNode;jqLiteDealoc(element); forEach(new JQLite(replaceNode),function(node){if(index)parent.insertBefore(node,index.nextSibling);else parent.replaceChild(node,element);index=node})},children:function(element){var children=[];forEach(element.childNodes,function(element){if(element.nodeType===NODE_TYPE_ELEMENT)children.push(element)});return children},contents:function(element){return element.contentDocument||element.childNodes||[]},append:function(element,node){var nodeType=element.nodeType;if(nodeType!==NODE_TYPE_ELEMENT&&nodeType!== NODE_TYPE_DOCUMENT_FRAGMENT)return;node=new JQLite(node);for(var i=0,ii=node.length;i/;var FN_ARGS=/^[^(]*\(\s*([^)]*)\)/m;var FN_ARG_SPLIT=/,/;var FN_ARG=/^\s*(_?)(\S+?)\1\s*$/;var STRIP_COMMENTS=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;var $injectorMinErr=minErr("$injector");function stringifyFn(fn){return Function.prototype.toString.call(fn)} function extractArgs(fn){var fnText=stringifyFn(fn).replace(STRIP_COMMENTS,""),args=fnText.match(ARROW_ARG)||fnText.match(FN_ARGS);return args}function anonFn(fn){var args=extractArgs(fn);if(args)return"function("+(args[1]||"").replace(/[\s\r\n]+/," ")+")";return"fn"}function annotate(fn,strictDi,name){var $inject,argDecl,last;if(typeof fn==="function"){if(!($inject=fn.$inject)){$inject=[];if(fn.length){if(strictDi){if(!isString(name)||!name)name=fn.name||anonFn(fn);throw $injectorMinErr("strictdi", "{0} is not using explicit annotation and cannot be invoked in strict mode",name);}argDecl=extractArgs(fn);forEach(argDecl[1].split(FN_ARG_SPLIT),function(arg){arg.replace(FN_ARG,function(all,underscore,name){$inject.push(name)})})}fn.$inject=$inject}}else if(isArray(fn)){last=fn.length-1;assertArgFn(fn[last],"fn");$inject=fn.slice(0,last)}else assertArgFn(fn,"fn",true);return $inject}function createInjector(modulesToLoad,strictDi){strictDi=strictDi===true;var INSTANTIATING={},providerSuffix="Provider", path=[],loadedModules=new NgMap,providerCache={$provide:{provider:supportObject(provider),factory:supportObject(factory),service:supportObject(service),value:supportObject(value),constant:supportObject(constant),decorator:decorator}},providerInjector=providerCache.$injector=createInternalInjector(providerCache,function(serviceName,caller){if(angular.isString(caller))path.push(caller);throw $injectorMinErr("unpr","Unknown provider: {0}",path.join(" \x3c- "));}),instanceCache={},protoInstanceInjector= createInternalInjector(instanceCache,function(serviceName,caller){var provider=providerInjector.get(serviceName+providerSuffix,caller);return instanceInjector.invoke(provider.$get,provider,undefined,serviceName)}),instanceInjector=protoInstanceInjector;providerCache["$injector"+providerSuffix]={$get:valueFn(protoInstanceInjector)};instanceInjector.modules=providerInjector.modules=createMap();var runBlocks=loadModules(modulesToLoad);instanceInjector=protoInstanceInjector.get("$injector");instanceInjector.strictDi= strictDi;forEach(runBlocks,function(fn){if(fn)instanceInjector.invoke(fn)});instanceInjector.loadNewModules=function(mods){forEach(loadModules(mods),function(fn){if(fn)instanceInjector.invoke(fn)})};return instanceInjector;function supportObject(delegate){return function(key,value){if(isObject(key))forEach(key,reverseParams(delegate));else return delegate(key,value)}}function provider(name,provider_){assertNotHasOwnProperty(name,"service");if(isFunction(provider_)||isArray(provider_))provider_=providerInjector.instantiate(provider_); if(!provider_.$get)throw $injectorMinErr("pget","Provider '{0}' must define $get factory method.",name);return providerCache[name+providerSuffix]=provider_}function enforceReturnValue(name,factory){return function enforcedReturnValue(){var result=instanceInjector.invoke(factory,this);if(isUndefined(result))throw $injectorMinErr("undef","Provider '{0}' must return a value from $get factory method.",name);return result}}function factory(name,factoryFn,enforce){return provider(name,{$get:enforce!==false? enforceReturnValue(name,factoryFn):factoryFn})}function service(name,constructor){return factory(name,["$injector",function($injector){return $injector.instantiate(constructor)}])}function value(name,val){return factory(name,valueFn(val),false)}function constant(name,value){assertNotHasOwnProperty(name,"constant");providerCache[name]=value;instanceCache[name]=value}function decorator(serviceName,decorFn){var origProvider=providerInjector.get(serviceName+providerSuffix),orig$get=origProvider.$get; origProvider.$get=function(){var origInstance=instanceInjector.invoke(orig$get,origProvider);return instanceInjector.invoke(decorFn,null,{$delegate:origInstance})}}function loadModules(modulesToLoad){assertArg(isUndefined(modulesToLoad)||isArray(modulesToLoad),"modulesToLoad","not an array");var runBlocks=[],moduleFn;forEach(modulesToLoad,function(module){if(loadedModules.get(module))return;loadedModules.set(module,true);function runInvokeQueue(queue){var i,ii;for(i=0,ii=queue.length;i1)return;$$rAF(function(){for(var i=0;icapacity)this.remove(staleEnd.key);return value},get:function(key){if(capacity0)$animate.addClass(this.$$element,classVal)},$removeClass:function(classVal){if(classVal&&classVal.length>0)$animate.removeClass(this.$$element,classVal)},$updateClass:function(newClasses,oldClasses){var toAdd=tokenDifference(newClasses,oldClasses);if(toAdd&&toAdd.length)$animate.addClass(this.$$element,toAdd);var toRemove=tokenDifference(oldClasses,newClasses);if(toRemove&&toRemove.length)$animate.removeClass(this.$$element,toRemove)},$set:function(key,value,writeAttr,attrName){var node= this.$$element[0],booleanKey=getBooleanAttrName(node,key),aliasedKey=getAliasedAttrName(key),observer=key,nodeName;if(booleanKey){this.$$element.prop(key,value);attrName=booleanKey}else if(aliasedKey){this[aliasedKey]=value;observer=aliasedKey}this[key]=value;if(attrName)this.$attr[key]=attrName;else{attrName=this.$attr[key];if(!attrName)this.$attr[key]=attrName=snake_case(key,"-")}nodeName=nodeName_(this.$$element);if(nodeName==="img"&&key==="srcset")this[key]=value=sanitizeSrcset(value,"$set('srcset', value)"); if(writeAttr!==false)if(value===null||isUndefined(value))this.$$element.removeAttr(attrName);else if(SIMPLE_ATTR_NAME.test(attrName))if(booleanKey&&value===false)this.$$element.removeAttr(attrName);else this.$$element.attr(attrName,value);else setSpecialAttr(this.$$element[0],attrName,value);var $$observers=this.$$observers;if($$observers)forEach($$observers[observer],function(fn){try{fn(value)}catch(e){$exceptionHandler(e)}})},$observe:function(key,fn){var attrs=this,$$observers=attrs.$$observers|| (attrs.$$observers=createMap()),listeners=$$observers[key]||($$observers[key]=[]);listeners.push(fn);$rootScope.$evalAsync(function(){if(!listeners.$$inter&&attrs.hasOwnProperty(key)&&!isUndefined(attrs[key]))fn(attrs[key])});return function(){arrayRemove(listeners,fn)}}};function setSpecialAttr(element,attrName,value){specialAttrHolder.innerHTML="\x3cspan "+attrName+"\x3e";var attributes=specialAttrHolder.firstChild.attributes;var attribute=attributes[0];attributes.removeNamedItem(attribute.name); attribute.value=value;element.attributes.setNamedItem(attribute)}function safeAddClass($element,className){try{$element.addClass(className)}catch(e){}}var startSymbol=$interpolate.startSymbol(),endSymbol=$interpolate.endSymbol(),denormalizeTemplate=startSymbol==="{{"&&endSymbol==="}}"?identity:function denormalizeTemplate(template){return template.replace(/\{\{/g,startSymbol).replace(/}}/g,endSymbol)},NG_PREFIX_BINDING=/^ng(Attr|Prop|On)([A-Z].*)$/;var MULTI_ELEMENT_DIR_RE=/^(.+)Start$/;compile.$$addBindingInfo= debugInfoEnabled?function $$addBindingInfo($element,binding){var bindings=$element.data("$binding")||[];if(isArray(binding))bindings=bindings.concat(binding);else bindings.push(binding);$element.data("$binding",bindings)}:noop;compile.$$addBindingClass=debugInfoEnabled?function $$addBindingClass($element){safeAddClass($element,"ng-binding")}:noop;compile.$$addScopeInfo=debugInfoEnabled?function $$addScopeInfo($element,scope,isolated,noTemplate){var dataName=isolated?noTemplate?"$isolateScopeNoTemplate": "$isolateScope":"$scope";$element.data(dataName,scope)}:noop;compile.$$addScopeClass=debugInfoEnabled?function $$addScopeClass($element,isolated){safeAddClass($element,isolated?"ng-isolate-scope":"ng-scope")}:noop;compile.$$createComment=function(directiveName,comment){var content="";if(debugInfoEnabled){content=" "+(directiveName||"")+": ";if(comment)content+=comment+" "}return window.document.createComment(content)};return compile;function compile($compileNodes,transcludeFn,maxPriority,ignoreDirective, previousCompileContext){if(!($compileNodes instanceof jqLite))$compileNodes=jqLite($compileNodes);var compositeLinkFn=compileNodes($compileNodes,transcludeFn,$compileNodes,maxPriority,ignoreDirective,previousCompileContext);compile.$$addScopeClass($compileNodes);var namespace=null;return function publicLinkFn(scope,cloneConnectFn,options){if(!$compileNodes)throw $compileMinErr("multilink","This element has already been linked.");assertArg(scope,"scope");if(previousCompileContext&&previousCompileContext.needsNewScope)scope= scope.$parent.$new();options=options||{};var parentBoundTranscludeFn=options.parentBoundTranscludeFn,transcludeControllers=options.transcludeControllers,futureParentElement=options.futureParentElement;if(parentBoundTranscludeFn&&parentBoundTranscludeFn.$$boundTransclude)parentBoundTranscludeFn=parentBoundTranscludeFn.$$boundTransclude;if(!namespace)namespace=detectNamespaceForChildElements(futureParentElement);var $linkNode;if(namespace!=="html")$linkNode=jqLite(wrapTemplate(namespace,jqLite("\x3cdiv\x3e\x3c/div\x3e").append($compileNodes).html())); else if(cloneConnectFn)$linkNode=JQLitePrototype.clone.call($compileNodes);else $linkNode=$compileNodes;if(transcludeControllers)for(var controllerName in transcludeControllers)$linkNode.data("$"+controllerName+"Controller",transcludeControllers[controllerName].instance);compile.$$addScopeInfo($linkNode,scope);if(cloneConnectFn)cloneConnectFn($linkNode,scope);if(compositeLinkFn)compositeLinkFn(scope,$linkNode,$linkNode,parentBoundTranscludeFn);if(!cloneConnectFn)$compileNodes=compositeLinkFn=null; return $linkNode}}function detectNamespaceForChildElements(parentElement){var node=parentElement&&parentElement[0];if(!node)return"html";else return nodeName_(node)!=="foreignobject"&&toString.call(node).match(/SVG/)?"svg":"html"}function compileNodes(nodeList,transcludeFn,$rootElement,maxPriority,ignoreDirective,previousCompileContext){var linkFns=[],notLiveList=isArray(nodeList)||nodeList instanceof jqLite,attrs,directives,nodeLinkFn,childNodes,childLinkFn,linkFnFound,nodeLinkFnFound;for(var i= 0;i0)}else nodes.push(node);return jqLite(nodes)}function groupElementsLinkFnWrapper(linkFn,attrStart,attrEnd){return function groupedElementsLink(scope,element,attrs,controllers,transcludeFn){element=groupScan(element[0],attrStart,attrEnd);return linkFn(scope, element,attrs,controllers,transcludeFn)}}function compilationGenerator(eager,$compileNodes,transcludeFn,maxPriority,ignoreDirective,previousCompileContext){var compiled;if(eager)return compile($compileNodes,transcludeFn,maxPriority,ignoreDirective,previousCompileContext);return function lazyCompilation(){if(!compiled){compiled=compile($compileNodes,transcludeFn,maxPriority,ignoreDirective,previousCompileContext);$compileNodes=transcludeFn=previousCompileContext=null}return compiled.apply(this,arguments)}} function applyDirectivesToNode(directives,compileNode,templateAttrs,transcludeFn,jqCollection,originalReplaceDirective,preLinkFns,postLinkFns,previousCompileContext){previousCompileContext=previousCompileContext||{};var terminalPriority=-Number.MAX_VALUE,newScopeDirective=previousCompileContext.newScopeDirective,controllerDirectives=previousCompileContext.controllerDirectives,newIsolateScopeDirective=previousCompileContext.newIsolateScopeDirective,templateDirective=previousCompileContext.templateDirective, nonTlbTranscludeDirective=previousCompileContext.nonTlbTranscludeDirective,hasTranscludeDirective=false,hasTemplate=false,hasElementTranscludeDirective=previousCompileContext.hasElementTranscludeDirective,$compileNode=templateAttrs.$$element=jqLite(compileNode),directive,directiveName,$template,replaceDirective=originalReplaceDirective,childTranscludeFn=transcludeFn,linkFn,didScanForMultipleTransclusion=false,mightHaveMultipleTransclusionError=false,directiveValue;for(var i=0,ii=directives.length;i< ii;i++){directive=directives[i];var attrStart=directive.$$start;var attrEnd=directive.$$end;if(attrStart)$compileNode=groupScan(compileNode,attrStart,attrEnd);$template=undefined;if(terminalPriority>directive.priority)break;directiveValue=directive.scope;if(directiveValue){if(!directive.templateUrl)if(isObject(directiveValue)){assertNoDuplicate("new/isolated scope",newIsolateScopeDirective||newScopeDirective,directive,$compileNode);newIsolateScopeDirective=directive}else assertNoDuplicate("new/isolated scope", newIsolateScopeDirective,directive,$compileNode);newScopeDirective=newScopeDirective||directive}directiveName=directive.name;if(!didScanForMultipleTransclusion&&(directive.replace&&(directive.templateUrl||directive.template)||directive.transclude&&!directive.$$tlb)){var candidateDirective;for(var scanningIndex=i+1;candidateDirective=directives[scanningIndex++];)if(candidateDirective.transclude&&!candidateDirective.$$tlb||candidateDirective.replace&&(candidateDirective.templateUrl||candidateDirective.template)){mightHaveMultipleTransclusionError= true;break}didScanForMultipleTransclusion=true}if(!directive.templateUrl&&directive.controller){controllerDirectives=controllerDirectives||createMap();assertNoDuplicate("'"+directiveName+"' controller",controllerDirectives[directiveName],directive,$compileNode);controllerDirectives[directiveName]=directive}directiveValue=directive.transclude;if(directiveValue){hasTranscludeDirective=true;if(!directive.$$tlb){assertNoDuplicate("transclusion",nonTlbTranscludeDirective,directive,$compileNode);nonTlbTranscludeDirective= directive}if(directiveValue==="element"){hasElementTranscludeDirective=true;terminalPriority=directive.priority;$template=$compileNode;$compileNode=templateAttrs.$$element=jqLite(compile.$$createComment(directiveName,templateAttrs[directiveName]));compileNode=$compileNode[0];replaceWith(jqCollection,sliceArgs($template),compileNode);childTranscludeFn=compilationGenerator(mightHaveMultipleTransclusionError,$template,transcludeFn,terminalPriority,replaceDirective&&replaceDirective.name,{nonTlbTranscludeDirective:nonTlbTranscludeDirective})}else{var slots= createMap();if(!isObject(directiveValue))$template=jqLite(jqLiteClone(compileNode)).contents();else{$template=window.document.createDocumentFragment();var slotMap=createMap();var filledSlots=createMap();forEach(directiveValue,function(elementSelector,slotName){var optional=elementSelector.charAt(0)==="?";elementSelector=optional?elementSelector.substring(1):elementSelector;slotMap[elementSelector]=slotName;slots[slotName]=null;filledSlots[slotName]=optional});forEach($compileNode.contents(),function(node){var slotName= slotMap[directiveNormalize(nodeName_(node))];if(slotName){filledSlots[slotName]=true;slots[slotName]=slots[slotName]||window.document.createDocumentFragment();slots[slotName].appendChild(node)}else $template.appendChild(node)});forEach(filledSlots,function(filled,slotName){if(!filled)throw $compileMinErr("reqslot","Required transclusion slot `{0}` was not filled.",slotName);});for(var slotName in slots)if(slots[slotName]){var slotCompileNodes=jqLite(slots[slotName].childNodes);slots[slotName]=compilationGenerator(mightHaveMultipleTransclusionError, slotCompileNodes,transcludeFn)}$template=jqLite($template.childNodes)}$compileNode.empty();childTranscludeFn=compilationGenerator(mightHaveMultipleTransclusionError,$template,transcludeFn,undefined,undefined,{needsNewScope:directive.$$isolateScope||directive.$$newScope});childTranscludeFn.$$slots=slots}}if(directive.template){hasTemplate=true;assertNoDuplicate("template",templateDirective,directive,$compileNode);templateDirective=directive;directiveValue=isFunction(directive.template)?directive.template($compileNode, templateAttrs):directive.template;directiveValue=denormalizeTemplate(directiveValue);if(directive.replace){replaceDirective=directive;if(jqLiteIsTextNode(directiveValue))$template=[];else $template=removeComments(wrapTemplate(directive.templateNamespace,trim(directiveValue)));compileNode=$template[0];if($template.length!==1||compileNode.nodeType!==NODE_TYPE_ELEMENT)throw $compileMinErr("tplrt","Template for directive '{0}' must have exactly one root element. {1}",directiveName,"");replaceWith(jqCollection, $compileNode,compileNode);var newTemplateAttrs={$attr:{}};var templateDirectives=collectDirectives(compileNode,[],newTemplateAttrs);var unprocessedDirectives=directives.splice(i+1,directives.length-(i+1));if(newIsolateScopeDirective||newScopeDirective)markDirectiveScope(templateDirectives,newIsolateScopeDirective,newScopeDirective);directives=directives.concat(templateDirectives).concat(unprocessedDirectives);mergeTemplateAttributes(templateAttrs,newTemplateAttrs);ii=directives.length}else $compileNode.html(directiveValue)}if(directive.templateUrl){hasTemplate= true;assertNoDuplicate("template",templateDirective,directive,$compileNode);templateDirective=directive;if(directive.replace)replaceDirective=directive;nodeLinkFn=compileTemplateUrl(directives.splice(i,directives.length-i),$compileNode,templateAttrs,jqCollection,hasTranscludeDirective&&childTranscludeFn,preLinkFns,postLinkFns,{controllerDirectives:controllerDirectives,newScopeDirective:newScopeDirective!==directive&&newScopeDirective,newIsolateScopeDirective:newIsolateScopeDirective,templateDirective:templateDirective, nonTlbTranscludeDirective:nonTlbTranscludeDirective});ii=directives.length}else if(directive.compile)try{linkFn=directive.compile($compileNode,templateAttrs,childTranscludeFn);var context=directive.$$originalDirective||directive;if(isFunction(linkFn))addLinkFns(null,bind(context,linkFn),attrStart,attrEnd);else if(linkFn)addLinkFns(bind(context,linkFn.pre),bind(context,linkFn.post),attrStart,attrEnd)}catch(e){$exceptionHandler(e,startingTag($compileNode))}if(directive.terminal){nodeLinkFn.terminal= true;terminalPriority=Math.max(terminalPriority,directive.priority)}}nodeLinkFn.scope=newScopeDirective&&newScopeDirective.scope===true;nodeLinkFn.transcludeOnThisElement=hasTranscludeDirective;nodeLinkFn.templateOnThisElement=hasTemplate;nodeLinkFn.transclude=childTranscludeFn;previousCompileContext.hasElementTranscludeDirective=hasElementTranscludeDirective;return nodeLinkFn;function addLinkFns(pre,post,attrStart,attrEnd){if(pre){if(attrStart)pre=groupElementsLinkFnWrapper(pre,attrStart,attrEnd); pre.require=directive.require;pre.directiveName=directiveName;if(newIsolateScopeDirective===directive||directive.$$isolateScope)pre=cloneAndAnnotateFn(pre,{isolateScope:true});preLinkFns.push(pre)}if(post){if(attrStart)post=groupElementsLinkFnWrapper(post,attrStart,attrEnd);post.require=directive.require;post.directiveName=directiveName;if(newIsolateScopeDirective===directive||directive.$$isolateScope)post=cloneAndAnnotateFn(post,{isolateScope:true});postLinkFns.push(post)}}function nodeLinkFn(childLinkFn, scope,linkNode,$rootElement,boundTranscludeFn){var i,ii,linkFn,isolateScope,controllerScope,elementControllers,transcludeFn,$element,attrs,scopeBindingInfo;if(compileNode===linkNode){attrs=templateAttrs;$element=templateAttrs.$$element}else{$element=jqLite(linkNode);attrs=new Attributes($element,templateAttrs)}controllerScope=scope;if(newIsolateScopeDirective)isolateScope=scope.$new(true);else if(newScopeDirective)controllerScope=scope.$parent;if(boundTranscludeFn){transcludeFn=controllersBoundTransclude; transcludeFn.$$boundTransclude=boundTranscludeFn;transcludeFn.isSlotFilled=function(slotName){return!!boundTranscludeFn.$$slots[slotName]}}if(controllerDirectives)elementControllers=setupControllers($element,attrs,transcludeFn,controllerDirectives,isolateScope,scope,newIsolateScopeDirective);if(newIsolateScopeDirective){compile.$$addScopeInfo($element,isolateScope,true,!(templateDirective&&(templateDirective===newIsolateScopeDirective||templateDirective===newIsolateScopeDirective.$$originalDirective))); compile.$$addScopeClass($element,true);isolateScope.$$isolateBindings=newIsolateScopeDirective.$$isolateBindings;scopeBindingInfo=initializeDirectiveBindings(scope,attrs,isolateScope,isolateScope.$$isolateBindings,newIsolateScopeDirective);if(scopeBindingInfo.removeWatches)isolateScope.$on("$destroy",scopeBindingInfo.removeWatches)}for(var name in elementControllers){var controllerDirective=controllerDirectives[name];var controller=elementControllers[name];var bindings=controllerDirective.$$bindings.bindToController; var customBindingAssignment=isFunction(compile.$$customAssignBindings)&&compile.$$customAssignBindings(bindings,controller,controllerDirective,controllerScope,$element,attrs,initializeDirectiveBindings);if(!customBindingAssignment){controller.instance=controller();$element.data("$"+controllerDirective.name+"Controller",controller.instance);controller.bindingInfo=initializeDirectiveBindings(controllerScope,attrs,controller.instance,bindings,controllerDirective)}}forEach(controllerDirectives,function(controllerDirective, name){var require=controllerDirective.require;if(controllerDirective.bindToController&&!isArray(require)&&isObject(require))extend(elementControllers[name].instance,getControllers(name,require,$element,elementControllers))});forEach(elementControllers,function(controller){var controllerInstance=controller.instance;if(isFunction(controllerInstance.$onChanges))try{controllerInstance.$onChanges(controller.bindingInfo.initialChanges)}catch(e$0){$exceptionHandler(e$0)}if(isFunction(controllerInstance.$onInit))try{controllerInstance.$onInit()}catch(e$1){$exceptionHandler(e$1)}if(isFunction(controllerInstance.$doCheck)){controllerScope.$watch(function(){controllerInstance.$doCheck()}); controllerInstance.$doCheck()}if(isFunction(controllerInstance.$onDestroy))controllerScope.$on("$destroy",function callOnDestroyHook(){controllerInstance.$onDestroy()})});for(i=0,ii=preLinkFns.length;i=0;i--){linkFn=postLinkFns[i];invokeLinkFn(linkFn,linkFn.isolateScope?isolateScope:scope,$element,attrs,linkFn.require&&getControllers(linkFn.directiveName,linkFn.require,$element,elementControllers),transcludeFn)}forEach(elementControllers,function(controller){var controllerInstance=controller.instance;if(isFunction(controllerInstance.$postLink))controllerInstance.$postLink()}); function controllersBoundTransclude(scope,cloneAttachFn,futureParentElement,slotName){var transcludeControllers;if(!isScope(scope)){slotName=futureParentElement;futureParentElement=cloneAttachFn;cloneAttachFn=scope;scope=undefined}if(hasElementTranscludeDirective)transcludeControllers=elementControllers;if(!futureParentElement)futureParentElement=hasElementTranscludeDirective?$element.parent():$element;if(slotName){var slotTranscludeFn=boundTranscludeFn.$$slots[slotName];if(slotTranscludeFn)return slotTranscludeFn(scope, cloneAttachFn,transcludeControllers,futureParentElement,scopeToChild);else if(isUndefined(slotTranscludeFn))throw $compileMinErr("noslot",'No parent directive that requires a transclusion with slot name "{0}". '+"Element: {1}",slotName,startingTag($element));}else return boundTranscludeFn(scope,cloneAttachFn,transcludeControllers,futureParentElement,scopeToChild)}}}function getControllers(directiveName,require,$element,elementControllers){var value;if(isString(require)){var match=require.match(REQUIRE_PREFIX_REGEXP); var name=require.substring(match[0].length);var inheritType=match[1]||match[3];var optional=match[2]==="?";if(inheritType==="^^")$element=$element.parent();else{value=elementControllers&&elementControllers[name];value=value&&value.instance}if(!value){var dataName="$"+name+"Controller";if(inheritType==="^^"&&$element[0]&&$element[0].nodeType===NODE_TYPE_DOCUMENT)value=null;else value=inheritType?$element.inheritedData(dataName):$element.data(dataName)}if(!value&&!optional)throw $compileMinErr("ctreq", "Controller '{0}', required by directive '{1}', can't be found!",name,directiveName);}else if(isArray(require)){value=[];for(var i=0,ii=require.length;idirective.priority)&&directive.restrict.indexOf(location)!==-1){if(startAttrName)directive=inherit(directive,{$$start:startAttrName,$$end:endAttrName});if(!directive.$$bindings){var bindings=directive.$$bindings=parseDirectiveBindings(directive,directive.name);if(isObject(bindings.isolateScope))directive.$$isolateBindings= bindings.isolateScope}tDirectives.push(directive);match=directive}}return match}function directiveIsMultiElement(name){if(hasDirectives.hasOwnProperty(name))for(var directive,directives=$injector.get(name+Suffix),i=0,ii=directives.length;i0?" ":"")+token}return values}function removeComments(jqNodes){jqNodes= jqLite(jqNodes);var i=jqNodes.length;if(i<=1)return jqNodes;while(i--){var node=jqNodes[i];if(node.nodeType===NODE_TYPE_COMMENT||node.nodeType===NODE_TYPE_TEXT&&node.nodeValue.trim()==="")splice.call(jqNodes,i,1)}return jqNodes}var $controllerMinErr=minErr("$controller");var CNTRL_REG=/^(\S+)(\s+as\s+([\w$]+))?$/;function identifierForController(controller,ident){if(ident&&isString(ident))return ident;if(isString(controller)){var match=CNTRL_REG.exec(controller);if(match)return match[3]}}function $ControllerProvider(){var controllers= {};this.has=function(name){return controllers.hasOwnProperty(name)};this.register=function(name,constructor){assertNotHasOwnProperty(name,"controller");if(isObject(name))extend(controllers,name);else controllers[name]=constructor};this.$get=["$injector",function($injector){return function $controller(expression,locals,later,ident){var instance,match,constructor,identifier;later=later===true;if(ident&&isString(ident))identifier=ident;if(isString(expression)){match=expression.match(CNTRL_REG);if(!match)throw $controllerMinErr("ctrlfmt", "Badly formed controller string '{0}'. "+"Must match `__name__ as __id__` or `__name__`.",expression);constructor=match[1];identifier=identifier||match[3];expression=controllers.hasOwnProperty(constructor)?controllers[constructor]:getter(locals.$scope,constructor,true);if(!expression)throw $controllerMinErr("ctrlreg","The controller with the name '{0}' is not registered.",constructor);assertArgFn(expression,constructor,true)}if(later){var controllerPrototype=(isArray(expression)?expression[expression.length- 1]:expression).prototype;instance=Object.create(controllerPrototype||null);if(identifier)addIdentifier(locals,identifier,instance,constructor||expression.name);return extend(function $controllerInit(){var result=$injector.invoke(expression,instance,locals,constructor);if(result!==instance&&(isObject(result)||isFunction(result))){instance=result;if(identifier)addIdentifier(locals,identifier,instance,constructor||expression.name)}return instance},{instance:instance,identifier:identifier})}instance= $injector.instantiate(expression,locals,constructor);if(identifier)addIdentifier(locals,identifier,instance,constructor||expression.name);return instance};function addIdentifier(locals,identifier,instance,name){if(!(locals&&isObject(locals.$scope)))throw minErr("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",name,identifier);locals.$scope[identifier]=instance}}]}function $DocumentProvider(){this.$get=["$window",function(window){return jqLite(window.document)}]} function $$IsDocumentHiddenProvider(){this.$get=["$document","$rootScope",function($document,$rootScope){var doc=$document[0];var hidden=doc&&doc.hidden;$document.on("visibilitychange",changeListener);$rootScope.$on("$destroy",function(){$document.off("visibilitychange",changeListener)});function changeListener(){hidden=doc.hidden}return function(){return hidden}}]}function $ExceptionHandlerProvider(){this.$get=["$log",function($log){return function(exception,cause){$log.error.apply($log,arguments)}}]} var $$ForceReflowProvider=function(){this.$get=["$document",function($document){return function(domNode){if(domNode){if(!domNode.nodeType&&domNode instanceof jqLite)domNode=domNode[0]}else domNode=$document[0].body;return domNode.offsetWidth+1}}]};var APPLICATION_JSON="application/json";var CONTENT_TYPE_APPLICATION_JSON={"Content-Type":APPLICATION_JSON+";charset\x3dutf-8"};var JSON_START=/^\[|^\{(?!\{)/;var JSON_ENDS={"[":/]$/,"{":/}$/};var JSON_PROTECTION_PREFIX=/^\)]\}',?\n/;var $httpMinErr=minErr("$http"); function serializeValue(v){if(isObject(v))return isDate(v)?v.toISOString():toJson(v);return v}function $HttpParamSerializerProvider(){this.$get=function(){return function ngParamSerializer(params){if(!params)return"";var parts=[];forEachSorted(params,function(value,key){if(value===null||isUndefined(value)||isFunction(value))return;if(isArray(value))forEach(value,function(v){parts.push(encodeUriQuery(key)+"\x3d"+encodeUriQuery(serializeValue(v)))});else parts.push(encodeUriQuery(key)+"\x3d"+encodeUriQuery(serializeValue(value)))}); return parts.join("\x26")}}}function $HttpParamSerializerJQLikeProvider(){this.$get=function(){return function jQueryLikeParamSerializer(params){if(!params)return"";var parts=[];serialize(params,"",true);return parts.join("\x26");function serialize(toSerialize,prefix,topLevel){if(isArray(toSerialize))forEach(toSerialize,function(value,index){serialize(value,prefix+"["+(isObject(value)?index:"")+"]")});else if(isObject(toSerialize)&&!isDate(toSerialize))forEachSorted(toSerialize,function(value,key){serialize(value, prefix+(topLevel?"":"[")+key+(topLevel?"":"]"))});else{if(isFunction(toSerialize))toSerialize=toSerialize();parts.push(encodeUriQuery(prefix)+"\x3d"+(toSerialize==null?"":encodeUriQuery(serializeValue(toSerialize))))}}}}}function defaultHttpResponseTransform(data,headers){if(isString(data)){var tempData=data.replace(JSON_PROTECTION_PREFIX,"").trim();if(tempData){var contentType=headers("Content-Type");var hasJsonContentType=contentType&&contentType.indexOf(APPLICATION_JSON)===0;if(hasJsonContentType|| isJsonLike(tempData))try{data=fromJson(tempData)}catch(e){if(!hasJsonContentType)return data;throw $httpMinErr("baddata",'Data must be a valid JSON object. Received: "{0}". '+'Parse error: "{1}"',data,e);}}}return data}function isJsonLike(str){var jsonStart=str.match(JSON_START);return jsonStart&&JSON_ENDS[jsonStart[0]].test(str)}function parseHeaders(headers){var parsed=createMap(),i;function fillInParsed(key,val){if(key)parsed[key]=parsed[key]?parsed[key]+", "+val:val}if(isString(headers))forEach(headers.split("\n"), function(line){i=line.indexOf(":");fillInParsed(lowercase(trim(line.substr(0,i))),trim(line.substr(i+1)))});else if(isObject(headers))forEach(headers,function(headerVal,headerKey){fillInParsed(lowercase(headerKey),trim(headerVal))});return parsed}function headersGetter(headers){var headersObj;return function(name){if(!headersObj)headersObj=parseHeaders(headers);if(name){var value=headersObj[lowercase(name)];if(value===undefined)value=null;return value}return headersObj}}function transformData(data, headers,status,fns){if(isFunction(fns))return fns(data,headers,status);forEach(fns,function(fn){data=fn(data,headers,status)});return data}function isSuccess(status){return 200<=status&&status<300}function $HttpProvider(){var defaults=this.defaults={transformResponse:[defaultHttpResponseTransform],transformRequest:[function(d){return isObject(d)&&!isFile(d)&&!isBlob(d)&&!isFormData(d)?toJson(d):d}],headers:{common:{"Accept":"application/json, text/plain, */*"},post:shallowCopy(CONTENT_TYPE_APPLICATION_JSON), put:shallowCopy(CONTENT_TYPE_APPLICATION_JSON),patch:shallowCopy(CONTENT_TYPE_APPLICATION_JSON)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer",jsonpCallbackParam:"callback"};var useApplyAsync=false;this.useApplyAsync=function(value){if(isDefined(value)){useApplyAsync=!!value;return this}return useApplyAsync};var interceptorFactories=this.interceptors=[];var xsrfTrustedOrigins=this.xsrfTrustedOrigins=[];Object.defineProperty(this,"xsrfWhitelistedOrigins", {get:function(){return this.xsrfTrustedOrigins},set:function(origins){this.xsrfTrustedOrigins=origins}});this.$get=["$browser","$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector","$sce",function($browser,$httpBackend,$$cookieReader,$cacheFactory,$rootScope,$q,$injector,$sce){var defaultCache=$cacheFactory("$http");defaults.paramSerializer=isString(defaults.paramSerializer)?$injector.get(defaults.paramSerializer):defaults.paramSerializer;var reversedInterceptors=[];forEach(interceptorFactories, function(interceptorFactory){reversedInterceptors.unshift(isString(interceptorFactory)?$injector.get(interceptorFactory):$injector.invoke(interceptorFactory))});var urlIsAllowedOrigin=urlIsAllowedOriginFactory(xsrfTrustedOrigins);function $http(requestConfig){if(!isObject(requestConfig))throw minErr("$http")("badreq","Http request configuration must be an object. Received: {0}",requestConfig);if(!isString($sce.valueOf(requestConfig.url)))throw minErr("$http")("badreq","Http request configuration url must be a string or a $sce trusted object. Received: {0}", requestConfig.url);var config=extend({method:"get",transformRequest:defaults.transformRequest,transformResponse:defaults.transformResponse,paramSerializer:defaults.paramSerializer,jsonpCallbackParam:defaults.jsonpCallbackParam},requestConfig);config.headers=mergeHeaders(requestConfig);config.method=uppercase(config.method);config.paramSerializer=isString(config.paramSerializer)?$injector.get(config.paramSerializer):config.paramSerializer;$browser.$$incOutstandingRequestCount("$http");var requestInterceptors= [];var responseInterceptors=[];var promise=$q.resolve(config);forEach(reversedInterceptors,function(interceptor){if(interceptor.request||interceptor.requestError)requestInterceptors.unshift(interceptor.request,interceptor.requestError);if(interceptor.response||interceptor.responseError)responseInterceptors.push(interceptor.response,interceptor.responseError)});promise=chainInterceptors(promise,requestInterceptors);promise=promise.then(serverRequest);promise=chainInterceptors(promise,responseInterceptors); promise=promise.finally(completeOutstandingRequest);return promise;function chainInterceptors(promise,interceptors){for(var i=0,ii=interceptors.length;i=-1?status:0;(isSuccess(status)?deferred.resolve:deferred.reject)({data:response,status:status,headers:headersGetter(headers),config:config,statusText:statusText,xhrStatus:xhrStatus})}function resolvePromiseWithResult(result){resolvePromise(result.data,result.status,shallowCopy(result.headers()),result.statusText,result.xhrStatus)}function removePendingReq(){var idx=$http.pendingRequests.indexOf(config);if(idx!==-1)$http.pendingRequests.splice(idx,1)}}function buildUrl(url, serializedParams){if(serializedParams.length>0)url+=(url.indexOf("?")===-1?"?":"\x26")+serializedParams;return url}function sanitizeJsonpCallbackParam(url,cbKey){var parts=url.split("?");if(parts.length>2)throw $httpMinErr("badjsonp",'Illegal use more than one "?", in url, "{1}"',url);var params=parseKeyValue(parts[1]);forEach(params,function(value,key){if(value==="JSON_CALLBACK")throw $httpMinErr("badjsonp",'Illegal use of JSON_CALLBACK in url, "{0}"',url);if(key===cbKey)throw $httpMinErr("badjsonp", 'Illegal use of callback param, "{0}", in url, "{1}"',cbKey,url);});url+=(url.indexOf("?")===-1?"?":"\x26")+cbKey+"\x3dJSON_CALLBACK";return url}}]}function $xhrFactoryProvider(){this.$get=function(){return function createXhr(){return new window.XMLHttpRequest}}}function $HttpBackendProvider(){this.$get=["$browser","$jsonpCallbacks","$document","$xhrFactory",function($browser,$jsonpCallbacks,$document,$xhrFactory){return createHttpBackend($browser,$xhrFactory,$browser.defer,$jsonpCallbacks,$document[0])}]} function createHttpBackend($browser,createXhr,$browserDefer,callbacks,rawDocument){return function(method,url,post,callback,headers,timeout,withCredentials,responseType,eventHandlers,uploadEventHandlers){url=url||$browser.url();if(lowercase(method)==="jsonp"){var callbackPath=callbacks.createCallback(url);var jsonpDone=jsonpReq(url,callbackPath,function(status,text){var response=status===200&&callbacks.getResponse(callbackPath);completeRequest(callback,status,response,"",text,"complete");callbacks.removeCallback(callbackPath)})}else{var xhr= createXhr(method,url);var abortedByTimeout=false;xhr.open(method,url,true);forEach(headers,function(value,key){if(isDefined(value))xhr.setRequestHeader(key,value)});xhr.onload=function requestLoaded(){var statusText=xhr.statusText||"";var response="response"in xhr?xhr.response:xhr.responseText;var status=xhr.status===1223?204:xhr.status;if(status===0)status=response?200:urlResolve(url).protocol==="file"?404:0;completeRequest(callback,status,response,xhr.getAllResponseHeaders(),statusText,"complete")}; var requestError=function(){completeRequest(callback,-1,null,null,"","error")};var requestAborted=function(){completeRequest(callback,-1,null,null,"",abortedByTimeout?"timeout":"abort")};var requestTimeout=function(){completeRequest(callback,-1,null,null,"","timeout")};xhr.onerror=requestError;xhr.ontimeout=requestTimeout;xhr.onabort=requestAborted;forEach(eventHandlers,function(value,key){xhr.addEventListener(key,value)});forEach(uploadEventHandlers,function(value,key){xhr.upload.addEventListener(key, value)});if(withCredentials)xhr.withCredentials=true;if(responseType)try{xhr.responseType=responseType}catch(e){if(responseType!=="json")throw e;}xhr.send(isUndefined(post)?null:post)}if(timeout>0)var timeoutId=$browserDefer(function(){timeoutRequest("timeout")},timeout);else if(isPromiseLike(timeout))timeout.then(function(){timeoutRequest(isDefined(timeout.$$timeoutId)?"timeout":"abort")});function timeoutRequest(reason){abortedByTimeout=reason==="timeout";if(jsonpDone)jsonpDone();if(xhr)xhr.abort()} function completeRequest(callback,status,response,headersString,statusText,xhrStatus){if(isDefined(timeoutId))$browserDefer.cancel(timeoutId);jsonpDone=xhr=null;callback(status,response,headersString,statusText,xhrStatus)}};function jsonpReq(url,callbackPath,done){url=url.replace("JSON_CALLBACK",callbackPath);var script=rawDocument.createElement("script"),callback=null;script.type="text/javascript";script.src=url;script.async=true;callback=function(event){script.removeEventListener("load",callback); script.removeEventListener("error",callback);rawDocument.body.removeChild(script);script=null;var status=-1;var text="unknown";if(event){if(event.type==="load"&&!callbacks.wasCalled(callbackPath))event={type:"error"};text=event.type;status=event.type==="error"?404:200}if(done)done(status,text)};script.addEventListener("load",callback);script.addEventListener("error",callback);rawDocument.body.appendChild(script);return callback}}var $interpolateMinErr=angular.$interpolateMinErr=minErr("$interpolate"); $interpolateMinErr.throwNoconcat=function(text){throw $interpolateMinErr("noconcat","Error while interpolating: {0}\nStrict Contextual Escaping disallows "+"interpolations that concatenate multiple expressions when a trusted value is "+"required. See https://docs.angularjs.xlts.dev/api/ng/service/$sce",text);};$interpolateMinErr.interr=function(text,err){return $interpolateMinErr("interr","Can't interpolate: {0}\n{1}",text,err.toString())};function $InterpolateProvider(){var startSymbol="{{";var endSymbol= "}}";this.startSymbol=function(value){if(value){startSymbol=value;return this}return startSymbol};this.endSymbol=function(value){if(value){endSymbol=value;return this}return endSymbol};this.$get=["$parse","$exceptionHandler","$sce",function($parse,$exceptionHandler,$sce){var startSymbolLength=startSymbol.length,endSymbolLength=endSymbol.length,escapedStartRegexp=new RegExp(startSymbol.replace(/./g,escape),"g"),escapedEndRegexp=new RegExp(endSymbol.replace(/./g,escape),"g");function escape(ch){return"\\\\\\"+ ch}function unescapeText(text){return text.replace(escapedStartRegexp,startSymbol).replace(escapedEndRegexp,endSymbol)}function constantWatchDelegate(scope,listener,objectEquality,constantInterp){var unwatch=scope.$watch(function constantInterpolateWatch(scope){unwatch();return constantInterp(scope)},listener,objectEquality);return unwatch}function $interpolate(text,mustHaveExpression,trustedContext,allOrNothing){var contextAllowsConcatenation=trustedContext===$sce.URL||trustedContext===$sce.MEDIA_URL; if(!text.length||text.indexOf(startSymbol)===-1){if(mustHaveExpression)return;var unescapedText=unescapeText(text);if(contextAllowsConcatenation)unescapedText=$sce.getTrusted(trustedContext,unescapedText);var constantInterp=valueFn(unescapedText);constantInterp.exp=text;constantInterp.expressions=[];constantInterp.$$watchDelegate=constantWatchDelegate;return constantInterp}allOrNothing=!!allOrNothing;var startIndex,endIndex,index=0,expressions=[],parseFns,textLength=text.length,exp,concat=[],expressionPositions= [],singleExpression;while(index1)$interpolateMinErr.throwNoconcat(text);return concat.join("")};return extend(function interpolationFn(context){var i=0;var ii=expressions.length;var values=new Array(ii);try{for(;i4,args=hasParams?sliceArgs(arguments,4):[],iteration=0,skipApply=isDefined(invokeApply)&&!invokeApply,deferred=(skipApply?$$q:$q).defer(),promise=deferred.promise;count=isDefined(count)?count:0;function callback(){if(!hasParams)fn(iteration);else fn.apply(null,args)}function tick(){if(skipApply)$browser.defer(callback);else $rootScope.$evalAsync(callback); deferred.notify(iteration++);if(count>0&&iteration>=count){deferred.resolve(iteration);clearIntervalFn(promise.$$intervalId)}if(!skipApply)$rootScope.$apply()}promise.$$intervalId=setIntervalFn(tick,delay,deferred,skipApply);return promise}}}]}var $jsonpCallbacksProvider=function(){this.$get=function(){var callbacks=angular.callbacks;var callbackMap={};function createCallback(callbackId){var callback=function(data){callback.data=data;callback.called=true};callback.id=callbackId;return callback}return{createCallback:function(url){var callbackId= "_"+(callbacks.$$counter++).toString(36);var callbackPath="angular.callbacks."+callbackId;var callback=createCallback(callbackId);callbackMap[callbackPath]=callbacks[callbackId]=callback;return callbackPath},wasCalled:function(callbackPath){return callbackMap[callbackPath].called},getResponse:function(callbackPath){return callbackMap[callbackPath].data},removeCallback:function(callbackPath){var callback=callbackMap[callbackPath];delete callbacks[callback.id];delete callbackMap[callbackPath]}}}};var PATH_MATCH= /^([^?#]*)(\?([^#]*))?(#(.*))?$/,DEFAULT_PORTS={"http":80,"https":443,"ftp":21};var $locationMinErr=minErr("$location");function encodePath(path){var segments=path.split("/"),i=segments.length;while(i--)segments[i]=encodeUriSegment(segments[i].replace(/%2F/g,"/"));return segments.join("/")}function decodePath(path,html5Mode){var segments=path.split("/"),i=segments.length;while(i--){segments[i]=decodeURIComponent(segments[i]);if(html5Mode)segments[i]=segments[i].replace(/\//g,"%2F")}return segments.join("/")} function normalizePath(pathValue,searchValue,hashValue){var search=toKeyValue(searchValue),hash=hashValue?"#"+encodeUriSegment(hashValue):"",path=encodePath(pathValue);return path+(search?"?"+search:"")+hash}function parseAbsoluteUrl(absoluteUrl,locationObj){var parsedUrl=urlResolve(absoluteUrl);locationObj.$$protocol=parsedUrl.protocol;locationObj.$$host=parsedUrl.hostname;locationObj.$$port=toInt(parsedUrl.port)||DEFAULT_PORTS[parsedUrl.protocol]||null}var DOUBLE_SLASH_REGEX=/^\s*[\\/]{2,}/;function parseAppUrl(url, locationObj,html5Mode){if(DOUBLE_SLASH_REGEX.test(url))throw $locationMinErr("badpath",'Invalid url "{0}".',url);var prefixed=url.charAt(0)!=="/";if(prefixed)url="/"+url;var match=urlResolve(url);var path=prefixed&&match.pathname.charAt(0)==="/"?match.pathname.substring(1):match.pathname;locationObj.$$path=decodePath(path,html5Mode);locationObj.$$search=parseKeyValue(match.search);locationObj.$$hash=decodeURIComponent(match.hash);if(locationObj.$$path&&locationObj.$$path.charAt(0)!=="/")locationObj.$$path= "/"+locationObj.$$path}function startsWith(str,search){return str.slice(0,search.length)===search}function stripBaseUrl(base,url){if(startsWith(url,base))return url.substr(base.length)}function stripHash(url){var index=url.indexOf("#");return index===-1?url:url.substr(0,index)}function stripFile(url){return url.substr(0,stripHash(url).lastIndexOf("/")+1)}function serverBase(url){return url.substring(0,url.indexOf("/",url.indexOf("//")+2))}function LocationHtml5Url(appBase,appBaseNoFile,basePrefix){this.$$html5= true;basePrefix=basePrefix||"";parseAbsoluteUrl(appBase,this);this.$$parse=function(url){var pathUrl=stripBaseUrl(appBaseNoFile,url);if(!isString(pathUrl))throw $locationMinErr("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',url,appBaseNoFile);parseAppUrl(pathUrl,this,true);if(!this.$$path)this.$$path="/";this.$$compose()};this.$$normalizeUrl=function(url){return appBaseNoFile+url.substr(1)};this.$$parseLinkUrl=function(url,relHref){if(relHref&&relHref[0]==="#"){this.hash(relHref.slice(1)); return true}var appUrl,prevAppUrl;var rewrittenUrl;if(isDefined(appUrl=stripBaseUrl(appBase,url))){prevAppUrl=appUrl;if(basePrefix&&isDefined(appUrl=stripBaseUrl(basePrefix,appUrl)))rewrittenUrl=appBaseNoFile+(stripBaseUrl("/",appUrl)||appUrl);else rewrittenUrl=appBase+prevAppUrl}else if(isDefined(appUrl=stripBaseUrl(appBaseNoFile,url)))rewrittenUrl=appBaseNoFile+appUrl;else if(appBaseNoFile===url+"/")rewrittenUrl=appBaseNoFile;if(rewrittenUrl)this.$$parse(rewrittenUrl);return!!rewrittenUrl}}function LocationHashbangUrl(appBase, appBaseNoFile,hashPrefix){parseAbsoluteUrl(appBase,this);this.$$parse=function(url){var withoutBaseUrl=stripBaseUrl(appBase,url)||stripBaseUrl(appBaseNoFile,url);var withoutHashUrl;if(!isUndefined(withoutBaseUrl)&&withoutBaseUrl.charAt(0)==="#"){withoutHashUrl=stripBaseUrl(hashPrefix,withoutBaseUrl);if(isUndefined(withoutHashUrl))withoutHashUrl=withoutBaseUrl}else if(this.$$html5)withoutHashUrl=withoutBaseUrl;else{withoutHashUrl="";if(isUndefined(withoutBaseUrl)){appBase=url;this.replace()}}parseAppUrl(withoutHashUrl, this,false);this.$$path=removeWindowsDriveName(this.$$path,withoutHashUrl,appBase);this.$$compose();function removeWindowsDriveName(path,url,base){var windowsFilePathExp=/^\/[A-Z]:(\/.*)/;var firstPathSegmentMatch;if(startsWith(url,base))url=url.replace(base,"");if(windowsFilePathExp.exec(url))return path;firstPathSegmentMatch=windowsFilePathExp.exec(path);return firstPathSegmentMatch?firstPathSegmentMatch[1]:path}};this.$$normalizeUrl=function(url){return appBase+(url?hashPrefix+url:"")};this.$$parseLinkUrl= function(url,relHref){if(stripHash(appBase)===stripHash(url)){this.$$parse(url);return true}return false}}function LocationHashbangInHtml5Url(appBase,appBaseNoFile,hashPrefix){this.$$html5=true;LocationHashbangUrl.apply(this,arguments);this.$$parseLinkUrl=function(url,relHref){if(relHref&&relHref[0]==="#"){this.hash(relHref.slice(1));return true}var rewrittenUrl;var appUrl;if(appBase===stripHash(url))rewrittenUrl=url;else if(appUrl=stripBaseUrl(appBaseNoFile,url))rewrittenUrl=appBase+hashPrefix+appUrl; else if(appBaseNoFile===url+"/")rewrittenUrl=appBaseNoFile;if(rewrittenUrl)this.$$parse(rewrittenUrl);return!!rewrittenUrl};this.$$normalizeUrl=function(url){return appBase+hashPrefix+url}}var locationPrototype={$$absUrl:"",$$html5:false,$$replace:false,$$compose:function(){this.$$url=normalizePath(this.$$path,this.$$search,this.$$hash);this.$$absUrl=this.$$normalizeUrl(this.$$url);this.$$urlUpdatedByLocation=true},absUrl:locationGetter("$$absUrl"),url:function(url){if(isUndefined(url))return this.$$url; var match=PATH_MATCH.exec(url);if(match[1]||url==="")this.path(decodeURIComponent(match[1]));if(match[2]||match[1]||url==="")this.search(match[3]||"");this.hash(match[5]||"");return this},protocol:locationGetter("$$protocol"),host:locationGetter("$$host"),port:locationGetter("$$port"),path:locationGetterSetter("$$path",function(path){path=path!==null?path.toString():"";return path.charAt(0)==="/"?path:"/"+path}),search:function(search,paramValue){switch(arguments.length){case 0:return this.$$search; case 1:if(isString(search)||isNumber(search)){search=search.toString();this.$$search=parseKeyValue(search)}else if(isObject(search)){search=copy(search,{});forEach(search,function(value,key){if(value==null)delete search[key]});this.$$search=search}else throw $locationMinErr("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");break;default:if(isUndefined(paramValue)||paramValue===null)delete this.$$search[search];else this.$$search[search]=paramValue}this.$$compose(); return this},hash:locationGetterSetter("$$hash",function(hash){return hash!==null?hash.toString():""}),replace:function(){this.$$replace=true;return this}};forEach([LocationHashbangInHtml5Url,LocationHashbangUrl,LocationHtml5Url],function(Location){Location.prototype=Object.create(locationPrototype);Location.prototype.state=function(state){if(!arguments.length)return this.$$state;if(Location!==LocationHtml5Url||!this.$$html5)throw $locationMinErr("nostate","History API state support is available only "+ "in HTML5 mode and only in browsers supporting HTML5 History API");this.$$state=isUndefined(state)?null:state;this.$$urlUpdatedByLocation=true;return this}});function locationGetter(property){return function(){return this[property]}}function locationGetterSetter(property,preprocess){return function(value){if(isUndefined(value))return this[property];this[property]=preprocess(value);this.$$compose();return this}}function $LocationProvider(){var hashPrefix="!",html5Mode={enabled:false,requireBase:true, rewriteLinks:true};this.hashPrefix=function(prefix){if(isDefined(prefix)){hashPrefix=prefix;return this}else return hashPrefix};this.html5Mode=function(mode){if(isBoolean(mode)){html5Mode.enabled=mode;return this}else if(isObject(mode)){if(isBoolean(mode.enabled))html5Mode.enabled=mode.enabled;if(isBoolean(mode.requireBase))html5Mode.requireBase=mode.requireBase;if(isBoolean(mode.rewriteLinks)||isString(mode.rewriteLinks))html5Mode.rewriteLinks=mode.rewriteLinks;return this}else return html5Mode}; this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function($rootScope,$browser,$sniffer,$rootElement,$window){var $location,LocationMode,baseHref=$browser.baseHref(),initialUrl=$browser.url(),appBase;if(html5Mode.enabled){if(!baseHref&&html5Mode.requireBase)throw $locationMinErr("nobase","$location in HTML5 mode requires a \x3cbase\x3e tag to be present!");appBase=serverBase(initialUrl)+(baseHref||"/");LocationMode=$sniffer.history?LocationHtml5Url:LocationHashbangInHtml5Url}else{appBase= stripHash(initialUrl);LocationMode=LocationHashbangUrl}var appBaseNoFile=stripFile(appBase);$location=new LocationMode(appBase,appBaseNoFile,"#"+hashPrefix);$location.$$parseLinkUrl(initialUrl,initialUrl);$location.$$state=$browser.state();var IGNORE_URI_REGEXP=/^\s*(javascript|mailto):/i;function urlsEqual(a,b){return a===b||urlResolve(a).href===urlResolve(b).href}function setBrowserUrlWithFallback(url,replace,state){var oldUrl=$location.url();var oldState=$location.$$state;try{$browser.url(url, replace,state);$location.$$state=$browser.state()}catch(e){$location.url(oldUrl);$location.$$state=oldState;throw e;}}$rootElement.on("click",function(event){var rewriteLinks=html5Mode.rewriteLinks;if(!rewriteLinks||event.ctrlKey||event.metaKey||event.shiftKey||event.which===2||event.button===2)return;var elm=jqLite(event.target);while(nodeName_(elm[0])!=="a")if(elm[0]===$rootElement[0]||!(elm=elm.parent())[0])return;if(isString(rewriteLinks)&&isUndefined(elm.attr(rewriteLinks)))return;var absHref= elm.prop("href");var relHref=elm.attr("href")||elm.attr("xlink:href");if(isObject(absHref)&&absHref.toString()==="[object SVGAnimatedString]")absHref=urlResolve(absHref.animVal).href;if(IGNORE_URI_REGEXP.test(absHref))return;if(absHref&&!elm.attr("target")&&!event.isDefaultPrevented())if($location.$$parseLinkUrl(absHref,relHref)){event.preventDefault();if($location.absUrl()!==$browser.url())$rootScope.$apply()}});if($location.absUrl()!==initialUrl)$browser.url($location.absUrl(),true);var initializing= true;$browser.onUrlChange(function(newUrl,newState){if(!startsWith(newUrl,appBaseNoFile)){$window.location.href=newUrl;return}$rootScope.$evalAsync(function(){var oldUrl=$location.absUrl();var oldState=$location.$$state;var defaultPrevented;$location.$$parse(newUrl);$location.$$state=newState;defaultPrevented=$rootScope.$broadcast("$locationChangeStart",newUrl,oldUrl,newState,oldState).defaultPrevented;if($location.absUrl()!==newUrl)return;if(defaultPrevented){$location.$$parse(oldUrl);$location.$$state= oldState;setBrowserUrlWithFallback(oldUrl,false,oldState)}else{initializing=false;afterLocationChange(oldUrl,oldState)}});if(!$rootScope.$$phase)$rootScope.$digest()});$rootScope.$watch(function $locationWatch(){if(initializing||$location.$$urlUpdatedByLocation){$location.$$urlUpdatedByLocation=false;var oldUrl=$browser.url();var newUrl=$location.absUrl();var oldState=$browser.state();var currentReplace=$location.$$replace;var urlOrStateChanged=!urlsEqual(oldUrl,newUrl)||$location.$$html5&&$sniffer.history&& oldState!==$location.$$state;if(initializing||urlOrStateChanged){initializing=false;$rootScope.$evalAsync(function(){var newUrl=$location.absUrl();var defaultPrevented=$rootScope.$broadcast("$locationChangeStart",newUrl,oldUrl,$location.$$state,oldState).defaultPrevented;if($location.absUrl()!==newUrl)return;if(defaultPrevented){$location.$$parse(oldUrl);$location.$$state=oldState}else{if(urlOrStateChanged)setBrowserUrlWithFallback(newUrl,currentReplace,oldState===$location.$$state?null:$location.$$state); afterLocationChange(oldUrl,oldState)}})}}$location.$$replace=false});return $location;function afterLocationChange(oldUrl,oldState){$rootScope.$broadcast("$locationChangeSuccess",$location.absUrl(),oldUrl,$location.$$state,oldState)}}]}function $LogProvider(){var debug=true,self=this;this.debugEnabled=function(flag){if(isDefined(flag)){debug=flag;return this}else return debug};this.$get=["$window",function($window){var formatStackTrace=msie||/\bEdge\//.test($window.navigator&&$window.navigator.userAgent); return{log:consoleLog("log"),info:consoleLog("info"),warn:consoleLog("warn"),error:consoleLog("error"),debug:function(){var fn=consoleLog("debug");return function(){if(debug)fn.apply(self,arguments)}}()};function formatError(arg){if(isError(arg))if(arg.stack&&formatStackTrace)arg=arg.message&&arg.stack.indexOf(arg.message)===-1?"Error: "+arg.message+"\n"+arg.stack:arg.stack;else if(arg.sourceURL)arg=arg.message+"\n"+arg.sourceURL+":"+arg.line;return arg}function consoleLog(type){var console=$window.console|| {},logFn=console[type]||console.log||noop;return function(){var args=[];forEach(arguments,function(arg){args.push(formatError(arg))});return Function.prototype.apply.call(logFn,console,args)}}}]}var $parseMinErr=minErr("$parse");var objectValueOf={}.constructor.prototype.valueOf;function getStringValue(name){return name+""}var OPERATORS=createMap();forEach("+ - * / % \x3d\x3d\x3d !\x3d\x3d \x3d\x3d !\x3d \x3c \x3e \x3c\x3d \x3e\x3d \x26\x26 || ! \x3d |".split(" "),function(operator){OPERATORS[operator]= true});var ESCAPE={"n":"\n","f":"\f","r":"\r","t":"\t","v":"\v","'":"'",'"':'"'};var Lexer=function Lexer(options){this.options=options};Lexer.prototype={constructor:Lexer,lex:function(text){this.text=text;this.index=0;this.tokens=[];while(this.index=55296&&cp1<=56319&&cp2>=56320&&cp2<=57343)return ch+peek;return ch},isExpOperator:function(ch){return ch==="-"||ch==="+"||this.isNumber(ch)},throwError:function(error,start,end){end=end||this.index;var colStr=isDefined(start)?"s "+start+"-"+this.index+" ["+this.text.substring(start,end)+"]":" "+end;throw $parseMinErr("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",error,colStr,this.text);},readNumber:function(){var number= "";var start=this.index;while(this.index0&&!this.peek("}",")",";","]"))body.push(this.expressionStatement()); if(!this.expect(";"))return{type:AST.Program,body:body}}},expressionStatement:function(){return{type:AST.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){var left=this.expression();while(this.expect("|"))left=this.filter(left);return left},expression:function(){return this.assignment()},assignment:function(){var result=this.ternary();if(this.expect("\x3d")){if(!isAssignable(result))throw $parseMinErr("lval","Trying to assign a value to a non l-value");result={type:AST.AssignmentExpression, left:result,right:this.assignment(),operator:"\x3d"}}return result},ternary:function(){var test=this.logicalOR();var alternate;var consequent;if(this.expect("?")){alternate=this.expression();if(this.consume(":")){consequent=this.expression();return{type:AST.ConditionalExpression,test:test,alternate:alternate,consequent:consequent}}}return test},logicalOR:function(){var left=this.logicalAND();while(this.expect("||"))left={type:AST.LogicalExpression,operator:"||",left:left,right:this.logicalAND()}; return left},logicalAND:function(){var left=this.equality();while(this.expect("\x26\x26"))left={type:AST.LogicalExpression,operator:"\x26\x26",left:left,right:this.equality()};return left},equality:function(){var left=this.relational();var token;while(token=this.expect("\x3d\x3d","!\x3d","\x3d\x3d\x3d","!\x3d\x3d"))left={type:AST.BinaryExpression,operator:token.text,left:left,right:this.relational()};return left},relational:function(){var left=this.additive();var token;while(token=this.expect("\x3c", "\x3e","\x3c\x3d","\x3e\x3d"))left={type:AST.BinaryExpression,operator:token.text,left:left,right:this.additive()};return left},additive:function(){var left=this.multiplicative();var token;while(token=this.expect("+","-"))left={type:AST.BinaryExpression,operator:token.text,left:left,right:this.multiplicative()};return left},multiplicative:function(){var left=this.unary();var token;while(token=this.expect("*","/","%"))left={type:AST.BinaryExpression,operator:token.text,left:left,right:this.unary()}; return left},unary:function(){var token;if(token=this.expect("+","-","!"))return{type:AST.UnaryExpression,operator:token.text,prefix:true,argument:this.unary()};else return this.primary()},primary:function(){var primary;if(this.expect("(")){primary=this.filterChain();this.consume(")")}else if(this.expect("["))primary=this.arrayDeclaration();else if(this.expect("{"))primary=this.object();else if(this.selfReferential.hasOwnProperty(this.peek().text))primary=copy(this.selfReferential[this.consume().text]); else if(this.options.literals.hasOwnProperty(this.peek().text))primary={type:AST.Literal,value:this.options.literals[this.consume().text]};else if(this.peek().identifier)primary=this.identifier();else if(this.peek().constant)primary=this.constant();else this.throwError("not a primary expression",this.peek());var next;while(next=this.expect("(","[","."))if(next.text==="("){primary={type:AST.CallExpression,callee:primary,arguments:this.parseArguments()};this.consume(")")}else if(next.text==="["){primary= {type:AST.MemberExpression,object:primary,property:this.expression(),computed:true};this.consume("]")}else if(next.text===".")primary={type:AST.MemberExpression,object:primary,property:this.identifier(),computed:false};else this.throwError("IMPOSSIBLE");return primary},filter:function(baseExpression){var args=[baseExpression];var result={type:AST.CallExpression,callee:this.identifier(),arguments:args,filter:true};while(this.expect(":"))args.push(this.expression());return result},parseArguments:function(){var args= [];if(this.peekToken().text!==")"){do args.push(this.filterChain());while(this.expect(","))}return args},identifier:function(){var token=this.consume();if(!token.identifier)this.throwError("is not a valid identifier",token);return{type:AST.Identifier,name:token.text}},constant:function(){return{type:AST.Literal,value:this.consume().value}},arrayDeclaration:function(){var elements=[];if(this.peekToken().text!=="]"){do{if(this.peek("]"))break;elements.push(this.expression())}while(this.expect(",")) }this.consume("]");return{type:AST.ArrayExpression,elements:elements}},object:function(){var properties=[],property;if(this.peekToken().text!=="}"){do{if(this.peek("}"))break;property={type:AST.Property,kind:"init"};if(this.peek().constant){property.key=this.constant();property.computed=false;this.consume(":");property.value=this.expression()}else if(this.peek().identifier){property.key=this.identifier();property.computed=false;if(this.peek(":")){this.consume(":");property.value=this.expression()}else property.value= property.key}else if(this.peek("[")){this.consume("[");property.key=this.expression();this.consume("]");property.computed=true;this.consume(":");property.value=this.expression()}else this.throwError("invalid key",this.peek());properties.push(property)}while(this.expect(","))}this.consume("}");return{type:AST.ObjectExpression,properties:properties}},throwError:function(msg,token){throw $parseMinErr("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",token.text, msg,token.index+1,this.text,this.text.substring(token.index));},consume:function(e1){if(this.tokens.length===0)throw $parseMinErr("ueoe","Unexpected end of expression: {0}",this.text);var token=this.expect(e1);if(!token)this.throwError("is unexpected, expecting ["+e1+"]",this.peek());return token},peekToken:function(){if(this.tokens.length===0)throw $parseMinErr("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(e1,e2,e3,e4){return this.peekAhead(0,e1,e2,e3, e4)},peekAhead:function(i,e1,e2,e3,e4){if(this.tokens.length>i){var token=this.tokens[i];var t=token.text;if(t===e1||t===e2||t===e3||t===e4||!e1&&!e2&&!e3&&!e4)return token}return false},expect:function(e1,e2,e3,e4){var token=this.peek(e1,e2,e3,e4);if(token){this.tokens.shift();return token}return false},selfReferential:{"this":{type:AST.ThisExpression},"$locals":{type:AST.LocalsExpression}}};function ifDefined(v,d){return typeof v!=="undefined"?v:d}function plusFn(l,r){if(typeof l==="undefined")return r; if(typeof r==="undefined")return l;return l+r}function isStateless($filter,filterName){var fn=$filter(filterName);return!fn.$stateful}var PURITY_ABSOLUTE=1;var PURITY_RELATIVE=2;function isPure(node,parentIsPure){switch(node.type){case AST.MemberExpression:if(node.computed)return false;break;case AST.UnaryExpression:return PURITY_ABSOLUTE;case AST.BinaryExpression:return node.operator!=="+"?PURITY_ABSOLUTE:false;case AST.CallExpression:return false}return undefined===parentIsPure?PURITY_RELATIVE: parentIsPure}function findConstantAndWatchExpressions(ast,$filter,parentIsPure){var allConstants;var argsToWatch;var isStatelessFilter;var astIsPure=ast.isPure=isPure(ast,parentIsPure);switch(ast.type){case AST.Program:allConstants=true;forEach(ast.body,function(expr){findConstantAndWatchExpressions(expr.expression,$filter,astIsPure);allConstants=allConstants&&expr.expression.constant});ast.constant=allConstants;break;case AST.Literal:ast.constant=true;ast.toWatch=[];break;case AST.UnaryExpression:findConstantAndWatchExpressions(ast.argument, $filter,astIsPure);ast.constant=ast.argument.constant;ast.toWatch=ast.argument.toWatch;break;case AST.BinaryExpression:findConstantAndWatchExpressions(ast.left,$filter,astIsPure);findConstantAndWatchExpressions(ast.right,$filter,astIsPure);ast.constant=ast.left.constant&&ast.right.constant;ast.toWatch=ast.left.toWatch.concat(ast.right.toWatch);break;case AST.LogicalExpression:findConstantAndWatchExpressions(ast.left,$filter,astIsPure);findConstantAndWatchExpressions(ast.right,$filter,astIsPure);ast.constant= ast.left.constant&&ast.right.constant;ast.toWatch=ast.constant?[]:[ast];break;case AST.ConditionalExpression:findConstantAndWatchExpressions(ast.test,$filter,astIsPure);findConstantAndWatchExpressions(ast.alternate,$filter,astIsPure);findConstantAndWatchExpressions(ast.consequent,$filter,astIsPure);ast.constant=ast.test.constant&&ast.alternate.constant&&ast.consequent.constant;ast.toWatch=ast.constant?[]:[ast];break;case AST.Identifier:ast.constant=false;ast.toWatch=[ast];break;case AST.MemberExpression:findConstantAndWatchExpressions(ast.object, $filter,astIsPure);if(ast.computed)findConstantAndWatchExpressions(ast.property,$filter,astIsPure);ast.constant=ast.object.constant&&(!ast.computed||ast.property.constant);ast.toWatch=ast.constant?[]:[ast];break;case AST.CallExpression:isStatelessFilter=ast.filter?isStateless($filter,ast.callee.name):false;allConstants=isStatelessFilter;argsToWatch=[];forEach(ast.arguments,function(expr){findConstantAndWatchExpressions(expr,$filter,astIsPure);allConstants=allConstants&&expr.constant;argsToWatch.push.apply(argsToWatch, expr.toWatch)});ast.constant=allConstants;ast.toWatch=isStatelessFilter?argsToWatch:[ast];break;case AST.AssignmentExpression:findConstantAndWatchExpressions(ast.left,$filter,astIsPure);findConstantAndWatchExpressions(ast.right,$filter,astIsPure);ast.constant=ast.left.constant&&ast.right.constant;ast.toWatch=[ast];break;case AST.ArrayExpression:allConstants=true;argsToWatch=[];forEach(ast.elements,function(expr){findConstantAndWatchExpressions(expr,$filter,astIsPure);allConstants=allConstants&&expr.constant; argsToWatch.push.apply(argsToWatch,expr.toWatch)});ast.constant=allConstants;ast.toWatch=argsToWatch;break;case AST.ObjectExpression:allConstants=true;argsToWatch=[];forEach(ast.properties,function(property){findConstantAndWatchExpressions(property.value,$filter,astIsPure);allConstants=allConstants&&property.value.constant;argsToWatch.push.apply(argsToWatch,property.value.toWatch);if(property.computed){findConstantAndWatchExpressions(property.key,$filter,false);allConstants=allConstants&&property.key.constant; argsToWatch.push.apply(argsToWatch,property.key.toWatch)}});ast.constant=allConstants;ast.toWatch=argsToWatch;break;case AST.ThisExpression:ast.constant=false;ast.toWatch=[];break;case AST.LocalsExpression:ast.constant=false;ast.toWatch=[];break}}function getInputs(body){if(body.length!==1)return;var lastExpression=body[0].expression;var candidate=lastExpression.toWatch;if(candidate.length!==1)return candidate;return candidate[0]!==lastExpression?candidate:undefined}function isAssignable(ast){return ast.type=== AST.Identifier||ast.type===AST.MemberExpression}function assignableAST(ast){if(ast.body.length===1&&isAssignable(ast.body[0].expression))return{type:AST.AssignmentExpression,left:ast.body[0].expression,right:{type:AST.NGValueParameter},operator:"\x3d"}}function isLiteral(ast){return ast.body.length===0||ast.body.length===1&&(ast.body[0].expression.type===AST.Literal||ast.body[0].expression.type===AST.ArrayExpression||ast.body[0].expression.type===AST.ObjectExpression)}function isConstant(ast){return ast.constant} function ASTCompiler($filter){this.$filter=$filter}ASTCompiler.prototype={compile:function(ast){var self=this;this.state={nextId:0,filters:{},fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]};findConstantAndWatchExpressions(ast,self.$filter);var extra="";var assignable;this.stage="assign";if(assignable=assignableAST(ast)){this.state.computing="assign";var result=this.nextId();this.recurse(assignable,result);this.return_(result);extra="fn.assign\x3d"+this.generateFunction("assign", "s,v,l")}var toWatch=getInputs(ast.body);self.stage="inputs";forEach(toWatch,function(watch,key){var fnKey="fn"+key;self.state[fnKey]={vars:[],body:[],own:{}};self.state.computing=fnKey;var intoId=self.nextId();self.recurse(watch,intoId);self.return_(intoId);self.state.inputs.push({name:fnKey,isPure:watch.isPure});watch.watchId=key});this.state.computing="fn";this.stage="main";this.recurse(ast);var fnString='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn\x3d"+this.generateFunction("fn", "s,l,a,i")+extra+this.watchFns()+"return fn;";var fn=(new Function("$filter","getStringValue","ifDefined","plus",fnString))(this.$filter,getStringValue,ifDefined,plusFn);this.state=this.stage=undefined;return fn},USE:"use",STRICT:"strict",watchFns:function(){var result=[];var inputs=this.state.inputs;var self=this;forEach(inputs,function(input){result.push("var "+input.name+"\x3d"+self.generateFunction(input.name,"s"));if(input.isPure)result.push(input.name,".isPure\x3d"+JSON.stringify(input.isPure)+ ";")});if(inputs.length)result.push("fn.inputs\x3d["+inputs.map(function(i){return i.name}).join(",")+"];");return result.join("")},generateFunction:function(name,params){return"function("+params+"){"+this.varsPrefix(name)+this.body(name)+"};"},filterPrefix:function(){var parts=[];var self=this;forEach(this.state.filters,function(id,filter){parts.push(id+"\x3d$filter("+self.escape(filter)+")")});if(parts.length)return"var "+parts.join(",")+";";return""},varsPrefix:function(section){return this.state[section].vars.length? "var "+this.state[section].vars.join(",")+";":""},body:function(section){return this.state[section].body.join("")},recurse:function(ast,intoId,nameId,recursionFn,create,skipWatchIdCheck){var left,right,self=this,args,expression,computed;recursionFn=recursionFn||noop;if(!skipWatchIdCheck&&isDefined(ast.watchId)){intoId=intoId||this.nextId();this.if_("i",this.lazyAssign(intoId,this.computedMember("i",ast.watchId)),this.lazyRecurse(ast,intoId,nameId,recursionFn,create,true));return}switch(ast.type){case AST.Program:forEach(ast.body, function(expression,pos){self.recurse(expression.expression,undefined,undefined,function(expr){right=expr});if(pos!==ast.body.length-1)self.current().body.push(right,";");else self.return_(right)});break;case AST.Literal:expression=this.escape(ast.value);this.assign(intoId,expression);recursionFn(intoId||expression);break;case AST.UnaryExpression:this.recurse(ast.argument,undefined,undefined,function(expr){right=expr});expression=ast.operator+"("+this.ifDefined(right,0)+")";this.assign(intoId,expression); recursionFn(expression);break;case AST.BinaryExpression:this.recurse(ast.left,undefined,undefined,function(expr){left=expr});this.recurse(ast.right,undefined,undefined,function(expr){right=expr});if(ast.operator==="+")expression=this.plus(left,right);else if(ast.operator==="-")expression=this.ifDefined(left,0)+ast.operator+this.ifDefined(right,0);else expression="("+left+")"+ast.operator+"("+right+")";this.assign(intoId,expression);recursionFn(expression);break;case AST.LogicalExpression:intoId=intoId|| this.nextId();self.recurse(ast.left,intoId);self.if_(ast.operator==="\x26\x26"?intoId:self.not(intoId),self.lazyRecurse(ast.right,intoId));recursionFn(intoId);break;case AST.ConditionalExpression:intoId=intoId||this.nextId();self.recurse(ast.test,intoId);self.if_(intoId,self.lazyRecurse(ast.alternate,intoId),self.lazyRecurse(ast.consequent,intoId));recursionFn(intoId);break;case AST.Identifier:intoId=intoId||this.nextId();if(nameId){nameId.context=self.stage==="inputs"?"s":this.assign(this.nextId(), this.getHasOwnProperty("l",ast.name)+"?l:s");nameId.computed=false;nameId.name=ast.name}self.if_(self.stage==="inputs"||self.not(self.getHasOwnProperty("l",ast.name)),function(){self.if_(self.stage==="inputs"||"s",function(){if(create&&create!==1)self.if_(self.isNull(self.nonComputedMember("s",ast.name)),self.lazyAssign(self.nonComputedMember("s",ast.name),"{}"));self.assign(intoId,self.nonComputedMember("s",ast.name))})},intoId&&self.lazyAssign(intoId,self.nonComputedMember("l",ast.name)));recursionFn(intoId); break;case AST.MemberExpression:left=nameId&&(nameId.context=this.nextId())||this.nextId();intoId=intoId||this.nextId();self.recurse(ast.object,left,undefined,function(){self.if_(self.notNull(left),function(){if(ast.computed){right=self.nextId();self.recurse(ast.property,right);self.getStringValue(right);if(create&&create!==1)self.if_(self.not(self.computedMember(left,right)),self.lazyAssign(self.computedMember(left,right),"{}"));expression=self.computedMember(left,right);self.assign(intoId,expression); if(nameId){nameId.computed=true;nameId.name=right}}else{if(create&&create!==1)self.if_(self.isNull(self.nonComputedMember(left,ast.property.name)),self.lazyAssign(self.nonComputedMember(left,ast.property.name),"{}"));expression=self.nonComputedMember(left,ast.property.name);self.assign(intoId,expression);if(nameId){nameId.computed=false;nameId.name=ast.property.name}}},function(){self.assign(intoId,"undefined")});recursionFn(intoId)},!!create);break;case AST.CallExpression:intoId=intoId||this.nextId(); if(ast.filter){right=self.filter(ast.callee.name);args=[];forEach(ast.arguments,function(expr){var argument=self.nextId();self.recurse(expr,argument);args.push(argument)});expression=right+"("+args.join(",")+")";self.assign(intoId,expression);recursionFn(intoId)}else{right=self.nextId();left={};args=[];self.recurse(ast.callee,right,left,function(){self.if_(self.notNull(right),function(){forEach(ast.arguments,function(expr){self.recurse(expr,ast.constant?undefined:self.nextId(),undefined,function(argument){args.push(argument)})}); if(left.name)expression=self.member(left.context,left.name,left.computed)+"("+args.join(",")+")";else expression=right+"("+args.join(",")+")";self.assign(intoId,expression)},function(){self.assign(intoId,"undefined")});recursionFn(intoId)})}break;case AST.AssignmentExpression:right=this.nextId();left={};this.recurse(ast.left,undefined,left,function(){self.if_(self.notNull(left.context),function(){self.recurse(ast.right,right);expression=self.member(left.context,left.name,left.computed)+ast.operator+ right;self.assign(intoId,expression);recursionFn(intoId||expression)})},1);break;case AST.ArrayExpression:args=[];forEach(ast.elements,function(expr){self.recurse(expr,ast.constant?undefined:self.nextId(),undefined,function(argument){args.push(argument)})});expression="["+args.join(",")+"]";this.assign(intoId,expression);recursionFn(intoId||expression);break;case AST.ObjectExpression:args=[];computed=false;forEach(ast.properties,function(property){if(property.computed)computed=true});if(computed){intoId= intoId||this.nextId();this.assign(intoId,"{}");forEach(ast.properties,function(property){if(property.computed){left=self.nextId();self.recurse(property.key,left)}else left=property.key.type===AST.Identifier?property.key.name:""+property.key.value;right=self.nextId();self.recurse(property.value,right);self.assign(self.member(intoId,left,property.computed),right)})}else{forEach(ast.properties,function(property){self.recurse(property.value,ast.constant?undefined:self.nextId(),undefined,function(expr){args.push(self.escape(property.key.type=== AST.Identifier?property.key.name:""+property.key.value)+":"+expr)})});expression="{"+args.join(",")+"}";this.assign(intoId,expression)}recursionFn(intoId||expression);break;case AST.ThisExpression:this.assign(intoId,"s");recursionFn(intoId||"s");break;case AST.LocalsExpression:this.assign(intoId,"l");recursionFn(intoId||"l");break;case AST.NGValueParameter:this.assign(intoId,"v");recursionFn(intoId||"v");break}},getHasOwnProperty:function(element,property){var key=element+"."+property;var own=this.current().own; if(!own.hasOwnProperty(key))own[key]=this.nextId(false,element+"\x26\x26("+this.escape(property)+" in "+element+")");return own[key]},assign:function(id,value){if(!id)return;this.current().body.push(id,"\x3d",value,";");return id},filter:function(filterName){if(!this.state.filters.hasOwnProperty(filterName))this.state.filters[filterName]=this.nextId(true);return this.state.filters[filterName]},ifDefined:function(id,defaultValue){return"ifDefined("+id+","+this.escape(defaultValue)+")"},plus:function(left, right){return"plus("+left+","+right+")"},return_:function(id){this.current().body.push("return ",id,";")},if_:function(test,alternate,consequent){if(test===true)alternate();else{var body=this.current().body;body.push("if(",test,"){");alternate();body.push("}");if(consequent){body.push("else{");consequent();body.push("}")}}},not:function(expression){return"!("+expression+")"},isNull:function(expression){return expression+"\x3d\x3dnull"},notNull:function(expression){return expression+"!\x3dnull"},nonComputedMember:function(left, right){var SAFE_IDENTIFIER=/^[$_a-zA-Z][$_a-zA-Z0-9]*$/;var UNSAFE_CHARACTERS=/[^$_a-zA-Z0-9]/g;if(SAFE_IDENTIFIER.test(right))return left+"."+right;else return left+'["'+right.replace(UNSAFE_CHARACTERS,this.stringEscapeFn)+'"]'},computedMember:function(left,right){return left+"["+right+"]"},member:function(left,right,computed){if(computed)return this.computedMember(left,right);return this.nonComputedMember(left,right)},getStringValue:function(item){this.assign(item,"getStringValue("+item+")")},lazyRecurse:function(ast, intoId,nameId,recursionFn,create,skipWatchIdCheck){var self=this;return function(){self.recurse(ast,intoId,nameId,recursionFn,create,skipWatchIdCheck)}},lazyAssign:function(id,value){var self=this;return function(){self.assign(id,value)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(c){return"\\u"+("0000"+c.charCodeAt(0).toString(16)).slice(-4)},escape:function(value){if(isString(value))return"'"+value.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(isNumber(value))return value.toString(); if(value===true)return"true";if(value===false)return"false";if(value===null)return"null";if(typeof value==="undefined")return"undefined";throw $parseMinErr("esc","IMPOSSIBLE");},nextId:function(skip,init){var id="v"+this.state.nextId++;if(!skip)this.current().vars.push(id+(init?"\x3d"+init:""));return id},current:function(){return this.state[this.state.computing]}};function ASTInterpreter($filter){this.$filter=$filter}ASTInterpreter.prototype={compile:function(ast){var self=this;findConstantAndWatchExpressions(ast, self.$filter);var assignable;var assign;if(assignable=assignableAST(ast))assign=this.recurse(assignable);var toWatch=getInputs(ast.body);var inputs;if(toWatch){inputs=[];forEach(toWatch,function(watch,key){var input=self.recurse(watch);input.isPure=watch.isPure;watch.input=input;inputs.push(input);watch.watchId=key})}var expressions=[];forEach(ast.body,function(expression){expressions.push(self.recurse(expression.expression))});var fn=ast.body.length===0?noop:ast.body.length===1?expressions[0]:function(scope, locals){var lastValue;forEach(expressions,function(exp){lastValue=exp(scope,locals)});return lastValue};if(assign)fn.assign=function(scope,value,locals){return assign(scope,locals,value)};if(inputs)fn.inputs=inputs;return fn},recurse:function(ast,context,create){var left,right,self=this,args;if(ast.input)return this.inputs(ast.input,ast.watchId);switch(ast.type){case AST.Literal:return this.value(ast.value,context);case AST.UnaryExpression:right=this.recurse(ast.argument);return this["unary"+ast.operator](right, context);case AST.BinaryExpression:left=this.recurse(ast.left);right=this.recurse(ast.right);return this["binary"+ast.operator](left,right,context);case AST.LogicalExpression:left=this.recurse(ast.left);right=this.recurse(ast.right);return this["binary"+ast.operator](left,right,context);case AST.ConditionalExpression:return this["ternary?:"](this.recurse(ast.test),this.recurse(ast.alternate),this.recurse(ast.consequent),context);case AST.Identifier:return self.identifier(ast.name,context,create); case AST.MemberExpression:left=this.recurse(ast.object,false,!!create);if(!ast.computed)right=ast.property.name;if(ast.computed)right=this.recurse(ast.property);return ast.computed?this.computedMember(left,right,context,create):this.nonComputedMember(left,right,context,create);case AST.CallExpression:args=[];forEach(ast.arguments,function(expr){args.push(self.recurse(expr))});if(ast.filter)right=this.$filter(ast.callee.name);if(!ast.filter)right=this.recurse(ast.callee,true);return ast.filter?function(scope, locals,assign,inputs){var values=[];for(var i=0;iright(scope,locals,assign,inputs);return context?{value:arg}:arg}},"binary\x3c\x3d":function(left,right,context){return function(scope,locals,assign,inputs){var arg=left(scope,locals,assign,inputs)<=right(scope,locals,assign,inputs);return context?{value:arg}:arg}},"binary\x3e\x3d":function(left,right,context){return function(scope,locals,assign,inputs){var arg=left(scope,locals,assign,inputs)>=right(scope, locals,assign,inputs);return context?{value:arg}:arg}},"binary\x26\x26":function(left,right,context){return function(scope,locals,assign,inputs){var arg=left(scope,locals,assign,inputs)&&right(scope,locals,assign,inputs);return context?{value:arg}:arg}},"binary||":function(left,right,context){return function(scope,locals,assign,inputs){var arg=left(scope,locals,assign,inputs)||right(scope,locals,assign,inputs);return context?{value:arg}:arg}},"ternary?:":function(test,alternate,consequent,context){return function(scope, locals,assign,inputs){var arg=test(scope,locals,assign,inputs)?alternate(scope,locals,assign,inputs):consequent(scope,locals,assign,inputs);return context?{value:arg}:arg}},value:function(value,context){return function(){return context?{context:undefined,name:undefined,value:value}:value}},identifier:function(name,context,create){return function(scope,locals,assign,inputs){var base=locals&&name in locals?locals:scope;if(create&&create!==1&&base&&base[name]==null)base[name]={};var value=base?base[name]: undefined;if(context)return{context:base,name:name,value:value};else return value}},computedMember:function(left,right,context,create){return function(scope,locals,assign,inputs){var lhs=left(scope,locals,assign,inputs);var rhs;var value;if(lhs!=null){rhs=right(scope,locals,assign,inputs);rhs=getStringValue(rhs);if(create&&create!==1)if(lhs&&!lhs[rhs])lhs[rhs]={};value=lhs[rhs]}if(context)return{context:lhs,name:rhs,value:value};else return value}},nonComputedMember:function(left,right,context,create){return function(scope, locals,assign,inputs){var lhs=left(scope,locals,assign,inputs);if(create&&create!==1)if(lhs&&lhs[right]==null)lhs[right]={};var value=lhs!=null?lhs[right]:undefined;if(context)return{context:lhs,name:right,value:value};else return value}},inputs:function(input,watchId){return function(scope,value,locals,inputs){if(inputs)return inputs[watchId];return input(scope,value,locals)}}};function Parser(lexer,$filter,options){this.ast=new AST(lexer,options);this.astCompiler=options.csp?new ASTInterpreter($filter): new ASTCompiler($filter)}Parser.prototype={constructor:Parser,parse:function(text){var ast=this.getAst(text);var fn=this.astCompiler.compile(ast.ast);fn.literal=isLiteral(ast.ast);fn.constant=isConstant(ast.ast);fn.oneTime=ast.oneTime;return fn},getAst:function(exp){var oneTime=false;exp=exp.trim();if(exp.charAt(0)===":"&&exp.charAt(1)===":"){oneTime=true;exp=exp.substring(2)}return{ast:this.ast.ast(exp),oneTime:oneTime}}};function getValueOf(value){return isFunction(value.valueOf)?value.valueOf(): objectValueOf.call(value)}function $ParseProvider(){var cache=createMap();var literals={"true":true,"false":false,"null":null,"undefined":undefined};var identStart,identContinue;this.addLiteral=function(literalName,literalValue){literals[literalName]=literalValue};this.setIdentifierFns=function(identifierStart,identifierContinue){identStart=identifierStart;identContinue=identifierContinue;return this};this.$get=["$filter",function($filter){var noUnsafeEval=csp().noUnsafeEval;var $parseOptions={csp:noUnsafeEval, literals:copy(literals),isIdentifierStart:isFunction(identStart)&&identStart,isIdentifierContinue:isFunction(identContinue)&&identContinue};$parse.$$getAst=$$getAst;return $parse;function $parse(exp,interceptorFn){var parsedExpression,cacheKey;switch(typeof exp){case "string":exp=exp.trim();cacheKey=exp;parsedExpression=cache[cacheKey];if(!parsedExpression){var lexer=new Lexer($parseOptions);var parser=new Parser(lexer,$filter,$parseOptions);parsedExpression=parser.parse(exp);cache[cacheKey]=addWatchDelegate(parsedExpression)}return addInterceptor(parsedExpression, interceptorFn);case "function":return addInterceptor(exp,interceptorFn);default:return addInterceptor(noop,interceptorFn)}}function $$getAst(exp){var lexer=new Lexer($parseOptions);var parser=new Parser(lexer,$filter,$parseOptions);return parser.getAst(exp).ast}function expressionInputDirtyCheck(newValue,oldValueOfValue,compareObjectIdentity){if(newValue==null||oldValueOfValue==null)return newValue===oldValueOfValue;if(typeof newValue==="object"){newValue=getValueOf(newValue);if(typeof newValue=== "object"&&!compareObjectIdentity)return false}return newValue===oldValueOfValue||newValue!==newValue&&oldValueOfValue!==oldValueOfValue}function inputsWatchDelegate(scope,listener,objectEquality,parsedExpression,prettyPrintExpression){var inputExpressions=parsedExpression.inputs;var lastResult;if(inputExpressions.length===1){var oldInputValueOf=expressionInputDirtyCheck;inputExpressions=inputExpressions[0];return scope.$watch(function expressionInputWatch(scope){var newInputValue=inputExpressions(scope); if(!expressionInputDirtyCheck(newInputValue,oldInputValueOf,inputExpressions.isPure)){lastResult=parsedExpression(scope,undefined,undefined,[newInputValue]);oldInputValueOf=newInputValue&&getValueOf(newInputValue)}return lastResult},listener,objectEquality,prettyPrintExpression)}var oldInputValueOfValues=[];var oldInputValues=[];for(var i=0,ii=inputExpressions.length;i0)scheduleProcessQueue(this.$$state);return result},"catch":function(callback){return this.then(null,callback)},"finally":function(callback,progressBack){return this.then(function(value){return handleCallback(value,resolve,callback)},function(error){return handleCallback(error,reject,callback)},progressBack)}});function processQueue(state){var fn, promise,pending;pending=state.pending;state.processScheduled=false;state.pending=undefined;try{for(var i=0,ii=pending.length;i=0){incrementWatchersCount(scope,-1);if(index1;var changeDetected=0;var changeDetector=$parse(obj,$watchCollectionInterceptor);var internalArray=[];var internalObject={};var initRun=true;var oldLength=0;function $watchCollectionInterceptor(_value){newValue=_value;var newLength,key,bothNaN,newItem,oldItem;if(isUndefined(newValue))return;if(!isObject(newValue)){if(oldValue!==newValue){oldValue= newValue;changeDetected++}}else if(isArrayLike(newValue)){if(oldValue!==internalArray){oldValue=internalArray;oldLength=oldValue.length=0;changeDetected++}newLength=newValue.length;if(oldLength!==newLength){changeDetected++;oldValue.length=oldLength=newLength}for(var i=0;inewLength){changeDetected++;for(key in oldValue)if(!hasOwnProperty.call(newValue,key)){oldLength--;delete oldValue[key]}}}return changeDetected} function $watchCollectionAction(){if(initRun){initRun=false;listener(newValue,newValue,self)}else listener(newValue,veryOldValue,self);if(trackVeryOldValue)if(!isObject(newValue))veryOldValue=newValue;else if(isArrayLike(newValue)){veryOldValue=new Array(newValue.length);for(var i=0;i-1)throw $sceMinErr("iwcard","Illegal sequence *** in string matcher. String: {0}",matcher);matcher=escapeForRegexp(matcher).replace(/\\\*\\\*/g,".*").replace(/\\\*/g,"[^:/.?\x26;]*");return new RegExp("^"+matcher+"$")}else if(isRegExp(matcher))return new RegExp("^"+matcher.source+"$");else throw $sceMinErr("imatcher",'Matchers may only be "self", string patterns or RegExp objects'); }function adjustMatchers(matchers){var adjustedMatchers=[];if(isDefined(matchers))forEach(matchers,function(matcher){adjustedMatchers.push(adjustMatcher(matcher))});return adjustedMatchers}function $SceDelegateProvider(){this.SCE_CONTEXTS=SCE_CONTEXTS;var trustedResourceUrlList=["self"],bannedResourceUrlList=[];this.trustedResourceUrlList=function(value){if(arguments.length)trustedResourceUrlList=adjustMatchers(value);return trustedResourceUrlList};Object.defineProperty(this,"resourceUrlWhitelist", {get:function(){return this.trustedResourceUrlList},set:function(value){this.trustedResourceUrlList=value}});this.bannedResourceUrlList=function(value){if(arguments.length)bannedResourceUrlList=adjustMatchers(value);return bannedResourceUrlList};Object.defineProperty(this,"resourceUrlBlacklist",{get:function(){return this.bannedResourceUrlList},set:function(value){this.bannedResourceUrlList=value}});this.$get=["$injector","$$sanitizeUri",function($injector,$$sanitizeUri){var htmlSanitizer=function htmlSanitizer(html){throw $sceMinErr("unsafe", "Attempting to use an unsafe value in a safe context.");};if($injector.has("$sanitize"))htmlSanitizer=$injector.get("$sanitize");function matchUrl(matcher,parsedUrl){if(matcher==="self")return urlIsSameOrigin(parsedUrl)||urlIsSameOriginAsBaseUrl(parsedUrl);else return!!matcher.exec(parsedUrl.href)}function isResourceUrlAllowedByPolicy(url){var parsedUrl=urlResolve(url.toString());var i,n,allowed=false;for(i=0,n=trustedResourceUrlList.length;i=0;--i){var cbInfo=taskCallbacks[i];if(cbInfo.type===taskType){taskCallbacks.splice(i,1);return cbInfo.cb}}}function incTaskCount(taskType){taskType=taskType||DEFAULT_TASK_TYPE;taskCounts[taskType]=(taskCounts[taskType]||0)+1;taskCounts[ALL_TASKS_TYPE]=(taskCounts[ALL_TASKS_TYPE]||0)+1}function notifyWhenNoPendingTasks(callback,taskType){taskType=taskType||ALL_TASKS_TYPE;if(!taskCounts[taskType])callback();else taskCallbacks.push({type:taskType, cb:callback})}}var $templateRequestMinErr=minErr("$templateRequest");function $TemplateRequestProvider(){var httpOptions;this.httpOptions=function(val){if(val){httpOptions=val;return this}return httpOptions};this.$get=["$exceptionHandler","$templateCache","$http","$q","$sce",function($exceptionHandler,$templateCache,$http,$q,$sce){function handleRequestFn(tpl,ignoreRequestError){handleRequestFn.totalPendingRequests++;if(!isString(tpl)||isUndefined($templateCache.get(tpl)))tpl=$sce.getTrustedResourceUrl(tpl); var transformResponse=$http.defaults&&$http.defaults.transformResponse;if(isArray(transformResponse))transformResponse=transformResponse.filter(function(transformer){return transformer!==defaultHttpResponseTransform});else if(transformResponse===defaultHttpResponseTransform)transformResponse=null;return $http.get(tpl,extend({cache:$templateCache,transformResponse:transformResponse},httpOptions)).finally(function(){handleRequestFn.totalPendingRequests--}).then(function(response){return $templateCache.put(tpl, response.data)},handleError);function handleError(resp){if(!ignoreRequestError){resp=$templateRequestMinErr("tpload","Failed to load template: {0} (HTTP status: {1} {2})",tpl,resp.status,resp.statusText);$exceptionHandler(resp)}return $q.reject(resp)}}handleRequestFn.totalPendingRequests=0;return handleRequestFn}]}function $$TestabilityProvider(){this.$get=["$rootScope","$browser","$location",function($rootScope,$browser,$location){var testability={};testability.findBindings=function(element,expression, opt_exactMatch){var bindings=element.getElementsByClassName("ng-binding");var matches=[];forEach(bindings,function(binding){var dataBinding=angular.element(binding).data("$binding");if(dataBinding)forEach(dataBinding,function(bindingName){if(opt_exactMatch){var matcher=new RegExp("(^|\\s)"+escapeForRegexp(expression)+"(\\s|\\||$)");if(matcher.test(bindingName))matches.push(binding)}else if(bindingName.indexOf(expression)!==-1)matches.push(binding)})});return matches};testability.findModels=function(element, expression,opt_exactMatch){var prefixes=["ng-","data-ng-","ng\\:"];for(var p=0;p-1)hostname="["+hostname+"]";return{href:urlParsingNode.href,protocol:urlParsingNode.protocol?urlParsingNode.protocol.replace(/:$/,""):"",host:urlParsingNode.host,search:urlParsingNode.search?urlParsingNode.search.replace(/^\?/,""):"",hash:urlParsingNode.hash?urlParsingNode.hash.replace(/^#/,""):"",hostname:hostname,port:urlParsingNode.port,pathname:urlParsingNode.pathname.charAt(0)=== "/"?urlParsingNode.pathname:"/"+urlParsingNode.pathname}}function urlIsSameOrigin(requestUrl){return urlsAreSameOrigin(requestUrl,originUrl)}function urlIsSameOriginAsBaseUrl(requestUrl){return urlsAreSameOrigin(requestUrl,getBaseUrl())}function urlIsAllowedOriginFactory(trustedOriginUrls){var parsedAllowedOriginUrls=[originUrl].concat(trustedOriginUrls.map(urlResolve));return function urlIsAllowedOrigin(requestUrl){var parsedUrl=urlResolve(requestUrl);return parsedAllowedOriginUrls.some(urlsAreSameOrigin.bind(null, parsedUrl))}}function urlsAreSameOrigin(url1,url2){url1=urlResolve(url1);url2=urlResolve(url2);return url1.protocol===url2.protocol&&url1.host===url2.host}function getBaseUrl(){if(window.document.baseURI)return window.document.baseURI;if(!baseUrlParsingNode){baseUrlParsingNode=window.document.createElement("a");baseUrlParsingNode.href=".";baseUrlParsingNode=baseUrlParsingNode.cloneNode(false)}return baseUrlParsingNode.href}function $WindowProvider(){this.$get=valueFn(window)}function $$CookieReader($document){var rawDocument= $document[0]||{};var lastCookies={};var lastCookieString="";function safeGetCookie(rawDocument){try{return rawDocument.cookie||""}catch(e){return""}}function safeDecodeURIComponent(str){try{return decodeURIComponent(str)}catch(e){return str}}return function(){var cookieArray,cookie,i,index,name;var currentCookieString=safeGetCookie(rawDocument);if(currentCookieString!==lastCookieString){lastCookieString=currentCookieString;cookieArray=lastCookieString.split("; ");lastCookies={};for(i=0;i0){name=safeDecodeURIComponent(cookie.substring(0,index));if(isUndefined(lastCookies[name]))lastCookies[name]=safeDecodeURIComponent(cookie.substring(index+1))}}}return lastCookies}}$$CookieReader.$inject=["$document"];function $$CookieReaderProvider(){this.$get=$$CookieReader}$FilterProvider.$inject=["$provide"];function $FilterProvider($provide){var suffix="Filter";function register(name,factory){if(isObject(name)){var filters={};forEach(name, function(filter,key){filters[key]=register(key,filter)});return filters}else return $provide.factory(name+suffix,factory)}this.register=register;this.$get=["$injector",function($injector){return function(name){return $injector.get(name+suffix)}}];register("currency",currencyFilter);register("date",dateFilter);register("filter",filterFilter);register("json",jsonFilter);register("limitTo",limitToFilter);register("lowercase",lowercaseFilter);register("number",numberFilter);register("orderBy",orderByFilter); register("uppercase",uppercaseFilter)}function filterFilter(){return function(array,expression,comparator,anyPropertyKey){if(!isArrayLike(array))if(array==null)return array;else throw minErr("filter")("notarray","Expected array but received: {0}",array);anyPropertyKey=anyPropertyKey||"$";var expressionType=getTypeForFilter(expression);var predicateFn;var matchAgainstAnyProp;switch(expressionType){case "function":predicateFn=expression;break;case "boolean":case "null":case "number":case "string":matchAgainstAnyProp= true;case "object":predicateFn=createPredicateFn(expression,comparator,anyPropertyKey,matchAgainstAnyProp);break;default:return array}return Array.prototype.filter.call(array,predicateFn)}}function createPredicateFn(expression,comparator,anyPropertyKey,matchAgainstAnyProp){var shouldMatchPrimitives=isObject(expression)&&anyPropertyKey in expression;var predicateFn;if(comparator===true)comparator=equals;else if(!isFunction(comparator))comparator=function(actual,expected){if(isUndefined(actual))return false; if(actual===null||expected===null)return actual===expected;if(isObject(expected)||isObject(actual)&&!hasCustomToString(actual))return false;actual=lowercase(""+actual);expected=lowercase(""+expected);return actual.indexOf(expected)!==-1};predicateFn=function(item){if(shouldMatchPrimitives&&!isObject(item))return deepCompare(item,expression[anyPropertyKey],comparator,anyPropertyKey,false);return deepCompare(item,expression,comparator,anyPropertyKey,matchAgainstAnyProp)};return predicateFn}function deepCompare(actual, expected,comparator,anyPropertyKey,matchAgainstAnyProp,dontMatchWholeObject){var actualType=getTypeForFilter(actual);var expectedType=getTypeForFilter(expected);if(expectedType==="string"&&expected.charAt(0)==="!")return!deepCompare(actual,expected.substring(1),comparator,anyPropertyKey,matchAgainstAnyProp);else if(isArray(actual))return actual.some(function(item){return deepCompare(item,expected,comparator,anyPropertyKey,matchAgainstAnyProp)});switch(actualType){case "object":var key;if(matchAgainstAnyProp){for(key in actual)if(key.charAt&& key.charAt(0)!=="$"&&deepCompare(actual[key],expected,comparator,anyPropertyKey,true))return true;return dontMatchWholeObject?false:deepCompare(actual,expected,comparator,anyPropertyKey,false)}else if(expectedType==="object"){for(key in expected){var expectedVal=expected[key];if(isFunction(expectedVal)||isUndefined(expectedVal))continue;var matchAnyProperty=key===anyPropertyKey;var actualVal=matchAnyProperty?actual:actual[key];if(!deepCompare(actualVal,expectedVal,comparator,anyPropertyKey,matchAnyProperty, matchAnyProperty))return false}return true}else return comparator(actual,expected);case "function":return false;default:return comparator(actual,expected)}}function getTypeForFilter(val){return val===null?"null":typeof val}var MAX_DIGITS=22;var DECIMAL_SEP=".";var ZERO_CHAR="0";currencyFilter.$inject=["$locale"];function currencyFilter($locale){var formats=$locale.NUMBER_FORMATS;return function(amount,currencySymbol,fractionSize){if(amount==null)return amount;if(isUndefined(currencySymbol))currencySymbol= formats.CURRENCY_SYM;if(isUndefined(fractionSize))fractionSize=formats.PATTERNS[1].maxFrac;var value=formatNumber(amount,formats.PATTERNS[1],formats.GROUP_SEP,formats.DECIMAL_SEP,fractionSize);return currencySymbol?value.replace(/\u00A4/g,currencySymbol):value.replace(/(^|\S)\s*\u00A4\s*(\S|$)/g,function(_,g1,g2){return g1+currencySymbol+g2})}}numberFilter.$inject=["$locale"];function numberFilter($locale){var formats=$locale.NUMBER_FORMATS;return function(number,fractionSize){return number==null? number:formatNumber(number,formats.PATTERNS[0],formats.GROUP_SEP,formats.DECIMAL_SEP,fractionSize)}}function parse(numStr){var exponent=0,digits,numberOfIntegerDigits;var i,j,zeros;if((numberOfIntegerDigits=numStr.indexOf(DECIMAL_SEP))>-1)numStr=numStr.replace(DECIMAL_SEP,"");if((i=numStr.search(/e/i))>0){if(numberOfIntegerDigits<0)numberOfIntegerDigits=i;numberOfIntegerDigits+=+numStr.slice(i+1);numStr=numStr.substring(0,i)}else if(numberOfIntegerDigits<0)numberOfIntegerDigits=numStr.length;for(i= 0;numStr.charAt(i)===ZERO_CHAR;i++);if(i===(zeros=numStr.length)){digits=[0];numberOfIntegerDigits=1}else{zeros--;while(numStr.charAt(zeros)===ZERO_CHAR)zeros--;numberOfIntegerDigits-=i;digits=[];for(j=0;i<=zeros;i++,j++)digits[j]=+numStr.charAt(i)}if(numberOfIntegerDigits>MAX_DIGITS){digits=digits.splice(0,MAX_DIGITS-1);exponent=numberOfIntegerDigits-1;numberOfIntegerDigits=1}return{d:digits,e:exponent,i:numberOfIntegerDigits}}function roundNumber(parsedNumber,fractionSize,minFrac,maxFrac){var digits= parsedNumber.d;var fractionLen=digits.length-parsedNumber.i;fractionSize=isUndefined(fractionSize)?Math.min(Math.max(minFrac,fractionLen),maxFrac):+fractionSize;var roundAt=fractionSize+parsedNumber.i;var digit=digits[roundAt];if(roundAt>0){digits.splice(Math.max(parsedNumber.i,roundAt));for(var j=roundAt;j= 5)if(roundAt-1<0){for(var k=0;k>roundAt;k--){digits.unshift(0);parsedNumber.i++}digits.unshift(1);parsedNumber.i++}else digits[roundAt-1]++;for(;fractionLen0)decimals=digits.splice(integerLen, digits.length);else{decimals=digits;digits=[0]}var groups=[];if(digits.length>=pattern.lgSize)groups.unshift(digits.splice(-pattern.lgSize,digits.length).join(""));while(digits.length>pattern.gSize)groups.unshift(digits.splice(-pattern.gSize,digits.length).join(""));if(digits.length)groups.unshift(digits.join(""));formattedText=groups.join(groupSep);if(decimals.length)formattedText+=decimalSep+decimals.join("");if(exponent)formattedText+="e+"+exponent}if(number<0&&!isZero)return pattern.negPre+formattedText+ pattern.negSuf;else return pattern.posPre+formattedText+pattern.posSuf}function padNumber(num,digits,trim,negWrap){var neg="";if(num<0||negWrap&&num<=0)if(negWrap)num=-num+1;else{num=-num;neg="-"}num=""+num;while(num.length0||value>-offset)value+=offset;if(value===0&&offset===-12)value=12; return padNumber(value,size,trim,negWrap)}}function dateStrGetter(name,shortForm,standAlone){return function(date,formats){var value=date["get"+name]();var propPrefix=(standAlone?"STANDALONE":"")+(shortForm?"SHORT":"");var get=uppercase(propPrefix+name);return formats[get][value]}}function timeZoneGetter(date,formats,offset){var zone=-1*offset;var paddedZone=zone>=0?"+":"";paddedZone+=padNumber(Math[zone>0?"floor":"ceil"](zone/60),2)+padNumber(Math.abs(zone%60),2);return paddedZone}function getFirstThursdayOfYear(year){var dayOfWeekOnFirst= (new Date(year,0,1)).getDay();return new Date(year,0,(dayOfWeekOnFirst<=4?5:12)-dayOfWeekOnFirst)}function getThursdayThisWeek(datetime){return new Date(datetime.getFullYear(),datetime.getMonth(),datetime.getDate()+(4-datetime.getDay()))}function weekGetter(size){return function(date){var firstThurs=getFirstThursdayOfYear(date.getFullYear()),thisThurs=getThursdayThisWeek(date);var diff=+thisThurs-+firstThurs,result=1+Math.round(diff/6048E5);return padNumber(result,size)}}function ampmGetter(date, formats){return date.getHours()<12?formats.AMPMS[0]:formats.AMPMS[1]}function eraGetter(date,formats){return date.getFullYear()<=0?formats.ERAS[0]:formats.ERAS[1]}function longEraGetter(date,formats){return date.getFullYear()<=0?formats.ERANAMES[0]:formats.ERANAMES[1]}var DATE_FORMATS={yyyy:dateGetter("FullYear",4,0,false,true),yy:dateGetter("FullYear",2,0,true,true),y:dateGetter("FullYear",1,0,false,true),MMMM:dateStrGetter("Month"),MMM:dateStrGetter("Month",true),MM:dateGetter("Month",2,1),M:dateGetter("Month", 1,1),LLLL:dateStrGetter("Month",false,true),dd:dateGetter("Date",2),d:dateGetter("Date",1),HH:dateGetter("Hours",2),H:dateGetter("Hours",1),hh:dateGetter("Hours",2,-12),h:dateGetter("Hours",1,-12),mm:dateGetter("Minutes",2),m:dateGetter("Minutes",1),ss:dateGetter("Seconds",2),s:dateGetter("Seconds",1),sss:dateGetter("Milliseconds",3),EEEE:dateStrGetter("Day"),EEE:dateStrGetter("Day",true),a:ampmGetter,Z:timeZoneGetter,ww:weekGetter(2),w:weekGetter(1),G:eraGetter,GG:eraGetter,GGG:eraGetter,GGGG:longEraGetter}; var DATE_FORMATS_SPLIT=/((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/,NUMBER_STRING=/^-?\d+$/;dateFilter.$inject=["$locale"];function dateFilter($locale){var R_ISO8601_STR=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;function jsonStringToDate(string){var match;if(match=string.match(R_ISO8601_STR)){var date=new Date(0),tzHour=0,tzMin=0,dateSetter=match[8]?date.setUTCFullYear:date.setFullYear, timeSetter=match[8]?date.setUTCHours:date.setHours;if(match[9]){tzHour=toInt(match[9]+match[10]);tzMin=toInt(match[9]+match[11])}dateSetter.call(date,toInt(match[1]),toInt(match[2])-1,toInt(match[3]));var h=toInt(match[4]||0)-tzHour;var m=toInt(match[5]||0)-tzMin;var s=toInt(match[6]||0);var ms=Math.round(parseFloat("0."+(match[7]||0))*1E3);timeSetter.call(date,h,m,s,ms);return date}return string}return function(date,format,timezone){var text="",parts=[],fn,match;format=format||"mediumDate";format= $locale.DATETIME_FORMATS[format]||format;if(isString(date))date=NUMBER_STRING.test(date)?toInt(date):jsonStringToDate(date);if(isNumber(date))date=new Date(date);if(!isDate(date)||!isFinite(date.getTime()))return date;while(format){match=DATE_FORMATS_SPLIT.exec(format);if(match){parts=concat(parts,match,1);format=parts.pop()}else{parts.push(format);format=null}}var dateTimezoneOffset=date.getTimezoneOffset();if(timezone){dateTimezoneOffset=timezoneToOffset(timezone,dateTimezoneOffset);date=convertTimezoneToLocal(date, timezone,true)}forEach(parts,function(value){fn=DATE_FORMATS[value];text+=fn?fn(date,$locale.DATETIME_FORMATS,dateTimezoneOffset):value==="''"?"'":value.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return text}}function jsonFilter(){return function(object,spacing){if(isUndefined(spacing))spacing=2;return toJson(object,spacing)}}var lowercaseFilter=valueFn(lowercase);var uppercaseFilter=valueFn(uppercase);function limitToFilter(){return function(input,limit,begin){if(Math.abs(Number(limit))===Infinity)limit= Number(limit);else limit=toInt(limit);if(isNumberNaN(limit))return input;if(isNumber(input))input=input.toString();if(!isArrayLike(input))return input;begin=!begin||isNaN(begin)?0:toInt(begin);begin=begin<0?Math.max(0,input.length+begin):begin;if(limit>=0)return sliceFn(input,begin,begin+limit);else if(begin===0)return sliceFn(input,limit,input.length);else return sliceFn(input,Math.max(0,begin+limit),begin)}}function sliceFn(input,begin,end){if(isString(input))return input.slice(begin,end);return slice.call(input, begin,end)}orderByFilter.$inject=["$parse"];function orderByFilter($parse){return function(array,sortPredicate,reverseOrder,compareFn){if(array==null)return array;if(!isArrayLike(array))throw minErr("orderBy")("notarray","Expected array but received: {0}",array);if(!isArray(sortPredicate))sortPredicate=[sortPredicate];if(sortPredicate.length===0)sortPredicate=["+"];var predicates=processPredicates(sortPredicate);var descending=reverseOrder?-1:1;var compare=isFunction(compareFn)?compareFn:defaultCompare; var compareValues=Array.prototype.map.call(array,getComparisonObject);compareValues.sort(doComparison);array=compareValues.map(function(item){return item.value});return array;function getComparisonObject(value,index){return{value:value,tieBreaker:{value:index,type:"number",index:index},predicateValues:predicates.map(function(predicate){return getPredicateValue(predicate.get(value),index)})}}function doComparison(v1,v2){for(var i=0,ii=predicates.length;i=parsedMinVal};attr.$observe("min",function(val){if(val!==minVal){parsedMinVal=parseObservedDateValue(val);minVal=val;ctrl.$validate()}})}if(isDefined(attr.max)||attr.ngMax){var maxVal=attr.max||$parse(attr.ngMax)(scope);var parsedMaxVal=parseObservedDateValue(maxVal);ctrl.$validators.max=function(value){return!isValidDate(value)||isUndefined(parsedMaxVal)||parseDate(value)<=parsedMaxVal};attr.$observe("max",function(val){if(val!==maxVal){parsedMaxVal=parseObservedDateValue(val); maxVal=val;ctrl.$validate()}})}function isValidDate(value){return value&&!(value.getTime&&value.getTime()!==value.getTime())}function parseObservedDateValue(val){return isDefined(val)&&!isDate(val)?parseDateAndConvertTimeZoneToLocal(val)||undefined:val}function parseDateAndConvertTimeZoneToLocal(value,previousDate){var timezone=ctrl.$options.getOption("timezone");if(previousTimezone&&previousTimezone!==timezone)previousDate=addDateMinutes(previousDate,timezoneToOffset(previousTimezone));var parsedDate= parseDate(value,previousDate);if(!isNaN(parsedDate)&&timezone)parsedDate=convertTimezoneToLocal(parsedDate,timezone);return parsedDate}function formatter(value,timezone){var targetFormat=format;if(isTimeType&&isString(ctrl.$options.getOption("timeSecondsFormat")))targetFormat=format.replace("ss.sss",ctrl.$options.getOption("timeSecondsFormat")).replace(/:$/,"");var formatted=$filter("date")(value,targetFormat,timezone);if(isTimeType&&ctrl.$options.getOption("timeStripZeroSeconds"))formatted=formatted.replace(/(?::00)?(?:\.000)?$/, "");return formatted}}}function badInputChecker(scope,element,attr,ctrl,parserName){var node=element[0];var nativeValidation=ctrl.$$hasNativeValidators=isObject(node.validity);if(nativeValidation)ctrl.$parsers.push(function(value){var validity=element.prop(VALIDITY_STATE_PROPERTY)||{};if(validity.badInput||validity.typeMismatch){ctrl.$$parserName=parserName;return undefined}return value})}function numberFormatterParser(ctrl){ctrl.$parsers.push(function(value){if(ctrl.$isEmpty(value))return null;if(NUMBER_REGEXP.test(value))return parseFloat(value); ctrl.$$parserName="number";return undefined});ctrl.$formatters.push(function(value){if(!ctrl.$isEmpty(value)){if(!isNumber(value))throw ngModelMinErr("numfmt","Expected `{0}` to be a number",value);value=value.toString()}return value})}function parseNumberAttrVal(val){if(isDefined(val)&&!isNumber(val))val=parseFloat(val);return!isNumberNaN(val)?val:undefined}function isNumberInteger(num){return(num|0)===num}function countDecimals(num){var numString=num.toString();var decimalSymbolIndex=numString.indexOf("."); if(decimalSymbolIndex===-1){if(-1=parsedMinVal};attr.$observe("min",function(val){if(val!== minVal){parsedMinVal=parseNumberAttrVal(val);minVal=val;ctrl.$validate()}})}if(isDefined(attr.max)||attr.ngMax){var maxVal=attr.max||$parse(attr.ngMax)(scope);var parsedMaxVal=parseNumberAttrVal(maxVal);ctrl.$validators.max=function(modelValue,viewValue){return ctrl.$isEmpty(viewValue)||isUndefined(parsedMaxVal)||viewValue<=parsedMaxVal};attr.$observe("max",function(val){if(val!==maxVal){parsedMaxVal=parseNumberAttrVal(val);maxVal=val;ctrl.$validate()}})}if(isDefined(attr.step)||attr.ngStep){var stepVal= attr.step||$parse(attr.ngStep)(scope);var parsedStepVal=parseNumberAttrVal(stepVal);ctrl.$validators.step=function(modelValue,viewValue){return ctrl.$isEmpty(viewValue)||isUndefined(parsedStepVal)||isValidForStep(viewValue,parsedMinVal||0,parsedStepVal)};attr.$observe("step",function(val){if(val!==stepVal){parsedStepVal=parseNumberAttrVal(val);stepVal=val;ctrl.$validate()}})}}function rangeInputType(scope,element,attr,ctrl,$sniffer,$browser){badInputChecker(scope,element,attr,ctrl,"range");numberFormatterParser(ctrl); baseInputType(scope,element,attr,ctrl,$sniffer,$browser);var supportsRange=ctrl.$$hasNativeValidators&&element[0].type==="range",minVal=supportsRange?0:undefined,maxVal=supportsRange?100:undefined,stepVal=supportsRange?1:undefined,validity=element[0].validity,hasMinAttr=isDefined(attr.min),hasMaxAttr=isDefined(attr.max),hasStepAttr=isDefined(attr.step);var originalRender=ctrl.$render;ctrl.$render=supportsRange&&isDefined(validity.rangeUnderflow)&&isDefined(validity.rangeOverflow)?function rangeRender(){originalRender(); ctrl.$setViewValue(element.val())}:originalRender;if(hasMinAttr){minVal=parseNumberAttrVal(attr.min);ctrl.$validators.min=supportsRange?function noopMinValidator(){return true}:function minValidator(modelValue,viewValue){return ctrl.$isEmpty(viewValue)||isUndefined(minVal)||viewValue>=minVal};setInitialValueAndObserver("min",minChange)}if(hasMaxAttr){maxVal=parseNumberAttrVal(attr.max);ctrl.$validators.max=supportsRange?function noopMaxValidator(){return true}:function maxValidator(modelValue,viewValue){return ctrl.$isEmpty(viewValue)|| isUndefined(maxVal)||viewValue<=maxVal};setInitialValueAndObserver("max",maxChange)}if(hasStepAttr){stepVal=parseNumberAttrVal(attr.step);ctrl.$validators.step=supportsRange?function nativeStepValidator(){return!validity.stepMismatch}:function stepValidator(modelValue,viewValue){return ctrl.$isEmpty(viewValue)||isUndefined(stepVal)||isValidForStep(viewValue,minVal||0,stepVal)};setInitialValueAndObserver("step",stepChange)}function setInitialValueAndObserver(htmlAttrName,changeFn){element.attr(htmlAttrName, attr[htmlAttrName]);var oldVal=attr[htmlAttrName];attr.$observe(htmlAttrName,function wrappedObserver(val){if(val!==oldVal){oldVal=val;changeFn(val)}})}function minChange(val){minVal=parseNumberAttrVal(val);if(isNumberNaN(ctrl.$modelValue))return;if(supportsRange){var elVal=element.val();if(minVal>elVal){elVal=minVal;element.val(elVal)}ctrl.$setViewValue(elVal)}else ctrl.$validate()}function maxChange(val){maxVal=parseNumberAttrVal(val);if(isNumberNaN(ctrl.$modelValue))return;if(supportsRange){var elVal= element.val();if(maxVal0||classCounts[className]){classCounts[className]=(classCounts[className]||0)+count;if(classCounts[className]===+(count>0))classesToUpdate.push(className)}});return classesToUpdate.join(" ")}function ngClassIndexWatchAction(newModulo){if(newModulo===selector)addClasses(oldClassString);else removeClasses(oldClassString);oldModulo=newModulo}function ngClassWatchAction(newClassString){if(oldModulo=== selector)updateClasses(oldClassString,newClassString);oldClassString=newClassString}}}}];function arrayDifference(tokens1,tokens2){if(!tokens1||!tokens1.length)return[];if(!tokens2||!tokens2.length)return tokens1;var values=[];outer:for(var i=0;i0)this.$$pendingDebounce=this.$$timeout(function(){that.$commitViewValue()}, debounceDelay);else if(this.$$rootScope.$$phase)this.$commitViewValue();else this.$$scope.$apply(function(){that.$commitViewValue()})},$overrideModelOptions:function(options){this.$options=this.$options.createChild(options);this.$$setUpdateOnEvents()},$processModelValue:function(){var viewValue=this.$$format();if(this.$viewValue!==viewValue){this.$$updateEmptyClasses(viewValue);this.$viewValue=this.$$lastCommittedViewValue=viewValue;this.$render();this.$$runValidators(this.$modelValue,this.$viewValue, noop)}},$$format:function(){var formatters=this.$formatters,idx=formatters.length;var viewValue=this.$modelValue;while(idx--)viewValue=formatters[idx](viewValue);return viewValue},$$setModelValue:function(modelValue){this.$modelValue=this.$$rawModelValue=modelValue;this.$$parserValid=undefined;this.$processModelValue()},$$setUpdateOnEvents:function(){if(this.$$updateEvents)this.$$element.off(this.$$updateEvents,this.$$updateEventHandler);this.$$updateEvents=this.$options.getOption("updateOn");if(this.$$updateEvents)this.$$element.on(this.$$updateEvents, this.$$updateEventHandler)},$$updateEventHandler:function(ev){this.$$debounceViewValueCommit(ev&&ev.type)}};function setupModelWatcher(ctrl){ctrl.$$scope.$watch(function ngModelWatch(scope){var modelValue=ctrl.$$ngModelGet(scope);if(modelValue!==ctrl.$modelValue&&(ctrl.$modelValue===ctrl.$modelValue||modelValue===modelValue))ctrl.$$setModelValue(modelValue);return modelValue})}addSetValidityMethod({clazz:NgModelController,set:function(object,property){object[property]=true},unset:function(object, property){delete object[property]}});var ngModelDirective=["$rootScope",function($rootScope){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:NgModelController,priority:1,compile:function ngModelCompile(element){element.addClass(PRISTINE_CLASS).addClass(UNTOUCHED_CLASS).addClass(VALID_CLASS);return{pre:function ngModelPreLink(scope,element,attr,ctrls){var modelCtrl=ctrls[0],formCtrl=ctrls[1]||modelCtrl.$$parentForm,optionsCtrl=ctrls[2];if(optionsCtrl)modelCtrl.$options= optionsCtrl.$options;modelCtrl.$$initGetterSetters();formCtrl.$addControl(modelCtrl);attr.$observe("name",function(newValue){if(modelCtrl.$name!==newValue)modelCtrl.$$parentForm.$$renameControl(modelCtrl,newValue)});scope.$on("$destroy",function(){modelCtrl.$$parentForm.$removeControl(modelCtrl)})},post:function ngModelPostLink(scope,element,attr,ctrls){var modelCtrl=ctrls[0];modelCtrl.$$setUpdateOnEvents();function setTouched(){modelCtrl.$setTouched()}element.on("blur",function(){if(modelCtrl.$touched)return; if($rootScope.$$phase)scope.$evalAsync(setTouched);else scope.$apply(setTouched)})}}}}}];var defaultModelOptions;var DEFAULT_REGEXP=/(\s+|^)default(\s+|$)/;function ModelOptions(options){this.$$options=options}ModelOptions.prototype={getOption:function(name){return this.$$options[name]},createChild:function(options){var inheritAll=false;options=extend({},options);forEach(options,function(option,key){if(option==="$inherit")if(key==="*")inheritAll=true;else{options[key]=this.$$options[key];if(key=== "updateOn")options.updateOnDefault=this.$$options.updateOnDefault}else if(key==="updateOn"){options.updateOnDefault=false;options[key]=trim(option.replace(DEFAULT_REGEXP,function(){options.updateOnDefault=true;return" "}))}},this);if(inheritAll){delete options["*"];defaults(options,this.$$options)}defaults(options,defaultModelOptions.$$options);return new ModelOptions(options)}};defaultModelOptions=new ModelOptions({updateOn:"",updateOnDefault:true,debounce:0,getterSetter:false,allowInvalid:false, timezone:null});var ngModelOptionsDirective=function(){NgModelOptionsController.$inject=["$attrs","$scope"];function NgModelOptionsController($attrs,$scope){this.$$attrs=$attrs;this.$$scope=$scope}NgModelOptionsController.prototype={$onInit:function(){var parentOptions=this.parentCtrl?this.parentCtrl.$options:defaultModelOptions;var modelOptionsDefinition=this.$$scope.$eval(this.$$attrs.ngModelOptions);this.$options=parentOptions.createChild(modelOptionsDefinition)}};return{restrict:"A",priority:10, require:{parentCtrl:"?^^ngModelOptions"},bindToController:true,controller:NgModelOptionsController}};function defaults(dst,src){forEach(src,function(value,key){if(!isDefined(dst[key]))dst[key]=value})}var ngNonBindableDirective=ngDirective({terminal:true,priority:1E3});var ngOptionsMinErr=minErr("ngOptions");var NG_OPTIONS_REGEXP=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([$\w][$\w]*)|(?:\(\s*([$\w][$\w]*)\s*,\s*([$\w][$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/; var ngOptionsDirective=["$compile","$document","$parse",function($compile,$document,$parse){function parseOptionsExpression(optionsExp,selectElement,scope){var match=optionsExp.match(NG_OPTIONS_REGEXP);if(!match)throw ngOptionsMinErr("iexp","Expected expression in form of "+"'_select_ (as _label_)? for (_key_,)?_value_ in _collection_'"+" but got '{0}'. Element: {1}",optionsExp,startingTag(selectElement));var valueName=match[5]||match[7];var keyName=match[6];var selectAs=/ as /.test(match[0])&&match[1]; var trackBy=match[9];var valueFn=$parse(match[2]?match[1]:valueName);var selectAsFn=selectAs&&$parse(selectAs);var viewValueFn=selectAsFn||valueFn;var trackByFn=trackBy&&$parse(trackBy);var getTrackByValueFn=trackBy?function(value,locals){return trackByFn(scope,locals)}:function getHashOfValue(value){return hashKey(value)};var getTrackByValue=function(value,key){return getTrackByValueFn(value,getLocals(value,key))};var displayFn=$parse(match[2]||match[1]);var groupByFn=$parse(match[3]||"");var disableWhenFn= $parse(match[4]||"");var valuesFn=$parse(match[8]);var locals={};var getLocals=keyName?function(value,key){locals[keyName]=key;locals[valueName]=value;return locals}:function(value){locals[valueName]=value;return locals};function Option(selectValue,viewValue,label,group,disabled){this.selectValue=selectValue;this.viewValue=viewValue;this.label=label;this.group=group;this.disabled=disabled}function getOptionValuesKeys(optionValues){var optionValuesKeys;if(!keyName&&isArrayLike(optionValues))optionValuesKeys= optionValues;else{optionValuesKeys=[];for(var itemKey in optionValues)if(optionValues.hasOwnProperty(itemKey)&&itemKey.charAt(0)!=="$")optionValuesKeys.push(itemKey)}return optionValuesKeys}return{trackBy:trackBy,getTrackByValue:getTrackByValue,getWatchables:$parse(valuesFn,function(optionValues){var watchedArray=[];optionValues=optionValues||[];var optionValuesKeys=getOptionValuesKeys(optionValues);var optionValuesLength=optionValuesKeys.length;for(var index=0;index=0;i--){var option=options.items[i];if(isDefined(option.group))jqLiteRemove(option.element.parentNode);else jqLiteRemove(option.element)}options=ngOptions.getOptions();var groupElementMap={};options.items.forEach(function addOption(option){var groupElement;if(isDefined(option.group)){groupElement=groupElementMap[option.group];if(!groupElement){groupElement=optGroupTemplate.cloneNode(false); listFragment.appendChild(groupElement);groupElement.label=option.group===null?"null":option.group;groupElementMap[option.group]=groupElement}addOptionElement(option,groupElement)}else addOptionElement(option,listFragment)});selectElement[0].appendChild(listFragment);ngModelCtrl.$render();if(!ngModelCtrl.$isEmpty(previousValue)){var nextValue=selectCtrl.readValue();var isNotPrimitive=ngOptions.trackBy||multiple;if(isNotPrimitive?!equals(previousValue,nextValue):previousValue!==nextValue){ngModelCtrl.$setViewValue(nextValue); ngModelCtrl.$render()}}}}return{restrict:"A",terminal:true,require:["select","ngModel"],link:{pre:function ngOptionsPreLink(scope,selectElement,attr,ctrls){ctrls[0].registerOption=noop},post:ngOptionsPostLink}}}];var ngPluralizeDirective=["$locale","$interpolate","$log",function($locale,$interpolate,$log){var BRACE=/{}/g,IS_WHEN=/^when(Minus)?(.+)$/;return{link:function(scope,element,attr){var numberExp=attr.count,whenExp=attr.$attr.when&&element.attr(attr.$attr.when),offset=attr.offset||0,whens= scope.$eval(whenExp)||{},whensExpFns={},startSymbol=$interpolate.startSymbol(),endSymbol=$interpolate.endSymbol(),braceReplacement=startSymbol+numberExp+"-"+offset+endSymbol,watchRemover=angular.noop,lastCount;forEach(attr,function(expression,attributeName){var tmpMatch=IS_WHEN.exec(attributeName);if(tmpMatch){var whenKey=(tmpMatch[1]?"-":"")+lowercase(tmpMatch[2]);whens[whenKey]=element.attr(attr.$attr[attributeName])}});forEach(whens,function(expression,key){whensExpFns[key]=$interpolate(expression.replace(BRACE, braceReplacement))});scope.$watch(numberExp,function ngPluralizeWatchAction(newVal){var count=parseFloat(newVal);var countIsNaN=isNumberNaN(count);if(!countIsNaN&&!(count in whens))count=$locale.pluralCat(count-offset);if(count!==lastCount&&!(countIsNaN&&isNumberNaN(lastCount))){watchRemover();var whenExpFn=whensExpFns[count];if(isUndefined(whenExpFn)){if(newVal!=null)$log.debug("ngPluralize: no rule defined for '"+count+"' in "+whenExp);watchRemover=noop;updateElementText()}else watchRemover=scope.$watch(whenExpFn, updateElementText);lastCount=count}});function updateElementText(newText){element.text(newText||"")}}}}];var ngRefMinErr=minErr("ngRef");var ngRefDirective=["$parse",function($parse){return{priority:-1,restrict:"A",compile:function(tElement,tAttrs){var controllerName=directiveNormalize(nodeName_(tElement));var getter=$parse(tAttrs.ngRef);var setter=getter.assign||function(){throw ngRefMinErr("nonassign",'Expression in ngRef\x3d"{0}" is non-assignable!',tAttrs.ngRef);};return function(scope,element, attrs){var refValue;if(attrs.hasOwnProperty("ngRefRead"))if(attrs.ngRefRead==="$element")refValue=element;else{refValue=element.data("$"+attrs.ngRefRead+"Controller");if(!refValue)throw ngRefMinErr("noctrl",'The controller for ngRefRead\x3d"{0}" could not be found on ngRef\x3d"{1}"',attrs.ngRefRead,tAttrs.ngRef);}else refValue=element.data("$"+controllerName+"Controller");refValue=refValue||element;setter(scope,refValue);element.on("$destroy",function(){if(getter(scope)===refValue)setter(scope,null)})}}}}]; var ngRepeatDirective=["$parse","$animate","$compile",function($parse,$animate,$compile){var NG_REMOVED="$$NG_REMOVED";var ngRepeatMinErr=minErr("ngRepeat");var updateScope=function(scope,index,valueIdentifier,value,keyIdentifier,key,arrayLength){scope[valueIdentifier]=value;if(keyIdentifier)scope[keyIdentifier]=key;scope.$index=index;scope.$first=index===0;scope.$last=index===arrayLength-1;scope.$middle=!(scope.$first||scope.$last);scope.$odd=!(scope.$even=(index&1)===0)};var getBlockStart=function(block){return block.clone[0]}; var getBlockEnd=function(block){return block.clone[block.clone.length-1]};var trackByIdArrayFn=function($scope,key,value){return hashKey(value)};var trackByIdObjFn=function($scope,key){return key};return{restrict:"A",multiElement:true,transclude:"element",priority:1E3,terminal:true,$$tlb:true,compile:function ngRepeatCompile($element,$attr){var expression=$attr.ngRepeat;var ngRepeatEndComment=$compile.$$createComment("end ngRepeat",expression);var match=expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/); if(!match)throw ngRepeatMinErr("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",expression);var lhs=match[1];var rhs=match[2];var aliasAs=match[3];var trackByExp=match[4];match=lhs.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/);if(!match)throw ngRepeatMinErr("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",lhs);var valueIdentifier=match[3]||match[1];var keyIdentifier= match[2];if(aliasAs&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(aliasAs)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(aliasAs)))throw ngRepeatMinErr("badident","alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",aliasAs);var trackByIdExpFn;if(trackByExp){var hashFnLocals={$id:hashKey};var trackByExpGetter=$parse(trackByExp);trackByIdExpFn=function($scope,key,value,index){if(keyIdentifier)hashFnLocals[keyIdentifier]= key;hashFnLocals[valueIdentifier]=value;hashFnLocals.$index=index;return trackByExpGetter($scope,hashFnLocals)}}return function ngRepeatLink($scope,$element,$attr,ctrl,$transclude){var lastBlockMap=createMap();$scope.$watchCollection(rhs,function ngRepeatAction(collection){var index,length,previousNode=$element[0],nextNode,nextBlockMap=createMap(),collectionLength,key,value,trackById,trackByIdFn,collectionKeys,block,nextBlockOrder,elementsToRemove;if(aliasAs)$scope[aliasAs]=collection;if(isArrayLike(collection)){collectionKeys= collection;trackByIdFn=trackByIdExpFn||trackByIdArrayFn}else{trackByIdFn=trackByIdExpFn||trackByIdObjFn;collectionKeys=[];for(var itemKey in collection)if(hasOwnProperty.call(collection,itemKey)&&itemKey.charAt(0)!=="$")collectionKeys.push(itemKey)}collectionLength=collectionKeys.length;nextBlockOrder=new Array(collectionLength);for(index=0;index=minlengthParsed}}}}];function parsePatternAttr(regex,patternExp,elm){if(!regex)return undefined;if(isString(regex))regex=new RegExp("^"+regex+"$");if(!regex.test)throw minErr("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",patternExp,regex,startingTag(elm));return regex}function parseLength(val){var intVal=toInt(val);return isNumberNaN(intVal)?-1:intVal}if(window.angular.bootstrap){if(window.console)console.log("WARNING: Tried to load AngularJS more than once."); return}bindJQuery();publishExternalAPI(angular);angular.module("ngLocale",[],["$provide",function($provide){var PLURAL_CATEGORY={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};function getDecimals(n){n=n+"";var i=n.indexOf(".");return i==-1?0:n.length-i-1}function getVF(n,opt_precision){var v=opt_precision;if(undefined===v)v=Math.min(getDecimals(n),3);var base=Math.pow(10,v);var f=(n*base|0)%base;return{v:v,f:f}}$provide.value("$locale",{"DATETIME_FORMATS":{"AMPMS":["AM","PM"], "DAY":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"ERANAMES":["Before Christ","Anno Domini"],"ERAS":["BC","AD"],"FIRSTDAYOFWEEK":6,"MONTH":["January","February","March","April","May","June","July","August","September","October","November","December"],"SHORTDAY":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"SHORTMONTH":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"STANDALONEMONTH":["January","February","March","April","May","June","July","August", "September","October","November","December"],"WEEKENDRANGE":[5,6],"fullDate":"EEEE, MMMM d, y","longDate":"MMMM d, y","medium":"MMM d, y h:mm:ss a","mediumDate":"MMM d, y","mediumTime":"h:mm:ss a","short":"M/d/yy h:mm a","shortDate":"M/d/yy","shortTime":"h:mm a"},"NUMBER_FORMATS":{"CURRENCY_SYM":"$","DECIMAL_SEP":".","GROUP_SEP":",","PATTERNS":[{"gSize":3,"lgSize":3,"maxFrac":3,"minFrac":0,"minInt":1,"negPre":"-","negSuf":"","posPre":"","posSuf":""},{"gSize":3,"lgSize":3,"maxFrac":2,"minFrac":2,"minInt":1, "negPre":"-\u00a4","negSuf":"","posPre":"\u00a4","posSuf":""}]},"id":"en-us","localeID":"en_US","pluralCat":function(n,opt_precision){var i=n|0;var vf=getVF(n,opt_precision);if(i==1&&vf.v==0)return PLURAL_CATEGORY.ONE;return PLURAL_CATEGORY.OTHER}})}]);jqLite(function(){angularInit(window.document,bootstrap)})})(window);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(window.angular.element("\x3cstyle\x3e").text('@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}')); (function(window,angular){function shallowCopy(src,dst){if(isArray(src)){dst=dst||[];for(var i=0,ii=src.length;i/g,"\x26gt;")}function htmlSanitizeWriterImpl(buf,uriValidator){var ignoreCurrentElement=false;var out=bind(buf,buf.push);return{start:function(tag,attrs){tag=lowercase(tag);if(!ignoreCurrentElement&&blockedElements[tag])ignoreCurrentElement=tag;if(!ignoreCurrentElement&&validElements[tag]===true){out("\x3c");out(tag);forEach(attrs, function(value,key){var lkey=lowercase(key);var isImage=tag==="img"&&lkey==="src"||lkey==="background";if(validAttrs[lkey]===true&&(uriAttrs[lkey]!==true||uriValidator(value,isImage))){out(" ");out(key);out('\x3d"');out(encodeEntities(value));out('"')}});out("\x3e")}},end:function(tag){tag=lowercase(tag);if(!ignoreCurrentElement&&validElements[tag]===true&&voidElements[tag]!==true){out("\x3c/");out(tag);out("\x3e")}if(tag==ignoreCurrentElement)ignoreCurrentElement=false},chars:function(chars){if(!ignoreCurrentElement)out(encodeEntities(chars))}}} function stripCustomNsAttrs(node){while(node){if(node.nodeType===window.Node.ELEMENT_NODE){var attrs=node.attributes;for(var i=0,l=attrs.length;i"\u201d\u2019]/i,MAILTO_REGEXP=/^mailto:/i;var linkyMinErr=angular.$$minErr("linky");var isDefined=angular.isDefined;var isFunction=angular.isFunction;var isObject=angular.isObject;var isString=angular.isString;return function(text,target,attributes){if(text==null||text==="")return text;if(!isString(text))throw linkyMinErr("notstring","Expected string but received: {0}",text);var attributesFn=isFunction(attributes)?attributes: isObject(attributes)?function getAttributesObject(){return attributes}:function getEmptyAttributesObject(){return{}};var match;var raw=text;var html=[];var url;var i;while(match=raw.match(LINKY_URL_REGEXP)){url=match[0];if(!match[2]&&!match[4])url=(match[3]?"http://":"mailto:")+url;i=match.index;addText(raw.substr(0,i));addLink(url,match[0].replace(MAILTO_REGEXP,""));raw=raw.substring(i+match[0].length)}addText(raw);return $sanitize(html.join(""));function addText(text){if(!text)return;html.push(sanitizeText(text))} function addLink(url,text){var key,linkAttributes=attributesFn(url);html.push("\x3ca ");for(key in linkAttributes)html.push(key+'\x3d"'+linkAttributes[key]+'" ');if(isDefined(target)&&!("target"in linkAttributes))html.push('target\x3d"',target,'" ');html.push('href\x3d"',url.replace(/"/g,"\x26quot;"),'"\x3e');addText(text);html.push("\x3c/a\x3e")}}}])})(window,window.angular);angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.pagination","ui.bootstrap.paging","ui.bootstrap.tabindex"]); angular.module("ui.bootstrap.tpls",["uib/template/pagination/pagination.html"]); angular.module("ui.bootstrap.pagination",["ui.bootstrap.paging","ui.bootstrap.tabindex"]).controller("UibPaginationController",["$scope","$attrs","$parse","uibPaging","uibPaginationConfig",function($scope,$attrs,$parse,uibPaging,uibPaginationConfig){var ctrl=this;var maxSize=angular.isDefined($attrs.maxSize)?$scope.$parent.$eval($attrs.maxSize):uibPaginationConfig.maxSize,rotate=angular.isDefined($attrs.rotate)?$scope.$parent.$eval($attrs.rotate):uibPaginationConfig.rotate,forceEllipses=angular.isDefined($attrs.forceEllipses)? $scope.$parent.$eval($attrs.forceEllipses):uibPaginationConfig.forceEllipses,boundaryLinkNumbers=angular.isDefined($attrs.boundaryLinkNumbers)?$scope.$parent.$eval($attrs.boundaryLinkNumbers):uibPaginationConfig.boundaryLinkNumbers,pageLabel=angular.isDefined($attrs.pageLabel)?function(idx){return $scope.$parent.$eval($attrs.pageLabel,{$page:idx})}:angular.identity;$scope.boundaryLinks=angular.isDefined($attrs.boundaryLinks)?$scope.$parent.$eval($attrs.boundaryLinks):uibPaginationConfig.boundaryLinks; $scope.directionLinks=angular.isDefined($attrs.directionLinks)?$scope.$parent.$eval($attrs.directionLinks):uibPaginationConfig.directionLinks;$attrs.$set("role","menu");uibPaging.create(this,$scope,$attrs);if($attrs.maxSize)ctrl._watchers.push($scope.$parent.$watch($parse($attrs.maxSize),function(value){maxSize=parseInt(value,10);ctrl.render()}));function makePage(number,text,isActive){return{number:number,text:text,active:isActive}}function getPages(currentPage,totalPages){var pages=[];var startPage= 1,endPage=totalPages;var isMaxSized=angular.isDefined(maxSize)&&maxSizetotalPages){endPage=totalPages;startPage=endPage-maxSize+1}}else{startPage=(Math.ceil(currentPage/maxSize)-1)*maxSize+1;endPage=Math.min(startPage+maxSize-1,totalPages)}for(var number=startPage;number<=endPage;number++){var page=makePage(number,pageLabel(number),number===currentPage);pages.push(page)}if(isMaxSized&& maxSize>0&&(!rotate||forceEllipses||boundaryLinkNumbers)){if(startPage>1){if(!boundaryLinkNumbers||startPage>3){var previousPageSet=makePage(startPage-1,"...",false);pages.unshift(previousPageSet)}if(boundaryLinkNumbers){if(startPage===3){var secondPageLink=makePage(2,"2",false);pages.unshift(secondPageLink)}var firstPageLink=makePage(1,"1",false);pages.unshift(firstPageLink)}}if(endPage0&&$scope.page<=$scope.totalPages)$scope.pages=getPages($scope.page,$scope.totalPages)}}]).constant("uibPaginationConfig",{itemsPerPage:10,boundaryLinks:false,boundaryLinkNumbers:false,directionLinks:true,firstText:"First", previousText:"Previous",nextText:"Next",lastText:"Last",rotate:true,forceEllipses:false}).directive("uibPagination",["$parse","uibPaginationConfig",function($parse,uibPaginationConfig){return{scope:{totalItems:"\x3d",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"\x3d"},require:["uibPagination","?ngModel"],restrict:"A",controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(element,attrs){return attrs.templateUrl||"uib/template/pagination/pagination.html"}, link:function(scope,element,attrs,ctrls){element.addClass("pagination");var paginationCtrl=ctrls[0],ngModelCtrl=ctrls[1];if(!ngModelCtrl)return;paginationCtrl.init(ngModelCtrl,uibPaginationConfig)}}}]); angular.module("ui.bootstrap.paging",[]).factory("uibPaging",["$parse",function($parse){return{create:function(ctrl,$scope,$attrs){ctrl.setNumPages=$attrs.numPages?$parse($attrs.numPages).assign:angular.noop;ctrl.ngModelCtrl={$setViewValue:angular.noop};ctrl._watchers=[];ctrl.init=function(ngModelCtrl,config){ctrl.ngModelCtrl=ngModelCtrl;ctrl.config=config;ngModelCtrl.$render=function(){ctrl.render()};if($attrs.itemsPerPage)ctrl._watchers.push($scope.$parent.$watch($attrs.itemsPerPage,function(value){ctrl.itemsPerPage= parseInt(value,10);$scope.totalPages=ctrl.calculateTotalPages();ctrl.updatePage()}));else ctrl.itemsPerPage=config.itemsPerPage;$scope.$watch("totalItems",function(newTotal,oldTotal){if(angular.isDefined(newTotal)||newTotal!==oldTotal){$scope.totalPages=ctrl.calculateTotalPages();ctrl.updatePage()}})};ctrl.calculateTotalPages=function(){var totalPages=ctrl.itemsPerPage<1?1:Math.ceil($scope.totalItems/ctrl.itemsPerPage);return Math.max(totalPages||0,1)};ctrl.render=function(){$scope.page=parseInt(ctrl.ngModelCtrl.$viewValue, 10)||1};$scope.selectPage=function(page,evt){if(evt)evt.preventDefault();var clickAllowed=!$scope.ngDisabled||!evt;if(clickAllowed&&$scope.page!==page&&page>0&&page<=$scope.totalPages){if(evt&&evt.target)evt.target.blur();ctrl.ngModelCtrl.$setViewValue(page);ctrl.ngModelCtrl.$render();$(".Pagination-item").click(function(){if($(".perso-bloc").offset()!=undefined)$("html, body").scrollTop($(".perso-bloc").offset().top)})}};$scope.getText=function(key){return $scope[key+"Text"]||ctrl.config[key+"Text"]}; $scope.noPrevious=function(){return $scope.page===1};$scope.noNext=function(){return $scope.page===$scope.totalPages};ctrl.updatePage=function(){ctrl.setNumPages($scope.$parent,$scope.totalPages);if($scope.page>$scope.totalPages)$scope.selectPage($scope.totalPages);else ctrl.ngModelCtrl.$render()};$scope.$on("$destroy",function(){while(ctrl._watchers.length)ctrl._watchers.shift()()})}}}]); angular.module("ui.bootstrap.tabindex",[]).directive("uibTabindexToggle",function(){return{restrict:"A",link:function(scope,elem,attrs){attrs.$observe("disabled",function(disabled){attrs.$set("tabindex",disabled?-1:null)})}}}); angular.module("uib/template/pagination/pagination.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/pagination/pagination.html",'\x3cli role\x3d"menuitem" ng-if\x3d"::boundaryLinks" ng-class\x3d"{disabled: noPrevious()||ngDisabled}" class\x3d"pagination-first"\x3e\x3ca href ng-click\x3d"selectPage(1, $event)" ng-disabled\x3d"noPrevious()||ngDisabled" uib-tabindex-toggle\x3e{{::getText(\'first\')}}\x3c/a\x3e\x3c/li\x3e\n'+'\x3cli role\x3d"menuitem" ng-if\x3d"::directionLinks" ng-class\x3d"{disabled: noPrevious()||ngDisabled}" class\x3d"pagination-prev"\x3e\x3ca href ng-click\x3d"selectPage(page - 1, $event)" ng-disabled\x3d"noPrevious()||ngDisabled" uib-tabindex-toggle\x3e{{::getText(\'previous\')}}\x3c/a\x3e\x3c/li\x3e\n'+ '\x3cli role\x3d"menuitem" ng-repeat\x3d"page in pages track by $index" ng-class\x3d"{active: page.active,disabled: ngDisabled\x26\x26!page.active}" class\x3d"pagination-page"\x3e\x3ca href ng-click\x3d"selectPage(page.number, $event)" ng-disabled\x3d"ngDisabled\x26\x26!page.active" uib-tabindex-toggle\x3e{{page.text}}\x3c/a\x3e\x3c/li\x3e\n'+'\x3cli role\x3d"menuitem" ng-if\x3d"::directionLinks" ng-class\x3d"{disabled: noNext()||ngDisabled}" class\x3d"pagination-next"\x3e\x3ca href ng-click\x3d"selectPage(page + 1, $event)" ng-disabled\x3d"noNext()||ngDisabled" uib-tabindex-toggle\x3e{{::getText(\'next\')}}\x3c/a\x3e\x3c/li\x3e\n'+ '\x3cli role\x3d"menuitem" ng-if\x3d"::boundaryLinks" ng-class\x3d"{disabled: noNext()||ngDisabled}" class\x3d"pagination-last"\x3e\x3ca href ng-click\x3d"selectPage(totalPages, $event)" ng-disabled\x3d"noNext()||ngDisabled" uib-tabindex-toggle\x3e{{::getText(\'last\')}}\x3c/a\x3e\x3c/li\x3e\n'+"")}]);